Repository: subquery/subql Branch: main Commit: 264145d63621 Files: 1152 Total size: 11.7 MB Directory structure: gitextract_x3dyy_p1/ ├── .dockerignore ├── .editorconfig ├── .github/ │ ├── ISSUE_TEMPLATE.md │ ├── PULL_REQUEST_TEMPLATE.md │ ├── actions/ │ │ ├── create-prerelease/ │ │ │ ├── action.yml │ │ │ └── remove-stable-version.js │ │ └── create-release/ │ │ ├── action.yml │ │ └── gh-release-script.js │ ├── dependabot.yml │ └── workflows/ │ ├── benchmark.yml │ ├── discord.yml │ ├── gh-release.yml │ ├── node-docker.yml │ ├── pr.yml │ ├── publish.yml │ ├── query-docker.yml │ ├── scripts/ │ │ ├── benchmark/ │ │ │ ├── Dockerfile │ │ │ ├── benchmarking.sh │ │ │ ├── cleanHistory.sh │ │ │ └── queryMeta.sh │ │ ├── nodeVersion.sh │ │ └── queryVersion.sh │ └── sync-sdks.yml ├── .gitignore ├── .gitpod.dockerfile ├── .gitpod.yml ├── .husky/ │ ├── .gitignore │ └── pre-commit ├── .prettierignore ├── .prettierrc ├── .yarn/ │ ├── releases/ │ │ └── yarn-4.10.3.cjs │ └── versions/ │ ├── 009f3ed3.yml │ ├── 027a768d.yml │ ├── 043f60d9.yml │ ├── 0499e67a.yml │ ├── 04fe5109.yml │ ├── 0659b210.yml │ ├── 06878261.yml │ ├── 06f061c2.yml │ ├── 0a6cfead.yml │ ├── 0b41d534.yml │ ├── 0c630ddb.yml │ ├── 0c8bf25d.yml │ ├── 0d3c95d9.yml │ ├── 0e4241fb.yml │ ├── 104b6218.yml │ ├── 105d24d1.yml │ ├── 10d6c790.yml │ ├── 1288810f.yml │ ├── 12a92ad2.yml │ ├── 12c5da87.yml │ ├── 12f2ee2a.yml │ ├── 1419f252.yml │ ├── 1447e381.yml │ ├── 14e4dc88.yml │ ├── 16f0d61b.yml │ ├── 1716e1a0.yml │ ├── 185d73c5.yml │ ├── 18880181.yml │ ├── 18951341.yml │ ├── 1a4257af.yml │ ├── 1ab8a1a3.yml │ ├── 1bbf92cf.yml │ ├── 1be0b830.yml │ ├── 1c09bcf3.yml │ ├── 1d68c78f.yml │ ├── 1d7a8221.yml │ ├── 1de6dc61.yml │ ├── 1ef24463.yml │ ├── 216439fa.yml │ ├── 2268e307.yml │ ├── 227edb92.yml │ ├── 2347a851.yml │ ├── 25310217.yml │ ├── 2584b0f2.yml │ ├── 25cf0a18.yml │ ├── 26d2bede.yml │ ├── 28043ba8.yml │ ├── 2805a1cf.yml │ ├── 29bf85e7.yml │ ├── 2b04685f.yml │ ├── 2c10a261.yml │ ├── 2c2090d9.yml │ ├── 2cc4a2fb.yml │ ├── 2d3b7b53.yml │ ├── 2d3c26d4.yml │ ├── 2d61ee26.yml │ ├── 2dfadf46.yml │ ├── 2eebe132.yml │ ├── 304647ef.yml │ ├── 30caeb09.yml │ ├── 312f5831.yml │ ├── 31de9883.yml │ ├── 322d5d1f.yml │ ├── 324f29ae.yml │ ├── 3349f1f9.yml │ ├── 33e756ee.yml │ ├── 34a2b89f.yml │ ├── 350b5b09.yml │ ├── 351b62d7.yml │ ├── 35b703be.yml │ ├── 35c43c59.yml │ ├── 35f00361.yml │ ├── 36f01785.yml │ ├── 37b48f24.yml │ ├── 37e31b0c.yml │ ├── 381d4907.yml │ ├── 382f2b82.yml │ ├── 3938a2bc.yml │ ├── 3a048bf2.yml │ ├── 3adf3bd7.yml │ ├── 3b3e24c8.yml │ ├── 3b8c5afd.yml │ ├── 3d650c95.yml │ ├── 3fbcf2a0.yml │ ├── 3fc924ed.yml │ ├── 4078a944.yml │ ├── 40b6bbec.yml │ ├── 41c9116c.yml │ ├── 41e737e2.yml │ ├── 4303222c.yml │ ├── 44082fb1.yml │ ├── 445ef638.yml │ ├── 457bc38f.yml │ ├── 46402fec.yml │ ├── 46adba99.yml │ ├── 46b26b5d.yml │ ├── 47d21b05.yml │ ├── 4820d418.yml │ ├── 48ba8de1.yml │ ├── 499171ed.yml │ ├── 49d09eed.yml │ ├── 4a010b8b.yml │ ├── 4b76fe18.yml │ ├── 4b8d567b.yml │ ├── 4c23db2c.yml │ ├── 4c2f3697.yml │ ├── 4c39a3cb.yml │ ├── 4c67dbef.yml │ ├── 4ce88dfa.yml │ ├── 4d1a19ef.yml │ ├── 4de1b78e.yml │ ├── 4e58ec39.yml │ ├── 4eb161fe.yml │ ├── 4ef5ee6c.yml │ ├── 4ef73239.yml │ ├── 4feb4cb4.yml │ ├── 5284b2e3.yml │ ├── 5311ca5a.yml │ ├── 532ac853.yml │ ├── 53d32974.yml │ ├── 53f030f6.yml │ ├── 550fcf8e.yml │ ├── 552aabf7.yml │ ├── 55b991e8.yml │ ├── 56fc2408.yml │ ├── 57666882.yml │ ├── 57a75c3c.yml │ ├── 57dc89a1.yml │ ├── 5a7ba119.yml │ ├── 5ae3de1b.yml │ ├── 5bb8d394.yml │ ├── 5c14c916.yml │ ├── 5dc4e96b.yml │ ├── 5f92bb54.yml │ ├── 610a5feb.yml │ ├── 61b6fc48.yml │ ├── 62a6123d.yml │ ├── 645f2b52.yml │ ├── 646d8ce7.yml │ ├── 65681adf.yml │ ├── 6590072c.yml │ ├── 65da9ecd.yml │ ├── 66b5ccbc.yml │ ├── 686e36f7.yml │ ├── 689d69d4.yml │ ├── 68dba50f.yml │ ├── 69505fd5.yml │ ├── 6a2da136.yml │ ├── 6b90a9bc.yml │ ├── 6bc3e193.yml │ ├── 6bc752bc.yml │ ├── 6ca7bbbf.yml │ ├── 6cdd41ea.yml │ ├── 6f262f92.yml │ ├── 6f785cb6.yml │ ├── 6f9a585e.yml │ ├── 6fbb21ed.yml │ ├── 6fdfdb04.yml │ ├── 6ffda578.yml │ ├── 722926be.yml │ ├── 7243e463.yml │ ├── 72f372d1.yml │ ├── 744a0dca.yml │ ├── 74d627f7.yml │ ├── 74e58e5b.yml │ ├── 75c144d8.yml │ ├── 75d37c61.yml │ ├── 76034c6c.yml │ ├── 7879dba0.yml │ ├── 78a188b4.yml │ ├── 792d5a54.yml │ ├── 7bd9e3d4.yml │ ├── 7c0eab27.yml │ ├── 7cd00a40.yml │ ├── 7cd681fd.yml │ ├── 7d2a0be3.yml │ ├── 7d3fc2ff.yml │ ├── 7d8931c0.yml │ ├── 7d9c7c44.yml │ ├── 7e7541ea.yml │ ├── 7f040c3e.yml │ ├── 801fb397.yml │ ├── 809ea2e4.yml │ ├── 824e82cb.yml │ ├── 8374b398.yml │ ├── 839fb9d1.yml │ ├── 83bb6400.yml │ ├── 848e4e2b.yml │ ├── 8492acfd.yml │ ├── 84941eaf.yml │ ├── 84dbb7ce.yml │ ├── 84f6e423.yml │ ├── 857e5ecd.yml │ ├── 8601d478.yml │ ├── 863b06ea.yml │ ├── 86ccde0d.yml │ ├── 8868808f.yml │ ├── 887de416.yml │ ├── 889ef0f3.yml │ ├── 88fc2bd8.yml │ ├── 8a413ac0.yml │ ├── 8b67f09a.yml │ ├── 8db1483b.yml │ ├── 8e400644.yml │ ├── 9028a0bb.yml │ ├── 91e494d1.yml │ ├── 920dae9d.yml │ ├── 92e577ad.yml │ ├── 92ff9489.yml │ ├── 936dc023.yml │ ├── 94b199e8.yml │ ├── 94c458c9.yml │ ├── 94e27173.yml │ ├── 9697cad0.yml │ ├── 97073d37.yml │ ├── 99cf5827.yml │ ├── 9a8e6f5d.yml │ ├── 9b3e8476.yml │ ├── 9eb1a879.yml │ ├── 9ee902ce.yml │ ├── 9f00000f.yml │ ├── 9f0e3f63.yml │ ├── a13e7af4.yml │ ├── a2c2414d.yml │ ├── a32f012b.yml │ ├── a35b2993.yml │ ├── a45f2358.yml │ ├── a48f5a85.yml │ ├── a5397fcf.yml │ ├── a5707e08.yml │ ├── a731a8ae.yml │ ├── a9019480.yml │ ├── a9d498ca.yml │ ├── abc53221.yml │ ├── ac20c55f.yml │ ├── ad1e1894.yml │ ├── aead78a6.yml │ ├── aed25208.yml │ ├── aee1ecce.yml │ ├── aff12ab8.yml │ ├── aff73acf.yml │ ├── b027b217.yml │ ├── b03d4318.yml │ ├── b0c2a823.yml │ ├── b0fa9de1.yml │ ├── b2d60f10.yml │ ├── b2e2403b.yml │ ├── b426a40b.yml │ ├── b472bd3f.yml │ ├── b479fb33.yml │ ├── b4e981f5.yml │ ├── b5edf689.yml │ ├── b6bb98d9.yml │ ├── b774fd26.yml │ ├── b7f761b8.yml │ ├── b9a59bb0.yml │ ├── b9fbde3d.yml │ ├── ba107355.yml │ ├── ba8ed0a5.yml │ ├── bad2bdac.yml │ ├── bb628b53.yml │ ├── bc5d92ce.yml │ ├── bd58ec77.yml │ ├── bf0c3052.yml │ ├── c03d8f8e.yml │ ├── c0558c15.yml │ ├── c0f27d9b.yml │ ├── c285fbd3.yml │ ├── c31e963e.yml │ ├── c4866a61.yml │ ├── c53f3d2c.yml │ ├── c5dcf5ae.yml │ ├── c6e0453e.yml │ ├── c92ce9ed.yml │ ├── c9bd14f9.yml │ ├── ca56439e.yml │ ├── cb885b36.yml │ ├── cd1b2f42.yml │ ├── ce799c7c.yml │ ├── cec7de4a.yml │ ├── cf33fed9.yml │ ├── d11aeeaf.yml │ ├── d2b1da3c.yml │ ├── d2d9e21c.yml │ ├── d408027a.yml │ ├── d4c4867c.yml │ ├── d52444a9.yml │ ├── d5ba03dd.yml │ ├── d6f4a8f0.yml │ ├── d80bd429.yml │ ├── d8be227b.yml │ ├── d9e0b292.yml │ ├── da057245.yml │ ├── db4f7e5e.yml │ ├── dbb42c9d.yml │ ├── dbefade5.yml │ ├── dc0e431b.yml │ ├── dc12d9bd.yml │ ├── e0c9f4f0.yml │ ├── e1b8ab9f.yml │ ├── e2a9b214.yml │ ├── e4f4b87b.yml │ ├── e5f68ec8.yml │ ├── e67c5647.yml │ ├── e6985a5f.yml │ ├── e6aa2497.yml │ ├── e74a08eb.yml │ ├── e7d60c2f.yml │ ├── e8cc0f85.yml │ ├── eb626a6c.yml │ ├── ebb85f62.yml │ ├── ec268f6d.yml │ ├── ecf335ea.yml │ ├── ee2043f1.yml │ ├── ee841b6d.yml │ ├── eee92eb3.yml │ ├── ef1533bb.yml │ ├── ef86740e.yml │ ├── f2404812.yml │ ├── f3aed7d7.yml │ ├── f4be8046.yml │ ├── f5fd9c46.yml │ ├── f6c96839.yml │ ├── f7027f4a.yml │ ├── f94438ba.yml │ ├── fbc620b4.yml │ ├── fbe61a9b.yml │ ├── fc193ed1.yml │ ├── fc8527ab.yml │ ├── fd047138.yml │ ├── fd2e440b.yml │ ├── fee55ccb.yml │ ├── ff1a8bcd.yml │ ├── ff271075.yml │ └── ff80eab6.yml ├── .yarnrc.yml ├── CLAUDE.md ├── CODE_OF_CONDUCT.md ├── LICENSE ├── README.md ├── SECURITY.md ├── contributing.md ├── crowdin.yaml ├── deploy/ │ └── k8s/ │ ├── README.md │ └── deploy.yaml ├── eslint.config.js ├── jest.config.js ├── package.json ├── packages/ │ ├── cli/ │ │ ├── CHANGELOG.md │ │ ├── LICENSE │ │ ├── README.md │ │ ├── bin/ │ │ │ ├── run │ │ │ └── run.cmd │ │ ├── chs-swagger.yml │ │ ├── graphql-codegen.ts │ │ ├── package.json │ │ ├── src/ │ │ │ ├── adapters/ │ │ │ │ └── utils.ts │ │ │ ├── commands/ │ │ │ │ ├── build-manifest.ts │ │ │ │ ├── build.ts │ │ │ │ ├── codegen/ │ │ │ │ │ ├── import-abi.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── init.ts │ │ │ │ ├── mcp.ts │ │ │ │ ├── migrate.test.ts │ │ │ │ ├── migrate.ts │ │ │ │ ├── multi-chain/ │ │ │ │ │ └── add.ts │ │ │ │ ├── network/ │ │ │ │ │ ├── add-deployment-boost.ts │ │ │ │ │ ├── connect-wallet.ts │ │ │ │ │ ├── create-api-key.ts │ │ │ │ │ ├── create-deployment.ts │ │ │ │ │ ├── create-flex-plan.ts │ │ │ │ │ ├── create-project.ts │ │ │ │ │ ├── disconnect-wallet.ts │ │ │ │ │ ├── list-account-boosts.ts │ │ │ │ │ ├── list-api-keys.ts │ │ │ │ │ ├── list-deployment-boosts.ts │ │ │ │ │ ├── list-deployment-indexers.ts │ │ │ │ │ ├── list-deployments.ts │ │ │ │ │ ├── list-flex-plans.ts │ │ │ │ │ ├── list-projects.ts │ │ │ │ │ ├── remove-api-key.ts │ │ │ │ │ ├── remove-deployment-boost.ts │ │ │ │ │ ├── stop-flex-plan.ts │ │ │ │ │ └── swap-deployment-boost.ts │ │ │ │ ├── onfinality/ │ │ │ │ │ ├── create-deployment.ts │ │ │ │ │ ├── create-multichain-deployment.ts │ │ │ │ │ ├── create-project.ts │ │ │ │ │ ├── delete-deployment.ts │ │ │ │ │ ├── delete-project.ts │ │ │ │ │ └── promote-deployment.ts │ │ │ │ ├── publish.test.ts │ │ │ │ └── publish.ts │ │ │ ├── constants.ts │ │ │ ├── controller/ │ │ │ │ ├── add-chain-controller.spec.ts │ │ │ │ ├── add-chain-controller.ts │ │ │ │ ├── build-controller.spec.ts │ │ │ │ ├── build-controller.ts │ │ │ │ ├── codegen-controller.spec.ts │ │ │ │ ├── codegen-controller.test.ts │ │ │ │ ├── codegen-controller.ts │ │ │ │ ├── codegen-cosmos.test.ts │ │ │ │ ├── deploy-controller.spec.ts │ │ │ │ ├── deploy-controller.test.ts │ │ │ │ ├── deploy-controller.ts │ │ │ │ ├── generate-controller.spec.ts │ │ │ │ ├── generate-controller.test.ts │ │ │ │ ├── generate-controller.ts │ │ │ │ ├── init-controller.spec.ts │ │ │ │ ├── init-controller.test.ts │ │ │ │ ├── init-controller.ts │ │ │ │ ├── migrate/ │ │ │ │ │ ├── abis/ │ │ │ │ │ │ └── migrate-abis.controller.ts │ │ │ │ │ ├── constants.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── manifest/ │ │ │ │ │ │ ├── ethereum.spec.ts │ │ │ │ │ │ ├── ethereum.ts │ │ │ │ │ │ ├── migrate-manifest.controller.spec.ts │ │ │ │ │ │ └── migrate-manifest.controller.ts │ │ │ │ │ ├── mapping/ │ │ │ │ │ │ └── migrate-mapping.controller.ts │ │ │ │ │ ├── migrate-controller.spec.ts │ │ │ │ │ ├── migrate-controller.ts │ │ │ │ │ ├── migrate.fixtures.ts │ │ │ │ │ ├── schema/ │ │ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ │ │ └── migrate-schema.controller.spec.ts.snap │ │ │ │ │ │ ├── migrate-schema.controller.spec.ts │ │ │ │ │ │ └── migrate-schema.controller.ts │ │ │ │ │ └── types.ts │ │ │ │ ├── network/ │ │ │ │ │ ├── __graphql__/ │ │ │ │ │ │ ├── base-types.ts │ │ │ │ │ │ └── network/ │ │ │ │ │ │ ├── deployments.generated.ts │ │ │ │ │ │ ├── deploymentsBooster.generated.ts │ │ │ │ │ │ ├── flexPlan.generated.ts │ │ │ │ │ │ └── projects.generated.ts │ │ │ │ │ ├── constants.ts │ │ │ │ │ ├── consumer-host/ │ │ │ │ │ │ ├── client.ts │ │ │ │ │ │ ├── consumer-host-service-api.ts │ │ │ │ │ │ ├── schemas.spec.ts │ │ │ │ │ │ └── schemas.ts │ │ │ │ │ ├── contract-errors.ts │ │ │ │ │ ├── json-file-store.ts │ │ │ │ │ ├── list-account-boosts.ts │ │ │ │ │ ├── list-deployment-boosts.ts │ │ │ │ │ ├── list-deployment-indexers.ts │ │ │ │ │ ├── list-deployments.ts │ │ │ │ │ ├── list-flex-plans.ts │ │ │ │ │ ├── list-projects.ts │ │ │ │ │ ├── queries/ │ │ │ │ │ │ ├── deployments.graphql │ │ │ │ │ │ ├── deploymentsBooster.graphql │ │ │ │ │ │ └── projects.graphql │ │ │ │ │ ├── utils.ts │ │ │ │ │ └── walletconnect-signer.ts │ │ │ │ ├── project-controller.spec.ts │ │ │ │ ├── project-controller.ts │ │ │ │ ├── publish-controller.spec.ts │ │ │ │ ├── publish-controller.ts │ │ │ │ └── validate.spec.ts │ │ │ ├── createProject.fixtures.ts │ │ │ ├── index.ts │ │ │ ├── jsonrpc/ │ │ │ │ ├── client/ │ │ │ │ │ ├── http.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── types.ts │ │ │ │ │ └── ws.ts │ │ │ │ ├── index.ts │ │ │ │ └── jsonrpc.test.ts │ │ │ ├── modulars/ │ │ │ │ ├── config.ts │ │ │ │ ├── index.ts │ │ │ │ ├── moduleLoader.ts │ │ │ │ └── types.ts │ │ │ ├── template/ │ │ │ │ ├── datasource-templates.ts.ejs │ │ │ │ ├── enum.ts.ejs │ │ │ │ ├── interface.ts.ejs │ │ │ │ ├── model.ts.ejs │ │ │ │ ├── models-index.ts.ejs │ │ │ │ ├── project.ts.ejs │ │ │ │ ├── scaffold-handlers.ts.ejs │ │ │ │ └── types-index.ts.ejs │ │ │ ├── types.ts │ │ │ └── utils/ │ │ │ ├── __snapshots__/ │ │ │ │ └── etherscan.spec.ts.snap │ │ │ ├── build.spec.ts │ │ │ ├── build.ts │ │ │ ├── env.spec.ts │ │ │ ├── env.ts │ │ │ ├── etherscan.spec.ts │ │ │ ├── etherscan.ts │ │ │ ├── index.ts │ │ │ ├── jsonToTable.spec.ts │ │ │ ├── jsonToTable.ts │ │ │ ├── networkFamily.spec.ts │ │ │ ├── networkFamily.ts │ │ │ └── utils.ts │ │ ├── test/ │ │ │ ├── abiTest1/ │ │ │ │ ├── abis/ │ │ │ │ │ ├── abis.json │ │ │ │ │ ├── artifact.json │ │ │ │ │ └── artifact.sol/ │ │ │ │ │ └── artifact.json │ │ │ │ └── project.yaml │ │ │ ├── abiTest2/ │ │ │ │ ├── abis/ │ │ │ │ │ └── artifact.json │ │ │ │ └── project.yaml │ │ │ ├── build/ │ │ │ │ ├── package.json │ │ │ │ ├── src/ │ │ │ │ │ ├── chainTypes.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ └── test/ │ │ │ │ │ └── mappingHandler.test.ts │ │ │ │ └── tsconfig.json │ │ │ ├── jsoncConfig/ │ │ │ │ └── tsconfig.json │ │ │ ├── migrate/ │ │ │ │ └── testProject/ │ │ │ │ ├── package.json │ │ │ │ └── subgraph.yaml │ │ │ ├── protoTest1/ │ │ │ │ ├── project.yaml │ │ │ │ └── proto/ │ │ │ │ ├── cosmos/ │ │ │ │ │ └── base/ │ │ │ │ │ └── v1beta1/ │ │ │ │ │ └── coin.proto │ │ │ │ └── osmosis/ │ │ │ │ ├── gamm/ │ │ │ │ │ └── v1beta1/ │ │ │ │ │ └── tx.proto │ │ │ │ └── poolmanager/ │ │ │ │ └── v1beta1/ │ │ │ │ └── swap_route.proto │ │ │ ├── schemaTest/ │ │ │ │ ├── abis/ │ │ │ │ │ └── erc721.json │ │ │ │ ├── badEntity.graphql │ │ │ │ ├── badschema.graphql │ │ │ │ ├── camelcaseEntityName.graphql │ │ │ │ ├── dbTypeSchema.graphql │ │ │ │ ├── duplicateEnum.graphql │ │ │ │ ├── generate-project-2.yaml │ │ │ │ ├── generate-project.yaml │ │ │ │ ├── non-evm-project.yaml │ │ │ │ ├── package.json │ │ │ │ ├── project-bad-entity.yaml │ │ │ │ ├── project-bad-schema.yaml │ │ │ │ ├── project-case-sensitive-import-entity.yaml │ │ │ │ ├── project-cosmos.yaml │ │ │ │ ├── project-duplicate-enum.yaml │ │ │ │ ├── project-id-type.yaml │ │ │ │ ├── project-no-abi.yaml │ │ │ │ ├── project-no-assets.yaml │ │ │ │ ├── project-templates-abi.yaml │ │ │ │ ├── project.ts │ │ │ │ ├── project.yaml │ │ │ │ ├── schema.graphql │ │ │ │ └── typechain-test.yaml │ │ │ ├── ts-manifest/ │ │ │ │ ├── erc20.json │ │ │ │ └── project.ts │ │ │ └── tsManifestTest/ │ │ │ ├── project1.ts │ │ │ ├── project2.ts │ │ │ ├── project3.yaml │ │ │ ├── subquery-multichain.ts │ │ │ ├── subquery-multichain2.ts │ │ │ ├── subquery-multichain3.ts │ │ │ └── subquery-multichain4.yaml │ │ └── tsconfig.json │ ├── common/ │ │ ├── CHANGELOG.md │ │ ├── LICENSE │ │ ├── fixtures/ │ │ │ ├── package.json │ │ │ └── project.yaml │ │ ├── package.json │ │ ├── src/ │ │ │ ├── constants.ts │ │ │ ├── index.ts │ │ │ ├── multichain/ │ │ │ │ ├── index.ts │ │ │ │ └── models.ts │ │ │ └── project/ │ │ │ ├── IpfsHttpClientLite/ │ │ │ │ ├── IPFSHTTPClientLite.ts │ │ │ │ ├── IpfsHttpClientLite.spec.ts │ │ │ │ ├── index.ts │ │ │ │ └── utils.ts │ │ │ ├── index.ts │ │ │ ├── load.ts │ │ │ ├── readers/ │ │ │ │ ├── github-reader.spec.ts │ │ │ │ ├── github-reader.ts │ │ │ │ ├── index.ts │ │ │ │ ├── ipfs-reader.spec.ts │ │ │ │ ├── ipfs-reader.ts │ │ │ │ ├── local-reader.spec.ts │ │ │ │ ├── local-reader.ts │ │ │ │ ├── reader.spec.ts │ │ │ │ └── reader.ts │ │ │ ├── utils.ts │ │ │ └── versioned/ │ │ │ ├── base.ts │ │ │ ├── index.ts │ │ │ └── v1_0_0/ │ │ │ ├── index.ts │ │ │ ├── model.spec.ts │ │ │ └── models.ts │ │ ├── test/ │ │ │ ├── project.yaml │ │ │ ├── project_0.2.0.yaml │ │ │ ├── project_0.2.0_custom_ds.yaml │ │ │ ├── project_0.2.0_invalid_custom_ds.yaml │ │ │ ├── project_falsy.yaml │ │ │ ├── project_falsy_array.yaml │ │ │ └── project_invalid_version.yaml │ │ └── tsconfig.json │ ├── common-substrate/ │ │ ├── CHANGELOG.md │ │ ├── LICENSE │ │ ├── package.json │ │ ├── src/ │ │ │ ├── index.ts │ │ │ └── project/ │ │ │ ├── index.ts │ │ │ ├── load.spec.ts │ │ │ ├── load.ts │ │ │ ├── models.ts │ │ │ ├── project.spec.ts │ │ │ ├── types.ts │ │ │ ├── utils.ts │ │ │ └── versioned/ │ │ │ ├── ProjectManifestVersioned.ts │ │ │ ├── index.ts │ │ │ └── v1_0_0/ │ │ │ ├── index.ts │ │ │ └── model.ts │ │ ├── test/ │ │ │ ├── project_1.0.0.yaml │ │ │ ├── project_1.0.0_bad_processor.yaml │ │ │ ├── project_1.0.0_bad_runner.yaml │ │ │ ├── project_1.0.0_bad_runner_version.yaml │ │ │ ├── project_1.0.0_chainId.yaml │ │ │ ├── project_1.0.0_custom_ds.yaml │ │ │ ├── project_1.0.0_falsy.yaml │ │ │ ├── project_1.0.0_falsy_array.yaml │ │ │ ├── project_1.0.0_node_options.yaml │ │ │ ├── project_1.0.0_runner_ds_mismatch.yaml │ │ │ ├── project_bypass.yaml │ │ │ ├── project_bypass_range.yaml │ │ │ └── project_invalid_version.yaml │ │ └── tsconfig.json │ ├── node/ │ │ ├── .gitignore │ │ ├── .prettierrc │ │ ├── .trigger │ │ ├── CHANGELOG.md │ │ ├── Dockerfile │ │ ├── LICENSE │ │ ├── README.md │ │ ├── bin/ │ │ │ ├── run │ │ │ └── run.cmd │ │ ├── docker/ │ │ │ ├── cockroach-db/ │ │ │ │ └── docker-compose.yml │ │ │ ├── docker-compose.yml │ │ │ ├── load-extensions.sh │ │ │ └── pg-Dockerfile │ │ ├── nest-cli.json │ │ ├── nodemon.json │ │ ├── package.json │ │ ├── src/ │ │ │ ├── app.module.ts │ │ │ ├── blockchain.service.spec.ts │ │ │ ├── blockchain.service.ts │ │ │ ├── configure/ │ │ │ │ ├── NodeConfig.ts │ │ │ │ ├── SchemaMigration.service.test.ts │ │ │ │ ├── SubqueryProject.spec.ts │ │ │ │ ├── SubqueryProject.ts │ │ │ │ └── configure.module.ts │ │ │ ├── indexer/ │ │ │ │ ├── api.service.spec.ts │ │ │ │ ├── api.service.test.ts │ │ │ │ ├── api.service.ts │ │ │ │ ├── apiPromise.connection.ts │ │ │ │ ├── dictionary/ │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── substrateDictionary.service.spec.ts │ │ │ │ │ ├── substrateDictionary.service.ts │ │ │ │ │ ├── types.ts │ │ │ │ │ ├── v1/ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── substrateDictionaryV1.spec.ts │ │ │ │ │ │ └── substrateDictionaryV1.ts │ │ │ │ │ └── v2/ │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── substrateDictionaryV2.ts │ │ │ │ │ └── types.ts │ │ │ │ ├── fetch.module.ts │ │ │ │ ├── indexer.manager.ts │ │ │ │ ├── project.service.spec.ts │ │ │ │ ├── runtime/ │ │ │ │ │ ├── base-runtime.service.ts │ │ │ │ │ ├── runtime.service.spec.ts │ │ │ │ │ ├── runtimeService.ts │ │ │ │ │ └── workerRuntimeService.ts │ │ │ │ ├── store.service.test.ts │ │ │ │ ├── types.ts │ │ │ │ ├── worker/ │ │ │ │ │ ├── worker-fetch.module.ts │ │ │ │ │ ├── worker.module.ts │ │ │ │ │ ├── worker.service.ts │ │ │ │ │ └── worker.ts │ │ │ │ └── x-provider/ │ │ │ │ ├── cachedProvider.ts │ │ │ │ ├── http.ts │ │ │ │ └── x-provider.spec.ts │ │ │ ├── init.ts │ │ │ ├── main.ts │ │ │ ├── subcommands/ │ │ │ │ ├── forceClean.init.ts │ │ │ │ ├── forceClean.module.ts │ │ │ │ ├── reindex.init.ts │ │ │ │ ├── reindex.module.spec.ts │ │ │ │ ├── reindex.module.ts │ │ │ │ ├── testing.init.ts │ │ │ │ ├── testing.module.spec.ts │ │ │ │ ├── testing.module.ts │ │ │ │ └── testing.service.ts │ │ │ ├── utils/ │ │ │ │ ├── project.ts │ │ │ │ ├── substrate.test.ts │ │ │ │ ├── substrate.ts │ │ │ │ └── test.utils.ts │ │ │ └── yargs.ts │ │ ├── test/ │ │ │ ├── jest-e2e.json │ │ │ ├── jsonfy.js │ │ │ └── projectFixture/ │ │ │ ├── bad.json │ │ │ ├── template-v1.0.0/ │ │ │ │ ├── distMock/ │ │ │ │ │ ├── chaintypes.js │ │ │ │ │ └── index.js │ │ │ │ ├── erc20.abi.json │ │ │ │ ├── js/ │ │ │ │ │ ├── test1/ │ │ │ │ │ │ ├── project.yaml │ │ │ │ │ │ └── types.js │ │ │ │ │ ├── test2/ │ │ │ │ │ │ ├── project.yaml │ │ │ │ │ │ └── types.js │ │ │ │ │ ├── test3/ │ │ │ │ │ │ ├── project.yaml │ │ │ │ │ │ └── types.js │ │ │ │ │ └── test4/ │ │ │ │ │ ├── project.yaml │ │ │ │ │ └── types.js │ │ │ │ ├── package.json │ │ │ │ ├── project.yaml │ │ │ │ ├── schema.graphql │ │ │ │ └── types.yaml │ │ │ └── v1.0.0/ │ │ │ ├── distMock/ │ │ │ │ ├── chaintypes.js │ │ │ │ └── index.js │ │ │ ├── erc20.abi.json │ │ │ ├── js/ │ │ │ │ ├── test1/ │ │ │ │ │ ├── project.yaml │ │ │ │ │ └── types.js │ │ │ │ ├── test2/ │ │ │ │ │ ├── project.yaml │ │ │ │ │ └── types.js │ │ │ │ ├── test3/ │ │ │ │ │ ├── project.yaml │ │ │ │ │ └── types.js │ │ │ │ └── test4/ │ │ │ │ ├── project.yaml │ │ │ │ └── types.js │ │ │ ├── package.json │ │ │ ├── project.yaml │ │ │ ├── schema.graphql │ │ │ └── types.yaml │ │ ├── tsconfig.build.json │ │ └── tsconfig.json │ ├── node-core/ │ │ ├── CHANGELOG.md │ │ ├── LICENSE │ │ ├── logger.js │ │ ├── package.json │ │ ├── src/ │ │ │ ├── admin/ │ │ │ │ ├── admin.controller.spec.ts │ │ │ │ ├── admin.controller.ts │ │ │ │ ├── blockRange.test.ts │ │ │ │ ├── blockRange.ts │ │ │ │ └── index.ts │ │ │ ├── api.connection.error.ts │ │ │ ├── api.service.spec.ts │ │ │ ├── api.service.ts │ │ │ ├── blockchain.service.ts │ │ │ ├── configure/ │ │ │ │ ├── NodeConfig.spec.ts │ │ │ │ ├── NodeConfig.ts │ │ │ │ ├── ProjectUpgrade.service.spec.ts │ │ │ │ ├── ProjectUpgrade.service.ts │ │ │ │ ├── SubqueryProject.ts │ │ │ │ ├── configure.module.spec.ts │ │ │ │ ├── configure.module.ts │ │ │ │ └── index.ts │ │ │ ├── db/ │ │ │ │ ├── db.module.test.ts │ │ │ │ ├── db.module.ts │ │ │ │ ├── index.ts │ │ │ │ ├── migration-service/ │ │ │ │ │ ├── SchemaMigration.service.spec.ts │ │ │ │ │ ├── SchemaMigration.service.test.ts │ │ │ │ │ ├── SchemaMigration.service.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── migration-helpers.ts │ │ │ │ │ └── migration.ts │ │ │ │ ├── sequelizeUtil.ts │ │ │ │ ├── sync-helper.spec.ts │ │ │ │ ├── sync-helper.test.ts │ │ │ │ └── sync-helper.ts │ │ │ ├── events.ts │ │ │ ├── index.ts │ │ │ ├── indexer/ │ │ │ │ ├── StoreOperations.spec.ts │ │ │ │ ├── StoreOperations.test.ts │ │ │ │ ├── StoreOperations.ts │ │ │ │ ├── benchmark.service.ts │ │ │ │ ├── blockDispatcher/ │ │ │ │ │ ├── base-block-dispatcher.ts │ │ │ │ │ ├── block-dispatcher.spec.ts │ │ │ │ │ ├── block-dispatcher.ts │ │ │ │ │ ├── factory.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ └── worker-block-dispatcher.ts │ │ │ │ ├── connectionPool.service.spec.ts │ │ │ │ ├── connectionPool.service.ts │ │ │ │ ├── connectionPoolState.manager.spec.ts │ │ │ │ ├── connectionPoolState.manager.ts │ │ │ │ ├── core.module.ts │ │ │ │ ├── dictionary/ │ │ │ │ │ ├── coreDictionary.ts │ │ │ │ │ ├── dictionary.fixtures.ts │ │ │ │ │ ├── dictionary.service.spec.ts │ │ │ │ │ ├── dictionary.service.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── types.ts │ │ │ │ │ ├── utils.spec.ts │ │ │ │ │ ├── utils.ts │ │ │ │ │ ├── v1/ │ │ │ │ │ │ ├── dictionaryV1.spec.ts │ │ │ │ │ │ ├── dictionaryV1.ts │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ └── utils.ts │ │ │ │ │ └── v2/ │ │ │ │ │ ├── dictionaryV2.spec.ts │ │ │ │ │ ├── dictionaryV2.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ └── types.ts │ │ │ │ ├── ds-processor.service.spec.ts │ │ │ │ ├── ds-processor.service.ts │ │ │ │ ├── dynamic-ds.service.spec.ts │ │ │ │ ├── dynamic-ds.service.ts │ │ │ │ ├── entities/ │ │ │ │ │ ├── GlobalData.entity.ts │ │ │ │ │ ├── Metadata.entity.ts │ │ │ │ │ ├── Poi.entity.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── fetch.service.spec.ts │ │ │ │ ├── fetch.service.ts │ │ │ │ ├── inMemoryCache.service.spec.ts │ │ │ │ ├── inMemoryCache.service.ts │ │ │ │ ├── index.ts │ │ │ │ ├── indexer.manager.ts │ │ │ │ ├── monitor.service.test.ts │ │ │ │ ├── monitor.service.ts │ │ │ │ ├── multiChainRewind.service.test.ts │ │ │ │ ├── multiChainRewind.service.ts │ │ │ │ ├── poi/ │ │ │ │ │ ├── PoiBlock.spec.ts │ │ │ │ │ ├── PoiBlock.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── poi.service.spec.ts │ │ │ │ │ ├── poi.service.ts │ │ │ │ │ ├── poiSync.service.spec.ts │ │ │ │ │ └── poiSync.service.ts │ │ │ │ ├── project.service.spec.ts │ │ │ │ ├── project.service.ts │ │ │ │ ├── sandbox.service.ts │ │ │ │ ├── sandbox.spec.ts │ │ │ │ ├── sandbox.ts │ │ │ │ ├── store/ │ │ │ │ │ ├── entity.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ └── store.ts │ │ │ │ ├── store.service.spec.ts │ │ │ │ ├── store.service.test.ts │ │ │ │ ├── store.service.ts │ │ │ │ ├── storeModelProvider/ │ │ │ │ │ ├── baseCache.service.ts │ │ │ │ │ ├── baseStoreModel.service.ts │ │ │ │ │ ├── cacheable.ts │ │ │ │ │ ├── exporters/ │ │ │ │ │ │ ├── csvStore.spec.ts │ │ │ │ │ │ ├── csvStore.ts │ │ │ │ │ │ ├── exporter.ts │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── global/ │ │ │ │ │ │ ├── global.ts │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── metadata/ │ │ │ │ │ │ ├── cacheMetadata.spec.ts │ │ │ │ │ │ ├── cacheMetadata.test.ts │ │ │ │ │ │ ├── cacheMetadata.ts │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── metadata.ts │ │ │ │ │ │ └── utils.ts │ │ │ │ │ ├── model/ │ │ │ │ │ │ ├── cacheModel.spec.ts │ │ │ │ │ │ ├── cacheModel.test.ts │ │ │ │ │ │ ├── cacheModel.ts │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── model.test.ts │ │ │ │ │ │ ├── model.ts │ │ │ │ │ │ └── utils.ts │ │ │ │ │ ├── poi/ │ │ │ │ │ │ ├── cachePoi.spec.ts │ │ │ │ │ │ ├── cachePoi.ts │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ └── poi.ts │ │ │ │ │ ├── setValueModel.spec.ts │ │ │ │ │ ├── setValueModel.ts │ │ │ │ │ ├── storeCache.service.spec.ts │ │ │ │ │ ├── storeCache.service.ts │ │ │ │ │ ├── storeModel.service.spec.ts │ │ │ │ │ ├── storeModel.service.ts │ │ │ │ │ ├── types.ts │ │ │ │ │ └── utils.ts │ │ │ │ ├── test.runner.spec.ts │ │ │ │ ├── test.runner.ts │ │ │ │ ├── testing.service.ts │ │ │ │ ├── types.ts │ │ │ │ ├── unfinalizedBlocks.service.spec.ts │ │ │ │ ├── unfinalizedBlocks.service.ts │ │ │ │ └── worker/ │ │ │ │ ├── index.ts │ │ │ │ ├── test.store.worker.ts │ │ │ │ ├── utils.ts │ │ │ │ ├── worker.builder.ts │ │ │ │ ├── worker.cache.service.ts │ │ │ │ ├── worker.connectionPoolState.manager.ts │ │ │ │ ├── worker.core.module.ts │ │ │ │ ├── worker.dynamic-ds.service.ts │ │ │ │ ├── worker.monitor.service.ts │ │ │ │ ├── worker.service.ts │ │ │ │ ├── worker.store.service.test.ts │ │ │ │ ├── worker.store.service.ts │ │ │ │ ├── worker.ts │ │ │ │ └── worker.unfinalizedBlocks.service.ts │ │ │ ├── logger.ts │ │ │ ├── meta/ │ │ │ │ ├── event.listener.ts │ │ │ │ ├── health.controller.ts │ │ │ │ ├── health.service.ts │ │ │ │ ├── index.ts │ │ │ │ ├── meta.controller.ts │ │ │ │ ├── meta.module.ts │ │ │ │ ├── meta.service.ts │ │ │ │ ├── meta.ts │ │ │ │ ├── ready.controller.ts │ │ │ │ └── ready.service.ts │ │ │ ├── process.ts │ │ │ ├── profiler.ts │ │ │ ├── subcommands/ │ │ │ │ ├── forceClean.module.ts │ │ │ │ ├── forceClean.service.ts │ │ │ │ ├── foreceClean.init.ts │ │ │ │ ├── index.ts │ │ │ │ ├── reindex.init.ts │ │ │ │ ├── reindex.service.ts │ │ │ │ └── testing.core.module.ts │ │ │ ├── utils/ │ │ │ │ ├── bigint.ts │ │ │ │ ├── blockHeightMap.spec.ts │ │ │ │ ├── blockHeightMap.ts │ │ │ │ ├── blocks.spec.ts │ │ │ │ ├── blocks.ts │ │ │ │ ├── configure.spec.ts │ │ │ │ ├── configure.ts │ │ │ │ ├── decorators.ts │ │ │ │ ├── env.spec.ts │ │ │ │ ├── env.ts │ │ │ │ ├── fetchHelper.spec.ts │ │ │ │ ├── fetchHelpers.ts │ │ │ │ ├── graphql.ts │ │ │ │ ├── index.ts │ │ │ │ ├── object.spec.ts │ │ │ │ ├── object.ts │ │ │ │ ├── project.spec.ts │ │ │ │ ├── project.ts │ │ │ │ ├── promise.spec.ts │ │ │ │ ├── promise.ts │ │ │ │ ├── queues/ │ │ │ │ │ ├── autoQueue.spec.ts │ │ │ │ │ ├── autoQueue.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── queue.ts │ │ │ │ │ ├── rampQueue.spec.ts │ │ │ │ │ └── rampQueue.ts │ │ │ │ ├── reindex.ts │ │ │ │ ├── string.spec.ts │ │ │ │ └── string.ts │ │ │ └── yargs.ts │ │ ├── test/ │ │ │ ├── config.json │ │ │ ├── config.toml │ │ │ ├── config.yml │ │ │ ├── jsonfy.js │ │ │ ├── migration-schemas/ │ │ │ │ ├── test_10_1.graphql │ │ │ │ ├── test_10_1000.graphql │ │ │ │ ├── test_11_1.graphql │ │ │ │ ├── test_11_2000.graphql │ │ │ │ ├── test_12_1.graphql │ │ │ │ ├── test_12_2000.graphql │ │ │ │ ├── test_13_1.graphql │ │ │ │ ├── test_13_2000.graphql │ │ │ │ ├── test_14_1.graphql │ │ │ │ ├── test_14_1000.graphql │ │ │ │ ├── test_15_1.graphql │ │ │ │ ├── test_15_2000.graphql │ │ │ │ ├── test_15_4000.graphql │ │ │ │ ├── test_16_1.graphql │ │ │ │ ├── test_16_2000.graphql │ │ │ │ ├── test_17_1.graphql │ │ │ │ ├── test_17_2000.graphql │ │ │ │ ├── test_18_1.graphql │ │ │ │ ├── test_18_2000.graphql │ │ │ │ ├── test_19_1.graphql │ │ │ │ ├── test_19_2000.graphql │ │ │ │ ├── test_1_1.graphql │ │ │ │ ├── test_1_1000.graphql │ │ │ │ ├── test_20_1.graphql │ │ │ │ ├── test_20_2000.graphql │ │ │ │ ├── test_2_1.graphql │ │ │ │ ├── test_2_1000.graphql │ │ │ │ ├── test_5_1.graphql │ │ │ │ ├── test_5_1000.graphql │ │ │ │ ├── test_6_1.graphql │ │ │ │ └── test_6_2000.graphql │ │ │ ├── sandbox/ │ │ │ │ ├── atob-test.js │ │ │ │ ├── atob-test.ts │ │ │ │ ├── buffer-test.js │ │ │ │ ├── buffer-test.ts │ │ │ │ ├── main.js │ │ │ │ ├── main.ts │ │ │ │ ├── package.json │ │ │ │ ├── schema.graphql │ │ │ │ ├── sourcemap-test-esbuild.js │ │ │ │ ├── sourcemap-test-webpack.js │ │ │ │ └── tsconfig.json │ │ │ ├── schemas/ │ │ │ │ ├── badSchema.graphql │ │ │ │ ├── badschema-2.graphql │ │ │ │ ├── newSchema.graphql │ │ │ │ ├── oldSchema.graphql │ │ │ │ └── schemaDiff.json │ │ │ └── v1.0.0/ │ │ │ ├── distMock/ │ │ │ │ ├── chaintypes.js │ │ │ │ └── index.js │ │ │ ├── erc20.abi.json │ │ │ ├── package.json │ │ │ ├── project.yaml │ │ │ ├── projectOptions.yaml │ │ │ ├── schema.graphql │ │ │ └── types.yaml │ │ ├── tsconfig.json │ │ └── yargs.js │ ├── query/ │ │ ├── .gitignore │ │ ├── CHANGELOG.md │ │ ├── Dockerfile │ │ ├── LICENSE │ │ ├── README.md │ │ ├── bin/ │ │ │ ├── run │ │ │ └── run.cmd │ │ ├── nest-cli.json │ │ ├── nodemon.json │ │ ├── package.json │ │ ├── src/ │ │ │ ├── app.module.ts │ │ │ ├── configure/ │ │ │ │ ├── config.ts │ │ │ │ ├── configure.module.ts │ │ │ │ ├── index.ts │ │ │ │ └── x-postgraphile/ │ │ │ │ └── debugClient.ts │ │ │ ├── graphql/ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ └── graphql.historical.test.ts.snap │ │ │ │ ├── graphql.historical.test.ts │ │ │ │ ├── graphql.module.ts │ │ │ │ ├── graphql.test.ts │ │ │ │ ├── limit.test.ts │ │ │ │ ├── plugins/ │ │ │ │ │ ├── GetMetadataPlugin.ts │ │ │ │ │ ├── PgAggregateSpecsPlugin.ts │ │ │ │ │ ├── PgAggregationPlugin.ts │ │ │ │ │ ├── PgBackwardRelationPlugin.ts │ │ │ │ │ ├── PgConnectionArgFirstLastBeforeAfter.ts │ │ │ │ │ ├── PgDistinctPlugin.ts │ │ │ │ │ ├── PgOrderByAggregatesPlugin.ts │ │ │ │ │ ├── PgOrderByUnique.ts │ │ │ │ │ ├── PgRowByVirtualIdPlugin.ts │ │ │ │ │ ├── PgSearchPlugin.ts │ │ │ │ │ ├── PgSubscriptionPlugin.ts │ │ │ │ │ ├── PlaygroundPlugin.ts │ │ │ │ │ ├── QueryAliasLimitPlugin.ts │ │ │ │ │ ├── QueryComplexityPlugin.ts │ │ │ │ │ ├── QueryDepthLimitPlugin.spec.ts │ │ │ │ │ ├── QueryDepthLimitPlugin.ts │ │ │ │ │ ├── historical/ │ │ │ │ │ │ ├── PgBlockHeightPlugin.ts │ │ │ │ │ │ ├── PgConnectionArgFilterBackwardRelationsPlugin.ts │ │ │ │ │ │ ├── PgConnectionArgFilterForwardRelationsPlugin.ts │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ └── utils.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ └── smartTagsPlugin.ts │ │ │ │ └── project.service.ts │ │ │ ├── main.ts │ │ │ ├── utils/ │ │ │ │ ├── asyncInterval.ts │ │ │ │ └── logger.ts │ │ │ └── yargs.ts │ │ ├── tsconfig.build.json │ │ └── tsconfig.json │ ├── testing/ │ │ ├── CHANGELOG.md │ │ ├── LICENSE │ │ ├── package.json │ │ ├── src/ │ │ │ ├── index.ts │ │ │ └── interfaces.ts │ │ └── tsconfig.json │ ├── types/ │ │ ├── CHANGELOG.md │ │ ├── LICENSE │ │ ├── package.json │ │ ├── src/ │ │ │ ├── global.ts │ │ │ ├── index.ts │ │ │ ├── interfaces.ts │ │ │ └── project.ts │ │ └── tsconfig.json │ ├── types-core/ │ │ ├── CHANGELOG.md │ │ ├── LICENSE │ │ ├── package.json │ │ ├── src/ │ │ │ ├── global.ts │ │ │ ├── index.ts │ │ │ ├── interfaces.ts │ │ │ ├── multichain/ │ │ │ │ ├── index.ts │ │ │ │ └── types.ts │ │ │ ├── project/ │ │ │ │ ├── datasourceProcessors.ts │ │ │ │ ├── index.ts │ │ │ │ ├── modulars/ │ │ │ │ │ ├── index.ts │ │ │ │ │ └── types.ts │ │ │ │ ├── readers/ │ │ │ │ │ ├── index.ts │ │ │ │ │ └── reader.ts │ │ │ │ ├── types.ts │ │ │ │ └── versioned/ │ │ │ │ ├── base.ts │ │ │ │ ├── index.ts │ │ │ │ └── v1_0_0/ │ │ │ │ ├── index.ts │ │ │ │ └── types.ts │ │ │ └── store.ts │ │ └── tsconfig.json │ └── utils/ │ ├── CHANGELOG.md │ ├── LICENSE │ ├── README.md │ ├── package.json │ ├── src/ │ │ ├── array/ │ │ │ ├── array.spec.ts │ │ │ ├── array.ts │ │ │ └── index.ts │ │ ├── buffer/ │ │ │ ├── buffer.spec.ts │ │ │ ├── buffer.ts │ │ │ └── index.ts │ │ ├── graphql/ │ │ │ ├── builder.spec.ts │ │ │ ├── builder.ts │ │ │ ├── constant.ts │ │ │ ├── entities.ts │ │ │ ├── graphql.spec.ts │ │ │ ├── index.ts │ │ │ ├── schema/ │ │ │ │ ├── directives.ts │ │ │ │ └── scalas.ts │ │ │ ├── schema.ts │ │ │ └── types.ts │ │ ├── index.ts │ │ ├── logger/ │ │ │ ├── colors.spec.ts │ │ │ ├── colors.ts │ │ │ ├── constants.ts │ │ │ ├── index.ts │ │ │ ├── logger.ts │ │ │ └── util.ts │ │ ├── networking.ts │ │ ├── query/ │ │ │ ├── index.ts │ │ │ ├── metadata.ts │ │ │ └── types.ts │ │ └── types/ │ │ ├── TypeClass.ts │ │ ├── generalTypes.spec.ts │ │ ├── generalTypes.ts │ │ ├── index.ts │ │ ├── supported/ │ │ │ ├── BigInt.ts │ │ │ ├── Boolean.ts │ │ │ ├── Bytes.ts │ │ │ ├── Date.ts │ │ │ ├── Float.ts │ │ │ ├── ID.ts │ │ │ ├── Int.ts │ │ │ ├── Json.ts │ │ │ ├── String.ts │ │ │ └── index.ts │ │ └── u8aUtils.ts │ └── tsconfig.json ├── report-main.json ├── scripts/ │ ├── build.sh │ └── update_versions.sh ├── test/ │ ├── Dockerfile │ ├── docker-compose.yaml │ ├── jest-setup.ts │ ├── load-extensions.sh │ └── pg-Dockerfile ├── tsconfig.json └── tsconfig.test.json ================================================ FILE CONTENTS ================================================ ================================================ FILE: .dockerignore ================================================ .github node_modules coverage deploy docs test/docker-compose.yaml test/Dockerfile ================================================ FILE: .editorconfig ================================================ root = true [*] indent_style = space indent_size = 2 end_of_line = lf charset = utf-8 trim_trailing_whitespace = true insert_final_newline = true [*.md] trim_trailing_whitespace = false ================================================ FILE: .github/ISSUE_TEMPLATE.md ================================================ ### Prerequisites * [ ] Are you running the latest version(s)? * [ ] Have you searched the [documentation for your issue](https://academy.subquery.network/)? * [ ] Did you search for an existing issue or pull request? ### Description [Description of the bug or feature] ### Details These details can help to reproduce the environment the issue is occurring **Local Environment:** [You can get this information from executing `subql version`.] **Query Version:** [What is the version of the query service?] **Indexer Version:** [What is the version of the indexer service?] **Network Details:** * [Network] * [Block height, a block height where the issue is happening] * [Dictionary endpoint, if used] ### Steps to Reproduce 1. [First Step] 2. [Second Step] 3. [and so on...] **Example project:** [A link to a minimal example that can reproduce the issue] **Expected behavior:** [What you expected to happen] **Actual behavior:** [What actually happened] ### Any other information Is there any other information you would like to add? ================================================ FILE: .github/PULL_REQUEST_TEMPLATE.md ================================================ # Description Please include a summary of the change and which issue is fixed. Please also include relevant motivation and context. List any dependencies that are required for this change. Fixes # (issue) ## Type of change Please delete options that are not relevant. - [ ] Bug fix (non-breaking change which fixes an issue) - [ ] New feature (non-breaking change which adds functionality) - [ ] Breaking change (fix or feature that would cause existing functionality to not work as expected) - [ ] This change requires a documentation update ## Checklist - [ ] I have tested locally - [ ] I have performed a self review of my changes - [ ] Updated any relevant documentation - [ ] Linked to any relevant issues - [ ] I have added tests relevant to my changes - [ ] Any dependent changes have been merged and published in downstream modules - [ ] My code is up to date with the base branch - [ ] I have updated relevant changelogs. [We suggest using chan](https://github.com/geut/chan/tree/main/packages/chan) ================================================ FILE: .github/actions/create-prerelease/action.yml ================================================ # Composite action needed to access github context # This is to compensate for yarn 3 issue https://github.com/yarnpkg/berry/issues/3868 name: 'Remove Stable Versions' description: 'This will remove stableVersion from packages for prerelease' inputs: package-path: description: 'package path to run action e.g. package/common' required: true runs: using: "composite" steps: - working-directory: ${{ github.workspace }} run: node ${{ github.action_path }}/remove-stable-version.js ${{ github.workspace }}/${{ inputs.package-path }} shell: bash - working-directory: ${{ inputs.package-path }} run: echo "Changes exist in ${{ inputs.package-path }}" && yarn version prerelease && yarn npm publish --access public --tag dev shell: bash ================================================ FILE: .github/actions/create-prerelease/remove-stable-version.js ================================================ const fs = require('fs'); const myArgs = process.argv.slice(2); const pJson = require(`${myArgs[0]}/package.json`) if (pJson.stableVersion){ delete pJson.stableVersion fs.writeFileSync(`${myArgs[0]}/package.json`, JSON.stringify(pJson, null, 2)) } ================================================ FILE: .github/actions/create-release/action.yml ================================================ # Composite action needed to access github context name: 'Create Release' description: 'This will publish to NPM registry and create Github release' inputs: package-path: # id of input description: 'package path to run action e.g. package/common' required: true repo-token: description: 'token to create github release' required: true runs: using: "composite" steps: - working-directory: ${{ inputs.package-path }} run: echo "Changes exist in ${{ inputs.package-path }}" && yarn npm publish --access public shell: bash - working-directory: ${{ github.workspace }} run: node ${{ github.action_path }}/gh-release-script.js ${{ github.workspace }}/${{ inputs.package-path }} ${{ github.sha }} env: REPO_TOKEN: ${{ inputs.repo-token }} shell: bash ================================================ FILE: .github/actions/create-release/gh-release-script.js ================================================ const fs = require('fs'); const { exit } = require('process'); const core = require('@actions/core'); const { request } = require('@octokit/request'); const myArgs = process.argv.slice(2); const pJson = require(`${myArgs[0]}/package.json`) const version = pJson.version; const repoName = pJson.name; const packageName = repoName.split('/'); function checkForBetaVersion(version) { if (version.includes('-')){ exit(0); //skip this package but continue trying to release others } } function gatherReleaseInfo(logPath) { const changeLogs = fs.readFileSync(logPath, 'utf8'); const regex = /## \[([0-9]+(\.[0-9]+)+)] - [0-9]{4}-[0-9]{2}-[0-9]{2}/i; let lines = changeLogs.split(/\n/); let foundChangelog = false; let releaseInfo = ''; let i = 0; for(let j = 0; j < lines.length; j++){ if(lines[j].includes(`[${version}]`)){ i = j; j = lines.length; foundChangelog = true; } } lines = lines.slice(i); if(foundChangelog){ for(let j = 0; j < lines.length; j++){ if(j == 0){ releaseInfo += `${lines[j]}`+ '\n'; continue; } if(!regex.test(lines[j])){ releaseInfo += `${lines[j]}`+ '\n'; } else { j = lines.length; } } } if(releaseInfo === ''){ core.setFailed("No release info found, either missing in changelog or changelog is formatted incorrectly") } console.log("Gathered release info...") return releaseInfo; } async function publishRelease(releaseInfo) { await request('POST /repos/{owner}/{repo}/releases', { headers: { authorization: `token ${process.env.REPO_TOKEN}`, }, owner: 'subquery', name: `[${version}] ${repoName}`, repo: 'subql', tag_name: `${packageName[1]}/${version}`, target_commitish: `${myArgs[1]}`, body: releaseInfo }).catch( err => { core.setFailed(err) }) console.log("Release Created...") } checkForBetaVersion(version); const releaseInfo = gatherReleaseInfo(`${myArgs[0]}/CHANGELOG.md`); publishRelease(releaseInfo); ================================================ FILE: .github/dependabot.yml ================================================ # To get started with Dependabot version updates, you'll need to specify which # package ecosystems to update and where the package manifests are located. # Please see the documentation for all configuration options: # https://docs.github.com/code-security/dependabot/dependabot-version-updates/configuration-options-for-the-dependabot.yml-file version: 2 updates: - package-ecosystem: "npm" # See documentation for possible values directories: # Location of package manifests - "/" - "/packages/*" schedule: interval: "weekly" - package-ecosystem: "github-actions" # Workflow files stored in the default location of `.github/workflows` # You don't need to specify `/.github/workflows` for `directory`. You can use `directory: "/"`. directory: "/" schedule: interval: "weekly" ================================================ FILE: .github/workflows/benchmark.yml ================================================ name: BENCHMARK on: workflow_dispatch: inputs: cpus: description: "docker cpus " default: 2 require: true memory: description: "docker memory" default: "4g" require: true benchmark-time: description: "Benchmark time(h/m/s)" default: 30m require: true indexerVersion: description: "indexer version" default: "latest" require: true deployment: description: "Deployment" default: "QmakYyTWzTxaDU842CczyDWV51Ay9E55k7kbRRXTB3f395" require: false network-endpoint: description: "Network endpoint" default: "wss://rpc-polkadot.luckyfriday.io" require: true disableHistorical: description: "Disable historical" default: "true" require: false batch-size: description: "batch-size" default: 30 require: false workers: description: "workers" default: 4 require: false others: description: "Other flags" require: false jobs: # Label of the container job container-job: # Containers must run in Linux based operating systems runs-on: ubuntu-latest # Docker Hub image that `container-job` executes in container: node:lts services: # Label used to access the service container postgres: # Docker Hub image image: postgres:12-alpine # Provide the password for postgres env: POSTGRES_USER: postgres POSTGRES_PASSWORD: postgres POSTGRES_DB: postgres ports: - 5432:5432 options: --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5 steps: #Check out - uses: actions/checkout@v6 with: fetch-depth: 100 token: ${{ secrets.REPO_TOKEN }} - name: Install Docker inside the container run: | apt-get update apt-get install -y docker.io - name: Install PostgreSQL client run: | apt-get install --yes postgresql-client # Install bc used in convert time in seconds - name: Install bc run: apt-get install -y bc # queries database with postgres client - name: Setup historical database run: psql -h postgres -d postgres -U postgres -c 'CREATE EXTENSION IF NOT EXISTS btree_gist;' env: PGPASSWORD: postgres - name: Ensure clean reports directory run: | output_dir="output/benchmark/" chmod +x .github/workflows/scripts/benchmark/cleanHistory.sh .github/workflows/scripts/benchmark/cleanHistory.sh $output_dir - name: Clean container && rebuild indexer run: | docker rmi my_indexer:latest || true CONTAINER_NAME="my_container" docker stop $CONTAINER_NAME || true docker rm -f $CONTAINER_NAME || true VOLUME_NAME="${CONTAINER_NAME}_data" docker volume rm $VOLUME_NAME || true docker build -t my_indexer --build-arg input_indexer_version=${{github.event.inputs.indexerVersion}} .github/workflows/scripts/benchmark/ - name: Benchmarking id: app run: | docker run --cpus=${{github.event.inputs.cpus}} --memory=${{github.event.inputs.memory}} --network ${{ job.container.network }} --name my_container -v "${PWD}/output/benchmark:/app/output/benchmark" my_indexer ${{github.event.inputs.benchmark-time}} ${{ github.event.inputs.deployment }} ${{ github.event.inputs.network-endpoint }} ${{ github.event.inputs.batch-size }} ${{ github.event.inputs.workers }} ${{ github.event.inputs.disableHistorical }} ${{ github.event.inputs.others }} docker cp my_container:/app/output/benchmark/indexing.log output/benchmark/ - name: Stop and remove the benchmark container run: docker stop my_container && docker rm my_container - name: Query metadata get processed height id: query_meta env: PGPASSWORD: postgres run: | chmod +x .github/workflows/scripts/benchmark/queryMeta.sh .github/workflows/scripts/benchmark/queryMeta.sh ${{github.event.inputs.benchmark-time}} - name: Pre-save running specs run: | echo "benchmark-time=${{github.event.inputs.benchmark-time}}" > output/benchmark/benchmark.log echo "indexer=${{steps.query_meta.outputs.runner_node}}" >> output/benchmark/benchmark.log echo "indexerVersion=${{steps.query_meta.outputs.indexer_version}}" >> output/benchmark/benchmark.log echo "deployment=${{github.event.inputs.deployment}}" >> output/benchmark/benchmark.log echo "network-endpoint=${{github.event.inputs.network-endpoint}}" >> output/benchmark/benchmark.log echo "disableHistorical=${{github.event.inputs.disableHistorical}}" >> output/benchmark/benchmark.log echo "batch-size=${{github.event.inputs.batch-size}}" >> output/benchmark/benchmark.log echo "workers=${{github.event.inputs.workers}}" >> output/benchmark/benchmark.log if [ -n "${{github.event.inputs.others}}" ]; then echo "others=${{github.event.inputs.others}}" >> output/benchmark/benchmark.log fi echo "Start Height: ${{steps.query_meta.outputs.start_height}}" >> output/benchmark/benchmark.log echo "Last Processed Height: ${{steps.query_meta.outputs.last_processed_height}}" >> output/benchmark/benchmark.log echo "------------------------------------" >> output/benchmark/benchmark.log - name: Prepare benchmark log run: | if grep -qi "benchmark" output/benchmark/indexing.log; then grep -i "benchmark" output/benchmark/indexing.log >> output/benchmark/benchmark.log cat output/benchmark/benchmark.log else echo "No lines containing 'benchmark' found in output/benchmark/indexing.log" >> output/benchmark/benchmark.log fi - name: Get current time uses: josStorer/get-current-time@v2 id: current-time with: format: YYYYMMDD-HHmm utcOffset: "+12:00" - name: Upload reports uses: actions/upload-artifact@v7 with: name: benchmark-${{steps.current-time.outputs.formattedTime}}-${{steps.query_meta.outputs.indexer_version}} path: output/benchmark/ - name: Post to a Slack channel id: slack uses: slackapi/slack-github-action@v2.1.1 with: # Slack channel id, channel name, or user id to post message. # See also: https://api.slack.com/methods/chat.postMessage#channels # channel for sq-benchmark channel-id: "C05JF51F1MJ" # For posting a rich message using Block Kit payload: | { "text": "Benchmark result ${{steps.current-time.outputs.formattedTime}}", "blocks": [ { "type": "section", "text": { "type": "mrkdwn", "text": "Results: ${{ job.status }} with ${{steps.query_meta.outputs.bps}} bps\n Performance: Block [${{steps.query_meta.outputs.start_height}}-${{steps.query_meta.outputs.last_processed_height}}], total ${{steps.query_meta.outputs.total_height}} blocks in ${{github.event.inputs.benchmark-time}}\n More details: https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}\n Indexer: ${{steps.query_meta.outputs.runner_node}}@${{steps.query_meta.outputs.indexer_version}}\n Deployment: ${{github.event.inputs.deployment}}\n CPUs: ${{github.event.inputs.cpus}}\n Memory: ${{github.event.inputs.memory}}\n Workers: ${{github.event.inputs.workers}}\n Batch-size: ${{github.event.inputs.batch-size}}" } } ] } env: SLACK_BOT_TOKEN: ${{ secrets.SLACK_BOT_TOKEN }} ================================================ FILE: .github/workflows/discord.yml ================================================ name: discord notification on: release: types: - published jobs: notify: name: Discord Notification runs-on: ubuntu-latest steps: - name: Send release details to Discord uses: rjstone/discord-webhook-notify@v2 with: webhookUrl: ${{ secrets.DISCORD_RELEASE_NOTES_WEBHOOK }} color: "#6499ff" avatarUrl: https://github.githubassets.com/images/modules/logos_page/Octocat.png details: ${{ github.event.release.body }} description: "[Release] ${{ github.event.release.name }}" footer: ${{ github.event.release.html_url }} ================================================ FILE: .github/workflows/gh-release.yml ================================================ name: "Github Release" on: workflow_dispatch: jobs: github-release: name: github-release runs-on: ubuntu-latest steps: #Check out - uses: actions/checkout@v6 with: fetch-depth: 100 - name: Setup Node.js environment uses: actions/setup-node@v5 with: node-version: lts/* - run: yarn install # Create github releases - uses: ./.github/actions/create-release with: package-path: packages/utils repo-token: ${{ secrets.REPO_TOKEN }} - uses: ./.github/actions/create-release with: package-path: packages/types-core repo-token: ${{ secrets.REPO_TOKEN }} - uses: ./.github/actions/create-release with: package-path: packages/types repo-token: ${{ secrets.REPO_TOKEN }} - uses: ./.github/actions/create-release with: package-path: packages/common repo-token: ${{ secrets.REPO_TOKEN }} - uses: ./.github/actions/create-release with: package-path: packages/common-substrate repo-token: ${{ secrets.REPO_TOKEN }} - uses: ./.github/actions/create-release with: package-path: packages/cli repo-token: ${{ secrets.REPO_TOKEN }} - uses: ./.github/actions/create-release with: package-path: packages/node-core repo-token: ${{ secrets.REPO_TOKEN }} - uses: ./.github/actions/create-release with: package-path: packages/node repo-token: ${{ secrets.REPO_TOKEN }} - uses: ./.github/actions/create-release with: package-path: packages/query repo-token: ${{ secrets.REPO_TOKEN }} - uses: ./.github/actions/create-release with: package-path: packages/testing repo-token: ${{ secrets.REPO_TOKEN }} ================================================ FILE: .github/workflows/node-docker.yml ================================================ name: "Node-to-docker" on: release: types: - published workflow_dispatch: inputs: isLatest: description: "Add latest tag" default: "true" required: true jobs: check: runs-on: ubuntu-latest outputs: changes_found: ${{ steps.check_changes.outputs.changes_found }} steps: - uses: actions/checkout@v6 with: fetch-depth: 2 - name: Check for package changes and commit message id: check_changes run: | if [[ "${{ github.event_name }}" == "release" ]] then TAG_NAME=${GITHUB_REF#refs/tags/} if [[ $TAG_NAME == "node/"* ]] then echo "changes_found=true" >> "$GITHUB_OUTPUT" else echo "changes_found=false" >> "$GITHUB_OUTPUT" fi else echo "changes_found=true" >> "$GITHUB_OUTPUT" fi node-build-push-docker-onfinality: needs: check if: needs.check.outputs.changes_found == 'true' runs-on: ubuntu-latest steps: - uses: actions/checkout@v6 with: fetch-depth: 100 token: ${{ secrets.REPO_TOKEN }} - name: Set up QEMU uses: docker/setup-qemu-action@v3 - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 - name: Login to DockerHub uses: docker/login-action@v3 with: username: onfinality password: ${{ secrets.DOCKERHUB_TOKEN }} ## node - name: Get updated node version id: get-node-version run: | sh .github/workflows/scripts/nodeVersion.sh - run: yarn - name: build run: yarn build - name: Build and push if: github.event_name == 'workflow_dispatch' && github.event.inputs.isLatest == 'false' uses: docker/build-push-action@v6 with: context: . push: true platforms: arm64,amd64 file: ./packages/node/Dockerfile tags: onfinality/subql-node:v${{ steps.get-node-version.outputs.NODE_VERSION }} build-args: RELEASE_VERSION=${{ steps.get-node-version.outputs.NODE_VERSION }} - name: Build and push if: github.event_name == 'release' || (github.event_name == 'workflow_dispatch' && github.event.inputs.isLatest == 'true') uses: docker/build-push-action@v6 with: context: . push: true platforms: arm64,amd64 file: ./packages/node/Dockerfile tags: onfinality/subql-node:v${{ steps.get-node-version.outputs.NODE_VERSION }},onfinality/subql-node:latest build-args: RELEASE_VERSION=${{ steps.get-node-version.outputs.NODE_VERSION }} - name: Image digest run: echo ${{ steps.docker_build.outputs.digest }} node-build-push-docker-subquery: needs: check if: needs.check.outputs.changes_found == 'true' runs-on: ubuntu-latest steps: - uses: actions/checkout@v6 with: fetch-depth: 100 token: ${{ secrets.REPO_TOKEN }} - name: Set up QEMU uses: docker/setup-qemu-action@v3 - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 - name: Login to DockerHub uses: docker/login-action@v3 with: username: subquerynetwork password: ${{ secrets.SQ_DOCKERHUB_TOKEN }} ## node - name: Get updated node version id: get-node-version run: | sh .github/workflows/scripts/nodeVersion.sh - run: yarn - name: build run: yarn build - name: Build and push if: github.event_name == 'workflow_dispatch' && github.event.inputs.isLatest == 'false' uses: docker/build-push-action@v6 with: context: . push: true platforms: arm64,amd64 file: ./packages/node/Dockerfile tags: subquerynetwork/subql-node-substrate, - name: Build and push if: github.event_name == 'release' || (github.event_name == 'workflow_dispatch' && github.event.inputs.isLatest == 'true') uses: docker/build-push-action@v6 with: context: . push: true platforms: arm64,amd64 file: ./packages/node/Dockerfile tags: subquerynetwork/subql-node-substrate:v${{ steps.get-node-version.outputs.NODE_VERSION }},subquerynetwork/subql-node-substrate:latest - name: Image digest run: echo ${{ steps.docker_build.outputs.digest }} ================================================ FILE: .github/workflows/pr.yml ================================================ name: PR on: pull_request: paths-ignore: - ".github/workflows/**" jobs: code-style: name: code-style runs-on: ubuntu-latest env: YARN_ENABLE_HARDENED_MODE: 0 steps: - uses: actions/checkout@v6 - name: Setup Node.js environment uses: actions/setup-node@v5 with: node-version: lts/* - run: yarn - name: build run: yarn build - name: code-style check run: yarn pretty-quick --check --pattern 'packages/*/src/**/*' --branch origin/main - name: lint run: yarn lint coverage: name: Coverage report runs-on: ubuntu-latest services: postgres: image: postgres:16-alpine ports: - 5432:5432 env: POSTGRES_PASSWORD: postgres options: >- --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5 env: DB_USER: postgres DB_PASS: postgres DB_DATABASE: postgres DB_HOST: localhost DB_PORT: 5432 SUBQL_ACCESS_TOKEN: ${{ secrets.SUBQL_ACCESS_TOKEN }} SUBQL_ACCESS_TOKEN_TEST: ${{ secrets.SUBQL_ACCESS_TOKEN_TEST }} SUBQL_ORG_TEST: ${{ secrets.SUBQL_ORG_TEST }} ETHERSCAN_API_KEY: ${{ secrets.ETHERSCAN_API_KEY }} YARN_ENABLE_HARDENED_MODE: 0 steps: - uses: actions/checkout@v6 - name: Enable btree btree_gist run: psql "postgresql://$DB_USER:$DB_PASS@$DB_HOST:$DB_PORT/$DB_DATABASE" -c "CREATE EXTENSION IF NOT EXISTS btree_gist;" - name: Setup Node.js environment uses: actions/setup-node@v5 with: node-version: lts/* - name: install dependencies run: yarn - name: build run: yarn build - uses: artiomtr/jest-coverage-report-action@v2 with: github-token: ${{ secrets.GITHUB_TOKEN }} skip-step: install package-manager: yarn working-directory: . test-script: yarn test:ci annotations: none # coverage-file: report.json base-coverage-file: report-main.json - name: Archive code coverage results uses: actions/upload-artifact@v7 with: name: code-coverage-report path: report.json ================================================ FILE: .github/workflows/publish.yml ================================================ name: "Publish" on: push: branches: - main paths-ignore: - ".github/workflows/**" workflow_dispatch: permissions: id-token: write # Required for OIDC contents: read concurrency: group: publish cancel-in-progress: false jobs: pre-ci: name: Pre-CI (Extract Commit Message) runs-on: ubuntu-latest timeout-minutes: 1 outputs: commit-message: ${{ steps.get_commit_message.outputs.commit-message }} steps: - uses: actions/checkout@v6 with: fetch-depth: 0 - id: get_commit_message run: | if [ -n "${{ github.event.head_commit.message }}" ] then echo "commit-message=${{ github.event.head_commit.message }}" | head -n 1 >> "$GITHUB_OUTPUT" else commit_message=$(git log -1 --pretty=%B | head -n 1) echo "commit-message=$commit_message" >> "$GITHUB_OUTPUT" fi - name: Debug commit message run: | echo "Commit message: ${{ steps.get_commit_message.outputs.commit-message }}" setup: name: Setup & Detect Changes needs: pre-ci runs-on: ubuntu-latest outputs: changed-utils: ${{ steps.changed-utils.outputs.changed }} changed-types-core: ${{ steps.changed-types-core.outputs.changed }} changed-types: ${{ steps.changed-types.outputs.changed }} changed-common: ${{ steps.changed-common.outputs.changed }} changed-common-substrate: ${{ steps.changed-common-substrate.outputs.changed }} changed-cli: ${{ steps.changed-cli.outputs.changed }} changed-node-core: ${{ steps.changed-node-core.outputs.changed }} changed-node: ${{ steps.changed-node.outputs.changed }} changed-query: ${{ steps.changed-query.outputs.changed }} changed-testing: ${{ steps.changed-testing.outputs.changed }} steps: - uses: actions/checkout@v6 with: fetch-depth: 100 # Needed to detect changes by having commit history - uses: marceloprado/has-changed-path@v1 id: changed-utils with: paths: packages/utils - uses: marceloprado/has-changed-path@v1 id: changed-types-core with: paths: packages/types-core - uses: marceloprado/has-changed-path@v1 id: changed-types with: paths: packages/types - uses: marceloprado/has-changed-path@v1 id: changed-common with: paths: packages/common - uses: marceloprado/has-changed-path@v1 id: changed-common-substrate with: paths: packages/common-substrate - uses: marceloprado/has-changed-path@v1 id: changed-cli with: paths: packages/cli - uses: marceloprado/has-changed-path@v1 id: changed-node-core with: paths: packages/node-core - uses: marceloprado/has-changed-path@v1 id: changed-node with: paths: packages/node - uses: marceloprado/has-changed-path@v1 id: changed-query with: paths: packages/query - uses: marceloprado/has-changed-path@v1 id: changed-testing with: paths: packages/testing release: name: Release Publish needs: [pre-ci, setup] if: > !startsWith(needs.pre-ci.outputs.commit-message, '[SKIP CI]') && startsWith(needs.pre-ci.outputs.commit-message, '[release]') && github.repository == 'subquery/subql' runs-on: ubuntu-latest steps: - uses: actions/checkout@v6 with: fetch-depth: 0 - name: Setup Node.js environment uses: actions/setup-node@v5 with: node-version: lts/* - name: Update npm run: npm install -g npm@latest - run: yarn - name: build run: yarn build # Publish to npm and github releases - name: Publish Utils if: needs.setup.outputs.changed-utils == 'true' uses: ./.github/actions/create-release with: package-path: packages/utils repo-token: ${{ secrets.REPO_TOKEN }} - name: Publish Types-core if: needs.setup.outputs.changed-types-core == 'true' uses: ./.github/actions/create-release with: package-path: packages/types-core repo-token: ${{ secrets.REPO_TOKEN }} - name: Publish Types if: needs.setup.outputs.changed-types == 'true' uses: ./.github/actions/create-release with: package-path: packages/types repo-token: ${{ secrets.REPO_TOKEN }} - name: Publish Common if: needs.setup.outputs.changed-common == 'true' uses: ./.github/actions/create-release with: package-path: packages/common repo-token: ${{ secrets.REPO_TOKEN }} - name: Publish Common Substrate if: needs.setup.outputs.changed-common-substrate == 'true' uses: ./.github/actions/create-release with: package-path: packages/common-substrate repo-token: ${{ secrets.REPO_TOKEN }} - name: Publish Testing if: needs.setup.outputs.changed-testing == 'true' uses: ./.github/actions/create-release with: package-path: packages/testing repo-token: ${{ secrets.REPO_TOKEN }} - name: Publish Node Core if: needs.setup.outputs.changed-node-core == 'true' uses: ./.github/actions/create-release with: package-path: packages/node-core repo-token: ${{ secrets.REPO_TOKEN }} - name: Publish Node if: needs.setup.outputs.changed-node == 'true' uses: ./.github/actions/create-release with: package-path: packages/node repo-token: ${{ secrets.REPO_TOKEN }} - name: Publish Query if: needs.setup.outputs.changed-query == 'true' uses: ./.github/actions/create-release with: package-path: packages/query repo-token: ${{ secrets.REPO_TOKEN }} - name: Publish Cli if: needs.setup.outputs.changed-cli == 'true' uses: ./.github/actions/create-release with: package-path: packages/cli repo-token: ${{ secrets.REPO_TOKEN }} prerelease: name: Prerelease Publish needs: [pre-ci, setup] if: > !startsWith(needs.pre-ci.outputs.commit-message, '[SKIP CI]') && !startsWith(needs.pre-ci.outputs.commit-message, '[release]') && github.repository == 'subquery/subql' runs-on: ubuntu-latest steps: - uses: actions/checkout@v6 with: fetch-depth: 0 token: ${{ secrets.REPO_TOKEN }} # Needed to push changes back to repo - name: Setup Node.js environment uses: actions/setup-node@v5 with: node-version: lts/* - name: Update npm run: npm install -g npm@latest - run: yarn - name: build run: yarn build # Prerelease publish steps - name: Bump utils & deploy if: needs.setup.outputs.changed-utils == 'true' uses: ./.github/actions/create-prerelease with: package-path: packages/utils - name: Bump types-core & deploy if: needs.setup.outputs.changed-types-core == 'true' uses: ./.github/actions/create-prerelease with: package-path: packages/types-core - name: Bump types & deploy if: needs.setup.outputs.changed-types == 'true' uses: ./.github/actions/create-prerelease with: package-path: packages/types - name: Bump common & deploy if: needs.setup.outputs.changed-common == 'true' uses: ./.github/actions/create-prerelease with: package-path: packages/common - name: Bump common substrate & deploy if: needs.setup.outputs.changed-common-substrate == 'true' uses: ./.github/actions/create-prerelease with: package-path: packages/common-substrate - name: Bump testing & deploy if: needs.setup.outputs.changed-testing == 'true' uses: ./.github/actions/create-prerelease with: package-path: packages/testing - name: Bump node-core & deploy if: needs.setup.outputs.changed-node-core == 'true' uses: ./.github/actions/create-prerelease with: package-path: packages/node-core - name: Bump node & deploy if: needs.setup.outputs.changed-node == 'true' uses: ./.github/actions/create-prerelease with: package-path: packages/node - name: Bump query & deploy if: needs.setup.outputs.changed-query == 'true' uses: ./.github/actions/create-prerelease with: package-path: packages/query - name: Bump cli & deploy if: needs.setup.outputs.changed-cli == 'true' uses: ./.github/actions/create-prerelease with: package-path: packages/cli - name: Commit changes uses: EndBug/add-and-commit@v9 with: message: "[SKIP CI] Prerelease" default_author: github_actions ================================================ FILE: .github/workflows/query-docker.yml ================================================ name: "Query-to-docker" on: release: types: - published workflow_dispatch: inputs: isLatest: description: 'Add latest tag' default: 'true' required: true jobs: check: runs-on: ubuntu-latest outputs: changes_found: ${{ steps.check_changes.outputs.changes_found }} steps: - uses: actions/checkout@v6 with: fetch-depth: 2 - name: Check for package changes and commit message id: check_changes run: | if [[ "${{ github.event_name }}" == "release" ]] then TAG_NAME=${GITHUB_REF#refs/tags/} if [[ $TAG_NAME == "query/"* ]] then echo "changes_found=true" >> "$GITHUB_OUTPUT" else echo "changes_found=false" >> "$GITHUB_OUTPUT" fi else echo "changes_found=true" >> "$GITHUB_OUTPUT" fi query-build-push-docker: needs: check if: needs.check.outputs.changes_found == 'true' runs-on: ubuntu-latest steps: - uses: actions/checkout@v6 with: fetch-depth: 100 token: ${{ secrets.REPO_TOKEN }} - name: Set up QEMU uses: docker/setup-qemu-action@v3 - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 - name: Login to DockerHub uses: docker/login-action@v3 with: username: onfinality password: ${{ secrets.DOCKERHUB_TOKEN }} ## query - name: Get updated query version id: get-query-version run: | sh .github/workflows/scripts/queryVersion.sh - run: yarn - name: build run: yarn build - name: Build and push if: github.event_name == 'workflow_dispatch' && github.event.inputs.isLatest == 'false' uses: docker/build-push-action@v6 with: context: . push: true platforms: arm64,amd64 file: ./packages/query/Dockerfile tags: onfinality/subql-query:v${{ steps.get-query-version.outputs.QUERY_VERSION }} build-args: RELEASE_VERSION=${{ steps.get-query-version.outputs.QUERY_VERSION }} - name: Build and push if: github.event_name == 'release' || (github.event_name == 'workflow_dispatch' && github.event.inputs.isLatest == 'true') uses: docker/build-push-action@v6 with: context: . push: true platforms: arm64,amd64 file: ./packages/query/Dockerfile tags: onfinality/subql-query:v${{ steps.get-query-version.outputs.QUERY_VERSION }},onfinality/subql-query:latest build-args: RELEASE_VERSION=${{ steps.get-query-version.outputs.QUERY_VERSION }} - name: Image digest if: steps.changed-query.outputs.changed == 'true' run: echo ${{ steps.docker_build.outputs.digest }} query-build-push-docker-subquery: needs: check if: needs.check.outputs.changes_found == 'true' runs-on: ubuntu-latest steps: - uses: actions/checkout@v6 with: fetch-depth: 100 token: ${{ secrets.REPO_TOKEN }} - name: Set up QEMU uses: docker/setup-qemu-action@v3 - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 - name: Login to DockerHub uses: docker/login-action@v3 with: username: subquerynetwork password: ${{ secrets.SQ_DOCKERHUB_TOKEN }} ## query - name: Get updated query version id: get-query-version run: | sh .github/workflows/scripts/queryVersion.sh - run: yarn - name: build run: yarn build - name: Build and push if: github.event_name == 'workflow_dispatch' && github.event.inputs.isLatest == 'false' uses: docker/build-push-action@v6 with: context: . push: true platforms: arm64,amd64 file: ./packages/query/Dockerfile tags: subquerynetwork/subql-query:v${{ steps.get-query-version.outputs.QUERY_VERSION }} build-args: RELEASE_VERSION=${{ steps.get-query-version.outputs.QUERY_VERSION }} - name: Build and push if: github.event_name == 'release' || (github.event_name == 'workflow_dispatch' && github.event.inputs.isLatest == 'true') uses: docker/build-push-action@v6 with: context: . push: true platforms: arm64,amd64 file: ./packages/query/Dockerfile tags: subquerynetwork/subql-query:v${{ steps.get-query-version.outputs.QUERY_VERSION }},subquerynetwork/subql-query:latest build-args: RELEASE_VERSION=${{ steps.get-query-version.outputs.QUERY_VERSION }} - name: Image digest if: steps.changed-query.outputs.changed == 'true' run: echo ${{ steps.docker_build.outputs.digest }} ================================================ FILE: .github/workflows/scripts/benchmark/Dockerfile ================================================ FROM node:lts # Define build-time arguments ARG input_indexer_version ENV INDEXER_VERSION=${input_indexer_version} ENV DB_USER=postgres ENV DB_PASS=postgres ENV DB_DATABASE=postgres ENV DB_HOST=postgres ENV DB_PORT=5432 # Set the working directory in the container WORKDIR /app # Install app dependencies RUN npm i @subql/node@$INDEXER_VERSION -g # Copy the rest of the app's code to the container COPY . . # Custom script to run the Node.js app and handle other tasks COPY benchmarking.sh /app/benchmarking.sh RUN chmod +x /app/benchmarking.sh # Set the entrypoint to the script ENTRYPOINT ["/bin/bash", "/app/benchmarking.sh"] ================================================ FILE: .github/workflows/scripts/benchmark/benchmarking.sh ================================================ #!/bin/bash # Get input parameters passed from the GitHub Action workflow # Testing time input_duration=$1 input_deployment=$2 input_endpoint=$3 input_batch_size=$4 input_workers=$5 input_disableHistorical=$6 input_others=$7 # Start the Node.js app in the background and save its PID subql-node -f ipfs://$input_deployment --network-endpoint=$input_endpoint --batch-size=$input_batch_size --workers=$input_workers --disable-historical=$input_disableHistorical $input_others --ipfs='https://unauthipfs.subquery.network/ipfs/api/v0' --db-schema=app > output/benchmark/indexing.log 2>&1 & APP_PID=$! echo "Benchmarking, please wait $input_duration." # Wait for timeout sleep $input_duration # Terminate the Node.js app pkill -P $APP_PID || true ================================================ FILE: .github/workflows/scripts/benchmark/cleanHistory.sh ================================================ #!/bin/bash output_dir=$1 if [ -d "$output_dir" ]; then echo "Removing existing directory: $output_dir" rm -rf "$output_dir" fi # Create the new directory echo "Creating new directory: ${PWD}/$output_dir" mkdir -p "$output_dir" ================================================ FILE: .github/workflows/scripts/benchmark/queryMeta.sh ================================================ #!/bin/bash input_duration=$1 # Function to convert time string to seconds t2s() { sed 's/d/*24*3600 +/g; s/h/*3600 +/g; s/m/*60 +/g; s/s/\+/g; s/+[ ]*$//g' <<< "$1" | bc } # Query the database and store the result in variables runner_node=$(psql -h postgres -d postgres -U postgres -c "SELECT value FROM app._metadata WHERE key = 'runnerNode';" | awk 'NR == 3 {print $1}' | tr -d '"') indexer_version=$(psql -h postgres -d postgres -U postgres -c "SELECT value FROM app._metadata WHERE key = 'indexerNodeVersion';" | awk 'NR == 3 {print $1}' | tr -d '"') start_height=$(psql -h postgres -d postgres -U postgres -c "SELECT value::integer FROM app._metadata WHERE key = 'startHeight';" | awk 'NR == 3 {print $1}') last_processed_height=$(psql -h postgres -d postgres -U postgres -c "SELECT value::integer FROM app._metadata WHERE key = 'lastProcessedHeight';" | awk 'NR == 3 {print $1}') total_height=$((last_processed_height-start_height+1)) time_in_seconds=$(t2s "$input_duration") bps=$(awk "BEGIN {printf \"%.2f\", $total_height / $time_in_seconds}") # Set outputs for subsequent steps echo "::set-output name=runner_node::$runner_node" echo "::set-output name=indexer_version::$indexer_version" echo "::set-output name=start_height::$start_height" echo "::set-output name=last_processed_height::$last_processed_height" echo "::set-output name=total_height::$total_height" echo "::set-output name=bps::$bps" ================================================ FILE: .github/workflows/scripts/nodeVersion.sh ================================================ PACKAGE_VERSION=$(cat ./packages/node/package.json \ | grep version \ | head -1 \ | awk -F: '{ print $2 }' \ | sed 's/[",]//g' \ | tr -d '[[:space:]]') echo "::set-output name=NODE_VERSION::$PACKAGE_VERSION" ================================================ FILE: .github/workflows/scripts/queryVersion.sh ================================================ PACKAGE_VERSION=$(cat ./packages/query/package.json \ | grep version \ | head -1 \ | awk -F: '{ print $2 }' \ | sed 's/[",]//g' \ | tr -d '[[:space:]]') echo "::set-output name=QUERY_VERSION::$PACKAGE_VERSION" ================================================ FILE: .github/workflows/sync-sdks.yml ================================================ name: "Sync SDK Deps" on: workflow_dispatch: jobs: trigger: runs-on: ubuntu-latest steps: - name: Sync ETH run: | curl -X POST \ -H "Authorization: token ${{ secrets.SUBQL_SDK_CI }}" \ -H "Accept: application/vnd.github.v3+json" \ https://api.github.com/repos/subquery/subql-ethereum/dispatches \ -d '{"event_type":"trigger-workflow"}' - name: Sync Cosmos run: | curl -X POST \ -H "Authorization: token ${{ secrets.SUBQL_SDK_CI }}" \ -H "Accept: application/vnd.github.v3+json" \ https://api.github.com/repos/subquery/subql-cosmos/dispatches \ -d '{"event_type":"trigger-workflow"}' - name: Sync Algorand run: | curl -X POST \ -H "Authorization: token ${{ secrets.SUBQL_SDK_CI }}" \ -H "Accept: application/vnd.github.v3+json" \ https://api.github.com/repos/subquery/subql-algorand/dispatches \ -d '{"event_type":"trigger-workflow"}' - name: Sync Near run: | curl -X POST \ -H "Authorization: token ${{ secrets.SUBQL_SDK_CI }}" \ -H "Accept: application/vnd.github.v3+json" \ https://api.github.com/repos/subquery/subql-near/dispatches \ -d '{"event_type":"trigger-workflow"}' - name: Sync Stellar run: | curl -X POST \ -H "Authorization: token ${{ secrets.SUBQL_SDK_CI }}" \ -H "Accept: application/vnd.github.v3+json" \ https://api.github.com/repos/subquery/subql-stellar/dispatches \ -d '{"event_type":"trigger-workflow"}' - name: Sync Starknet run: | curl -X POST \ -H "Authorization: token ${{ secrets.SUBQL_SDK_CI }}" \ -H "Accept: application/vnd.github.v3+json" \ https://api.github.com/repos/subquery/subql-starknet/dispatches \ -d '{"event_type":"trigger-workflow"}' - name: Sync Solana run: | curl -X POST \ -H "Authorization: token ${{ secrets.SUBQL_SDK_CI }}" \ -H "Accept: application/vnd.github.v3+json" \ https://api.github.com/repos/subquery/subql-solana/dispatches \ -d '{"event_type":"trigger-workflow"}' ================================================ FILE: .gitignore ================================================ # Created by .ignore support plugin (hsz.mobi) ### JetBrains template # Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio, WebStorm and Rider # Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839 .idea # CMake cmake-build-*/ # Mongo Explorer plugin .idea/**/mongoSettings.xml # File-based project format *.iws # IntelliJ out/ # mpeltonen/sbt-idea plugin .idea_modules/ # JIRA plugin atlassian-ide-plugin.xml # Cursive Clojure plugin .idea/replstate.xml # Crashlytics plugin (for Android Studio and IntelliJ) com_crashlytics_export_strings.xml crashlytics.properties crashlytics-build.properties fabric.properties # Editor-based Rest Client .idea/httpRequests # Android studio 3.1+ serialized cache file .idea/caches/build_file_checksums.ser ### Node template # Logs logs *.log npm-debug.log* yarn-debug.log* yarn-error.log* lerna-debug.log* # Diagnostic reports (https://nodejs.org/api/report.html) report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json # Runtime data pids *.pid *.seed *.pid.lock # Directory for instrumented libs generated by jscoverage/JSCover lib-cov # Coverage directory used by tools like istanbul coverage *.lcov # nyc test coverage .nyc_output # Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) .grunt # Bower dependency directory (https://bower.io/) bower_components # node-waf configuration .lock-wscript # Compiled binary addons (https://nodejs.org/api/addons.html) build/Release # Dependency directories node_modules/ jspm_packages/ # Snowpack dependency directory (https://snowpack.dev/) web_modules/ # TypeScript cache *.tsbuildinfo # Optional npm cache directory .npm # Optional eslint cache .eslintcache # Microbundle cache .rpt2_cache/ .rts2_cache_cjs/ .rts2_cache_es/ .rts2_cache_umd/ # Optional REPL history .node_repl_history # Output of 'npm pack' *.tgz # Yarn Integrity file .yarn-integrity # dotenv environment variables file .env .env.test # parcel-bundler cache (https://parceljs.org/) .cache .parcel-cache # Next.js build output .next out # Nuxt.js build / generate output .nuxt dist # Gatsby files .cache/ # Comment in the public line in if your project uses Gatsby and not Next.js # https://nextjs.org/blog/next-9-1#public-directory-support # public # vuepress build output .vuepress/dist .vuepress/.temp .vuepress/.caches docs/.vuepress/dist docs/.vuepress/.temp docs/.vuepress/.caches # Serverless directories .serverless/ # FuseBox cache .fusebox/ # DynamoDB Local files .dynamodb/ # TernJS port file .tern-port # Stores VSCode versions used for testing VSCode extensions .vscode-test # yarn v2 .yarn/cache .yarn/unplugged .yarn/build-state.yml .yarn/install-state.gz .pnp.* ### VisualStudioCode template .vscode/* !.vscode/settings.json !.vscode/tasks.json !.vscode/launch.json !.vscode/extensions.json *.code-workspace # Local History for Visual Studio Code .history/ #package-lock.json package-lock.json .data lib .DS_Store .claude ================================================ FILE: .gitpod.dockerfile ================================================ FROM gitpod/workspace-postgresql ================================================ FILE: .gitpod.yml ================================================ # This configuration file was automatically generated by Gitpod. # Please adjust to your needs (see https://www.gitpod.io/docs/config-gitpod-file) # and commit this file to your remote git repository to share the goodness with others. image: file: .gitpod.dockerfile tasks: - init: yarn install && yarn run build ================================================ FILE: .husky/.gitignore ================================================ _ ================================================ FILE: .husky/pre-commit ================================================ #!/bin/sh . "$(dirname "$0")/_/husky.sh" npx lint-staged ================================================ FILE: .prettierignore ================================================ **/CHANGELOG.md **/node_modules/** **/.*/** **/coverage/** **/dist/** *.d.ts **/.DS_Store *.ejs *.tgz *.cmd *.sh generate-project*.yaml *.proto *.ts.snap sourcemap-test-*.js ================================================ FILE: .prettierrc ================================================ { "printWidth": 120, "trailingComma": "es5", "tabWidth": 2, "singleQuote": true, "bracketSpacing": false } ================================================ FILE: .yarn/releases/yarn-4.10.3.cjs ================================================ #!/usr/bin/env node /* eslint-disable */ //prettier-ignore (()=>{var DGe=Object.create;var dU=Object.defineProperty;var PGe=Object.getOwnPropertyDescriptor;var bGe=Object.getOwnPropertyNames;var xGe=Object.getPrototypeOf,kGe=Object.prototype.hasOwnProperty;var Ie=(t=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(t,{get:(e,r)=>(typeof require<"u"?require:e)[r]}):t)(function(t){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+t+'" is not supported')});var Ze=(t,e)=>()=>(t&&(e=t(t=0)),e);var _=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports),Vt=(t,e)=>{for(var r in e)dU(t,r,{get:e[r],enumerable:!0})},QGe=(t,e,r,s)=>{if(e&&typeof e=="object"||typeof e=="function")for(let a of bGe(e))!kGe.call(t,a)&&a!==r&&dU(t,a,{get:()=>e[a],enumerable:!(s=PGe(e,a))||s.enumerable});return t};var ut=(t,e,r)=>(r=t!=null?DGe(xGe(t)):{},QGe(e||!t||!t.__esModule?dU(r,"default",{value:t,enumerable:!0}):r,t));var fi={};Vt(fi,{SAFE_TIME:()=>HX,S_IFDIR:()=>Jb,S_IFLNK:()=>Kb,S_IFMT:()=>Mf,S_IFREG:()=>N2});var Mf,Jb,N2,Kb,HX,jX=Ze(()=>{Mf=61440,Jb=16384,N2=32768,Kb=40960,HX=456789e3});var or={};Vt(or,{EBADF:()=>Mo,EBUSY:()=>RGe,EEXIST:()=>MGe,EINVAL:()=>FGe,EISDIR:()=>LGe,ENOENT:()=>NGe,ENOSYS:()=>TGe,ENOTDIR:()=>OGe,ENOTEMPTY:()=>_Ge,EOPNOTSUPP:()=>HGe,EROFS:()=>UGe,ERR_DIR_CLOSED:()=>mU});function Cc(t,e){return Object.assign(new Error(`${t}: ${e}`),{code:t})}function RGe(t){return Cc("EBUSY",t)}function TGe(t,e){return Cc("ENOSYS",`${t}, ${e}`)}function FGe(t){return Cc("EINVAL",`invalid argument, ${t}`)}function Mo(t){return Cc("EBADF",`bad file descriptor, ${t}`)}function NGe(t){return Cc("ENOENT",`no such file or directory, ${t}`)}function OGe(t){return Cc("ENOTDIR",`not a directory, ${t}`)}function LGe(t){return Cc("EISDIR",`illegal operation on a directory, ${t}`)}function MGe(t){return Cc("EEXIST",`file already exists, ${t}`)}function UGe(t){return Cc("EROFS",`read-only filesystem, ${t}`)}function _Ge(t){return Cc("ENOTEMPTY",`directory not empty, ${t}`)}function HGe(t){return Cc("EOPNOTSUPP",`operation not supported, ${t}`)}function mU(){return Cc("ERR_DIR_CLOSED","Directory handle was closed")}var zb=Ze(()=>{});var $a={};Vt($a,{BigIntStatsEntry:()=>iE,DEFAULT_MODE:()=>IU,DirEntry:()=>yU,StatEntry:()=>nE,areStatsEqual:()=>CU,clearStats:()=>Zb,convertToBigIntStats:()=>GGe,makeDefaultStats:()=>GX,makeEmptyStats:()=>jGe});function GX(){return new nE}function jGe(){return Zb(GX())}function Zb(t){for(let e in t)if(Object.hasOwn(t,e)){let r=t[e];typeof r=="number"?t[e]=0:typeof r=="bigint"?t[e]=BigInt(0):EU.types.isDate(r)&&(t[e]=new Date(0))}return t}function GGe(t){let e=new iE;for(let r in t)if(Object.hasOwn(t,r)){let s=t[r];typeof s=="number"?e[r]=BigInt(s):EU.types.isDate(s)&&(e[r]=new Date(s))}return e.atimeNs=e.atimeMs*BigInt(1e6),e.mtimeNs=e.mtimeMs*BigInt(1e6),e.ctimeNs=e.ctimeMs*BigInt(1e6),e.birthtimeNs=e.birthtimeMs*BigInt(1e6),e}function CU(t,e){if(t.atimeMs!==e.atimeMs||t.birthtimeMs!==e.birthtimeMs||t.blksize!==e.blksize||t.blocks!==e.blocks||t.ctimeMs!==e.ctimeMs||t.dev!==e.dev||t.gid!==e.gid||t.ino!==e.ino||t.isBlockDevice()!==e.isBlockDevice()||t.isCharacterDevice()!==e.isCharacterDevice()||t.isDirectory()!==e.isDirectory()||t.isFIFO()!==e.isFIFO()||t.isFile()!==e.isFile()||t.isSocket()!==e.isSocket()||t.isSymbolicLink()!==e.isSymbolicLink()||t.mode!==e.mode||t.mtimeMs!==e.mtimeMs||t.nlink!==e.nlink||t.rdev!==e.rdev||t.size!==e.size||t.uid!==e.uid)return!1;let r=t,s=e;return!(r.atimeNs!==s.atimeNs||r.mtimeNs!==s.mtimeNs||r.ctimeNs!==s.ctimeNs||r.birthtimeNs!==s.birthtimeNs)}var EU,IU,yU,nE,iE,wU=Ze(()=>{EU=ut(Ie("util")),IU=33188,yU=class{constructor(){this.name="";this.path="";this.mode=0}isBlockDevice(){return!1}isCharacterDevice(){return!1}isDirectory(){return(this.mode&61440)===16384}isFIFO(){return!1}isFile(){return(this.mode&61440)===32768}isSocket(){return!1}isSymbolicLink(){return(this.mode&61440)===40960}},nE=class{constructor(){this.uid=0;this.gid=0;this.size=0;this.blksize=0;this.atimeMs=0;this.mtimeMs=0;this.ctimeMs=0;this.birthtimeMs=0;this.atime=new Date(0);this.mtime=new Date(0);this.ctime=new Date(0);this.birthtime=new Date(0);this.dev=0;this.ino=0;this.mode=IU;this.nlink=1;this.rdev=0;this.blocks=1}isBlockDevice(){return!1}isCharacterDevice(){return!1}isDirectory(){return(this.mode&61440)===16384}isFIFO(){return!1}isFile(){return(this.mode&61440)===32768}isSocket(){return!1}isSymbolicLink(){return(this.mode&61440)===40960}},iE=class{constructor(){this.uid=BigInt(0);this.gid=BigInt(0);this.size=BigInt(0);this.blksize=BigInt(0);this.atimeMs=BigInt(0);this.mtimeMs=BigInt(0);this.ctimeMs=BigInt(0);this.birthtimeMs=BigInt(0);this.atimeNs=BigInt(0);this.mtimeNs=BigInt(0);this.ctimeNs=BigInt(0);this.birthtimeNs=BigInt(0);this.atime=new Date(0);this.mtime=new Date(0);this.ctime=new Date(0);this.birthtime=new Date(0);this.dev=BigInt(0);this.ino=BigInt(0);this.mode=BigInt(IU);this.nlink=BigInt(1);this.rdev=BigInt(0);this.blocks=BigInt(1)}isBlockDevice(){return!1}isCharacterDevice(){return!1}isDirectory(){return(this.mode&BigInt(61440))===BigInt(16384)}isFIFO(){return!1}isFile(){return(this.mode&BigInt(61440))===BigInt(32768)}isSocket(){return!1}isSymbolicLink(){return(this.mode&BigInt(61440))===BigInt(40960)}}});function JGe(t){let e,r;if(e=t.match(YGe))t=e[1];else if(r=t.match(VGe))t=`\\\\${r[1]?".\\":""}${r[2]}`;else return t;return t.replace(/\//g,"\\")}function KGe(t){t=t.replace(/\\/g,"/");let e,r;return(e=t.match(qGe))?t=`/${e[1]}`:(r=t.match(WGe))&&(t=`/unc/${r[1]?".dot/":""}${r[2]}`),t}function Xb(t,e){return t===fe?WX(e):BU(e)}var O2,vt,Er,fe,J,qX,qGe,WGe,YGe,VGe,BU,WX,el=Ze(()=>{O2=ut(Ie("path")),vt={root:"/",dot:".",parent:".."},Er={home:"~",nodeModules:"node_modules",manifest:"package.json",lockfile:"yarn.lock",virtual:"__virtual__",pnpJs:".pnp.js",pnpCjs:".pnp.cjs",pnpData:".pnp.data.json",pnpEsmLoader:".pnp.loader.mjs",rc:".yarnrc.yml",env:".env"},fe=Object.create(O2.default),J=Object.create(O2.default.posix);fe.cwd=()=>process.cwd();J.cwd=process.platform==="win32"?()=>BU(process.cwd()):process.cwd;process.platform==="win32"&&(J.resolve=(...t)=>t.length>0&&J.isAbsolute(t[0])?O2.default.posix.resolve(...t):O2.default.posix.resolve(J.cwd(),...t));qX=function(t,e,r){return e=t.normalize(e),r=t.normalize(r),e===r?".":(e.endsWith(t.sep)||(e=e+t.sep),r.startsWith(e)?r.slice(e.length):null)};fe.contains=(t,e)=>qX(fe,t,e);J.contains=(t,e)=>qX(J,t,e);qGe=/^([a-zA-Z]:.*)$/,WGe=/^\/\/(\.\/)?(.*)$/,YGe=/^\/([a-zA-Z]:.*)$/,VGe=/^\/unc\/(\.dot\/)?(.*)$/;BU=process.platform==="win32"?KGe:t=>t,WX=process.platform==="win32"?JGe:t=>t;fe.fromPortablePath=WX;fe.toPortablePath=BU});async function $b(t,e){let r="0123456789abcdef";await t.mkdirPromise(e.indexPath,{recursive:!0});let s=[];for(let a of r)for(let n of r)s.push(t.mkdirPromise(t.pathUtils.join(e.indexPath,`${a}${n}`),{recursive:!0}));return await Promise.all(s),e.indexPath}async function YX(t,e,r,s,a){let n=t.pathUtils.normalize(e),c=r.pathUtils.normalize(s),f=[],p=[],{atime:h,mtime:E}=a.stableTime?{atime:dd,mtime:dd}:await r.lstatPromise(c);await t.mkdirpPromise(t.pathUtils.dirname(e),{utimes:[h,E]}),await vU(f,p,t,n,r,c,{...a,didParentExist:!0});for(let C of f)await C();await Promise.all(p.map(C=>C()))}async function vU(t,e,r,s,a,n,c){let f=c.didParentExist?await VX(r,s):null,p=await a.lstatPromise(n),{atime:h,mtime:E}=c.stableTime?{atime:dd,mtime:dd}:p,C;switch(!0){case p.isDirectory():C=await ZGe(t,e,r,s,f,a,n,p,c);break;case p.isFile():C=await eqe(t,e,r,s,f,a,n,p,c);break;case p.isSymbolicLink():C=await tqe(t,e,r,s,f,a,n,p,c);break;default:throw new Error(`Unsupported file type (${p.mode})`)}return(c.linkStrategy?.type!=="HardlinkFromIndex"||!p.isFile())&&((C||f?.mtime?.getTime()!==E.getTime()||f?.atime?.getTime()!==h.getTime())&&(e.push(()=>r.lutimesPromise(s,h,E)),C=!0),(f===null||(f.mode&511)!==(p.mode&511))&&(e.push(()=>r.chmodPromise(s,p.mode&511)),C=!0)),C}async function VX(t,e){try{return await t.lstatPromise(e)}catch{return null}}async function ZGe(t,e,r,s,a,n,c,f,p){if(a!==null&&!a.isDirectory())if(p.overwrite)t.push(async()=>r.removePromise(s)),a=null;else return!1;let h=!1;a===null&&(t.push(async()=>{try{await r.mkdirPromise(s,{mode:f.mode})}catch(S){if(S.code!=="EEXIST")throw S}}),h=!0);let E=await n.readdirPromise(c),C=p.didParentExist&&!a?{...p,didParentExist:!1}:p;if(p.stableSort)for(let S of E.sort())await vU(t,e,r,r.pathUtils.join(s,S),n,n.pathUtils.join(c,S),C)&&(h=!0);else(await Promise.all(E.map(async b=>{await vU(t,e,r,r.pathUtils.join(s,b),n,n.pathUtils.join(c,b),C)}))).some(b=>b)&&(h=!0);return h}async function XGe(t,e,r,s,a,n,c,f,p,h){let E=await n.checksumFilePromise(c,{algorithm:"sha1"}),C=420,S=f.mode&511,b=`${E}${S!==C?S.toString(8):""}`,I=r.pathUtils.join(h.indexPath,E.slice(0,2),`${b}.dat`),T;(le=>(le[le.Lock=0]="Lock",le[le.Rename=1]="Rename"))(T||={});let N=1,U=await VX(r,I);if(a){let ie=U&&a.dev===U.dev&&a.ino===U.ino,ue=U?.mtimeMs!==zGe;if(ie&&ue&&h.autoRepair&&(N=0,U=null),!ie)if(p.overwrite)t.push(async()=>r.removePromise(s)),a=null;else return!1}let W=!U&&N===1?`${I}.${Math.floor(Math.random()*4294967296).toString(16).padStart(8,"0")}`:null,ee=!1;return t.push(async()=>{if(!U&&(N===0&&await r.lockPromise(I,async()=>{let ie=await n.readFilePromise(c);await r.writeFilePromise(I,ie)}),N===1&&W)){let ie=await n.readFilePromise(c);await r.writeFilePromise(W,ie);try{await r.linkPromise(W,I)}catch(ue){if(ue.code==="EEXIST")ee=!0,await r.unlinkPromise(W);else throw ue}}a||await r.linkPromise(I,s)}),e.push(async()=>{U||(await r.lutimesPromise(I,dd,dd),S!==C&&await r.chmodPromise(I,S)),W&&!ee&&await r.unlinkPromise(W)}),!1}async function $Ge(t,e,r,s,a,n,c,f,p){if(a!==null)if(p.overwrite)t.push(async()=>r.removePromise(s)),a=null;else return!1;return t.push(async()=>{let h=await n.readFilePromise(c);await r.writeFilePromise(s,h)}),!0}async function eqe(t,e,r,s,a,n,c,f,p){return p.linkStrategy?.type==="HardlinkFromIndex"?XGe(t,e,r,s,a,n,c,f,p,p.linkStrategy):$Ge(t,e,r,s,a,n,c,f,p)}async function tqe(t,e,r,s,a,n,c,f,p){if(a!==null)if(p.overwrite)t.push(async()=>r.removePromise(s)),a=null;else return!1;return t.push(async()=>{await r.symlinkPromise(Xb(r.pathUtils,await n.readlinkPromise(c)),s)}),!0}var dd,zGe,SU=Ze(()=>{el();dd=new Date(456789e3*1e3),zGe=dd.getTime()});function ex(t,e,r,s){let a=()=>{let n=r.shift();if(typeof n>"u")return null;let c=t.pathUtils.join(e,n);return Object.assign(t.statSync(c),{name:n,path:void 0})};return new L2(e,a,s)}var L2,JX=Ze(()=>{zb();L2=class{constructor(e,r,s={}){this.path=e;this.nextDirent=r;this.opts=s;this.closed=!1}throwIfClosed(){if(this.closed)throw mU()}async*[Symbol.asyncIterator](){try{let e;for(;(e=await this.read())!==null;)yield e}finally{await this.close()}}read(e){let r=this.readSync();return typeof e<"u"?e(null,r):Promise.resolve(r)}readSync(){return this.throwIfClosed(),this.nextDirent()}close(e){return this.closeSync(),typeof e<"u"?e(null):Promise.resolve()}closeSync(){this.throwIfClosed(),this.opts.onClose?.(),this.closed=!0}}});function KX(t,e){if(t!==e)throw new Error(`Invalid StatWatcher status: expected '${e}', got '${t}'`)}var zX,tx,ZX=Ze(()=>{zX=Ie("events");wU();tx=class t extends zX.EventEmitter{constructor(r,s,{bigint:a=!1}={}){super();this.status="ready";this.changeListeners=new Map;this.startTimeout=null;this.fakeFs=r,this.path=s,this.bigint=a,this.lastStats=this.stat()}static create(r,s,a){let n=new t(r,s,a);return n.start(),n}start(){KX(this.status,"ready"),this.status="running",this.startTimeout=setTimeout(()=>{this.startTimeout=null,this.fakeFs.existsSync(this.path)||this.emit("change",this.lastStats,this.lastStats)},3)}stop(){KX(this.status,"running"),this.status="stopped",this.startTimeout!==null&&(clearTimeout(this.startTimeout),this.startTimeout=null),this.emit("stop")}stat(){try{return this.fakeFs.statSync(this.path,{bigint:this.bigint})}catch{let r=this.bigint?new iE:new nE;return Zb(r)}}makeInterval(r){let s=setInterval(()=>{let a=this.stat(),n=this.lastStats;CU(a,n)||(this.lastStats=a,this.emit("change",a,n))},r.interval);return r.persistent?s:s.unref()}registerChangeListener(r,s){this.addListener("change",r),this.changeListeners.set(r,this.makeInterval(s))}unregisterChangeListener(r){this.removeListener("change",r);let s=this.changeListeners.get(r);typeof s<"u"&&clearInterval(s),this.changeListeners.delete(r)}unregisterAllChangeListeners(){for(let r of this.changeListeners.keys())this.unregisterChangeListener(r)}hasChangeListeners(){return this.changeListeners.size>0}ref(){for(let r of this.changeListeners.values())r.ref();return this}unref(){for(let r of this.changeListeners.values())r.unref();return this}}});function sE(t,e,r,s){let a,n,c,f;switch(typeof r){case"function":a=!1,n=!0,c=5007,f=r;break;default:({bigint:a=!1,persistent:n=!0,interval:c=5007}=r),f=s;break}let p=rx.get(t);typeof p>"u"&&rx.set(t,p=new Map);let h=p.get(e);return typeof h>"u"&&(h=tx.create(t,e,{bigint:a}),p.set(e,h)),h.registerChangeListener(f,{persistent:n,interval:c}),h}function md(t,e,r){let s=rx.get(t);if(typeof s>"u")return;let a=s.get(e);typeof a>"u"||(typeof r>"u"?a.unregisterAllChangeListeners():a.unregisterChangeListener(r),a.hasChangeListeners()||(a.stop(),s.delete(e)))}function yd(t){let e=rx.get(t);if(!(typeof e>"u"))for(let r of e.keys())md(t,r)}var rx,DU=Ze(()=>{ZX();rx=new WeakMap});function rqe(t){let e=t.match(/\r?\n/g);if(e===null)return $X.EOL;let r=e.filter(a=>a===`\r `).length,s=e.length-r;return r>s?`\r `:` `}function Ed(t,e){return e.replace(/\r?\n/g,rqe(t))}var XX,$X,mp,Uf,Id=Ze(()=>{XX=Ie("crypto"),$X=Ie("os");SU();el();mp=class{constructor(e){this.pathUtils=e}async*genTraversePromise(e,{stableSort:r=!1}={}){let s=[e];for(;s.length>0;){let a=s.shift();if((await this.lstatPromise(a)).isDirectory()){let c=await this.readdirPromise(a);if(r)for(let f of c.sort())s.push(this.pathUtils.join(a,f));else throw new Error("Not supported")}else yield a}}async checksumFilePromise(e,{algorithm:r="sha512"}={}){let s=await this.openPromise(e,"r");try{let n=Buffer.allocUnsafeSlow(65536),c=(0,XX.createHash)(r),f=0;for(;(f=await this.readPromise(s,n,0,65536))!==0;)c.update(f===65536?n:n.slice(0,f));return c.digest("hex")}finally{await this.closePromise(s)}}async removePromise(e,{recursive:r=!0,maxRetries:s=5}={}){let a;try{a=await this.lstatPromise(e)}catch(n){if(n.code==="ENOENT")return;throw n}if(a.isDirectory()){if(r){let n=await this.readdirPromise(e);await Promise.all(n.map(c=>this.removePromise(this.pathUtils.resolve(e,c))))}for(let n=0;n<=s;n++)try{await this.rmdirPromise(e);break}catch(c){if(c.code!=="EBUSY"&&c.code!=="ENOTEMPTY")throw c;nsetTimeout(f,n*100))}}else await this.unlinkPromise(e)}removeSync(e,{recursive:r=!0}={}){let s;try{s=this.lstatSync(e)}catch(a){if(a.code==="ENOENT")return;throw a}if(s.isDirectory()){if(r)for(let a of this.readdirSync(e))this.removeSync(this.pathUtils.resolve(e,a));this.rmdirSync(e)}else this.unlinkSync(e)}async mkdirpPromise(e,{chmod:r,utimes:s}={}){if(e=this.resolve(e),e===this.pathUtils.dirname(e))return;let a=e.split(this.pathUtils.sep),n;for(let c=2;c<=a.length;++c){let f=a.slice(0,c).join(this.pathUtils.sep);if(!this.existsSync(f)){try{await this.mkdirPromise(f)}catch(p){if(p.code==="EEXIST")continue;throw p}if(n??=f,r!=null&&await this.chmodPromise(f,r),s!=null)await this.utimesPromise(f,s[0],s[1]);else{let p=await this.statPromise(this.pathUtils.dirname(f));await this.utimesPromise(f,p.atime,p.mtime)}}}return n}mkdirpSync(e,{chmod:r,utimes:s}={}){if(e=this.resolve(e),e===this.pathUtils.dirname(e))return;let a=e.split(this.pathUtils.sep),n;for(let c=2;c<=a.length;++c){let f=a.slice(0,c).join(this.pathUtils.sep);if(!this.existsSync(f)){try{this.mkdirSync(f)}catch(p){if(p.code==="EEXIST")continue;throw p}if(n??=f,r!=null&&this.chmodSync(f,r),s!=null)this.utimesSync(f,s[0],s[1]);else{let p=this.statSync(this.pathUtils.dirname(f));this.utimesSync(f,p.atime,p.mtime)}}}return n}async copyPromise(e,r,{baseFs:s=this,overwrite:a=!0,stableSort:n=!1,stableTime:c=!1,linkStrategy:f=null}={}){return await YX(this,e,s,r,{overwrite:a,stableSort:n,stableTime:c,linkStrategy:f})}copySync(e,r,{baseFs:s=this,overwrite:a=!0}={}){let n=s.lstatSync(r),c=this.existsSync(e);if(n.isDirectory()){this.mkdirpSync(e);let p=s.readdirSync(r);for(let h of p)this.copySync(this.pathUtils.join(e,h),s.pathUtils.join(r,h),{baseFs:s,overwrite:a})}else if(n.isFile()){if(!c||a){c&&this.removeSync(e);let p=s.readFileSync(r);this.writeFileSync(e,p)}}else if(n.isSymbolicLink()){if(!c||a){c&&this.removeSync(e);let p=s.readlinkSync(r);this.symlinkSync(Xb(this.pathUtils,p),e)}}else throw new Error(`Unsupported file type (file: ${r}, mode: 0o${n.mode.toString(8).padStart(6,"0")})`);let f=n.mode&511;this.chmodSync(e,f)}async changeFilePromise(e,r,s={}){return Buffer.isBuffer(r)?this.changeFileBufferPromise(e,r,s):this.changeFileTextPromise(e,r,s)}async changeFileBufferPromise(e,r,{mode:s}={}){let a=Buffer.alloc(0);try{a=await this.readFilePromise(e)}catch{}Buffer.compare(a,r)!==0&&await this.writeFilePromise(e,r,{mode:s})}async changeFileTextPromise(e,r,{automaticNewlines:s,mode:a}={}){let n="";try{n=await this.readFilePromise(e,"utf8")}catch{}let c=s?Ed(n,r):r;n!==c&&await this.writeFilePromise(e,c,{mode:a})}changeFileSync(e,r,s={}){return Buffer.isBuffer(r)?this.changeFileBufferSync(e,r,s):this.changeFileTextSync(e,r,s)}changeFileBufferSync(e,r,{mode:s}={}){let a=Buffer.alloc(0);try{a=this.readFileSync(e)}catch{}Buffer.compare(a,r)!==0&&this.writeFileSync(e,r,{mode:s})}changeFileTextSync(e,r,{automaticNewlines:s=!1,mode:a}={}){let n="";try{n=this.readFileSync(e,"utf8")}catch{}let c=s?Ed(n,r):r;n!==c&&this.writeFileSync(e,c,{mode:a})}async movePromise(e,r){try{await this.renamePromise(e,r)}catch(s){if(s.code==="EXDEV")await this.copyPromise(r,e),await this.removePromise(e);else throw s}}moveSync(e,r){try{this.renameSync(e,r)}catch(s){if(s.code==="EXDEV")this.copySync(r,e),this.removeSync(e);else throw s}}async lockPromise(e,r){let s=`${e}.flock`,a=1e3/60,n=Date.now(),c=null,f=async()=>{let p;try{[p]=await this.readJsonPromise(s)}catch{return Date.now()-n<500}try{return process.kill(p,0),!0}catch{return!1}};for(;c===null;)try{c=await this.openPromise(s,"wx")}catch(p){if(p.code==="EEXIST"){if(!await f())try{await this.unlinkPromise(s);continue}catch{}if(Date.now()-n<60*1e3)await new Promise(h=>setTimeout(h,a));else throw new Error(`Couldn't acquire a lock in a reasonable time (via ${s})`)}else throw p}await this.writePromise(c,JSON.stringify([process.pid]));try{return await r()}finally{try{await this.closePromise(c),await this.unlinkPromise(s)}catch{}}}async readJsonPromise(e){let r=await this.readFilePromise(e,"utf8");try{return JSON.parse(r)}catch(s){throw s.message+=` (in ${e})`,s}}readJsonSync(e){let r=this.readFileSync(e,"utf8");try{return JSON.parse(r)}catch(s){throw s.message+=` (in ${e})`,s}}async writeJsonPromise(e,r,{compact:s=!1}={}){let a=s?0:2;return await this.writeFilePromise(e,`${JSON.stringify(r,null,a)} `)}writeJsonSync(e,r,{compact:s=!1}={}){let a=s?0:2;return this.writeFileSync(e,`${JSON.stringify(r,null,a)} `)}async preserveTimePromise(e,r){let s=await this.lstatPromise(e),a=await r();typeof a<"u"&&(e=a),await this.lutimesPromise(e,s.atime,s.mtime)}async preserveTimeSync(e,r){let s=this.lstatSync(e),a=r();typeof a<"u"&&(e=a),this.lutimesSync(e,s.atime,s.mtime)}},Uf=class extends mp{constructor(){super(J)}}});var _s,yp=Ze(()=>{Id();_s=class extends mp{getExtractHint(e){return this.baseFs.getExtractHint(e)}resolve(e){return this.mapFromBase(this.baseFs.resolve(this.mapToBase(e)))}getRealPath(){return this.mapFromBase(this.baseFs.getRealPath())}async openPromise(e,r,s){return this.baseFs.openPromise(this.mapToBase(e),r,s)}openSync(e,r,s){return this.baseFs.openSync(this.mapToBase(e),r,s)}async opendirPromise(e,r){return Object.assign(await this.baseFs.opendirPromise(this.mapToBase(e),r),{path:e})}opendirSync(e,r){return Object.assign(this.baseFs.opendirSync(this.mapToBase(e),r),{path:e})}async readPromise(e,r,s,a,n){return await this.baseFs.readPromise(e,r,s,a,n)}readSync(e,r,s,a,n){return this.baseFs.readSync(e,r,s,a,n)}async writePromise(e,r,s,a,n){return typeof r=="string"?await this.baseFs.writePromise(e,r,s):await this.baseFs.writePromise(e,r,s,a,n)}writeSync(e,r,s,a,n){return typeof r=="string"?this.baseFs.writeSync(e,r,s):this.baseFs.writeSync(e,r,s,a,n)}async closePromise(e){return this.baseFs.closePromise(e)}closeSync(e){this.baseFs.closeSync(e)}createReadStream(e,r){return this.baseFs.createReadStream(e!==null?this.mapToBase(e):e,r)}createWriteStream(e,r){return this.baseFs.createWriteStream(e!==null?this.mapToBase(e):e,r)}async realpathPromise(e){return this.mapFromBase(await this.baseFs.realpathPromise(this.mapToBase(e)))}realpathSync(e){return this.mapFromBase(this.baseFs.realpathSync(this.mapToBase(e)))}async existsPromise(e){return this.baseFs.existsPromise(this.mapToBase(e))}existsSync(e){return this.baseFs.existsSync(this.mapToBase(e))}accessSync(e,r){return this.baseFs.accessSync(this.mapToBase(e),r)}async accessPromise(e,r){return this.baseFs.accessPromise(this.mapToBase(e),r)}async statPromise(e,r){return this.baseFs.statPromise(this.mapToBase(e),r)}statSync(e,r){return this.baseFs.statSync(this.mapToBase(e),r)}async fstatPromise(e,r){return this.baseFs.fstatPromise(e,r)}fstatSync(e,r){return this.baseFs.fstatSync(e,r)}lstatPromise(e,r){return this.baseFs.lstatPromise(this.mapToBase(e),r)}lstatSync(e,r){return this.baseFs.lstatSync(this.mapToBase(e),r)}async fchmodPromise(e,r){return this.baseFs.fchmodPromise(e,r)}fchmodSync(e,r){return this.baseFs.fchmodSync(e,r)}async chmodPromise(e,r){return this.baseFs.chmodPromise(this.mapToBase(e),r)}chmodSync(e,r){return this.baseFs.chmodSync(this.mapToBase(e),r)}async fchownPromise(e,r,s){return this.baseFs.fchownPromise(e,r,s)}fchownSync(e,r,s){return this.baseFs.fchownSync(e,r,s)}async chownPromise(e,r,s){return this.baseFs.chownPromise(this.mapToBase(e),r,s)}chownSync(e,r,s){return this.baseFs.chownSync(this.mapToBase(e),r,s)}async renamePromise(e,r){return this.baseFs.renamePromise(this.mapToBase(e),this.mapToBase(r))}renameSync(e,r){return this.baseFs.renameSync(this.mapToBase(e),this.mapToBase(r))}async copyFilePromise(e,r,s=0){return this.baseFs.copyFilePromise(this.mapToBase(e),this.mapToBase(r),s)}copyFileSync(e,r,s=0){return this.baseFs.copyFileSync(this.mapToBase(e),this.mapToBase(r),s)}async appendFilePromise(e,r,s){return this.baseFs.appendFilePromise(this.fsMapToBase(e),r,s)}appendFileSync(e,r,s){return this.baseFs.appendFileSync(this.fsMapToBase(e),r,s)}async writeFilePromise(e,r,s){return this.baseFs.writeFilePromise(this.fsMapToBase(e),r,s)}writeFileSync(e,r,s){return this.baseFs.writeFileSync(this.fsMapToBase(e),r,s)}async unlinkPromise(e){return this.baseFs.unlinkPromise(this.mapToBase(e))}unlinkSync(e){return this.baseFs.unlinkSync(this.mapToBase(e))}async utimesPromise(e,r,s){return this.baseFs.utimesPromise(this.mapToBase(e),r,s)}utimesSync(e,r,s){return this.baseFs.utimesSync(this.mapToBase(e),r,s)}async lutimesPromise(e,r,s){return this.baseFs.lutimesPromise(this.mapToBase(e),r,s)}lutimesSync(e,r,s){return this.baseFs.lutimesSync(this.mapToBase(e),r,s)}async mkdirPromise(e,r){return this.baseFs.mkdirPromise(this.mapToBase(e),r)}mkdirSync(e,r){return this.baseFs.mkdirSync(this.mapToBase(e),r)}async rmdirPromise(e,r){return this.baseFs.rmdirPromise(this.mapToBase(e),r)}rmdirSync(e,r){return this.baseFs.rmdirSync(this.mapToBase(e),r)}async rmPromise(e,r){return this.baseFs.rmPromise(this.mapToBase(e),r)}rmSync(e,r){return this.baseFs.rmSync(this.mapToBase(e),r)}async linkPromise(e,r){return this.baseFs.linkPromise(this.mapToBase(e),this.mapToBase(r))}linkSync(e,r){return this.baseFs.linkSync(this.mapToBase(e),this.mapToBase(r))}async symlinkPromise(e,r,s){let a=this.mapToBase(r);if(this.pathUtils.isAbsolute(e))return this.baseFs.symlinkPromise(this.mapToBase(e),a,s);let n=this.mapToBase(this.pathUtils.join(this.pathUtils.dirname(r),e)),c=this.baseFs.pathUtils.relative(this.baseFs.pathUtils.dirname(a),n);return this.baseFs.symlinkPromise(c,a,s)}symlinkSync(e,r,s){let a=this.mapToBase(r);if(this.pathUtils.isAbsolute(e))return this.baseFs.symlinkSync(this.mapToBase(e),a,s);let n=this.mapToBase(this.pathUtils.join(this.pathUtils.dirname(r),e)),c=this.baseFs.pathUtils.relative(this.baseFs.pathUtils.dirname(a),n);return this.baseFs.symlinkSync(c,a,s)}async readFilePromise(e,r){return this.baseFs.readFilePromise(this.fsMapToBase(e),r)}readFileSync(e,r){return this.baseFs.readFileSync(this.fsMapToBase(e),r)}readdirPromise(e,r){return this.baseFs.readdirPromise(this.mapToBase(e),r)}readdirSync(e,r){return this.baseFs.readdirSync(this.mapToBase(e),r)}async readlinkPromise(e){return this.mapFromBase(await this.baseFs.readlinkPromise(this.mapToBase(e)))}readlinkSync(e){return this.mapFromBase(this.baseFs.readlinkSync(this.mapToBase(e)))}async truncatePromise(e,r){return this.baseFs.truncatePromise(this.mapToBase(e),r)}truncateSync(e,r){return this.baseFs.truncateSync(this.mapToBase(e),r)}async ftruncatePromise(e,r){return this.baseFs.ftruncatePromise(e,r)}ftruncateSync(e,r){return this.baseFs.ftruncateSync(e,r)}watch(e,r,s){return this.baseFs.watch(this.mapToBase(e),r,s)}watchFile(e,r,s){return this.baseFs.watchFile(this.mapToBase(e),r,s)}unwatchFile(e,r){return this.baseFs.unwatchFile(this.mapToBase(e),r)}fsMapToBase(e){return typeof e=="number"?e:this.mapToBase(e)}}});var _f,e$=Ze(()=>{yp();_f=class extends _s{constructor(e,{baseFs:r,pathUtils:s}){super(s),this.target=e,this.baseFs=r}getRealPath(){return this.target}getBaseFs(){return this.baseFs}mapFromBase(e){return e}mapToBase(e){return e}}});function t$(t){let e=t;return typeof t.path=="string"&&(e.path=fe.toPortablePath(t.path)),e}var r$,Yn,Cd=Ze(()=>{r$=ut(Ie("fs"));Id();el();Yn=class extends Uf{constructor(e=r$.default){super(),this.realFs=e}getExtractHint(){return!1}getRealPath(){return vt.root}resolve(e){return J.resolve(e)}async openPromise(e,r,s){return await new Promise((a,n)=>{this.realFs.open(fe.fromPortablePath(e),r,s,this.makeCallback(a,n))})}openSync(e,r,s){return this.realFs.openSync(fe.fromPortablePath(e),r,s)}async opendirPromise(e,r){return await new Promise((s,a)=>{typeof r<"u"?this.realFs.opendir(fe.fromPortablePath(e),r,this.makeCallback(s,a)):this.realFs.opendir(fe.fromPortablePath(e),this.makeCallback(s,a))}).then(s=>{let a=s;return Object.defineProperty(a,"path",{value:e,configurable:!0,writable:!0}),a})}opendirSync(e,r){let a=typeof r<"u"?this.realFs.opendirSync(fe.fromPortablePath(e),r):this.realFs.opendirSync(fe.fromPortablePath(e));return Object.defineProperty(a,"path",{value:e,configurable:!0,writable:!0}),a}async readPromise(e,r,s=0,a=0,n=-1){return await new Promise((c,f)=>{this.realFs.read(e,r,s,a,n,(p,h)=>{p?f(p):c(h)})})}readSync(e,r,s,a,n){return this.realFs.readSync(e,r,s,a,n)}async writePromise(e,r,s,a,n){return await new Promise((c,f)=>typeof r=="string"?this.realFs.write(e,r,s,this.makeCallback(c,f)):this.realFs.write(e,r,s,a,n,this.makeCallback(c,f)))}writeSync(e,r,s,a,n){return typeof r=="string"?this.realFs.writeSync(e,r,s):this.realFs.writeSync(e,r,s,a,n)}async closePromise(e){await new Promise((r,s)=>{this.realFs.close(e,this.makeCallback(r,s))})}closeSync(e){this.realFs.closeSync(e)}createReadStream(e,r){let s=e!==null?fe.fromPortablePath(e):e;return this.realFs.createReadStream(s,r)}createWriteStream(e,r){let s=e!==null?fe.fromPortablePath(e):e;return this.realFs.createWriteStream(s,r)}async realpathPromise(e){return await new Promise((r,s)=>{this.realFs.realpath(fe.fromPortablePath(e),{},this.makeCallback(r,s))}).then(r=>fe.toPortablePath(r))}realpathSync(e){return fe.toPortablePath(this.realFs.realpathSync(fe.fromPortablePath(e),{}))}async existsPromise(e){return await new Promise(r=>{this.realFs.exists(fe.fromPortablePath(e),r)})}accessSync(e,r){return this.realFs.accessSync(fe.fromPortablePath(e),r)}async accessPromise(e,r){return await new Promise((s,a)=>{this.realFs.access(fe.fromPortablePath(e),r,this.makeCallback(s,a))})}existsSync(e){return this.realFs.existsSync(fe.fromPortablePath(e))}async statPromise(e,r){return await new Promise((s,a)=>{r?this.realFs.stat(fe.fromPortablePath(e),r,this.makeCallback(s,a)):this.realFs.stat(fe.fromPortablePath(e),this.makeCallback(s,a))})}statSync(e,r){return r?this.realFs.statSync(fe.fromPortablePath(e),r):this.realFs.statSync(fe.fromPortablePath(e))}async fstatPromise(e,r){return await new Promise((s,a)=>{r?this.realFs.fstat(e,r,this.makeCallback(s,a)):this.realFs.fstat(e,this.makeCallback(s,a))})}fstatSync(e,r){return r?this.realFs.fstatSync(e,r):this.realFs.fstatSync(e)}async lstatPromise(e,r){return await new Promise((s,a)=>{r?this.realFs.lstat(fe.fromPortablePath(e),r,this.makeCallback(s,a)):this.realFs.lstat(fe.fromPortablePath(e),this.makeCallback(s,a))})}lstatSync(e,r){return r?this.realFs.lstatSync(fe.fromPortablePath(e),r):this.realFs.lstatSync(fe.fromPortablePath(e))}async fchmodPromise(e,r){return await new Promise((s,a)=>{this.realFs.fchmod(e,r,this.makeCallback(s,a))})}fchmodSync(e,r){return this.realFs.fchmodSync(e,r)}async chmodPromise(e,r){return await new Promise((s,a)=>{this.realFs.chmod(fe.fromPortablePath(e),r,this.makeCallback(s,a))})}chmodSync(e,r){return this.realFs.chmodSync(fe.fromPortablePath(e),r)}async fchownPromise(e,r,s){return await new Promise((a,n)=>{this.realFs.fchown(e,r,s,this.makeCallback(a,n))})}fchownSync(e,r,s){return this.realFs.fchownSync(e,r,s)}async chownPromise(e,r,s){return await new Promise((a,n)=>{this.realFs.chown(fe.fromPortablePath(e),r,s,this.makeCallback(a,n))})}chownSync(e,r,s){return this.realFs.chownSync(fe.fromPortablePath(e),r,s)}async renamePromise(e,r){return await new Promise((s,a)=>{this.realFs.rename(fe.fromPortablePath(e),fe.fromPortablePath(r),this.makeCallback(s,a))})}renameSync(e,r){return this.realFs.renameSync(fe.fromPortablePath(e),fe.fromPortablePath(r))}async copyFilePromise(e,r,s=0){return await new Promise((a,n)=>{this.realFs.copyFile(fe.fromPortablePath(e),fe.fromPortablePath(r),s,this.makeCallback(a,n))})}copyFileSync(e,r,s=0){return this.realFs.copyFileSync(fe.fromPortablePath(e),fe.fromPortablePath(r),s)}async appendFilePromise(e,r,s){return await new Promise((a,n)=>{let c=typeof e=="string"?fe.fromPortablePath(e):e;s?this.realFs.appendFile(c,r,s,this.makeCallback(a,n)):this.realFs.appendFile(c,r,this.makeCallback(a,n))})}appendFileSync(e,r,s){let a=typeof e=="string"?fe.fromPortablePath(e):e;s?this.realFs.appendFileSync(a,r,s):this.realFs.appendFileSync(a,r)}async writeFilePromise(e,r,s){return await new Promise((a,n)=>{let c=typeof e=="string"?fe.fromPortablePath(e):e;s?this.realFs.writeFile(c,r,s,this.makeCallback(a,n)):this.realFs.writeFile(c,r,this.makeCallback(a,n))})}writeFileSync(e,r,s){let a=typeof e=="string"?fe.fromPortablePath(e):e;s?this.realFs.writeFileSync(a,r,s):this.realFs.writeFileSync(a,r)}async unlinkPromise(e){return await new Promise((r,s)=>{this.realFs.unlink(fe.fromPortablePath(e),this.makeCallback(r,s))})}unlinkSync(e){return this.realFs.unlinkSync(fe.fromPortablePath(e))}async utimesPromise(e,r,s){return await new Promise((a,n)=>{this.realFs.utimes(fe.fromPortablePath(e),r,s,this.makeCallback(a,n))})}utimesSync(e,r,s){this.realFs.utimesSync(fe.fromPortablePath(e),r,s)}async lutimesPromise(e,r,s){return await new Promise((a,n)=>{this.realFs.lutimes(fe.fromPortablePath(e),r,s,this.makeCallback(a,n))})}lutimesSync(e,r,s){this.realFs.lutimesSync(fe.fromPortablePath(e),r,s)}async mkdirPromise(e,r){return await new Promise((s,a)=>{this.realFs.mkdir(fe.fromPortablePath(e),r,this.makeCallback(s,a))})}mkdirSync(e,r){return this.realFs.mkdirSync(fe.fromPortablePath(e),r)}async rmdirPromise(e,r){return await new Promise((s,a)=>{r?this.realFs.rmdir(fe.fromPortablePath(e),r,this.makeCallback(s,a)):this.realFs.rmdir(fe.fromPortablePath(e),this.makeCallback(s,a))})}rmdirSync(e,r){return this.realFs.rmdirSync(fe.fromPortablePath(e),r)}async rmPromise(e,r){return await new Promise((s,a)=>{r?this.realFs.rm(fe.fromPortablePath(e),r,this.makeCallback(s,a)):this.realFs.rm(fe.fromPortablePath(e),this.makeCallback(s,a))})}rmSync(e,r){return this.realFs.rmSync(fe.fromPortablePath(e),r)}async linkPromise(e,r){return await new Promise((s,a)=>{this.realFs.link(fe.fromPortablePath(e),fe.fromPortablePath(r),this.makeCallback(s,a))})}linkSync(e,r){return this.realFs.linkSync(fe.fromPortablePath(e),fe.fromPortablePath(r))}async symlinkPromise(e,r,s){return await new Promise((a,n)=>{this.realFs.symlink(fe.fromPortablePath(e.replace(/\/+$/,"")),fe.fromPortablePath(r),s,this.makeCallback(a,n))})}symlinkSync(e,r,s){return this.realFs.symlinkSync(fe.fromPortablePath(e.replace(/\/+$/,"")),fe.fromPortablePath(r),s)}async readFilePromise(e,r){return await new Promise((s,a)=>{let n=typeof e=="string"?fe.fromPortablePath(e):e;this.realFs.readFile(n,r,this.makeCallback(s,a))})}readFileSync(e,r){let s=typeof e=="string"?fe.fromPortablePath(e):e;return this.realFs.readFileSync(s,r)}async readdirPromise(e,r){return await new Promise((s,a)=>{r?r.recursive&&process.platform==="win32"?r.withFileTypes?this.realFs.readdir(fe.fromPortablePath(e),r,this.makeCallback(n=>s(n.map(t$)),a)):this.realFs.readdir(fe.fromPortablePath(e),r,this.makeCallback(n=>s(n.map(fe.toPortablePath)),a)):this.realFs.readdir(fe.fromPortablePath(e),r,this.makeCallback(s,a)):this.realFs.readdir(fe.fromPortablePath(e),this.makeCallback(s,a))})}readdirSync(e,r){return r?r.recursive&&process.platform==="win32"?r.withFileTypes?this.realFs.readdirSync(fe.fromPortablePath(e),r).map(t$):this.realFs.readdirSync(fe.fromPortablePath(e),r).map(fe.toPortablePath):this.realFs.readdirSync(fe.fromPortablePath(e),r):this.realFs.readdirSync(fe.fromPortablePath(e))}async readlinkPromise(e){return await new Promise((r,s)=>{this.realFs.readlink(fe.fromPortablePath(e),this.makeCallback(r,s))}).then(r=>fe.toPortablePath(r))}readlinkSync(e){return fe.toPortablePath(this.realFs.readlinkSync(fe.fromPortablePath(e)))}async truncatePromise(e,r){return await new Promise((s,a)=>{this.realFs.truncate(fe.fromPortablePath(e),r,this.makeCallback(s,a))})}truncateSync(e,r){return this.realFs.truncateSync(fe.fromPortablePath(e),r)}async ftruncatePromise(e,r){return await new Promise((s,a)=>{this.realFs.ftruncate(e,r,this.makeCallback(s,a))})}ftruncateSync(e,r){return this.realFs.ftruncateSync(e,r)}watch(e,r,s){return this.realFs.watch(fe.fromPortablePath(e),r,s)}watchFile(e,r,s){return this.realFs.watchFile(fe.fromPortablePath(e),r,s)}unwatchFile(e,r){return this.realFs.unwatchFile(fe.fromPortablePath(e),r)}makeCallback(e,r){return(s,a)=>{s?r(s):e(a)}}}});var Sn,n$=Ze(()=>{Cd();yp();el();Sn=class extends _s{constructor(e,{baseFs:r=new Yn}={}){super(J),this.target=this.pathUtils.normalize(e),this.baseFs=r}getRealPath(){return this.pathUtils.resolve(this.baseFs.getRealPath(),this.target)}resolve(e){return this.pathUtils.isAbsolute(e)?J.normalize(e):this.baseFs.resolve(J.join(this.target,e))}mapFromBase(e){return e}mapToBase(e){return this.pathUtils.isAbsolute(e)?e:this.pathUtils.join(this.target,e)}}});var i$,Hf,s$=Ze(()=>{Cd();yp();el();i$=vt.root,Hf=class extends _s{constructor(e,{baseFs:r=new Yn}={}){super(J),this.target=this.pathUtils.resolve(vt.root,e),this.baseFs=r}getRealPath(){return this.pathUtils.resolve(this.baseFs.getRealPath(),this.pathUtils.relative(vt.root,this.target))}getTarget(){return this.target}getBaseFs(){return this.baseFs}mapToBase(e){let r=this.pathUtils.normalize(e);if(this.pathUtils.isAbsolute(e))return this.pathUtils.resolve(this.target,this.pathUtils.relative(i$,e));if(r.match(/^\.\.\/?/))throw new Error(`Resolving this path (${e}) would escape the jail`);return this.pathUtils.resolve(this.target,e)}mapFromBase(e){return this.pathUtils.resolve(i$,this.pathUtils.relative(this.target,e))}}});var oE,o$=Ze(()=>{yp();oE=class extends _s{constructor(r,s){super(s);this.instance=null;this.factory=r}get baseFs(){return this.instance||(this.instance=this.factory()),this.instance}set baseFs(r){this.instance=r}mapFromBase(r){return r}mapToBase(r){return r}}});var wd,tl,e0,a$=Ze(()=>{wd=Ie("fs");Id();Cd();DU();zb();el();tl=4278190080,e0=class extends Uf{constructor({baseFs:r=new Yn,filter:s=null,magicByte:a=42,maxOpenFiles:n=1/0,useCache:c=!0,maxAge:f=5e3,typeCheck:p=wd.constants.S_IFREG,getMountPoint:h,factoryPromise:E,factorySync:C}){if(Math.floor(a)!==a||!(a>1&&a<=127))throw new Error("The magic byte must be set to a round value between 1 and 127 included");super();this.fdMap=new Map;this.nextFd=3;this.isMount=new Set;this.notMount=new Set;this.realPaths=new Map;this.limitOpenFilesTimeout=null;this.baseFs=r,this.mountInstances=c?new Map:null,this.factoryPromise=E,this.factorySync=C,this.filter=s,this.getMountPoint=h,this.magic=a<<24,this.maxAge=f,this.maxOpenFiles=n,this.typeCheck=p}getExtractHint(r){return this.baseFs.getExtractHint(r)}getRealPath(){return this.baseFs.getRealPath()}saveAndClose(){if(yd(this),this.mountInstances)for(let[r,{childFs:s}]of this.mountInstances.entries())s.saveAndClose?.(),this.mountInstances.delete(r)}discardAndClose(){if(yd(this),this.mountInstances)for(let[r,{childFs:s}]of this.mountInstances.entries())s.discardAndClose?.(),this.mountInstances.delete(r)}resolve(r){return this.baseFs.resolve(r)}remapFd(r,s){let a=this.nextFd++|this.magic;return this.fdMap.set(a,[r,s]),a}async openPromise(r,s,a){return await this.makeCallPromise(r,async()=>await this.baseFs.openPromise(r,s,a),async(n,{subPath:c})=>this.remapFd(n,await n.openPromise(c,s,a)))}openSync(r,s,a){return this.makeCallSync(r,()=>this.baseFs.openSync(r,s,a),(n,{subPath:c})=>this.remapFd(n,n.openSync(c,s,a)))}async opendirPromise(r,s){return await this.makeCallPromise(r,async()=>await this.baseFs.opendirPromise(r,s),async(a,{subPath:n})=>await a.opendirPromise(n,s),{requireSubpath:!1})}opendirSync(r,s){return this.makeCallSync(r,()=>this.baseFs.opendirSync(r,s),(a,{subPath:n})=>a.opendirSync(n,s),{requireSubpath:!1})}async readPromise(r,s,a,n,c){if((r&tl)!==this.magic)return await this.baseFs.readPromise(r,s,a,n,c);let f=this.fdMap.get(r);if(typeof f>"u")throw Mo("read");let[p,h]=f;return await p.readPromise(h,s,a,n,c)}readSync(r,s,a,n,c){if((r&tl)!==this.magic)return this.baseFs.readSync(r,s,a,n,c);let f=this.fdMap.get(r);if(typeof f>"u")throw Mo("readSync");let[p,h]=f;return p.readSync(h,s,a,n,c)}async writePromise(r,s,a,n,c){if((r&tl)!==this.magic)return typeof s=="string"?await this.baseFs.writePromise(r,s,a):await this.baseFs.writePromise(r,s,a,n,c);let f=this.fdMap.get(r);if(typeof f>"u")throw Mo("write");let[p,h]=f;return typeof s=="string"?await p.writePromise(h,s,a):await p.writePromise(h,s,a,n,c)}writeSync(r,s,a,n,c){if((r&tl)!==this.magic)return typeof s=="string"?this.baseFs.writeSync(r,s,a):this.baseFs.writeSync(r,s,a,n,c);let f=this.fdMap.get(r);if(typeof f>"u")throw Mo("writeSync");let[p,h]=f;return typeof s=="string"?p.writeSync(h,s,a):p.writeSync(h,s,a,n,c)}async closePromise(r){if((r&tl)!==this.magic)return await this.baseFs.closePromise(r);let s=this.fdMap.get(r);if(typeof s>"u")throw Mo("close");this.fdMap.delete(r);let[a,n]=s;return await a.closePromise(n)}closeSync(r){if((r&tl)!==this.magic)return this.baseFs.closeSync(r);let s=this.fdMap.get(r);if(typeof s>"u")throw Mo("closeSync");this.fdMap.delete(r);let[a,n]=s;return a.closeSync(n)}createReadStream(r,s){return r===null?this.baseFs.createReadStream(r,s):this.makeCallSync(r,()=>this.baseFs.createReadStream(r,s),(a,{archivePath:n,subPath:c})=>{let f=a.createReadStream(c,s);return f.path=fe.fromPortablePath(this.pathUtils.join(n,c)),f})}createWriteStream(r,s){return r===null?this.baseFs.createWriteStream(r,s):this.makeCallSync(r,()=>this.baseFs.createWriteStream(r,s),(a,{subPath:n})=>a.createWriteStream(n,s))}async realpathPromise(r){return await this.makeCallPromise(r,async()=>await this.baseFs.realpathPromise(r),async(s,{archivePath:a,subPath:n})=>{let c=this.realPaths.get(a);return typeof c>"u"&&(c=await this.baseFs.realpathPromise(a),this.realPaths.set(a,c)),this.pathUtils.join(c,this.pathUtils.relative(vt.root,await s.realpathPromise(n)))})}realpathSync(r){return this.makeCallSync(r,()=>this.baseFs.realpathSync(r),(s,{archivePath:a,subPath:n})=>{let c=this.realPaths.get(a);return typeof c>"u"&&(c=this.baseFs.realpathSync(a),this.realPaths.set(a,c)),this.pathUtils.join(c,this.pathUtils.relative(vt.root,s.realpathSync(n)))})}async existsPromise(r){return await this.makeCallPromise(r,async()=>await this.baseFs.existsPromise(r),async(s,{subPath:a})=>await s.existsPromise(a))}existsSync(r){return this.makeCallSync(r,()=>this.baseFs.existsSync(r),(s,{subPath:a})=>s.existsSync(a))}async accessPromise(r,s){return await this.makeCallPromise(r,async()=>await this.baseFs.accessPromise(r,s),async(a,{subPath:n})=>await a.accessPromise(n,s))}accessSync(r,s){return this.makeCallSync(r,()=>this.baseFs.accessSync(r,s),(a,{subPath:n})=>a.accessSync(n,s))}async statPromise(r,s){return await this.makeCallPromise(r,async()=>await this.baseFs.statPromise(r,s),async(a,{subPath:n})=>await a.statPromise(n,s))}statSync(r,s){return this.makeCallSync(r,()=>this.baseFs.statSync(r,s),(a,{subPath:n})=>a.statSync(n,s))}async fstatPromise(r,s){if((r&tl)!==this.magic)return this.baseFs.fstatPromise(r,s);let a=this.fdMap.get(r);if(typeof a>"u")throw Mo("fstat");let[n,c]=a;return n.fstatPromise(c,s)}fstatSync(r,s){if((r&tl)!==this.magic)return this.baseFs.fstatSync(r,s);let a=this.fdMap.get(r);if(typeof a>"u")throw Mo("fstatSync");let[n,c]=a;return n.fstatSync(c,s)}async lstatPromise(r,s){return await this.makeCallPromise(r,async()=>await this.baseFs.lstatPromise(r,s),async(a,{subPath:n})=>await a.lstatPromise(n,s))}lstatSync(r,s){return this.makeCallSync(r,()=>this.baseFs.lstatSync(r,s),(a,{subPath:n})=>a.lstatSync(n,s))}async fchmodPromise(r,s){if((r&tl)!==this.magic)return this.baseFs.fchmodPromise(r,s);let a=this.fdMap.get(r);if(typeof a>"u")throw Mo("fchmod");let[n,c]=a;return n.fchmodPromise(c,s)}fchmodSync(r,s){if((r&tl)!==this.magic)return this.baseFs.fchmodSync(r,s);let a=this.fdMap.get(r);if(typeof a>"u")throw Mo("fchmodSync");let[n,c]=a;return n.fchmodSync(c,s)}async chmodPromise(r,s){return await this.makeCallPromise(r,async()=>await this.baseFs.chmodPromise(r,s),async(a,{subPath:n})=>await a.chmodPromise(n,s))}chmodSync(r,s){return this.makeCallSync(r,()=>this.baseFs.chmodSync(r,s),(a,{subPath:n})=>a.chmodSync(n,s))}async fchownPromise(r,s,a){if((r&tl)!==this.magic)return this.baseFs.fchownPromise(r,s,a);let n=this.fdMap.get(r);if(typeof n>"u")throw Mo("fchown");let[c,f]=n;return c.fchownPromise(f,s,a)}fchownSync(r,s,a){if((r&tl)!==this.magic)return this.baseFs.fchownSync(r,s,a);let n=this.fdMap.get(r);if(typeof n>"u")throw Mo("fchownSync");let[c,f]=n;return c.fchownSync(f,s,a)}async chownPromise(r,s,a){return await this.makeCallPromise(r,async()=>await this.baseFs.chownPromise(r,s,a),async(n,{subPath:c})=>await n.chownPromise(c,s,a))}chownSync(r,s,a){return this.makeCallSync(r,()=>this.baseFs.chownSync(r,s,a),(n,{subPath:c})=>n.chownSync(c,s,a))}async renamePromise(r,s){return await this.makeCallPromise(r,async()=>await this.makeCallPromise(s,async()=>await this.baseFs.renamePromise(r,s),async()=>{throw Object.assign(new Error("EEXDEV: cross-device link not permitted"),{code:"EEXDEV"})}),async(a,{subPath:n})=>await this.makeCallPromise(s,async()=>{throw Object.assign(new Error("EEXDEV: cross-device link not permitted"),{code:"EEXDEV"})},async(c,{subPath:f})=>{if(a!==c)throw Object.assign(new Error("EEXDEV: cross-device link not permitted"),{code:"EEXDEV"});return await a.renamePromise(n,f)}))}renameSync(r,s){return this.makeCallSync(r,()=>this.makeCallSync(s,()=>this.baseFs.renameSync(r,s),()=>{throw Object.assign(new Error("EEXDEV: cross-device link not permitted"),{code:"EEXDEV"})}),(a,{subPath:n})=>this.makeCallSync(s,()=>{throw Object.assign(new Error("EEXDEV: cross-device link not permitted"),{code:"EEXDEV"})},(c,{subPath:f})=>{if(a!==c)throw Object.assign(new Error("EEXDEV: cross-device link not permitted"),{code:"EEXDEV"});return a.renameSync(n,f)}))}async copyFilePromise(r,s,a=0){let n=async(c,f,p,h)=>{if(a&wd.constants.COPYFILE_FICLONE_FORCE)throw Object.assign(new Error(`EXDEV: cross-device clone not permitted, copyfile '${f}' -> ${h}'`),{code:"EXDEV"});if(a&wd.constants.COPYFILE_EXCL&&await this.existsPromise(f))throw Object.assign(new Error(`EEXIST: file already exists, copyfile '${f}' -> '${h}'`),{code:"EEXIST"});let E;try{E=await c.readFilePromise(f)}catch{throw Object.assign(new Error(`EINVAL: invalid argument, copyfile '${f}' -> '${h}'`),{code:"EINVAL"})}await p.writeFilePromise(h,E)};return await this.makeCallPromise(r,async()=>await this.makeCallPromise(s,async()=>await this.baseFs.copyFilePromise(r,s,a),async(c,{subPath:f})=>await n(this.baseFs,r,c,f)),async(c,{subPath:f})=>await this.makeCallPromise(s,async()=>await n(c,f,this.baseFs,s),async(p,{subPath:h})=>c!==p?await n(c,f,p,h):await c.copyFilePromise(f,h,a)))}copyFileSync(r,s,a=0){let n=(c,f,p,h)=>{if(a&wd.constants.COPYFILE_FICLONE_FORCE)throw Object.assign(new Error(`EXDEV: cross-device clone not permitted, copyfile '${f}' -> ${h}'`),{code:"EXDEV"});if(a&wd.constants.COPYFILE_EXCL&&this.existsSync(f))throw Object.assign(new Error(`EEXIST: file already exists, copyfile '${f}' -> '${h}'`),{code:"EEXIST"});let E;try{E=c.readFileSync(f)}catch{throw Object.assign(new Error(`EINVAL: invalid argument, copyfile '${f}' -> '${h}'`),{code:"EINVAL"})}p.writeFileSync(h,E)};return this.makeCallSync(r,()=>this.makeCallSync(s,()=>this.baseFs.copyFileSync(r,s,a),(c,{subPath:f})=>n(this.baseFs,r,c,f)),(c,{subPath:f})=>this.makeCallSync(s,()=>n(c,f,this.baseFs,s),(p,{subPath:h})=>c!==p?n(c,f,p,h):c.copyFileSync(f,h,a)))}async appendFilePromise(r,s,a){return await this.makeCallPromise(r,async()=>await this.baseFs.appendFilePromise(r,s,a),async(n,{subPath:c})=>await n.appendFilePromise(c,s,a))}appendFileSync(r,s,a){return this.makeCallSync(r,()=>this.baseFs.appendFileSync(r,s,a),(n,{subPath:c})=>n.appendFileSync(c,s,a))}async writeFilePromise(r,s,a){return await this.makeCallPromise(r,async()=>await this.baseFs.writeFilePromise(r,s,a),async(n,{subPath:c})=>await n.writeFilePromise(c,s,a))}writeFileSync(r,s,a){return this.makeCallSync(r,()=>this.baseFs.writeFileSync(r,s,a),(n,{subPath:c})=>n.writeFileSync(c,s,a))}async unlinkPromise(r){return await this.makeCallPromise(r,async()=>await this.baseFs.unlinkPromise(r),async(s,{subPath:a})=>await s.unlinkPromise(a))}unlinkSync(r){return this.makeCallSync(r,()=>this.baseFs.unlinkSync(r),(s,{subPath:a})=>s.unlinkSync(a))}async utimesPromise(r,s,a){return await this.makeCallPromise(r,async()=>await this.baseFs.utimesPromise(r,s,a),async(n,{subPath:c})=>await n.utimesPromise(c,s,a))}utimesSync(r,s,a){return this.makeCallSync(r,()=>this.baseFs.utimesSync(r,s,a),(n,{subPath:c})=>n.utimesSync(c,s,a))}async lutimesPromise(r,s,a){return await this.makeCallPromise(r,async()=>await this.baseFs.lutimesPromise(r,s,a),async(n,{subPath:c})=>await n.lutimesPromise(c,s,a))}lutimesSync(r,s,a){return this.makeCallSync(r,()=>this.baseFs.lutimesSync(r,s,a),(n,{subPath:c})=>n.lutimesSync(c,s,a))}async mkdirPromise(r,s){return await this.makeCallPromise(r,async()=>await this.baseFs.mkdirPromise(r,s),async(a,{subPath:n})=>await a.mkdirPromise(n,s))}mkdirSync(r,s){return this.makeCallSync(r,()=>this.baseFs.mkdirSync(r,s),(a,{subPath:n})=>a.mkdirSync(n,s))}async rmdirPromise(r,s){return await this.makeCallPromise(r,async()=>await this.baseFs.rmdirPromise(r,s),async(a,{subPath:n})=>await a.rmdirPromise(n,s))}rmdirSync(r,s){return this.makeCallSync(r,()=>this.baseFs.rmdirSync(r,s),(a,{subPath:n})=>a.rmdirSync(n,s))}async rmPromise(r,s){return await this.makeCallPromise(r,async()=>await this.baseFs.rmPromise(r,s),async(a,{subPath:n})=>await a.rmPromise(n,s))}rmSync(r,s){return this.makeCallSync(r,()=>this.baseFs.rmSync(r,s),(a,{subPath:n})=>a.rmSync(n,s))}async linkPromise(r,s){return await this.makeCallPromise(s,async()=>await this.baseFs.linkPromise(r,s),async(a,{subPath:n})=>await a.linkPromise(r,n))}linkSync(r,s){return this.makeCallSync(s,()=>this.baseFs.linkSync(r,s),(a,{subPath:n})=>a.linkSync(r,n))}async symlinkPromise(r,s,a){return await this.makeCallPromise(s,async()=>await this.baseFs.symlinkPromise(r,s,a),async(n,{subPath:c})=>await n.symlinkPromise(r,c))}symlinkSync(r,s,a){return this.makeCallSync(s,()=>this.baseFs.symlinkSync(r,s,a),(n,{subPath:c})=>n.symlinkSync(r,c))}async readFilePromise(r,s){return this.makeCallPromise(r,async()=>await this.baseFs.readFilePromise(r,s),async(a,{subPath:n})=>await a.readFilePromise(n,s))}readFileSync(r,s){return this.makeCallSync(r,()=>this.baseFs.readFileSync(r,s),(a,{subPath:n})=>a.readFileSync(n,s))}async readdirPromise(r,s){return await this.makeCallPromise(r,async()=>await this.baseFs.readdirPromise(r,s),async(a,{subPath:n})=>await a.readdirPromise(n,s),{requireSubpath:!1})}readdirSync(r,s){return this.makeCallSync(r,()=>this.baseFs.readdirSync(r,s),(a,{subPath:n})=>a.readdirSync(n,s),{requireSubpath:!1})}async readlinkPromise(r){return await this.makeCallPromise(r,async()=>await this.baseFs.readlinkPromise(r),async(s,{subPath:a})=>await s.readlinkPromise(a))}readlinkSync(r){return this.makeCallSync(r,()=>this.baseFs.readlinkSync(r),(s,{subPath:a})=>s.readlinkSync(a))}async truncatePromise(r,s){return await this.makeCallPromise(r,async()=>await this.baseFs.truncatePromise(r,s),async(a,{subPath:n})=>await a.truncatePromise(n,s))}truncateSync(r,s){return this.makeCallSync(r,()=>this.baseFs.truncateSync(r,s),(a,{subPath:n})=>a.truncateSync(n,s))}async ftruncatePromise(r,s){if((r&tl)!==this.magic)return this.baseFs.ftruncatePromise(r,s);let a=this.fdMap.get(r);if(typeof a>"u")throw Mo("ftruncate");let[n,c]=a;return n.ftruncatePromise(c,s)}ftruncateSync(r,s){if((r&tl)!==this.magic)return this.baseFs.ftruncateSync(r,s);let a=this.fdMap.get(r);if(typeof a>"u")throw Mo("ftruncateSync");let[n,c]=a;return n.ftruncateSync(c,s)}watch(r,s,a){return this.makeCallSync(r,()=>this.baseFs.watch(r,s,a),(n,{subPath:c})=>n.watch(c,s,a))}watchFile(r,s,a){return this.makeCallSync(r,()=>this.baseFs.watchFile(r,s,a),()=>sE(this,r,s,a))}unwatchFile(r,s){return this.makeCallSync(r,()=>this.baseFs.unwatchFile(r,s),()=>md(this,r,s))}async makeCallPromise(r,s,a,{requireSubpath:n=!0}={}){if(typeof r!="string")return await s();let c=this.resolve(r),f=this.findMount(c);return f?n&&f.subPath==="/"?await s():await this.getMountPromise(f.archivePath,async p=>await a(p,f)):await s()}makeCallSync(r,s,a,{requireSubpath:n=!0}={}){if(typeof r!="string")return s();let c=this.resolve(r),f=this.findMount(c);return!f||n&&f.subPath==="/"?s():this.getMountSync(f.archivePath,p=>a(p,f))}findMount(r){if(this.filter&&!this.filter.test(r))return null;let s="";for(;;){let a=r.substring(s.length),n=this.getMountPoint(a,s);if(!n)return null;if(s=this.pathUtils.join(s,n),!this.isMount.has(s)){if(this.notMount.has(s))continue;try{if(this.typeCheck!==null&&(this.baseFs.statSync(s).mode&wd.constants.S_IFMT)!==this.typeCheck){this.notMount.add(s);continue}}catch{return null}this.isMount.add(s)}return{archivePath:s,subPath:this.pathUtils.join(vt.root,r.substring(s.length))}}}limitOpenFiles(r){if(this.mountInstances===null)return;let s=Date.now(),a=s+this.maxAge,n=r===null?0:this.mountInstances.size-r;for(let[c,{childFs:f,expiresAt:p,refCount:h}]of this.mountInstances.entries())if(!(h!==0||f.hasOpenFileHandles?.())){if(s>=p){f.saveAndClose?.(),this.mountInstances.delete(c),n-=1;continue}else if(r===null||n<=0){a=p;break}f.saveAndClose?.(),this.mountInstances.delete(c),n-=1}this.limitOpenFilesTimeout===null&&(r===null&&this.mountInstances.size>0||r!==null)&&isFinite(a)&&(this.limitOpenFilesTimeout=setTimeout(()=>{this.limitOpenFilesTimeout=null,this.limitOpenFiles(null)},a-s).unref())}async getMountPromise(r,s){if(this.mountInstances){let a=this.mountInstances.get(r);if(!a){let n=await this.factoryPromise(this.baseFs,r);a=this.mountInstances.get(r),a||(a={childFs:n(),expiresAt:0,refCount:0})}this.mountInstances.delete(r),this.limitOpenFiles(this.maxOpenFiles-1),this.mountInstances.set(r,a),a.expiresAt=Date.now()+this.maxAge,a.refCount+=1;try{return await s(a.childFs)}finally{a.refCount-=1}}else{let a=(await this.factoryPromise(this.baseFs,r))();try{return await s(a)}finally{a.saveAndClose?.()}}}getMountSync(r,s){if(this.mountInstances){let a=this.mountInstances.get(r);return a||(a={childFs:this.factorySync(this.baseFs,r),expiresAt:0,refCount:0}),this.mountInstances.delete(r),this.limitOpenFiles(this.maxOpenFiles-1),this.mountInstances.set(r,a),a.expiresAt=Date.now()+this.maxAge,s(a.childFs)}else{let a=this.factorySync(this.baseFs,r);try{return s(a)}finally{a.saveAndClose?.()}}}}});var er,nx,l$=Ze(()=>{Id();el();er=()=>Object.assign(new Error("ENOSYS: unsupported filesystem access"),{code:"ENOSYS"}),nx=class t extends mp{static{this.instance=new t}constructor(){super(J)}getExtractHint(){throw er()}getRealPath(){throw er()}resolve(){throw er()}async openPromise(){throw er()}openSync(){throw er()}async opendirPromise(){throw er()}opendirSync(){throw er()}async readPromise(){throw er()}readSync(){throw er()}async writePromise(){throw er()}writeSync(){throw er()}async closePromise(){throw er()}closeSync(){throw er()}createWriteStream(){throw er()}createReadStream(){throw er()}async realpathPromise(){throw er()}realpathSync(){throw er()}async readdirPromise(){throw er()}readdirSync(){throw er()}async existsPromise(e){throw er()}existsSync(e){throw er()}async accessPromise(){throw er()}accessSync(){throw er()}async statPromise(){throw er()}statSync(){throw er()}async fstatPromise(e){throw er()}fstatSync(e){throw er()}async lstatPromise(e){throw er()}lstatSync(e){throw er()}async fchmodPromise(){throw er()}fchmodSync(){throw er()}async chmodPromise(){throw er()}chmodSync(){throw er()}async fchownPromise(){throw er()}fchownSync(){throw er()}async chownPromise(){throw er()}chownSync(){throw er()}async mkdirPromise(){throw er()}mkdirSync(){throw er()}async rmdirPromise(){throw er()}rmdirSync(){throw er()}async rmPromise(){throw er()}rmSync(){throw er()}async linkPromise(){throw er()}linkSync(){throw er()}async symlinkPromise(){throw er()}symlinkSync(){throw er()}async renamePromise(){throw er()}renameSync(){throw er()}async copyFilePromise(){throw er()}copyFileSync(){throw er()}async appendFilePromise(){throw er()}appendFileSync(){throw er()}async writeFilePromise(){throw er()}writeFileSync(){throw er()}async unlinkPromise(){throw er()}unlinkSync(){throw er()}async utimesPromise(){throw er()}utimesSync(){throw er()}async lutimesPromise(){throw er()}lutimesSync(){throw er()}async readFilePromise(){throw er()}readFileSync(){throw er()}async readlinkPromise(){throw er()}readlinkSync(){throw er()}async truncatePromise(){throw er()}truncateSync(){throw er()}async ftruncatePromise(e,r){throw er()}ftruncateSync(e,r){throw er()}watch(){throw er()}watchFile(){throw er()}unwatchFile(){throw er()}}});var t0,c$=Ze(()=>{yp();el();t0=class extends _s{constructor(e){super(fe),this.baseFs=e}mapFromBase(e){return fe.fromPortablePath(e)}mapToBase(e){return fe.toPortablePath(e)}}});var nqe,PU,iqe,uo,u$=Ze(()=>{Cd();yp();el();nqe=/^[0-9]+$/,PU=/^(\/(?:[^/]+\/)*?(?:\$\$virtual|__virtual__))((?:\/((?:[^/]+-)?[a-f0-9]+)(?:\/([^/]+))?)?((?:\/.*)?))$/,iqe=/^([^/]+-)?[a-f0-9]+$/,uo=class t extends _s{static makeVirtualPath(e,r,s){if(J.basename(e)!=="__virtual__")throw new Error('Assertion failed: Virtual folders must be named "__virtual__"');if(!J.basename(r).match(iqe))throw new Error("Assertion failed: Virtual components must be ended by an hexadecimal hash");let n=J.relative(J.dirname(e),s).split("/"),c=0;for(;c{bU=ut(Ie("buffer")),f$=Ie("url"),A$=Ie("util");yp();el();ix=class extends _s{constructor(e){super(fe),this.baseFs=e}mapFromBase(e){return e}mapToBase(e){if(typeof e=="string")return e;if(e instanceof URL)return(0,f$.fileURLToPath)(e);if(Buffer.isBuffer(e)){let r=e.toString();if(!sqe(e,r))throw new Error("Non-utf8 buffers are not supported at the moment. Please upvote the following issue if you encounter this error: https://github.com/yarnpkg/berry/issues/4942");return r}throw new Error(`Unsupported path type: ${(0,A$.inspect)(e)}`)}}});var y$,Uo,Ep,r0,sx,ox,aE,Tu,Fu,h$,g$,d$,m$,M2,E$=Ze(()=>{y$=Ie("readline"),Uo=Symbol("kBaseFs"),Ep=Symbol("kFd"),r0=Symbol("kClosePromise"),sx=Symbol("kCloseResolve"),ox=Symbol("kCloseReject"),aE=Symbol("kRefs"),Tu=Symbol("kRef"),Fu=Symbol("kUnref"),M2=class{constructor(e,r){this[m$]=1;this[d$]=void 0;this[g$]=void 0;this[h$]=void 0;this[Uo]=r,this[Ep]=e}get fd(){return this[Ep]}async appendFile(e,r){try{this[Tu](this.appendFile);let s=(typeof r=="string"?r:r?.encoding)??void 0;return await this[Uo].appendFilePromise(this.fd,e,s?{encoding:s}:void 0)}finally{this[Fu]()}}async chown(e,r){try{return this[Tu](this.chown),await this[Uo].fchownPromise(this.fd,e,r)}finally{this[Fu]()}}async chmod(e){try{return this[Tu](this.chmod),await this[Uo].fchmodPromise(this.fd,e)}finally{this[Fu]()}}createReadStream(e){return this[Uo].createReadStream(null,{...e,fd:this.fd})}createWriteStream(e){return this[Uo].createWriteStream(null,{...e,fd:this.fd})}datasync(){throw new Error("Method not implemented.")}sync(){throw new Error("Method not implemented.")}async read(e,r,s,a){try{this[Tu](this.read);let n;return Buffer.isBuffer(e)?n=e:(e??={},n=e.buffer??Buffer.alloc(16384),r=e.offset||0,s=e.length??n.byteLength,a=e.position??null),r??=0,s??=0,s===0?{bytesRead:s,buffer:n}:{bytesRead:await this[Uo].readPromise(this.fd,n,r,s,a),buffer:n}}finally{this[Fu]()}}async readFile(e){try{this[Tu](this.readFile);let r=(typeof e=="string"?e:e?.encoding)??void 0;return await this[Uo].readFilePromise(this.fd,r)}finally{this[Fu]()}}readLines(e){return(0,y$.createInterface)({input:this.createReadStream(e),crlfDelay:1/0})}async stat(e){try{return this[Tu](this.stat),await this[Uo].fstatPromise(this.fd,e)}finally{this[Fu]()}}async truncate(e){try{return this[Tu](this.truncate),await this[Uo].ftruncatePromise(this.fd,e)}finally{this[Fu]()}}utimes(e,r){throw new Error("Method not implemented.")}async writeFile(e,r){try{this[Tu](this.writeFile);let s=(typeof r=="string"?r:r?.encoding)??void 0;await this[Uo].writeFilePromise(this.fd,e,s)}finally{this[Fu]()}}async write(...e){try{if(this[Tu](this.write),ArrayBuffer.isView(e[0])){let[r,s,a,n]=e;return{bytesWritten:await this[Uo].writePromise(this.fd,r,s??void 0,a??void 0,n??void 0),buffer:r}}else{let[r,s,a]=e;return{bytesWritten:await this[Uo].writePromise(this.fd,r,s,a),buffer:r}}}finally{this[Fu]()}}async writev(e,r){try{this[Tu](this.writev);let s=0;if(typeof r<"u")for(let a of e){let n=await this.write(a,void 0,void 0,r);s+=n.bytesWritten,r+=n.bytesWritten}else for(let a of e){let n=await this.write(a);s+=n.bytesWritten}return{buffers:e,bytesWritten:s}}finally{this[Fu]()}}readv(e,r){throw new Error("Method not implemented.")}close(){if(this[Ep]===-1)return Promise.resolve();if(this[r0])return this[r0];if(this[aE]--,this[aE]===0){let e=this[Ep];this[Ep]=-1,this[r0]=this[Uo].closePromise(e).finally(()=>{this[r0]=void 0})}else this[r0]=new Promise((e,r)=>{this[sx]=e,this[ox]=r}).finally(()=>{this[r0]=void 0,this[ox]=void 0,this[sx]=void 0});return this[r0]}[(Uo,Ep,m$=aE,d$=r0,g$=sx,h$=ox,Tu)](e){if(this[Ep]===-1){let r=new Error("file closed");throw r.code="EBADF",r.syscall=e.name,r}this[aE]++}[Fu](){if(this[aE]--,this[aE]===0){let e=this[Ep];this[Ep]=-1,this[Uo].closePromise(e).then(this[sx],this[ox])}}}});function U2(t,e){e=new ix(e);let r=(s,a,n)=>{let c=s[a];s[a]=n,typeof c?.[lE.promisify.custom]<"u"&&(n[lE.promisify.custom]=c[lE.promisify.custom])};{r(t,"exists",(s,...a)=>{let c=typeof a[a.length-1]=="function"?a.pop():()=>{};process.nextTick(()=>{e.existsPromise(s).then(f=>{c(f)},()=>{c(!1)})})}),r(t,"read",(...s)=>{let[a,n,c,f,p,h]=s;if(s.length<=3){let E={};s.length<3?h=s[1]:(E=s[1],h=s[2]),{buffer:n=Buffer.alloc(16384),offset:c=0,length:f=n.byteLength,position:p}=E}if(c==null&&(c=0),f|=0,f===0){process.nextTick(()=>{h(null,0,n)});return}p==null&&(p=-1),process.nextTick(()=>{e.readPromise(a,n,c,f,p).then(E=>{h(null,E,n)},E=>{h(E,0,n)})})});for(let s of I$){let a=s.replace(/Promise$/,"");if(typeof t[a]>"u")continue;let n=e[s];if(typeof n>"u")continue;r(t,a,(...f)=>{let h=typeof f[f.length-1]=="function"?f.pop():()=>{};process.nextTick(()=>{n.apply(e,f).then(E=>{h(null,E)},E=>{h(E)})})})}t.realpath.native=t.realpath}{r(t,"existsSync",s=>{try{return e.existsSync(s)}catch{return!1}}),r(t,"readSync",(...s)=>{let[a,n,c,f,p]=s;return s.length<=3&&({offset:c=0,length:f=n.byteLength,position:p}=s[2]||{}),c==null&&(c=0),f|=0,f===0?0:(p==null&&(p=-1),e.readSync(a,n,c,f,p))});for(let s of oqe){let a=s;if(typeof t[a]>"u")continue;let n=e[s];typeof n>"u"||r(t,a,n.bind(e))}t.realpathSync.native=t.realpathSync}{let s=t.promises;for(let a of I$){let n=a.replace(/Promise$/,"");if(typeof s[n]>"u")continue;let c=e[a];typeof c>"u"||a!=="open"&&r(s,n,(f,...p)=>f instanceof M2?f[n].apply(f,p):c.call(e,f,...p))}r(s,"open",async(...a)=>{let n=await e.openPromise(...a);return new M2(n,e)})}t.read[lE.promisify.custom]=async(s,a,...n)=>({bytesRead:await e.readPromise(s,a,...n),buffer:a}),t.write[lE.promisify.custom]=async(s,a,...n)=>({bytesWritten:await e.writePromise(s,a,...n),buffer:a})}function ax(t,e){let r=Object.create(t);return U2(r,e),r}var lE,oqe,I$,C$=Ze(()=>{lE=Ie("util");p$();E$();oqe=new Set(["accessSync","appendFileSync","createReadStream","createWriteStream","chmodSync","fchmodSync","chownSync","fchownSync","closeSync","copyFileSync","linkSync","lstatSync","fstatSync","lutimesSync","mkdirSync","openSync","opendirSync","readlinkSync","readFileSync","readdirSync","readlinkSync","realpathSync","renameSync","rmdirSync","rmSync","statSync","symlinkSync","truncateSync","ftruncateSync","unlinkSync","unwatchFile","utimesSync","watch","watchFile","writeFileSync","writeSync"]),I$=new Set(["accessPromise","appendFilePromise","fchmodPromise","chmodPromise","fchownPromise","chownPromise","closePromise","copyFilePromise","linkPromise","fstatPromise","lstatPromise","lutimesPromise","mkdirPromise","openPromise","opendirPromise","readdirPromise","realpathPromise","readFilePromise","readdirPromise","readlinkPromise","renamePromise","rmdirPromise","rmPromise","statPromise","symlinkPromise","truncatePromise","ftruncatePromise","unlinkPromise","utimesPromise","writeFilePromise","writeSync"])});function w$(t){let e=Math.ceil(Math.random()*4294967296).toString(16).padStart(8,"0");return`${t}${e}`}function B$(){if(xU)return xU;let t=fe.toPortablePath(v$.default.tmpdir()),e=ce.realpathSync(t);return process.once("exit",()=>{ce.rmtempSync()}),xU={tmpdir:t,realTmpdir:e}}var v$,Nu,xU,ce,S$=Ze(()=>{v$=ut(Ie("os"));Cd();el();Nu=new Set,xU=null;ce=Object.assign(new Yn,{detachTemp(t){Nu.delete(t)},mktempSync(t){let{tmpdir:e,realTmpdir:r}=B$();for(;;){let s=w$("xfs-");try{this.mkdirSync(J.join(e,s))}catch(n){if(n.code==="EEXIST")continue;throw n}let a=J.join(r,s);if(Nu.add(a),typeof t>"u")return a;try{return t(a)}finally{if(Nu.has(a)){Nu.delete(a);try{this.removeSync(a)}catch{}}}}},async mktempPromise(t){let{tmpdir:e,realTmpdir:r}=B$();for(;;){let s=w$("xfs-");try{await this.mkdirPromise(J.join(e,s))}catch(n){if(n.code==="EEXIST")continue;throw n}let a=J.join(r,s);if(Nu.add(a),typeof t>"u")return a;try{return await t(a)}finally{if(Nu.has(a)){Nu.delete(a);try{await this.removePromise(a)}catch{}}}}},async rmtempPromise(){await Promise.all(Array.from(Nu.values()).map(async t=>{try{await ce.removePromise(t,{maxRetries:0}),Nu.delete(t)}catch{}}))},rmtempSync(){for(let t of Nu)try{ce.removeSync(t),Nu.delete(t)}catch{}}})});var _2={};Vt(_2,{AliasFS:()=>_f,BasePortableFakeFS:()=>Uf,CustomDir:()=>L2,CwdFS:()=>Sn,FakeFS:()=>mp,Filename:()=>Er,JailFS:()=>Hf,LazyFS:()=>oE,MountFS:()=>e0,NoFS:()=>nx,NodeFS:()=>Yn,PortablePath:()=>vt,PosixFS:()=>t0,ProxiedFS:()=>_s,VirtualFS:()=>uo,constants:()=>fi,errors:()=>or,extendFs:()=>ax,normalizeLineEndings:()=>Ed,npath:()=>fe,opendir:()=>ex,patchFs:()=>U2,ppath:()=>J,setupCopyIndex:()=>$b,statUtils:()=>$a,unwatchAllFiles:()=>yd,unwatchFile:()=>md,watchFile:()=>sE,xfs:()=>ce});var Dt=Ze(()=>{jX();zb();wU();SU();JX();DU();Id();el();el();e$();Id();n$();s$();o$();a$();l$();Cd();c$();yp();u$();C$();S$()});var k$=_((mkt,x$)=>{x$.exports=b$;b$.sync=lqe;var D$=Ie("fs");function aqe(t,e){var r=e.pathExt!==void 0?e.pathExt:process.env.PATHEXT;if(!r||(r=r.split(";"),r.indexOf("")!==-1))return!0;for(var s=0;s{F$.exports=R$;R$.sync=cqe;var Q$=Ie("fs");function R$(t,e,r){Q$.stat(t,function(s,a){r(s,s?!1:T$(a,e))})}function cqe(t,e){return T$(Q$.statSync(t),e)}function T$(t,e){return t.isFile()&&uqe(t,e)}function uqe(t,e){var r=t.mode,s=t.uid,a=t.gid,n=e.uid!==void 0?e.uid:process.getuid&&process.getuid(),c=e.gid!==void 0?e.gid:process.getgid&&process.getgid(),f=parseInt("100",8),p=parseInt("010",8),h=parseInt("001",8),E=f|p,C=r&h||r&p&&a===c||r&f&&s===n||r&E&&n===0;return C}});var L$=_((Ikt,O$)=>{var Ekt=Ie("fs"),lx;process.platform==="win32"||global.TESTING_WINDOWS?lx=k$():lx=N$();O$.exports=kU;kU.sync=fqe;function kU(t,e,r){if(typeof e=="function"&&(r=e,e={}),!r){if(typeof Promise!="function")throw new TypeError("callback not provided");return new Promise(function(s,a){kU(t,e||{},function(n,c){n?a(n):s(c)})})}lx(t,e||{},function(s,a){s&&(s.code==="EACCES"||e&&e.ignoreErrors)&&(s=null,a=!1),r(s,a)})}function fqe(t,e){try{return lx.sync(t,e||{})}catch(r){if(e&&e.ignoreErrors||r.code==="EACCES")return!1;throw r}}});var q$=_((Ckt,G$)=>{var cE=process.platform==="win32"||process.env.OSTYPE==="cygwin"||process.env.OSTYPE==="msys",M$=Ie("path"),Aqe=cE?";":":",U$=L$(),_$=t=>Object.assign(new Error(`not found: ${t}`),{code:"ENOENT"}),H$=(t,e)=>{let r=e.colon||Aqe,s=t.match(/\//)||cE&&t.match(/\\/)?[""]:[...cE?[process.cwd()]:[],...(e.path||process.env.PATH||"").split(r)],a=cE?e.pathExt||process.env.PATHEXT||".EXE;.CMD;.BAT;.COM":"",n=cE?a.split(r):[""];return cE&&t.indexOf(".")!==-1&&n[0]!==""&&n.unshift(""),{pathEnv:s,pathExt:n,pathExtExe:a}},j$=(t,e,r)=>{typeof e=="function"&&(r=e,e={}),e||(e={});let{pathEnv:s,pathExt:a,pathExtExe:n}=H$(t,e),c=[],f=h=>new Promise((E,C)=>{if(h===s.length)return e.all&&c.length?E(c):C(_$(t));let S=s[h],b=/^".*"$/.test(S)?S.slice(1,-1):S,I=M$.join(b,t),T=!b&&/^\.[\\\/]/.test(t)?t.slice(0,2)+I:I;E(p(T,h,0))}),p=(h,E,C)=>new Promise((S,b)=>{if(C===a.length)return S(f(E+1));let I=a[C];U$(h+I,{pathExt:n},(T,N)=>{if(!T&&N)if(e.all)c.push(h+I);else return S(h+I);return S(p(h,E,C+1))})});return r?f(0).then(h=>r(null,h),r):f(0)},pqe=(t,e)=>{e=e||{};let{pathEnv:r,pathExt:s,pathExtExe:a}=H$(t,e),n=[];for(let c=0;c{"use strict";var W$=(t={})=>{let e=t.env||process.env;return(t.platform||process.platform)!=="win32"?"PATH":Object.keys(e).reverse().find(s=>s.toUpperCase()==="PATH")||"Path"};QU.exports=W$;QU.exports.default=W$});var z$=_((Bkt,K$)=>{"use strict";var V$=Ie("path"),hqe=q$(),gqe=Y$();function J$(t,e){let r=t.options.env||process.env,s=process.cwd(),a=t.options.cwd!=null,n=a&&process.chdir!==void 0&&!process.chdir.disabled;if(n)try{process.chdir(t.options.cwd)}catch{}let c;try{c=hqe.sync(t.command,{path:r[gqe({env:r})],pathExt:e?V$.delimiter:void 0})}catch{}finally{n&&process.chdir(s)}return c&&(c=V$.resolve(a?t.options.cwd:"",c)),c}function dqe(t){return J$(t)||J$(t,!0)}K$.exports=dqe});var Z$=_((vkt,TU)=>{"use strict";var RU=/([()\][%!^"`<>&|;, *?])/g;function mqe(t){return t=t.replace(RU,"^$1"),t}function yqe(t,e){return t=`${t}`,t=t.replace(/(?=(\\+?)?)\1"/g,'$1$1\\"'),t=t.replace(/(?=(\\+?)?)\1$/,"$1$1"),t=`"${t}"`,t=t.replace(RU,"^$1"),e&&(t=t.replace(RU,"^$1")),t}TU.exports.command=mqe;TU.exports.argument=yqe});var $$=_((Skt,X$)=>{"use strict";X$.exports=/^#!(.*)/});var tee=_((Dkt,eee)=>{"use strict";var Eqe=$$();eee.exports=(t="")=>{let e=t.match(Eqe);if(!e)return null;let[r,s]=e[0].replace(/#! ?/,"").split(" "),a=r.split("/").pop();return a==="env"?s:s?`${a} ${s}`:a}});var nee=_((Pkt,ree)=>{"use strict";var FU=Ie("fs"),Iqe=tee();function Cqe(t){let r=Buffer.alloc(150),s;try{s=FU.openSync(t,"r"),FU.readSync(s,r,0,150,0),FU.closeSync(s)}catch{}return Iqe(r.toString())}ree.exports=Cqe});var aee=_((bkt,oee)=>{"use strict";var wqe=Ie("path"),iee=z$(),see=Z$(),Bqe=nee(),vqe=process.platform==="win32",Sqe=/\.(?:com|exe)$/i,Dqe=/node_modules[\\/].bin[\\/][^\\/]+\.cmd$/i;function Pqe(t){t.file=iee(t);let e=t.file&&Bqe(t.file);return e?(t.args.unshift(t.file),t.command=e,iee(t)):t.file}function bqe(t){if(!vqe)return t;let e=Pqe(t),r=!Sqe.test(e);if(t.options.forceShell||r){let s=Dqe.test(e);t.command=wqe.normalize(t.command),t.command=see.command(t.command),t.args=t.args.map(n=>see.argument(n,s));let a=[t.command].concat(t.args).join(" ");t.args=["/d","/s","/c",`"${a}"`],t.command=process.env.comspec||"cmd.exe",t.options.windowsVerbatimArguments=!0}return t}function xqe(t,e,r){e&&!Array.isArray(e)&&(r=e,e=null),e=e?e.slice(0):[],r=Object.assign({},r);let s={command:t,args:e,options:r,file:void 0,original:{command:t,args:e}};return r.shell?s:bqe(s)}oee.exports=xqe});var uee=_((xkt,cee)=>{"use strict";var NU=process.platform==="win32";function OU(t,e){return Object.assign(new Error(`${e} ${t.command} ENOENT`),{code:"ENOENT",errno:"ENOENT",syscall:`${e} ${t.command}`,path:t.command,spawnargs:t.args})}function kqe(t,e){if(!NU)return;let r=t.emit;t.emit=function(s,a){if(s==="exit"){let n=lee(a,e);if(n)return r.call(t,"error",n)}return r.apply(t,arguments)}}function lee(t,e){return NU&&t===1&&!e.file?OU(e.original,"spawn"):null}function Qqe(t,e){return NU&&t===1&&!e.file?OU(e.original,"spawnSync"):null}cee.exports={hookChildProcess:kqe,verifyENOENT:lee,verifyENOENTSync:Qqe,notFoundError:OU}});var UU=_((kkt,uE)=>{"use strict";var fee=Ie("child_process"),LU=aee(),MU=uee();function Aee(t,e,r){let s=LU(t,e,r),a=fee.spawn(s.command,s.args,s.options);return MU.hookChildProcess(a,s),a}function Rqe(t,e,r){let s=LU(t,e,r),a=fee.spawnSync(s.command,s.args,s.options);return a.error=a.error||MU.verifyENOENTSync(a.status,s),a}uE.exports=Aee;uE.exports.spawn=Aee;uE.exports.sync=Rqe;uE.exports._parse=LU;uE.exports._enoent=MU});var hee=_((Qkt,pee)=>{"use strict";function Tqe(t,e){function r(){this.constructor=t}r.prototype=e.prototype,t.prototype=new r}function Bd(t,e,r,s){this.message=t,this.expected=e,this.found=r,this.location=s,this.name="SyntaxError",typeof Error.captureStackTrace=="function"&&Error.captureStackTrace(this,Bd)}Tqe(Bd,Error);Bd.buildMessage=function(t,e){var r={literal:function(h){return'"'+a(h.text)+'"'},class:function(h){var E="",C;for(C=0;C0){for(C=1,S=1;C>",P=ur(">>",!1),y=">&",F=ur(">&",!1),z=">",Z=ur(">",!1),$="<<<",oe=ur("<<<",!1),xe="<&",Re=ur("<&",!1),lt="<",Ct=ur("<",!1),qt=function(O){return{type:"argument",segments:[].concat(...O)}},ir=function(O){return O},bt="$'",gn=ur("$'",!1),br="'",Ir=ur("'",!1),Or=function(O){return[{type:"text",text:O}]},nn='""',ai=ur('""',!1),Io=function(){return{type:"text",text:""}},ts='"',$s=ur('"',!1),Co=function(O){return O},Hi=function(O){return{type:"arithmetic",arithmetic:O,quoted:!0}},eo=function(O){return{type:"shell",shell:O,quoted:!0}},wo=function(O){return{type:"variable",...O,quoted:!0}},QA=function(O){return{type:"text",text:O}},Af=function(O){return{type:"arithmetic",arithmetic:O,quoted:!1}},dh=function(O){return{type:"shell",shell:O,quoted:!1}},mh=function(O){return{type:"variable",...O,quoted:!1}},to=function(O){return{type:"glob",pattern:O}},jn=/^[^']/,Rs=Ki(["'"],!0,!1),ro=function(O){return O.join("")},ou=/^[^$"]/,au=Ki(["$",'"'],!0,!1),lu=`\\ `,RA=ur(`\\ `,!1),TA=function(){return""},oa="\\",aa=ur("\\",!1),FA=/^[\\$"`]/,gr=Ki(["\\","$",'"',"`"],!1,!1),Bo=function(O){return O},Me="\\a",cu=ur("\\a",!1),Cr=function(){return"a"},pf="\\b",NA=ur("\\b",!1),OA=function(){return"\b"},uu=/^[Ee]/,fu=Ki(["E","e"],!1,!1),oc=function(){return"\x1B"},ve="\\f",Nt=ur("\\f",!1),ac=function(){return"\f"},Oi="\\n",no=ur("\\n",!1),Tt=function(){return` `},xn="\\r",la=ur("\\r",!1),ji=function(){return"\r"},Li="\\t",Na=ur("\\t",!1),dn=function(){return" "},Kn="\\v",Au=ur("\\v",!1),yh=function(){return"\v"},Oa=/^[\\'"?]/,La=Ki(["\\","'",'"',"?"],!1,!1),Ma=function(O){return String.fromCharCode(parseInt(O,16))},$e="\\x",Ua=ur("\\x",!1),hf="\\u",lc=ur("\\u",!1),wn="\\U",ca=ur("\\U",!1),LA=function(O){return String.fromCodePoint(parseInt(O,16))},MA=/^[0-7]/,ua=Ki([["0","7"]],!1,!1),Bl=/^[0-9a-fA-f]/,Mt=Ki([["0","9"],["a","f"],["A","f"]],!1,!1),kn=yf(),fa="{}",Ha=ur("{}",!1),rs=function(){return"{}"},cc="-",pu=ur("-",!1),uc="+",ja=ur("+",!1),Mi=".",Is=ur(".",!1),vl=function(O,K,re){return{type:"number",value:(O==="-"?-1:1)*parseFloat(K.join("")+"."+re.join(""))}},gf=function(O,K){return{type:"number",value:(O==="-"?-1:1)*parseInt(K.join(""))}},fc=function(O){return{type:"variable",...O}},wi=function(O){return{type:"variable",name:O}},Qn=function(O){return O},Ac="*",Ke=ur("*",!1),st="/",St=ur("/",!1),lr=function(O,K,re){return{type:K==="*"?"multiplication":"division",right:re}},te=function(O,K){return K.reduce((re,de)=>({left:re,...de}),O)},Ee=function(O,K,re){return{type:K==="+"?"addition":"subtraction",right:re}},Oe="$((",dt=ur("$((",!1),Et="))",Pt=ur("))",!1),tr=function(O){return O},An="$(",li=ur("$(",!1),Gi=function(O){return O},Rn="${",Ga=ur("${",!1),my=":-",X1=ur(":-",!1),vo=function(O,K){return{name:O,defaultValue:K}},yy=":-}",Eh=ur(":-}",!1),$1=function(O){return{name:O,defaultValue:[]}},So=":+",Ih=ur(":+",!1),Ch=function(O,K){return{name:O,alternativeValue:K}},hu=":+}",wh=ur(":+}",!1),Fg=function(O){return{name:O,alternativeValue:[]}},Ng=function(O){return{name:O}},Og="$",Ey=ur("$",!1),df=function(O){return e.isGlobPattern(O)},Do=function(O){return O},Sl=/^[a-zA-Z0-9_]/,Bh=Ki([["a","z"],["A","Z"],["0","9"],"_"],!1,!1),Lg=function(){return By()},Dl=/^[$@*?#a-zA-Z0-9_\-]/,Pl=Ki(["$","@","*","?","#",["a","z"],["A","Z"],["0","9"],"_","-"],!1,!1),Iy=/^[()}<>$|&; \t"']/,UA=Ki(["(",")","}","<",">","$","|","&",";"," "," ",'"',"'"],!1,!1),Cy=/^[<>&; \t"']/,wy=Ki(["<",">","&",";"," "," ",'"',"'"],!1,!1),_A=/^[ \t]/,HA=Ki([" "," "],!1,!1),Y=0,xt=0,jA=[{line:1,column:1}],Po=0,mf=[],yt=0,gu;if("startRule"in e){if(!(e.startRule in s))throw new Error(`Can't start parsing from rule "`+e.startRule+'".');a=s[e.startRule]}function By(){return t.substring(xt,Y)}function Mg(){return Ef(xt,Y)}function e2(O,K){throw K=K!==void 0?K:Ef(xt,Y),GA([Ug(O)],t.substring(xt,Y),K)}function vh(O,K){throw K=K!==void 0?K:Ef(xt,Y),di(O,K)}function ur(O,K){return{type:"literal",text:O,ignoreCase:K}}function Ki(O,K,re){return{type:"class",parts:O,inverted:K,ignoreCase:re}}function yf(){return{type:"any"}}function qa(){return{type:"end"}}function Ug(O){return{type:"other",description:O}}function du(O){var K=jA[O],re;if(K)return K;for(re=O-1;!jA[re];)re--;for(K=jA[re],K={line:K.line,column:K.column};rePo&&(Po=Y,mf=[]),mf.push(O))}function di(O,K){return new Bd(O,null,null,K)}function GA(O,K,re){return new Bd(Bd.buildMessage(O,K),O,K,re)}function Wa(){var O,K,re;for(O=Y,K=[],re=kt();re!==r;)K.push(re),re=kt();return K!==r?(re=Aa(),re===r&&(re=null),re!==r?(xt=O,K=n(re),O=K):(Y=O,O=r)):(Y=O,O=r),O}function Aa(){var O,K,re,de,Je;if(O=Y,K=Sh(),K!==r){for(re=[],de=kt();de!==r;)re.push(de),de=kt();re!==r?(de=_g(),de!==r?(Je=Ya(),Je===r&&(Je=null),Je!==r?(xt=O,K=c(K,de,Je),O=K):(Y=O,O=r)):(Y=O,O=r)):(Y=O,O=r)}else Y=O,O=r;if(O===r)if(O=Y,K=Sh(),K!==r){for(re=[],de=kt();de!==r;)re.push(de),de=kt();re!==r?(de=_g(),de===r&&(de=null),de!==r?(xt=O,K=f(K,de),O=K):(Y=O,O=r)):(Y=O,O=r)}else Y=O,O=r;return O}function Ya(){var O,K,re,de,Je;for(O=Y,K=[],re=kt();re!==r;)K.push(re),re=kt();if(K!==r)if(re=Aa(),re!==r){for(de=[],Je=kt();Je!==r;)de.push(Je),Je=kt();de!==r?(xt=O,K=p(re),O=K):(Y=O,O=r)}else Y=O,O=r;else Y=O,O=r;return O}function _g(){var O;return t.charCodeAt(Y)===59?(O=h,Y++):(O=r,yt===0&&wt(E)),O===r&&(t.charCodeAt(Y)===38?(O=C,Y++):(O=r,yt===0&&wt(S))),O}function Sh(){var O,K,re;return O=Y,K=qA(),K!==r?(re=Hg(),re===r&&(re=null),re!==r?(xt=O,K=b(K,re),O=K):(Y=O,O=r)):(Y=O,O=r),O}function Hg(){var O,K,re,de,Je,At,dr;for(O=Y,K=[],re=kt();re!==r;)K.push(re),re=kt();if(K!==r)if(re=vy(),re!==r){for(de=[],Je=kt();Je!==r;)de.push(Je),Je=kt();if(de!==r)if(Je=Sh(),Je!==r){for(At=[],dr=kt();dr!==r;)At.push(dr),dr=kt();At!==r?(xt=O,K=I(re,Je),O=K):(Y=O,O=r)}else Y=O,O=r;else Y=O,O=r}else Y=O,O=r;else Y=O,O=r;return O}function vy(){var O;return t.substr(Y,2)===T?(O=T,Y+=2):(O=r,yt===0&&wt(N)),O===r&&(t.substr(Y,2)===U?(O=U,Y+=2):(O=r,yt===0&&wt(W))),O}function qA(){var O,K,re;return O=Y,K=If(),K!==r?(re=jg(),re===r&&(re=null),re!==r?(xt=O,K=ee(K,re),O=K):(Y=O,O=r)):(Y=O,O=r),O}function jg(){var O,K,re,de,Je,At,dr;for(O=Y,K=[],re=kt();re!==r;)K.push(re),re=kt();if(K!==r)if(re=mu(),re!==r){for(de=[],Je=kt();Je!==r;)de.push(Je),Je=kt();if(de!==r)if(Je=qA(),Je!==r){for(At=[],dr=kt();dr!==r;)At.push(dr),dr=kt();At!==r?(xt=O,K=ie(re,Je),O=K):(Y=O,O=r)}else Y=O,O=r;else Y=O,O=r}else Y=O,O=r;else Y=O,O=r;return O}function mu(){var O;return t.substr(Y,2)===ue?(O=ue,Y+=2):(O=r,yt===0&&wt(le)),O===r&&(t.charCodeAt(Y)===124?(O=me,Y++):(O=r,yt===0&&wt(pe))),O}function yu(){var O,K,re,de,Je,At;if(O=Y,K=bh(),K!==r)if(t.charCodeAt(Y)===61?(re=Be,Y++):(re=r,yt===0&&wt(Ce)),re!==r)if(de=WA(),de!==r){for(Je=[],At=kt();At!==r;)Je.push(At),At=kt();Je!==r?(xt=O,K=g(K,de),O=K):(Y=O,O=r)}else Y=O,O=r;else Y=O,O=r;else Y=O,O=r;if(O===r)if(O=Y,K=bh(),K!==r)if(t.charCodeAt(Y)===61?(re=Be,Y++):(re=r,yt===0&&wt(Ce)),re!==r){for(de=[],Je=kt();Je!==r;)de.push(Je),Je=kt();de!==r?(xt=O,K=we(K),O=K):(Y=O,O=r)}else Y=O,O=r;else Y=O,O=r;return O}function If(){var O,K,re,de,Je,At,dr,vr,Un,mi,Cs;for(O=Y,K=[],re=kt();re!==r;)K.push(re),re=kt();if(K!==r)if(t.charCodeAt(Y)===40?(re=ye,Y++):(re=r,yt===0&&wt(Ae)),re!==r){for(de=[],Je=kt();Je!==r;)de.push(Je),Je=kt();if(de!==r)if(Je=Aa(),Je!==r){for(At=[],dr=kt();dr!==r;)At.push(dr),dr=kt();if(At!==r)if(t.charCodeAt(Y)===41?(dr=se,Y++):(dr=r,yt===0&&wt(X)),dr!==r){for(vr=[],Un=kt();Un!==r;)vr.push(Un),Un=kt();if(vr!==r){for(Un=[],mi=Gn();mi!==r;)Un.push(mi),mi=Gn();if(Un!==r){for(mi=[],Cs=kt();Cs!==r;)mi.push(Cs),Cs=kt();mi!==r?(xt=O,K=De(Je,Un),O=K):(Y=O,O=r)}else Y=O,O=r}else Y=O,O=r}else Y=O,O=r;else Y=O,O=r}else Y=O,O=r;else Y=O,O=r}else Y=O,O=r;else Y=O,O=r;if(O===r){for(O=Y,K=[],re=kt();re!==r;)K.push(re),re=kt();if(K!==r)if(t.charCodeAt(Y)===123?(re=Te,Y++):(re=r,yt===0&&wt(mt)),re!==r){for(de=[],Je=kt();Je!==r;)de.push(Je),Je=kt();if(de!==r)if(Je=Aa(),Je!==r){for(At=[],dr=kt();dr!==r;)At.push(dr),dr=kt();if(At!==r)if(t.charCodeAt(Y)===125?(dr=j,Y++):(dr=r,yt===0&&wt(rt)),dr!==r){for(vr=[],Un=kt();Un!==r;)vr.push(Un),Un=kt();if(vr!==r){for(Un=[],mi=Gn();mi!==r;)Un.push(mi),mi=Gn();if(Un!==r){for(mi=[],Cs=kt();Cs!==r;)mi.push(Cs),Cs=kt();mi!==r?(xt=O,K=Fe(Je,Un),O=K):(Y=O,O=r)}else Y=O,O=r}else Y=O,O=r}else Y=O,O=r;else Y=O,O=r}else Y=O,O=r;else Y=O,O=r}else Y=O,O=r;else Y=O,O=r;if(O===r){for(O=Y,K=[],re=kt();re!==r;)K.push(re),re=kt();if(K!==r){for(re=[],de=yu();de!==r;)re.push(de),de=yu();if(re!==r){for(de=[],Je=kt();Je!==r;)de.push(Je),Je=kt();if(de!==r){if(Je=[],At=Eu(),At!==r)for(;At!==r;)Je.push(At),At=Eu();else Je=r;if(Je!==r){for(At=[],dr=kt();dr!==r;)At.push(dr),dr=kt();At!==r?(xt=O,K=Ne(re,Je),O=K):(Y=O,O=r)}else Y=O,O=r}else Y=O,O=r}else Y=O,O=r}else Y=O,O=r;if(O===r){for(O=Y,K=[],re=kt();re!==r;)K.push(re),re=kt();if(K!==r){if(re=[],de=yu(),de!==r)for(;de!==r;)re.push(de),de=yu();else re=r;if(re!==r){for(de=[],Je=kt();Je!==r;)de.push(Je),Je=kt();de!==r?(xt=O,K=be(re),O=K):(Y=O,O=r)}else Y=O,O=r}else Y=O,O=r}}}return O}function Ts(){var O,K,re,de,Je;for(O=Y,K=[],re=kt();re!==r;)K.push(re),re=kt();if(K!==r){if(re=[],de=bi(),de!==r)for(;de!==r;)re.push(de),de=bi();else re=r;if(re!==r){for(de=[],Je=kt();Je!==r;)de.push(Je),Je=kt();de!==r?(xt=O,K=Ve(re),O=K):(Y=O,O=r)}else Y=O,O=r}else Y=O,O=r;return O}function Eu(){var O,K,re;for(O=Y,K=[],re=kt();re!==r;)K.push(re),re=kt();if(K!==r?(re=Gn(),re!==r?(xt=O,K=ke(re),O=K):(Y=O,O=r)):(Y=O,O=r),O===r){for(O=Y,K=[],re=kt();re!==r;)K.push(re),re=kt();K!==r?(re=bi(),re!==r?(xt=O,K=ke(re),O=K):(Y=O,O=r)):(Y=O,O=r)}return O}function Gn(){var O,K,re,de,Je;for(O=Y,K=[],re=kt();re!==r;)K.push(re),re=kt();return K!==r?(it.test(t.charAt(Y))?(re=t.charAt(Y),Y++):(re=r,yt===0&&wt(Ue)),re===r&&(re=null),re!==r?(de=ns(),de!==r?(Je=bi(),Je!==r?(xt=O,K=x(re,de,Je),O=K):(Y=O,O=r)):(Y=O,O=r)):(Y=O,O=r)):(Y=O,O=r),O}function ns(){var O;return t.substr(Y,2)===w?(O=w,Y+=2):(O=r,yt===0&&wt(P)),O===r&&(t.substr(Y,2)===y?(O=y,Y+=2):(O=r,yt===0&&wt(F)),O===r&&(t.charCodeAt(Y)===62?(O=z,Y++):(O=r,yt===0&&wt(Z)),O===r&&(t.substr(Y,3)===$?(O=$,Y+=3):(O=r,yt===0&&wt(oe)),O===r&&(t.substr(Y,2)===xe?(O=xe,Y+=2):(O=r,yt===0&&wt(Re)),O===r&&(t.charCodeAt(Y)===60?(O=lt,Y++):(O=r,yt===0&&wt(Ct))))))),O}function bi(){var O,K,re;for(O=Y,K=[],re=kt();re!==r;)K.push(re),re=kt();return K!==r?(re=WA(),re!==r?(xt=O,K=ke(re),O=K):(Y=O,O=r)):(Y=O,O=r),O}function WA(){var O,K,re;if(O=Y,K=[],re=Cf(),re!==r)for(;re!==r;)K.push(re),re=Cf();else K=r;return K!==r&&(xt=O,K=qt(K)),O=K,O}function Cf(){var O,K;return O=Y,K=mn(),K!==r&&(xt=O,K=ir(K)),O=K,O===r&&(O=Y,K=Gg(),K!==r&&(xt=O,K=ir(K)),O=K,O===r&&(O=Y,K=qg(),K!==r&&(xt=O,K=ir(K)),O=K,O===r&&(O=Y,K=is(),K!==r&&(xt=O,K=ir(K)),O=K))),O}function mn(){var O,K,re,de;return O=Y,t.substr(Y,2)===bt?(K=bt,Y+=2):(K=r,yt===0&&wt(gn)),K!==r?(re=yn(),re!==r?(t.charCodeAt(Y)===39?(de=br,Y++):(de=r,yt===0&&wt(Ir)),de!==r?(xt=O,K=Or(re),O=K):(Y=O,O=r)):(Y=O,O=r)):(Y=O,O=r),O}function Gg(){var O,K,re,de;return O=Y,t.charCodeAt(Y)===39?(K=br,Y++):(K=r,yt===0&&wt(Ir)),K!==r?(re=wf(),re!==r?(t.charCodeAt(Y)===39?(de=br,Y++):(de=r,yt===0&&wt(Ir)),de!==r?(xt=O,K=Or(re),O=K):(Y=O,O=r)):(Y=O,O=r)):(Y=O,O=r),O}function qg(){var O,K,re,de;if(O=Y,t.substr(Y,2)===nn?(K=nn,Y+=2):(K=r,yt===0&&wt(ai)),K!==r&&(xt=O,K=Io()),O=K,O===r)if(O=Y,t.charCodeAt(Y)===34?(K=ts,Y++):(K=r,yt===0&&wt($s)),K!==r){for(re=[],de=bl();de!==r;)re.push(de),de=bl();re!==r?(t.charCodeAt(Y)===34?(de=ts,Y++):(de=r,yt===0&&wt($s)),de!==r?(xt=O,K=Co(re),O=K):(Y=O,O=r)):(Y=O,O=r)}else Y=O,O=r;return O}function is(){var O,K,re;if(O=Y,K=[],re=bo(),re!==r)for(;re!==r;)K.push(re),re=bo();else K=r;return K!==r&&(xt=O,K=Co(K)),O=K,O}function bl(){var O,K;return O=Y,K=Xr(),K!==r&&(xt=O,K=Hi(K)),O=K,O===r&&(O=Y,K=Ph(),K!==r&&(xt=O,K=eo(K)),O=K,O===r&&(O=Y,K=VA(),K!==r&&(xt=O,K=wo(K)),O=K,O===r&&(O=Y,K=Bf(),K!==r&&(xt=O,K=QA(K)),O=K))),O}function bo(){var O,K;return O=Y,K=Xr(),K!==r&&(xt=O,K=Af(K)),O=K,O===r&&(O=Y,K=Ph(),K!==r&&(xt=O,K=dh(K)),O=K,O===r&&(O=Y,K=VA(),K!==r&&(xt=O,K=mh(K)),O=K,O===r&&(O=Y,K=Sy(),K!==r&&(xt=O,K=to(K)),O=K,O===r&&(O=Y,K=Dh(),K!==r&&(xt=O,K=QA(K)),O=K)))),O}function wf(){var O,K,re;for(O=Y,K=[],jn.test(t.charAt(Y))?(re=t.charAt(Y),Y++):(re=r,yt===0&&wt(Rs));re!==r;)K.push(re),jn.test(t.charAt(Y))?(re=t.charAt(Y),Y++):(re=r,yt===0&&wt(Rs));return K!==r&&(xt=O,K=ro(K)),O=K,O}function Bf(){var O,K,re;if(O=Y,K=[],re=xl(),re===r&&(ou.test(t.charAt(Y))?(re=t.charAt(Y),Y++):(re=r,yt===0&&wt(au))),re!==r)for(;re!==r;)K.push(re),re=xl(),re===r&&(ou.test(t.charAt(Y))?(re=t.charAt(Y),Y++):(re=r,yt===0&&wt(au)));else K=r;return K!==r&&(xt=O,K=ro(K)),O=K,O}function xl(){var O,K,re;return O=Y,t.substr(Y,2)===lu?(K=lu,Y+=2):(K=r,yt===0&&wt(RA)),K!==r&&(xt=O,K=TA()),O=K,O===r&&(O=Y,t.charCodeAt(Y)===92?(K=oa,Y++):(K=r,yt===0&&wt(aa)),K!==r?(FA.test(t.charAt(Y))?(re=t.charAt(Y),Y++):(re=r,yt===0&&wt(gr)),re!==r?(xt=O,K=Bo(re),O=K):(Y=O,O=r)):(Y=O,O=r)),O}function yn(){var O,K,re;for(O=Y,K=[],re=xo(),re===r&&(jn.test(t.charAt(Y))?(re=t.charAt(Y),Y++):(re=r,yt===0&&wt(Rs)));re!==r;)K.push(re),re=xo(),re===r&&(jn.test(t.charAt(Y))?(re=t.charAt(Y),Y++):(re=r,yt===0&&wt(Rs)));return K!==r&&(xt=O,K=ro(K)),O=K,O}function xo(){var O,K,re;return O=Y,t.substr(Y,2)===Me?(K=Me,Y+=2):(K=r,yt===0&&wt(cu)),K!==r&&(xt=O,K=Cr()),O=K,O===r&&(O=Y,t.substr(Y,2)===pf?(K=pf,Y+=2):(K=r,yt===0&&wt(NA)),K!==r&&(xt=O,K=OA()),O=K,O===r&&(O=Y,t.charCodeAt(Y)===92?(K=oa,Y++):(K=r,yt===0&&wt(aa)),K!==r?(uu.test(t.charAt(Y))?(re=t.charAt(Y),Y++):(re=r,yt===0&&wt(fu)),re!==r?(xt=O,K=oc(),O=K):(Y=O,O=r)):(Y=O,O=r),O===r&&(O=Y,t.substr(Y,2)===ve?(K=ve,Y+=2):(K=r,yt===0&&wt(Nt)),K!==r&&(xt=O,K=ac()),O=K,O===r&&(O=Y,t.substr(Y,2)===Oi?(K=Oi,Y+=2):(K=r,yt===0&&wt(no)),K!==r&&(xt=O,K=Tt()),O=K,O===r&&(O=Y,t.substr(Y,2)===xn?(K=xn,Y+=2):(K=r,yt===0&&wt(la)),K!==r&&(xt=O,K=ji()),O=K,O===r&&(O=Y,t.substr(Y,2)===Li?(K=Li,Y+=2):(K=r,yt===0&&wt(Na)),K!==r&&(xt=O,K=dn()),O=K,O===r&&(O=Y,t.substr(Y,2)===Kn?(K=Kn,Y+=2):(K=r,yt===0&&wt(Au)),K!==r&&(xt=O,K=yh()),O=K,O===r&&(O=Y,t.charCodeAt(Y)===92?(K=oa,Y++):(K=r,yt===0&&wt(aa)),K!==r?(Oa.test(t.charAt(Y))?(re=t.charAt(Y),Y++):(re=r,yt===0&&wt(La)),re!==r?(xt=O,K=Bo(re),O=K):(Y=O,O=r)):(Y=O,O=r),O===r&&(O=Iu()))))))))),O}function Iu(){var O,K,re,de,Je,At,dr,vr,Un,mi,Cs,JA;return O=Y,t.charCodeAt(Y)===92?(K=oa,Y++):(K=r,yt===0&&wt(aa)),K!==r?(re=pa(),re!==r?(xt=O,K=Ma(re),O=K):(Y=O,O=r)):(Y=O,O=r),O===r&&(O=Y,t.substr(Y,2)===$e?(K=$e,Y+=2):(K=r,yt===0&&wt(Ua)),K!==r?(re=Y,de=Y,Je=pa(),Je!==r?(At=Fs(),At!==r?(Je=[Je,At],de=Je):(Y=de,de=r)):(Y=de,de=r),de===r&&(de=pa()),de!==r?re=t.substring(re,Y):re=de,re!==r?(xt=O,K=Ma(re),O=K):(Y=O,O=r)):(Y=O,O=r),O===r&&(O=Y,t.substr(Y,2)===hf?(K=hf,Y+=2):(K=r,yt===0&&wt(lc)),K!==r?(re=Y,de=Y,Je=Fs(),Je!==r?(At=Fs(),At!==r?(dr=Fs(),dr!==r?(vr=Fs(),vr!==r?(Je=[Je,At,dr,vr],de=Je):(Y=de,de=r)):(Y=de,de=r)):(Y=de,de=r)):(Y=de,de=r),de!==r?re=t.substring(re,Y):re=de,re!==r?(xt=O,K=Ma(re),O=K):(Y=O,O=r)):(Y=O,O=r),O===r&&(O=Y,t.substr(Y,2)===wn?(K=wn,Y+=2):(K=r,yt===0&&wt(ca)),K!==r?(re=Y,de=Y,Je=Fs(),Je!==r?(At=Fs(),At!==r?(dr=Fs(),dr!==r?(vr=Fs(),vr!==r?(Un=Fs(),Un!==r?(mi=Fs(),mi!==r?(Cs=Fs(),Cs!==r?(JA=Fs(),JA!==r?(Je=[Je,At,dr,vr,Un,mi,Cs,JA],de=Je):(Y=de,de=r)):(Y=de,de=r)):(Y=de,de=r)):(Y=de,de=r)):(Y=de,de=r)):(Y=de,de=r)):(Y=de,de=r)):(Y=de,de=r),de!==r?re=t.substring(re,Y):re=de,re!==r?(xt=O,K=LA(re),O=K):(Y=O,O=r)):(Y=O,O=r)))),O}function pa(){var O;return MA.test(t.charAt(Y))?(O=t.charAt(Y),Y++):(O=r,yt===0&&wt(ua)),O}function Fs(){var O;return Bl.test(t.charAt(Y))?(O=t.charAt(Y),Y++):(O=r,yt===0&&wt(Mt)),O}function Dh(){var O,K,re,de,Je;if(O=Y,K=[],re=Y,t.charCodeAt(Y)===92?(de=oa,Y++):(de=r,yt===0&&wt(aa)),de!==r?(t.length>Y?(Je=t.charAt(Y),Y++):(Je=r,yt===0&&wt(kn)),Je!==r?(xt=re,de=Bo(Je),re=de):(Y=re,re=r)):(Y=re,re=r),re===r&&(re=Y,t.substr(Y,2)===fa?(de=fa,Y+=2):(de=r,yt===0&&wt(Ha)),de!==r&&(xt=re,de=rs()),re=de,re===r&&(re=Y,de=Y,yt++,Je=Dy(),yt--,Je===r?de=void 0:(Y=de,de=r),de!==r?(t.length>Y?(Je=t.charAt(Y),Y++):(Je=r,yt===0&&wt(kn)),Je!==r?(xt=re,de=Bo(Je),re=de):(Y=re,re=r)):(Y=re,re=r))),re!==r)for(;re!==r;)K.push(re),re=Y,t.charCodeAt(Y)===92?(de=oa,Y++):(de=r,yt===0&&wt(aa)),de!==r?(t.length>Y?(Je=t.charAt(Y),Y++):(Je=r,yt===0&&wt(kn)),Je!==r?(xt=re,de=Bo(Je),re=de):(Y=re,re=r)):(Y=re,re=r),re===r&&(re=Y,t.substr(Y,2)===fa?(de=fa,Y+=2):(de=r,yt===0&&wt(Ha)),de!==r&&(xt=re,de=rs()),re=de,re===r&&(re=Y,de=Y,yt++,Je=Dy(),yt--,Je===r?de=void 0:(Y=de,de=r),de!==r?(t.length>Y?(Je=t.charAt(Y),Y++):(Je=r,yt===0&&wt(kn)),Je!==r?(xt=re,de=Bo(Je),re=de):(Y=re,re=r)):(Y=re,re=r)));else K=r;return K!==r&&(xt=O,K=ro(K)),O=K,O}function YA(){var O,K,re,de,Je,At;if(O=Y,t.charCodeAt(Y)===45?(K=cc,Y++):(K=r,yt===0&&wt(pu)),K===r&&(t.charCodeAt(Y)===43?(K=uc,Y++):(K=r,yt===0&&wt(ja))),K===r&&(K=null),K!==r){if(re=[],it.test(t.charAt(Y))?(de=t.charAt(Y),Y++):(de=r,yt===0&&wt(Ue)),de!==r)for(;de!==r;)re.push(de),it.test(t.charAt(Y))?(de=t.charAt(Y),Y++):(de=r,yt===0&&wt(Ue));else re=r;if(re!==r)if(t.charCodeAt(Y)===46?(de=Mi,Y++):(de=r,yt===0&&wt(Is)),de!==r){if(Je=[],it.test(t.charAt(Y))?(At=t.charAt(Y),Y++):(At=r,yt===0&&wt(Ue)),At!==r)for(;At!==r;)Je.push(At),it.test(t.charAt(Y))?(At=t.charAt(Y),Y++):(At=r,yt===0&&wt(Ue));else Je=r;Je!==r?(xt=O,K=vl(K,re,Je),O=K):(Y=O,O=r)}else Y=O,O=r;else Y=O,O=r}else Y=O,O=r;if(O===r){if(O=Y,t.charCodeAt(Y)===45?(K=cc,Y++):(K=r,yt===0&&wt(pu)),K===r&&(t.charCodeAt(Y)===43?(K=uc,Y++):(K=r,yt===0&&wt(ja))),K===r&&(K=null),K!==r){if(re=[],it.test(t.charAt(Y))?(de=t.charAt(Y),Y++):(de=r,yt===0&&wt(Ue)),de!==r)for(;de!==r;)re.push(de),it.test(t.charAt(Y))?(de=t.charAt(Y),Y++):(de=r,yt===0&&wt(Ue));else re=r;re!==r?(xt=O,K=gf(K,re),O=K):(Y=O,O=r)}else Y=O,O=r;if(O===r&&(O=Y,K=VA(),K!==r&&(xt=O,K=fc(K)),O=K,O===r&&(O=Y,K=pc(),K!==r&&(xt=O,K=wi(K)),O=K,O===r)))if(O=Y,t.charCodeAt(Y)===40?(K=ye,Y++):(K=r,yt===0&&wt(Ae)),K!==r){for(re=[],de=kt();de!==r;)re.push(de),de=kt();if(re!==r)if(de=io(),de!==r){for(Je=[],At=kt();At!==r;)Je.push(At),At=kt();Je!==r?(t.charCodeAt(Y)===41?(At=se,Y++):(At=r,yt===0&&wt(X)),At!==r?(xt=O,K=Qn(de),O=K):(Y=O,O=r)):(Y=O,O=r)}else Y=O,O=r;else Y=O,O=r}else Y=O,O=r}return O}function vf(){var O,K,re,de,Je,At,dr,vr;if(O=Y,K=YA(),K!==r){for(re=[],de=Y,Je=[],At=kt();At!==r;)Je.push(At),At=kt();if(Je!==r)if(t.charCodeAt(Y)===42?(At=Ac,Y++):(At=r,yt===0&&wt(Ke)),At===r&&(t.charCodeAt(Y)===47?(At=st,Y++):(At=r,yt===0&&wt(St))),At!==r){for(dr=[],vr=kt();vr!==r;)dr.push(vr),vr=kt();dr!==r?(vr=YA(),vr!==r?(xt=de,Je=lr(K,At,vr),de=Je):(Y=de,de=r)):(Y=de,de=r)}else Y=de,de=r;else Y=de,de=r;for(;de!==r;){for(re.push(de),de=Y,Je=[],At=kt();At!==r;)Je.push(At),At=kt();if(Je!==r)if(t.charCodeAt(Y)===42?(At=Ac,Y++):(At=r,yt===0&&wt(Ke)),At===r&&(t.charCodeAt(Y)===47?(At=st,Y++):(At=r,yt===0&&wt(St))),At!==r){for(dr=[],vr=kt();vr!==r;)dr.push(vr),vr=kt();dr!==r?(vr=YA(),vr!==r?(xt=de,Je=lr(K,At,vr),de=Je):(Y=de,de=r)):(Y=de,de=r)}else Y=de,de=r;else Y=de,de=r}re!==r?(xt=O,K=te(K,re),O=K):(Y=O,O=r)}else Y=O,O=r;return O}function io(){var O,K,re,de,Je,At,dr,vr;if(O=Y,K=vf(),K!==r){for(re=[],de=Y,Je=[],At=kt();At!==r;)Je.push(At),At=kt();if(Je!==r)if(t.charCodeAt(Y)===43?(At=uc,Y++):(At=r,yt===0&&wt(ja)),At===r&&(t.charCodeAt(Y)===45?(At=cc,Y++):(At=r,yt===0&&wt(pu))),At!==r){for(dr=[],vr=kt();vr!==r;)dr.push(vr),vr=kt();dr!==r?(vr=vf(),vr!==r?(xt=de,Je=Ee(K,At,vr),de=Je):(Y=de,de=r)):(Y=de,de=r)}else Y=de,de=r;else Y=de,de=r;for(;de!==r;){for(re.push(de),de=Y,Je=[],At=kt();At!==r;)Je.push(At),At=kt();if(Je!==r)if(t.charCodeAt(Y)===43?(At=uc,Y++):(At=r,yt===0&&wt(ja)),At===r&&(t.charCodeAt(Y)===45?(At=cc,Y++):(At=r,yt===0&&wt(pu))),At!==r){for(dr=[],vr=kt();vr!==r;)dr.push(vr),vr=kt();dr!==r?(vr=vf(),vr!==r?(xt=de,Je=Ee(K,At,vr),de=Je):(Y=de,de=r)):(Y=de,de=r)}else Y=de,de=r;else Y=de,de=r}re!==r?(xt=O,K=te(K,re),O=K):(Y=O,O=r)}else Y=O,O=r;return O}function Xr(){var O,K,re,de,Je,At;if(O=Y,t.substr(Y,3)===Oe?(K=Oe,Y+=3):(K=r,yt===0&&wt(dt)),K!==r){for(re=[],de=kt();de!==r;)re.push(de),de=kt();if(re!==r)if(de=io(),de!==r){for(Je=[],At=kt();At!==r;)Je.push(At),At=kt();Je!==r?(t.substr(Y,2)===Et?(At=Et,Y+=2):(At=r,yt===0&&wt(Pt)),At!==r?(xt=O,K=tr(de),O=K):(Y=O,O=r)):(Y=O,O=r)}else Y=O,O=r;else Y=O,O=r}else Y=O,O=r;return O}function Ph(){var O,K,re,de;return O=Y,t.substr(Y,2)===An?(K=An,Y+=2):(K=r,yt===0&&wt(li)),K!==r?(re=Aa(),re!==r?(t.charCodeAt(Y)===41?(de=se,Y++):(de=r,yt===0&&wt(X)),de!==r?(xt=O,K=Gi(re),O=K):(Y=O,O=r)):(Y=O,O=r)):(Y=O,O=r),O}function VA(){var O,K,re,de,Je,At;return O=Y,t.substr(Y,2)===Rn?(K=Rn,Y+=2):(K=r,yt===0&&wt(Ga)),K!==r?(re=pc(),re!==r?(t.substr(Y,2)===my?(de=my,Y+=2):(de=r,yt===0&&wt(X1)),de!==r?(Je=Ts(),Je!==r?(t.charCodeAt(Y)===125?(At=j,Y++):(At=r,yt===0&&wt(rt)),At!==r?(xt=O,K=vo(re,Je),O=K):(Y=O,O=r)):(Y=O,O=r)):(Y=O,O=r)):(Y=O,O=r)):(Y=O,O=r),O===r&&(O=Y,t.substr(Y,2)===Rn?(K=Rn,Y+=2):(K=r,yt===0&&wt(Ga)),K!==r?(re=pc(),re!==r?(t.substr(Y,3)===yy?(de=yy,Y+=3):(de=r,yt===0&&wt(Eh)),de!==r?(xt=O,K=$1(re),O=K):(Y=O,O=r)):(Y=O,O=r)):(Y=O,O=r),O===r&&(O=Y,t.substr(Y,2)===Rn?(K=Rn,Y+=2):(K=r,yt===0&&wt(Ga)),K!==r?(re=pc(),re!==r?(t.substr(Y,2)===So?(de=So,Y+=2):(de=r,yt===0&&wt(Ih)),de!==r?(Je=Ts(),Je!==r?(t.charCodeAt(Y)===125?(At=j,Y++):(At=r,yt===0&&wt(rt)),At!==r?(xt=O,K=Ch(re,Je),O=K):(Y=O,O=r)):(Y=O,O=r)):(Y=O,O=r)):(Y=O,O=r)):(Y=O,O=r),O===r&&(O=Y,t.substr(Y,2)===Rn?(K=Rn,Y+=2):(K=r,yt===0&&wt(Ga)),K!==r?(re=pc(),re!==r?(t.substr(Y,3)===hu?(de=hu,Y+=3):(de=r,yt===0&&wt(wh)),de!==r?(xt=O,K=Fg(re),O=K):(Y=O,O=r)):(Y=O,O=r)):(Y=O,O=r),O===r&&(O=Y,t.substr(Y,2)===Rn?(K=Rn,Y+=2):(K=r,yt===0&&wt(Ga)),K!==r?(re=pc(),re!==r?(t.charCodeAt(Y)===125?(de=j,Y++):(de=r,yt===0&&wt(rt)),de!==r?(xt=O,K=Ng(re),O=K):(Y=O,O=r)):(Y=O,O=r)):(Y=O,O=r),O===r&&(O=Y,t.charCodeAt(Y)===36?(K=Og,Y++):(K=r,yt===0&&wt(Ey)),K!==r?(re=pc(),re!==r?(xt=O,K=Ng(re),O=K):(Y=O,O=r)):(Y=O,O=r)))))),O}function Sy(){var O,K,re;return O=Y,K=Wg(),K!==r?(xt=Y,re=df(K),re?re=void 0:re=r,re!==r?(xt=O,K=Do(K),O=K):(Y=O,O=r)):(Y=O,O=r),O}function Wg(){var O,K,re,de,Je;if(O=Y,K=[],re=Y,de=Y,yt++,Je=xh(),yt--,Je===r?de=void 0:(Y=de,de=r),de!==r?(t.length>Y?(Je=t.charAt(Y),Y++):(Je=r,yt===0&&wt(kn)),Je!==r?(xt=re,de=Bo(Je),re=de):(Y=re,re=r)):(Y=re,re=r),re!==r)for(;re!==r;)K.push(re),re=Y,de=Y,yt++,Je=xh(),yt--,Je===r?de=void 0:(Y=de,de=r),de!==r?(t.length>Y?(Je=t.charAt(Y),Y++):(Je=r,yt===0&&wt(kn)),Je!==r?(xt=re,de=Bo(Je),re=de):(Y=re,re=r)):(Y=re,re=r);else K=r;return K!==r&&(xt=O,K=ro(K)),O=K,O}function bh(){var O,K,re;if(O=Y,K=[],Sl.test(t.charAt(Y))?(re=t.charAt(Y),Y++):(re=r,yt===0&&wt(Bh)),re!==r)for(;re!==r;)K.push(re),Sl.test(t.charAt(Y))?(re=t.charAt(Y),Y++):(re=r,yt===0&&wt(Bh));else K=r;return K!==r&&(xt=O,K=Lg()),O=K,O}function pc(){var O,K,re;if(O=Y,K=[],Dl.test(t.charAt(Y))?(re=t.charAt(Y),Y++):(re=r,yt===0&&wt(Pl)),re!==r)for(;re!==r;)K.push(re),Dl.test(t.charAt(Y))?(re=t.charAt(Y),Y++):(re=r,yt===0&&wt(Pl));else K=r;return K!==r&&(xt=O,K=Lg()),O=K,O}function Dy(){var O;return Iy.test(t.charAt(Y))?(O=t.charAt(Y),Y++):(O=r,yt===0&&wt(UA)),O}function xh(){var O;return Cy.test(t.charAt(Y))?(O=t.charAt(Y),Y++):(O=r,yt===0&&wt(wy)),O}function kt(){var O,K;if(O=[],_A.test(t.charAt(Y))?(K=t.charAt(Y),Y++):(K=r,yt===0&&wt(HA)),K!==r)for(;K!==r;)O.push(K),_A.test(t.charAt(Y))?(K=t.charAt(Y),Y++):(K=r,yt===0&&wt(HA));else O=r;return O}if(gu=a(),gu!==r&&Y===t.length)return gu;throw gu!==r&&Y!1}){try{return(0,gee.parse)(t,e)}catch(r){throw r.location&&(r.message=r.message.replace(/(\.)?$/,` (line ${r.location.start.line}, column ${r.location.start.column})$1`)),r}}function fE(t,{endSemicolon:e=!1}={}){return t.map(({command:r,type:s},a)=>`${fx(r)}${s===";"?a!==t.length-1||e?";":"":" &"}`).join(" ")}function fx(t){return`${AE(t.chain)}${t.then?` ${_U(t.then)}`:""}`}function _U(t){return`${t.type} ${fx(t.line)}`}function AE(t){return`${jU(t)}${t.then?` ${HU(t.then)}`:""}`}function HU(t){return`${t.type} ${AE(t.chain)}`}function jU(t){switch(t.type){case"command":return`${t.envs.length>0?`${t.envs.map(e=>cx(e)).join(" ")} `:""}${t.args.map(e=>GU(e)).join(" ")}`;case"subshell":return`(${fE(t.subshell)})${t.args.length>0?` ${t.args.map(e=>H2(e)).join(" ")}`:""}`;case"group":return`{ ${fE(t.group,{endSemicolon:!0})} }${t.args.length>0?` ${t.args.map(e=>H2(e)).join(" ")}`:""}`;case"envs":return t.envs.map(e=>cx(e)).join(" ");default:throw new Error(`Unsupported command type: "${t.type}"`)}}function cx(t){return`${t.name}=${t.args[0]?vd(t.args[0]):""}`}function GU(t){switch(t.type){case"redirection":return H2(t);case"argument":return vd(t);default:throw new Error(`Unsupported argument type: "${t.type}"`)}}function H2(t){return`${t.subtype} ${t.args.map(e=>vd(e)).join(" ")}`}function vd(t){return t.segments.map(e=>qU(e)).join("")}function qU(t){let e=(s,a)=>a?`"${s}"`:s,r=s=>s===""?"''":s.match(/[()}<>$|&;"'\n\t ]/)?s.match(/['\t\p{C}]/u)?s.match(/'/)?`"${s.replace(/["$\t\p{C}]/u,Oqe)}"`:`$'${s.replace(/[\t\p{C}]/u,mee)}'`:`'${s}'`:s;switch(t.type){case"text":return r(t.text);case"glob":return t.pattern;case"shell":return e(`$(${fE(t.shell)})`,t.quoted);case"variable":return e(typeof t.defaultValue>"u"?typeof t.alternativeValue>"u"?`\${${t.name}}`:t.alternativeValue.length===0?`\${${t.name}:+}`:`\${${t.name}:+${t.alternativeValue.map(s=>vd(s)).join(" ")}}`:t.defaultValue.length===0?`\${${t.name}:-}`:`\${${t.name}:-${t.defaultValue.map(s=>vd(s)).join(" ")}}`,t.quoted);case"arithmetic":return`$(( ${Ax(t.arithmetic)} ))`;default:throw new Error(`Unsupported argument segment type: "${t.type}"`)}}function Ax(t){let e=a=>{switch(a){case"addition":return"+";case"subtraction":return"-";case"multiplication":return"*";case"division":return"/";default:throw new Error(`Can't extract operator from arithmetic expression of type "${a}"`)}},r=(a,n)=>n?`( ${a} )`:a,s=a=>r(Ax(a),!["number","variable"].includes(a.type));switch(t.type){case"number":return String(t.value);case"variable":return t.name;default:return`${s(t.left)} ${e(t.type)} ${s(t.right)}`}}var gee,dee,Nqe,mee,Oqe,yee=Ze(()=>{gee=ut(hee());dee=new Map([["\f","\\f"],[` `,"\\n"],["\r","\\r"],[" ","\\t"],["\v","\\v"],["\0","\\0"]]),Nqe=new Map([["\\","\\\\"],["$","\\$"],['"','\\"'],...Array.from(dee,([t,e])=>[t,`"$'${e}'"`])]),mee=t=>dee.get(t)??`\\x${t.charCodeAt(0).toString(16).padStart(2,"0")}`,Oqe=t=>Nqe.get(t)??`"$'${mee(t)}'"`});var Iee=_((Wkt,Eee)=>{"use strict";function Lqe(t,e){function r(){this.constructor=t}r.prototype=e.prototype,t.prototype=new r}function Sd(t,e,r,s){this.message=t,this.expected=e,this.found=r,this.location=s,this.name="SyntaxError",typeof Error.captureStackTrace=="function"&&Error.captureStackTrace(this,Sd)}Lqe(Sd,Error);Sd.buildMessage=function(t,e){var r={literal:function(h){return'"'+a(h.text)+'"'},class:function(h){var E="",C;for(C=0;C0){for(C=1,S=1;Cue&&(ue=W,le=[]),le.push(Ue))}function rt(Ue,x){return new Sd(Ue,null,null,x)}function Fe(Ue,x,w){return new Sd(Sd.buildMessage(Ue,x),Ue,x,w)}function Ne(){var Ue,x,w,P;return Ue=W,x=be(),x!==r?(t.charCodeAt(W)===47?(w=n,W++):(w=r,me===0&&j(c)),w!==r?(P=be(),P!==r?(ee=Ue,x=f(x,P),Ue=x):(W=Ue,Ue=r)):(W=Ue,Ue=r)):(W=Ue,Ue=r),Ue===r&&(Ue=W,x=be(),x!==r&&(ee=Ue,x=p(x)),Ue=x),Ue}function be(){var Ue,x,w,P;return Ue=W,x=Ve(),x!==r?(t.charCodeAt(W)===64?(w=h,W++):(w=r,me===0&&j(E)),w!==r?(P=it(),P!==r?(ee=Ue,x=C(x,P),Ue=x):(W=Ue,Ue=r)):(W=Ue,Ue=r)):(W=Ue,Ue=r),Ue===r&&(Ue=W,x=Ve(),x!==r&&(ee=Ue,x=S(x)),Ue=x),Ue}function Ve(){var Ue,x,w,P,y;return Ue=W,t.charCodeAt(W)===64?(x=h,W++):(x=r,me===0&&j(E)),x!==r?(w=ke(),w!==r?(t.charCodeAt(W)===47?(P=n,W++):(P=r,me===0&&j(c)),P!==r?(y=ke(),y!==r?(ee=Ue,x=b(),Ue=x):(W=Ue,Ue=r)):(W=Ue,Ue=r)):(W=Ue,Ue=r)):(W=Ue,Ue=r),Ue===r&&(Ue=W,x=ke(),x!==r&&(ee=Ue,x=b()),Ue=x),Ue}function ke(){var Ue,x,w;if(Ue=W,x=[],I.test(t.charAt(W))?(w=t.charAt(W),W++):(w=r,me===0&&j(T)),w!==r)for(;w!==r;)x.push(w),I.test(t.charAt(W))?(w=t.charAt(W),W++):(w=r,me===0&&j(T));else x=r;return x!==r&&(ee=Ue,x=b()),Ue=x,Ue}function it(){var Ue,x,w;if(Ue=W,x=[],N.test(t.charAt(W))?(w=t.charAt(W),W++):(w=r,me===0&&j(U)),w!==r)for(;w!==r;)x.push(w),N.test(t.charAt(W))?(w=t.charAt(W),W++):(w=r,me===0&&j(U));else x=r;return x!==r&&(ee=Ue,x=b()),Ue=x,Ue}if(pe=a(),pe!==r&&W===t.length)return pe;throw pe!==r&&W{Cee=ut(Iee())});var Pd=_((Vkt,Dd)=>{"use strict";function Bee(t){return typeof t>"u"||t===null}function Uqe(t){return typeof t=="object"&&t!==null}function _qe(t){return Array.isArray(t)?t:Bee(t)?[]:[t]}function Hqe(t,e){var r,s,a,n;if(e)for(n=Object.keys(e),r=0,s=n.length;r{"use strict";function j2(t,e){Error.call(this),this.name="YAMLException",this.reason=t,this.mark=e,this.message=(this.reason||"(unknown reason)")+(this.mark?" "+this.mark.toString():""),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=new Error().stack||""}j2.prototype=Object.create(Error.prototype);j2.prototype.constructor=j2;j2.prototype.toString=function(e){var r=this.name+": ";return r+=this.reason||"(unknown reason)",!e&&this.mark&&(r+=" "+this.mark.toString()),r};vee.exports=j2});var Pee=_((Kkt,Dee)=>{"use strict";var See=Pd();function WU(t,e,r,s,a){this.name=t,this.buffer=e,this.position=r,this.line=s,this.column=a}WU.prototype.getSnippet=function(e,r){var s,a,n,c,f;if(!this.buffer)return null;for(e=e||4,r=r||75,s="",a=this.position;a>0&&`\0\r \x85\u2028\u2029`.indexOf(this.buffer.charAt(a-1))===-1;)if(a-=1,this.position-a>r/2-1){s=" ... ",a+=5;break}for(n="",c=this.position;cr/2-1){n=" ... ",c-=5;break}return f=this.buffer.slice(a,c),See.repeat(" ",e)+s+f+n+` `+See.repeat(" ",e+this.position-a+s.length)+"^"};WU.prototype.toString=function(e){var r,s="";return this.name&&(s+='in "'+this.name+'" '),s+="at line "+(this.line+1)+", column "+(this.column+1),e||(r=this.getSnippet(),r&&(s+=`: `+r)),s};Dee.exports=WU});var Ss=_((zkt,xee)=>{"use strict";var bee=pE(),qqe=["kind","resolve","construct","instanceOf","predicate","represent","defaultStyle","styleAliases"],Wqe=["scalar","sequence","mapping"];function Yqe(t){var e={};return t!==null&&Object.keys(t).forEach(function(r){t[r].forEach(function(s){e[String(s)]=r})}),e}function Vqe(t,e){if(e=e||{},Object.keys(e).forEach(function(r){if(qqe.indexOf(r)===-1)throw new bee('Unknown option "'+r+'" is met in definition of "'+t+'" YAML type.')}),this.tag=t,this.kind=e.kind||null,this.resolve=e.resolve||function(){return!0},this.construct=e.construct||function(r){return r},this.instanceOf=e.instanceOf||null,this.predicate=e.predicate||null,this.represent=e.represent||null,this.defaultStyle=e.defaultStyle||null,this.styleAliases=Yqe(e.styleAliases||null),Wqe.indexOf(this.kind)===-1)throw new bee('Unknown kind "'+this.kind+'" is specified for "'+t+'" YAML type.')}xee.exports=Vqe});var bd=_((Zkt,Qee)=>{"use strict";var kee=Pd(),gx=pE(),Jqe=Ss();function YU(t,e,r){var s=[];return t.include.forEach(function(a){r=YU(a,e,r)}),t[e].forEach(function(a){r.forEach(function(n,c){n.tag===a.tag&&n.kind===a.kind&&s.push(c)}),r.push(a)}),r.filter(function(a,n){return s.indexOf(n)===-1})}function Kqe(){var t={scalar:{},sequence:{},mapping:{},fallback:{}},e,r;function s(a){t[a.kind][a.tag]=t.fallback[a.tag]=a}for(e=0,r=arguments.length;e{"use strict";var zqe=Ss();Ree.exports=new zqe("tag:yaml.org,2002:str",{kind:"scalar",construct:function(t){return t!==null?t:""}})});var Nee=_(($kt,Fee)=>{"use strict";var Zqe=Ss();Fee.exports=new Zqe("tag:yaml.org,2002:seq",{kind:"sequence",construct:function(t){return t!==null?t:[]}})});var Lee=_((eQt,Oee)=>{"use strict";var Xqe=Ss();Oee.exports=new Xqe("tag:yaml.org,2002:map",{kind:"mapping",construct:function(t){return t!==null?t:{}}})});var dx=_((tQt,Mee)=>{"use strict";var $qe=bd();Mee.exports=new $qe({explicit:[Tee(),Nee(),Lee()]})});var _ee=_((rQt,Uee)=>{"use strict";var e5e=Ss();function t5e(t){if(t===null)return!0;var e=t.length;return e===1&&t==="~"||e===4&&(t==="null"||t==="Null"||t==="NULL")}function r5e(){return null}function n5e(t){return t===null}Uee.exports=new e5e("tag:yaml.org,2002:null",{kind:"scalar",resolve:t5e,construct:r5e,predicate:n5e,represent:{canonical:function(){return"~"},lowercase:function(){return"null"},uppercase:function(){return"NULL"},camelcase:function(){return"Null"}},defaultStyle:"lowercase"})});var jee=_((nQt,Hee)=>{"use strict";var i5e=Ss();function s5e(t){if(t===null)return!1;var e=t.length;return e===4&&(t==="true"||t==="True"||t==="TRUE")||e===5&&(t==="false"||t==="False"||t==="FALSE")}function o5e(t){return t==="true"||t==="True"||t==="TRUE"}function a5e(t){return Object.prototype.toString.call(t)==="[object Boolean]"}Hee.exports=new i5e("tag:yaml.org,2002:bool",{kind:"scalar",resolve:s5e,construct:o5e,predicate:a5e,represent:{lowercase:function(t){return t?"true":"false"},uppercase:function(t){return t?"TRUE":"FALSE"},camelcase:function(t){return t?"True":"False"}},defaultStyle:"lowercase"})});var qee=_((iQt,Gee)=>{"use strict";var l5e=Pd(),c5e=Ss();function u5e(t){return 48<=t&&t<=57||65<=t&&t<=70||97<=t&&t<=102}function f5e(t){return 48<=t&&t<=55}function A5e(t){return 48<=t&&t<=57}function p5e(t){if(t===null)return!1;var e=t.length,r=0,s=!1,a;if(!e)return!1;if(a=t[r],(a==="-"||a==="+")&&(a=t[++r]),a==="0"){if(r+1===e)return!0;if(a=t[++r],a==="b"){for(r++;r=0?"0b"+t.toString(2):"-0b"+t.toString(2).slice(1)},octal:function(t){return t>=0?"0"+t.toString(8):"-0"+t.toString(8).slice(1)},decimal:function(t){return t.toString(10)},hexadecimal:function(t){return t>=0?"0x"+t.toString(16).toUpperCase():"-0x"+t.toString(16).toUpperCase().slice(1)}},defaultStyle:"decimal",styleAliases:{binary:[2,"bin"],octal:[8,"oct"],decimal:[10,"dec"],hexadecimal:[16,"hex"]}})});var Vee=_((sQt,Yee)=>{"use strict";var Wee=Pd(),d5e=Ss(),m5e=new RegExp("^(?:[-+]?(?:0|[1-9][0-9_]*)(?:\\.[0-9_]*)?(?:[eE][-+]?[0-9]+)?|\\.[0-9_]+(?:[eE][-+]?[0-9]+)?|[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\\.[0-9_]*|[-+]?\\.(?:inf|Inf|INF)|\\.(?:nan|NaN|NAN))$");function y5e(t){return!(t===null||!m5e.test(t)||t[t.length-1]==="_")}function E5e(t){var e,r,s,a;return e=t.replace(/_/g,"").toLowerCase(),r=e[0]==="-"?-1:1,a=[],"+-".indexOf(e[0])>=0&&(e=e.slice(1)),e===".inf"?r===1?Number.POSITIVE_INFINITY:Number.NEGATIVE_INFINITY:e===".nan"?NaN:e.indexOf(":")>=0?(e.split(":").forEach(function(n){a.unshift(parseFloat(n,10))}),e=0,s=1,a.forEach(function(n){e+=n*s,s*=60}),r*e):r*parseFloat(e,10)}var I5e=/^[-+]?[0-9]+e/;function C5e(t,e){var r;if(isNaN(t))switch(e){case"lowercase":return".nan";case"uppercase":return".NAN";case"camelcase":return".NaN"}else if(Number.POSITIVE_INFINITY===t)switch(e){case"lowercase":return".inf";case"uppercase":return".INF";case"camelcase":return".Inf"}else if(Number.NEGATIVE_INFINITY===t)switch(e){case"lowercase":return"-.inf";case"uppercase":return"-.INF";case"camelcase":return"-.Inf"}else if(Wee.isNegativeZero(t))return"-0.0";return r=t.toString(10),I5e.test(r)?r.replace("e",".e"):r}function w5e(t){return Object.prototype.toString.call(t)==="[object Number]"&&(t%1!==0||Wee.isNegativeZero(t))}Yee.exports=new d5e("tag:yaml.org,2002:float",{kind:"scalar",resolve:y5e,construct:E5e,predicate:w5e,represent:C5e,defaultStyle:"lowercase"})});var VU=_((oQt,Jee)=>{"use strict";var B5e=bd();Jee.exports=new B5e({include:[dx()],implicit:[_ee(),jee(),qee(),Vee()]})});var JU=_((aQt,Kee)=>{"use strict";var v5e=bd();Kee.exports=new v5e({include:[VU()]})});var $ee=_((lQt,Xee)=>{"use strict";var S5e=Ss(),zee=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9])-([0-9][0-9])$"),Zee=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9]?)-([0-9][0-9]?)(?:[Tt]|[ \\t]+)([0-9][0-9]?):([0-9][0-9]):([0-9][0-9])(?:\\.([0-9]*))?(?:[ \\t]*(Z|([-+])([0-9][0-9]?)(?::([0-9][0-9]))?))?$");function D5e(t){return t===null?!1:zee.exec(t)!==null||Zee.exec(t)!==null}function P5e(t){var e,r,s,a,n,c,f,p=0,h=null,E,C,S;if(e=zee.exec(t),e===null&&(e=Zee.exec(t)),e===null)throw new Error("Date resolve error");if(r=+e[1],s=+e[2]-1,a=+e[3],!e[4])return new Date(Date.UTC(r,s,a));if(n=+e[4],c=+e[5],f=+e[6],e[7]){for(p=e[7].slice(0,3);p.length<3;)p+="0";p=+p}return e[9]&&(E=+e[10],C=+(e[11]||0),h=(E*60+C)*6e4,e[9]==="-"&&(h=-h)),S=new Date(Date.UTC(r,s,a,n,c,f,p)),h&&S.setTime(S.getTime()-h),S}function b5e(t){return t.toISOString()}Xee.exports=new S5e("tag:yaml.org,2002:timestamp",{kind:"scalar",resolve:D5e,construct:P5e,instanceOf:Date,represent:b5e})});var tte=_((cQt,ete)=>{"use strict";var x5e=Ss();function k5e(t){return t==="<<"||t===null}ete.exports=new x5e("tag:yaml.org,2002:merge",{kind:"scalar",resolve:k5e})});var ite=_((uQt,nte)=>{"use strict";var xd;try{rte=Ie,xd=rte("buffer").Buffer}catch{}var rte,Q5e=Ss(),KU=`ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/= \r`;function R5e(t){if(t===null)return!1;var e,r,s=0,a=t.length,n=KU;for(r=0;r64)){if(e<0)return!1;s+=6}return s%8===0}function T5e(t){var e,r,s=t.replace(/[\r\n=]/g,""),a=s.length,n=KU,c=0,f=[];for(e=0;e>16&255),f.push(c>>8&255),f.push(c&255)),c=c<<6|n.indexOf(s.charAt(e));return r=a%4*6,r===0?(f.push(c>>16&255),f.push(c>>8&255),f.push(c&255)):r===18?(f.push(c>>10&255),f.push(c>>2&255)):r===12&&f.push(c>>4&255),xd?xd.from?xd.from(f):new xd(f):f}function F5e(t){var e="",r=0,s,a,n=t.length,c=KU;for(s=0;s>18&63],e+=c[r>>12&63],e+=c[r>>6&63],e+=c[r&63]),r=(r<<8)+t[s];return a=n%3,a===0?(e+=c[r>>18&63],e+=c[r>>12&63],e+=c[r>>6&63],e+=c[r&63]):a===2?(e+=c[r>>10&63],e+=c[r>>4&63],e+=c[r<<2&63],e+=c[64]):a===1&&(e+=c[r>>2&63],e+=c[r<<4&63],e+=c[64],e+=c[64]),e}function N5e(t){return xd&&xd.isBuffer(t)}nte.exports=new Q5e("tag:yaml.org,2002:binary",{kind:"scalar",resolve:R5e,construct:T5e,predicate:N5e,represent:F5e})});var ote=_((AQt,ste)=>{"use strict";var O5e=Ss(),L5e=Object.prototype.hasOwnProperty,M5e=Object.prototype.toString;function U5e(t){if(t===null)return!0;var e=[],r,s,a,n,c,f=t;for(r=0,s=f.length;r{"use strict";var H5e=Ss(),j5e=Object.prototype.toString;function G5e(t){if(t===null)return!0;var e,r,s,a,n,c=t;for(n=new Array(c.length),e=0,r=c.length;e{"use strict";var W5e=Ss(),Y5e=Object.prototype.hasOwnProperty;function V5e(t){if(t===null)return!0;var e,r=t;for(e in r)if(Y5e.call(r,e)&&r[e]!==null)return!1;return!0}function J5e(t){return t!==null?t:{}}cte.exports=new W5e("tag:yaml.org,2002:set",{kind:"mapping",resolve:V5e,construct:J5e})});var gE=_((gQt,fte)=>{"use strict";var K5e=bd();fte.exports=new K5e({include:[JU()],implicit:[$ee(),tte()],explicit:[ite(),ote(),lte(),ute()]})});var pte=_((dQt,Ate)=>{"use strict";var z5e=Ss();function Z5e(){return!0}function X5e(){}function $5e(){return""}function e9e(t){return typeof t>"u"}Ate.exports=new z5e("tag:yaml.org,2002:js/undefined",{kind:"scalar",resolve:Z5e,construct:X5e,predicate:e9e,represent:$5e})});var gte=_((mQt,hte)=>{"use strict";var t9e=Ss();function r9e(t){if(t===null||t.length===0)return!1;var e=t,r=/\/([gim]*)$/.exec(t),s="";return!(e[0]==="/"&&(r&&(s=r[1]),s.length>3||e[e.length-s.length-1]!=="/"))}function n9e(t){var e=t,r=/\/([gim]*)$/.exec(t),s="";return e[0]==="/"&&(r&&(s=r[1]),e=e.slice(1,e.length-s.length-1)),new RegExp(e,s)}function i9e(t){var e="/"+t.source+"/";return t.global&&(e+="g"),t.multiline&&(e+="m"),t.ignoreCase&&(e+="i"),e}function s9e(t){return Object.prototype.toString.call(t)==="[object RegExp]"}hte.exports=new t9e("tag:yaml.org,2002:js/regexp",{kind:"scalar",resolve:r9e,construct:n9e,predicate:s9e,represent:i9e})});var yte=_((yQt,mte)=>{"use strict";var mx;try{dte=Ie,mx=dte("esprima")}catch{typeof window<"u"&&(mx=window.esprima)}var dte,o9e=Ss();function a9e(t){if(t===null)return!1;try{var e="("+t+")",r=mx.parse(e,{range:!0});return!(r.type!=="Program"||r.body.length!==1||r.body[0].type!=="ExpressionStatement"||r.body[0].expression.type!=="ArrowFunctionExpression"&&r.body[0].expression.type!=="FunctionExpression")}catch{return!1}}function l9e(t){var e="("+t+")",r=mx.parse(e,{range:!0}),s=[],a;if(r.type!=="Program"||r.body.length!==1||r.body[0].type!=="ExpressionStatement"||r.body[0].expression.type!=="ArrowFunctionExpression"&&r.body[0].expression.type!=="FunctionExpression")throw new Error("Failed to resolve function");return r.body[0].expression.params.forEach(function(n){s.push(n.name)}),a=r.body[0].expression.body.range,r.body[0].expression.body.type==="BlockStatement"?new Function(s,e.slice(a[0]+1,a[1]-1)):new Function(s,"return "+e.slice(a[0],a[1]))}function c9e(t){return t.toString()}function u9e(t){return Object.prototype.toString.call(t)==="[object Function]"}mte.exports=new o9e("tag:yaml.org,2002:js/function",{kind:"scalar",resolve:a9e,construct:l9e,predicate:u9e,represent:c9e})});var G2=_((IQt,Ite)=>{"use strict";var Ete=bd();Ite.exports=Ete.DEFAULT=new Ete({include:[gE()],explicit:[pte(),gte(),yte()]})});var Ute=_((CQt,q2)=>{"use strict";var Ip=Pd(),Pte=pE(),f9e=Pee(),bte=gE(),A9e=G2(),i0=Object.prototype.hasOwnProperty,yx=1,xte=2,kte=3,Ex=4,zU=1,p9e=2,Cte=3,h9e=/[\x00-\x08\x0B\x0C\x0E-\x1F\x7F-\x84\x86-\x9F\uFFFE\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/,g9e=/[\x85\u2028\u2029]/,d9e=/[,\[\]\{\}]/,Qte=/^(?:!|!!|![a-z\-]+!)$/i,Rte=/^(?:!|[^,\[\]\{\}])(?:%[0-9a-f]{2}|[0-9a-z\-#;\/\?:@&=\+\$,_\.!~\*'\(\)\[\]])*$/i;function wte(t){return Object.prototype.toString.call(t)}function jf(t){return t===10||t===13}function Qd(t){return t===9||t===32}function rl(t){return t===9||t===32||t===10||t===13}function dE(t){return t===44||t===91||t===93||t===123||t===125}function m9e(t){var e;return 48<=t&&t<=57?t-48:(e=t|32,97<=e&&e<=102?e-97+10:-1)}function y9e(t){return t===120?2:t===117?4:t===85?8:0}function E9e(t){return 48<=t&&t<=57?t-48:-1}function Bte(t){return t===48?"\0":t===97?"\x07":t===98?"\b":t===116||t===9?" ":t===110?` `:t===118?"\v":t===102?"\f":t===114?"\r":t===101?"\x1B":t===32?" ":t===34?'"':t===47?"/":t===92?"\\":t===78?"\x85":t===95?"\xA0":t===76?"\u2028":t===80?"\u2029":""}function I9e(t){return t<=65535?String.fromCharCode(t):String.fromCharCode((t-65536>>10)+55296,(t-65536&1023)+56320)}var Tte=new Array(256),Fte=new Array(256);for(kd=0;kd<256;kd++)Tte[kd]=Bte(kd)?1:0,Fte[kd]=Bte(kd);var kd;function C9e(t,e){this.input=t,this.filename=e.filename||null,this.schema=e.schema||A9e,this.onWarning=e.onWarning||null,this.legacy=e.legacy||!1,this.json=e.json||!1,this.listener=e.listener||null,this.implicitTypes=this.schema.compiledImplicit,this.typeMap=this.schema.compiledTypeMap,this.length=t.length,this.position=0,this.line=0,this.lineStart=0,this.lineIndent=0,this.documents=[]}function Nte(t,e){return new Pte(e,new f9e(t.filename,t.input,t.position,t.line,t.position-t.lineStart))}function Tr(t,e){throw Nte(t,e)}function Ix(t,e){t.onWarning&&t.onWarning.call(null,Nte(t,e))}var vte={YAML:function(e,r,s){var a,n,c;e.version!==null&&Tr(e,"duplication of %YAML directive"),s.length!==1&&Tr(e,"YAML directive accepts exactly one argument"),a=/^([0-9]+)\.([0-9]+)$/.exec(s[0]),a===null&&Tr(e,"ill-formed argument of the YAML directive"),n=parseInt(a[1],10),c=parseInt(a[2],10),n!==1&&Tr(e,"unacceptable YAML version of the document"),e.version=s[0],e.checkLineBreaks=c<2,c!==1&&c!==2&&Ix(e,"unsupported YAML version of the document")},TAG:function(e,r,s){var a,n;s.length!==2&&Tr(e,"TAG directive accepts exactly two arguments"),a=s[0],n=s[1],Qte.test(a)||Tr(e,"ill-formed tag handle (first argument) of the TAG directive"),i0.call(e.tagMap,a)&&Tr(e,'there is a previously declared suffix for "'+a+'" tag handle'),Rte.test(n)||Tr(e,"ill-formed tag prefix (second argument) of the TAG directive"),e.tagMap[a]=n}};function n0(t,e,r,s){var a,n,c,f;if(e1&&(t.result+=Ip.repeat(` `,e-1))}function w9e(t,e,r){var s,a,n,c,f,p,h,E,C=t.kind,S=t.result,b;if(b=t.input.charCodeAt(t.position),rl(b)||dE(b)||b===35||b===38||b===42||b===33||b===124||b===62||b===39||b===34||b===37||b===64||b===96||(b===63||b===45)&&(a=t.input.charCodeAt(t.position+1),rl(a)||r&&dE(a)))return!1;for(t.kind="scalar",t.result="",n=c=t.position,f=!1;b!==0;){if(b===58){if(a=t.input.charCodeAt(t.position+1),rl(a)||r&&dE(a))break}else if(b===35){if(s=t.input.charCodeAt(t.position-1),rl(s))break}else{if(t.position===t.lineStart&&Cx(t)||r&&dE(b))break;if(jf(b))if(p=t.line,h=t.lineStart,E=t.lineIndent,os(t,!1,-1),t.lineIndent>=e){f=!0,b=t.input.charCodeAt(t.position);continue}else{t.position=c,t.line=p,t.lineStart=h,t.lineIndent=E;break}}f&&(n0(t,n,c,!1),XU(t,t.line-p),n=c=t.position,f=!1),Qd(b)||(c=t.position+1),b=t.input.charCodeAt(++t.position)}return n0(t,n,c,!1),t.result?!0:(t.kind=C,t.result=S,!1)}function B9e(t,e){var r,s,a;if(r=t.input.charCodeAt(t.position),r!==39)return!1;for(t.kind="scalar",t.result="",t.position++,s=a=t.position;(r=t.input.charCodeAt(t.position))!==0;)if(r===39)if(n0(t,s,t.position,!0),r=t.input.charCodeAt(++t.position),r===39)s=t.position,t.position++,a=t.position;else return!0;else jf(r)?(n0(t,s,a,!0),XU(t,os(t,!1,e)),s=a=t.position):t.position===t.lineStart&&Cx(t)?Tr(t,"unexpected end of the document within a single quoted scalar"):(t.position++,a=t.position);Tr(t,"unexpected end of the stream within a single quoted scalar")}function v9e(t,e){var r,s,a,n,c,f;if(f=t.input.charCodeAt(t.position),f!==34)return!1;for(t.kind="scalar",t.result="",t.position++,r=s=t.position;(f=t.input.charCodeAt(t.position))!==0;){if(f===34)return n0(t,r,t.position,!0),t.position++,!0;if(f===92){if(n0(t,r,t.position,!0),f=t.input.charCodeAt(++t.position),jf(f))os(t,!1,e);else if(f<256&&Tte[f])t.result+=Fte[f],t.position++;else if((c=y9e(f))>0){for(a=c,n=0;a>0;a--)f=t.input.charCodeAt(++t.position),(c=m9e(f))>=0?n=(n<<4)+c:Tr(t,"expected hexadecimal character");t.result+=I9e(n),t.position++}else Tr(t,"unknown escape sequence");r=s=t.position}else jf(f)?(n0(t,r,s,!0),XU(t,os(t,!1,e)),r=s=t.position):t.position===t.lineStart&&Cx(t)?Tr(t,"unexpected end of the document within a double quoted scalar"):(t.position++,s=t.position)}Tr(t,"unexpected end of the stream within a double quoted scalar")}function S9e(t,e){var r=!0,s,a=t.tag,n,c=t.anchor,f,p,h,E,C,S={},b,I,T,N;if(N=t.input.charCodeAt(t.position),N===91)p=93,C=!1,n=[];else if(N===123)p=125,C=!0,n={};else return!1;for(t.anchor!==null&&(t.anchorMap[t.anchor]=n),N=t.input.charCodeAt(++t.position);N!==0;){if(os(t,!0,e),N=t.input.charCodeAt(t.position),N===p)return t.position++,t.tag=a,t.anchor=c,t.kind=C?"mapping":"sequence",t.result=n,!0;r||Tr(t,"missed comma between flow collection entries"),I=b=T=null,h=E=!1,N===63&&(f=t.input.charCodeAt(t.position+1),rl(f)&&(h=E=!0,t.position++,os(t,!0,e))),s=t.line,yE(t,e,yx,!1,!0),I=t.tag,b=t.result,os(t,!0,e),N=t.input.charCodeAt(t.position),(E||t.line===s)&&N===58&&(h=!0,N=t.input.charCodeAt(++t.position),os(t,!0,e),yE(t,e,yx,!1,!0),T=t.result),C?mE(t,n,S,I,b,T):h?n.push(mE(t,null,S,I,b,T)):n.push(b),os(t,!0,e),N=t.input.charCodeAt(t.position),N===44?(r=!0,N=t.input.charCodeAt(++t.position)):r=!1}Tr(t,"unexpected end of the stream within a flow collection")}function D9e(t,e){var r,s,a=zU,n=!1,c=!1,f=e,p=0,h=!1,E,C;if(C=t.input.charCodeAt(t.position),C===124)s=!1;else if(C===62)s=!0;else return!1;for(t.kind="scalar",t.result="";C!==0;)if(C=t.input.charCodeAt(++t.position),C===43||C===45)zU===a?a=C===43?Cte:p9e:Tr(t,"repeat of a chomping mode identifier");else if((E=E9e(C))>=0)E===0?Tr(t,"bad explicit indentation width of a block scalar; it cannot be less than one"):c?Tr(t,"repeat of an indentation width identifier"):(f=e+E-1,c=!0);else break;if(Qd(C)){do C=t.input.charCodeAt(++t.position);while(Qd(C));if(C===35)do C=t.input.charCodeAt(++t.position);while(!jf(C)&&C!==0)}for(;C!==0;){for(ZU(t),t.lineIndent=0,C=t.input.charCodeAt(t.position);(!c||t.lineIndentf&&(f=t.lineIndent),jf(C)){p++;continue}if(t.lineIndente)&&p!==0)Tr(t,"bad indentation of a sequence entry");else if(t.lineIndente)&&(yE(t,e,Ex,!0,a)&&(I?S=t.result:b=t.result),I||(mE(t,h,E,C,S,b,n,c),C=S=b=null),os(t,!0,-1),N=t.input.charCodeAt(t.position)),t.lineIndent>e&&N!==0)Tr(t,"bad indentation of a mapping entry");else if(t.lineIndente?p=1:t.lineIndent===e?p=0:t.lineIndente?p=1:t.lineIndent===e?p=0:t.lineIndent tag; it should be "scalar", not "'+t.kind+'"'),C=0,S=t.implicitTypes.length;C tag; it should be "'+b.kind+'", not "'+t.kind+'"'),b.resolve(t.result)?(t.result=b.construct(t.result),t.anchor!==null&&(t.anchorMap[t.anchor]=t.result)):Tr(t,"cannot resolve a node with !<"+t.tag+"> explicit tag")):Tr(t,"unknown tag !<"+t.tag+">");return t.listener!==null&&t.listener("close",t),t.tag!==null||t.anchor!==null||E}function Q9e(t){var e=t.position,r,s,a,n=!1,c;for(t.version=null,t.checkLineBreaks=t.legacy,t.tagMap={},t.anchorMap={};(c=t.input.charCodeAt(t.position))!==0&&(os(t,!0,-1),c=t.input.charCodeAt(t.position),!(t.lineIndent>0||c!==37));){for(n=!0,c=t.input.charCodeAt(++t.position),r=t.position;c!==0&&!rl(c);)c=t.input.charCodeAt(++t.position);for(s=t.input.slice(r,t.position),a=[],s.length<1&&Tr(t,"directive name must not be less than one character in length");c!==0;){for(;Qd(c);)c=t.input.charCodeAt(++t.position);if(c===35){do c=t.input.charCodeAt(++t.position);while(c!==0&&!jf(c));break}if(jf(c))break;for(r=t.position;c!==0&&!rl(c);)c=t.input.charCodeAt(++t.position);a.push(t.input.slice(r,t.position))}c!==0&&ZU(t),i0.call(vte,s)?vte[s](t,s,a):Ix(t,'unknown document directive "'+s+'"')}if(os(t,!0,-1),t.lineIndent===0&&t.input.charCodeAt(t.position)===45&&t.input.charCodeAt(t.position+1)===45&&t.input.charCodeAt(t.position+2)===45?(t.position+=3,os(t,!0,-1)):n&&Tr(t,"directives end mark is expected"),yE(t,t.lineIndent-1,Ex,!1,!0),os(t,!0,-1),t.checkLineBreaks&&g9e.test(t.input.slice(e,t.position))&&Ix(t,"non-ASCII line breaks are interpreted as content"),t.documents.push(t.result),t.position===t.lineStart&&Cx(t)){t.input.charCodeAt(t.position)===46&&(t.position+=3,os(t,!0,-1));return}if(t.position"u"&&(r=e,e=null);var s=Ote(t,r);if(typeof e!="function")return s;for(var a=0,n=s.length;a"u"&&(r=e,e=null),Lte(t,e,Ip.extend({schema:bte},r))}function T9e(t,e){return Mte(t,Ip.extend({schema:bte},e))}q2.exports.loadAll=Lte;q2.exports.load=Mte;q2.exports.safeLoadAll=R9e;q2.exports.safeLoad=T9e});var lre=_((wQt,r_)=>{"use strict";var Y2=Pd(),V2=pE(),F9e=G2(),N9e=gE(),Vte=Object.prototype.toString,Jte=Object.prototype.hasOwnProperty,O9e=9,W2=10,L9e=13,M9e=32,U9e=33,_9e=34,Kte=35,H9e=37,j9e=38,G9e=39,q9e=42,zte=44,W9e=45,Zte=58,Y9e=61,V9e=62,J9e=63,K9e=64,Xte=91,$te=93,z9e=96,ere=123,Z9e=124,tre=125,_o={};_o[0]="\\0";_o[7]="\\a";_o[8]="\\b";_o[9]="\\t";_o[10]="\\n";_o[11]="\\v";_o[12]="\\f";_o[13]="\\r";_o[27]="\\e";_o[34]='\\"';_o[92]="\\\\";_o[133]="\\N";_o[160]="\\_";_o[8232]="\\L";_o[8233]="\\P";var X9e=["y","Y","yes","Yes","YES","on","On","ON","n","N","no","No","NO","off","Off","OFF"];function $9e(t,e){var r,s,a,n,c,f,p;if(e===null)return{};for(r={},s=Object.keys(e),a=0,n=s.length;a0?t.charCodeAt(n-1):null,S=S&&jte(c,f)}else{for(n=0;ns&&t[C+1]!==" ",C=n);else if(!EE(c))return wx;f=n>0?t.charCodeAt(n-1):null,S=S&&jte(c,f)}h=h||E&&n-C-1>s&&t[C+1]!==" "}return!p&&!h?S&&!a(t)?nre:ire:r>9&&rre(t)?wx:h?ore:sre}function sWe(t,e,r,s){t.dump=function(){if(e.length===0)return"''";if(!t.noCompatMode&&X9e.indexOf(e)!==-1)return"'"+e+"'";var a=t.indent*Math.max(1,r),n=t.lineWidth===-1?-1:Math.max(Math.min(t.lineWidth,40),t.lineWidth-a),c=s||t.flowLevel>-1&&r>=t.flowLevel;function f(p){return tWe(t,p)}switch(iWe(e,c,t.indent,n,f)){case nre:return e;case ire:return"'"+e.replace(/'/g,"''")+"'";case sre:return"|"+Gte(e,t.indent)+qte(Hte(e,a));case ore:return">"+Gte(e,t.indent)+qte(Hte(oWe(e,n),a));case wx:return'"'+aWe(e,n)+'"';default:throw new V2("impossible error: invalid scalar style")}}()}function Gte(t,e){var r=rre(t)?String(e):"",s=t[t.length-1]===` `,a=s&&(t[t.length-2]===` `||t===` `),n=a?"+":s?"":"-";return r+n+` `}function qte(t){return t[t.length-1]===` `?t.slice(0,-1):t}function oWe(t,e){for(var r=/(\n+)([^\n]*)/g,s=function(){var h=t.indexOf(` `);return h=h!==-1?h:t.length,r.lastIndex=h,Wte(t.slice(0,h),e)}(),a=t[0]===` `||t[0]===" ",n,c;c=r.exec(t);){var f=c[1],p=c[2];n=p[0]===" ",s+=f+(!a&&!n&&p!==""?` `:"")+Wte(p,e),a=n}return s}function Wte(t,e){if(t===""||t[0]===" ")return t;for(var r=/ [^ ]/g,s,a=0,n,c=0,f=0,p="";s=r.exec(t);)f=s.index,f-a>e&&(n=c>a?c:f,p+=` `+t.slice(a,n),a=n+1),c=f;return p+=` `,t.length-a>e&&c>a?p+=t.slice(a,c)+` `+t.slice(c+1):p+=t.slice(a),p.slice(1)}function aWe(t){for(var e="",r,s,a,n=0;n=55296&&r<=56319&&(s=t.charCodeAt(n+1),s>=56320&&s<=57343)){e+=_te((r-55296)*1024+s-56320+65536),n++;continue}a=_o[r],e+=!a&&EE(r)?t[n]:a||_te(r)}return e}function lWe(t,e,r){var s="",a=t.tag,n,c;for(n=0,c=r.length;n1024&&(E+="? "),E+=t.dump+(t.condenseFlow?'"':"")+":"+(t.condenseFlow?"":" "),Rd(t,e,h,!1,!1)&&(E+=t.dump,s+=E));t.tag=a,t.dump="{"+s+"}"}function fWe(t,e,r,s){var a="",n=t.tag,c=Object.keys(r),f,p,h,E,C,S;if(t.sortKeys===!0)c.sort();else if(typeof t.sortKeys=="function")c.sort(t.sortKeys);else if(t.sortKeys)throw new V2("sortKeys must be a boolean or a function");for(f=0,p=c.length;f1024,C&&(t.dump&&W2===t.dump.charCodeAt(0)?S+="?":S+="? "),S+=t.dump,C&&(S+=$U(t,e)),Rd(t,e+1,E,!0,C)&&(t.dump&&W2===t.dump.charCodeAt(0)?S+=":":S+=": ",S+=t.dump,a+=S));t.tag=n,t.dump=a||"{}"}function Yte(t,e,r){var s,a,n,c,f,p;for(a=r?t.explicitTypes:t.implicitTypes,n=0,c=a.length;n tag resolver accepts not "'+p+'" style');t.dump=s}return!0}return!1}function Rd(t,e,r,s,a,n){t.tag=null,t.dump=r,Yte(t,r,!1)||Yte(t,r,!0);var c=Vte.call(t.dump);s&&(s=t.flowLevel<0||t.flowLevel>e);var f=c==="[object Object]"||c==="[object Array]",p,h;if(f&&(p=t.duplicates.indexOf(r),h=p!==-1),(t.tag!==null&&t.tag!=="?"||h||t.indent!==2&&e>0)&&(a=!1),h&&t.usedDuplicates[p])t.dump="*ref_"+p;else{if(f&&h&&!t.usedDuplicates[p]&&(t.usedDuplicates[p]=!0),c==="[object Object]")s&&Object.keys(t.dump).length!==0?(fWe(t,e,t.dump,a),h&&(t.dump="&ref_"+p+t.dump)):(uWe(t,e,t.dump),h&&(t.dump="&ref_"+p+" "+t.dump));else if(c==="[object Array]"){var E=t.noArrayIndent&&e>0?e-1:e;s&&t.dump.length!==0?(cWe(t,E,t.dump,a),h&&(t.dump="&ref_"+p+t.dump)):(lWe(t,E,t.dump),h&&(t.dump="&ref_"+p+" "+t.dump))}else if(c==="[object String]")t.tag!=="?"&&sWe(t,t.dump,e,n);else{if(t.skipInvalid)return!1;throw new V2("unacceptable kind of an object to dump "+c)}t.tag!==null&&t.tag!=="?"&&(t.dump="!<"+t.tag+"> "+t.dump)}return!0}function AWe(t,e){var r=[],s=[],a,n;for(e_(t,r,s),a=0,n=s.length;a{"use strict";var Bx=Ute(),cre=lre();function vx(t){return function(){throw new Error("Function "+t+" is deprecated and cannot be used.")}}qi.exports.Type=Ss();qi.exports.Schema=bd();qi.exports.FAILSAFE_SCHEMA=dx();qi.exports.JSON_SCHEMA=VU();qi.exports.CORE_SCHEMA=JU();qi.exports.DEFAULT_SAFE_SCHEMA=gE();qi.exports.DEFAULT_FULL_SCHEMA=G2();qi.exports.load=Bx.load;qi.exports.loadAll=Bx.loadAll;qi.exports.safeLoad=Bx.safeLoad;qi.exports.safeLoadAll=Bx.safeLoadAll;qi.exports.dump=cre.dump;qi.exports.safeDump=cre.safeDump;qi.exports.YAMLException=pE();qi.exports.MINIMAL_SCHEMA=dx();qi.exports.SAFE_SCHEMA=gE();qi.exports.DEFAULT_SCHEMA=G2();qi.exports.scan=vx("scan");qi.exports.parse=vx("parse");qi.exports.compose=vx("compose");qi.exports.addConstructor=vx("addConstructor")});var Are=_((vQt,fre)=>{"use strict";var hWe=ure();fre.exports=hWe});var hre=_((SQt,pre)=>{"use strict";function gWe(t,e){function r(){this.constructor=t}r.prototype=e.prototype,t.prototype=new r}function Td(t,e,r,s){this.message=t,this.expected=e,this.found=r,this.location=s,this.name="SyntaxError",typeof Error.captureStackTrace=="function"&&Error.captureStackTrace(this,Td)}gWe(Td,Error);Td.buildMessage=function(t,e){var r={literal:function(h){return'"'+a(h.text)+'"'},class:function(h){var E="",C;for(C=0;C0){for(C=1,S=1;C({[dt]:Oe})))},ue=function(te){return te},le=function(te){return te},me=Oa("correct indentation"),pe=" ",Be=dn(" ",!1),Ce=function(te){return te.length===lr*St},g=function(te){return te.length===(lr+1)*St},we=function(){return lr++,!0},ye=function(){return lr--,!0},Ae=function(){return la()},se=Oa("pseudostring"),X=/^[^\r\n\t ?:,\][{}#&*!|>'"%@`\-]/,De=Kn(["\r",` `," "," ","?",":",",","]","[","{","}","#","&","*","!","|",">","'",'"',"%","@","`","-"],!0,!1),Te=/^[^\r\n\t ,\][{}:#"']/,mt=Kn(["\r",` `," "," ",",","]","[","{","}",":","#",'"',"'"],!0,!1),j=function(){return la().replace(/^ *| *$/g,"")},rt="--",Fe=dn("--",!1),Ne=/^[a-zA-Z\/0-9]/,be=Kn([["a","z"],["A","Z"],"/",["0","9"]],!1,!1),Ve=/^[^\r\n\t :,]/,ke=Kn(["\r",` `," "," ",":",","],!0,!1),it="null",Ue=dn("null",!1),x=function(){return null},w="true",P=dn("true",!1),y=function(){return!0},F="false",z=dn("false",!1),Z=function(){return!1},$=Oa("string"),oe='"',xe=dn('"',!1),Re=function(){return""},lt=function(te){return te},Ct=function(te){return te.join("")},qt=/^[^"\\\0-\x1F\x7F]/,ir=Kn(['"',"\\",["\0",""],"\x7F"],!0,!1),bt='\\"',gn=dn('\\"',!1),br=function(){return'"'},Ir="\\\\",Or=dn("\\\\",!1),nn=function(){return"\\"},ai="\\/",Io=dn("\\/",!1),ts=function(){return"/"},$s="\\b",Co=dn("\\b",!1),Hi=function(){return"\b"},eo="\\f",wo=dn("\\f",!1),QA=function(){return"\f"},Af="\\n",dh=dn("\\n",!1),mh=function(){return` `},to="\\r",jn=dn("\\r",!1),Rs=function(){return"\r"},ro="\\t",ou=dn("\\t",!1),au=function(){return" "},lu="\\u",RA=dn("\\u",!1),TA=function(te,Ee,Oe,dt){return String.fromCharCode(parseInt(`0x${te}${Ee}${Oe}${dt}`))},oa=/^[0-9a-fA-F]/,aa=Kn([["0","9"],["a","f"],["A","F"]],!1,!1),FA=Oa("blank space"),gr=/^[ \t]/,Bo=Kn([" "," "],!1,!1),Me=Oa("white space"),cu=/^[ \t\n\r]/,Cr=Kn([" "," ",` `,"\r"],!1,!1),pf=`\r `,NA=dn(`\r `,!1),OA=` `,uu=dn(` `,!1),fu="\r",oc=dn("\r",!1),ve=0,Nt=0,ac=[{line:1,column:1}],Oi=0,no=[],Tt=0,xn;if("startRule"in e){if(!(e.startRule in s))throw new Error(`Can't start parsing from rule "`+e.startRule+'".');a=s[e.startRule]}function la(){return t.substring(Nt,ve)}function ji(){return Ma(Nt,ve)}function Li(te,Ee){throw Ee=Ee!==void 0?Ee:Ma(Nt,ve),hf([Oa(te)],t.substring(Nt,ve),Ee)}function Na(te,Ee){throw Ee=Ee!==void 0?Ee:Ma(Nt,ve),Ua(te,Ee)}function dn(te,Ee){return{type:"literal",text:te,ignoreCase:Ee}}function Kn(te,Ee,Oe){return{type:"class",parts:te,inverted:Ee,ignoreCase:Oe}}function Au(){return{type:"any"}}function yh(){return{type:"end"}}function Oa(te){return{type:"other",description:te}}function La(te){var Ee=ac[te],Oe;if(Ee)return Ee;for(Oe=te-1;!ac[Oe];)Oe--;for(Ee=ac[Oe],Ee={line:Ee.line,column:Ee.column};OeOi&&(Oi=ve,no=[]),no.push(te))}function Ua(te,Ee){return new Td(te,null,null,Ee)}function hf(te,Ee,Oe){return new Td(Td.buildMessage(te,Ee),te,Ee,Oe)}function lc(){var te;return te=LA(),te}function wn(){var te,Ee,Oe;for(te=ve,Ee=[],Oe=ca();Oe!==r;)Ee.push(Oe),Oe=ca();return Ee!==r&&(Nt=te,Ee=n(Ee)),te=Ee,te}function ca(){var te,Ee,Oe,dt,Et;return te=ve,Ee=Bl(),Ee!==r?(t.charCodeAt(ve)===45?(Oe=c,ve++):(Oe=r,Tt===0&&$e(f)),Oe!==r?(dt=Qn(),dt!==r?(Et=ua(),Et!==r?(Nt=te,Ee=p(Et),te=Ee):(ve=te,te=r)):(ve=te,te=r)):(ve=te,te=r)):(ve=te,te=r),te}function LA(){var te,Ee,Oe;for(te=ve,Ee=[],Oe=MA();Oe!==r;)Ee.push(Oe),Oe=MA();return Ee!==r&&(Nt=te,Ee=h(Ee)),te=Ee,te}function MA(){var te,Ee,Oe,dt,Et,Pt,tr,An,li;if(te=ve,Ee=Qn(),Ee===r&&(Ee=null),Ee!==r){if(Oe=ve,t.charCodeAt(ve)===35?(dt=E,ve++):(dt=r,Tt===0&&$e(C)),dt!==r){if(Et=[],Pt=ve,tr=ve,Tt++,An=st(),Tt--,An===r?tr=void 0:(ve=tr,tr=r),tr!==r?(t.length>ve?(An=t.charAt(ve),ve++):(An=r,Tt===0&&$e(S)),An!==r?(tr=[tr,An],Pt=tr):(ve=Pt,Pt=r)):(ve=Pt,Pt=r),Pt!==r)for(;Pt!==r;)Et.push(Pt),Pt=ve,tr=ve,Tt++,An=st(),Tt--,An===r?tr=void 0:(ve=tr,tr=r),tr!==r?(t.length>ve?(An=t.charAt(ve),ve++):(An=r,Tt===0&&$e(S)),An!==r?(tr=[tr,An],Pt=tr):(ve=Pt,Pt=r)):(ve=Pt,Pt=r);else Et=r;Et!==r?(dt=[dt,Et],Oe=dt):(ve=Oe,Oe=r)}else ve=Oe,Oe=r;if(Oe===r&&(Oe=null),Oe!==r){if(dt=[],Et=Ke(),Et!==r)for(;Et!==r;)dt.push(Et),Et=Ke();else dt=r;dt!==r?(Nt=te,Ee=b(),te=Ee):(ve=te,te=r)}else ve=te,te=r}else ve=te,te=r;if(te===r&&(te=ve,Ee=Bl(),Ee!==r?(Oe=Ha(),Oe!==r?(dt=Qn(),dt===r&&(dt=null),dt!==r?(t.charCodeAt(ve)===58?(Et=I,ve++):(Et=r,Tt===0&&$e(T)),Et!==r?(Pt=Qn(),Pt===r&&(Pt=null),Pt!==r?(tr=ua(),tr!==r?(Nt=te,Ee=N(Oe,tr),te=Ee):(ve=te,te=r)):(ve=te,te=r)):(ve=te,te=r)):(ve=te,te=r)):(ve=te,te=r)):(ve=te,te=r),te===r&&(te=ve,Ee=Bl(),Ee!==r?(Oe=rs(),Oe!==r?(dt=Qn(),dt===r&&(dt=null),dt!==r?(t.charCodeAt(ve)===58?(Et=I,ve++):(Et=r,Tt===0&&$e(T)),Et!==r?(Pt=Qn(),Pt===r&&(Pt=null),Pt!==r?(tr=ua(),tr!==r?(Nt=te,Ee=N(Oe,tr),te=Ee):(ve=te,te=r)):(ve=te,te=r)):(ve=te,te=r)):(ve=te,te=r)):(ve=te,te=r)):(ve=te,te=r),te===r))){if(te=ve,Ee=Bl(),Ee!==r)if(Oe=rs(),Oe!==r)if(dt=Qn(),dt!==r)if(Et=pu(),Et!==r){if(Pt=[],tr=Ke(),tr!==r)for(;tr!==r;)Pt.push(tr),tr=Ke();else Pt=r;Pt!==r?(Nt=te,Ee=N(Oe,Et),te=Ee):(ve=te,te=r)}else ve=te,te=r;else ve=te,te=r;else ve=te,te=r;else ve=te,te=r;if(te===r)if(te=ve,Ee=Bl(),Ee!==r)if(Oe=rs(),Oe!==r){if(dt=[],Et=ve,Pt=Qn(),Pt===r&&(Pt=null),Pt!==r?(t.charCodeAt(ve)===44?(tr=U,ve++):(tr=r,Tt===0&&$e(W)),tr!==r?(An=Qn(),An===r&&(An=null),An!==r?(li=rs(),li!==r?(Nt=Et,Pt=ee(Oe,li),Et=Pt):(ve=Et,Et=r)):(ve=Et,Et=r)):(ve=Et,Et=r)):(ve=Et,Et=r),Et!==r)for(;Et!==r;)dt.push(Et),Et=ve,Pt=Qn(),Pt===r&&(Pt=null),Pt!==r?(t.charCodeAt(ve)===44?(tr=U,ve++):(tr=r,Tt===0&&$e(W)),tr!==r?(An=Qn(),An===r&&(An=null),An!==r?(li=rs(),li!==r?(Nt=Et,Pt=ee(Oe,li),Et=Pt):(ve=Et,Et=r)):(ve=Et,Et=r)):(ve=Et,Et=r)):(ve=Et,Et=r);else dt=r;dt!==r?(Et=Qn(),Et===r&&(Et=null),Et!==r?(t.charCodeAt(ve)===58?(Pt=I,ve++):(Pt=r,Tt===0&&$e(T)),Pt!==r?(tr=Qn(),tr===r&&(tr=null),tr!==r?(An=ua(),An!==r?(Nt=te,Ee=ie(Oe,dt,An),te=Ee):(ve=te,te=r)):(ve=te,te=r)):(ve=te,te=r)):(ve=te,te=r)):(ve=te,te=r)}else ve=te,te=r;else ve=te,te=r}return te}function ua(){var te,Ee,Oe,dt,Et,Pt,tr;if(te=ve,Ee=ve,Tt++,Oe=ve,dt=st(),dt!==r?(Et=Mt(),Et!==r?(t.charCodeAt(ve)===45?(Pt=c,ve++):(Pt=r,Tt===0&&$e(f)),Pt!==r?(tr=Qn(),tr!==r?(dt=[dt,Et,Pt,tr],Oe=dt):(ve=Oe,Oe=r)):(ve=Oe,Oe=r)):(ve=Oe,Oe=r)):(ve=Oe,Oe=r),Tt--,Oe!==r?(ve=Ee,Ee=void 0):Ee=r,Ee!==r?(Oe=Ke(),Oe!==r?(dt=kn(),dt!==r?(Et=wn(),Et!==r?(Pt=fa(),Pt!==r?(Nt=te,Ee=ue(Et),te=Ee):(ve=te,te=r)):(ve=te,te=r)):(ve=te,te=r)):(ve=te,te=r)):(ve=te,te=r),te===r&&(te=ve,Ee=st(),Ee!==r?(Oe=kn(),Oe!==r?(dt=LA(),dt!==r?(Et=fa(),Et!==r?(Nt=te,Ee=ue(dt),te=Ee):(ve=te,te=r)):(ve=te,te=r)):(ve=te,te=r)):(ve=te,te=r),te===r))if(te=ve,Ee=cc(),Ee!==r){if(Oe=[],dt=Ke(),dt!==r)for(;dt!==r;)Oe.push(dt),dt=Ke();else Oe=r;Oe!==r?(Nt=te,Ee=le(Ee),te=Ee):(ve=te,te=r)}else ve=te,te=r;return te}function Bl(){var te,Ee,Oe;for(Tt++,te=ve,Ee=[],t.charCodeAt(ve)===32?(Oe=pe,ve++):(Oe=r,Tt===0&&$e(Be));Oe!==r;)Ee.push(Oe),t.charCodeAt(ve)===32?(Oe=pe,ve++):(Oe=r,Tt===0&&$e(Be));return Ee!==r?(Nt=ve,Oe=Ce(Ee),Oe?Oe=void 0:Oe=r,Oe!==r?(Ee=[Ee,Oe],te=Ee):(ve=te,te=r)):(ve=te,te=r),Tt--,te===r&&(Ee=r,Tt===0&&$e(me)),te}function Mt(){var te,Ee,Oe;for(te=ve,Ee=[],t.charCodeAt(ve)===32?(Oe=pe,ve++):(Oe=r,Tt===0&&$e(Be));Oe!==r;)Ee.push(Oe),t.charCodeAt(ve)===32?(Oe=pe,ve++):(Oe=r,Tt===0&&$e(Be));return Ee!==r?(Nt=ve,Oe=g(Ee),Oe?Oe=void 0:Oe=r,Oe!==r?(Ee=[Ee,Oe],te=Ee):(ve=te,te=r)):(ve=te,te=r),te}function kn(){var te;return Nt=ve,te=we(),te?te=void 0:te=r,te}function fa(){var te;return Nt=ve,te=ye(),te?te=void 0:te=r,te}function Ha(){var te;return te=vl(),te===r&&(te=uc()),te}function rs(){var te,Ee,Oe;if(te=vl(),te===r){if(te=ve,Ee=[],Oe=ja(),Oe!==r)for(;Oe!==r;)Ee.push(Oe),Oe=ja();else Ee=r;Ee!==r&&(Nt=te,Ee=Ae()),te=Ee}return te}function cc(){var te;return te=Mi(),te===r&&(te=Is(),te===r&&(te=vl(),te===r&&(te=uc()))),te}function pu(){var te;return te=Mi(),te===r&&(te=vl(),te===r&&(te=ja())),te}function uc(){var te,Ee,Oe,dt,Et,Pt;if(Tt++,te=ve,X.test(t.charAt(ve))?(Ee=t.charAt(ve),ve++):(Ee=r,Tt===0&&$e(De)),Ee!==r){for(Oe=[],dt=ve,Et=Qn(),Et===r&&(Et=null),Et!==r?(Te.test(t.charAt(ve))?(Pt=t.charAt(ve),ve++):(Pt=r,Tt===0&&$e(mt)),Pt!==r?(Et=[Et,Pt],dt=Et):(ve=dt,dt=r)):(ve=dt,dt=r);dt!==r;)Oe.push(dt),dt=ve,Et=Qn(),Et===r&&(Et=null),Et!==r?(Te.test(t.charAt(ve))?(Pt=t.charAt(ve),ve++):(Pt=r,Tt===0&&$e(mt)),Pt!==r?(Et=[Et,Pt],dt=Et):(ve=dt,dt=r)):(ve=dt,dt=r);Oe!==r?(Nt=te,Ee=j(),te=Ee):(ve=te,te=r)}else ve=te,te=r;return Tt--,te===r&&(Ee=r,Tt===0&&$e(se)),te}function ja(){var te,Ee,Oe,dt,Et;if(te=ve,t.substr(ve,2)===rt?(Ee=rt,ve+=2):(Ee=r,Tt===0&&$e(Fe)),Ee===r&&(Ee=null),Ee!==r)if(Ne.test(t.charAt(ve))?(Oe=t.charAt(ve),ve++):(Oe=r,Tt===0&&$e(be)),Oe!==r){for(dt=[],Ve.test(t.charAt(ve))?(Et=t.charAt(ve),ve++):(Et=r,Tt===0&&$e(ke));Et!==r;)dt.push(Et),Ve.test(t.charAt(ve))?(Et=t.charAt(ve),ve++):(Et=r,Tt===0&&$e(ke));dt!==r?(Nt=te,Ee=j(),te=Ee):(ve=te,te=r)}else ve=te,te=r;else ve=te,te=r;return te}function Mi(){var te,Ee;return te=ve,t.substr(ve,4)===it?(Ee=it,ve+=4):(Ee=r,Tt===0&&$e(Ue)),Ee!==r&&(Nt=te,Ee=x()),te=Ee,te}function Is(){var te,Ee;return te=ve,t.substr(ve,4)===w?(Ee=w,ve+=4):(Ee=r,Tt===0&&$e(P)),Ee!==r&&(Nt=te,Ee=y()),te=Ee,te===r&&(te=ve,t.substr(ve,5)===F?(Ee=F,ve+=5):(Ee=r,Tt===0&&$e(z)),Ee!==r&&(Nt=te,Ee=Z()),te=Ee),te}function vl(){var te,Ee,Oe,dt;return Tt++,te=ve,t.charCodeAt(ve)===34?(Ee=oe,ve++):(Ee=r,Tt===0&&$e(xe)),Ee!==r?(t.charCodeAt(ve)===34?(Oe=oe,ve++):(Oe=r,Tt===0&&$e(xe)),Oe!==r?(Nt=te,Ee=Re(),te=Ee):(ve=te,te=r)):(ve=te,te=r),te===r&&(te=ve,t.charCodeAt(ve)===34?(Ee=oe,ve++):(Ee=r,Tt===0&&$e(xe)),Ee!==r?(Oe=gf(),Oe!==r?(t.charCodeAt(ve)===34?(dt=oe,ve++):(dt=r,Tt===0&&$e(xe)),dt!==r?(Nt=te,Ee=lt(Oe),te=Ee):(ve=te,te=r)):(ve=te,te=r)):(ve=te,te=r)),Tt--,te===r&&(Ee=r,Tt===0&&$e($)),te}function gf(){var te,Ee,Oe;if(te=ve,Ee=[],Oe=fc(),Oe!==r)for(;Oe!==r;)Ee.push(Oe),Oe=fc();else Ee=r;return Ee!==r&&(Nt=te,Ee=Ct(Ee)),te=Ee,te}function fc(){var te,Ee,Oe,dt,Et,Pt;return qt.test(t.charAt(ve))?(te=t.charAt(ve),ve++):(te=r,Tt===0&&$e(ir)),te===r&&(te=ve,t.substr(ve,2)===bt?(Ee=bt,ve+=2):(Ee=r,Tt===0&&$e(gn)),Ee!==r&&(Nt=te,Ee=br()),te=Ee,te===r&&(te=ve,t.substr(ve,2)===Ir?(Ee=Ir,ve+=2):(Ee=r,Tt===0&&$e(Or)),Ee!==r&&(Nt=te,Ee=nn()),te=Ee,te===r&&(te=ve,t.substr(ve,2)===ai?(Ee=ai,ve+=2):(Ee=r,Tt===0&&$e(Io)),Ee!==r&&(Nt=te,Ee=ts()),te=Ee,te===r&&(te=ve,t.substr(ve,2)===$s?(Ee=$s,ve+=2):(Ee=r,Tt===0&&$e(Co)),Ee!==r&&(Nt=te,Ee=Hi()),te=Ee,te===r&&(te=ve,t.substr(ve,2)===eo?(Ee=eo,ve+=2):(Ee=r,Tt===0&&$e(wo)),Ee!==r&&(Nt=te,Ee=QA()),te=Ee,te===r&&(te=ve,t.substr(ve,2)===Af?(Ee=Af,ve+=2):(Ee=r,Tt===0&&$e(dh)),Ee!==r&&(Nt=te,Ee=mh()),te=Ee,te===r&&(te=ve,t.substr(ve,2)===to?(Ee=to,ve+=2):(Ee=r,Tt===0&&$e(jn)),Ee!==r&&(Nt=te,Ee=Rs()),te=Ee,te===r&&(te=ve,t.substr(ve,2)===ro?(Ee=ro,ve+=2):(Ee=r,Tt===0&&$e(ou)),Ee!==r&&(Nt=te,Ee=au()),te=Ee,te===r&&(te=ve,t.substr(ve,2)===lu?(Ee=lu,ve+=2):(Ee=r,Tt===0&&$e(RA)),Ee!==r?(Oe=wi(),Oe!==r?(dt=wi(),dt!==r?(Et=wi(),Et!==r?(Pt=wi(),Pt!==r?(Nt=te,Ee=TA(Oe,dt,Et,Pt),te=Ee):(ve=te,te=r)):(ve=te,te=r)):(ve=te,te=r)):(ve=te,te=r)):(ve=te,te=r)))))))))),te}function wi(){var te;return oa.test(t.charAt(ve))?(te=t.charAt(ve),ve++):(te=r,Tt===0&&$e(aa)),te}function Qn(){var te,Ee;if(Tt++,te=[],gr.test(t.charAt(ve))?(Ee=t.charAt(ve),ve++):(Ee=r,Tt===0&&$e(Bo)),Ee!==r)for(;Ee!==r;)te.push(Ee),gr.test(t.charAt(ve))?(Ee=t.charAt(ve),ve++):(Ee=r,Tt===0&&$e(Bo));else te=r;return Tt--,te===r&&(Ee=r,Tt===0&&$e(FA)),te}function Ac(){var te,Ee;if(Tt++,te=[],cu.test(t.charAt(ve))?(Ee=t.charAt(ve),ve++):(Ee=r,Tt===0&&$e(Cr)),Ee!==r)for(;Ee!==r;)te.push(Ee),cu.test(t.charAt(ve))?(Ee=t.charAt(ve),ve++):(Ee=r,Tt===0&&$e(Cr));else te=r;return Tt--,te===r&&(Ee=r,Tt===0&&$e(Me)),te}function Ke(){var te,Ee,Oe,dt,Et,Pt;if(te=ve,Ee=st(),Ee!==r){for(Oe=[],dt=ve,Et=Qn(),Et===r&&(Et=null),Et!==r?(Pt=st(),Pt!==r?(Et=[Et,Pt],dt=Et):(ve=dt,dt=r)):(ve=dt,dt=r);dt!==r;)Oe.push(dt),dt=ve,Et=Qn(),Et===r&&(Et=null),Et!==r?(Pt=st(),Pt!==r?(Et=[Et,Pt],dt=Et):(ve=dt,dt=r)):(ve=dt,dt=r);Oe!==r?(Ee=[Ee,Oe],te=Ee):(ve=te,te=r)}else ve=te,te=r;return te}function st(){var te;return t.substr(ve,2)===pf?(te=pf,ve+=2):(te=r,Tt===0&&$e(NA)),te===r&&(t.charCodeAt(ve)===10?(te=OA,ve++):(te=r,Tt===0&&$e(uu)),te===r&&(t.charCodeAt(ve)===13?(te=fu,ve++):(te=r,Tt===0&&$e(oc)))),te}let St=2,lr=0;if(xn=a(),xn!==r&&ve===t.length)return xn;throw xn!==r&&ve"u"?!0:typeof t=="object"&&t!==null&&!Array.isArray(t)?Object.keys(t).every(e=>yre(t[e])):!1}function n_(t,e,r){if(t===null)return`null `;if(typeof t=="number"||typeof t=="boolean")return`${t.toString()} `;if(typeof t=="string")return`${dre(t)} `;if(Array.isArray(t)){if(t.length===0)return`[] `;let s=" ".repeat(e);return` ${t.map(n=>`${s}- ${n_(n,e+1,!1)}`).join("")}`}if(typeof t=="object"&&t){let[s,a]=t instanceof Sx?[t.data,!1]:[t,!0],n=" ".repeat(e),c=Object.keys(s);a&&c.sort((p,h)=>{let E=gre.indexOf(p),C=gre.indexOf(h);return E===-1&&C===-1?ph?1:0:E!==-1&&C===-1?-1:E===-1&&C!==-1?1:E-C});let f=c.filter(p=>!yre(s[p])).map((p,h)=>{let E=s[p],C=dre(p),S=n_(E,e+1,!0),b=h>0||r?n:"",I=C.length>1024?`? ${C} ${b}:`:`${C}:`,T=S.startsWith(` `)?S:` ${S}`;return`${b}${I}${T}`}).join(e===0?` `:"")||` `;return r?` ${f}`:`${f}`}throw new Error(`Unsupported value type (${t})`)}function nl(t){try{let e=n_(t,0,!1);return e!==` `?e:""}catch(e){throw e.location&&(e.message=e.message.replace(/(\.)?$/,` (line ${e.location.start.line}, column ${e.location.start.column})$1`)),e}}function yWe(t){return t.endsWith(` `)||(t+=` `),(0,mre.parse)(t)}function IWe(t){if(EWe.test(t))return yWe(t);let e=(0,Dx.safeLoad)(t,{schema:Dx.FAILSAFE_SCHEMA,json:!0});if(e==null)return{};if(typeof e!="object")throw new Error(`Expected an indexed object, got a ${typeof e} instead. Does your file follow Yaml's rules?`);if(Array.isArray(e))throw new Error("Expected an indexed object, got an array instead. Does your file follow Yaml's rules?");return e}function as(t){return IWe(t)}var Dx,mre,mWe,gre,Sx,EWe,Ere=Ze(()=>{Dx=ut(Are()),mre=ut(hre()),mWe=/^(?![-?:,\][{}#&*!|>'"%@` \t\r\n]).([ \t]*(?![,\][{}:# \t\r\n]).)*$/,gre=["__metadata","version","resolution","dependencies","peerDependencies","dependenciesMeta","peerDependenciesMeta","binaries"],Sx=class{constructor(e){this.data=e}};nl.PreserveOrdering=Sx;EWe=/^(#.*(\r?\n))*?#\s+yarn\s+lockfile\s+v1\r?\n/i});var J2={};Vt(J2,{parseResolution:()=>px,parseShell:()=>ux,parseSyml:()=>as,stringifyArgument:()=>GU,stringifyArgumentSegment:()=>qU,stringifyArithmeticExpression:()=>Ax,stringifyCommand:()=>jU,stringifyCommandChain:()=>AE,stringifyCommandChainThen:()=>HU,stringifyCommandLine:()=>fx,stringifyCommandLineThen:()=>_U,stringifyEnvSegment:()=>cx,stringifyRedirectArgument:()=>H2,stringifyResolution:()=>hx,stringifyShell:()=>fE,stringifyShellLine:()=>fE,stringifySyml:()=>nl,stringifyValueArgument:()=>vd});var wc=Ze(()=>{yee();wee();Ere()});var Cre=_((kQt,i_)=>{"use strict";var CWe=t=>{let e=!1,r=!1,s=!1;for(let a=0;a{if(!(typeof t=="string"||Array.isArray(t)))throw new TypeError("Expected the input to be `string | string[]`");e=Object.assign({pascalCase:!1},e);let r=a=>e.pascalCase?a.charAt(0).toUpperCase()+a.slice(1):a;return Array.isArray(t)?t=t.map(a=>a.trim()).filter(a=>a.length).join("-"):t=t.trim(),t.length===0?"":t.length===1?e.pascalCase?t.toUpperCase():t.toLowerCase():(t!==t.toLowerCase()&&(t=CWe(t)),t=t.replace(/^[_.\- ]+/,"").toLowerCase().replace(/[_.\- ]+(\w|$)/g,(a,n)=>n.toUpperCase()).replace(/\d+(\w|$)/g,a=>a.toUpperCase()),r(t))};i_.exports=Ire;i_.exports.default=Ire});var wre=_((QQt,wWe)=>{wWe.exports=[{name:"Agola CI",constant:"AGOLA",env:"AGOLA_GIT_REF",pr:"AGOLA_PULL_REQUEST_ID"},{name:"Appcircle",constant:"APPCIRCLE",env:"AC_APPCIRCLE"},{name:"AppVeyor",constant:"APPVEYOR",env:"APPVEYOR",pr:"APPVEYOR_PULL_REQUEST_NUMBER"},{name:"AWS CodeBuild",constant:"CODEBUILD",env:"CODEBUILD_BUILD_ARN"},{name:"Azure Pipelines",constant:"AZURE_PIPELINES",env:"TF_BUILD",pr:{BUILD_REASON:"PullRequest"}},{name:"Bamboo",constant:"BAMBOO",env:"bamboo_planKey"},{name:"Bitbucket Pipelines",constant:"BITBUCKET",env:"BITBUCKET_COMMIT",pr:"BITBUCKET_PR_ID"},{name:"Bitrise",constant:"BITRISE",env:"BITRISE_IO",pr:"BITRISE_PULL_REQUEST"},{name:"Buddy",constant:"BUDDY",env:"BUDDY_WORKSPACE_ID",pr:"BUDDY_EXECUTION_PULL_REQUEST_ID"},{name:"Buildkite",constant:"BUILDKITE",env:"BUILDKITE",pr:{env:"BUILDKITE_PULL_REQUEST",ne:"false"}},{name:"CircleCI",constant:"CIRCLE",env:"CIRCLECI",pr:"CIRCLE_PULL_REQUEST"},{name:"Cirrus CI",constant:"CIRRUS",env:"CIRRUS_CI",pr:"CIRRUS_PR"},{name:"Codefresh",constant:"CODEFRESH",env:"CF_BUILD_ID",pr:{any:["CF_PULL_REQUEST_NUMBER","CF_PULL_REQUEST_ID"]}},{name:"Codemagic",constant:"CODEMAGIC",env:"CM_BUILD_ID",pr:"CM_PULL_REQUEST"},{name:"Codeship",constant:"CODESHIP",env:{CI_NAME:"codeship"}},{name:"Drone",constant:"DRONE",env:"DRONE",pr:{DRONE_BUILD_EVENT:"pull_request"}},{name:"dsari",constant:"DSARI",env:"DSARI"},{name:"Earthly",constant:"EARTHLY",env:"EARTHLY_CI"},{name:"Expo Application Services",constant:"EAS",env:"EAS_BUILD"},{name:"Gerrit",constant:"GERRIT",env:"GERRIT_PROJECT"},{name:"Gitea Actions",constant:"GITEA_ACTIONS",env:"GITEA_ACTIONS"},{name:"GitHub Actions",constant:"GITHUB_ACTIONS",env:"GITHUB_ACTIONS",pr:{GITHUB_EVENT_NAME:"pull_request"}},{name:"GitLab CI",constant:"GITLAB",env:"GITLAB_CI",pr:"CI_MERGE_REQUEST_ID"},{name:"GoCD",constant:"GOCD",env:"GO_PIPELINE_LABEL"},{name:"Google Cloud Build",constant:"GOOGLE_CLOUD_BUILD",env:"BUILDER_OUTPUT"},{name:"Harness CI",constant:"HARNESS",env:"HARNESS_BUILD_ID"},{name:"Heroku",constant:"HEROKU",env:{env:"NODE",includes:"/app/.heroku/node/bin/node"}},{name:"Hudson",constant:"HUDSON",env:"HUDSON_URL"},{name:"Jenkins",constant:"JENKINS",env:["JENKINS_URL","BUILD_ID"],pr:{any:["ghprbPullId","CHANGE_ID"]}},{name:"LayerCI",constant:"LAYERCI",env:"LAYERCI",pr:"LAYERCI_PULL_REQUEST"},{name:"Magnum CI",constant:"MAGNUM",env:"MAGNUM"},{name:"Netlify CI",constant:"NETLIFY",env:"NETLIFY",pr:{env:"PULL_REQUEST",ne:"false"}},{name:"Nevercode",constant:"NEVERCODE",env:"NEVERCODE",pr:{env:"NEVERCODE_PULL_REQUEST",ne:"false"}},{name:"Prow",constant:"PROW",env:"PROW_JOB_ID"},{name:"ReleaseHub",constant:"RELEASEHUB",env:"RELEASE_BUILD_ID"},{name:"Render",constant:"RENDER",env:"RENDER",pr:{IS_PULL_REQUEST:"true"}},{name:"Sail CI",constant:"SAIL",env:"SAILCI",pr:"SAIL_PULL_REQUEST_NUMBER"},{name:"Screwdriver",constant:"SCREWDRIVER",env:"SCREWDRIVER",pr:{env:"SD_PULL_REQUEST",ne:"false"}},{name:"Semaphore",constant:"SEMAPHORE",env:"SEMAPHORE",pr:"PULL_REQUEST_NUMBER"},{name:"Sourcehut",constant:"SOURCEHUT",env:{CI_NAME:"sourcehut"}},{name:"Strider CD",constant:"STRIDER",env:"STRIDER"},{name:"TaskCluster",constant:"TASKCLUSTER",env:["TASK_ID","RUN_ID"]},{name:"TeamCity",constant:"TEAMCITY",env:"TEAMCITY_VERSION"},{name:"Travis CI",constant:"TRAVIS",env:"TRAVIS",pr:{env:"TRAVIS_PULL_REQUEST",ne:"false"}},{name:"Vela",constant:"VELA",env:"VELA",pr:{VELA_PULL_REQUEST:"1"}},{name:"Vercel",constant:"VERCEL",env:{any:["NOW_BUILDER","VERCEL"]},pr:"VERCEL_GIT_PULL_REQUEST_ID"},{name:"Visual Studio App Center",constant:"APPCENTER",env:"APPCENTER_BUILD_ID"},{name:"Woodpecker",constant:"WOODPECKER",env:{CI:"woodpecker"},pr:{CI_BUILD_EVENT:"pull_request"}},{name:"Xcode Cloud",constant:"XCODE_CLOUD",env:"CI_XCODE_PROJECT",pr:"CI_PULL_REQUEST_NUMBER"},{name:"Xcode Server",constant:"XCODE_SERVER",env:"XCS"}]});var Fd=_(Ml=>{"use strict";var vre=wre(),Ds=process.env;Object.defineProperty(Ml,"_vendors",{value:vre.map(function(t){return t.constant})});Ml.name=null;Ml.isPR=null;vre.forEach(function(t){let r=(Array.isArray(t.env)?t.env:[t.env]).every(function(s){return Bre(s)});if(Ml[t.constant]=r,!!r)switch(Ml.name=t.name,typeof t.pr){case"string":Ml.isPR=!!Ds[t.pr];break;case"object":"env"in t.pr?Ml.isPR=t.pr.env in Ds&&Ds[t.pr.env]!==t.pr.ne:"any"in t.pr?Ml.isPR=t.pr.any.some(function(s){return!!Ds[s]}):Ml.isPR=Bre(t.pr);break;default:Ml.isPR=null}});Ml.isCI=!!(Ds.CI!=="false"&&(Ds.BUILD_ID||Ds.BUILD_NUMBER||Ds.CI||Ds.CI_APP_ID||Ds.CI_BUILD_ID||Ds.CI_BUILD_NUMBER||Ds.CI_NAME||Ds.CONTINUOUS_INTEGRATION||Ds.RUN_ID||Ml.name));function Bre(t){return typeof t=="string"?!!Ds[t]:"env"in t?Ds[t.env]&&Ds[t.env].includes(t.includes):"any"in t?t.any.some(function(e){return!!Ds[e]}):Object.keys(t).every(function(e){return Ds[e]===t[e]})}});var ei,En,Nd,s_,Px,Sre,o_,a_,bx=Ze(()=>{(function(t){t.StartOfInput="\0",t.EndOfInput="",t.EndOfPartialInput=""})(ei||(ei={}));(function(t){t[t.InitialNode=0]="InitialNode",t[t.SuccessNode=1]="SuccessNode",t[t.ErrorNode=2]="ErrorNode",t[t.CustomNode=3]="CustomNode"})(En||(En={}));Nd=-1,s_=/^(-h|--help)(?:=([0-9]+))?$/,Px=/^(--[a-z]+(?:-[a-z]+)*|-[a-zA-Z]+)$/,Sre=/^-[a-zA-Z]{2,}$/,o_=/^([^=]+)=([\s\S]*)$/,a_=process.env.DEBUG_CLI==="1"});var nt,IE,xx,l_,kx=Ze(()=>{bx();nt=class extends Error{constructor(e){super(e),this.clipanion={type:"usage"},this.name="UsageError"}},IE=class extends Error{constructor(e,r){if(super(),this.input=e,this.candidates=r,this.clipanion={type:"none"},this.name="UnknownSyntaxError",this.candidates.length===0)this.message="Command not found, but we're not sure what's the alternative.";else if(this.candidates.every(s=>s.reason!==null&&s.reason===r[0].reason)){let[{reason:s}]=this.candidates;this.message=`${s} ${this.candidates.map(({usage:a})=>`$ ${a}`).join(` `)}`}else if(this.candidates.length===1){let[{usage:s}]=this.candidates;this.message=`Command not found; did you mean: $ ${s} ${l_(e)}`}else this.message=`Command not found; did you mean one of: ${this.candidates.map(({usage:s},a)=>`${`${a}.`.padStart(4)} ${s}`).join(` `)} ${l_(e)}`}},xx=class extends Error{constructor(e,r){super(),this.input=e,this.usages=r,this.clipanion={type:"none"},this.name="AmbiguousSyntaxError",this.message=`Cannot find which to pick amongst the following alternatives: ${this.usages.map((s,a)=>`${`${a}.`.padStart(4)} ${s}`).join(` `)} ${l_(e)}`}},l_=t=>`While running ${t.filter(e=>e!==ei.EndOfInput&&e!==ei.EndOfPartialInput).map(e=>{let r=JSON.stringify(e);return e.match(/\s/)||e.length===0||r!==`"${e}"`?r:e}).join(" ")}`});function BWe(t){let e=t.split(` `),r=e.filter(a=>a.match(/\S/)),s=r.length>0?r.reduce((a,n)=>Math.min(a,n.length-n.trimStart().length),Number.MAX_VALUE):0;return e.map(a=>a.slice(s).trimRight()).join(` `)}function Ho(t,{format:e,paragraphs:r}){return t=t.replace(/\r\n?/g,` `),t=BWe(t),t=t.replace(/^\n+|\n+$/g,""),t=t.replace(/^(\s*)-([^\n]*?)\n+/gm,`$1-$2 `),t=t.replace(/\n(\n)?\n*/g,(s,a)=>a||" "),r&&(t=t.split(/\n/).map(s=>{let a=s.match(/^\s*[*-][\t ]+(.*)/);if(!a)return s.match(/(.{1,80})(?: |$)/g).join(` `);let n=s.length-s.trimStart().length;return a[1].match(new RegExp(`(.{1,${78-n}})(?: |$)`,"g")).map((c,f)=>" ".repeat(n)+(f===0?"- ":" ")+c).join(` `)}).join(` `)),t=t.replace(/(`+)((?:.|[\n])*?)\1/g,(s,a,n)=>e.code(a+n+a)),t=t.replace(/(\*\*)((?:.|[\n])*?)\1/g,(s,a,n)=>e.bold(a+n+a)),t?`${t} `:""}var c_,Dre,Pre,u_=Ze(()=>{c_=Array(80).fill("\u2501");for(let t=0;t<=24;++t)c_[c_.length-t]=`\x1B[38;5;${232+t}m\u2501`;Dre={header:t=>`\x1B[1m\u2501\u2501\u2501 ${t}${t.length<75?` ${c_.slice(t.length+5).join("")}`:":"}\x1B[0m`,bold:t=>`\x1B[1m${t}\x1B[22m`,error:t=>`\x1B[31m\x1B[1m${t}\x1B[22m\x1B[39m`,code:t=>`\x1B[36m${t}\x1B[39m`},Pre={header:t=>t,bold:t=>t,error:t=>t,code:t=>t}});function ya(t){return{...t,[K2]:!0}}function Gf(t,e){return typeof t>"u"?[t,e]:typeof t=="object"&&t!==null&&!Array.isArray(t)?[void 0,t]:[t,e]}function Qx(t,{mergeName:e=!1}={}){let r=t.match(/^([^:]+): (.*)$/m);if(!r)return"validation failed";let[,s,a]=r;return e&&(a=a[0].toLowerCase()+a.slice(1)),a=s!=="."||!e?`${s.replace(/^\.(\[|$)/,"$1")}: ${a}`:`: ${a}`,a}function z2(t,e){return e.length===1?new nt(`${t}${Qx(e[0],{mergeName:!0})}`):new nt(`${t}: ${e.map(r=>` - ${Qx(r)}`).join("")}`)}function Od(t,e,r){if(typeof r>"u")return e;let s=[],a=[],n=f=>{let p=e;return e=f,n.bind(null,p)};if(!r(e,{errors:s,coercions:a,coercion:n}))throw z2(`Invalid value for ${t}`,s);for(let[,f]of a)f();return e}var K2,Cp=Ze(()=>{kx();K2=Symbol("clipanion/isOption")});var Ea={};Vt(Ea,{KeyRelationship:()=>qf,TypeAssertionError:()=>o0,applyCascade:()=>$2,as:()=>jWe,assert:()=>UWe,assertWithErrors:()=>_We,cascade:()=>Nx,fn:()=>GWe,hasAtLeastOneKey:()=>m_,hasExactLength:()=>Rre,hasForbiddenKeys:()=>lYe,hasKeyRelationship:()=>tB,hasMaxLength:()=>WWe,hasMinLength:()=>qWe,hasMutuallyExclusiveKeys:()=>cYe,hasRequiredKeys:()=>aYe,hasUniqueItems:()=>YWe,isArray:()=>Rx,isAtLeast:()=>g_,isAtMost:()=>KWe,isBase64:()=>nYe,isBoolean:()=>QWe,isDate:()=>TWe,isDict:()=>OWe,isEnum:()=>fo,isHexColor:()=>rYe,isISO8601:()=>tYe,isInExclusiveRange:()=>ZWe,isInInclusiveRange:()=>zWe,isInstanceOf:()=>MWe,isInteger:()=>d_,isJSON:()=>iYe,isLiteral:()=>xre,isLowerCase:()=>XWe,isMap:()=>NWe,isNegative:()=>VWe,isNullable:()=>oYe,isNumber:()=>p_,isObject:()=>kre,isOneOf:()=>h_,isOptional:()=>sYe,isPartial:()=>LWe,isPayload:()=>RWe,isPositive:()=>JWe,isRecord:()=>Fx,isSet:()=>FWe,isString:()=>wE,isTuple:()=>Tx,isUUID4:()=>eYe,isUnknown:()=>A_,isUpperCase:()=>$We,makeTrait:()=>Qre,makeValidator:()=>Wr,matchesRegExp:()=>X2,softAssert:()=>HWe});function ti(t){return t===null?"null":t===void 0?"undefined":t===""?"an empty string":typeof t=="symbol"?`<${t.toString()}>`:Array.isArray(t)?"an array":JSON.stringify(t)}function CE(t,e){if(t.length===0)return"nothing";if(t.length===1)return ti(t[0]);let r=t.slice(0,-1),s=t[t.length-1],a=t.length>2?`, ${e} `:` ${e} `;return`${r.map(n=>ti(n)).join(", ")}${a}${ti(s)}`}function s0(t,e){var r,s,a;return typeof e=="number"?`${(r=t?.p)!==null&&r!==void 0?r:"."}[${e}]`:vWe.test(e)?`${(s=t?.p)!==null&&s!==void 0?s:""}.${e}`:`${(a=t?.p)!==null&&a!==void 0?a:"."}[${JSON.stringify(e)}]`}function f_(t,e,r){return t===1?e:r}function mr({errors:t,p:e}={},r){return t?.push(`${e??"."}: ${r}`),!1}function xWe(t,e){return r=>{t[e]=r}}function Wf(t,e){return r=>{let s=t[e];return t[e]=r,Wf(t,e).bind(null,s)}}function Z2(t,e,r){let s=()=>(t(r()),a),a=()=>(t(e),s);return s}function A_(){return Wr({test:(t,e)=>!0})}function xre(t){return Wr({test:(e,r)=>e!==t?mr(r,`Expected ${ti(t)} (got ${ti(e)})`):!0})}function wE(){return Wr({test:(t,e)=>typeof t!="string"?mr(e,`Expected a string (got ${ti(t)})`):!0})}function fo(t){let e=Array.isArray(t)?t:Object.values(t),r=e.every(a=>typeof a=="string"||typeof a=="number"),s=new Set(e);return s.size===1?xre([...s][0]):Wr({test:(a,n)=>s.has(a)?!0:r?mr(n,`Expected one of ${CE(e,"or")} (got ${ti(a)})`):mr(n,`Expected a valid enumeration value (got ${ti(a)})`)})}function QWe(){return Wr({test:(t,e)=>{var r;if(typeof t!="boolean"){if(typeof e?.coercions<"u"){if(typeof e?.coercion>"u")return mr(e,"Unbound coercion result");let s=kWe.get(t);if(typeof s<"u")return e.coercions.push([(r=e.p)!==null&&r!==void 0?r:".",e.coercion.bind(null,s)]),!0}return mr(e,`Expected a boolean (got ${ti(t)})`)}return!0}})}function p_(){return Wr({test:(t,e)=>{var r;if(typeof t!="number"){if(typeof e?.coercions<"u"){if(typeof e?.coercion>"u")return mr(e,"Unbound coercion result");let s;if(typeof t=="string"){let a;try{a=JSON.parse(t)}catch{}if(typeof a=="number")if(JSON.stringify(a)===t)s=a;else return mr(e,`Received a number that can't be safely represented by the runtime (${t})`)}if(typeof s<"u")return e.coercions.push([(r=e.p)!==null&&r!==void 0?r:".",e.coercion.bind(null,s)]),!0}return mr(e,`Expected a number (got ${ti(t)})`)}return!0}})}function RWe(t){return Wr({test:(e,r)=>{var s;if(typeof r?.coercions>"u")return mr(r,"The isPayload predicate can only be used with coercion enabled");if(typeof r.coercion>"u")return mr(r,"Unbound coercion result");if(typeof e!="string")return mr(r,`Expected a string (got ${ti(e)})`);let a;try{a=JSON.parse(e)}catch{return mr(r,`Expected a JSON string (got ${ti(e)})`)}let n={value:a};return t(a,Object.assign(Object.assign({},r),{coercion:Wf(n,"value")}))?(r.coercions.push([(s=r.p)!==null&&s!==void 0?s:".",r.coercion.bind(null,n.value)]),!0):!1}})}function TWe(){return Wr({test:(t,e)=>{var r;if(!(t instanceof Date)){if(typeof e?.coercions<"u"){if(typeof e?.coercion>"u")return mr(e,"Unbound coercion result");let s;if(typeof t=="string"&&bre.test(t))s=new Date(t);else{let a;if(typeof t=="string"){let n;try{n=JSON.parse(t)}catch{}typeof n=="number"&&(a=n)}else typeof t=="number"&&(a=t);if(typeof a<"u")if(Number.isSafeInteger(a)||!Number.isSafeInteger(a*1e3))s=new Date(a*1e3);else return mr(e,`Received a timestamp that can't be safely represented by the runtime (${t})`)}if(typeof s<"u")return e.coercions.push([(r=e.p)!==null&&r!==void 0?r:".",e.coercion.bind(null,s)]),!0}return mr(e,`Expected a date (got ${ti(t)})`)}return!0}})}function Rx(t,{delimiter:e}={}){return Wr({test:(r,s)=>{var a;let n=r;if(typeof r=="string"&&typeof e<"u"&&typeof s?.coercions<"u"){if(typeof s?.coercion>"u")return mr(s,"Unbound coercion result");r=r.split(e)}if(!Array.isArray(r))return mr(s,`Expected an array (got ${ti(r)})`);let c=!0;for(let f=0,p=r.length;f{var n,c;if(Object.getPrototypeOf(s).toString()==="[object Set]")if(typeof a?.coercions<"u"){if(typeof a?.coercion>"u")return mr(a,"Unbound coercion result");let f=[...s],p=[...s];if(!r(p,Object.assign(Object.assign({},a),{coercion:void 0})))return!1;let h=()=>p.some((E,C)=>E!==f[C])?new Set(p):s;return a.coercions.push([(n=a.p)!==null&&n!==void 0?n:".",Z2(a.coercion,s,h)]),!0}else{let f=!0;for(let p of s)if(f=t(p,Object.assign({},a))&&f,!f&&a?.errors==null)break;return f}if(typeof a?.coercions<"u"){if(typeof a?.coercion>"u")return mr(a,"Unbound coercion result");let f={value:s};return r(s,Object.assign(Object.assign({},a),{coercion:Wf(f,"value")}))?(a.coercions.push([(c=a.p)!==null&&c!==void 0?c:".",Z2(a.coercion,s,()=>new Set(f.value))]),!0):!1}return mr(a,`Expected a set (got ${ti(s)})`)}})}function NWe(t,e){let r=Rx(Tx([t,e])),s=Fx(e,{keys:t});return Wr({test:(a,n)=>{var c,f,p;if(Object.getPrototypeOf(a).toString()==="[object Map]")if(typeof n?.coercions<"u"){if(typeof n?.coercion>"u")return mr(n,"Unbound coercion result");let h=[...a],E=[...a];if(!r(E,Object.assign(Object.assign({},n),{coercion:void 0})))return!1;let C=()=>E.some((S,b)=>S[0]!==h[b][0]||S[1]!==h[b][1])?new Map(E):a;return n.coercions.push([(c=n.p)!==null&&c!==void 0?c:".",Z2(n.coercion,a,C)]),!0}else{let h=!0;for(let[E,C]of a)if(h=t(E,Object.assign({},n))&&h,!h&&n?.errors==null||(h=e(C,Object.assign(Object.assign({},n),{p:s0(n,E)}))&&h,!h&&n?.errors==null))break;return h}if(typeof n?.coercions<"u"){if(typeof n?.coercion>"u")return mr(n,"Unbound coercion result");let h={value:a};return Array.isArray(a)?r(a,Object.assign(Object.assign({},n),{coercion:void 0}))?(n.coercions.push([(f=n.p)!==null&&f!==void 0?f:".",Z2(n.coercion,a,()=>new Map(h.value))]),!0):!1:s(a,Object.assign(Object.assign({},n),{coercion:Wf(h,"value")}))?(n.coercions.push([(p=n.p)!==null&&p!==void 0?p:".",Z2(n.coercion,a,()=>new Map(Object.entries(h.value)))]),!0):!1}return mr(n,`Expected a map (got ${ti(a)})`)}})}function Tx(t,{delimiter:e}={}){let r=Rre(t.length);return Wr({test:(s,a)=>{var n;if(typeof s=="string"&&typeof e<"u"&&typeof a?.coercions<"u"){if(typeof a?.coercion>"u")return mr(a,"Unbound coercion result");s=s.split(e),a.coercions.push([(n=a.p)!==null&&n!==void 0?n:".",a.coercion.bind(null,s)])}if(!Array.isArray(s))return mr(a,`Expected a tuple (got ${ti(s)})`);let c=r(s,Object.assign({},a));for(let f=0,p=s.length;f{var n;if(Array.isArray(s)&&typeof a?.coercions<"u")return typeof a?.coercion>"u"?mr(a,"Unbound coercion result"):r(s,Object.assign(Object.assign({},a),{coercion:void 0}))?(s=Object.fromEntries(s),a.coercions.push([(n=a.p)!==null&&n!==void 0?n:".",a.coercion.bind(null,s)]),!0):!1;if(typeof s!="object"||s===null)return mr(a,`Expected an object (got ${ti(s)})`);let c=Object.keys(s),f=!0;for(let p=0,h=c.length;p{if(typeof a!="object"||a===null)return mr(n,`Expected an object (got ${ti(a)})`);let c=new Set([...r,...Object.keys(a)]),f={},p=!0;for(let h of c){if(h==="constructor"||h==="__proto__")p=mr(Object.assign(Object.assign({},n),{p:s0(n,h)}),"Unsafe property name");else{let E=Object.prototype.hasOwnProperty.call(t,h)?t[h]:void 0,C=Object.prototype.hasOwnProperty.call(a,h)?a[h]:void 0;typeof E<"u"?p=E(C,Object.assign(Object.assign({},n),{p:s0(n,h),coercion:Wf(a,h)}))&&p:e===null?p=mr(Object.assign(Object.assign({},n),{p:s0(n,h)}),`Extraneous property (got ${ti(C)})`):Object.defineProperty(f,h,{enumerable:!0,get:()=>C,set:xWe(a,h)})}if(!p&&n?.errors==null)break}return e!==null&&(p||n?.errors!=null)&&(p=e(f,n)&&p),p}});return Object.assign(s,{properties:t})}function LWe(t){return kre(t,{extra:Fx(A_())})}function Qre(t){return()=>t}function Wr({test:t}){return Qre(t)()}function UWe(t,e){if(!e(t))throw new o0}function _We(t,e){let r=[];if(!e(t,{errors:r}))throw new o0({errors:r})}function HWe(t,e){}function jWe(t,e,{coerce:r=!1,errors:s,throw:a}={}){let n=s?[]:void 0;if(!r){if(e(t,{errors:n}))return a?t:{value:t,errors:void 0};if(a)throw new o0({errors:n});return{value:void 0,errors:n??!0}}let c={value:t},f=Wf(c,"value"),p=[];if(!e(t,{errors:n,coercion:f,coercions:p})){if(a)throw new o0({errors:n});return{value:void 0,errors:n??!0}}for(let[,h]of p)h();return a?c.value:{value:c.value,errors:void 0}}function GWe(t,e){let r=Tx(t);return(...s)=>{if(!r(s))throw new o0;return e(...s)}}function qWe(t){return Wr({test:(e,r)=>e.length>=t?!0:mr(r,`Expected to have a length of at least ${t} elements (got ${e.length})`)})}function WWe(t){return Wr({test:(e,r)=>e.length<=t?!0:mr(r,`Expected to have a length of at most ${t} elements (got ${e.length})`)})}function Rre(t){return Wr({test:(e,r)=>e.length!==t?mr(r,`Expected to have a length of exactly ${t} elements (got ${e.length})`):!0})}function YWe({map:t}={}){return Wr({test:(e,r)=>{let s=new Set,a=new Set;for(let n=0,c=e.length;nt<=0?!0:mr(e,`Expected to be negative (got ${t})`)})}function JWe(){return Wr({test:(t,e)=>t>=0?!0:mr(e,`Expected to be positive (got ${t})`)})}function g_(t){return Wr({test:(e,r)=>e>=t?!0:mr(r,`Expected to be at least ${t} (got ${e})`)})}function KWe(t){return Wr({test:(e,r)=>e<=t?!0:mr(r,`Expected to be at most ${t} (got ${e})`)})}function zWe(t,e){return Wr({test:(r,s)=>r>=t&&r<=e?!0:mr(s,`Expected to be in the [${t}; ${e}] range (got ${r})`)})}function ZWe(t,e){return Wr({test:(r,s)=>r>=t&&re!==Math.round(e)?mr(r,`Expected to be an integer (got ${e})`):!t&&!Number.isSafeInteger(e)?mr(r,`Expected to be a safe integer (got ${e})`):!0})}function X2(t){return Wr({test:(e,r)=>t.test(e)?!0:mr(r,`Expected to match the pattern ${t.toString()} (got ${ti(e)})`)})}function XWe(){return Wr({test:(t,e)=>t!==t.toLowerCase()?mr(e,`Expected to be all-lowercase (got ${t})`):!0})}function $We(){return Wr({test:(t,e)=>t!==t.toUpperCase()?mr(e,`Expected to be all-uppercase (got ${t})`):!0})}function eYe(){return Wr({test:(t,e)=>bWe.test(t)?!0:mr(e,`Expected to be a valid UUID v4 (got ${ti(t)})`)})}function tYe(){return Wr({test:(t,e)=>bre.test(t)?!0:mr(e,`Expected to be a valid ISO 8601 date string (got ${ti(t)})`)})}function rYe({alpha:t=!1}){return Wr({test:(e,r)=>(t?SWe.test(e):DWe.test(e))?!0:mr(r,`Expected to be a valid hexadecimal color string (got ${ti(e)})`)})}function nYe(){return Wr({test:(t,e)=>PWe.test(t)?!0:mr(e,`Expected to be a valid base 64 string (got ${ti(t)})`)})}function iYe(t=A_()){return Wr({test:(e,r)=>{let s;try{s=JSON.parse(e)}catch{return mr(r,`Expected to be a valid JSON string (got ${ti(e)})`)}return t(s,r)}})}function Nx(t,...e){let r=Array.isArray(e[0])?e[0]:e;return Wr({test:(s,a)=>{var n,c;let f={value:s},p=typeof a?.coercions<"u"?Wf(f,"value"):void 0,h=typeof a?.coercions<"u"?[]:void 0;if(!t(s,Object.assign(Object.assign({},a),{coercion:p,coercions:h})))return!1;let E=[];if(typeof h<"u")for(let[,C]of h)E.push(C());try{if(typeof a?.coercions<"u"){if(f.value!==s){if(typeof a?.coercion>"u")return mr(a,"Unbound coercion result");a.coercions.push([(n=a.p)!==null&&n!==void 0?n:".",a.coercion.bind(null,f.value)])}(c=a?.coercions)===null||c===void 0||c.push(...h)}return r.every(C=>C(f.value,a))}finally{for(let C of E)C()}}})}function $2(t,...e){let r=Array.isArray(e[0])?e[0]:e;return Nx(t,r)}function sYe(t){return Wr({test:(e,r)=>typeof e>"u"?!0:t(e,r)})}function oYe(t){return Wr({test:(e,r)=>e===null?!0:t(e,r)})}function aYe(t,e){var r;let s=new Set(t),a=eB[(r=e?.missingIf)!==null&&r!==void 0?r:"missing"];return Wr({test:(n,c)=>{let f=new Set(Object.keys(n)),p=[];for(let h of s)a(f,h,n)||p.push(h);return p.length>0?mr(c,`Missing required ${f_(p.length,"property","properties")} ${CE(p,"and")}`):!0}})}function m_(t,e){var r;let s=new Set(t),a=eB[(r=e?.missingIf)!==null&&r!==void 0?r:"missing"];return Wr({test:(n,c)=>Object.keys(n).some(h=>a(s,h,n))?!0:mr(c,`Missing at least one property from ${CE(Array.from(s),"or")}`)})}function lYe(t,e){var r;let s=new Set(t),a=eB[(r=e?.missingIf)!==null&&r!==void 0?r:"missing"];return Wr({test:(n,c)=>{let f=new Set(Object.keys(n)),p=[];for(let h of s)a(f,h,n)&&p.push(h);return p.length>0?mr(c,`Forbidden ${f_(p.length,"property","properties")} ${CE(p,"and")}`):!0}})}function cYe(t,e){var r;let s=new Set(t),a=eB[(r=e?.missingIf)!==null&&r!==void 0?r:"missing"];return Wr({test:(n,c)=>{let f=new Set(Object.keys(n)),p=[];for(let h of s)a(f,h,n)&&p.push(h);return p.length>1?mr(c,`Mutually exclusive properties ${CE(p,"and")}`):!0}})}function tB(t,e,r,s){var a,n;let c=new Set((a=s?.ignore)!==null&&a!==void 0?a:[]),f=eB[(n=s?.missingIf)!==null&&n!==void 0?n:"missing"],p=new Set(r),h=uYe[e],E=e===qf.Forbids?"or":"and";return Wr({test:(C,S)=>{let b=new Set(Object.keys(C));if(!f(b,t,C)||c.has(C[t]))return!0;let I=[];for(let T of p)(f(b,T,C)&&!c.has(C[T]))!==h.expect&&I.push(T);return I.length>=1?mr(S,`Property "${t}" ${h.message} ${f_(I.length,"property","properties")} ${CE(I,E)}`):!0}})}var vWe,SWe,DWe,PWe,bWe,bre,kWe,MWe,h_,o0,eB,qf,uYe,Ul=Ze(()=>{vWe=/^[a-zA-Z_][a-zA-Z0-9_]*$/;SWe=/^#[0-9a-f]{6}$/i,DWe=/^#[0-9a-f]{6}([0-9a-f]{2})?$/i,PWe=/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/,bWe=/^[a-f0-9]{8}-[a-f0-9]{4}-4[a-f0-9]{3}-[89aAbB][a-f0-9]{3}-[a-f0-9]{12}$/i,bre=/^(?:[1-9]\d{3}(-?)(?:(?:0[1-9]|1[0-2])\1(?:0[1-9]|1\d|2[0-8])|(?:0[13-9]|1[0-2])\1(?:29|30)|(?:0[13578]|1[02])(?:\1)31|00[1-9]|0[1-9]\d|[12]\d{2}|3(?:[0-5]\d|6[0-5]))|(?:[1-9]\d(?:0[48]|[2468][048]|[13579][26])|(?:[2468][048]|[13579][26])00)(?:(-?)02(?:\2)29|-?366))T(?:[01]\d|2[0-3])(:?)[0-5]\d(?:\3[0-5]\d)?(?:Z|[+-][01]\d(?:\3[0-5]\d)?)$/;kWe=new Map([["true",!0],["True",!0],["1",!0],[1,!0],["false",!1],["False",!1],["0",!1],[0,!1]]);MWe=t=>Wr({test:(e,r)=>e instanceof t?!0:mr(r,`Expected an instance of ${t.name} (got ${ti(e)})`)}),h_=(t,{exclusive:e=!1}={})=>Wr({test:(r,s)=>{var a,n,c;let f=[],p=typeof s?.errors<"u"?[]:void 0;for(let h=0,E=t.length;h1?mr(s,`Expected to match exactly a single predicate (matched ${f.join(", ")})`):(c=s?.errors)===null||c===void 0||c.push(...p),!1}});o0=class extends Error{constructor({errors:e}={}){let r="Type mismatch";if(e&&e.length>0){r+=` `;for(let s of e)r+=` - ${s}`}super(r)}};eB={missing:(t,e)=>t.has(e),undefined:(t,e,r)=>t.has(e)&&typeof r[e]<"u",nil:(t,e,r)=>t.has(e)&&r[e]!=null,falsy:(t,e,r)=>t.has(e)&&!!r[e]};(function(t){t.Forbids="Forbids",t.Requires="Requires"})(qf||(qf={}));uYe={[qf.Forbids]:{expect:!1,message:"forbids using"},[qf.Requires]:{expect:!0,message:"requires using"}}});var ot,a0=Ze(()=>{Cp();ot=class{constructor(){this.help=!1}static Usage(e){return e}async catch(e){throw e}async validateAndExecute(){let r=this.constructor.schema;if(Array.isArray(r)){let{isDict:a,isUnknown:n,applyCascade:c}=await Promise.resolve().then(()=>(Ul(),Ea)),f=c(a(n()),r),p=[],h=[];if(!f(this,{errors:p,coercions:h}))throw z2("Invalid option schema",p);for(let[,C]of h)C()}else if(r!=null)throw new Error("Invalid command schema");let s=await this.execute();return typeof s<"u"?s:0}};ot.isOption=K2;ot.Default=[]});function il(t){a_&&console.log(t)}function Fre(){let t={nodes:[]};for(let e=0;e{if(e.has(s))return;e.add(s);let a=t.nodes[s];for(let c of Object.values(a.statics))for(let{to:f}of c)r(f);for(let[,{to:c}]of a.dynamics)r(c);for(let{to:c}of a.shortcuts)r(c);let n=new Set(a.shortcuts.map(({to:c})=>c));for(;a.shortcuts.length>0;){let{to:c}=a.shortcuts.shift(),f=t.nodes[c];for(let[p,h]of Object.entries(f.statics)){let E=Object.prototype.hasOwnProperty.call(a.statics,p)?a.statics[p]:a.statics[p]=[];for(let C of h)E.some(({to:S})=>C.to===S)||E.push(C)}for(let[p,h]of f.dynamics)a.dynamics.some(([E,{to:C}])=>p===E&&h.to===C)||a.dynamics.push([p,h]);for(let p of f.shortcuts)n.has(p.to)||(a.shortcuts.push(p),n.add(p.to))}};r(En.InitialNode)}function pYe(t,{prefix:e=""}={}){if(a_){il(`${e}Nodes are:`);for(let r=0;rE!==En.ErrorNode).map(({state:E})=>({usage:E.candidateUsage,reason:null})));if(h.every(({node:E})=>E===En.ErrorNode))throw new IE(e,h.map(({state:E})=>({usage:E.candidateUsage,reason:E.errorMessage})));s=dYe(h)}if(s.length>0){il(" Results:");for(let n of s)il(` - ${n.node} -> ${JSON.stringify(n.state)}`)}else il(" No results");return s}function gYe(t,e,{endToken:r=ei.EndOfInput}={}){let s=hYe(t,[...e,r]);return mYe(e,s.map(({state:a})=>a))}function dYe(t){let e=0;for(let{state:r}of t)r.path.length>e&&(e=r.path.length);return t.filter(({state:r})=>r.path.length===e)}function mYe(t,e){let r=e.filter(S=>S.selectedIndex!==null),s=r.filter(S=>!S.partial);if(s.length>0&&(r=s),r.length===0)throw new Error;let a=r.filter(S=>S.selectedIndex===Nd||S.requiredOptions.every(b=>b.some(I=>S.options.find(T=>T.name===I))));if(a.length===0)throw new IE(t,r.map(S=>({usage:S.candidateUsage,reason:null})));let n=0;for(let S of a)S.path.length>n&&(n=S.path.length);let c=a.filter(S=>S.path.length===n),f=S=>S.positionals.filter(({extra:b})=>!b).length+S.options.length,p=c.map(S=>({state:S,positionalCount:f(S)})),h=0;for(let{positionalCount:S}of p)S>h&&(h=S);let E=p.filter(({positionalCount:S})=>S===h).map(({state:S})=>S),C=yYe(E);if(C.length>1)throw new xx(t,C.map(S=>S.candidateUsage));return C[0]}function yYe(t){let e=[],r=[];for(let s of t)s.selectedIndex===Nd?r.push(s):e.push(s);return r.length>0&&e.push({...Tre,path:Nre(...r.map(s=>s.path)),options:r.reduce((s,a)=>s.concat(a.options),[])}),e}function Nre(t,e,...r){return e===void 0?Array.from(t):Nre(t.filter((s,a)=>s===e[a]),...r)}function _l(){return{dynamics:[],shortcuts:[],statics:{}}}function Ore(t){return t===En.SuccessNode||t===En.ErrorNode}function y_(t,e=0){return{to:Ore(t.to)?t.to:t.to>=En.CustomNode?t.to+e-En.CustomNode+1:t.to+e,reducer:t.reducer}}function EYe(t,e=0){let r=_l();for(let[s,a]of t.dynamics)r.dynamics.push([s,y_(a,e)]);for(let s of t.shortcuts)r.shortcuts.push(y_(s,e));for(let[s,a]of Object.entries(t.statics))r.statics[s]=a.map(n=>y_(n,e));return r}function Hs(t,e,r,s,a){t.nodes[e].dynamics.push([r,{to:s,reducer:a}])}function BE(t,e,r,s){t.nodes[e].shortcuts.push({to:r,reducer:s})}function Ia(t,e,r,s,a){(Object.prototype.hasOwnProperty.call(t.nodes[e].statics,r)?t.nodes[e].statics[r]:t.nodes[e].statics[r]=[]).push({to:s,reducer:a})}function Ox(t,e,r,s,a){if(Array.isArray(e)){let[n,...c]=e;return t[n](r,s,a,...c)}else return t[e](r,s,a)}var Tre,IYe,E_,Hl,I_,Lx,Mx=Ze(()=>{bx();kx();Tre={candidateUsage:null,requiredOptions:[],errorMessage:null,ignoreOptions:!1,path:[],positionals:[],options:[],remainder:null,selectedIndex:Nd,partial:!1,tokens:[]};IYe={always:()=>!0,isOptionLike:(t,e)=>!t.ignoreOptions&&e!=="-"&&e.startsWith("-"),isNotOptionLike:(t,e)=>t.ignoreOptions||e==="-"||!e.startsWith("-"),isOption:(t,e,r,s)=>!t.ignoreOptions&&e===s,isBatchOption:(t,e,r,s)=>!t.ignoreOptions&&Sre.test(e)&&[...e.slice(1)].every(a=>s.has(`-${a}`)),isBoundOption:(t,e,r,s,a)=>{let n=e.match(o_);return!t.ignoreOptions&&!!n&&Px.test(n[1])&&s.has(n[1])&&a.filter(c=>c.nameSet.includes(n[1])).every(c=>c.allowBinding)},isNegatedOption:(t,e,r,s)=>!t.ignoreOptions&&e===`--no-${s.slice(2)}`,isHelp:(t,e)=>!t.ignoreOptions&&s_.test(e),isUnsupportedOption:(t,e,r,s)=>!t.ignoreOptions&&e.startsWith("-")&&Px.test(e)&&!s.has(e),isInvalidOption:(t,e)=>!t.ignoreOptions&&e.startsWith("-")&&!Px.test(e)},E_={setCandidateState:(t,e,r,s)=>({...t,...s}),setSelectedIndex:(t,e,r,s)=>({...t,selectedIndex:s}),setPartialIndex:(t,e,r,s)=>({...t,selectedIndex:s,partial:!0}),pushBatch:(t,e,r,s)=>{let a=t.options.slice(),n=t.tokens.slice();for(let c=1;c{let[,s,a]=e.match(o_),n=t.options.concat({name:s,value:a}),c=t.tokens.concat([{segmentIndex:r,type:"option",slice:[0,s.length],option:s},{segmentIndex:r,type:"assign",slice:[s.length,s.length+1]},{segmentIndex:r,type:"value",slice:[s.length+1,s.length+a.length+1]}]);return{...t,options:n,tokens:c}},pushPath:(t,e,r)=>{let s=t.path.concat(e),a=t.tokens.concat({segmentIndex:r,type:"path"});return{...t,path:s,tokens:a}},pushPositional:(t,e,r)=>{let s=t.positionals.concat({value:e,extra:!1}),a=t.tokens.concat({segmentIndex:r,type:"positional"});return{...t,positionals:s,tokens:a}},pushExtra:(t,e,r)=>{let s=t.positionals.concat({value:e,extra:!0}),a=t.tokens.concat({segmentIndex:r,type:"positional"});return{...t,positionals:s,tokens:a}},pushExtraNoLimits:(t,e,r)=>{let s=t.positionals.concat({value:e,extra:Hl}),a=t.tokens.concat({segmentIndex:r,type:"positional"});return{...t,positionals:s,tokens:a}},pushTrue:(t,e,r,s)=>{let a=t.options.concat({name:s,value:!0}),n=t.tokens.concat({segmentIndex:r,type:"option",option:s});return{...t,options:a,tokens:n}},pushFalse:(t,e,r,s)=>{let a=t.options.concat({name:s,value:!1}),n=t.tokens.concat({segmentIndex:r,type:"option",option:s});return{...t,options:a,tokens:n}},pushUndefined:(t,e,r,s)=>{let a=t.options.concat({name:e,value:void 0}),n=t.tokens.concat({segmentIndex:r,type:"option",option:e});return{...t,options:a,tokens:n}},pushStringValue:(t,e,r)=>{var s;let a=t.options[t.options.length-1],n=t.options.slice(),c=t.tokens.concat({segmentIndex:r,type:"value"});return a.value=((s=a.value)!==null&&s!==void 0?s:[]).concat([e]),{...t,options:n,tokens:c}},setStringValue:(t,e,r)=>{let s=t.options[t.options.length-1],a=t.options.slice(),n=t.tokens.concat({segmentIndex:r,type:"value"});return s.value=e,{...t,options:a,tokens:n}},inhibateOptions:t=>({...t,ignoreOptions:!0}),useHelp:(t,e,r,s)=>{let[,,a]=e.match(s_);return typeof a<"u"?{...t,options:[{name:"-c",value:String(s)},{name:"-i",value:a}]}:{...t,options:[{name:"-c",value:String(s)}]}},setError:(t,e,r,s)=>e===ei.EndOfInput||e===ei.EndOfPartialInput?{...t,errorMessage:`${s}.`}:{...t,errorMessage:`${s} ("${e}").`},setOptionArityError:(t,e)=>{let r=t.options[t.options.length-1];return{...t,errorMessage:`Not enough arguments to option ${r.name}.`}}},Hl=Symbol(),I_=class{constructor(e,r){this.allOptionNames=new Map,this.arity={leading:[],trailing:[],extra:[],proxy:!1},this.options=[],this.paths=[],this.cliIndex=e,this.cliOpts=r}addPath(e){this.paths.push(e)}setArity({leading:e=this.arity.leading,trailing:r=this.arity.trailing,extra:s=this.arity.extra,proxy:a=this.arity.proxy}){Object.assign(this.arity,{leading:e,trailing:r,extra:s,proxy:a})}addPositional({name:e="arg",required:r=!0}={}){if(!r&&this.arity.extra===Hl)throw new Error("Optional parameters cannot be declared when using .rest() or .proxy()");if(!r&&this.arity.trailing.length>0)throw new Error("Optional parameters cannot be declared after the required trailing positional arguments");!r&&this.arity.extra!==Hl?this.arity.extra.push(e):this.arity.extra!==Hl&&this.arity.extra.length===0?this.arity.leading.push(e):this.arity.trailing.push(e)}addRest({name:e="arg",required:r=0}={}){if(this.arity.extra===Hl)throw new Error("Infinite lists cannot be declared multiple times in the same command");if(this.arity.trailing.length>0)throw new Error("Infinite lists cannot be declared after the required trailing positional arguments");for(let s=0;s1)throw new Error("The arity cannot be higher than 1 when the option only supports the --arg=value syntax");if(!Number.isInteger(s))throw new Error(`The arity must be an integer, got ${s}`);if(s<0)throw new Error(`The arity must be positive, got ${s}`);let f=e.reduce((p,h)=>h.length>p.length?h:p,"");for(let p of e)this.allOptionNames.set(p,f);this.options.push({preferredName:f,nameSet:e,description:r,arity:s,hidden:a,required:n,allowBinding:c})}setContext(e){this.context=e}usage({detailed:e=!0,inlineOptions:r=!0}={}){let s=[this.cliOpts.binaryName],a=[];if(this.paths.length>0&&s.push(...this.paths[0]),e){for(let{preferredName:c,nameSet:f,arity:p,hidden:h,description:E,required:C}of this.options){if(h)continue;let S=[];for(let I=0;I`:`[${b}]`)}s.push(...this.arity.leading.map(c=>`<${c}>`)),this.arity.extra===Hl?s.push("..."):s.push(...this.arity.extra.map(c=>`[${c}]`)),s.push(...this.arity.trailing.map(c=>`<${c}>`))}return{usage:s.join(" "),options:a}}compile(){if(typeof this.context>"u")throw new Error("Assertion failed: No context attached");let e=Fre(),r=En.InitialNode,s=this.usage().usage,a=this.options.filter(f=>f.required).map(f=>f.nameSet);r=Ou(e,_l()),Ia(e,En.InitialNode,ei.StartOfInput,r,["setCandidateState",{candidateUsage:s,requiredOptions:a}]);let n=this.arity.proxy?"always":"isNotOptionLike",c=this.paths.length>0?this.paths:[[]];for(let f of c){let p=r;if(f.length>0){let S=Ou(e,_l());BE(e,p,S),this.registerOptions(e,S),p=S}for(let S=0;S0||!this.arity.proxy){let S=Ou(e,_l());Hs(e,p,"isHelp",S,["useHelp",this.cliIndex]),Hs(e,S,"always",S,"pushExtra"),Ia(e,S,ei.EndOfInput,En.SuccessNode,["setSelectedIndex",Nd]),this.registerOptions(e,p)}this.arity.leading.length>0&&(Ia(e,p,ei.EndOfInput,En.ErrorNode,["setError","Not enough positional arguments"]),Ia(e,p,ei.EndOfPartialInput,En.SuccessNode,["setPartialIndex",this.cliIndex]));let h=p;for(let S=0;S0||S+1!==this.arity.leading.length)&&(Ia(e,b,ei.EndOfInput,En.ErrorNode,["setError","Not enough positional arguments"]),Ia(e,b,ei.EndOfPartialInput,En.SuccessNode,["setPartialIndex",this.cliIndex])),Hs(e,h,"isNotOptionLike",b,"pushPositional"),h=b}let E=h;if(this.arity.extra===Hl||this.arity.extra.length>0){let S=Ou(e,_l());if(BE(e,h,S),this.arity.extra===Hl){let b=Ou(e,_l());this.arity.proxy||this.registerOptions(e,b),Hs(e,h,n,b,"pushExtraNoLimits"),Hs(e,b,n,b,"pushExtraNoLimits"),BE(e,b,S)}else for(let b=0;b0)&&this.registerOptions(e,I),Hs(e,E,n,I,"pushExtra"),BE(e,I,S),E=I}E=S}this.arity.trailing.length>0&&(Ia(e,E,ei.EndOfInput,En.ErrorNode,["setError","Not enough positional arguments"]),Ia(e,E,ei.EndOfPartialInput,En.SuccessNode,["setPartialIndex",this.cliIndex]));let C=E;for(let S=0;S=0&&e{let c=n?ei.EndOfPartialInput:ei.EndOfInput;return gYe(s,a,{endToken:c})}}}}});function Mre(){return Ux.default&&"getColorDepth"in Ux.default.WriteStream.prototype?Ux.default.WriteStream.prototype.getColorDepth():process.env.FORCE_COLOR==="0"?1:process.env.FORCE_COLOR==="1"||typeof process.stdout<"u"&&process.stdout.isTTY?8:1}function Ure(t){let e=Lre;if(typeof e>"u"){if(t.stdout===process.stdout&&t.stderr===process.stderr)return null;let{AsyncLocalStorage:r}=Ie("async_hooks");e=Lre=new r;let s=process.stdout._write;process.stdout._write=function(n,c,f){let p=e.getStore();return typeof p>"u"?s.call(this,n,c,f):p.stdout.write(n,c,f)};let a=process.stderr._write;process.stderr._write=function(n,c,f){let p=e.getStore();return typeof p>"u"?a.call(this,n,c,f):p.stderr.write(n,c,f)}}return r=>e.run(t,r)}var Ux,Lre,_re=Ze(()=>{Ux=ut(Ie("tty"),1)});var _x,Hre=Ze(()=>{a0();_x=class t extends ot{constructor(e){super(),this.contexts=e,this.commands=[]}static from(e,r){let s=new t(r);s.path=e.path;for(let a of e.options)switch(a.name){case"-c":s.commands.push(Number(a.value));break;case"-i":s.index=Number(a.value);break}return s}async execute(){let e=this.commands;if(typeof this.index<"u"&&this.index>=0&&this.index1){this.context.stdout.write(`Multiple commands match your selection: `),this.context.stdout.write(` `);let r=0;for(let s of this.commands)this.context.stdout.write(this.cli.usage(this.contexts[s].commandClass,{prefix:`${r++}. `.padStart(5)}));this.context.stdout.write(` `),this.context.stdout.write(`Run again with -h= to see the longer details of any of those commands. `)}}}});async function qre(...t){let{resolvedOptions:e,resolvedCommandClasses:r,resolvedArgv:s,resolvedContext:a}=Yre(t);return Ca.from(r,e).runExit(s,a)}async function Wre(...t){let{resolvedOptions:e,resolvedCommandClasses:r,resolvedArgv:s,resolvedContext:a}=Yre(t);return Ca.from(r,e).run(s,a)}function Yre(t){let e,r,s,a;switch(typeof process<"u"&&typeof process.argv<"u"&&(s=process.argv.slice(2)),t.length){case 1:r=t[0];break;case 2:t[0]&&t[0].prototype instanceof ot||Array.isArray(t[0])?(r=t[0],Array.isArray(t[1])?s=t[1]:a=t[1]):(e=t[0],r=t[1]);break;case 3:Array.isArray(t[2])?(e=t[0],r=t[1],s=t[2]):t[0]&&t[0].prototype instanceof ot||Array.isArray(t[0])?(r=t[0],s=t[1],a=t[2]):(e=t[0],r=t[1],a=t[2]);break;default:e=t[0],r=t[1],s=t[2],a=t[3];break}if(typeof s>"u")throw new Error("The argv parameter must be provided when running Clipanion outside of a Node context");return{resolvedOptions:e,resolvedCommandClasses:r,resolvedArgv:s,resolvedContext:a}}function Gre(t){return t()}var jre,Ca,Vre=Ze(()=>{bx();Mx();u_();_re();a0();Hre();jre=Symbol("clipanion/errorCommand");Ca=class t{constructor({binaryLabel:e,binaryName:r="...",binaryVersion:s,enableCapture:a=!1,enableColors:n}={}){this.registrations=new Map,this.builder=new Lx({binaryName:r}),this.binaryLabel=e,this.binaryName=r,this.binaryVersion=s,this.enableCapture=a,this.enableColors=n}static from(e,r={}){let s=new t(r),a=Array.isArray(e)?e:[e];for(let n of a)s.register(n);return s}register(e){var r;let s=new Map,a=new e;for(let p in a){let h=a[p];typeof h=="object"&&h!==null&&h[ot.isOption]&&s.set(p,h)}let n=this.builder.command(),c=n.cliIndex,f=(r=e.paths)!==null&&r!==void 0?r:a.paths;if(typeof f<"u")for(let p of f)n.addPath(p);this.registrations.set(e,{specs:s,builder:n,index:c});for(let[p,{definition:h}]of s.entries())h(n,p);n.setContext({commandClass:e})}process(e,r){let{input:s,context:a,partial:n}=typeof e=="object"&&Array.isArray(e)?{input:e,context:r}:e,{contexts:c,process:f}=this.builder.compile(),p=f(s,{partial:n}),h={...t.defaultContext,...a};switch(p.selectedIndex){case Nd:{let E=_x.from(p,c);return E.context=h,E.tokens=p.tokens,E}default:{let{commandClass:E}=c[p.selectedIndex],C=this.registrations.get(E);if(typeof C>"u")throw new Error("Assertion failed: Expected the command class to have been registered.");let S=new E;S.context=h,S.tokens=p.tokens,S.path=p.path;try{for(let[b,{transformer:I}]of C.specs.entries())S[b]=I(C.builder,b,p,h);return S}catch(b){throw b[jre]=S,b}}break}}async run(e,r){var s,a;let n,c={...t.defaultContext,...r},f=(s=this.enableColors)!==null&&s!==void 0?s:c.colorDepth>1;if(!Array.isArray(e))n=e;else try{n=this.process(e,c)}catch(E){return c.stdout.write(this.error(E,{colored:f})),1}if(n.help)return c.stdout.write(this.usage(n,{colored:f,detailed:!0})),0;n.context=c,n.cli={binaryLabel:this.binaryLabel,binaryName:this.binaryName,binaryVersion:this.binaryVersion,enableCapture:this.enableCapture,enableColors:this.enableColors,definitions:()=>this.definitions(),definition:E=>this.definition(E),error:(E,C)=>this.error(E,C),format:E=>this.format(E),process:(E,C)=>this.process(E,{...c,...C}),run:(E,C)=>this.run(E,{...c,...C}),usage:(E,C)=>this.usage(E,C)};let p=this.enableCapture&&(a=Ure(c))!==null&&a!==void 0?a:Gre,h;try{h=await p(()=>n.validateAndExecute().catch(E=>n.catch(E).then(()=>0)))}catch(E){return c.stdout.write(this.error(E,{colored:f,command:n})),1}return h}async runExit(e,r){process.exitCode=await this.run(e,r)}definition(e,{colored:r=!1}={}){if(!e.usage)return null;let{usage:s}=this.getUsageByRegistration(e,{detailed:!1}),{usage:a,options:n}=this.getUsageByRegistration(e,{detailed:!0,inlineOptions:!1}),c=typeof e.usage.category<"u"?Ho(e.usage.category,{format:this.format(r),paragraphs:!1}):void 0,f=typeof e.usage.description<"u"?Ho(e.usage.description,{format:this.format(r),paragraphs:!1}):void 0,p=typeof e.usage.details<"u"?Ho(e.usage.details,{format:this.format(r),paragraphs:!0}):void 0,h=typeof e.usage.examples<"u"?e.usage.examples.map(([E,C])=>[Ho(E,{format:this.format(r),paragraphs:!1}),C.replace(/\$0/g,this.binaryName)]):void 0;return{path:s,usage:a,category:c,description:f,details:p,examples:h,options:n}}definitions({colored:e=!1}={}){let r=[];for(let s of this.registrations.keys()){let a=this.definition(s,{colored:e});a&&r.push(a)}return r}usage(e=null,{colored:r,detailed:s=!1,prefix:a="$ "}={}){var n;if(e===null){for(let p of this.registrations.keys()){let h=p.paths,E=typeof p.usage<"u";if(!h||h.length===0||h.length===1&&h[0].length===0||((n=h?.some(b=>b.length===0))!==null&&n!==void 0?n:!1))if(e){e=null;break}else e=p;else if(E){e=null;continue}}e&&(s=!0)}let c=e!==null&&e instanceof ot?e.constructor:e,f="";if(c)if(s){let{description:p="",details:h="",examples:E=[]}=c.usage||{};p!==""&&(f+=Ho(p,{format:this.format(r),paragraphs:!1}).replace(/^./,b=>b.toUpperCase()),f+=` `),(h!==""||E.length>0)&&(f+=`${this.format(r).header("Usage")} `,f+=` `);let{usage:C,options:S}=this.getUsageByRegistration(c,{inlineOptions:!1});if(f+=`${this.format(r).bold(a)}${C} `,S.length>0){f+=` `,f+=`${this.format(r).header("Options")} `;let b=S.reduce((I,T)=>Math.max(I,T.definition.length),0);f+=` `;for(let{definition:I,description:T}of S)f+=` ${this.format(r).bold(I.padEnd(b))} ${Ho(T,{format:this.format(r),paragraphs:!1})}`}if(h!==""&&(f+=` `,f+=`${this.format(r).header("Details")} `,f+=` `,f+=Ho(h,{format:this.format(r),paragraphs:!0})),E.length>0){f+=` `,f+=`${this.format(r).header("Examples")} `;for(let[b,I]of E)f+=` `,f+=Ho(b,{format:this.format(r),paragraphs:!1}),f+=`${I.replace(/^/m,` ${this.format(r).bold(a)}`).replace(/\$0/g,this.binaryName)} `}}else{let{usage:p}=this.getUsageByRegistration(c);f+=`${this.format(r).bold(a)}${p} `}else{let p=new Map;for(let[S,{index:b}]of this.registrations.entries()){if(typeof S.usage>"u")continue;let I=typeof S.usage.category<"u"?Ho(S.usage.category,{format:this.format(r),paragraphs:!1}):null,T=p.get(I);typeof T>"u"&&p.set(I,T=[]);let{usage:N}=this.getUsageByIndex(b);T.push({commandClass:S,usage:N})}let h=Array.from(p.keys()).sort((S,b)=>S===null?-1:b===null?1:S.localeCompare(b,"en",{usage:"sort",caseFirst:"upper"})),E=typeof this.binaryLabel<"u",C=typeof this.binaryVersion<"u";E||C?(E&&C?f+=`${this.format(r).header(`${this.binaryLabel} - ${this.binaryVersion}`)} `:E?f+=`${this.format(r).header(`${this.binaryLabel}`)} `:f+=`${this.format(r).header(`${this.binaryVersion}`)} `,f+=` ${this.format(r).bold(a)}${this.binaryName} `):f+=`${this.format(r).bold(a)}${this.binaryName} `;for(let S of h){let b=p.get(S).slice().sort((T,N)=>T.usage.localeCompare(N.usage,"en",{usage:"sort",caseFirst:"upper"})),I=S!==null?S.trim():"General commands";f+=` `,f+=`${this.format(r).header(`${I}`)} `;for(let{commandClass:T,usage:N}of b){let U=T.usage.description||"undocumented";f+=` `,f+=` ${this.format(r).bold(N)} `,f+=` ${Ho(U,{format:this.format(r),paragraphs:!1})}`}}f+=` `,f+=Ho("You can also print more details about any of these commands by calling them with the `-h,--help` flag right after the command name.",{format:this.format(r),paragraphs:!0})}return f}error(e,r){var s,{colored:a,command:n=(s=e[jre])!==null&&s!==void 0?s:null}=r===void 0?{}:r;(!e||typeof e!="object"||!("stack"in e))&&(e=new Error(`Execution failed with a non-error rejection (rejected value: ${JSON.stringify(e)})`));let c="",f=e.name.replace(/([a-z])([A-Z])/g,"$1 $2");f==="Error"&&(f="Internal Error"),c+=`${this.format(a).error(f)}: ${e.message} `;let p=e.clipanion;return typeof p<"u"?p.type==="usage"&&(c+=` `,c+=this.usage(n)):e.stack&&(c+=`${e.stack.replace(/^.*\n/,"")} `),c}format(e){var r;return((r=e??this.enableColors)!==null&&r!==void 0?r:t.defaultContext.colorDepth>1)?Dre:Pre}getUsageByRegistration(e,r){let s=this.registrations.get(e);if(typeof s>"u")throw new Error("Assertion failed: Unregistered command");return this.getUsageByIndex(s.index,r)}getUsageByIndex(e,r){return this.builder.getBuilderByIndex(e).usage(r)}};Ca.defaultContext={env:process.env,stdin:process.stdin,stdout:process.stdout,stderr:process.stderr,colorDepth:Mre()}});var rB,Jre=Ze(()=>{a0();rB=class extends ot{async execute(){this.context.stdout.write(`${JSON.stringify(this.cli.definitions(),null,2)} `)}};rB.paths=[["--clipanion=definitions"]]});var nB,Kre=Ze(()=>{a0();nB=class extends ot{async execute(){this.context.stdout.write(this.cli.usage())}};nB.paths=[["-h"],["--help"]]});function Hx(t={}){return ya({definition(e,r){var s;e.addProxy({name:(s=t.name)!==null&&s!==void 0?s:r,required:t.required})},transformer(e,r,s){return s.positionals.map(({value:a})=>a)}})}var C_=Ze(()=>{Cp()});var iB,zre=Ze(()=>{a0();C_();iB=class extends ot{constructor(){super(...arguments),this.args=Hx()}async execute(){this.context.stdout.write(`${JSON.stringify(this.cli.process(this.args).tokens,null,2)} `)}};iB.paths=[["--clipanion=tokens"]]});var sB,Zre=Ze(()=>{a0();sB=class extends ot{async execute(){var e;this.context.stdout.write(`${(e=this.cli.binaryVersion)!==null&&e!==void 0?e:""} `)}};sB.paths=[["-v"],["--version"]]});var w_={};Vt(w_,{DefinitionsCommand:()=>rB,HelpCommand:()=>nB,TokensCommand:()=>iB,VersionCommand:()=>sB});var Xre=Ze(()=>{Jre();Kre();zre();Zre()});function $re(t,e,r){let[s,a]=Gf(e,r??{}),{arity:n=1}=a,c=t.split(","),f=new Set(c);return ya({definition(p){p.addOption({names:c,arity:n,hidden:a?.hidden,description:a?.description,required:a.required})},transformer(p,h,E){let C,S=typeof s<"u"?[...s]:void 0;for(let{name:b,value:I}of E.options)f.has(b)&&(C=b,S=S??[],S.push(I));return typeof S<"u"?Od(C??h,S,a.validator):S}})}var ene=Ze(()=>{Cp()});function tne(t,e,r){let[s,a]=Gf(e,r??{}),n=t.split(","),c=new Set(n);return ya({definition(f){f.addOption({names:n,allowBinding:!1,arity:0,hidden:a.hidden,description:a.description,required:a.required})},transformer(f,p,h){let E=s;for(let{name:C,value:S}of h.options)c.has(C)&&(E=S);return E}})}var rne=Ze(()=>{Cp()});function nne(t,e,r){let[s,a]=Gf(e,r??{}),n=t.split(","),c=new Set(n);return ya({definition(f){f.addOption({names:n,allowBinding:!1,arity:0,hidden:a.hidden,description:a.description,required:a.required})},transformer(f,p,h){let E=s;for(let{name:C,value:S}of h.options)c.has(C)&&(E??(E=0),S?E+=1:E=0);return E}})}var ine=Ze(()=>{Cp()});function sne(t={}){return ya({definition(e,r){var s;e.addRest({name:(s=t.name)!==null&&s!==void 0?s:r,required:t.required})},transformer(e,r,s){let a=c=>{let f=s.positionals[c];return f.extra===Hl||f.extra===!1&&cc)}})}var one=Ze(()=>{Mx();Cp()});function CYe(t,e,r){let[s,a]=Gf(e,r??{}),{arity:n=1}=a,c=t.split(","),f=new Set(c);return ya({definition(p){p.addOption({names:c,arity:a.tolerateBoolean?0:n,hidden:a.hidden,description:a.description,required:a.required})},transformer(p,h,E,C){let S,b=s;typeof a.env<"u"&&C.env[a.env]&&(S=a.env,b=C.env[a.env]);for(let{name:I,value:T}of E.options)f.has(I)&&(S=I,b=T);return typeof b=="string"?Od(S??h,b,a.validator):b}})}function wYe(t={}){let{required:e=!0}=t;return ya({definition(r,s){var a;r.addPositional({name:(a=t.name)!==null&&a!==void 0?a:s,required:t.required})},transformer(r,s,a){var n;for(let c=0;c{Mx();Cp()});var ge={};Vt(ge,{Array:()=>$re,Boolean:()=>tne,Counter:()=>nne,Proxy:()=>Hx,Rest:()=>sne,String:()=>ane,applyValidator:()=>Od,cleanValidationError:()=>Qx,formatError:()=>z2,isOptionSymbol:()=>K2,makeCommandOption:()=>ya,rerouteArguments:()=>Gf});var cne=Ze(()=>{Cp();C_();ene();rne();ine();one();lne()});var oB={};Vt(oB,{Builtins:()=>w_,Cli:()=>Ca,Command:()=>ot,Option:()=>ge,UsageError:()=>nt,formatMarkdownish:()=>Ho,run:()=>Wre,runExit:()=>qre});var Yt=Ze(()=>{kx();u_();a0();Vre();Xre();cne()});var une=_((MRt,BYe)=>{BYe.exports={name:"dotenv",version:"16.3.1",description:"Loads environment variables from .env file",main:"lib/main.js",types:"lib/main.d.ts",exports:{".":{types:"./lib/main.d.ts",require:"./lib/main.js",default:"./lib/main.js"},"./config":"./config.js","./config.js":"./config.js","./lib/env-options":"./lib/env-options.js","./lib/env-options.js":"./lib/env-options.js","./lib/cli-options":"./lib/cli-options.js","./lib/cli-options.js":"./lib/cli-options.js","./package.json":"./package.json"},scripts:{"dts-check":"tsc --project tests/types/tsconfig.json",lint:"standard","lint-readme":"standard-markdown",pretest:"npm run lint && npm run dts-check",test:"tap tests/*.js --100 -Rspec",prerelease:"npm test",release:"standard-version"},repository:{type:"git",url:"git://github.com/motdotla/dotenv.git"},funding:"https://github.com/motdotla/dotenv?sponsor=1",keywords:["dotenv","env",".env","environment","variables","config","settings"],readmeFilename:"README.md",license:"BSD-2-Clause",devDependencies:{"@definitelytyped/dtslint":"^0.0.133","@types/node":"^18.11.3",decache:"^4.6.1",sinon:"^14.0.1",standard:"^17.0.0","standard-markdown":"^7.1.0","standard-version":"^9.5.0",tap:"^16.3.0",tar:"^6.1.11",typescript:"^4.8.4"},engines:{node:">=12"},browser:{fs:!1}}});var hne=_((URt,wp)=>{var fne=Ie("fs"),v_=Ie("path"),vYe=Ie("os"),SYe=Ie("crypto"),DYe=une(),S_=DYe.version,PYe=/(?:^|^)\s*(?:export\s+)?([\w.-]+)(?:\s*=\s*?|:\s+?)(\s*'(?:\\'|[^'])*'|\s*"(?:\\"|[^"])*"|\s*`(?:\\`|[^`])*`|[^#\r\n]+)?\s*(?:#.*)?(?:$|$)/mg;function bYe(t){let e={},r=t.toString();r=r.replace(/\r\n?/mg,` `);let s;for(;(s=PYe.exec(r))!=null;){let a=s[1],n=s[2]||"";n=n.trim();let c=n[0];n=n.replace(/^(['"`])([\s\S]*)\1$/mg,"$2"),c==='"'&&(n=n.replace(/\\n/g,` `),n=n.replace(/\\r/g,"\r")),e[a]=n}return e}function xYe(t){let e=pne(t),r=js.configDotenv({path:e});if(!r.parsed)throw new Error(`MISSING_DATA: Cannot parse ${e} for an unknown reason`);let s=Ane(t).split(","),a=s.length,n;for(let c=0;c=a)throw f}return js.parse(n)}function kYe(t){console.log(`[dotenv@${S_}][INFO] ${t}`)}function QYe(t){console.log(`[dotenv@${S_}][WARN] ${t}`)}function B_(t){console.log(`[dotenv@${S_}][DEBUG] ${t}`)}function Ane(t){return t&&t.DOTENV_KEY&&t.DOTENV_KEY.length>0?t.DOTENV_KEY:process.env.DOTENV_KEY&&process.env.DOTENV_KEY.length>0?process.env.DOTENV_KEY:""}function RYe(t,e){let r;try{r=new URL(e)}catch(f){throw f.code==="ERR_INVALID_URL"?new Error("INVALID_DOTENV_KEY: Wrong format. Must be in valid uri format like dotenv://:key_1234@dotenv.org/vault/.env.vault?environment=development"):f}let s=r.password;if(!s)throw new Error("INVALID_DOTENV_KEY: Missing key part");let a=r.searchParams.get("environment");if(!a)throw new Error("INVALID_DOTENV_KEY: Missing environment part");let n=`DOTENV_VAULT_${a.toUpperCase()}`,c=t.parsed[n];if(!c)throw new Error(`NOT_FOUND_DOTENV_ENVIRONMENT: Cannot locate environment ${n} in your .env.vault file.`);return{ciphertext:c,key:s}}function pne(t){let e=v_.resolve(process.cwd(),".env");return t&&t.path&&t.path.length>0&&(e=t.path),e.endsWith(".vault")?e:`${e}.vault`}function TYe(t){return t[0]==="~"?v_.join(vYe.homedir(),t.slice(1)):t}function FYe(t){kYe("Loading env from encrypted .env.vault");let e=js._parseVault(t),r=process.env;return t&&t.processEnv!=null&&(r=t.processEnv),js.populate(r,e,t),{parsed:e}}function NYe(t){let e=v_.resolve(process.cwd(),".env"),r="utf8",s=!!(t&&t.debug);t&&(t.path!=null&&(e=TYe(t.path)),t.encoding!=null&&(r=t.encoding));try{let a=js.parse(fne.readFileSync(e,{encoding:r})),n=process.env;return t&&t.processEnv!=null&&(n=t.processEnv),js.populate(n,a,t),{parsed:a}}catch(a){return s&&B_(`Failed to load ${e} ${a.message}`),{error:a}}}function OYe(t){let e=pne(t);return Ane(t).length===0?js.configDotenv(t):fne.existsSync(e)?js._configVault(t):(QYe(`You set DOTENV_KEY but you are missing a .env.vault file at ${e}. Did you forget to build it?`),js.configDotenv(t))}function LYe(t,e){let r=Buffer.from(e.slice(-64),"hex"),s=Buffer.from(t,"base64"),a=s.slice(0,12),n=s.slice(-16);s=s.slice(12,-16);try{let c=SYe.createDecipheriv("aes-256-gcm",r,a);return c.setAuthTag(n),`${c.update(s)}${c.final()}`}catch(c){let f=c instanceof RangeError,p=c.message==="Invalid key length",h=c.message==="Unsupported state or unable to authenticate data";if(f||p){let E="INVALID_DOTENV_KEY: It must be 64 characters long (or more)";throw new Error(E)}else if(h){let E="DECRYPTION_FAILED: Please check your DOTENV_KEY";throw new Error(E)}else throw console.error("Error: ",c.code),console.error("Error: ",c.message),c}}function MYe(t,e,r={}){let s=!!(r&&r.debug),a=!!(r&&r.override);if(typeof e!="object")throw new Error("OBJECT_REQUIRED: Please check the processEnv argument being passed to populate");for(let n of Object.keys(e))Object.prototype.hasOwnProperty.call(t,n)?(a===!0&&(t[n]=e[n]),s&&B_(a===!0?`"${n}" is already defined and WAS overwritten`:`"${n}" is already defined and was NOT overwritten`)):t[n]=e[n]}var js={configDotenv:NYe,_configVault:FYe,_parseVault:xYe,config:OYe,decrypt:LYe,parse:bYe,populate:MYe};wp.exports.configDotenv=js.configDotenv;wp.exports._configVault=js._configVault;wp.exports._parseVault=js._parseVault;wp.exports.config=js.config;wp.exports.decrypt=js.decrypt;wp.exports.parse=js.parse;wp.exports.populate=js.populate;wp.exports=js});var dne=_((_Rt,gne)=>{"use strict";gne.exports=(t,...e)=>new Promise(r=>{r(t(...e))})});var Ld=_((HRt,D_)=>{"use strict";var UYe=dne(),mne=t=>{if(t<1)throw new TypeError("Expected `concurrency` to be a number from 1 and up");let e=[],r=0,s=()=>{r--,e.length>0&&e.shift()()},a=(f,p,...h)=>{r++;let E=UYe(f,...h);p(E),E.then(s,s)},n=(f,p,...h)=>{rnew Promise(h=>n(f,h,...p));return Object.defineProperties(c,{activeCount:{get:()=>r},pendingCount:{get:()=>e.length}}),c};D_.exports=mne;D_.exports.default=mne});function Yf(t){return`YN${t.toString(10).padStart(4,"0")}`}function jx(t){let e=Number(t.slice(2));if(typeof Br[e]>"u")throw new Error(`Unknown message name: "${t}"`);return e}var Br,Gx=Ze(()=>{Br=(Me=>(Me[Me.UNNAMED=0]="UNNAMED",Me[Me.EXCEPTION=1]="EXCEPTION",Me[Me.MISSING_PEER_DEPENDENCY=2]="MISSING_PEER_DEPENDENCY",Me[Me.CYCLIC_DEPENDENCIES=3]="CYCLIC_DEPENDENCIES",Me[Me.DISABLED_BUILD_SCRIPTS=4]="DISABLED_BUILD_SCRIPTS",Me[Me.BUILD_DISABLED=5]="BUILD_DISABLED",Me[Me.SOFT_LINK_BUILD=6]="SOFT_LINK_BUILD",Me[Me.MUST_BUILD=7]="MUST_BUILD",Me[Me.MUST_REBUILD=8]="MUST_REBUILD",Me[Me.BUILD_FAILED=9]="BUILD_FAILED",Me[Me.RESOLVER_NOT_FOUND=10]="RESOLVER_NOT_FOUND",Me[Me.FETCHER_NOT_FOUND=11]="FETCHER_NOT_FOUND",Me[Me.LINKER_NOT_FOUND=12]="LINKER_NOT_FOUND",Me[Me.FETCH_NOT_CACHED=13]="FETCH_NOT_CACHED",Me[Me.YARN_IMPORT_FAILED=14]="YARN_IMPORT_FAILED",Me[Me.REMOTE_INVALID=15]="REMOTE_INVALID",Me[Me.REMOTE_NOT_FOUND=16]="REMOTE_NOT_FOUND",Me[Me.RESOLUTION_PACK=17]="RESOLUTION_PACK",Me[Me.CACHE_CHECKSUM_MISMATCH=18]="CACHE_CHECKSUM_MISMATCH",Me[Me.UNUSED_CACHE_ENTRY=19]="UNUSED_CACHE_ENTRY",Me[Me.MISSING_LOCKFILE_ENTRY=20]="MISSING_LOCKFILE_ENTRY",Me[Me.WORKSPACE_NOT_FOUND=21]="WORKSPACE_NOT_FOUND",Me[Me.TOO_MANY_MATCHING_WORKSPACES=22]="TOO_MANY_MATCHING_WORKSPACES",Me[Me.CONSTRAINTS_MISSING_DEPENDENCY=23]="CONSTRAINTS_MISSING_DEPENDENCY",Me[Me.CONSTRAINTS_INCOMPATIBLE_DEPENDENCY=24]="CONSTRAINTS_INCOMPATIBLE_DEPENDENCY",Me[Me.CONSTRAINTS_EXTRANEOUS_DEPENDENCY=25]="CONSTRAINTS_EXTRANEOUS_DEPENDENCY",Me[Me.CONSTRAINTS_INVALID_DEPENDENCY=26]="CONSTRAINTS_INVALID_DEPENDENCY",Me[Me.CANT_SUGGEST_RESOLUTIONS=27]="CANT_SUGGEST_RESOLUTIONS",Me[Me.FROZEN_LOCKFILE_EXCEPTION=28]="FROZEN_LOCKFILE_EXCEPTION",Me[Me.CROSS_DRIVE_VIRTUAL_LOCAL=29]="CROSS_DRIVE_VIRTUAL_LOCAL",Me[Me.FETCH_FAILED=30]="FETCH_FAILED",Me[Me.DANGEROUS_NODE_MODULES=31]="DANGEROUS_NODE_MODULES",Me[Me.NODE_GYP_INJECTED=32]="NODE_GYP_INJECTED",Me[Me.AUTHENTICATION_NOT_FOUND=33]="AUTHENTICATION_NOT_FOUND",Me[Me.INVALID_CONFIGURATION_KEY=34]="INVALID_CONFIGURATION_KEY",Me[Me.NETWORK_ERROR=35]="NETWORK_ERROR",Me[Me.LIFECYCLE_SCRIPT=36]="LIFECYCLE_SCRIPT",Me[Me.CONSTRAINTS_MISSING_FIELD=37]="CONSTRAINTS_MISSING_FIELD",Me[Me.CONSTRAINTS_INCOMPATIBLE_FIELD=38]="CONSTRAINTS_INCOMPATIBLE_FIELD",Me[Me.CONSTRAINTS_EXTRANEOUS_FIELD=39]="CONSTRAINTS_EXTRANEOUS_FIELD",Me[Me.CONSTRAINTS_INVALID_FIELD=40]="CONSTRAINTS_INVALID_FIELD",Me[Me.AUTHENTICATION_INVALID=41]="AUTHENTICATION_INVALID",Me[Me.PROLOG_UNKNOWN_ERROR=42]="PROLOG_UNKNOWN_ERROR",Me[Me.PROLOG_SYNTAX_ERROR=43]="PROLOG_SYNTAX_ERROR",Me[Me.PROLOG_EXISTENCE_ERROR=44]="PROLOG_EXISTENCE_ERROR",Me[Me.STACK_OVERFLOW_RESOLUTION=45]="STACK_OVERFLOW_RESOLUTION",Me[Me.AUTOMERGE_FAILED_TO_PARSE=46]="AUTOMERGE_FAILED_TO_PARSE",Me[Me.AUTOMERGE_IMMUTABLE=47]="AUTOMERGE_IMMUTABLE",Me[Me.AUTOMERGE_SUCCESS=48]="AUTOMERGE_SUCCESS",Me[Me.AUTOMERGE_REQUIRED=49]="AUTOMERGE_REQUIRED",Me[Me.DEPRECATED_CLI_SETTINGS=50]="DEPRECATED_CLI_SETTINGS",Me[Me.PLUGIN_NAME_NOT_FOUND=51]="PLUGIN_NAME_NOT_FOUND",Me[Me.INVALID_PLUGIN_REFERENCE=52]="INVALID_PLUGIN_REFERENCE",Me[Me.CONSTRAINTS_AMBIGUITY=53]="CONSTRAINTS_AMBIGUITY",Me[Me.CACHE_OUTSIDE_PROJECT=54]="CACHE_OUTSIDE_PROJECT",Me[Me.IMMUTABLE_INSTALL=55]="IMMUTABLE_INSTALL",Me[Me.IMMUTABLE_CACHE=56]="IMMUTABLE_CACHE",Me[Me.INVALID_MANIFEST=57]="INVALID_MANIFEST",Me[Me.PACKAGE_PREPARATION_FAILED=58]="PACKAGE_PREPARATION_FAILED",Me[Me.INVALID_RANGE_PEER_DEPENDENCY=59]="INVALID_RANGE_PEER_DEPENDENCY",Me[Me.INCOMPATIBLE_PEER_DEPENDENCY=60]="INCOMPATIBLE_PEER_DEPENDENCY",Me[Me.DEPRECATED_PACKAGE=61]="DEPRECATED_PACKAGE",Me[Me.INCOMPATIBLE_OS=62]="INCOMPATIBLE_OS",Me[Me.INCOMPATIBLE_CPU=63]="INCOMPATIBLE_CPU",Me[Me.FROZEN_ARTIFACT_EXCEPTION=64]="FROZEN_ARTIFACT_EXCEPTION",Me[Me.TELEMETRY_NOTICE=65]="TELEMETRY_NOTICE",Me[Me.PATCH_HUNK_FAILED=66]="PATCH_HUNK_FAILED",Me[Me.INVALID_CONFIGURATION_VALUE=67]="INVALID_CONFIGURATION_VALUE",Me[Me.UNUSED_PACKAGE_EXTENSION=68]="UNUSED_PACKAGE_EXTENSION",Me[Me.REDUNDANT_PACKAGE_EXTENSION=69]="REDUNDANT_PACKAGE_EXTENSION",Me[Me.AUTO_NM_SUCCESS=70]="AUTO_NM_SUCCESS",Me[Me.NM_CANT_INSTALL_EXTERNAL_SOFT_LINK=71]="NM_CANT_INSTALL_EXTERNAL_SOFT_LINK",Me[Me.NM_PRESERVE_SYMLINKS_REQUIRED=72]="NM_PRESERVE_SYMLINKS_REQUIRED",Me[Me.UPDATE_LOCKFILE_ONLY_SKIP_LINK=73]="UPDATE_LOCKFILE_ONLY_SKIP_LINK",Me[Me.NM_HARDLINKS_MODE_DOWNGRADED=74]="NM_HARDLINKS_MODE_DOWNGRADED",Me[Me.PROLOG_INSTANTIATION_ERROR=75]="PROLOG_INSTANTIATION_ERROR",Me[Me.INCOMPATIBLE_ARCHITECTURE=76]="INCOMPATIBLE_ARCHITECTURE",Me[Me.GHOST_ARCHITECTURE=77]="GHOST_ARCHITECTURE",Me[Me.RESOLUTION_MISMATCH=78]="RESOLUTION_MISMATCH",Me[Me.PROLOG_LIMIT_EXCEEDED=79]="PROLOG_LIMIT_EXCEEDED",Me[Me.NETWORK_DISABLED=80]="NETWORK_DISABLED",Me[Me.NETWORK_UNSAFE_HTTP=81]="NETWORK_UNSAFE_HTTP",Me[Me.RESOLUTION_FAILED=82]="RESOLUTION_FAILED",Me[Me.AUTOMERGE_GIT_ERROR=83]="AUTOMERGE_GIT_ERROR",Me[Me.CONSTRAINTS_CHECK_FAILED=84]="CONSTRAINTS_CHECK_FAILED",Me[Me.UPDATED_RESOLUTION_RECORD=85]="UPDATED_RESOLUTION_RECORD",Me[Me.EXPLAIN_PEER_DEPENDENCIES_CTA=86]="EXPLAIN_PEER_DEPENDENCIES_CTA",Me[Me.MIGRATION_SUCCESS=87]="MIGRATION_SUCCESS",Me[Me.VERSION_NOTICE=88]="VERSION_NOTICE",Me[Me.TIPS_NOTICE=89]="TIPS_NOTICE",Me[Me.OFFLINE_MODE_ENABLED=90]="OFFLINE_MODE_ENABLED",Me[Me.INVALID_PROVENANCE_ENVIRONMENT=91]="INVALID_PROVENANCE_ENVIRONMENT",Me))(Br||{})});var aB=_((GRt,yne)=>{var _Ye="2.0.0",HYe=Number.MAX_SAFE_INTEGER||9007199254740991,jYe=16,GYe=250,qYe=["major","premajor","minor","preminor","patch","prepatch","prerelease"];yne.exports={MAX_LENGTH:256,MAX_SAFE_COMPONENT_LENGTH:jYe,MAX_SAFE_BUILD_LENGTH:GYe,MAX_SAFE_INTEGER:HYe,RELEASE_TYPES:qYe,SEMVER_SPEC_VERSION:_Ye,FLAG_INCLUDE_PRERELEASE:1,FLAG_LOOSE:2}});var lB=_((qRt,Ene)=>{var WYe=typeof process=="object"&&process.env&&process.env.NODE_DEBUG&&/\bsemver\b/i.test(process.env.NODE_DEBUG)?(...t)=>console.error("SEMVER",...t):()=>{};Ene.exports=WYe});var vE=_((Bp,Ine)=>{var{MAX_SAFE_COMPONENT_LENGTH:P_,MAX_SAFE_BUILD_LENGTH:YYe,MAX_LENGTH:VYe}=aB(),JYe=lB();Bp=Ine.exports={};var KYe=Bp.re=[],zYe=Bp.safeRe=[],rr=Bp.src=[],nr=Bp.t={},ZYe=0,b_="[a-zA-Z0-9-]",XYe=[["\\s",1],["\\d",VYe],[b_,YYe]],$Ye=t=>{for(let[e,r]of XYe)t=t.split(`${e}*`).join(`${e}{0,${r}}`).split(`${e}+`).join(`${e}{1,${r}}`);return t},Jr=(t,e,r)=>{let s=$Ye(e),a=ZYe++;JYe(t,a,e),nr[t]=a,rr[a]=e,KYe[a]=new RegExp(e,r?"g":void 0),zYe[a]=new RegExp(s,r?"g":void 0)};Jr("NUMERICIDENTIFIER","0|[1-9]\\d*");Jr("NUMERICIDENTIFIERLOOSE","\\d+");Jr("NONNUMERICIDENTIFIER",`\\d*[a-zA-Z-]${b_}*`);Jr("MAINVERSION",`(${rr[nr.NUMERICIDENTIFIER]})\\.(${rr[nr.NUMERICIDENTIFIER]})\\.(${rr[nr.NUMERICIDENTIFIER]})`);Jr("MAINVERSIONLOOSE",`(${rr[nr.NUMERICIDENTIFIERLOOSE]})\\.(${rr[nr.NUMERICIDENTIFIERLOOSE]})\\.(${rr[nr.NUMERICIDENTIFIERLOOSE]})`);Jr("PRERELEASEIDENTIFIER",`(?:${rr[nr.NUMERICIDENTIFIER]}|${rr[nr.NONNUMERICIDENTIFIER]})`);Jr("PRERELEASEIDENTIFIERLOOSE",`(?:${rr[nr.NUMERICIDENTIFIERLOOSE]}|${rr[nr.NONNUMERICIDENTIFIER]})`);Jr("PRERELEASE",`(?:-(${rr[nr.PRERELEASEIDENTIFIER]}(?:\\.${rr[nr.PRERELEASEIDENTIFIER]})*))`);Jr("PRERELEASELOOSE",`(?:-?(${rr[nr.PRERELEASEIDENTIFIERLOOSE]}(?:\\.${rr[nr.PRERELEASEIDENTIFIERLOOSE]})*))`);Jr("BUILDIDENTIFIER",`${b_}+`);Jr("BUILD",`(?:\\+(${rr[nr.BUILDIDENTIFIER]}(?:\\.${rr[nr.BUILDIDENTIFIER]})*))`);Jr("FULLPLAIN",`v?${rr[nr.MAINVERSION]}${rr[nr.PRERELEASE]}?${rr[nr.BUILD]}?`);Jr("FULL",`^${rr[nr.FULLPLAIN]}$`);Jr("LOOSEPLAIN",`[v=\\s]*${rr[nr.MAINVERSIONLOOSE]}${rr[nr.PRERELEASELOOSE]}?${rr[nr.BUILD]}?`);Jr("LOOSE",`^${rr[nr.LOOSEPLAIN]}$`);Jr("GTLT","((?:<|>)?=?)");Jr("XRANGEIDENTIFIERLOOSE",`${rr[nr.NUMERICIDENTIFIERLOOSE]}|x|X|\\*`);Jr("XRANGEIDENTIFIER",`${rr[nr.NUMERICIDENTIFIER]}|x|X|\\*`);Jr("XRANGEPLAIN",`[v=\\s]*(${rr[nr.XRANGEIDENTIFIER]})(?:\\.(${rr[nr.XRANGEIDENTIFIER]})(?:\\.(${rr[nr.XRANGEIDENTIFIER]})(?:${rr[nr.PRERELEASE]})?${rr[nr.BUILD]}?)?)?`);Jr("XRANGEPLAINLOOSE",`[v=\\s]*(${rr[nr.XRANGEIDENTIFIERLOOSE]})(?:\\.(${rr[nr.XRANGEIDENTIFIERLOOSE]})(?:\\.(${rr[nr.XRANGEIDENTIFIERLOOSE]})(?:${rr[nr.PRERELEASELOOSE]})?${rr[nr.BUILD]}?)?)?`);Jr("XRANGE",`^${rr[nr.GTLT]}\\s*${rr[nr.XRANGEPLAIN]}$`);Jr("XRANGELOOSE",`^${rr[nr.GTLT]}\\s*${rr[nr.XRANGEPLAINLOOSE]}$`);Jr("COERCEPLAIN",`(^|[^\\d])(\\d{1,${P_}})(?:\\.(\\d{1,${P_}}))?(?:\\.(\\d{1,${P_}}))?`);Jr("COERCE",`${rr[nr.COERCEPLAIN]}(?:$|[^\\d])`);Jr("COERCEFULL",rr[nr.COERCEPLAIN]+`(?:${rr[nr.PRERELEASE]})?(?:${rr[nr.BUILD]})?(?:$|[^\\d])`);Jr("COERCERTL",rr[nr.COERCE],!0);Jr("COERCERTLFULL",rr[nr.COERCEFULL],!0);Jr("LONETILDE","(?:~>?)");Jr("TILDETRIM",`(\\s*)${rr[nr.LONETILDE]}\\s+`,!0);Bp.tildeTrimReplace="$1~";Jr("TILDE",`^${rr[nr.LONETILDE]}${rr[nr.XRANGEPLAIN]}$`);Jr("TILDELOOSE",`^${rr[nr.LONETILDE]}${rr[nr.XRANGEPLAINLOOSE]}$`);Jr("LONECARET","(?:\\^)");Jr("CARETTRIM",`(\\s*)${rr[nr.LONECARET]}\\s+`,!0);Bp.caretTrimReplace="$1^";Jr("CARET",`^${rr[nr.LONECARET]}${rr[nr.XRANGEPLAIN]}$`);Jr("CARETLOOSE",`^${rr[nr.LONECARET]}${rr[nr.XRANGEPLAINLOOSE]}$`);Jr("COMPARATORLOOSE",`^${rr[nr.GTLT]}\\s*(${rr[nr.LOOSEPLAIN]})$|^$`);Jr("COMPARATOR",`^${rr[nr.GTLT]}\\s*(${rr[nr.FULLPLAIN]})$|^$`);Jr("COMPARATORTRIM",`(\\s*)${rr[nr.GTLT]}\\s*(${rr[nr.LOOSEPLAIN]}|${rr[nr.XRANGEPLAIN]})`,!0);Bp.comparatorTrimReplace="$1$2$3";Jr("HYPHENRANGE",`^\\s*(${rr[nr.XRANGEPLAIN]})\\s+-\\s+(${rr[nr.XRANGEPLAIN]})\\s*$`);Jr("HYPHENRANGELOOSE",`^\\s*(${rr[nr.XRANGEPLAINLOOSE]})\\s+-\\s+(${rr[nr.XRANGEPLAINLOOSE]})\\s*$`);Jr("STAR","(<|>)?=?\\s*\\*");Jr("GTE0","^\\s*>=\\s*0\\.0\\.0\\s*$");Jr("GTE0PRE","^\\s*>=\\s*0\\.0\\.0-0\\s*$")});var qx=_((WRt,Cne)=>{var eVe=Object.freeze({loose:!0}),tVe=Object.freeze({}),rVe=t=>t?typeof t!="object"?eVe:t:tVe;Cne.exports=rVe});var x_=_((YRt,vne)=>{var wne=/^[0-9]+$/,Bne=(t,e)=>{let r=wne.test(t),s=wne.test(e);return r&&s&&(t=+t,e=+e),t===e?0:r&&!s?-1:s&&!r?1:tBne(e,t);vne.exports={compareIdentifiers:Bne,rcompareIdentifiers:nVe}});var jo=_((VRt,bne)=>{var Wx=lB(),{MAX_LENGTH:Sne,MAX_SAFE_INTEGER:Yx}=aB(),{safeRe:Dne,t:Pne}=vE(),iVe=qx(),{compareIdentifiers:SE}=x_(),k_=class t{constructor(e,r){if(r=iVe(r),e instanceof t){if(e.loose===!!r.loose&&e.includePrerelease===!!r.includePrerelease)return e;e=e.version}else if(typeof e!="string")throw new TypeError(`Invalid version. Must be a string. Got type "${typeof e}".`);if(e.length>Sne)throw new TypeError(`version is longer than ${Sne} characters`);Wx("SemVer",e,r),this.options=r,this.loose=!!r.loose,this.includePrerelease=!!r.includePrerelease;let s=e.trim().match(r.loose?Dne[Pne.LOOSE]:Dne[Pne.FULL]);if(!s)throw new TypeError(`Invalid Version: ${e}`);if(this.raw=e,this.major=+s[1],this.minor=+s[2],this.patch=+s[3],this.major>Yx||this.major<0)throw new TypeError("Invalid major version");if(this.minor>Yx||this.minor<0)throw new TypeError("Invalid minor version");if(this.patch>Yx||this.patch<0)throw new TypeError("Invalid patch version");s[4]?this.prerelease=s[4].split(".").map(a=>{if(/^[0-9]+$/.test(a)){let n=+a;if(n>=0&&n=0;)typeof this.prerelease[n]=="number"&&(this.prerelease[n]++,n=-2);if(n===-1){if(r===this.prerelease.join(".")&&s===!1)throw new Error("invalid increment argument: identifier already exists");this.prerelease.push(a)}}if(r){let n=[r,a];s===!1&&(n=[r]),SE(this.prerelease[0],r)===0?isNaN(this.prerelease[1])&&(this.prerelease=n):this.prerelease=n}break}default:throw new Error(`invalid increment argument: ${e}`)}return this.raw=this.format(),this.build.length&&(this.raw+=`+${this.build.join(".")}`),this}};bne.exports=k_});var Md=_((JRt,kne)=>{var xne=jo(),sVe=(t,e,r=!1)=>{if(t instanceof xne)return t;try{return new xne(t,e)}catch(s){if(!r)return null;throw s}};kne.exports=sVe});var Rne=_((KRt,Qne)=>{var oVe=Md(),aVe=(t,e)=>{let r=oVe(t,e);return r?r.version:null};Qne.exports=aVe});var Fne=_((zRt,Tne)=>{var lVe=Md(),cVe=(t,e)=>{let r=lVe(t.trim().replace(/^[=v]+/,""),e);return r?r.version:null};Tne.exports=cVe});var Lne=_((ZRt,One)=>{var Nne=jo(),uVe=(t,e,r,s,a)=>{typeof r=="string"&&(a=s,s=r,r=void 0);try{return new Nne(t instanceof Nne?t.version:t,r).inc(e,s,a).version}catch{return null}};One.exports=uVe});var _ne=_((XRt,Une)=>{var Mne=Md(),fVe=(t,e)=>{let r=Mne(t,null,!0),s=Mne(e,null,!0),a=r.compare(s);if(a===0)return null;let n=a>0,c=n?r:s,f=n?s:r,p=!!c.prerelease.length;if(!!f.prerelease.length&&!p)return!f.patch&&!f.minor?"major":c.patch?"patch":c.minor?"minor":"major";let E=p?"pre":"";return r.major!==s.major?E+"major":r.minor!==s.minor?E+"minor":r.patch!==s.patch?E+"patch":"prerelease"};Une.exports=fVe});var jne=_(($Rt,Hne)=>{var AVe=jo(),pVe=(t,e)=>new AVe(t,e).major;Hne.exports=pVe});var qne=_((eTt,Gne)=>{var hVe=jo(),gVe=(t,e)=>new hVe(t,e).minor;Gne.exports=gVe});var Yne=_((tTt,Wne)=>{var dVe=jo(),mVe=(t,e)=>new dVe(t,e).patch;Wne.exports=mVe});var Jne=_((rTt,Vne)=>{var yVe=Md(),EVe=(t,e)=>{let r=yVe(t,e);return r&&r.prerelease.length?r.prerelease:null};Vne.exports=EVe});var Bc=_((nTt,zne)=>{var Kne=jo(),IVe=(t,e,r)=>new Kne(t,r).compare(new Kne(e,r));zne.exports=IVe});var Xne=_((iTt,Zne)=>{var CVe=Bc(),wVe=(t,e,r)=>CVe(e,t,r);Zne.exports=wVe});var eie=_((sTt,$ne)=>{var BVe=Bc(),vVe=(t,e)=>BVe(t,e,!0);$ne.exports=vVe});var Vx=_((oTt,rie)=>{var tie=jo(),SVe=(t,e,r)=>{let s=new tie(t,r),a=new tie(e,r);return s.compare(a)||s.compareBuild(a)};rie.exports=SVe});var iie=_((aTt,nie)=>{var DVe=Vx(),PVe=(t,e)=>t.sort((r,s)=>DVe(r,s,e));nie.exports=PVe});var oie=_((lTt,sie)=>{var bVe=Vx(),xVe=(t,e)=>t.sort((r,s)=>bVe(s,r,e));sie.exports=xVe});var cB=_((cTt,aie)=>{var kVe=Bc(),QVe=(t,e,r)=>kVe(t,e,r)>0;aie.exports=QVe});var Jx=_((uTt,lie)=>{var RVe=Bc(),TVe=(t,e,r)=>RVe(t,e,r)<0;lie.exports=TVe});var Q_=_((fTt,cie)=>{var FVe=Bc(),NVe=(t,e,r)=>FVe(t,e,r)===0;cie.exports=NVe});var R_=_((ATt,uie)=>{var OVe=Bc(),LVe=(t,e,r)=>OVe(t,e,r)!==0;uie.exports=LVe});var Kx=_((pTt,fie)=>{var MVe=Bc(),UVe=(t,e,r)=>MVe(t,e,r)>=0;fie.exports=UVe});var zx=_((hTt,Aie)=>{var _Ve=Bc(),HVe=(t,e,r)=>_Ve(t,e,r)<=0;Aie.exports=HVe});var T_=_((gTt,pie)=>{var jVe=Q_(),GVe=R_(),qVe=cB(),WVe=Kx(),YVe=Jx(),VVe=zx(),JVe=(t,e,r,s)=>{switch(e){case"===":return typeof t=="object"&&(t=t.version),typeof r=="object"&&(r=r.version),t===r;case"!==":return typeof t=="object"&&(t=t.version),typeof r=="object"&&(r=r.version),t!==r;case"":case"=":case"==":return jVe(t,r,s);case"!=":return GVe(t,r,s);case">":return qVe(t,r,s);case">=":return WVe(t,r,s);case"<":return YVe(t,r,s);case"<=":return VVe(t,r,s);default:throw new TypeError(`Invalid operator: ${e}`)}};pie.exports=JVe});var gie=_((dTt,hie)=>{var KVe=jo(),zVe=Md(),{safeRe:Zx,t:Xx}=vE(),ZVe=(t,e)=>{if(t instanceof KVe)return t;if(typeof t=="number"&&(t=String(t)),typeof t!="string")return null;e=e||{};let r=null;if(!e.rtl)r=t.match(e.includePrerelease?Zx[Xx.COERCEFULL]:Zx[Xx.COERCE]);else{let p=e.includePrerelease?Zx[Xx.COERCERTLFULL]:Zx[Xx.COERCERTL],h;for(;(h=p.exec(t))&&(!r||r.index+r[0].length!==t.length);)(!r||h.index+h[0].length!==r.index+r[0].length)&&(r=h),p.lastIndex=h.index+h[1].length+h[2].length;p.lastIndex=-1}if(r===null)return null;let s=r[2],a=r[3]||"0",n=r[4]||"0",c=e.includePrerelease&&r[5]?`-${r[5]}`:"",f=e.includePrerelease&&r[6]?`+${r[6]}`:"";return zVe(`${s}.${a}.${n}${c}${f}`,e)};hie.exports=ZVe});var mie=_((mTt,die)=>{"use strict";die.exports=function(t){t.prototype[Symbol.iterator]=function*(){for(let e=this.head;e;e=e.next)yield e.value}}});var $x=_((yTt,yie)=>{"use strict";yie.exports=Fn;Fn.Node=Ud;Fn.create=Fn;function Fn(t){var e=this;if(e instanceof Fn||(e=new Fn),e.tail=null,e.head=null,e.length=0,t&&typeof t.forEach=="function")t.forEach(function(a){e.push(a)});else if(arguments.length>0)for(var r=0,s=arguments.length;r1)r=e;else if(this.head)s=this.head.next,r=this.head.value;else throw new TypeError("Reduce of empty list with no initial value");for(var a=0;s!==null;a++)r=t(r,s.value,a),s=s.next;return r};Fn.prototype.reduceReverse=function(t,e){var r,s=this.tail;if(arguments.length>1)r=e;else if(this.tail)s=this.tail.prev,r=this.tail.value;else throw new TypeError("Reduce of empty list with no initial value");for(var a=this.length-1;s!==null;a--)r=t(r,s.value,a),s=s.prev;return r};Fn.prototype.toArray=function(){for(var t=new Array(this.length),e=0,r=this.head;r!==null;e++)t[e]=r.value,r=r.next;return t};Fn.prototype.toArrayReverse=function(){for(var t=new Array(this.length),e=0,r=this.tail;r!==null;e++)t[e]=r.value,r=r.prev;return t};Fn.prototype.slice=function(t,e){e=e||this.length,e<0&&(e+=this.length),t=t||0,t<0&&(t+=this.length);var r=new Fn;if(ethis.length&&(e=this.length);for(var s=0,a=this.head;a!==null&&sthis.length&&(e=this.length);for(var s=this.length,a=this.tail;a!==null&&s>e;s--)a=a.prev;for(;a!==null&&s>t;s--,a=a.prev)r.push(a.value);return r};Fn.prototype.splice=function(t,e,...r){t>this.length&&(t=this.length-1),t<0&&(t=this.length+t);for(var s=0,a=this.head;a!==null&&s{"use strict";var t7e=$x(),_d=Symbol("max"),Sp=Symbol("length"),DE=Symbol("lengthCalculator"),fB=Symbol("allowStale"),Hd=Symbol("maxAge"),vp=Symbol("dispose"),Eie=Symbol("noDisposeOnSet"),Gs=Symbol("lruList"),Lu=Symbol("cache"),Cie=Symbol("updateAgeOnGet"),F_=()=>1,O_=class{constructor(e){if(typeof e=="number"&&(e={max:e}),e||(e={}),e.max&&(typeof e.max!="number"||e.max<0))throw new TypeError("max must be a non-negative number");let r=this[_d]=e.max||1/0,s=e.length||F_;if(this[DE]=typeof s!="function"?F_:s,this[fB]=e.stale||!1,e.maxAge&&typeof e.maxAge!="number")throw new TypeError("maxAge must be a number");this[Hd]=e.maxAge||0,this[vp]=e.dispose,this[Eie]=e.noDisposeOnSet||!1,this[Cie]=e.updateAgeOnGet||!1,this.reset()}set max(e){if(typeof e!="number"||e<0)throw new TypeError("max must be a non-negative number");this[_d]=e||1/0,uB(this)}get max(){return this[_d]}set allowStale(e){this[fB]=!!e}get allowStale(){return this[fB]}set maxAge(e){if(typeof e!="number")throw new TypeError("maxAge must be a non-negative number");this[Hd]=e,uB(this)}get maxAge(){return this[Hd]}set lengthCalculator(e){typeof e!="function"&&(e=F_),e!==this[DE]&&(this[DE]=e,this[Sp]=0,this[Gs].forEach(r=>{r.length=this[DE](r.value,r.key),this[Sp]+=r.length})),uB(this)}get lengthCalculator(){return this[DE]}get length(){return this[Sp]}get itemCount(){return this[Gs].length}rforEach(e,r){r=r||this;for(let s=this[Gs].tail;s!==null;){let a=s.prev;Iie(this,e,s,r),s=a}}forEach(e,r){r=r||this;for(let s=this[Gs].head;s!==null;){let a=s.next;Iie(this,e,s,r),s=a}}keys(){return this[Gs].toArray().map(e=>e.key)}values(){return this[Gs].toArray().map(e=>e.value)}reset(){this[vp]&&this[Gs]&&this[Gs].length&&this[Gs].forEach(e=>this[vp](e.key,e.value)),this[Lu]=new Map,this[Gs]=new t7e,this[Sp]=0}dump(){return this[Gs].map(e=>ek(this,e)?!1:{k:e.key,v:e.value,e:e.now+(e.maxAge||0)}).toArray().filter(e=>e)}dumpLru(){return this[Gs]}set(e,r,s){if(s=s||this[Hd],s&&typeof s!="number")throw new TypeError("maxAge must be a number");let a=s?Date.now():0,n=this[DE](r,e);if(this[Lu].has(e)){if(n>this[_d])return PE(this,this[Lu].get(e)),!1;let p=this[Lu].get(e).value;return this[vp]&&(this[Eie]||this[vp](e,p.value)),p.now=a,p.maxAge=s,p.value=r,this[Sp]+=n-p.length,p.length=n,this.get(e),uB(this),!0}let c=new L_(e,r,n,a,s);return c.length>this[_d]?(this[vp]&&this[vp](e,r),!1):(this[Sp]+=c.length,this[Gs].unshift(c),this[Lu].set(e,this[Gs].head),uB(this),!0)}has(e){if(!this[Lu].has(e))return!1;let r=this[Lu].get(e).value;return!ek(this,r)}get(e){return N_(this,e,!0)}peek(e){return N_(this,e,!1)}pop(){let e=this[Gs].tail;return e?(PE(this,e),e.value):null}del(e){PE(this,this[Lu].get(e))}load(e){this.reset();let r=Date.now();for(let s=e.length-1;s>=0;s--){let a=e[s],n=a.e||0;if(n===0)this.set(a.k,a.v);else{let c=n-r;c>0&&this.set(a.k,a.v,c)}}}prune(){this[Lu].forEach((e,r)=>N_(this,r,!1))}},N_=(t,e,r)=>{let s=t[Lu].get(e);if(s){let a=s.value;if(ek(t,a)){if(PE(t,s),!t[fB])return}else r&&(t[Cie]&&(s.value.now=Date.now()),t[Gs].unshiftNode(s));return a.value}},ek=(t,e)=>{if(!e||!e.maxAge&&!t[Hd])return!1;let r=Date.now()-e.now;return e.maxAge?r>e.maxAge:t[Hd]&&r>t[Hd]},uB=t=>{if(t[Sp]>t[_d])for(let e=t[Gs].tail;t[Sp]>t[_d]&&e!==null;){let r=e.prev;PE(t,e),e=r}},PE=(t,e)=>{if(e){let r=e.value;t[vp]&&t[vp](r.key,r.value),t[Sp]-=r.length,t[Lu].delete(r.key),t[Gs].removeNode(e)}},L_=class{constructor(e,r,s,a,n){this.key=e,this.value=r,this.length=s,this.now=a,this.maxAge=n||0}},Iie=(t,e,r,s)=>{let a=r.value;ek(t,a)&&(PE(t,r),t[fB]||(a=void 0)),a&&e.call(s,a.value,a.key,t)};wie.exports=O_});var vc=_((ITt,Pie)=>{var M_=class t{constructor(e,r){if(r=n7e(r),e instanceof t)return e.loose===!!r.loose&&e.includePrerelease===!!r.includePrerelease?e:new t(e.raw,r);if(e instanceof U_)return this.raw=e.value,this.set=[[e]],this.format(),this;if(this.options=r,this.loose=!!r.loose,this.includePrerelease=!!r.includePrerelease,this.raw=e.trim().split(/\s+/).join(" "),this.set=this.raw.split("||").map(s=>this.parseRange(s.trim())).filter(s=>s.length),!this.set.length)throw new TypeError(`Invalid SemVer Range: ${this.raw}`);if(this.set.length>1){let s=this.set[0];if(this.set=this.set.filter(a=>!Sie(a[0])),this.set.length===0)this.set=[s];else if(this.set.length>1){for(let a of this.set)if(a.length===1&&u7e(a[0])){this.set=[a];break}}}this.format()}format(){return this.range=this.set.map(e=>e.join(" ").trim()).join("||").trim(),this.range}toString(){return this.range}parseRange(e){let s=((this.options.includePrerelease&&l7e)|(this.options.loose&&c7e))+":"+e,a=vie.get(s);if(a)return a;let n=this.options.loose,c=n?sl[wa.HYPHENRANGELOOSE]:sl[wa.HYPHENRANGE];e=e.replace(c,I7e(this.options.includePrerelease)),vi("hyphen replace",e),e=e.replace(sl[wa.COMPARATORTRIM],s7e),vi("comparator trim",e),e=e.replace(sl[wa.TILDETRIM],o7e),vi("tilde trim",e),e=e.replace(sl[wa.CARETTRIM],a7e),vi("caret trim",e);let f=e.split(" ").map(C=>f7e(C,this.options)).join(" ").split(/\s+/).map(C=>E7e(C,this.options));n&&(f=f.filter(C=>(vi("loose invalid filter",C,this.options),!!C.match(sl[wa.COMPARATORLOOSE])))),vi("range list",f);let p=new Map,h=f.map(C=>new U_(C,this.options));for(let C of h){if(Sie(C))return[C];p.set(C.value,C)}p.size>1&&p.has("")&&p.delete("");let E=[...p.values()];return vie.set(s,E),E}intersects(e,r){if(!(e instanceof t))throw new TypeError("a Range is required");return this.set.some(s=>Die(s,r)&&e.set.some(a=>Die(a,r)&&s.every(n=>a.every(c=>n.intersects(c,r)))))}test(e){if(!e)return!1;if(typeof e=="string")try{e=new i7e(e,this.options)}catch{return!1}for(let r=0;rt.value==="<0.0.0-0",u7e=t=>t.value==="",Die=(t,e)=>{let r=!0,s=t.slice(),a=s.pop();for(;r&&s.length;)r=s.every(n=>a.intersects(n,e)),a=s.pop();return r},f7e=(t,e)=>(vi("comp",t,e),t=h7e(t,e),vi("caret",t),t=A7e(t,e),vi("tildes",t),t=d7e(t,e),vi("xrange",t),t=y7e(t,e),vi("stars",t),t),Ba=t=>!t||t.toLowerCase()==="x"||t==="*",A7e=(t,e)=>t.trim().split(/\s+/).map(r=>p7e(r,e)).join(" "),p7e=(t,e)=>{let r=e.loose?sl[wa.TILDELOOSE]:sl[wa.TILDE];return t.replace(r,(s,a,n,c,f)=>{vi("tilde",t,s,a,n,c,f);let p;return Ba(a)?p="":Ba(n)?p=`>=${a}.0.0 <${+a+1}.0.0-0`:Ba(c)?p=`>=${a}.${n}.0 <${a}.${+n+1}.0-0`:f?(vi("replaceTilde pr",f),p=`>=${a}.${n}.${c}-${f} <${a}.${+n+1}.0-0`):p=`>=${a}.${n}.${c} <${a}.${+n+1}.0-0`,vi("tilde return",p),p})},h7e=(t,e)=>t.trim().split(/\s+/).map(r=>g7e(r,e)).join(" "),g7e=(t,e)=>{vi("caret",t,e);let r=e.loose?sl[wa.CARETLOOSE]:sl[wa.CARET],s=e.includePrerelease?"-0":"";return t.replace(r,(a,n,c,f,p)=>{vi("caret",t,a,n,c,f,p);let h;return Ba(n)?h="":Ba(c)?h=`>=${n}.0.0${s} <${+n+1}.0.0-0`:Ba(f)?n==="0"?h=`>=${n}.${c}.0${s} <${n}.${+c+1}.0-0`:h=`>=${n}.${c}.0${s} <${+n+1}.0.0-0`:p?(vi("replaceCaret pr",p),n==="0"?c==="0"?h=`>=${n}.${c}.${f}-${p} <${n}.${c}.${+f+1}-0`:h=`>=${n}.${c}.${f}-${p} <${n}.${+c+1}.0-0`:h=`>=${n}.${c}.${f}-${p} <${+n+1}.0.0-0`):(vi("no pr"),n==="0"?c==="0"?h=`>=${n}.${c}.${f}${s} <${n}.${c}.${+f+1}-0`:h=`>=${n}.${c}.${f}${s} <${n}.${+c+1}.0-0`:h=`>=${n}.${c}.${f} <${+n+1}.0.0-0`),vi("caret return",h),h})},d7e=(t,e)=>(vi("replaceXRanges",t,e),t.split(/\s+/).map(r=>m7e(r,e)).join(" ")),m7e=(t,e)=>{t=t.trim();let r=e.loose?sl[wa.XRANGELOOSE]:sl[wa.XRANGE];return t.replace(r,(s,a,n,c,f,p)=>{vi("xRange",t,s,a,n,c,f,p);let h=Ba(n),E=h||Ba(c),C=E||Ba(f),S=C;return a==="="&&S&&(a=""),p=e.includePrerelease?"-0":"",h?a===">"||a==="<"?s="<0.0.0-0":s="*":a&&S?(E&&(c=0),f=0,a===">"?(a=">=",E?(n=+n+1,c=0,f=0):(c=+c+1,f=0)):a==="<="&&(a="<",E?n=+n+1:c=+c+1),a==="<"&&(p="-0"),s=`${a+n}.${c}.${f}${p}`):E?s=`>=${n}.0.0${p} <${+n+1}.0.0-0`:C&&(s=`>=${n}.${c}.0${p} <${n}.${+c+1}.0-0`),vi("xRange return",s),s})},y7e=(t,e)=>(vi("replaceStars",t,e),t.trim().replace(sl[wa.STAR],"")),E7e=(t,e)=>(vi("replaceGTE0",t,e),t.trim().replace(sl[e.includePrerelease?wa.GTE0PRE:wa.GTE0],"")),I7e=t=>(e,r,s,a,n,c,f,p,h,E,C,S,b)=>(Ba(s)?r="":Ba(a)?r=`>=${s}.0.0${t?"-0":""}`:Ba(n)?r=`>=${s}.${a}.0${t?"-0":""}`:c?r=`>=${r}`:r=`>=${r}${t?"-0":""}`,Ba(h)?p="":Ba(E)?p=`<${+h+1}.0.0-0`:Ba(C)?p=`<${h}.${+E+1}.0-0`:S?p=`<=${h}.${E}.${C}-${S}`:t?p=`<${h}.${E}.${+C+1}-0`:p=`<=${p}`,`${r} ${p}`.trim()),C7e=(t,e,r)=>{for(let s=0;s0){let a=t[s].semver;if(a.major===e.major&&a.minor===e.minor&&a.patch===e.patch)return!0}return!1}return!0}});var AB=_((CTt,Tie)=>{var pB=Symbol("SemVer ANY"),j_=class t{static get ANY(){return pB}constructor(e,r){if(r=bie(r),e instanceof t){if(e.loose===!!r.loose)return e;e=e.value}e=e.trim().split(/\s+/).join(" "),H_("comparator",e,r),this.options=r,this.loose=!!r.loose,this.parse(e),this.semver===pB?this.value="":this.value=this.operator+this.semver.version,H_("comp",this)}parse(e){let r=this.options.loose?xie[kie.COMPARATORLOOSE]:xie[kie.COMPARATOR],s=e.match(r);if(!s)throw new TypeError(`Invalid comparator: ${e}`);this.operator=s[1]!==void 0?s[1]:"",this.operator==="="&&(this.operator=""),s[2]?this.semver=new Qie(s[2],this.options.loose):this.semver=pB}toString(){return this.value}test(e){if(H_("Comparator.test",e,this.options.loose),this.semver===pB||e===pB)return!0;if(typeof e=="string")try{e=new Qie(e,this.options)}catch{return!1}return __(e,this.operator,this.semver,this.options)}intersects(e,r){if(!(e instanceof t))throw new TypeError("a Comparator is required");return this.operator===""?this.value===""?!0:new Rie(e.value,r).test(this.value):e.operator===""?e.value===""?!0:new Rie(this.value,r).test(e.semver):(r=bie(r),r.includePrerelease&&(this.value==="<0.0.0-0"||e.value==="<0.0.0-0")||!r.includePrerelease&&(this.value.startsWith("<0.0.0")||e.value.startsWith("<0.0.0"))?!1:!!(this.operator.startsWith(">")&&e.operator.startsWith(">")||this.operator.startsWith("<")&&e.operator.startsWith("<")||this.semver.version===e.semver.version&&this.operator.includes("=")&&e.operator.includes("=")||__(this.semver,"<",e.semver,r)&&this.operator.startsWith(">")&&e.operator.startsWith("<")||__(this.semver,">",e.semver,r)&&this.operator.startsWith("<")&&e.operator.startsWith(">")))}};Tie.exports=j_;var bie=qx(),{safeRe:xie,t:kie}=vE(),__=T_(),H_=lB(),Qie=jo(),Rie=vc()});var hB=_((wTt,Fie)=>{var w7e=vc(),B7e=(t,e,r)=>{try{e=new w7e(e,r)}catch{return!1}return e.test(t)};Fie.exports=B7e});var Oie=_((BTt,Nie)=>{var v7e=vc(),S7e=(t,e)=>new v7e(t,e).set.map(r=>r.map(s=>s.value).join(" ").trim().split(" "));Nie.exports=S7e});var Mie=_((vTt,Lie)=>{var D7e=jo(),P7e=vc(),b7e=(t,e,r)=>{let s=null,a=null,n=null;try{n=new P7e(e,r)}catch{return null}return t.forEach(c=>{n.test(c)&&(!s||a.compare(c)===-1)&&(s=c,a=new D7e(s,r))}),s};Lie.exports=b7e});var _ie=_((STt,Uie)=>{var x7e=jo(),k7e=vc(),Q7e=(t,e,r)=>{let s=null,a=null,n=null;try{n=new k7e(e,r)}catch{return null}return t.forEach(c=>{n.test(c)&&(!s||a.compare(c)===1)&&(s=c,a=new x7e(s,r))}),s};Uie.exports=Q7e});var Gie=_((DTt,jie)=>{var G_=jo(),R7e=vc(),Hie=cB(),T7e=(t,e)=>{t=new R7e(t,e);let r=new G_("0.0.0");if(t.test(r)||(r=new G_("0.0.0-0"),t.test(r)))return r;r=null;for(let s=0;s{let f=new G_(c.semver.version);switch(c.operator){case">":f.prerelease.length===0?f.patch++:f.prerelease.push(0),f.raw=f.format();case"":case">=":(!n||Hie(f,n))&&(n=f);break;case"<":case"<=":break;default:throw new Error(`Unexpected operation: ${c.operator}`)}}),n&&(!r||Hie(r,n))&&(r=n)}return r&&t.test(r)?r:null};jie.exports=T7e});var Wie=_((PTt,qie)=>{var F7e=vc(),N7e=(t,e)=>{try{return new F7e(t,e).range||"*"}catch{return null}};qie.exports=N7e});var tk=_((bTt,Kie)=>{var O7e=jo(),Jie=AB(),{ANY:L7e}=Jie,M7e=vc(),U7e=hB(),Yie=cB(),Vie=Jx(),_7e=zx(),H7e=Kx(),j7e=(t,e,r,s)=>{t=new O7e(t,s),e=new M7e(e,s);let a,n,c,f,p;switch(r){case">":a=Yie,n=_7e,c=Vie,f=">",p=">=";break;case"<":a=Vie,n=H7e,c=Yie,f="<",p="<=";break;default:throw new TypeError('Must provide a hilo val of "<" or ">"')}if(U7e(t,e,s))return!1;for(let h=0;h{b.semver===L7e&&(b=new Jie(">=0.0.0")),C=C||b,S=S||b,a(b.semver,C.semver,s)?C=b:c(b.semver,S.semver,s)&&(S=b)}),C.operator===f||C.operator===p||(!S.operator||S.operator===f)&&n(t,S.semver))return!1;if(S.operator===p&&c(t,S.semver))return!1}return!0};Kie.exports=j7e});var Zie=_((xTt,zie)=>{var G7e=tk(),q7e=(t,e,r)=>G7e(t,e,">",r);zie.exports=q7e});var $ie=_((kTt,Xie)=>{var W7e=tk(),Y7e=(t,e,r)=>W7e(t,e,"<",r);Xie.exports=Y7e});var rse=_((QTt,tse)=>{var ese=vc(),V7e=(t,e,r)=>(t=new ese(t,r),e=new ese(e,r),t.intersects(e,r));tse.exports=V7e});var ise=_((RTt,nse)=>{var J7e=hB(),K7e=Bc();nse.exports=(t,e,r)=>{let s=[],a=null,n=null,c=t.sort((E,C)=>K7e(E,C,r));for(let E of c)J7e(E,e,r)?(n=E,a||(a=E)):(n&&s.push([a,n]),n=null,a=null);a&&s.push([a,null]);let f=[];for(let[E,C]of s)E===C?f.push(E):!C&&E===c[0]?f.push("*"):C?E===c[0]?f.push(`<=${C}`):f.push(`${E} - ${C}`):f.push(`>=${E}`);let p=f.join(" || "),h=typeof e.raw=="string"?e.raw:String(e);return p.length{var sse=vc(),W_=AB(),{ANY:q_}=W_,gB=hB(),Y_=Bc(),z7e=(t,e,r={})=>{if(t===e)return!0;t=new sse(t,r),e=new sse(e,r);let s=!1;e:for(let a of t.set){for(let n of e.set){let c=X7e(a,n,r);if(s=s||c!==null,c)continue e}if(s)return!1}return!0},Z7e=[new W_(">=0.0.0-0")],ose=[new W_(">=0.0.0")],X7e=(t,e,r)=>{if(t===e)return!0;if(t.length===1&&t[0].semver===q_){if(e.length===1&&e[0].semver===q_)return!0;r.includePrerelease?t=Z7e:t=ose}if(e.length===1&&e[0].semver===q_){if(r.includePrerelease)return!0;e=ose}let s=new Set,a,n;for(let b of t)b.operator===">"||b.operator===">="?a=ase(a,b,r):b.operator==="<"||b.operator==="<="?n=lse(n,b,r):s.add(b.semver);if(s.size>1)return null;let c;if(a&&n){if(c=Y_(a.semver,n.semver,r),c>0)return null;if(c===0&&(a.operator!==">="||n.operator!=="<="))return null}for(let b of s){if(a&&!gB(b,String(a),r)||n&&!gB(b,String(n),r))return null;for(let I of e)if(!gB(b,String(I),r))return!1;return!0}let f,p,h,E,C=n&&!r.includePrerelease&&n.semver.prerelease.length?n.semver:!1,S=a&&!r.includePrerelease&&a.semver.prerelease.length?a.semver:!1;C&&C.prerelease.length===1&&n.operator==="<"&&C.prerelease[0]===0&&(C=!1);for(let b of e){if(E=E||b.operator===">"||b.operator===">=",h=h||b.operator==="<"||b.operator==="<=",a){if(S&&b.semver.prerelease&&b.semver.prerelease.length&&b.semver.major===S.major&&b.semver.minor===S.minor&&b.semver.patch===S.patch&&(S=!1),b.operator===">"||b.operator===">="){if(f=ase(a,b,r),f===b&&f!==a)return!1}else if(a.operator===">="&&!gB(a.semver,String(b),r))return!1}if(n){if(C&&b.semver.prerelease&&b.semver.prerelease.length&&b.semver.major===C.major&&b.semver.minor===C.minor&&b.semver.patch===C.patch&&(C=!1),b.operator==="<"||b.operator==="<="){if(p=lse(n,b,r),p===b&&p!==n)return!1}else if(n.operator==="<="&&!gB(n.semver,String(b),r))return!1}if(!b.operator&&(n||a)&&c!==0)return!1}return!(a&&h&&!n&&c!==0||n&&E&&!a&&c!==0||S||C)},ase=(t,e,r)=>{if(!t)return e;let s=Y_(t.semver,e.semver,r);return s>0?t:s<0||e.operator===">"&&t.operator===">="?e:t},lse=(t,e,r)=>{if(!t)return e;let s=Y_(t.semver,e.semver,r);return s<0?t:s>0||e.operator==="<"&&t.operator==="<="?e:t};cse.exports=z7e});var Ai=_((FTt,pse)=>{var V_=vE(),fse=aB(),$7e=jo(),Ase=x_(),eJe=Md(),tJe=Rne(),rJe=Fne(),nJe=Lne(),iJe=_ne(),sJe=jne(),oJe=qne(),aJe=Yne(),lJe=Jne(),cJe=Bc(),uJe=Xne(),fJe=eie(),AJe=Vx(),pJe=iie(),hJe=oie(),gJe=cB(),dJe=Jx(),mJe=Q_(),yJe=R_(),EJe=Kx(),IJe=zx(),CJe=T_(),wJe=gie(),BJe=AB(),vJe=vc(),SJe=hB(),DJe=Oie(),PJe=Mie(),bJe=_ie(),xJe=Gie(),kJe=Wie(),QJe=tk(),RJe=Zie(),TJe=$ie(),FJe=rse(),NJe=ise(),OJe=use();pse.exports={parse:eJe,valid:tJe,clean:rJe,inc:nJe,diff:iJe,major:sJe,minor:oJe,patch:aJe,prerelease:lJe,compare:cJe,rcompare:uJe,compareLoose:fJe,compareBuild:AJe,sort:pJe,rsort:hJe,gt:gJe,lt:dJe,eq:mJe,neq:yJe,gte:EJe,lte:IJe,cmp:CJe,coerce:wJe,Comparator:BJe,Range:vJe,satisfies:SJe,toComparators:DJe,maxSatisfying:PJe,minSatisfying:bJe,minVersion:xJe,validRange:kJe,outside:QJe,gtr:RJe,ltr:TJe,intersects:FJe,simplifyRange:NJe,subset:OJe,SemVer:$7e,re:V_.re,src:V_.src,tokens:V_.t,SEMVER_SPEC_VERSION:fse.SEMVER_SPEC_VERSION,RELEASE_TYPES:fse.RELEASE_TYPES,compareIdentifiers:Ase.compareIdentifiers,rcompareIdentifiers:Ase.rcompareIdentifiers}});var gse=_((NTt,hse)=>{"use strict";function LJe(t,e){function r(){this.constructor=t}r.prototype=e.prototype,t.prototype=new r}function jd(t,e,r,s){this.message=t,this.expected=e,this.found=r,this.location=s,this.name="SyntaxError",typeof Error.captureStackTrace=="function"&&Error.captureStackTrace(this,jd)}LJe(jd,Error);jd.buildMessage=function(t,e){var r={literal:function(h){return'"'+a(h.text)+'"'},class:function(h){var E="",C;for(C=0;C0){for(C=1,S=1;C{switch(Re[1]){case"|":return xe|Re[3];case"&":return xe&Re[3];case"^":return xe^Re[3]}},$)},S="!",b=Fe("!",!1),I=function($){return!$},T="(",N=Fe("(",!1),U=")",W=Fe(")",!1),ee=function($){return $},ie=/^[^ \t\n\r()!|&\^]/,ue=Ne([" "," ",` `,"\r","(",")","!","|","&","^"],!0,!1),le=function($){return e.queryPattern.test($)},me=function($){return e.checkFn($)},pe=ke("whitespace"),Be=/^[ \t\n\r]/,Ce=Ne([" "," ",` `,"\r"],!1,!1),g=0,we=0,ye=[{line:1,column:1}],Ae=0,se=[],X=0,De;if("startRule"in e){if(!(e.startRule in s))throw new Error(`Can't start parsing from rule "`+e.startRule+'".');a=s[e.startRule]}function Te(){return t.substring(we,g)}function mt(){return Ue(we,g)}function j($,oe){throw oe=oe!==void 0?oe:Ue(we,g),P([ke($)],t.substring(we,g),oe)}function rt($,oe){throw oe=oe!==void 0?oe:Ue(we,g),w($,oe)}function Fe($,oe){return{type:"literal",text:$,ignoreCase:oe}}function Ne($,oe,xe){return{type:"class",parts:$,inverted:oe,ignoreCase:xe}}function be(){return{type:"any"}}function Ve(){return{type:"end"}}function ke($){return{type:"other",description:$}}function it($){var oe=ye[$],xe;if(oe)return oe;for(xe=$-1;!ye[xe];)xe--;for(oe=ye[xe],oe={line:oe.line,column:oe.column};xe<$;)t.charCodeAt(xe)===10?(oe.line++,oe.column=1):oe.column++,xe++;return ye[$]=oe,oe}function Ue($,oe){var xe=it($),Re=it(oe);return{start:{offset:$,line:xe.line,column:xe.column},end:{offset:oe,line:Re.line,column:Re.column}}}function x($){gAe&&(Ae=g,se=[]),se.push($))}function w($,oe){return new jd($,null,null,oe)}function P($,oe,xe){return new jd(jd.buildMessage($,oe),$,oe,xe)}function y(){var $,oe,xe,Re,lt,Ct,qt,ir;if($=g,oe=F(),oe!==r){for(xe=[],Re=g,lt=Z(),lt!==r?(t.charCodeAt(g)===124?(Ct=n,g++):(Ct=r,X===0&&x(c)),Ct===r&&(t.charCodeAt(g)===38?(Ct=f,g++):(Ct=r,X===0&&x(p)),Ct===r&&(t.charCodeAt(g)===94?(Ct=h,g++):(Ct=r,X===0&&x(E)))),Ct!==r?(qt=Z(),qt!==r?(ir=F(),ir!==r?(lt=[lt,Ct,qt,ir],Re=lt):(g=Re,Re=r)):(g=Re,Re=r)):(g=Re,Re=r)):(g=Re,Re=r);Re!==r;)xe.push(Re),Re=g,lt=Z(),lt!==r?(t.charCodeAt(g)===124?(Ct=n,g++):(Ct=r,X===0&&x(c)),Ct===r&&(t.charCodeAt(g)===38?(Ct=f,g++):(Ct=r,X===0&&x(p)),Ct===r&&(t.charCodeAt(g)===94?(Ct=h,g++):(Ct=r,X===0&&x(E)))),Ct!==r?(qt=Z(),qt!==r?(ir=F(),ir!==r?(lt=[lt,Ct,qt,ir],Re=lt):(g=Re,Re=r)):(g=Re,Re=r)):(g=Re,Re=r)):(g=Re,Re=r);xe!==r?(we=$,oe=C(oe,xe),$=oe):(g=$,$=r)}else g=$,$=r;return $}function F(){var $,oe,xe,Re,lt,Ct;return $=g,t.charCodeAt(g)===33?(oe=S,g++):(oe=r,X===0&&x(b)),oe!==r?(xe=F(),xe!==r?(we=$,oe=I(xe),$=oe):(g=$,$=r)):(g=$,$=r),$===r&&($=g,t.charCodeAt(g)===40?(oe=T,g++):(oe=r,X===0&&x(N)),oe!==r?(xe=Z(),xe!==r?(Re=y(),Re!==r?(lt=Z(),lt!==r?(t.charCodeAt(g)===41?(Ct=U,g++):(Ct=r,X===0&&x(W)),Ct!==r?(we=$,oe=ee(Re),$=oe):(g=$,$=r)):(g=$,$=r)):(g=$,$=r)):(g=$,$=r)):(g=$,$=r),$===r&&($=z())),$}function z(){var $,oe,xe,Re,lt;if($=g,oe=Z(),oe!==r){if(xe=g,Re=[],ie.test(t.charAt(g))?(lt=t.charAt(g),g++):(lt=r,X===0&&x(ue)),lt!==r)for(;lt!==r;)Re.push(lt),ie.test(t.charAt(g))?(lt=t.charAt(g),g++):(lt=r,X===0&&x(ue));else Re=r;Re!==r?xe=t.substring(xe,g):xe=Re,xe!==r?(we=g,Re=le(xe),Re?Re=void 0:Re=r,Re!==r?(we=$,oe=me(xe),$=oe):(g=$,$=r)):(g=$,$=r)}else g=$,$=r;return $}function Z(){var $,oe;for(X++,$=[],Be.test(t.charAt(g))?(oe=t.charAt(g),g++):(oe=r,X===0&&x(Ce));oe!==r;)$.push(oe),Be.test(t.charAt(g))?(oe=t.charAt(g),g++):(oe=r,X===0&&x(Ce));return X--,$===r&&(oe=r,X===0&&x(pe)),$}if(De=a(),De!==r&&g===t.length)return De;throw De!==r&&g{var{parse:UJe}=gse();rk.makeParser=(t=/[a-z]+/)=>(e,r)=>UJe(e,{queryPattern:t,checkFn:r});rk.parse=rk.makeParser()});var yse=_((LTt,mse)=>{"use strict";mse.exports={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]}});var J_=_((MTt,Ise)=>{var dB=yse(),Ese={};for(let t of Object.keys(dB))Ese[dB[t]]=t;var hr={rgb:{channels:3,labels:"rgb"},hsl:{channels:3,labels:"hsl"},hsv:{channels:3,labels:"hsv"},hwb:{channels:3,labels:"hwb"},cmyk:{channels:4,labels:"cmyk"},xyz:{channels:3,labels:"xyz"},lab:{channels:3,labels:"lab"},lch:{channels:3,labels:"lch"},hex:{channels:1,labels:["hex"]},keyword:{channels:1,labels:["keyword"]},ansi16:{channels:1,labels:["ansi16"]},ansi256:{channels:1,labels:["ansi256"]},hcg:{channels:3,labels:["h","c","g"]},apple:{channels:3,labels:["r16","g16","b16"]},gray:{channels:1,labels:["gray"]}};Ise.exports=hr;for(let t of Object.keys(hr)){if(!("channels"in hr[t]))throw new Error("missing channels property: "+t);if(!("labels"in hr[t]))throw new Error("missing channel labels property: "+t);if(hr[t].labels.length!==hr[t].channels)throw new Error("channel and label counts mismatch: "+t);let{channels:e,labels:r}=hr[t];delete hr[t].channels,delete hr[t].labels,Object.defineProperty(hr[t],"channels",{value:e}),Object.defineProperty(hr[t],"labels",{value:r})}hr.rgb.hsl=function(t){let e=t[0]/255,r=t[1]/255,s=t[2]/255,a=Math.min(e,r,s),n=Math.max(e,r,s),c=n-a,f,p;n===a?f=0:e===n?f=(r-s)/c:r===n?f=2+(s-e)/c:s===n&&(f=4+(e-r)/c),f=Math.min(f*60,360),f<0&&(f+=360);let h=(a+n)/2;return n===a?p=0:h<=.5?p=c/(n+a):p=c/(2-n-a),[f,p*100,h*100]};hr.rgb.hsv=function(t){let e,r,s,a,n,c=t[0]/255,f=t[1]/255,p=t[2]/255,h=Math.max(c,f,p),E=h-Math.min(c,f,p),C=function(S){return(h-S)/6/E+1/2};return E===0?(a=0,n=0):(n=E/h,e=C(c),r=C(f),s=C(p),c===h?a=s-r:f===h?a=1/3+e-s:p===h&&(a=2/3+r-e),a<0?a+=1:a>1&&(a-=1)),[a*360,n*100,h*100]};hr.rgb.hwb=function(t){let e=t[0],r=t[1],s=t[2],a=hr.rgb.hsl(t)[0],n=1/255*Math.min(e,Math.min(r,s));return s=1-1/255*Math.max(e,Math.max(r,s)),[a,n*100,s*100]};hr.rgb.cmyk=function(t){let e=t[0]/255,r=t[1]/255,s=t[2]/255,a=Math.min(1-e,1-r,1-s),n=(1-e-a)/(1-a)||0,c=(1-r-a)/(1-a)||0,f=(1-s-a)/(1-a)||0;return[n*100,c*100,f*100,a*100]};function _Je(t,e){return(t[0]-e[0])**2+(t[1]-e[1])**2+(t[2]-e[2])**2}hr.rgb.keyword=function(t){let e=Ese[t];if(e)return e;let r=1/0,s;for(let a of Object.keys(dB)){let n=dB[a],c=_Je(t,n);c.04045?((e+.055)/1.055)**2.4:e/12.92,r=r>.04045?((r+.055)/1.055)**2.4:r/12.92,s=s>.04045?((s+.055)/1.055)**2.4:s/12.92;let a=e*.4124+r*.3576+s*.1805,n=e*.2126+r*.7152+s*.0722,c=e*.0193+r*.1192+s*.9505;return[a*100,n*100,c*100]};hr.rgb.lab=function(t){let e=hr.rgb.xyz(t),r=e[0],s=e[1],a=e[2];r/=95.047,s/=100,a/=108.883,r=r>.008856?r**(1/3):7.787*r+16/116,s=s>.008856?s**(1/3):7.787*s+16/116,a=a>.008856?a**(1/3):7.787*a+16/116;let n=116*s-16,c=500*(r-s),f=200*(s-a);return[n,c,f]};hr.hsl.rgb=function(t){let e=t[0]/360,r=t[1]/100,s=t[2]/100,a,n,c;if(r===0)return c=s*255,[c,c,c];s<.5?a=s*(1+r):a=s+r-s*r;let f=2*s-a,p=[0,0,0];for(let h=0;h<3;h++)n=e+1/3*-(h-1),n<0&&n++,n>1&&n--,6*n<1?c=f+(a-f)*6*n:2*n<1?c=a:3*n<2?c=f+(a-f)*(2/3-n)*6:c=f,p[h]=c*255;return p};hr.hsl.hsv=function(t){let e=t[0],r=t[1]/100,s=t[2]/100,a=r,n=Math.max(s,.01);s*=2,r*=s<=1?s:2-s,a*=n<=1?n:2-n;let c=(s+r)/2,f=s===0?2*a/(n+a):2*r/(s+r);return[e,f*100,c*100]};hr.hsv.rgb=function(t){let e=t[0]/60,r=t[1]/100,s=t[2]/100,a=Math.floor(e)%6,n=e-Math.floor(e),c=255*s*(1-r),f=255*s*(1-r*n),p=255*s*(1-r*(1-n));switch(s*=255,a){case 0:return[s,p,c];case 1:return[f,s,c];case 2:return[c,s,p];case 3:return[c,f,s];case 4:return[p,c,s];case 5:return[s,c,f]}};hr.hsv.hsl=function(t){let e=t[0],r=t[1]/100,s=t[2]/100,a=Math.max(s,.01),n,c;c=(2-r)*s;let f=(2-r)*a;return n=r*a,n/=f<=1?f:2-f,n=n||0,c/=2,[e,n*100,c*100]};hr.hwb.rgb=function(t){let e=t[0]/360,r=t[1]/100,s=t[2]/100,a=r+s,n;a>1&&(r/=a,s/=a);let c=Math.floor(6*e),f=1-s;n=6*e-c,c&1&&(n=1-n);let p=r+n*(f-r),h,E,C;switch(c){default:case 6:case 0:h=f,E=p,C=r;break;case 1:h=p,E=f,C=r;break;case 2:h=r,E=f,C=p;break;case 3:h=r,E=p,C=f;break;case 4:h=p,E=r,C=f;break;case 5:h=f,E=r,C=p;break}return[h*255,E*255,C*255]};hr.cmyk.rgb=function(t){let e=t[0]/100,r=t[1]/100,s=t[2]/100,a=t[3]/100,n=1-Math.min(1,e*(1-a)+a),c=1-Math.min(1,r*(1-a)+a),f=1-Math.min(1,s*(1-a)+a);return[n*255,c*255,f*255]};hr.xyz.rgb=function(t){let e=t[0]/100,r=t[1]/100,s=t[2]/100,a,n,c;return a=e*3.2406+r*-1.5372+s*-.4986,n=e*-.9689+r*1.8758+s*.0415,c=e*.0557+r*-.204+s*1.057,a=a>.0031308?1.055*a**(1/2.4)-.055:a*12.92,n=n>.0031308?1.055*n**(1/2.4)-.055:n*12.92,c=c>.0031308?1.055*c**(1/2.4)-.055:c*12.92,a=Math.min(Math.max(0,a),1),n=Math.min(Math.max(0,n),1),c=Math.min(Math.max(0,c),1),[a*255,n*255,c*255]};hr.xyz.lab=function(t){let e=t[0],r=t[1],s=t[2];e/=95.047,r/=100,s/=108.883,e=e>.008856?e**(1/3):7.787*e+16/116,r=r>.008856?r**(1/3):7.787*r+16/116,s=s>.008856?s**(1/3):7.787*s+16/116;let a=116*r-16,n=500*(e-r),c=200*(r-s);return[a,n,c]};hr.lab.xyz=function(t){let e=t[0],r=t[1],s=t[2],a,n,c;n=(e+16)/116,a=r/500+n,c=n-s/200;let f=n**3,p=a**3,h=c**3;return n=f>.008856?f:(n-16/116)/7.787,a=p>.008856?p:(a-16/116)/7.787,c=h>.008856?h:(c-16/116)/7.787,a*=95.047,n*=100,c*=108.883,[a,n,c]};hr.lab.lch=function(t){let e=t[0],r=t[1],s=t[2],a;a=Math.atan2(s,r)*360/2/Math.PI,a<0&&(a+=360);let c=Math.sqrt(r*r+s*s);return[e,c,a]};hr.lch.lab=function(t){let e=t[0],r=t[1],a=t[2]/360*2*Math.PI,n=r*Math.cos(a),c=r*Math.sin(a);return[e,n,c]};hr.rgb.ansi16=function(t,e=null){let[r,s,a]=t,n=e===null?hr.rgb.hsv(t)[2]:e;if(n=Math.round(n/50),n===0)return 30;let c=30+(Math.round(a/255)<<2|Math.round(s/255)<<1|Math.round(r/255));return n===2&&(c+=60),c};hr.hsv.ansi16=function(t){return hr.rgb.ansi16(hr.hsv.rgb(t),t[2])};hr.rgb.ansi256=function(t){let e=t[0],r=t[1],s=t[2];return e===r&&r===s?e<8?16:e>248?231:Math.round((e-8)/247*24)+232:16+36*Math.round(e/255*5)+6*Math.round(r/255*5)+Math.round(s/255*5)};hr.ansi16.rgb=function(t){let e=t%10;if(e===0||e===7)return t>50&&(e+=3.5),e=e/10.5*255,[e,e,e];let r=(~~(t>50)+1)*.5,s=(e&1)*r*255,a=(e>>1&1)*r*255,n=(e>>2&1)*r*255;return[s,a,n]};hr.ansi256.rgb=function(t){if(t>=232){let n=(t-232)*10+8;return[n,n,n]}t-=16;let e,r=Math.floor(t/36)/5*255,s=Math.floor((e=t%36)/6)/5*255,a=e%6/5*255;return[r,s,a]};hr.rgb.hex=function(t){let r=(((Math.round(t[0])&255)<<16)+((Math.round(t[1])&255)<<8)+(Math.round(t[2])&255)).toString(16).toUpperCase();return"000000".substring(r.length)+r};hr.hex.rgb=function(t){let e=t.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);if(!e)return[0,0,0];let r=e[0];e[0].length===3&&(r=r.split("").map(f=>f+f).join(""));let s=parseInt(r,16),a=s>>16&255,n=s>>8&255,c=s&255;return[a,n,c]};hr.rgb.hcg=function(t){let e=t[0]/255,r=t[1]/255,s=t[2]/255,a=Math.max(Math.max(e,r),s),n=Math.min(Math.min(e,r),s),c=a-n,f,p;return c<1?f=n/(1-c):f=0,c<=0?p=0:a===e?p=(r-s)/c%6:a===r?p=2+(s-e)/c:p=4+(e-r)/c,p/=6,p%=1,[p*360,c*100,f*100]};hr.hsl.hcg=function(t){let e=t[1]/100,r=t[2]/100,s=r<.5?2*e*r:2*e*(1-r),a=0;return s<1&&(a=(r-.5*s)/(1-s)),[t[0],s*100,a*100]};hr.hsv.hcg=function(t){let e=t[1]/100,r=t[2]/100,s=e*r,a=0;return s<1&&(a=(r-s)/(1-s)),[t[0],s*100,a*100]};hr.hcg.rgb=function(t){let e=t[0]/360,r=t[1]/100,s=t[2]/100;if(r===0)return[s*255,s*255,s*255];let a=[0,0,0],n=e%1*6,c=n%1,f=1-c,p=0;switch(Math.floor(n)){case 0:a[0]=1,a[1]=c,a[2]=0;break;case 1:a[0]=f,a[1]=1,a[2]=0;break;case 2:a[0]=0,a[1]=1,a[2]=c;break;case 3:a[0]=0,a[1]=f,a[2]=1;break;case 4:a[0]=c,a[1]=0,a[2]=1;break;default:a[0]=1,a[1]=0,a[2]=f}return p=(1-r)*s,[(r*a[0]+p)*255,(r*a[1]+p)*255,(r*a[2]+p)*255]};hr.hcg.hsv=function(t){let e=t[1]/100,r=t[2]/100,s=e+r*(1-e),a=0;return s>0&&(a=e/s),[t[0],a*100,s*100]};hr.hcg.hsl=function(t){let e=t[1]/100,s=t[2]/100*(1-e)+.5*e,a=0;return s>0&&s<.5?a=e/(2*s):s>=.5&&s<1&&(a=e/(2*(1-s))),[t[0],a*100,s*100]};hr.hcg.hwb=function(t){let e=t[1]/100,r=t[2]/100,s=e+r*(1-e);return[t[0],(s-e)*100,(1-s)*100]};hr.hwb.hcg=function(t){let e=t[1]/100,s=1-t[2]/100,a=s-e,n=0;return a<1&&(n=(s-a)/(1-a)),[t[0],a*100,n*100]};hr.apple.rgb=function(t){return[t[0]/65535*255,t[1]/65535*255,t[2]/65535*255]};hr.rgb.apple=function(t){return[t[0]/255*65535,t[1]/255*65535,t[2]/255*65535]};hr.gray.rgb=function(t){return[t[0]/100*255,t[0]/100*255,t[0]/100*255]};hr.gray.hsl=function(t){return[0,0,t[0]]};hr.gray.hsv=hr.gray.hsl;hr.gray.hwb=function(t){return[0,100,t[0]]};hr.gray.cmyk=function(t){return[0,0,0,t[0]]};hr.gray.lab=function(t){return[t[0],0,0]};hr.gray.hex=function(t){let e=Math.round(t[0]/100*255)&255,s=((e<<16)+(e<<8)+e).toString(16).toUpperCase();return"000000".substring(s.length)+s};hr.rgb.gray=function(t){return[(t[0]+t[1]+t[2])/3/255*100]}});var wse=_((UTt,Cse)=>{var nk=J_();function HJe(){let t={},e=Object.keys(nk);for(let r=e.length,s=0;s{var K_=J_(),WJe=wse(),bE={},YJe=Object.keys(K_);function VJe(t){let e=function(...r){let s=r[0];return s==null?s:(s.length>1&&(r=s),t(r))};return"conversion"in t&&(e.conversion=t.conversion),e}function JJe(t){let e=function(...r){let s=r[0];if(s==null)return s;s.length>1&&(r=s);let a=t(r);if(typeof a=="object")for(let n=a.length,c=0;c{bE[t]={},Object.defineProperty(bE[t],"channels",{value:K_[t].channels}),Object.defineProperty(bE[t],"labels",{value:K_[t].labels});let e=WJe(t);Object.keys(e).forEach(s=>{let a=e[s];bE[t][s]=JJe(a),bE[t][s].raw=VJe(a)})});Bse.exports=bE});var sk=_((HTt,xse)=>{"use strict";var Sse=(t,e)=>(...r)=>`\x1B[${t(...r)+e}m`,Dse=(t,e)=>(...r)=>{let s=t(...r);return`\x1B[${38+e};5;${s}m`},Pse=(t,e)=>(...r)=>{let s=t(...r);return`\x1B[${38+e};2;${s[0]};${s[1]};${s[2]}m`},ik=t=>t,bse=(t,e,r)=>[t,e,r],xE=(t,e,r)=>{Object.defineProperty(t,e,{get:()=>{let s=r();return Object.defineProperty(t,e,{value:s,enumerable:!0,configurable:!0}),s},enumerable:!0,configurable:!0})},z_,kE=(t,e,r,s)=>{z_===void 0&&(z_=vse());let a=s?10:0,n={};for(let[c,f]of Object.entries(z_)){let p=c==="ansi16"?"ansi":c;c===e?n[p]=t(r,a):typeof f=="object"&&(n[p]=t(f[e],a))}return n};function KJe(){let t=new Map,e={modifier:{reset:[0,0],bold:[1,22],dim:[2,22],italic:[3,23],underline:[4,24],inverse:[7,27],hidden:[8,28],strikethrough:[9,29]},color:{black:[30,39],red:[31,39],green:[32,39],yellow:[33,39],blue:[34,39],magenta:[35,39],cyan:[36,39],white:[37,39],blackBright:[90,39],redBright:[91,39],greenBright:[92,39],yellowBright:[93,39],blueBright:[94,39],magentaBright:[95,39],cyanBright:[96,39],whiteBright:[97,39]},bgColor:{bgBlack:[40,49],bgRed:[41,49],bgGreen:[42,49],bgYellow:[43,49],bgBlue:[44,49],bgMagenta:[45,49],bgCyan:[46,49],bgWhite:[47,49],bgBlackBright:[100,49],bgRedBright:[101,49],bgGreenBright:[102,49],bgYellowBright:[103,49],bgBlueBright:[104,49],bgMagentaBright:[105,49],bgCyanBright:[106,49],bgWhiteBright:[107,49]}};e.color.gray=e.color.blackBright,e.bgColor.bgGray=e.bgColor.bgBlackBright,e.color.grey=e.color.blackBright,e.bgColor.bgGrey=e.bgColor.bgBlackBright;for(let[r,s]of Object.entries(e)){for(let[a,n]of Object.entries(s))e[a]={open:`\x1B[${n[0]}m`,close:`\x1B[${n[1]}m`},s[a]=e[a],t.set(n[0],n[1]);Object.defineProperty(e,r,{value:s,enumerable:!1})}return Object.defineProperty(e,"codes",{value:t,enumerable:!1}),e.color.close="\x1B[39m",e.bgColor.close="\x1B[49m",xE(e.color,"ansi",()=>kE(Sse,"ansi16",ik,!1)),xE(e.color,"ansi256",()=>kE(Dse,"ansi256",ik,!1)),xE(e.color,"ansi16m",()=>kE(Pse,"rgb",bse,!1)),xE(e.bgColor,"ansi",()=>kE(Sse,"ansi16",ik,!0)),xE(e.bgColor,"ansi256",()=>kE(Dse,"ansi256",ik,!0)),xE(e.bgColor,"ansi16m",()=>kE(Pse,"rgb",bse,!0)),e}Object.defineProperty(xse,"exports",{enumerable:!0,get:KJe})});var Qse=_((jTt,kse)=>{"use strict";kse.exports=(t,e=process.argv)=>{let r=t.startsWith("-")?"":t.length===1?"-":"--",s=e.indexOf(r+t),a=e.indexOf("--");return s!==-1&&(a===-1||s{"use strict";var zJe=Ie("os"),Rse=Ie("tty"),Sc=Qse(),{env:Ps}=process,l0;Sc("no-color")||Sc("no-colors")||Sc("color=false")||Sc("color=never")?l0=0:(Sc("color")||Sc("colors")||Sc("color=true")||Sc("color=always"))&&(l0=1);"FORCE_COLOR"in Ps&&(Ps.FORCE_COLOR==="true"?l0=1:Ps.FORCE_COLOR==="false"?l0=0:l0=Ps.FORCE_COLOR.length===0?1:Math.min(parseInt(Ps.FORCE_COLOR,10),3));function Z_(t){return t===0?!1:{level:t,hasBasic:!0,has256:t>=2,has16m:t>=3}}function X_(t,e){if(l0===0)return 0;if(Sc("color=16m")||Sc("color=full")||Sc("color=truecolor"))return 3;if(Sc("color=256"))return 2;if(t&&!e&&l0===void 0)return 0;let r=l0||0;if(Ps.TERM==="dumb")return r;if(process.platform==="win32"){let s=zJe.release().split(".");return Number(s[0])>=10&&Number(s[2])>=10586?Number(s[2])>=14931?3:2:1}if("CI"in Ps)return["TRAVIS","CIRCLECI","APPVEYOR","GITLAB_CI"].some(s=>s in Ps)||Ps.CI_NAME==="codeship"?1:r;if("TEAMCITY_VERSION"in Ps)return/^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(Ps.TEAMCITY_VERSION)?1:0;if("GITHUB_ACTIONS"in Ps)return 1;if(Ps.COLORTERM==="truecolor")return 3;if("TERM_PROGRAM"in Ps){let s=parseInt((Ps.TERM_PROGRAM_VERSION||"").split(".")[0],10);switch(Ps.TERM_PROGRAM){case"iTerm.app":return s>=3?3:2;case"Apple_Terminal":return 2}}return/-256(color)?$/i.test(Ps.TERM)?2:/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(Ps.TERM)||"COLORTERM"in Ps?1:r}function ZJe(t){let e=X_(t,t&&t.isTTY);return Z_(e)}Tse.exports={supportsColor:ZJe,stdout:Z_(X_(!0,Rse.isatty(1))),stderr:Z_(X_(!0,Rse.isatty(2)))}});var Ose=_((qTt,Nse)=>{"use strict";var XJe=(t,e,r)=>{let s=t.indexOf(e);if(s===-1)return t;let a=e.length,n=0,c="";do c+=t.substr(n,s-n)+e+r,n=s+a,s=t.indexOf(e,n);while(s!==-1);return c+=t.substr(n),c},$Je=(t,e,r,s)=>{let a=0,n="";do{let c=t[s-1]==="\r";n+=t.substr(a,(c?s-1:s)-a)+e+(c?`\r `:` `)+r,a=s+1,s=t.indexOf(` `,a)}while(s!==-1);return n+=t.substr(a),n};Nse.exports={stringReplaceAll:XJe,stringEncaseCRLFWithFirstIndex:$Je}});var Hse=_((WTt,_se)=>{"use strict";var eKe=/(?:\\(u(?:[a-f\d]{4}|\{[a-f\d]{1,6}\})|x[a-f\d]{2}|.))|(?:\{(~)?(\w+(?:\([^)]*\))?(?:\.\w+(?:\([^)]*\))?)*)(?:[ \t]|(?=\r?\n)))|(\})|((?:.|[\r\n\f])+?)/gi,Lse=/(?:^|\.)(\w+)(?:\(([^)]*)\))?/g,tKe=/^(['"])((?:\\.|(?!\1)[^\\])*)\1$/,rKe=/\\(u(?:[a-f\d]{4}|{[a-f\d]{1,6}})|x[a-f\d]{2}|.)|([^\\])/gi,nKe=new Map([["n",` `],["r","\r"],["t"," "],["b","\b"],["f","\f"],["v","\v"],["0","\0"],["\\","\\"],["e","\x1B"],["a","\x07"]]);function Use(t){let e=t[0]==="u",r=t[1]==="{";return e&&!r&&t.length===5||t[0]==="x"&&t.length===3?String.fromCharCode(parseInt(t.slice(1),16)):e&&r?String.fromCodePoint(parseInt(t.slice(2,-1),16)):nKe.get(t)||t}function iKe(t,e){let r=[],s=e.trim().split(/\s*,\s*/g),a;for(let n of s){let c=Number(n);if(!Number.isNaN(c))r.push(c);else if(a=n.match(tKe))r.push(a[2].replace(rKe,(f,p,h)=>p?Use(p):h));else throw new Error(`Invalid Chalk template style argument: ${n} (in style '${t}')`)}return r}function sKe(t){Lse.lastIndex=0;let e=[],r;for(;(r=Lse.exec(t))!==null;){let s=r[1];if(r[2]){let a=iKe(s,r[2]);e.push([s].concat(a))}else e.push([s])}return e}function Mse(t,e){let r={};for(let a of e)for(let n of a.styles)r[n[0]]=a.inverse?null:n.slice(1);let s=t;for(let[a,n]of Object.entries(r))if(Array.isArray(n)){if(!(a in s))throw new Error(`Unknown Chalk style: ${a}`);s=n.length>0?s[a](...n):s[a]}return s}_se.exports=(t,e)=>{let r=[],s=[],a=[];if(e.replace(eKe,(n,c,f,p,h,E)=>{if(c)a.push(Use(c));else if(p){let C=a.join("");a=[],s.push(r.length===0?C:Mse(t,r)(C)),r.push({inverse:f,styles:sKe(p)})}else if(h){if(r.length===0)throw new Error("Found extraneous } in Chalk template literal");s.push(Mse(t,r)(a.join(""))),a=[],r.pop()}else a.push(E)}),s.push(a.join("")),r.length>0){let n=`Chalk template literal is missing ${r.length} closing bracket${r.length===1?"":"s"} (\`}\`)`;throw new Error(n)}return s.join("")}});var RE=_((YTt,Vse)=>{"use strict";var mB=sk(),{stdout:e4,stderr:t4}=Fse(),{stringReplaceAll:oKe,stringEncaseCRLFWithFirstIndex:aKe}=Ose(),{isArray:ok}=Array,Gse=["ansi","ansi","ansi256","ansi16m"],QE=Object.create(null),lKe=(t,e={})=>{if(e.level&&!(Number.isInteger(e.level)&&e.level>=0&&e.level<=3))throw new Error("The `level` option should be an integer from 0 to 3");let r=e4?e4.level:0;t.level=e.level===void 0?r:e.level},r4=class{constructor(e){return qse(e)}},qse=t=>{let e={};return lKe(e,t),e.template=(...r)=>Yse(e.template,...r),Object.setPrototypeOf(e,ak.prototype),Object.setPrototypeOf(e.template,e),e.template.constructor=()=>{throw new Error("`chalk.constructor()` is deprecated. Use `new chalk.Instance()` instead.")},e.template.Instance=r4,e.template};function ak(t){return qse(t)}for(let[t,e]of Object.entries(mB))QE[t]={get(){let r=lk(this,n4(e.open,e.close,this._styler),this._isEmpty);return Object.defineProperty(this,t,{value:r}),r}};QE.visible={get(){let t=lk(this,this._styler,!0);return Object.defineProperty(this,"visible",{value:t}),t}};var Wse=["rgb","hex","keyword","hsl","hsv","hwb","ansi","ansi256"];for(let t of Wse)QE[t]={get(){let{level:e}=this;return function(...r){let s=n4(mB.color[Gse[e]][t](...r),mB.color.close,this._styler);return lk(this,s,this._isEmpty)}}};for(let t of Wse){let e="bg"+t[0].toUpperCase()+t.slice(1);QE[e]={get(){let{level:r}=this;return function(...s){let a=n4(mB.bgColor[Gse[r]][t](...s),mB.bgColor.close,this._styler);return lk(this,a,this._isEmpty)}}}}var cKe=Object.defineProperties(()=>{},{...QE,level:{enumerable:!0,get(){return this._generator.level},set(t){this._generator.level=t}}}),n4=(t,e,r)=>{let s,a;return r===void 0?(s=t,a=e):(s=r.openAll+t,a=e+r.closeAll),{open:t,close:e,openAll:s,closeAll:a,parent:r}},lk=(t,e,r)=>{let s=(...a)=>ok(a[0])&&ok(a[0].raw)?jse(s,Yse(s,...a)):jse(s,a.length===1?""+a[0]:a.join(" "));return Object.setPrototypeOf(s,cKe),s._generator=t,s._styler=e,s._isEmpty=r,s},jse=(t,e)=>{if(t.level<=0||!e)return t._isEmpty?"":e;let r=t._styler;if(r===void 0)return e;let{openAll:s,closeAll:a}=r;if(e.indexOf("\x1B")!==-1)for(;r!==void 0;)e=oKe(e,r.close,r.open),r=r.parent;let n=e.indexOf(` `);return n!==-1&&(e=aKe(e,a,s,n)),s+e+a},$_,Yse=(t,...e)=>{let[r]=e;if(!ok(r)||!ok(r.raw))return e.join(" ");let s=e.slice(1),a=[r.raw[0]];for(let n=1;n{"use strict";Dc.isInteger=t=>typeof t=="number"?Number.isInteger(t):typeof t=="string"&&t.trim()!==""?Number.isInteger(Number(t)):!1;Dc.find=(t,e)=>t.nodes.find(r=>r.type===e);Dc.exceedsLimit=(t,e,r=1,s)=>s===!1||!Dc.isInteger(t)||!Dc.isInteger(e)?!1:(Number(e)-Number(t))/Number(r)>=s;Dc.escapeNode=(t,e=0,r)=>{let s=t.nodes[e];s&&(r&&s.type===r||s.type==="open"||s.type==="close")&&s.escaped!==!0&&(s.value="\\"+s.value,s.escaped=!0)};Dc.encloseBrace=t=>t.type!=="brace"||t.commas>>0+t.ranges>>0?!1:(t.invalid=!0,!0);Dc.isInvalidBrace=t=>t.type!=="brace"?!1:t.invalid===!0||t.dollar?!0:!(t.commas>>0+t.ranges>>0)||t.open!==!0||t.close!==!0?(t.invalid=!0,!0):!1;Dc.isOpenOrClose=t=>t.type==="open"||t.type==="close"?!0:t.open===!0||t.close===!0;Dc.reduce=t=>t.reduce((e,r)=>(r.type==="text"&&e.push(r.value),r.type==="range"&&(r.type="text"),e),[]);Dc.flatten=(...t)=>{let e=[],r=s=>{for(let a=0;a{"use strict";var Jse=uk();Kse.exports=(t,e={})=>{let r=(s,a={})=>{let n=e.escapeInvalid&&Jse.isInvalidBrace(a),c=s.invalid===!0&&e.escapeInvalid===!0,f="";if(s.value)return(n||c)&&Jse.isOpenOrClose(s)?"\\"+s.value:s.value;if(s.value)return s.value;if(s.nodes)for(let p of s.nodes)f+=r(p);return f};return r(t)}});var Zse=_((KTt,zse)=>{"use strict";zse.exports=function(t){return typeof t=="number"?t-t===0:typeof t=="string"&&t.trim()!==""?Number.isFinite?Number.isFinite(+t):isFinite(+t):!1}});var ooe=_((zTt,soe)=>{"use strict";var Xse=Zse(),Gd=(t,e,r)=>{if(Xse(t)===!1)throw new TypeError("toRegexRange: expected the first argument to be a number");if(e===void 0||t===e)return String(t);if(Xse(e)===!1)throw new TypeError("toRegexRange: expected the second argument to be a number.");let s={relaxZeros:!0,...r};typeof s.strictZeros=="boolean"&&(s.relaxZeros=s.strictZeros===!1);let a=String(s.relaxZeros),n=String(s.shorthand),c=String(s.capture),f=String(s.wrap),p=t+":"+e+"="+a+n+c+f;if(Gd.cache.hasOwnProperty(p))return Gd.cache[p].result;let h=Math.min(t,e),E=Math.max(t,e);if(Math.abs(h-E)===1){let T=t+"|"+e;return s.capture?`(${T})`:s.wrap===!1?T:`(?:${T})`}let C=ioe(t)||ioe(e),S={min:t,max:e,a:h,b:E},b=[],I=[];if(C&&(S.isPadded=C,S.maxLen=String(S.max).length),h<0){let T=E<0?Math.abs(E):1;I=$se(T,Math.abs(h),S,s),h=S.a=0}return E>=0&&(b=$se(h,E,S,s)),S.negatives=I,S.positives=b,S.result=uKe(I,b,s),s.capture===!0?S.result=`(${S.result})`:s.wrap!==!1&&b.length+I.length>1&&(S.result=`(?:${S.result})`),Gd.cache[p]=S,S.result};function uKe(t,e,r){let s=i4(t,e,"-",!1,r)||[],a=i4(e,t,"",!1,r)||[],n=i4(t,e,"-?",!0,r)||[];return s.concat(n).concat(a).join("|")}function fKe(t,e){let r=1,s=1,a=toe(t,r),n=new Set([e]);for(;t<=a&&a<=e;)n.add(a),r+=1,a=toe(t,r);for(a=roe(e+1,s)-1;t1&&f.count.pop(),f.count.push(E.count[0]),f.string=f.pattern+noe(f.count),c=h+1;continue}r.isPadded&&(C=dKe(h,r,s)),E.string=C+E.pattern+noe(E.count),n.push(E),c=h+1,f=E}return n}function i4(t,e,r,s,a){let n=[];for(let c of t){let{string:f}=c;!s&&!eoe(e,"string",f)&&n.push(r+f),s&&eoe(e,"string",f)&&n.push(r+f)}return n}function pKe(t,e){let r=[];for(let s=0;se?1:e>t?-1:0}function eoe(t,e,r){return t.some(s=>s[e]===r)}function toe(t,e){return Number(String(t).slice(0,-e)+"9".repeat(e))}function roe(t,e){return t-t%Math.pow(10,e)}function noe(t){let[e=0,r=""]=t;return r||e>1?`{${e+(r?","+r:"")}}`:""}function gKe(t,e,r){return`[${t}${e-t===1?"":"-"}${e}]`}function ioe(t){return/^-?(0+)\d/.test(t)}function dKe(t,e,r){if(!e.isPadded)return t;let s=Math.abs(e.maxLen-String(t).length),a=r.relaxZeros!==!1;switch(s){case 0:return"";case 1:return a?"0?":"0";case 2:return a?"0{0,2}":"00";default:return a?`0{0,${s}}`:`0{${s}}`}}Gd.cache={};Gd.clearCache=()=>Gd.cache={};soe.exports=Gd});var a4=_((ZTt,hoe)=>{"use strict";var mKe=Ie("util"),coe=ooe(),aoe=t=>t!==null&&typeof t=="object"&&!Array.isArray(t),yKe=t=>e=>t===!0?Number(e):String(e),s4=t=>typeof t=="number"||typeof t=="string"&&t!=="",yB=t=>Number.isInteger(+t),o4=t=>{let e=`${t}`,r=-1;if(e[0]==="-"&&(e=e.slice(1)),e==="0")return!1;for(;e[++r]==="0";);return r>0},EKe=(t,e,r)=>typeof t=="string"||typeof e=="string"?!0:r.stringify===!0,IKe=(t,e,r)=>{if(e>0){let s=t[0]==="-"?"-":"";s&&(t=t.slice(1)),t=s+t.padStart(s?e-1:e,"0")}return r===!1?String(t):t},loe=(t,e)=>{let r=t[0]==="-"?"-":"";for(r&&(t=t.slice(1),e--);t.length{t.negatives.sort((c,f)=>cf?1:0),t.positives.sort((c,f)=>cf?1:0);let r=e.capture?"":"?:",s="",a="",n;return t.positives.length&&(s=t.positives.join("|")),t.negatives.length&&(a=`-(${r}${t.negatives.join("|")})`),s&&a?n=`${s}|${a}`:n=s||a,e.wrap?`(${r}${n})`:n},uoe=(t,e,r,s)=>{if(r)return coe(t,e,{wrap:!1,...s});let a=String.fromCharCode(t);if(t===e)return a;let n=String.fromCharCode(e);return`[${a}-${n}]`},foe=(t,e,r)=>{if(Array.isArray(t)){let s=r.wrap===!0,a=r.capture?"":"?:";return s?`(${a}${t.join("|")})`:t.join("|")}return coe(t,e,r)},Aoe=(...t)=>new RangeError("Invalid range arguments: "+mKe.inspect(...t)),poe=(t,e,r)=>{if(r.strictRanges===!0)throw Aoe([t,e]);return[]},wKe=(t,e)=>{if(e.strictRanges===!0)throw new TypeError(`Expected step "${t}" to be a number`);return[]},BKe=(t,e,r=1,s={})=>{let a=Number(t),n=Number(e);if(!Number.isInteger(a)||!Number.isInteger(n)){if(s.strictRanges===!0)throw Aoe([t,e]);return[]}a===0&&(a=0),n===0&&(n=0);let c=a>n,f=String(t),p=String(e),h=String(r);r=Math.max(Math.abs(r),1);let E=o4(f)||o4(p)||o4(h),C=E?Math.max(f.length,p.length,h.length):0,S=E===!1&&EKe(t,e,s)===!1,b=s.transform||yKe(S);if(s.toRegex&&r===1)return uoe(loe(t,C),loe(e,C),!0,s);let I={negatives:[],positives:[]},T=W=>I[W<0?"negatives":"positives"].push(Math.abs(W)),N=[],U=0;for(;c?a>=n:a<=n;)s.toRegex===!0&&r>1?T(a):N.push(IKe(b(a,U),C,S)),a=c?a-r:a+r,U++;return s.toRegex===!0?r>1?CKe(I,s):foe(N,null,{wrap:!1,...s}):N},vKe=(t,e,r=1,s={})=>{if(!yB(t)&&t.length>1||!yB(e)&&e.length>1)return poe(t,e,s);let a=s.transform||(S=>String.fromCharCode(S)),n=`${t}`.charCodeAt(0),c=`${e}`.charCodeAt(0),f=n>c,p=Math.min(n,c),h=Math.max(n,c);if(s.toRegex&&r===1)return uoe(p,h,!1,s);let E=[],C=0;for(;f?n>=c:n<=c;)E.push(a(n,C)),n=f?n-r:n+r,C++;return s.toRegex===!0?foe(E,null,{wrap:!1,options:s}):E},Ak=(t,e,r,s={})=>{if(e==null&&s4(t))return[t];if(!s4(t)||!s4(e))return poe(t,e,s);if(typeof r=="function")return Ak(t,e,1,{transform:r});if(aoe(r))return Ak(t,e,0,r);let a={...s};return a.capture===!0&&(a.wrap=!0),r=r||a.step||1,yB(r)?yB(t)&&yB(e)?BKe(t,e,r,a):vKe(t,e,Math.max(Math.abs(r),1),a):r!=null&&!aoe(r)?wKe(r,a):Ak(t,e,1,r)};hoe.exports=Ak});var moe=_((XTt,doe)=>{"use strict";var SKe=a4(),goe=uk(),DKe=(t,e={})=>{let r=(s,a={})=>{let n=goe.isInvalidBrace(a),c=s.invalid===!0&&e.escapeInvalid===!0,f=n===!0||c===!0,p=e.escapeInvalid===!0?"\\":"",h="";if(s.isOpen===!0||s.isClose===!0)return p+s.value;if(s.type==="open")return f?p+s.value:"(";if(s.type==="close")return f?p+s.value:")";if(s.type==="comma")return s.prev.type==="comma"?"":f?s.value:"|";if(s.value)return s.value;if(s.nodes&&s.ranges>0){let E=goe.reduce(s.nodes),C=SKe(...E,{...e,wrap:!1,toRegex:!0});if(C.length!==0)return E.length>1&&C.length>1?`(${C})`:C}if(s.nodes)for(let E of s.nodes)h+=r(E,s);return h};return r(t)};doe.exports=DKe});var Ioe=_(($Tt,Eoe)=>{"use strict";var PKe=a4(),yoe=fk(),TE=uk(),qd=(t="",e="",r=!1)=>{let s=[];if(t=[].concat(t),e=[].concat(e),!e.length)return t;if(!t.length)return r?TE.flatten(e).map(a=>`{${a}}`):e;for(let a of t)if(Array.isArray(a))for(let n of a)s.push(qd(n,e,r));else for(let n of e)r===!0&&typeof n=="string"&&(n=`{${n}}`),s.push(Array.isArray(n)?qd(a,n,r):a+n);return TE.flatten(s)},bKe=(t,e={})=>{let r=e.rangeLimit===void 0?1e3:e.rangeLimit,s=(a,n={})=>{a.queue=[];let c=n,f=n.queue;for(;c.type!=="brace"&&c.type!=="root"&&c.parent;)c=c.parent,f=c.queue;if(a.invalid||a.dollar){f.push(qd(f.pop(),yoe(a,e)));return}if(a.type==="brace"&&a.invalid!==!0&&a.nodes.length===2){f.push(qd(f.pop(),["{}"]));return}if(a.nodes&&a.ranges>0){let C=TE.reduce(a.nodes);if(TE.exceedsLimit(...C,e.step,r))throw new RangeError("expanded array length exceeds range limit. Use options.rangeLimit to increase or disable the limit.");let S=PKe(...C,e);S.length===0&&(S=yoe(a,e)),f.push(qd(f.pop(),S)),a.nodes=[];return}let p=TE.encloseBrace(a),h=a.queue,E=a;for(;E.type!=="brace"&&E.type!=="root"&&E.parent;)E=E.parent,h=E.queue;for(let C=0;C{"use strict";Coe.exports={MAX_LENGTH:1024*64,CHAR_0:"0",CHAR_9:"9",CHAR_UPPERCASE_A:"A",CHAR_LOWERCASE_A:"a",CHAR_UPPERCASE_Z:"Z",CHAR_LOWERCASE_Z:"z",CHAR_LEFT_PARENTHESES:"(",CHAR_RIGHT_PARENTHESES:")",CHAR_ASTERISK:"*",CHAR_AMPERSAND:"&",CHAR_AT:"@",CHAR_BACKSLASH:"\\",CHAR_BACKTICK:"`",CHAR_CARRIAGE_RETURN:"\r",CHAR_CIRCUMFLEX_ACCENT:"^",CHAR_COLON:":",CHAR_COMMA:",",CHAR_DOLLAR:"$",CHAR_DOT:".",CHAR_DOUBLE_QUOTE:'"',CHAR_EQUAL:"=",CHAR_EXCLAMATION_MARK:"!",CHAR_FORM_FEED:"\f",CHAR_FORWARD_SLASH:"/",CHAR_HASH:"#",CHAR_HYPHEN_MINUS:"-",CHAR_LEFT_ANGLE_BRACKET:"<",CHAR_LEFT_CURLY_BRACE:"{",CHAR_LEFT_SQUARE_BRACKET:"[",CHAR_LINE_FEED:` `,CHAR_NO_BREAK_SPACE:"\xA0",CHAR_PERCENT:"%",CHAR_PLUS:"+",CHAR_QUESTION_MARK:"?",CHAR_RIGHT_ANGLE_BRACKET:">",CHAR_RIGHT_CURLY_BRACE:"}",CHAR_RIGHT_SQUARE_BRACKET:"]",CHAR_SEMICOLON:";",CHAR_SINGLE_QUOTE:"'",CHAR_SPACE:" ",CHAR_TAB:" ",CHAR_UNDERSCORE:"_",CHAR_VERTICAL_LINE:"|",CHAR_ZERO_WIDTH_NOBREAK_SPACE:"\uFEFF"}});var Poe=_((tFt,Doe)=>{"use strict";var xKe=fk(),{MAX_LENGTH:Boe,CHAR_BACKSLASH:l4,CHAR_BACKTICK:kKe,CHAR_COMMA:QKe,CHAR_DOT:RKe,CHAR_LEFT_PARENTHESES:TKe,CHAR_RIGHT_PARENTHESES:FKe,CHAR_LEFT_CURLY_BRACE:NKe,CHAR_RIGHT_CURLY_BRACE:OKe,CHAR_LEFT_SQUARE_BRACKET:voe,CHAR_RIGHT_SQUARE_BRACKET:Soe,CHAR_DOUBLE_QUOTE:LKe,CHAR_SINGLE_QUOTE:MKe,CHAR_NO_BREAK_SPACE:UKe,CHAR_ZERO_WIDTH_NOBREAK_SPACE:_Ke}=woe(),HKe=(t,e={})=>{if(typeof t!="string")throw new TypeError("Expected a string");let r=e||{},s=typeof r.maxLength=="number"?Math.min(Boe,r.maxLength):Boe;if(t.length>s)throw new SyntaxError(`Input length (${t.length}), exceeds max characters (${s})`);let a={type:"root",input:t,nodes:[]},n=[a],c=a,f=a,p=0,h=t.length,E=0,C=0,S,b={},I=()=>t[E++],T=N=>{if(N.type==="text"&&f.type==="dot"&&(f.type="text"),f&&f.type==="text"&&N.type==="text"){f.value+=N.value;return}return c.nodes.push(N),N.parent=c,N.prev=f,f=N,N};for(T({type:"bos"});E0){if(c.ranges>0){c.ranges=0;let N=c.nodes.shift();c.nodes=[N,{type:"text",value:xKe(c)}]}T({type:"comma",value:S}),c.commas++;continue}if(S===RKe&&C>0&&c.commas===0){let N=c.nodes;if(C===0||N.length===0){T({type:"text",value:S});continue}if(f.type==="dot"){if(c.range=[],f.value+=S,f.type="range",c.nodes.length!==3&&c.nodes.length!==5){c.invalid=!0,c.ranges=0,f.type="text";continue}c.ranges++,c.args=[];continue}if(f.type==="range"){N.pop();let U=N[N.length-1];U.value+=f.value+S,f=U,c.ranges--;continue}T({type:"dot",value:S});continue}T({type:"text",value:S})}do if(c=n.pop(),c.type!=="root"){c.nodes.forEach(W=>{W.nodes||(W.type==="open"&&(W.isOpen=!0),W.type==="close"&&(W.isClose=!0),W.nodes||(W.type="text"),W.invalid=!0)});let N=n[n.length-1],U=N.nodes.indexOf(c);N.nodes.splice(U,1,...c.nodes)}while(n.length>0);return T({type:"eos"}),a};Doe.exports=HKe});var koe=_((rFt,xoe)=>{"use strict";var boe=fk(),jKe=moe(),GKe=Ioe(),qKe=Poe(),jl=(t,e={})=>{let r=[];if(Array.isArray(t))for(let s of t){let a=jl.create(s,e);Array.isArray(a)?r.push(...a):r.push(a)}else r=[].concat(jl.create(t,e));return e&&e.expand===!0&&e.nodupes===!0&&(r=[...new Set(r)]),r};jl.parse=(t,e={})=>qKe(t,e);jl.stringify=(t,e={})=>boe(typeof t=="string"?jl.parse(t,e):t,e);jl.compile=(t,e={})=>(typeof t=="string"&&(t=jl.parse(t,e)),jKe(t,e));jl.expand=(t,e={})=>{typeof t=="string"&&(t=jl.parse(t,e));let r=GKe(t,e);return e.noempty===!0&&(r=r.filter(Boolean)),e.nodupes===!0&&(r=[...new Set(r)]),r};jl.create=(t,e={})=>t===""||t.length<3?[t]:e.expand!==!0?jl.compile(t,e):jl.expand(t,e);xoe.exports=jl});var EB=_((nFt,Noe)=>{"use strict";var WKe=Ie("path"),Vf="\\\\/",Qoe=`[^${Vf}]`,Dp="\\.",YKe="\\+",VKe="\\?",pk="\\/",JKe="(?=.)",Roe="[^/]",c4=`(?:${pk}|$)`,Toe=`(?:^|${pk})`,u4=`${Dp}{1,2}${c4}`,KKe=`(?!${Dp})`,zKe=`(?!${Toe}${u4})`,ZKe=`(?!${Dp}{0,1}${c4})`,XKe=`(?!${u4})`,$Ke=`[^.${pk}]`,eze=`${Roe}*?`,Foe={DOT_LITERAL:Dp,PLUS_LITERAL:YKe,QMARK_LITERAL:VKe,SLASH_LITERAL:pk,ONE_CHAR:JKe,QMARK:Roe,END_ANCHOR:c4,DOTS_SLASH:u4,NO_DOT:KKe,NO_DOTS:zKe,NO_DOT_SLASH:ZKe,NO_DOTS_SLASH:XKe,QMARK_NO_DOT:$Ke,STAR:eze,START_ANCHOR:Toe},tze={...Foe,SLASH_LITERAL:`[${Vf}]`,QMARK:Qoe,STAR:`${Qoe}*?`,DOTS_SLASH:`${Dp}{1,2}(?:[${Vf}]|$)`,NO_DOT:`(?!${Dp})`,NO_DOTS:`(?!(?:^|[${Vf}])${Dp}{1,2}(?:[${Vf}]|$))`,NO_DOT_SLASH:`(?!${Dp}{0,1}(?:[${Vf}]|$))`,NO_DOTS_SLASH:`(?!${Dp}{1,2}(?:[${Vf}]|$))`,QMARK_NO_DOT:`[^.${Vf}]`,START_ANCHOR:`(?:^|[${Vf}])`,END_ANCHOR:`(?:[${Vf}]|$)`},rze={alnum:"a-zA-Z0-9",alpha:"a-zA-Z",ascii:"\\x00-\\x7F",blank:" \\t",cntrl:"\\x00-\\x1F\\x7F",digit:"0-9",graph:"\\x21-\\x7E",lower:"a-z",print:"\\x20-\\x7E ",punct:"\\-!\"#$%&'()\\*+,./:;<=>?@[\\]^_`{|}~",space:" \\t\\r\\n\\v\\f",upper:"A-Z",word:"A-Za-z0-9_",xdigit:"A-Fa-f0-9"};Noe.exports={MAX_LENGTH:1024*64,POSIX_REGEX_SOURCE:rze,REGEX_BACKSLASH:/\\(?![*+?^${}(|)[\]])/g,REGEX_NON_SPECIAL_CHARS:/^[^@![\].,$*+?^{}()|\\/]+/,REGEX_SPECIAL_CHARS:/[-*+?.^${}(|)[\]]/,REGEX_SPECIAL_CHARS_BACKREF:/(\\?)((\W)(\3*))/g,REGEX_SPECIAL_CHARS_GLOBAL:/([-*+?.^${}(|)[\]])/g,REGEX_REMOVE_BACKSLASH:/(?:\[.*?[^\\]\]|\\(?=.))/g,REPLACEMENTS:{"***":"*","**/**":"**","**/**/**":"**"},CHAR_0:48,CHAR_9:57,CHAR_UPPERCASE_A:65,CHAR_LOWERCASE_A:97,CHAR_UPPERCASE_Z:90,CHAR_LOWERCASE_Z:122,CHAR_LEFT_PARENTHESES:40,CHAR_RIGHT_PARENTHESES:41,CHAR_ASTERISK:42,CHAR_AMPERSAND:38,CHAR_AT:64,CHAR_BACKWARD_SLASH:92,CHAR_CARRIAGE_RETURN:13,CHAR_CIRCUMFLEX_ACCENT:94,CHAR_COLON:58,CHAR_COMMA:44,CHAR_DOT:46,CHAR_DOUBLE_QUOTE:34,CHAR_EQUAL:61,CHAR_EXCLAMATION_MARK:33,CHAR_FORM_FEED:12,CHAR_FORWARD_SLASH:47,CHAR_GRAVE_ACCENT:96,CHAR_HASH:35,CHAR_HYPHEN_MINUS:45,CHAR_LEFT_ANGLE_BRACKET:60,CHAR_LEFT_CURLY_BRACE:123,CHAR_LEFT_SQUARE_BRACKET:91,CHAR_LINE_FEED:10,CHAR_NO_BREAK_SPACE:160,CHAR_PERCENT:37,CHAR_PLUS:43,CHAR_QUESTION_MARK:63,CHAR_RIGHT_ANGLE_BRACKET:62,CHAR_RIGHT_CURLY_BRACE:125,CHAR_RIGHT_SQUARE_BRACKET:93,CHAR_SEMICOLON:59,CHAR_SINGLE_QUOTE:39,CHAR_SPACE:32,CHAR_TAB:9,CHAR_UNDERSCORE:95,CHAR_VERTICAL_LINE:124,CHAR_ZERO_WIDTH_NOBREAK_SPACE:65279,SEP:WKe.sep,extglobChars(t){return{"!":{type:"negate",open:"(?:(?!(?:",close:`))${t.STAR})`},"?":{type:"qmark",open:"(?:",close:")?"},"+":{type:"plus",open:"(?:",close:")+"},"*":{type:"star",open:"(?:",close:")*"},"@":{type:"at",open:"(?:",close:")"}}},globChars(t){return t===!0?tze:Foe}}});var IB=_(ol=>{"use strict";var nze=Ie("path"),ize=process.platform==="win32",{REGEX_BACKSLASH:sze,REGEX_REMOVE_BACKSLASH:oze,REGEX_SPECIAL_CHARS:aze,REGEX_SPECIAL_CHARS_GLOBAL:lze}=EB();ol.isObject=t=>t!==null&&typeof t=="object"&&!Array.isArray(t);ol.hasRegexChars=t=>aze.test(t);ol.isRegexChar=t=>t.length===1&&ol.hasRegexChars(t);ol.escapeRegex=t=>t.replace(lze,"\\$1");ol.toPosixSlashes=t=>t.replace(sze,"/");ol.removeBackslashes=t=>t.replace(oze,e=>e==="\\"?"":e);ol.supportsLookbehinds=()=>{let t=process.version.slice(1).split(".").map(Number);return t.length===3&&t[0]>=9||t[0]===8&&t[1]>=10};ol.isWindows=t=>t&&typeof t.windows=="boolean"?t.windows:ize===!0||nze.sep==="\\";ol.escapeLast=(t,e,r)=>{let s=t.lastIndexOf(e,r);return s===-1?t:t[s-1]==="\\"?ol.escapeLast(t,e,s-1):`${t.slice(0,s)}\\${t.slice(s)}`};ol.removePrefix=(t,e={})=>{let r=t;return r.startsWith("./")&&(r=r.slice(2),e.prefix="./"),r};ol.wrapOutput=(t,e={},r={})=>{let s=r.contains?"":"^",a=r.contains?"":"$",n=`${s}(?:${t})${a}`;return e.negated===!0&&(n=`(?:^(?!${n}).*$)`),n}});var Goe=_((sFt,joe)=>{"use strict";var Ooe=IB(),{CHAR_ASTERISK:f4,CHAR_AT:cze,CHAR_BACKWARD_SLASH:CB,CHAR_COMMA:uze,CHAR_DOT:A4,CHAR_EXCLAMATION_MARK:p4,CHAR_FORWARD_SLASH:Hoe,CHAR_LEFT_CURLY_BRACE:h4,CHAR_LEFT_PARENTHESES:g4,CHAR_LEFT_SQUARE_BRACKET:fze,CHAR_PLUS:Aze,CHAR_QUESTION_MARK:Loe,CHAR_RIGHT_CURLY_BRACE:pze,CHAR_RIGHT_PARENTHESES:Moe,CHAR_RIGHT_SQUARE_BRACKET:hze}=EB(),Uoe=t=>t===Hoe||t===CB,_oe=t=>{t.isPrefix!==!0&&(t.depth=t.isGlobstar?1/0:1)},gze=(t,e)=>{let r=e||{},s=t.length-1,a=r.parts===!0||r.scanToEnd===!0,n=[],c=[],f=[],p=t,h=-1,E=0,C=0,S=!1,b=!1,I=!1,T=!1,N=!1,U=!1,W=!1,ee=!1,ie=!1,ue=!1,le=0,me,pe,Be={value:"",depth:0,isGlob:!1},Ce=()=>h>=s,g=()=>p.charCodeAt(h+1),we=()=>(me=pe,p.charCodeAt(++h));for(;h0&&(Ae=p.slice(0,E),p=p.slice(E),C-=E),ye&&I===!0&&C>0?(ye=p.slice(0,C),se=p.slice(C)):I===!0?(ye="",se=p):ye=p,ye&&ye!==""&&ye!=="/"&&ye!==p&&Uoe(ye.charCodeAt(ye.length-1))&&(ye=ye.slice(0,-1)),r.unescape===!0&&(se&&(se=Ooe.removeBackslashes(se)),ye&&W===!0&&(ye=Ooe.removeBackslashes(ye)));let X={prefix:Ae,input:t,start:E,base:ye,glob:se,isBrace:S,isBracket:b,isGlob:I,isExtglob:T,isGlobstar:N,negated:ee,negatedExtglob:ie};if(r.tokens===!0&&(X.maxDepth=0,Uoe(pe)||c.push(Be),X.tokens=c),r.parts===!0||r.tokens===!0){let De;for(let Te=0;Te{"use strict";var hk=EB(),Gl=IB(),{MAX_LENGTH:gk,POSIX_REGEX_SOURCE:dze,REGEX_NON_SPECIAL_CHARS:mze,REGEX_SPECIAL_CHARS_BACKREF:yze,REPLACEMENTS:qoe}=hk,Eze=(t,e)=>{if(typeof e.expandRange=="function")return e.expandRange(...t,e);t.sort();let r=`[${t.join("-")}]`;try{new RegExp(r)}catch{return t.map(a=>Gl.escapeRegex(a)).join("..")}return r},FE=(t,e)=>`Missing ${t}: "${e}" - use "\\\\${e}" to match literal characters`,d4=(t,e)=>{if(typeof t!="string")throw new TypeError("Expected a string");t=qoe[t]||t;let r={...e},s=typeof r.maxLength=="number"?Math.min(gk,r.maxLength):gk,a=t.length;if(a>s)throw new SyntaxError(`Input length: ${a}, exceeds maximum allowed length: ${s}`);let n={type:"bos",value:"",output:r.prepend||""},c=[n],f=r.capture?"":"?:",p=Gl.isWindows(e),h=hk.globChars(p),E=hk.extglobChars(h),{DOT_LITERAL:C,PLUS_LITERAL:S,SLASH_LITERAL:b,ONE_CHAR:I,DOTS_SLASH:T,NO_DOT:N,NO_DOT_SLASH:U,NO_DOTS_SLASH:W,QMARK:ee,QMARK_NO_DOT:ie,STAR:ue,START_ANCHOR:le}=h,me=x=>`(${f}(?:(?!${le}${x.dot?T:C}).)*?)`,pe=r.dot?"":N,Be=r.dot?ee:ie,Ce=r.bash===!0?me(r):ue;r.capture&&(Ce=`(${Ce})`),typeof r.noext=="boolean"&&(r.noextglob=r.noext);let g={input:t,index:-1,start:0,dot:r.dot===!0,consumed:"",output:"",prefix:"",backtrack:!1,negated:!1,brackets:0,braces:0,parens:0,quotes:0,globstar:!1,tokens:c};t=Gl.removePrefix(t,g),a=t.length;let we=[],ye=[],Ae=[],se=n,X,De=()=>g.index===a-1,Te=g.peek=(x=1)=>t[g.index+x],mt=g.advance=()=>t[++g.index]||"",j=()=>t.slice(g.index+1),rt=(x="",w=0)=>{g.consumed+=x,g.index+=w},Fe=x=>{g.output+=x.output!=null?x.output:x.value,rt(x.value)},Ne=()=>{let x=1;for(;Te()==="!"&&(Te(2)!=="("||Te(3)==="?");)mt(),g.start++,x++;return x%2===0?!1:(g.negated=!0,g.start++,!0)},be=x=>{g[x]++,Ae.push(x)},Ve=x=>{g[x]--,Ae.pop()},ke=x=>{if(se.type==="globstar"){let w=g.braces>0&&(x.type==="comma"||x.type==="brace"),P=x.extglob===!0||we.length&&(x.type==="pipe"||x.type==="paren");x.type!=="slash"&&x.type!=="paren"&&!w&&!P&&(g.output=g.output.slice(0,-se.output.length),se.type="star",se.value="*",se.output=Ce,g.output+=se.output)}if(we.length&&x.type!=="paren"&&(we[we.length-1].inner+=x.value),(x.value||x.output)&&Fe(x),se&&se.type==="text"&&x.type==="text"){se.value+=x.value,se.output=(se.output||"")+x.value;return}x.prev=se,c.push(x),se=x},it=(x,w)=>{let P={...E[w],conditions:1,inner:""};P.prev=se,P.parens=g.parens,P.output=g.output;let y=(r.capture?"(":"")+P.open;be("parens"),ke({type:x,value:w,output:g.output?"":I}),ke({type:"paren",extglob:!0,value:mt(),output:y}),we.push(P)},Ue=x=>{let w=x.close+(r.capture?")":""),P;if(x.type==="negate"){let y=Ce;if(x.inner&&x.inner.length>1&&x.inner.includes("/")&&(y=me(r)),(y!==Ce||De()||/^\)+$/.test(j()))&&(w=x.close=`)$))${y}`),x.inner.includes("*")&&(P=j())&&/^\.[^\\/.]+$/.test(P)){let F=d4(P,{...e,fastpaths:!1}).output;w=x.close=`)${F})${y})`}x.prev.type==="bos"&&(g.negatedExtglob=!0)}ke({type:"paren",extglob:!0,value:X,output:w}),Ve("parens")};if(r.fastpaths!==!1&&!/(^[*!]|[/()[\]{}"])/.test(t)){let x=!1,w=t.replace(yze,(P,y,F,z,Z,$)=>z==="\\"?(x=!0,P):z==="?"?y?y+z+(Z?ee.repeat(Z.length):""):$===0?Be+(Z?ee.repeat(Z.length):""):ee.repeat(F.length):z==="."?C.repeat(F.length):z==="*"?y?y+z+(Z?Ce:""):Ce:y?P:`\\${P}`);return x===!0&&(r.unescape===!0?w=w.replace(/\\/g,""):w=w.replace(/\\+/g,P=>P.length%2===0?"\\\\":P?"\\":"")),w===t&&r.contains===!0?(g.output=t,g):(g.output=Gl.wrapOutput(w,g,e),g)}for(;!De();){if(X=mt(),X==="\0")continue;if(X==="\\"){let P=Te();if(P==="/"&&r.bash!==!0||P==="."||P===";")continue;if(!P){X+="\\",ke({type:"text",value:X});continue}let y=/^\\+/.exec(j()),F=0;if(y&&y[0].length>2&&(F=y[0].length,g.index+=F,F%2!==0&&(X+="\\")),r.unescape===!0?X=mt():X+=mt(),g.brackets===0){ke({type:"text",value:X});continue}}if(g.brackets>0&&(X!=="]"||se.value==="["||se.value==="[^")){if(r.posix!==!1&&X===":"){let P=se.value.slice(1);if(P.includes("[")&&(se.posix=!0,P.includes(":"))){let y=se.value.lastIndexOf("["),F=se.value.slice(0,y),z=se.value.slice(y+2),Z=dze[z];if(Z){se.value=F+Z,g.backtrack=!0,mt(),!n.output&&c.indexOf(se)===1&&(n.output=I);continue}}}(X==="["&&Te()!==":"||X==="-"&&Te()==="]")&&(X=`\\${X}`),X==="]"&&(se.value==="["||se.value==="[^")&&(X=`\\${X}`),r.posix===!0&&X==="!"&&se.value==="["&&(X="^"),se.value+=X,Fe({value:X});continue}if(g.quotes===1&&X!=='"'){X=Gl.escapeRegex(X),se.value+=X,Fe({value:X});continue}if(X==='"'){g.quotes=g.quotes===1?0:1,r.keepQuotes===!0&&ke({type:"text",value:X});continue}if(X==="("){be("parens"),ke({type:"paren",value:X});continue}if(X===")"){if(g.parens===0&&r.strictBrackets===!0)throw new SyntaxError(FE("opening","("));let P=we[we.length-1];if(P&&g.parens===P.parens+1){Ue(we.pop());continue}ke({type:"paren",value:X,output:g.parens?")":"\\)"}),Ve("parens");continue}if(X==="["){if(r.nobracket===!0||!j().includes("]")){if(r.nobracket!==!0&&r.strictBrackets===!0)throw new SyntaxError(FE("closing","]"));X=`\\${X}`}else be("brackets");ke({type:"bracket",value:X});continue}if(X==="]"){if(r.nobracket===!0||se&&se.type==="bracket"&&se.value.length===1){ke({type:"text",value:X,output:`\\${X}`});continue}if(g.brackets===0){if(r.strictBrackets===!0)throw new SyntaxError(FE("opening","["));ke({type:"text",value:X,output:`\\${X}`});continue}Ve("brackets");let P=se.value.slice(1);if(se.posix!==!0&&P[0]==="^"&&!P.includes("/")&&(X=`/${X}`),se.value+=X,Fe({value:X}),r.literalBrackets===!1||Gl.hasRegexChars(P))continue;let y=Gl.escapeRegex(se.value);if(g.output=g.output.slice(0,-se.value.length),r.literalBrackets===!0){g.output+=y,se.value=y;continue}se.value=`(${f}${y}|${se.value})`,g.output+=se.value;continue}if(X==="{"&&r.nobrace!==!0){be("braces");let P={type:"brace",value:X,output:"(",outputIndex:g.output.length,tokensIndex:g.tokens.length};ye.push(P),ke(P);continue}if(X==="}"){let P=ye[ye.length-1];if(r.nobrace===!0||!P){ke({type:"text",value:X,output:X});continue}let y=")";if(P.dots===!0){let F=c.slice(),z=[];for(let Z=F.length-1;Z>=0&&(c.pop(),F[Z].type!=="brace");Z--)F[Z].type!=="dots"&&z.unshift(F[Z].value);y=Eze(z,r),g.backtrack=!0}if(P.comma!==!0&&P.dots!==!0){let F=g.output.slice(0,P.outputIndex),z=g.tokens.slice(P.tokensIndex);P.value=P.output="\\{",X=y="\\}",g.output=F;for(let Z of z)g.output+=Z.output||Z.value}ke({type:"brace",value:X,output:y}),Ve("braces"),ye.pop();continue}if(X==="|"){we.length>0&&we[we.length-1].conditions++,ke({type:"text",value:X});continue}if(X===","){let P=X,y=ye[ye.length-1];y&&Ae[Ae.length-1]==="braces"&&(y.comma=!0,P="|"),ke({type:"comma",value:X,output:P});continue}if(X==="/"){if(se.type==="dot"&&g.index===g.start+1){g.start=g.index+1,g.consumed="",g.output="",c.pop(),se=n;continue}ke({type:"slash",value:X,output:b});continue}if(X==="."){if(g.braces>0&&se.type==="dot"){se.value==="."&&(se.output=C);let P=ye[ye.length-1];se.type="dots",se.output+=X,se.value+=X,P.dots=!0;continue}if(g.braces+g.parens===0&&se.type!=="bos"&&se.type!=="slash"){ke({type:"text",value:X,output:C});continue}ke({type:"dot",value:X,output:C});continue}if(X==="?"){if(!(se&&se.value==="(")&&r.noextglob!==!0&&Te()==="("&&Te(2)!=="?"){it("qmark",X);continue}if(se&&se.type==="paren"){let y=Te(),F=X;if(y==="<"&&!Gl.supportsLookbehinds())throw new Error("Node.js v10 or higher is required for regex lookbehinds");(se.value==="("&&!/[!=<:]/.test(y)||y==="<"&&!/<([!=]|\w+>)/.test(j()))&&(F=`\\${X}`),ke({type:"text",value:X,output:F});continue}if(r.dot!==!0&&(se.type==="slash"||se.type==="bos")){ke({type:"qmark",value:X,output:ie});continue}ke({type:"qmark",value:X,output:ee});continue}if(X==="!"){if(r.noextglob!==!0&&Te()==="("&&(Te(2)!=="?"||!/[!=<:]/.test(Te(3)))){it("negate",X);continue}if(r.nonegate!==!0&&g.index===0){Ne();continue}}if(X==="+"){if(r.noextglob!==!0&&Te()==="("&&Te(2)!=="?"){it("plus",X);continue}if(se&&se.value==="("||r.regex===!1){ke({type:"plus",value:X,output:S});continue}if(se&&(se.type==="bracket"||se.type==="paren"||se.type==="brace")||g.parens>0){ke({type:"plus",value:X});continue}ke({type:"plus",value:S});continue}if(X==="@"){if(r.noextglob!==!0&&Te()==="("&&Te(2)!=="?"){ke({type:"at",extglob:!0,value:X,output:""});continue}ke({type:"text",value:X});continue}if(X!=="*"){(X==="$"||X==="^")&&(X=`\\${X}`);let P=mze.exec(j());P&&(X+=P[0],g.index+=P[0].length),ke({type:"text",value:X});continue}if(se&&(se.type==="globstar"||se.star===!0)){se.type="star",se.star=!0,se.value+=X,se.output=Ce,g.backtrack=!0,g.globstar=!0,rt(X);continue}let x=j();if(r.noextglob!==!0&&/^\([^?]/.test(x)){it("star",X);continue}if(se.type==="star"){if(r.noglobstar===!0){rt(X);continue}let P=se.prev,y=P.prev,F=P.type==="slash"||P.type==="bos",z=y&&(y.type==="star"||y.type==="globstar");if(r.bash===!0&&(!F||x[0]&&x[0]!=="/")){ke({type:"star",value:X,output:""});continue}let Z=g.braces>0&&(P.type==="comma"||P.type==="brace"),$=we.length&&(P.type==="pipe"||P.type==="paren");if(!F&&P.type!=="paren"&&!Z&&!$){ke({type:"star",value:X,output:""});continue}for(;x.slice(0,3)==="/**";){let oe=t[g.index+4];if(oe&&oe!=="/")break;x=x.slice(3),rt("/**",3)}if(P.type==="bos"&&De()){se.type="globstar",se.value+=X,se.output=me(r),g.output=se.output,g.globstar=!0,rt(X);continue}if(P.type==="slash"&&P.prev.type!=="bos"&&!z&&De()){g.output=g.output.slice(0,-(P.output+se.output).length),P.output=`(?:${P.output}`,se.type="globstar",se.output=me(r)+(r.strictSlashes?")":"|$)"),se.value+=X,g.globstar=!0,g.output+=P.output+se.output,rt(X);continue}if(P.type==="slash"&&P.prev.type!=="bos"&&x[0]==="/"){let oe=x[1]!==void 0?"|$":"";g.output=g.output.slice(0,-(P.output+se.output).length),P.output=`(?:${P.output}`,se.type="globstar",se.output=`${me(r)}${b}|${b}${oe})`,se.value+=X,g.output+=P.output+se.output,g.globstar=!0,rt(X+mt()),ke({type:"slash",value:"/",output:""});continue}if(P.type==="bos"&&x[0]==="/"){se.type="globstar",se.value+=X,se.output=`(?:^|${b}|${me(r)}${b})`,g.output=se.output,g.globstar=!0,rt(X+mt()),ke({type:"slash",value:"/",output:""});continue}g.output=g.output.slice(0,-se.output.length),se.type="globstar",se.output=me(r),se.value+=X,g.output+=se.output,g.globstar=!0,rt(X);continue}let w={type:"star",value:X,output:Ce};if(r.bash===!0){w.output=".*?",(se.type==="bos"||se.type==="slash")&&(w.output=pe+w.output),ke(w);continue}if(se&&(se.type==="bracket"||se.type==="paren")&&r.regex===!0){w.output=X,ke(w);continue}(g.index===g.start||se.type==="slash"||se.type==="dot")&&(se.type==="dot"?(g.output+=U,se.output+=U):r.dot===!0?(g.output+=W,se.output+=W):(g.output+=pe,se.output+=pe),Te()!=="*"&&(g.output+=I,se.output+=I)),ke(w)}for(;g.brackets>0;){if(r.strictBrackets===!0)throw new SyntaxError(FE("closing","]"));g.output=Gl.escapeLast(g.output,"["),Ve("brackets")}for(;g.parens>0;){if(r.strictBrackets===!0)throw new SyntaxError(FE("closing",")"));g.output=Gl.escapeLast(g.output,"("),Ve("parens")}for(;g.braces>0;){if(r.strictBrackets===!0)throw new SyntaxError(FE("closing","}"));g.output=Gl.escapeLast(g.output,"{"),Ve("braces")}if(r.strictSlashes!==!0&&(se.type==="star"||se.type==="bracket")&&ke({type:"maybe_slash",value:"",output:`${b}?`}),g.backtrack===!0){g.output="";for(let x of g.tokens)g.output+=x.output!=null?x.output:x.value,x.suffix&&(g.output+=x.suffix)}return g};d4.fastpaths=(t,e)=>{let r={...e},s=typeof r.maxLength=="number"?Math.min(gk,r.maxLength):gk,a=t.length;if(a>s)throw new SyntaxError(`Input length: ${a}, exceeds maximum allowed length: ${s}`);t=qoe[t]||t;let n=Gl.isWindows(e),{DOT_LITERAL:c,SLASH_LITERAL:f,ONE_CHAR:p,DOTS_SLASH:h,NO_DOT:E,NO_DOTS:C,NO_DOTS_SLASH:S,STAR:b,START_ANCHOR:I}=hk.globChars(n),T=r.dot?C:E,N=r.dot?S:E,U=r.capture?"":"?:",W={negated:!1,prefix:""},ee=r.bash===!0?".*?":b;r.capture&&(ee=`(${ee})`);let ie=pe=>pe.noglobstar===!0?ee:`(${U}(?:(?!${I}${pe.dot?h:c}).)*?)`,ue=pe=>{switch(pe){case"*":return`${T}${p}${ee}`;case".*":return`${c}${p}${ee}`;case"*.*":return`${T}${ee}${c}${p}${ee}`;case"*/*":return`${T}${ee}${f}${p}${N}${ee}`;case"**":return T+ie(r);case"**/*":return`(?:${T}${ie(r)}${f})?${N}${p}${ee}`;case"**/*.*":return`(?:${T}${ie(r)}${f})?${N}${ee}${c}${p}${ee}`;case"**/.*":return`(?:${T}${ie(r)}${f})?${c}${p}${ee}`;default:{let Be=/^(.*?)\.(\w+)$/.exec(pe);if(!Be)return;let Ce=ue(Be[1]);return Ce?Ce+c+Be[2]:void 0}}},le=Gl.removePrefix(t,W),me=ue(le);return me&&r.strictSlashes!==!0&&(me+=`${f}?`),me};Woe.exports=d4});var Joe=_((aFt,Voe)=>{"use strict";var Ize=Ie("path"),Cze=Goe(),m4=Yoe(),y4=IB(),wze=EB(),Bze=t=>t&&typeof t=="object"&&!Array.isArray(t),Zi=(t,e,r=!1)=>{if(Array.isArray(t)){let E=t.map(S=>Zi(S,e,r));return S=>{for(let b of E){let I=b(S);if(I)return I}return!1}}let s=Bze(t)&&t.tokens&&t.input;if(t===""||typeof t!="string"&&!s)throw new TypeError("Expected pattern to be a non-empty string");let a=e||{},n=y4.isWindows(e),c=s?Zi.compileRe(t,e):Zi.makeRe(t,e,!1,!0),f=c.state;delete c.state;let p=()=>!1;if(a.ignore){let E={...e,ignore:null,onMatch:null,onResult:null};p=Zi(a.ignore,E,r)}let h=(E,C=!1)=>{let{isMatch:S,match:b,output:I}=Zi.test(E,c,e,{glob:t,posix:n}),T={glob:t,state:f,regex:c,posix:n,input:E,output:I,match:b,isMatch:S};return typeof a.onResult=="function"&&a.onResult(T),S===!1?(T.isMatch=!1,C?T:!1):p(E)?(typeof a.onIgnore=="function"&&a.onIgnore(T),T.isMatch=!1,C?T:!1):(typeof a.onMatch=="function"&&a.onMatch(T),C?T:!0)};return r&&(h.state=f),h};Zi.test=(t,e,r,{glob:s,posix:a}={})=>{if(typeof t!="string")throw new TypeError("Expected input to be a string");if(t==="")return{isMatch:!1,output:""};let n=r||{},c=n.format||(a?y4.toPosixSlashes:null),f=t===s,p=f&&c?c(t):t;return f===!1&&(p=c?c(t):t,f=p===s),(f===!1||n.capture===!0)&&(n.matchBase===!0||n.basename===!0?f=Zi.matchBase(t,e,r,a):f=e.exec(p)),{isMatch:!!f,match:f,output:p}};Zi.matchBase=(t,e,r,s=y4.isWindows(r))=>(e instanceof RegExp?e:Zi.makeRe(e,r)).test(Ize.basename(t));Zi.isMatch=(t,e,r)=>Zi(e,r)(t);Zi.parse=(t,e)=>Array.isArray(t)?t.map(r=>Zi.parse(r,e)):m4(t,{...e,fastpaths:!1});Zi.scan=(t,e)=>Cze(t,e);Zi.compileRe=(t,e,r=!1,s=!1)=>{if(r===!0)return t.output;let a=e||{},n=a.contains?"":"^",c=a.contains?"":"$",f=`${n}(?:${t.output})${c}`;t&&t.negated===!0&&(f=`^(?!${f}).*$`);let p=Zi.toRegex(f,e);return s===!0&&(p.state=t),p};Zi.makeRe=(t,e={},r=!1,s=!1)=>{if(!t||typeof t!="string")throw new TypeError("Expected a non-empty string");let a={negated:!1,fastpaths:!0};return e.fastpaths!==!1&&(t[0]==="."||t[0]==="*")&&(a.output=m4.fastpaths(t,e)),a.output||(a=m4(t,e)),Zi.compileRe(a,e,r,s)};Zi.toRegex=(t,e)=>{try{let r=e||{};return new RegExp(t,r.flags||(r.nocase?"i":""))}catch(r){if(e&&e.debug===!0)throw r;return/$^/}};Zi.constants=wze;Voe.exports=Zi});var zoe=_((lFt,Koe)=>{"use strict";Koe.exports=Joe()});var Go=_((cFt,eae)=>{"use strict";var Xoe=Ie("util"),$oe=koe(),Jf=zoe(),E4=IB(),Zoe=t=>t===""||t==="./",xi=(t,e,r)=>{e=[].concat(e),t=[].concat(t);let s=new Set,a=new Set,n=new Set,c=0,f=E=>{n.add(E.output),r&&r.onResult&&r.onResult(E)};for(let E=0;E!s.has(E));if(r&&h.length===0){if(r.failglob===!0)throw new Error(`No matches found for "${e.join(", ")}"`);if(r.nonull===!0||r.nullglob===!0)return r.unescape?e.map(E=>E.replace(/\\/g,"")):e}return h};xi.match=xi;xi.matcher=(t,e)=>Jf(t,e);xi.isMatch=(t,e,r)=>Jf(e,r)(t);xi.any=xi.isMatch;xi.not=(t,e,r={})=>{e=[].concat(e).map(String);let s=new Set,a=[],n=f=>{r.onResult&&r.onResult(f),a.push(f.output)},c=new Set(xi(t,e,{...r,onResult:n}));for(let f of a)c.has(f)||s.add(f);return[...s]};xi.contains=(t,e,r)=>{if(typeof t!="string")throw new TypeError(`Expected a string: "${Xoe.inspect(t)}"`);if(Array.isArray(e))return e.some(s=>xi.contains(t,s,r));if(typeof e=="string"){if(Zoe(t)||Zoe(e))return!1;if(t.includes(e)||t.startsWith("./")&&t.slice(2).includes(e))return!0}return xi.isMatch(t,e,{...r,contains:!0})};xi.matchKeys=(t,e,r)=>{if(!E4.isObject(t))throw new TypeError("Expected the first argument to be an object");let s=xi(Object.keys(t),e,r),a={};for(let n of s)a[n]=t[n];return a};xi.some=(t,e,r)=>{let s=[].concat(t);for(let a of[].concat(e)){let n=Jf(String(a),r);if(s.some(c=>n(c)))return!0}return!1};xi.every=(t,e,r)=>{let s=[].concat(t);for(let a of[].concat(e)){let n=Jf(String(a),r);if(!s.every(c=>n(c)))return!1}return!0};xi.all=(t,e,r)=>{if(typeof t!="string")throw new TypeError(`Expected a string: "${Xoe.inspect(t)}"`);return[].concat(e).every(s=>Jf(s,r)(t))};xi.capture=(t,e,r)=>{let s=E4.isWindows(r),n=Jf.makeRe(String(t),{...r,capture:!0}).exec(s?E4.toPosixSlashes(e):e);if(n)return n.slice(1).map(c=>c===void 0?"":c)};xi.makeRe=(...t)=>Jf.makeRe(...t);xi.scan=(...t)=>Jf.scan(...t);xi.parse=(t,e)=>{let r=[];for(let s of[].concat(t||[]))for(let a of $oe(String(s),e))r.push(Jf.parse(a,e));return r};xi.braces=(t,e)=>{if(typeof t!="string")throw new TypeError("Expected a string");return e&&e.nobrace===!0||!/\{.*\}/.test(t)?[t]:$oe(t,e)};xi.braceExpand=(t,e)=>{if(typeof t!="string")throw new TypeError("Expected a string");return xi.braces(t,{...e,expand:!0})};eae.exports=xi});var rae=_((uFt,tae)=>{"use strict";tae.exports=({onlyFirst:t=!1}={})=>{let e=["[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]+)*|[a-zA-Z\\d]+(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?\\u0007)","(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-ntqry=><~]))"].join("|");return new RegExp(e,t?void 0:"g")}});var dk=_((fFt,nae)=>{"use strict";var vze=rae();nae.exports=t=>typeof t=="string"?t.replace(vze(),""):t});function iae(t){return Number.isSafeInteger(t)&&t>=0}var sae=Ze(()=>{});function oae(t){return t!=null&&typeof t!="function"&&iae(t.length)}var aae=Ze(()=>{sae()});function Pc(t){return t==="__proto__"}var wB=Ze(()=>{});function NE(t){switch(typeof t){case"number":case"symbol":return!1;case"string":return t.includes(".")||t.includes("[")||t.includes("]")}}var mk=Ze(()=>{});function OE(t){return typeof t=="string"||typeof t=="symbol"?t:Object.is(t?.valueOf?.(),-0)?"-0":String(t)}var yk=Ze(()=>{});function Mu(t){let e=[],r=t.length;if(r===0)return e;let s=0,a="",n="",c=!1;for(t.charCodeAt(0)===46&&(e.push(""),s++);s{});function va(t,e,r){if(t==null)return r;switch(typeof e){case"string":{if(Pc(e))return r;let s=t[e];return s===void 0?NE(e)?va(t,Mu(e),r):r:s}case"number":case"symbol":{typeof e=="number"&&(e=OE(e));let s=t[e];return s===void 0?r:s}default:{if(Array.isArray(e))return Sze(t,e,r);if(Object.is(e?.valueOf(),-0)?e="-0":e=String(e),Pc(e))return r;let s=t[e];return s===void 0?r:s}}}function Sze(t,e,r){if(e.length===0)return r;let s=t;for(let a=0;a{wB();mk();yk();LE()});function I4(t){return t!==null&&(typeof t=="object"||typeof t=="function")}var lae=Ze(()=>{});function ME(t){return t==null||typeof t!="object"&&typeof t!="function"}var Ik=Ze(()=>{});function Ck(t,e){return t===e||Number.isNaN(t)&&Number.isNaN(e)}var C4=Ze(()=>{});function Wd(t){return Object.getOwnPropertySymbols(t).filter(e=>Object.prototype.propertyIsEnumerable.call(t,e))}var wk=Ze(()=>{});function Yd(t){return t==null?t===void 0?"[object Undefined]":"[object Null]":Object.prototype.toString.call(t)}var Bk=Ze(()=>{});var vk,UE,_E,HE,Vd,Sk,Dk,Pk,bk,xk,cae,kk,jE,uae,Qk,Rk,Tk,Fk,Nk,fae,Ok,Lk,Mk,Aae,Uk,_k,Hk=Ze(()=>{vk="[object RegExp]",UE="[object String]",_E="[object Number]",HE="[object Boolean]",Vd="[object Arguments]",Sk="[object Symbol]",Dk="[object Date]",Pk="[object Map]",bk="[object Set]",xk="[object Array]",cae="[object Function]",kk="[object ArrayBuffer]",jE="[object Object]",uae="[object Error]",Qk="[object DataView]",Rk="[object Uint8Array]",Tk="[object Uint8ClampedArray]",Fk="[object Uint16Array]",Nk="[object Uint32Array]",fae="[object BigUint64Array]",Ok="[object Int8Array]",Lk="[object Int16Array]",Mk="[object Int32Array]",Aae="[object BigInt64Array]",Uk="[object Float32Array]",_k="[object Float64Array]"});function GE(t){return ArrayBuffer.isView(t)&&!(t instanceof DataView)}var jk=Ze(()=>{});function pae(t,e){return u0(t,void 0,t,new Map,e)}function u0(t,e,r,s=new Map,a=void 0){let n=a?.(t,e,r,s);if(n!=null)return n;if(ME(t))return t;if(s.has(t))return s.get(t);if(Array.isArray(t)){let c=new Array(t.length);s.set(t,c);for(let f=0;f{wk();Bk();Hk();Ik();jk()});function hae(t){return u0(t,void 0,t,new Map,void 0)}var gae=Ze(()=>{w4()});function dae(t,e){return pae(t,(r,s,a,n)=>{let c=e?.(r,s,a,n);if(c!=null)return c;if(typeof t=="object")switch(Object.prototype.toString.call(t)){case _E:case UE:case HE:{let f=new t.constructor(t?.valueOf());return c0(f,t),f}case Vd:{let f={};return c0(f,t),f.length=t.length,f[Symbol.iterator]=t[Symbol.iterator],f}default:return}})}var mae=Ze(()=>{w4();Hk()});function f0(t){return dae(t)}var B4=Ze(()=>{mae()});function Gk(t,e=Number.MAX_SAFE_INTEGER){switch(typeof t){case"number":return Number.isInteger(t)&&t>=0&&t{Pze=/^(?:0|[1-9]\d*)$/});function BB(t){return t!==null&&typeof t=="object"&&Yd(t)==="[object Arguments]"}var S4=Ze(()=>{Bk()});function vB(t,e){let r;if(Array.isArray(e)?r=e:typeof e=="string"&&NE(e)&&t?.[e]==null?r=Mu(e):r=[e],r.length===0)return!1;let s=t;for(let a=0;a{mk();v4();S4();LE()});function P4(t){return typeof t=="object"&&t!==null}var yae=Ze(()=>{});function Eae(t){return typeof t=="symbol"||t instanceof Symbol}var Iae=Ze(()=>{});function Cae(t,e){return Array.isArray(t)?!1:typeof t=="number"||typeof t=="boolean"||t==null||Eae(t)?!0:typeof t=="string"&&(xze.test(t)||!bze.test(t))||e!=null&&Object.hasOwn(e,t)}var bze,xze,wae=Ze(()=>{Iae();bze=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,xze=/^\w*$/});function A0(t,e){if(t==null)return!0;switch(typeof e){case"symbol":case"number":case"object":{if(Array.isArray(e))return Bae(t,e);if(typeof e=="number"?e=OE(e):typeof e=="object"&&(Object.is(e?.valueOf(),-0)?e="-0":e=String(e)),Pc(e))return!1;if(t?.[e]===void 0)return!0;try{return delete t[e],!0}catch{return!1}}case"string":{if(t?.[e]===void 0&&NE(e))return Bae(t,Mu(e));if(Pc(e))return!1;try{return delete t[e],!0}catch{return!1}}}}function Bae(t,e){let r=va(t,e.slice(0,-1),t),s=e[e.length-1];if(r?.[s]===void 0)return!0;if(Pc(s))return!1;try{return delete r[s],!0}catch{return!1}}var b4=Ze(()=>{Ek();wB();mk();yk();LE()});function vae(t){return t==null}var Sae=Ze(()=>{});var Dae,Pae=Ze(()=>{C4();Dae=(t,e,r)=>{let s=t[e];(!(Object.hasOwn(t,e)&&Ck(s,r))||r===void 0&&!(e in t))&&(t[e]=r)}});function bae(t,e,r,s){if(t==null&&!I4(t))return t;let a=Cae(e,t)?[e]:Array.isArray(e)?e:typeof e=="string"?Mu(e):[e],n=t;for(let c=0;c{wB();Pae();v4();wae();yk();lae();LE()});function Jd(t,e,r){return bae(t,e,()=>r,()=>{})}var x4=Ze(()=>{xae()});function kae(t,e=0,r={}){typeof r!="object"&&(r={});let s=null,a=null,n=null,c=0,f=null,p,{leading:h=!1,trailing:E=!0,maxWait:C}=r,S="maxWait"in r,b=S?Math.max(Number(C)||0,e):0,I=ue=>(s!==null&&(p=t.apply(a,s)),s=a=null,c=ue,p),T=ue=>(c=ue,f=setTimeout(ee,e),h&&s!==null?I(ue):p),N=ue=>(f=null,E&&s!==null?I(ue):p),U=ue=>{if(n===null)return!0;let le=ue-n,me=le>=e||le<0,pe=S&&ue-c>=b;return me||pe},W=ue=>{let le=n===null?0:ue-n,me=e-le,pe=b-(ue-c);return S?Math.min(me,pe):me},ee=()=>{let ue=Date.now();if(U(ue))return N(ue);f=setTimeout(ee,W(ue))},ie=function(...ue){let le=Date.now(),me=U(le);if(s=ue,a=this,n=le,me){if(f===null)return T(le);if(S)return clearTimeout(f),f=setTimeout(ee,e),I(le)}return f===null&&(f=setTimeout(ee,e)),p};return ie.cancel=()=>{f!==null&&clearTimeout(f),c=0,n=s=a=f=null},ie.flush=()=>f===null?p:N(Date.now()),ie}var Qae=Ze(()=>{});function k4(t,e=0,r={}){let{leading:s=!0,trailing:a=!0}=r;return kae(t,e,{leading:s,maxWait:e,trailing:a})}var Rae=Ze(()=>{Qae()});function Q4(t){if(t==null)return"";if(typeof t=="string")return t;if(Array.isArray(t))return t.map(Q4).join(",");let e=String(t);return e==="0"&&Object.is(Number(t),-0)?"-0":e}var Tae=Ze(()=>{});function R4(t){if(!t||typeof t!="object")return!1;let e=Object.getPrototypeOf(t);return e===null||e===Object.prototype||Object.getPrototypeOf(e)===null?Object.prototype.toString.call(t)==="[object Object]":!1}var Fae=Ze(()=>{});function Nae(t,e,r){return SB(t,e,void 0,void 0,void 0,void 0,r)}function SB(t,e,r,s,a,n,c){let f=c(t,e,r,s,a,n);if(f!==void 0)return f;if(typeof t==typeof e)switch(typeof t){case"bigint":case"string":case"boolean":case"symbol":case"undefined":return t===e;case"number":return t===e||Object.is(t,e);case"function":return t===e;case"object":return DB(t,e,n,c)}return DB(t,e,n,c)}function DB(t,e,r,s){if(Object.is(t,e))return!0;let a=Yd(t),n=Yd(e);if(a===Vd&&(a=jE),n===Vd&&(n=jE),a!==n)return!1;switch(a){case UE:return t.toString()===e.toString();case _E:{let p=t.valueOf(),h=e.valueOf();return Ck(p,h)}case HE:case Dk:case Sk:return Object.is(t.valueOf(),e.valueOf());case vk:return t.source===e.source&&t.flags===e.flags;case cae:return t===e}r=r??new Map;let c=r.get(t),f=r.get(e);if(c!=null&&f!=null)return c===e;r.set(t,e),r.set(e,t);try{switch(a){case Pk:{if(t.size!==e.size)return!1;for(let[p,h]of t.entries())if(!e.has(p)||!SB(h,e.get(p),p,t,e,r,s))return!1;return!0}case bk:{if(t.size!==e.size)return!1;let p=Array.from(t.values()),h=Array.from(e.values());for(let E=0;ESB(C,b,void 0,t,e,r,s));if(S===-1)return!1;h.splice(S,1)}return!0}case xk:case Rk:case Tk:case Fk:case Nk:case fae:case Ok:case Lk:case Mk:case Aae:case Uk:case _k:{if(typeof Buffer<"u"&&Buffer.isBuffer(t)!==Buffer.isBuffer(e)||t.length!==e.length)return!1;for(let p=0;p{Fae();wk();Bk();Hk();C4()});function Lae(){}var Mae=Ze(()=>{});function T4(t,e){return Nae(t,e,Lae)}var Uae=Ze(()=>{Oae();Mae()});function _ae(t){return GE(t)}var Hae=Ze(()=>{jk()});function jae(t){if(typeof t!="object"||t==null)return!1;if(Object.getPrototypeOf(t)===null)return!0;if(Object.prototype.toString.call(t)!=="[object Object]"){let r=t[Symbol.toStringTag];return r==null||!Object.getOwnPropertyDescriptor(t,Symbol.toStringTag)?.writable?!1:t.toString()===`[object ${r}]`}let e=t;for(;Object.getPrototypeOf(e)!==null;)e=Object.getPrototypeOf(e);return Object.getPrototypeOf(t)===e}var Gae=Ze(()=>{});function qae(t){if(ME(t))return t;if(Array.isArray(t)||GE(t)||t instanceof ArrayBuffer||typeof SharedArrayBuffer<"u"&&t instanceof SharedArrayBuffer)return t.slice(0);let e=Object.getPrototypeOf(t),r=e.constructor;if(t instanceof Date||t instanceof Map||t instanceof Set)return new r(t);if(t instanceof RegExp){let s=new r(t);return s.lastIndex=t.lastIndex,s}if(t instanceof DataView)return new r(t.buffer.slice(0));if(t instanceof Error){let s=new r(t.message);return s.stack=t.stack,s.name=t.name,s.cause=t.cause,s}if(typeof File<"u"&&t instanceof File)return new r([t],t.name,{type:t.type,lastModified:t.lastModified});if(typeof t=="object"){let s=Object.create(e);return Object.assign(s,t)}return t}var Wae=Ze(()=>{Ik();jk()});function F4(t,...e){let r=e.slice(0,-1),s=e[e.length-1],a=t;for(let n=0;n{B4();wB();Wae();Ik();wk();S4();yae();Gae();Hae()});function N4(t,...e){if(t==null)return{};let r=hae(t);for(let s=0;s{b4();gae()});function Kd(t,...e){if(vae(t))return{};let r={};for(let s=0;s{Ek();D4();x4();aae();Sae()});function Kae(t){return t.charAt(0).toUpperCase()+t.slice(1).toLowerCase()}var zae=Ze(()=>{});function PB(t){return Kae(Q4(t))}var Zae=Ze(()=>{zae();Tae()});var ql=Ze(()=>{Rae();Uae();B4();Ek();D4();Yae();Vae();Jae();x4();b4();Zae();LE()});var je={};Vt(je,{AsyncActions:()=>M4,BufferStream:()=>L4,CachingStrategy:()=>ale,DefaultStream:()=>U4,allSettledSafe:()=>Uu,assertNever:()=>H4,bufferStream:()=>WE,buildIgnorePattern:()=>Oze,convertMapsToIndexableObjects:()=>Yk,dynamicRequire:()=>bp,escapeRegExp:()=>Qze,getArrayWithDefault:()=>xB,getFactoryWithDefault:()=>Yl,getMapWithDefault:()=>j4,getSetWithDefault:()=>Pp,groupBy:()=>Uze,isIndexableObject:()=>O4,isPathLike:()=>Lze,isTaggedYarnVersion:()=>kze,makeDeferred:()=>ile,mapAndFilter:()=>Wl,mapAndFind:()=>p0,mergeIntoTarget:()=>cle,overrideType:()=>Rze,parseBoolean:()=>kB,parseInt:()=>YE,parseOptionalBoolean:()=>lle,plural:()=>Wk,prettifyAsyncErrors:()=>qE,prettifySyncErrors:()=>G4,releaseAfterUseAsync:()=>Fze,replaceEnvVariables:()=>Vk,sortMap:()=>qs,toMerged:()=>Mze,tryParseOptionalBoolean:()=>q4,validateEnum:()=>Tze});function kze(t){return!!(tle.default.valid(t)&&t.match(/^[^-]+(-rc\.[0-9]+)?$/))}function Wk(t,{one:e,more:r,zero:s=r}){return t===0?s:t===1?e:r}function Qze(t){return t.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function Rze(t){}function H4(t){throw new Error(`Assertion failed: Unexpected object '${t}'`)}function Tze(t,e){let r=Object.values(t);if(!r.includes(e))throw new nt(`Invalid value for enumeration: ${JSON.stringify(e)} (expected one of ${r.map(s=>JSON.stringify(s)).join(", ")})`);return e}function Wl(t,e){let r=[];for(let s of t){let a=e(s);a!==rle&&r.push(a)}return r}function p0(t,e){for(let r of t){let s=e(r);if(s!==nle)return s}}function O4(t){return typeof t=="object"&&t!==null}async function Uu(t){let e=await Promise.allSettled(t),r=[];for(let s of e){if(s.status==="rejected")throw s.reason;r.push(s.value)}return r}function Yk(t){if(t instanceof Map&&(t=Object.fromEntries(t)),O4(t))for(let e of Object.keys(t)){let r=t[e];O4(r)&&(t[e]=Yk(r))}return t}function Yl(t,e,r){let s=t.get(e);return typeof s>"u"&&t.set(e,s=r()),s}function xB(t,e){let r=t.get(e);return typeof r>"u"&&t.set(e,r=[]),r}function Pp(t,e){let r=t.get(e);return typeof r>"u"&&t.set(e,r=new Set),r}function j4(t,e){let r=t.get(e);return typeof r>"u"&&t.set(e,r=new Map),r}async function Fze(t,e){if(e==null)return await t();try{return await t()}finally{await e()}}async function qE(t,e){try{return await t()}catch(r){throw r.message=e(r.message),r}}function G4(t,e){try{return t()}catch(r){throw r.message=e(r.message),r}}async function WE(t){return await new Promise((e,r)=>{let s=[];t.on("error",a=>{r(a)}),t.on("data",a=>{s.push(a)}),t.on("end",()=>{e(Buffer.concat(s))})})}function ile(){let t,e;return{promise:new Promise((s,a)=>{t=s,e=a}),resolve:t,reject:e}}function sle(t){return bB(fe.fromPortablePath(t))}function ole(path){let physicalPath=fe.fromPortablePath(path),currentCacheEntry=bB.cache[physicalPath];delete bB.cache[physicalPath];let result;try{result=sle(physicalPath);let freshCacheEntry=bB.cache[physicalPath],dynamicModule=eval("module"),freshCacheIndex=dynamicModule.children.indexOf(freshCacheEntry);freshCacheIndex!==-1&&dynamicModule.children.splice(freshCacheIndex,1)}finally{bB.cache[physicalPath]=currentCacheEntry}return result}function Nze(t){let e=Xae.get(t),r=ce.statSync(t);if(e?.mtime===r.mtimeMs)return e.instance;let s=ole(t);return Xae.set(t,{mtime:r.mtimeMs,instance:s}),s}function bp(t,{cachingStrategy:e=2}={}){switch(e){case 0:return ole(t);case 1:return Nze(t);case 2:return sle(t);default:throw new Error("Unsupported caching strategy")}}function qs(t,e){let r=Array.from(t);Array.isArray(e)||(e=[e]);let s=[];for(let n of e)s.push(r.map(c=>n(c)));let a=r.map((n,c)=>c);return a.sort((n,c)=>{for(let f of s){let p=f[n]f[c]?1:0;if(p!==0)return p}return 0}),a.map(n=>r[n])}function Oze(t){return t.length===0?null:t.map(e=>`(${$ae.default.makeRe(e,{windows:!1,dot:!0}).source})`).join("|")}function Vk(t,{env:e}){let r=/\${(?[\d\w_]+)(?:)?(?:-(?[^}]*))?}/g;return t.replace(r,(...s)=>{let{variableName:a,colon:n,fallback:c}=s[s.length-1],f=Object.hasOwn(e,a),p=e[a];if(p||f&&!n)return p;if(c!=null)return c;throw new nt(`Environment variable not found (${a})`)})}function kB(t){switch(t){case"true":case"1":case 1:case!0:return!0;case"false":case"0":case 0:case!1:return!1;default:throw new Error(`Couldn't parse "${t}" as a boolean`)}}function lle(t){return typeof t>"u"?t:kB(t)}function q4(t){try{return lle(t)}catch{return null}}function Lze(t){return!!(fe.isAbsolute(t)||t.match(/^(\.{1,2}|~)\//))}function cle(t,...e){let r=c=>({value:c}),s=r(t),a=e.map(c=>r(c)),{value:n}=F4(s,...a,(c,f)=>{if(Array.isArray(c)&&Array.isArray(f)){for(let p of f)c.find(h=>T4(h,p))||c.push(p);return c}});return n}function Mze(...t){return cle({},...t)}function Uze(t,e){let r=Object.create(null);for(let s of t){let a=s[e];r[a]??=[],r[a].push(s)}return r}function YE(t){return typeof t=="string"?Number.parseInt(t,10):t}var $ae,ele,tle,_4,rle,nle,L4,M4,U4,bB,Xae,ale,bc=Ze(()=>{Dt();Yt();ql();$ae=ut(Go()),ele=ut(Ld()),tle=ut(Ai()),_4=Ie("stream");rle=Symbol();Wl.skip=rle;nle=Symbol();p0.skip=nle;L4=class extends _4.Transform{constructor(){super(...arguments);this.chunks=[]}_transform(r,s,a){if(s!=="buffer"||!Buffer.isBuffer(r))throw new Error("Assertion failed: BufferStream only accept buffers");this.chunks.push(r),a(null,null)}_flush(r){r(null,Buffer.concat(this.chunks))}};M4=class{constructor(e){this.deferred=new Map;this.promises=new Map;this.limit=(0,ele.default)(e)}set(e,r){let s=this.deferred.get(e);typeof s>"u"&&this.deferred.set(e,s=ile());let a=this.limit(()=>r());return this.promises.set(e,a),a.then(()=>{this.promises.get(e)===a&&s.resolve()},n=>{this.promises.get(e)===a&&s.reject(n)}),s.promise}reduce(e,r){let s=this.promises.get(e)??Promise.resolve();this.set(e,()=>r(s))}async wait(){await Promise.all(this.promises.values())}},U4=class extends _4.Transform{constructor(r=Buffer.alloc(0)){super();this.active=!0;this.ifEmpty=r}_transform(r,s,a){if(s!=="buffer"||!Buffer.isBuffer(r))throw new Error("Assertion failed: DefaultStream only accept buffers");this.active=!1,a(null,r)}_flush(r){this.active&&this.ifEmpty.length>0?r(null,this.ifEmpty):r(null)}},bB=eval("require");Xae=new Map;ale=(s=>(s[s.NoCache=0]="NoCache",s[s.FsTime=1]="FsTime",s[s.Node=2]="Node",s))(ale||{})});var VE,W4,Y4,ule=Ze(()=>{VE=(r=>(r.HARD="HARD",r.SOFT="SOFT",r))(VE||{}),W4=(s=>(s.Dependency="Dependency",s.PeerDependency="PeerDependency",s.PeerDependencyMeta="PeerDependencyMeta",s))(W4||{}),Y4=(s=>(s.Inactive="inactive",s.Redundant="redundant",s.Active="active",s))(Y4||{})});var he={};Vt(he,{LogLevel:()=>$k,Style:()=>zk,Type:()=>ht,addLogFilterSupport:()=>TB,applyColor:()=>ri,applyHyperlink:()=>KE,applyStyle:()=>zd,json:()=>Zd,jsonOrPretty:()=>jze,mark:()=>Z4,pretty:()=>Ht,prettyField:()=>Kf,prettyList:()=>z4,prettyTruncatedLocatorList:()=>Xk,stripAnsi:()=>JE.default,supportsColor:()=>Zk,supportsHyperlinks:()=>K4,tuple:()=>_u});function fle(t){let e=["KiB","MiB","GiB","TiB"],r=e.length;for(;r>1&&t<1024**r;)r-=1;let s=1024**r;return`${Math.floor(t*100/s)/100} ${e[r-1]}`}function Jk(t,e){if(Array.isArray(e))return e.length===0?ri(t,"[]",ht.CODE):ri(t,"[ ",ht.CODE)+e.map(r=>Jk(t,r)).join(", ")+ri(t," ]",ht.CODE);if(typeof e=="string")return ri(t,JSON.stringify(e),ht.STRING);if(typeof e=="number")return ri(t,JSON.stringify(e),ht.NUMBER);if(typeof e=="boolean")return ri(t,JSON.stringify(e),ht.BOOLEAN);if(e===null)return ri(t,"null",ht.NULL);if(typeof e=="object"&&Object.getPrototypeOf(e)===Object.prototype){let r=Object.entries(e);return r.length===0?ri(t,"{}",ht.CODE):ri(t,"{ ",ht.CODE)+r.map(([s,a])=>`${Jk(t,s)}: ${Jk(t,a)}`).join(", ")+ri(t," }",ht.CODE)}if(typeof e>"u")return ri(t,"undefined",ht.NULL);throw new Error("Assertion failed: The value doesn't seem to be a valid JSON object")}function _u(t,e){return[e,t]}function zd(t,e,r){return t.get("enableColors")&&r&2&&(e=RB.default.bold(e)),e}function ri(t,e,r){if(!t.get("enableColors"))return e;let s=_ze.get(r);if(s===null)return e;let a=typeof s>"u"?r:J4.level>=3?s[0]:s[1],n=typeof a=="number"?V4.ansi256(a):a.startsWith("#")?V4.hex(a):V4[a];if(typeof n!="function")throw new Error(`Invalid format type ${a}`);return n(e)}function KE(t,e,r){return t.get("enableHyperlinks")?Hze?`\x1B]8;;${r}\x1B\\${e}\x1B]8;;\x1B\\`:`\x1B]8;;${r}\x07${e}\x1B]8;;\x07`:e}function Ht(t,e,r){if(e===null)return ri(t,"null",ht.NULL);if(Object.hasOwn(Kk,r))return Kk[r].pretty(t,e);if(typeof e!="string")throw new Error(`Assertion failed: Expected the value to be a string, got ${typeof e}`);return ri(t,e,r)}function z4(t,e,r,{separator:s=", "}={}){return[...e].map(a=>Ht(t,a,r)).join(s)}function Zd(t,e){if(t===null)return null;if(Object.hasOwn(Kk,e))return Kk[e].json(t);if(typeof t!="string")throw new Error(`Assertion failed: Expected the value to be a string, got ${typeof t}`);return t}function jze(t,e,[r,s]){return t?Zd(r,s):Ht(e,r,s)}function Z4(t){return{Check:ri(t,"\u2713","green"),Cross:ri(t,"\u2718","red"),Question:ri(t,"?","cyan")}}function Kf(t,{label:e,value:[r,s]}){return`${Ht(t,e,ht.CODE)}: ${Ht(t,r,s)}`}function Xk(t,e,r){let s=[],a=[...e],n=r;for(;a.length>0;){let h=a[0],E=`${Yr(t,h)}, `,C=X4(h).length+2;if(s.length>0&&nh).join("").slice(0,-2);let c="X".repeat(a.length.toString().length),f=`and ${c} more.`,p=a.length;for(;s.length>1&&nh).join(""),f.replace(c,Ht(t,p,ht.NUMBER))].join("")}function TB(t,{configuration:e}){let r=e.get("logFilters"),s=new Map,a=new Map,n=[];for(let C of r){let S=C.get("level");if(typeof S>"u")continue;let b=C.get("code");typeof b<"u"&&s.set(b,S);let I=C.get("text");typeof I<"u"&&a.set(I,S);let T=C.get("pattern");typeof T<"u"&&n.push([Ale.default.matcher(T,{contains:!0}),S])}n.reverse();let c=(C,S,b)=>{if(C===null||C===0)return b;let I=a.size>0||n.length>0?(0,JE.default)(S):S;if(a.size>0){let T=a.get(I);if(typeof T<"u")return T??b}if(n.length>0){for(let[T,N]of n)if(T(I))return N??b}if(s.size>0){let T=s.get(Yf(C));if(typeof T<"u")return T??b}return b},f=t.reportInfo,p=t.reportWarning,h=t.reportError,E=function(C,S,b,I){switch(c(S,b,I)){case"info":f.call(C,S,b);break;case"warning":p.call(C,S??0,b);break;case"error":h.call(C,S??0,b);break}};t.reportInfo=function(...C){return E(this,...C,"info")},t.reportWarning=function(...C){return E(this,...C,"warning")},t.reportError=function(...C){return E(this,...C,"error")}}var RB,QB,Ale,JE,ht,zk,J4,Zk,K4,V4,_ze,qo,Kk,Hze,$k,xc=Ze(()=>{Dt();RB=ut(RE()),QB=ut(Fd());Yt();Ale=ut(Go()),JE=ut(dk());Gx();Wo();ht={NO_HINT:"NO_HINT",ID:"ID",NULL:"NULL",SCOPE:"SCOPE",NAME:"NAME",RANGE:"RANGE",REFERENCE:"REFERENCE",NUMBER:"NUMBER",STRING:"STRING",BOOLEAN:"BOOLEAN",PATH:"PATH",URL:"URL",ADDED:"ADDED",REMOVED:"REMOVED",CODE:"CODE",INSPECT:"INSPECT",DURATION:"DURATION",SIZE:"SIZE",SIZE_DIFF:"SIZE_DIFF",IDENT:"IDENT",DESCRIPTOR:"DESCRIPTOR",LOCATOR:"LOCATOR",RESOLUTION:"RESOLUTION",DEPENDENT:"DEPENDENT",PACKAGE_EXTENSION:"PACKAGE_EXTENSION",SETTING:"SETTING",MARKDOWN:"MARKDOWN",MARKDOWN_INLINE:"MARKDOWN_INLINE"},zk=(e=>(e[e.BOLD=2]="BOLD",e))(zk||{}),J4=QB.default.GITHUB_ACTIONS?{level:2}:RB.default.supportsColor?{level:RB.default.supportsColor.level}:{level:0},Zk=J4.level!==0,K4=Zk&&!QB.default.GITHUB_ACTIONS&&!QB.default.CIRCLE&&!QB.default.GITLAB,V4=new RB.default.Instance(J4),_ze=new Map([[ht.NO_HINT,null],[ht.NULL,["#a853b5",129]],[ht.SCOPE,["#d75f00",166]],[ht.NAME,["#d7875f",173]],[ht.RANGE,["#00afaf",37]],[ht.REFERENCE,["#87afff",111]],[ht.NUMBER,["#ffd700",220]],[ht.STRING,["#b4bd68",32]],[ht.BOOLEAN,["#faa023",209]],[ht.PATH,["#d75fd7",170]],[ht.URL,["#d75fd7",170]],[ht.ADDED,["#5faf00",70]],[ht.REMOVED,["#ff3131",160]],[ht.CODE,["#87afff",111]],[ht.SIZE,["#ffd700",220]]]),qo=t=>t;Kk={[ht.ID]:qo({pretty:(t,e)=>typeof e=="number"?ri(t,`${e}`,ht.NUMBER):ri(t,e,ht.CODE),json:t=>t}),[ht.INSPECT]:qo({pretty:(t,e)=>Jk(t,e),json:t=>t}),[ht.NUMBER]:qo({pretty:(t,e)=>ri(t,`${e}`,ht.NUMBER),json:t=>t}),[ht.IDENT]:qo({pretty:(t,e)=>Xi(t,e),json:t=>un(t)}),[ht.LOCATOR]:qo({pretty:(t,e)=>Yr(t,e),json:t=>ll(t)}),[ht.DESCRIPTOR]:qo({pretty:(t,e)=>ni(t,e),json:t=>al(t)}),[ht.RESOLUTION]:qo({pretty:(t,{descriptor:e,locator:r})=>FB(t,e,r),json:({descriptor:t,locator:e})=>({descriptor:al(t),locator:e!==null?ll(e):null})}),[ht.DEPENDENT]:qo({pretty:(t,{locator:e,descriptor:r})=>$4(t,e,r),json:({locator:t,descriptor:e})=>({locator:ll(t),descriptor:al(e)})}),[ht.PACKAGE_EXTENSION]:qo({pretty:(t,e)=>{switch(e.type){case"Dependency":return`${Xi(t,e.parentDescriptor)} \u27A4 ${ri(t,"dependencies",ht.CODE)} \u27A4 ${Xi(t,e.descriptor)}`;case"PeerDependency":return`${Xi(t,e.parentDescriptor)} \u27A4 ${ri(t,"peerDependencies",ht.CODE)} \u27A4 ${Xi(t,e.descriptor)}`;case"PeerDependencyMeta":return`${Xi(t,e.parentDescriptor)} \u27A4 ${ri(t,"peerDependenciesMeta",ht.CODE)} \u27A4 ${Xi(t,Sa(e.selector))} \u27A4 ${ri(t,e.key,ht.CODE)}`;default:throw new Error(`Assertion failed: Unsupported package extension type: ${e.type}`)}},json:t=>{switch(t.type){case"Dependency":return`${un(t.parentDescriptor)} > ${un(t.descriptor)}`;case"PeerDependency":return`${un(t.parentDescriptor)} >> ${un(t.descriptor)}`;case"PeerDependencyMeta":return`${un(t.parentDescriptor)} >> ${t.selector} / ${t.key}`;default:throw new Error(`Assertion failed: Unsupported package extension type: ${t.type}`)}}}),[ht.SETTING]:qo({pretty:(t,e)=>(t.get(e),KE(t,ri(t,e,ht.CODE),`https://yarnpkg.com/configuration/yarnrc#${e}`)),json:t=>t}),[ht.DURATION]:qo({pretty:(t,e)=>{if(e>1e3*60){let r=Math.floor(e/1e3/60),s=Math.ceil((e-r*60*1e3)/1e3);return s===0?`${r}m`:`${r}m ${s}s`}else{let r=Math.floor(e/1e3),s=e-r*1e3;return s===0?`${r}s`:`${r}s ${s}ms`}},json:t=>t}),[ht.SIZE]:qo({pretty:(t,e)=>ri(t,fle(e),ht.NUMBER),json:t=>t}),[ht.SIZE_DIFF]:qo({pretty:(t,e)=>{let r=e>=0?"+":"-",s=r==="+"?ht.REMOVED:ht.ADDED;return ri(t,`${r} ${fle(Math.max(Math.abs(e),1))}`,s)},json:t=>t}),[ht.PATH]:qo({pretty:(t,e)=>ri(t,fe.fromPortablePath(e),ht.PATH),json:t=>fe.fromPortablePath(t)}),[ht.MARKDOWN]:qo({pretty:(t,{text:e,format:r,paragraphs:s})=>Ho(e,{format:r,paragraphs:s}),json:({text:t})=>t}),[ht.MARKDOWN_INLINE]:qo({pretty:(t,e)=>(e=e.replace(/(`+)((?:.|[\n])*?)\1/g,(r,s,a)=>Ht(t,s+a+s,ht.CODE)),e=e.replace(/(\*\*)((?:.|[\n])*?)\1/g,(r,s,a)=>zd(t,a,2)),e),json:t=>t})};Hze=!!process.env.KONSOLE_VERSION;$k=(a=>(a.Error="error",a.Warning="warning",a.Info="info",a.Discard="discard",a))($k||{})});var ple=_(zE=>{"use strict";Object.defineProperty(zE,"__esModule",{value:!0});zE.splitWhen=zE.flatten=void 0;function Gze(t){return t.reduce((e,r)=>[].concat(e,r),[])}zE.flatten=Gze;function qze(t,e){let r=[[]],s=0;for(let a of t)e(a)?(s++,r[s]=[]):r[s].push(a);return r}zE.splitWhen=qze});var hle=_(eQ=>{"use strict";Object.defineProperty(eQ,"__esModule",{value:!0});eQ.isEnoentCodeError=void 0;function Wze(t){return t.code==="ENOENT"}eQ.isEnoentCodeError=Wze});var gle=_(tQ=>{"use strict";Object.defineProperty(tQ,"__esModule",{value:!0});tQ.createDirentFromStats=void 0;var e3=class{constructor(e,r){this.name=e,this.isBlockDevice=r.isBlockDevice.bind(r),this.isCharacterDevice=r.isCharacterDevice.bind(r),this.isDirectory=r.isDirectory.bind(r),this.isFIFO=r.isFIFO.bind(r),this.isFile=r.isFile.bind(r),this.isSocket=r.isSocket.bind(r),this.isSymbolicLink=r.isSymbolicLink.bind(r)}};function Yze(t,e){return new e3(t,e)}tQ.createDirentFromStats=Yze});var Ele=_(ls=>{"use strict";Object.defineProperty(ls,"__esModule",{value:!0});ls.convertPosixPathToPattern=ls.convertWindowsPathToPattern=ls.convertPathToPattern=ls.escapePosixPath=ls.escapeWindowsPath=ls.escape=ls.removeLeadingDotSegment=ls.makeAbsolute=ls.unixify=void 0;var Vze=Ie("os"),Jze=Ie("path"),dle=Vze.platform()==="win32",Kze=2,zze=/(\\?)([()*?[\]{|}]|^!|[!+@](?=\()|\\(?![!()*+?@[\]{|}]))/g,Zze=/(\\?)([()[\]{}]|^!|[!+@](?=\())/g,Xze=/^\\\\([.?])/,$ze=/\\(?![!()+@[\]{}])/g;function eZe(t){return t.replace(/\\/g,"/")}ls.unixify=eZe;function tZe(t,e){return Jze.resolve(t,e)}ls.makeAbsolute=tZe;function rZe(t){if(t.charAt(0)==="."){let e=t.charAt(1);if(e==="/"||e==="\\")return t.slice(Kze)}return t}ls.removeLeadingDotSegment=rZe;ls.escape=dle?t3:r3;function t3(t){return t.replace(Zze,"\\$2")}ls.escapeWindowsPath=t3;function r3(t){return t.replace(zze,"\\$2")}ls.escapePosixPath=r3;ls.convertPathToPattern=dle?mle:yle;function mle(t){return t3(t).replace(Xze,"//$1").replace($ze,"/")}ls.convertWindowsPathToPattern=mle;function yle(t){return r3(t)}ls.convertPosixPathToPattern=yle});var Cle=_((UOt,Ile)=>{Ile.exports=function(e){if(typeof e!="string"||e==="")return!1;for(var r;r=/(\\).|([@?!+*]\(.*\))/g.exec(e);){if(r[2])return!0;e=e.slice(r.index+r[0].length)}return!1}});var vle=_((_Ot,Ble)=>{var nZe=Cle(),wle={"{":"}","(":")","[":"]"},iZe=function(t){if(t[0]==="!")return!0;for(var e=0,r=-2,s=-2,a=-2,n=-2,c=-2;ee&&(c===-1||c>s||(c=t.indexOf("\\",e),c===-1||c>s)))||a!==-1&&t[e]==="{"&&t[e+1]!=="}"&&(a=t.indexOf("}",e),a>e&&(c=t.indexOf("\\",e),c===-1||c>a))||n!==-1&&t[e]==="("&&t[e+1]==="?"&&/[:!=]/.test(t[e+2])&&t[e+3]!==")"&&(n=t.indexOf(")",e),n>e&&(c=t.indexOf("\\",e),c===-1||c>n))||r!==-1&&t[e]==="("&&t[e+1]!=="|"&&(rr&&(c=t.indexOf("\\",r),c===-1||c>n))))return!0;if(t[e]==="\\"){var f=t[e+1];e+=2;var p=wle[f];if(p){var h=t.indexOf(p,e);h!==-1&&(e=h+1)}if(t[e]==="!")return!0}else e++}return!1},sZe=function(t){if(t[0]==="!")return!0;for(var e=0;e{"use strict";var oZe=vle(),aZe=Ie("path").posix.dirname,lZe=Ie("os").platform()==="win32",n3="/",cZe=/\\/g,uZe=/[\{\[].*[\}\]]$/,fZe=/(^|[^\\])([\{\[]|\([^\)]+$)/,AZe=/\\([\!\*\?\|\[\]\(\)\{\}])/g;Sle.exports=function(e,r){var s=Object.assign({flipBackslashes:!0},r);s.flipBackslashes&&lZe&&e.indexOf(n3)<0&&(e=e.replace(cZe,n3)),uZe.test(e)&&(e+=n3),e+="a";do e=aZe(e);while(oZe(e)||fZe.test(e));return e.replace(AZe,"$1")}});var Fle=_(jr=>{"use strict";Object.defineProperty(jr,"__esModule",{value:!0});jr.removeDuplicateSlashes=jr.matchAny=jr.convertPatternsToRe=jr.makeRe=jr.getPatternParts=jr.expandBraceExpansion=jr.expandPatternsWithBraceExpansion=jr.isAffectDepthOfReadingPattern=jr.endsWithSlashGlobStar=jr.hasGlobStar=jr.getBaseDirectory=jr.isPatternRelatedToParentDirectory=jr.getPatternsOutsideCurrentDirectory=jr.getPatternsInsideCurrentDirectory=jr.getPositivePatterns=jr.getNegativePatterns=jr.isPositivePattern=jr.isNegativePattern=jr.convertToNegativePattern=jr.convertToPositivePattern=jr.isDynamicPattern=jr.isStaticPattern=void 0;var pZe=Ie("path"),hZe=Dle(),i3=Go(),Ple="**",gZe="\\",dZe=/[*?]|^!/,mZe=/\[[^[]*]/,yZe=/(?:^|[^!*+?@])\([^(]*\|[^|]*\)/,EZe=/[!*+?@]\([^(]*\)/,IZe=/,|\.\./,CZe=/(?!^)\/{2,}/g;function ble(t,e={}){return!xle(t,e)}jr.isStaticPattern=ble;function xle(t,e={}){return t===""?!1:!!(e.caseSensitiveMatch===!1||t.includes(gZe)||dZe.test(t)||mZe.test(t)||yZe.test(t)||e.extglob!==!1&&EZe.test(t)||e.braceExpansion!==!1&&wZe(t))}jr.isDynamicPattern=xle;function wZe(t){let e=t.indexOf("{");if(e===-1)return!1;let r=t.indexOf("}",e+1);if(r===-1)return!1;let s=t.slice(e,r);return IZe.test(s)}function BZe(t){return rQ(t)?t.slice(1):t}jr.convertToPositivePattern=BZe;function vZe(t){return"!"+t}jr.convertToNegativePattern=vZe;function rQ(t){return t.startsWith("!")&&t[1]!=="("}jr.isNegativePattern=rQ;function kle(t){return!rQ(t)}jr.isPositivePattern=kle;function SZe(t){return t.filter(rQ)}jr.getNegativePatterns=SZe;function DZe(t){return t.filter(kle)}jr.getPositivePatterns=DZe;function PZe(t){return t.filter(e=>!s3(e))}jr.getPatternsInsideCurrentDirectory=PZe;function bZe(t){return t.filter(s3)}jr.getPatternsOutsideCurrentDirectory=bZe;function s3(t){return t.startsWith("..")||t.startsWith("./..")}jr.isPatternRelatedToParentDirectory=s3;function xZe(t){return hZe(t,{flipBackslashes:!1})}jr.getBaseDirectory=xZe;function kZe(t){return t.includes(Ple)}jr.hasGlobStar=kZe;function Qle(t){return t.endsWith("/"+Ple)}jr.endsWithSlashGlobStar=Qle;function QZe(t){let e=pZe.basename(t);return Qle(t)||ble(e)}jr.isAffectDepthOfReadingPattern=QZe;function RZe(t){return t.reduce((e,r)=>e.concat(Rle(r)),[])}jr.expandPatternsWithBraceExpansion=RZe;function Rle(t){let e=i3.braces(t,{expand:!0,nodupes:!0,keepEscaping:!0});return e.sort((r,s)=>r.length-s.length),e.filter(r=>r!=="")}jr.expandBraceExpansion=Rle;function TZe(t,e){let{parts:r}=i3.scan(t,Object.assign(Object.assign({},e),{parts:!0}));return r.length===0&&(r=[t]),r[0].startsWith("/")&&(r[0]=r[0].slice(1),r.unshift("")),r}jr.getPatternParts=TZe;function Tle(t,e){return i3.makeRe(t,e)}jr.makeRe=Tle;function FZe(t,e){return t.map(r=>Tle(r,e))}jr.convertPatternsToRe=FZe;function NZe(t,e){return e.some(r=>r.test(t))}jr.matchAny=NZe;function OZe(t){return t.replace(CZe,"/")}jr.removeDuplicateSlashes=OZe});var Mle=_((GOt,Lle)=>{"use strict";var LZe=Ie("stream"),Nle=LZe.PassThrough,MZe=Array.prototype.slice;Lle.exports=UZe;function UZe(){let t=[],e=MZe.call(arguments),r=!1,s=e[e.length-1];s&&!Array.isArray(s)&&s.pipe==null?e.pop():s={};let a=s.end!==!1,n=s.pipeError===!0;s.objectMode==null&&(s.objectMode=!0),s.highWaterMark==null&&(s.highWaterMark=64*1024);let c=Nle(s);function f(){for(let E=0,C=arguments.length;E0||(r=!1,p())}function b(I){function T(){I.removeListener("merge2UnpipeEnd",T),I.removeListener("end",T),n&&I.removeListener("error",N),S()}function N(U){c.emit("error",U)}if(I._readableState.endEmitted)return S();I.on("merge2UnpipeEnd",T),I.on("end",T),n&&I.on("error",N),I.pipe(c,{end:!1}),I.resume()}for(let I=0;I{"use strict";Object.defineProperty(nQ,"__esModule",{value:!0});nQ.merge=void 0;var _Ze=Mle();function HZe(t){let e=_Ze(t);return t.forEach(r=>{r.once("error",s=>e.emit("error",s))}),e.once("close",()=>Ule(t)),e.once("end",()=>Ule(t)),e}nQ.merge=HZe;function Ule(t){t.forEach(e=>e.emit("close"))}});var Hle=_(ZE=>{"use strict";Object.defineProperty(ZE,"__esModule",{value:!0});ZE.isEmpty=ZE.isString=void 0;function jZe(t){return typeof t=="string"}ZE.isString=jZe;function GZe(t){return t===""}ZE.isEmpty=GZe});var xp=_(Yo=>{"use strict";Object.defineProperty(Yo,"__esModule",{value:!0});Yo.string=Yo.stream=Yo.pattern=Yo.path=Yo.fs=Yo.errno=Yo.array=void 0;var qZe=ple();Yo.array=qZe;var WZe=hle();Yo.errno=WZe;var YZe=gle();Yo.fs=YZe;var VZe=Ele();Yo.path=VZe;var JZe=Fle();Yo.pattern=JZe;var KZe=_le();Yo.stream=KZe;var zZe=Hle();Yo.string=zZe});var Wle=_(Vo=>{"use strict";Object.defineProperty(Vo,"__esModule",{value:!0});Vo.convertPatternGroupToTask=Vo.convertPatternGroupsToTasks=Vo.groupPatternsByBaseDirectory=Vo.getNegativePatternsAsPositive=Vo.getPositivePatterns=Vo.convertPatternsToTasks=Vo.generate=void 0;var Hu=xp();function ZZe(t,e){let r=jle(t,e),s=jle(e.ignore,e),a=Gle(r),n=qle(r,s),c=a.filter(E=>Hu.pattern.isStaticPattern(E,e)),f=a.filter(E=>Hu.pattern.isDynamicPattern(E,e)),p=o3(c,n,!1),h=o3(f,n,!0);return p.concat(h)}Vo.generate=ZZe;function jle(t,e){let r=t;return e.braceExpansion&&(r=Hu.pattern.expandPatternsWithBraceExpansion(r)),e.baseNameMatch&&(r=r.map(s=>s.includes("/")?s:`**/${s}`)),r.map(s=>Hu.pattern.removeDuplicateSlashes(s))}function o3(t,e,r){let s=[],a=Hu.pattern.getPatternsOutsideCurrentDirectory(t),n=Hu.pattern.getPatternsInsideCurrentDirectory(t),c=a3(a),f=a3(n);return s.push(...l3(c,e,r)),"."in f?s.push(c3(".",n,e,r)):s.push(...l3(f,e,r)),s}Vo.convertPatternsToTasks=o3;function Gle(t){return Hu.pattern.getPositivePatterns(t)}Vo.getPositivePatterns=Gle;function qle(t,e){return Hu.pattern.getNegativePatterns(t).concat(e).map(Hu.pattern.convertToPositivePattern)}Vo.getNegativePatternsAsPositive=qle;function a3(t){let e={};return t.reduce((r,s)=>{let a=Hu.pattern.getBaseDirectory(s);return a in r?r[a].push(s):r[a]=[s],r},e)}Vo.groupPatternsByBaseDirectory=a3;function l3(t,e,r){return Object.keys(t).map(s=>c3(s,t[s],e,r))}Vo.convertPatternGroupsToTasks=l3;function c3(t,e,r,s){return{dynamic:s,positive:e,negative:r,base:t,patterns:[].concat(e,r.map(Hu.pattern.convertToNegativePattern))}}Vo.convertPatternGroupToTask=c3});var Vle=_(iQ=>{"use strict";Object.defineProperty(iQ,"__esModule",{value:!0});iQ.read=void 0;function XZe(t,e,r){e.fs.lstat(t,(s,a)=>{if(s!==null){Yle(r,s);return}if(!a.isSymbolicLink()||!e.followSymbolicLink){u3(r,a);return}e.fs.stat(t,(n,c)=>{if(n!==null){if(e.throwErrorOnBrokenSymbolicLink){Yle(r,n);return}u3(r,a);return}e.markSymbolicLink&&(c.isSymbolicLink=()=>!0),u3(r,c)})})}iQ.read=XZe;function Yle(t,e){t(e)}function u3(t,e){t(null,e)}});var Jle=_(sQ=>{"use strict";Object.defineProperty(sQ,"__esModule",{value:!0});sQ.read=void 0;function $Ze(t,e){let r=e.fs.lstatSync(t);if(!r.isSymbolicLink()||!e.followSymbolicLink)return r;try{let s=e.fs.statSync(t);return e.markSymbolicLink&&(s.isSymbolicLink=()=>!0),s}catch(s){if(!e.throwErrorOnBrokenSymbolicLink)return r;throw s}}sQ.read=$Ze});var Kle=_(h0=>{"use strict";Object.defineProperty(h0,"__esModule",{value:!0});h0.createFileSystemAdapter=h0.FILE_SYSTEM_ADAPTER=void 0;var oQ=Ie("fs");h0.FILE_SYSTEM_ADAPTER={lstat:oQ.lstat,stat:oQ.stat,lstatSync:oQ.lstatSync,statSync:oQ.statSync};function eXe(t){return t===void 0?h0.FILE_SYSTEM_ADAPTER:Object.assign(Object.assign({},h0.FILE_SYSTEM_ADAPTER),t)}h0.createFileSystemAdapter=eXe});var zle=_(A3=>{"use strict";Object.defineProperty(A3,"__esModule",{value:!0});var tXe=Kle(),f3=class{constructor(e={}){this._options=e,this.followSymbolicLink=this._getValue(this._options.followSymbolicLink,!0),this.fs=tXe.createFileSystemAdapter(this._options.fs),this.markSymbolicLink=this._getValue(this._options.markSymbolicLink,!1),this.throwErrorOnBrokenSymbolicLink=this._getValue(this._options.throwErrorOnBrokenSymbolicLink,!0)}_getValue(e,r){return e??r}};A3.default=f3});var Xd=_(g0=>{"use strict";Object.defineProperty(g0,"__esModule",{value:!0});g0.statSync=g0.stat=g0.Settings=void 0;var Zle=Vle(),rXe=Jle(),p3=zle();g0.Settings=p3.default;function nXe(t,e,r){if(typeof e=="function"){Zle.read(t,h3(),e);return}Zle.read(t,h3(e),r)}g0.stat=nXe;function iXe(t,e){let r=h3(e);return rXe.read(t,r)}g0.statSync=iXe;function h3(t={}){return t instanceof p3.default?t:new p3.default(t)}});var ece=_(($Ot,$le)=>{var Xle;$le.exports=typeof queueMicrotask=="function"?queueMicrotask.bind(typeof window<"u"?window:global):t=>(Xle||(Xle=Promise.resolve())).then(t).catch(e=>setTimeout(()=>{throw e},0))});var rce=_((eLt,tce)=>{tce.exports=oXe;var sXe=ece();function oXe(t,e){let r,s,a,n=!0;Array.isArray(t)?(r=[],s=t.length):(a=Object.keys(t),r={},s=a.length);function c(p){function h(){e&&e(p,r),e=null}n?sXe(h):h()}function f(p,h,E){r[p]=E,(--s===0||h)&&c(h)}s?a?a.forEach(function(p){t[p](function(h,E){f(p,h,E)})}):t.forEach(function(p,h){p(function(E,C){f(h,E,C)})}):c(null),n=!1}});var g3=_(lQ=>{"use strict";Object.defineProperty(lQ,"__esModule",{value:!0});lQ.IS_SUPPORT_READDIR_WITH_FILE_TYPES=void 0;var aQ=process.versions.node.split(".");if(aQ[0]===void 0||aQ[1]===void 0)throw new Error(`Unexpected behavior. The 'process.versions.node' variable has invalid value: ${process.versions.node}`);var nce=Number.parseInt(aQ[0],10),aXe=Number.parseInt(aQ[1],10),ice=10,lXe=10,cXe=nce>ice,uXe=nce===ice&&aXe>=lXe;lQ.IS_SUPPORT_READDIR_WITH_FILE_TYPES=cXe||uXe});var sce=_(cQ=>{"use strict";Object.defineProperty(cQ,"__esModule",{value:!0});cQ.createDirentFromStats=void 0;var d3=class{constructor(e,r){this.name=e,this.isBlockDevice=r.isBlockDevice.bind(r),this.isCharacterDevice=r.isCharacterDevice.bind(r),this.isDirectory=r.isDirectory.bind(r),this.isFIFO=r.isFIFO.bind(r),this.isFile=r.isFile.bind(r),this.isSocket=r.isSocket.bind(r),this.isSymbolicLink=r.isSymbolicLink.bind(r)}};function fXe(t,e){return new d3(t,e)}cQ.createDirentFromStats=fXe});var m3=_(uQ=>{"use strict";Object.defineProperty(uQ,"__esModule",{value:!0});uQ.fs=void 0;var AXe=sce();uQ.fs=AXe});var y3=_(fQ=>{"use strict";Object.defineProperty(fQ,"__esModule",{value:!0});fQ.joinPathSegments=void 0;function pXe(t,e,r){return t.endsWith(r)?t+e:t+r+e}fQ.joinPathSegments=pXe});var fce=_(d0=>{"use strict";Object.defineProperty(d0,"__esModule",{value:!0});d0.readdir=d0.readdirWithFileTypes=d0.read=void 0;var hXe=Xd(),oce=rce(),gXe=g3(),ace=m3(),lce=y3();function dXe(t,e,r){if(!e.stats&&gXe.IS_SUPPORT_READDIR_WITH_FILE_TYPES){cce(t,e,r);return}uce(t,e,r)}d0.read=dXe;function cce(t,e,r){e.fs.readdir(t,{withFileTypes:!0},(s,a)=>{if(s!==null){AQ(r,s);return}let n=a.map(f=>({dirent:f,name:f.name,path:lce.joinPathSegments(t,f.name,e.pathSegmentSeparator)}));if(!e.followSymbolicLinks){E3(r,n);return}let c=n.map(f=>mXe(f,e));oce(c,(f,p)=>{if(f!==null){AQ(r,f);return}E3(r,p)})})}d0.readdirWithFileTypes=cce;function mXe(t,e){return r=>{if(!t.dirent.isSymbolicLink()){r(null,t);return}e.fs.stat(t.path,(s,a)=>{if(s!==null){if(e.throwErrorOnBrokenSymbolicLink){r(s);return}r(null,t);return}t.dirent=ace.fs.createDirentFromStats(t.name,a),r(null,t)})}}function uce(t,e,r){e.fs.readdir(t,(s,a)=>{if(s!==null){AQ(r,s);return}let n=a.map(c=>{let f=lce.joinPathSegments(t,c,e.pathSegmentSeparator);return p=>{hXe.stat(f,e.fsStatSettings,(h,E)=>{if(h!==null){p(h);return}let C={name:c,path:f,dirent:ace.fs.createDirentFromStats(c,E)};e.stats&&(C.stats=E),p(null,C)})}});oce(n,(c,f)=>{if(c!==null){AQ(r,c);return}E3(r,f)})})}d0.readdir=uce;function AQ(t,e){t(e)}function E3(t,e){t(null,e)}});var dce=_(m0=>{"use strict";Object.defineProperty(m0,"__esModule",{value:!0});m0.readdir=m0.readdirWithFileTypes=m0.read=void 0;var yXe=Xd(),EXe=g3(),Ace=m3(),pce=y3();function IXe(t,e){return!e.stats&&EXe.IS_SUPPORT_READDIR_WITH_FILE_TYPES?hce(t,e):gce(t,e)}m0.read=IXe;function hce(t,e){return e.fs.readdirSync(t,{withFileTypes:!0}).map(s=>{let a={dirent:s,name:s.name,path:pce.joinPathSegments(t,s.name,e.pathSegmentSeparator)};if(a.dirent.isSymbolicLink()&&e.followSymbolicLinks)try{let n=e.fs.statSync(a.path);a.dirent=Ace.fs.createDirentFromStats(a.name,n)}catch(n){if(e.throwErrorOnBrokenSymbolicLink)throw n}return a})}m0.readdirWithFileTypes=hce;function gce(t,e){return e.fs.readdirSync(t).map(s=>{let a=pce.joinPathSegments(t,s,e.pathSegmentSeparator),n=yXe.statSync(a,e.fsStatSettings),c={name:s,path:a,dirent:Ace.fs.createDirentFromStats(s,n)};return e.stats&&(c.stats=n),c})}m0.readdir=gce});var mce=_(y0=>{"use strict";Object.defineProperty(y0,"__esModule",{value:!0});y0.createFileSystemAdapter=y0.FILE_SYSTEM_ADAPTER=void 0;var XE=Ie("fs");y0.FILE_SYSTEM_ADAPTER={lstat:XE.lstat,stat:XE.stat,lstatSync:XE.lstatSync,statSync:XE.statSync,readdir:XE.readdir,readdirSync:XE.readdirSync};function CXe(t){return t===void 0?y0.FILE_SYSTEM_ADAPTER:Object.assign(Object.assign({},y0.FILE_SYSTEM_ADAPTER),t)}y0.createFileSystemAdapter=CXe});var yce=_(C3=>{"use strict";Object.defineProperty(C3,"__esModule",{value:!0});var wXe=Ie("path"),BXe=Xd(),vXe=mce(),I3=class{constructor(e={}){this._options=e,this.followSymbolicLinks=this._getValue(this._options.followSymbolicLinks,!1),this.fs=vXe.createFileSystemAdapter(this._options.fs),this.pathSegmentSeparator=this._getValue(this._options.pathSegmentSeparator,wXe.sep),this.stats=this._getValue(this._options.stats,!1),this.throwErrorOnBrokenSymbolicLink=this._getValue(this._options.throwErrorOnBrokenSymbolicLink,!0),this.fsStatSettings=new BXe.Settings({followSymbolicLink:this.followSymbolicLinks,fs:this.fs,throwErrorOnBrokenSymbolicLink:this.throwErrorOnBrokenSymbolicLink})}_getValue(e,r){return e??r}};C3.default=I3});var pQ=_(E0=>{"use strict";Object.defineProperty(E0,"__esModule",{value:!0});E0.Settings=E0.scandirSync=E0.scandir=void 0;var Ece=fce(),SXe=dce(),w3=yce();E0.Settings=w3.default;function DXe(t,e,r){if(typeof e=="function"){Ece.read(t,B3(),e);return}Ece.read(t,B3(e),r)}E0.scandir=DXe;function PXe(t,e){let r=B3(e);return SXe.read(t,r)}E0.scandirSync=PXe;function B3(t={}){return t instanceof w3.default?t:new w3.default(t)}});var Cce=_((uLt,Ice)=>{"use strict";function bXe(t){var e=new t,r=e;function s(){var n=e;return n.next?e=n.next:(e=new t,r=e),n.next=null,n}function a(n){r.next=n,r=n}return{get:s,release:a}}Ice.exports=bXe});var Bce=_((fLt,v3)=>{"use strict";var xXe=Cce();function wce(t,e,r){if(typeof t=="function"&&(r=e,e=t,t=null),!(r>=1))throw new Error("fastqueue concurrency must be equal to or greater than 1");var s=xXe(kXe),a=null,n=null,c=0,f=null,p={push:T,drain:kc,saturated:kc,pause:E,paused:!1,get concurrency(){return r},set concurrency(ue){if(!(ue>=1))throw new Error("fastqueue concurrency must be equal to or greater than 1");if(r=ue,!p.paused)for(;a&&c=r||p.paused?n?(n.next=me,n=me):(a=me,n=me,p.saturated()):(c++,e.call(t,me.value,me.worked))}function N(ue,le){var me=s.get();me.context=t,me.release=U,me.value=ue,me.callback=le||kc,me.errorHandler=f,c>=r||p.paused?a?(me.next=a,a=me):(a=me,n=me,p.saturated()):(c++,e.call(t,me.value,me.worked))}function U(ue){ue&&s.release(ue);var le=a;le&&c<=r?p.paused?c--:(n===a&&(n=null),a=le.next,le.next=null,e.call(t,le.value,le.worked),n===null&&p.empty()):--c===0&&p.drain()}function W(){a=null,n=null,p.drain=kc}function ee(){a=null,n=null,p.drain(),p.drain=kc}function ie(ue){f=ue}}function kc(){}function kXe(){this.value=null,this.callback=kc,this.next=null,this.release=kc,this.context=null,this.errorHandler=null;var t=this;this.worked=function(r,s){var a=t.callback,n=t.errorHandler,c=t.value;t.value=null,t.callback=kc,t.errorHandler&&n(r,c),a.call(t.context,r,s),t.release(t)}}function QXe(t,e,r){typeof t=="function"&&(r=e,e=t,t=null);function s(E,C){e.call(this,E).then(function(S){C(null,S)},C)}var a=wce(t,s,r),n=a.push,c=a.unshift;return a.push=f,a.unshift=p,a.drained=h,a;function f(E){var C=new Promise(function(S,b){n(E,function(I,T){if(I){b(I);return}S(T)})});return C.catch(kc),C}function p(E){var C=new Promise(function(S,b){c(E,function(I,T){if(I){b(I);return}S(T)})});return C.catch(kc),C}function h(){if(a.idle())return new Promise(function(S){S()});var E=a.drain,C=new Promise(function(S){a.drain=function(){E(),S()}});return C}}v3.exports=wce;v3.exports.promise=QXe});var hQ=_(zf=>{"use strict";Object.defineProperty(zf,"__esModule",{value:!0});zf.joinPathSegments=zf.replacePathSegmentSeparator=zf.isAppliedFilter=zf.isFatalError=void 0;function RXe(t,e){return t.errorFilter===null?!0:!t.errorFilter(e)}zf.isFatalError=RXe;function TXe(t,e){return t===null||t(e)}zf.isAppliedFilter=TXe;function FXe(t,e){return t.split(/[/\\]/).join(e)}zf.replacePathSegmentSeparator=FXe;function NXe(t,e,r){return t===""?e:t.endsWith(r)?t+e:t+r+e}zf.joinPathSegments=NXe});var P3=_(D3=>{"use strict";Object.defineProperty(D3,"__esModule",{value:!0});var OXe=hQ(),S3=class{constructor(e,r){this._root=e,this._settings=r,this._root=OXe.replacePathSegmentSeparator(e,r.pathSegmentSeparator)}};D3.default=S3});var k3=_(x3=>{"use strict";Object.defineProperty(x3,"__esModule",{value:!0});var LXe=Ie("events"),MXe=pQ(),UXe=Bce(),gQ=hQ(),_Xe=P3(),b3=class extends _Xe.default{constructor(e,r){super(e,r),this._settings=r,this._scandir=MXe.scandir,this._emitter=new LXe.EventEmitter,this._queue=UXe(this._worker.bind(this),this._settings.concurrency),this._isFatalError=!1,this._isDestroyed=!1,this._queue.drain=()=>{this._isFatalError||this._emitter.emit("end")}}read(){return this._isFatalError=!1,this._isDestroyed=!1,setImmediate(()=>{this._pushToQueue(this._root,this._settings.basePath)}),this._emitter}get isDestroyed(){return this._isDestroyed}destroy(){if(this._isDestroyed)throw new Error("The reader is already destroyed");this._isDestroyed=!0,this._queue.killAndDrain()}onEntry(e){this._emitter.on("entry",e)}onError(e){this._emitter.once("error",e)}onEnd(e){this._emitter.once("end",e)}_pushToQueue(e,r){let s={directory:e,base:r};this._queue.push(s,a=>{a!==null&&this._handleError(a)})}_worker(e,r){this._scandir(e.directory,this._settings.fsScandirSettings,(s,a)=>{if(s!==null){r(s,void 0);return}for(let n of a)this._handleEntry(n,e.base);r(null,void 0)})}_handleError(e){this._isDestroyed||!gQ.isFatalError(this._settings,e)||(this._isFatalError=!0,this._isDestroyed=!0,this._emitter.emit("error",e))}_handleEntry(e,r){if(this._isDestroyed||this._isFatalError)return;let s=e.path;r!==void 0&&(e.path=gQ.joinPathSegments(r,e.name,this._settings.pathSegmentSeparator)),gQ.isAppliedFilter(this._settings.entryFilter,e)&&this._emitEntry(e),e.dirent.isDirectory()&&gQ.isAppliedFilter(this._settings.deepFilter,e)&&this._pushToQueue(s,r===void 0?void 0:e.path)}_emitEntry(e){this._emitter.emit("entry",e)}};x3.default=b3});var vce=_(R3=>{"use strict";Object.defineProperty(R3,"__esModule",{value:!0});var HXe=k3(),Q3=class{constructor(e,r){this._root=e,this._settings=r,this._reader=new HXe.default(this._root,this._settings),this._storage=[]}read(e){this._reader.onError(r=>{jXe(e,r)}),this._reader.onEntry(r=>{this._storage.push(r)}),this._reader.onEnd(()=>{GXe(e,this._storage)}),this._reader.read()}};R3.default=Q3;function jXe(t,e){t(e)}function GXe(t,e){t(null,e)}});var Sce=_(F3=>{"use strict";Object.defineProperty(F3,"__esModule",{value:!0});var qXe=Ie("stream"),WXe=k3(),T3=class{constructor(e,r){this._root=e,this._settings=r,this._reader=new WXe.default(this._root,this._settings),this._stream=new qXe.Readable({objectMode:!0,read:()=>{},destroy:()=>{this._reader.isDestroyed||this._reader.destroy()}})}read(){return this._reader.onError(e=>{this._stream.emit("error",e)}),this._reader.onEntry(e=>{this._stream.push(e)}),this._reader.onEnd(()=>{this._stream.push(null)}),this._reader.read(),this._stream}};F3.default=T3});var Dce=_(O3=>{"use strict";Object.defineProperty(O3,"__esModule",{value:!0});var YXe=pQ(),dQ=hQ(),VXe=P3(),N3=class extends VXe.default{constructor(){super(...arguments),this._scandir=YXe.scandirSync,this._storage=[],this._queue=new Set}read(){return this._pushToQueue(this._root,this._settings.basePath),this._handleQueue(),this._storage}_pushToQueue(e,r){this._queue.add({directory:e,base:r})}_handleQueue(){for(let e of this._queue.values())this._handleDirectory(e.directory,e.base)}_handleDirectory(e,r){try{let s=this._scandir(e,this._settings.fsScandirSettings);for(let a of s)this._handleEntry(a,r)}catch(s){this._handleError(s)}}_handleError(e){if(dQ.isFatalError(this._settings,e))throw e}_handleEntry(e,r){let s=e.path;r!==void 0&&(e.path=dQ.joinPathSegments(r,e.name,this._settings.pathSegmentSeparator)),dQ.isAppliedFilter(this._settings.entryFilter,e)&&this._pushToStorage(e),e.dirent.isDirectory()&&dQ.isAppliedFilter(this._settings.deepFilter,e)&&this._pushToQueue(s,r===void 0?void 0:e.path)}_pushToStorage(e){this._storage.push(e)}};O3.default=N3});var Pce=_(M3=>{"use strict";Object.defineProperty(M3,"__esModule",{value:!0});var JXe=Dce(),L3=class{constructor(e,r){this._root=e,this._settings=r,this._reader=new JXe.default(this._root,this._settings)}read(){return this._reader.read()}};M3.default=L3});var bce=_(_3=>{"use strict";Object.defineProperty(_3,"__esModule",{value:!0});var KXe=Ie("path"),zXe=pQ(),U3=class{constructor(e={}){this._options=e,this.basePath=this._getValue(this._options.basePath,void 0),this.concurrency=this._getValue(this._options.concurrency,Number.POSITIVE_INFINITY),this.deepFilter=this._getValue(this._options.deepFilter,null),this.entryFilter=this._getValue(this._options.entryFilter,null),this.errorFilter=this._getValue(this._options.errorFilter,null),this.pathSegmentSeparator=this._getValue(this._options.pathSegmentSeparator,KXe.sep),this.fsScandirSettings=new zXe.Settings({followSymbolicLinks:this._options.followSymbolicLinks,fs:this._options.fs,pathSegmentSeparator:this._options.pathSegmentSeparator,stats:this._options.stats,throwErrorOnBrokenSymbolicLink:this._options.throwErrorOnBrokenSymbolicLink})}_getValue(e,r){return e??r}};_3.default=U3});var yQ=_(Zf=>{"use strict";Object.defineProperty(Zf,"__esModule",{value:!0});Zf.Settings=Zf.walkStream=Zf.walkSync=Zf.walk=void 0;var xce=vce(),ZXe=Sce(),XXe=Pce(),H3=bce();Zf.Settings=H3.default;function $Xe(t,e,r){if(typeof e=="function"){new xce.default(t,mQ()).read(e);return}new xce.default(t,mQ(e)).read(r)}Zf.walk=$Xe;function e$e(t,e){let r=mQ(e);return new XXe.default(t,r).read()}Zf.walkSync=e$e;function t$e(t,e){let r=mQ(e);return new ZXe.default(t,r).read()}Zf.walkStream=t$e;function mQ(t={}){return t instanceof H3.default?t:new H3.default(t)}});var EQ=_(G3=>{"use strict";Object.defineProperty(G3,"__esModule",{value:!0});var r$e=Ie("path"),n$e=Xd(),kce=xp(),j3=class{constructor(e){this._settings=e,this._fsStatSettings=new n$e.Settings({followSymbolicLink:this._settings.followSymbolicLinks,fs:this._settings.fs,throwErrorOnBrokenSymbolicLink:this._settings.followSymbolicLinks})}_getFullEntryPath(e){return r$e.resolve(this._settings.cwd,e)}_makeEntry(e,r){let s={name:r,path:r,dirent:kce.fs.createDirentFromStats(r,e)};return this._settings.stats&&(s.stats=e),s}_isFatalError(e){return!kce.errno.isEnoentCodeError(e)&&!this._settings.suppressErrors}};G3.default=j3});var Y3=_(W3=>{"use strict";Object.defineProperty(W3,"__esModule",{value:!0});var i$e=Ie("stream"),s$e=Xd(),o$e=yQ(),a$e=EQ(),q3=class extends a$e.default{constructor(){super(...arguments),this._walkStream=o$e.walkStream,this._stat=s$e.stat}dynamic(e,r){return this._walkStream(e,r)}static(e,r){let s=e.map(this._getFullEntryPath,this),a=new i$e.PassThrough({objectMode:!0});a._write=(n,c,f)=>this._getEntry(s[n],e[n],r).then(p=>{p!==null&&r.entryFilter(p)&&a.push(p),n===s.length-1&&a.end(),f()}).catch(f);for(let n=0;nthis._makeEntry(a,r)).catch(a=>{if(s.errorFilter(a))return null;throw a})}_getStat(e){return new Promise((r,s)=>{this._stat(e,this._fsStatSettings,(a,n)=>a===null?r(n):s(a))})}};W3.default=q3});var Qce=_(J3=>{"use strict";Object.defineProperty(J3,"__esModule",{value:!0});var l$e=yQ(),c$e=EQ(),u$e=Y3(),V3=class extends c$e.default{constructor(){super(...arguments),this._walkAsync=l$e.walk,this._readerStream=new u$e.default(this._settings)}dynamic(e,r){return new Promise((s,a)=>{this._walkAsync(e,r,(n,c)=>{n===null?s(c):a(n)})})}async static(e,r){let s=[],a=this._readerStream.static(e,r);return new Promise((n,c)=>{a.once("error",c),a.on("data",f=>s.push(f)),a.once("end",()=>n(s))})}};J3.default=V3});var Rce=_(z3=>{"use strict";Object.defineProperty(z3,"__esModule",{value:!0});var NB=xp(),K3=class{constructor(e,r,s){this._patterns=e,this._settings=r,this._micromatchOptions=s,this._storage=[],this._fillStorage()}_fillStorage(){for(let e of this._patterns){let r=this._getPatternSegments(e),s=this._splitSegmentsIntoSections(r);this._storage.push({complete:s.length<=1,pattern:e,segments:r,sections:s})}}_getPatternSegments(e){return NB.pattern.getPatternParts(e,this._micromatchOptions).map(s=>NB.pattern.isDynamicPattern(s,this._settings)?{dynamic:!0,pattern:s,patternRe:NB.pattern.makeRe(s,this._micromatchOptions)}:{dynamic:!1,pattern:s})}_splitSegmentsIntoSections(e){return NB.array.splitWhen(e,r=>r.dynamic&&NB.pattern.hasGlobStar(r.pattern))}};z3.default=K3});var Tce=_(X3=>{"use strict";Object.defineProperty(X3,"__esModule",{value:!0});var f$e=Rce(),Z3=class extends f$e.default{match(e){let r=e.split("/"),s=r.length,a=this._storage.filter(n=>!n.complete||n.segments.length>s);for(let n of a){let c=n.sections[0];if(!n.complete&&s>c.length||r.every((p,h)=>{let E=n.segments[h];return!!(E.dynamic&&E.patternRe.test(p)||!E.dynamic&&E.pattern===p)}))return!0}return!1}};X3.default=Z3});var Fce=_(e8=>{"use strict";Object.defineProperty(e8,"__esModule",{value:!0});var IQ=xp(),A$e=Tce(),$3=class{constructor(e,r){this._settings=e,this._micromatchOptions=r}getFilter(e,r,s){let a=this._getMatcher(r),n=this._getNegativePatternsRe(s);return c=>this._filter(e,c,a,n)}_getMatcher(e){return new A$e.default(e,this._settings,this._micromatchOptions)}_getNegativePatternsRe(e){let r=e.filter(IQ.pattern.isAffectDepthOfReadingPattern);return IQ.pattern.convertPatternsToRe(r,this._micromatchOptions)}_filter(e,r,s,a){if(this._isSkippedByDeep(e,r.path)||this._isSkippedSymbolicLink(r))return!1;let n=IQ.path.removeLeadingDotSegment(r.path);return this._isSkippedByPositivePatterns(n,s)?!1:this._isSkippedByNegativePatterns(n,a)}_isSkippedByDeep(e,r){return this._settings.deep===1/0?!1:this._getEntryLevel(e,r)>=this._settings.deep}_getEntryLevel(e,r){let s=r.split("/").length;if(e==="")return s;let a=e.split("/").length;return s-a}_isSkippedSymbolicLink(e){return!this._settings.followSymbolicLinks&&e.dirent.isSymbolicLink()}_isSkippedByPositivePatterns(e,r){return!this._settings.baseNameMatch&&!r.match(e)}_isSkippedByNegativePatterns(e,r){return!IQ.pattern.matchAny(e,r)}};e8.default=$3});var Nce=_(r8=>{"use strict";Object.defineProperty(r8,"__esModule",{value:!0});var $d=xp(),t8=class{constructor(e,r){this._settings=e,this._micromatchOptions=r,this.index=new Map}getFilter(e,r){let s=$d.pattern.convertPatternsToRe(e,this._micromatchOptions),a=$d.pattern.convertPatternsToRe(r,Object.assign(Object.assign({},this._micromatchOptions),{dot:!0}));return n=>this._filter(n,s,a)}_filter(e,r,s){let a=$d.path.removeLeadingDotSegment(e.path);if(this._settings.unique&&this._isDuplicateEntry(a)||this._onlyFileFilter(e)||this._onlyDirectoryFilter(e)||this._isSkippedByAbsoluteNegativePatterns(a,s))return!1;let n=e.dirent.isDirectory(),c=this._isMatchToPatterns(a,r,n)&&!this._isMatchToPatterns(a,s,n);return this._settings.unique&&c&&this._createIndexRecord(a),c}_isDuplicateEntry(e){return this.index.has(e)}_createIndexRecord(e){this.index.set(e,void 0)}_onlyFileFilter(e){return this._settings.onlyFiles&&!e.dirent.isFile()}_onlyDirectoryFilter(e){return this._settings.onlyDirectories&&!e.dirent.isDirectory()}_isSkippedByAbsoluteNegativePatterns(e,r){if(!this._settings.absolute)return!1;let s=$d.path.makeAbsolute(this._settings.cwd,e);return $d.pattern.matchAny(s,r)}_isMatchToPatterns(e,r,s){let a=$d.pattern.matchAny(e,r);return!a&&s?$d.pattern.matchAny(e+"/",r):a}};r8.default=t8});var Oce=_(i8=>{"use strict";Object.defineProperty(i8,"__esModule",{value:!0});var p$e=xp(),n8=class{constructor(e){this._settings=e}getFilter(){return e=>this._isNonFatalError(e)}_isNonFatalError(e){return p$e.errno.isEnoentCodeError(e)||this._settings.suppressErrors}};i8.default=n8});var Mce=_(o8=>{"use strict";Object.defineProperty(o8,"__esModule",{value:!0});var Lce=xp(),s8=class{constructor(e){this._settings=e}getTransformer(){return e=>this._transform(e)}_transform(e){let r=e.path;return this._settings.absolute&&(r=Lce.path.makeAbsolute(this._settings.cwd,r),r=Lce.path.unixify(r)),this._settings.markDirectories&&e.dirent.isDirectory()&&(r+="/"),this._settings.objectMode?Object.assign(Object.assign({},e),{path:r}):r}};o8.default=s8});var CQ=_(l8=>{"use strict";Object.defineProperty(l8,"__esModule",{value:!0});var h$e=Ie("path"),g$e=Fce(),d$e=Nce(),m$e=Oce(),y$e=Mce(),a8=class{constructor(e){this._settings=e,this.errorFilter=new m$e.default(this._settings),this.entryFilter=new d$e.default(this._settings,this._getMicromatchOptions()),this.deepFilter=new g$e.default(this._settings,this._getMicromatchOptions()),this.entryTransformer=new y$e.default(this._settings)}_getRootDirectory(e){return h$e.resolve(this._settings.cwd,e.base)}_getReaderOptions(e){let r=e.base==="."?"":e.base;return{basePath:r,pathSegmentSeparator:"/",concurrency:this._settings.concurrency,deepFilter:this.deepFilter.getFilter(r,e.positive,e.negative),entryFilter:this.entryFilter.getFilter(e.positive,e.negative),errorFilter:this.errorFilter.getFilter(),followSymbolicLinks:this._settings.followSymbolicLinks,fs:this._settings.fs,stats:this._settings.stats,throwErrorOnBrokenSymbolicLink:this._settings.throwErrorOnBrokenSymbolicLink,transform:this.entryTransformer.getTransformer()}}_getMicromatchOptions(){return{dot:this._settings.dot,matchBase:this._settings.baseNameMatch,nobrace:!this._settings.braceExpansion,nocase:!this._settings.caseSensitiveMatch,noext:!this._settings.extglob,noglobstar:!this._settings.globstar,posix:!0,strictSlashes:!1}}};l8.default=a8});var Uce=_(u8=>{"use strict";Object.defineProperty(u8,"__esModule",{value:!0});var E$e=Qce(),I$e=CQ(),c8=class extends I$e.default{constructor(){super(...arguments),this._reader=new E$e.default(this._settings)}async read(e){let r=this._getRootDirectory(e),s=this._getReaderOptions(e);return(await this.api(r,e,s)).map(n=>s.transform(n))}api(e,r,s){return r.dynamic?this._reader.dynamic(e,s):this._reader.static(r.patterns,s)}};u8.default=c8});var _ce=_(A8=>{"use strict";Object.defineProperty(A8,"__esModule",{value:!0});var C$e=Ie("stream"),w$e=Y3(),B$e=CQ(),f8=class extends B$e.default{constructor(){super(...arguments),this._reader=new w$e.default(this._settings)}read(e){let r=this._getRootDirectory(e),s=this._getReaderOptions(e),a=this.api(r,e,s),n=new C$e.Readable({objectMode:!0,read:()=>{}});return a.once("error",c=>n.emit("error",c)).on("data",c=>n.emit("data",s.transform(c))).once("end",()=>n.emit("end")),n.once("close",()=>a.destroy()),n}api(e,r,s){return r.dynamic?this._reader.dynamic(e,s):this._reader.static(r.patterns,s)}};A8.default=f8});var Hce=_(h8=>{"use strict";Object.defineProperty(h8,"__esModule",{value:!0});var v$e=Xd(),S$e=yQ(),D$e=EQ(),p8=class extends D$e.default{constructor(){super(...arguments),this._walkSync=S$e.walkSync,this._statSync=v$e.statSync}dynamic(e,r){return this._walkSync(e,r)}static(e,r){let s=[];for(let a of e){let n=this._getFullEntryPath(a),c=this._getEntry(n,a,r);c===null||!r.entryFilter(c)||s.push(c)}return s}_getEntry(e,r,s){try{let a=this._getStat(e);return this._makeEntry(a,r)}catch(a){if(s.errorFilter(a))return null;throw a}}_getStat(e){return this._statSync(e,this._fsStatSettings)}};h8.default=p8});var jce=_(d8=>{"use strict";Object.defineProperty(d8,"__esModule",{value:!0});var P$e=Hce(),b$e=CQ(),g8=class extends b$e.default{constructor(){super(...arguments),this._reader=new P$e.default(this._settings)}read(e){let r=this._getRootDirectory(e),s=this._getReaderOptions(e);return this.api(r,e,s).map(s.transform)}api(e,r,s){return r.dynamic?this._reader.dynamic(e,s):this._reader.static(r.patterns,s)}};d8.default=g8});var Gce=_(eI=>{"use strict";Object.defineProperty(eI,"__esModule",{value:!0});eI.DEFAULT_FILE_SYSTEM_ADAPTER=void 0;var $E=Ie("fs"),x$e=Ie("os"),k$e=Math.max(x$e.cpus().length,1);eI.DEFAULT_FILE_SYSTEM_ADAPTER={lstat:$E.lstat,lstatSync:$E.lstatSync,stat:$E.stat,statSync:$E.statSync,readdir:$E.readdir,readdirSync:$E.readdirSync};var m8=class{constructor(e={}){this._options=e,this.absolute=this._getValue(this._options.absolute,!1),this.baseNameMatch=this._getValue(this._options.baseNameMatch,!1),this.braceExpansion=this._getValue(this._options.braceExpansion,!0),this.caseSensitiveMatch=this._getValue(this._options.caseSensitiveMatch,!0),this.concurrency=this._getValue(this._options.concurrency,k$e),this.cwd=this._getValue(this._options.cwd,process.cwd()),this.deep=this._getValue(this._options.deep,1/0),this.dot=this._getValue(this._options.dot,!1),this.extglob=this._getValue(this._options.extglob,!0),this.followSymbolicLinks=this._getValue(this._options.followSymbolicLinks,!0),this.fs=this._getFileSystemMethods(this._options.fs),this.globstar=this._getValue(this._options.globstar,!0),this.ignore=this._getValue(this._options.ignore,[]),this.markDirectories=this._getValue(this._options.markDirectories,!1),this.objectMode=this._getValue(this._options.objectMode,!1),this.onlyDirectories=this._getValue(this._options.onlyDirectories,!1),this.onlyFiles=this._getValue(this._options.onlyFiles,!0),this.stats=this._getValue(this._options.stats,!1),this.suppressErrors=this._getValue(this._options.suppressErrors,!1),this.throwErrorOnBrokenSymbolicLink=this._getValue(this._options.throwErrorOnBrokenSymbolicLink,!1),this.unique=this._getValue(this._options.unique,!0),this.onlyDirectories&&(this.onlyFiles=!1),this.stats&&(this.objectMode=!0),this.ignore=[].concat(this.ignore)}_getValue(e,r){return e===void 0?r:e}_getFileSystemMethods(e={}){return Object.assign(Object.assign({},eI.DEFAULT_FILE_SYSTEM_ADAPTER),e)}};eI.default=m8});var wQ=_((OLt,Wce)=>{"use strict";var qce=Wle(),Q$e=Uce(),R$e=_ce(),T$e=jce(),y8=Gce(),Qc=xp();async function E8(t,e){ju(t);let r=I8(t,Q$e.default,e),s=await Promise.all(r);return Qc.array.flatten(s)}(function(t){t.glob=t,t.globSync=e,t.globStream=r,t.async=t;function e(h,E){ju(h);let C=I8(h,T$e.default,E);return Qc.array.flatten(C)}t.sync=e;function r(h,E){ju(h);let C=I8(h,R$e.default,E);return Qc.stream.merge(C)}t.stream=r;function s(h,E){ju(h);let C=[].concat(h),S=new y8.default(E);return qce.generate(C,S)}t.generateTasks=s;function a(h,E){ju(h);let C=new y8.default(E);return Qc.pattern.isDynamicPattern(h,C)}t.isDynamicPattern=a;function n(h){return ju(h),Qc.path.escape(h)}t.escapePath=n;function c(h){return ju(h),Qc.path.convertPathToPattern(h)}t.convertPathToPattern=c;let f;(function(h){function E(S){return ju(S),Qc.path.escapePosixPath(S)}h.escapePath=E;function C(S){return ju(S),Qc.path.convertPosixPathToPattern(S)}h.convertPathToPattern=C})(f=t.posix||(t.posix={}));let p;(function(h){function E(S){return ju(S),Qc.path.escapeWindowsPath(S)}h.escapePath=E;function C(S){return ju(S),Qc.path.convertWindowsPathToPattern(S)}h.convertPathToPattern=C})(p=t.win32||(t.win32={}))})(E8||(E8={}));function I8(t,e,r){let s=[].concat(t),a=new y8.default(r),n=qce.generate(s,a),c=new e(a);return n.map(c.read,c)}function ju(t){if(![].concat(t).every(s=>Qc.string.isString(s)&&!Qc.string.isEmpty(s)))throw new TypeError("Patterns must be a string (non empty) or an array of strings")}Wce.exports=E8});var Nn={};Vt(Nn,{checksumFile:()=>vQ,checksumPattern:()=>SQ,makeHash:()=>cs});function cs(...t){let e=(0,BQ.createHash)("sha512"),r="";for(let s of t)typeof s=="string"?r+=s:s&&(r&&(e.update(r),r=""),e.update(s));return r&&e.update(r),e.digest("hex")}async function vQ(t,{baseFs:e,algorithm:r}={baseFs:ce,algorithm:"sha512"}){let s=await e.openPromise(t,"r");try{let n=Buffer.allocUnsafeSlow(65536),c=(0,BQ.createHash)(r),f=0;for(;(f=await e.readPromise(s,n,0,65536))!==0;)c.update(f===65536?n:n.slice(0,f));return c.digest("hex")}finally{await e.closePromise(s)}}async function SQ(t,{cwd:e}){let s=(await(0,C8.default)(t,{cwd:fe.fromPortablePath(e),onlyDirectories:!0})).map(f=>`${f}/**/*`),a=await(0,C8.default)([t,...s],{cwd:fe.fromPortablePath(e),onlyFiles:!1});a.sort();let n=await Promise.all(a.map(async f=>{let p=[Buffer.from(f)],h=J.join(e,fe.toPortablePath(f)),E=await ce.lstatPromise(h);return E.isSymbolicLink()?p.push(Buffer.from(await ce.readlinkPromise(h))):E.isFile()&&p.push(await ce.readFilePromise(h)),p.join("\0")})),c=(0,BQ.createHash)("sha512");for(let f of n)c.update(f);return c.digest("hex")}var BQ,C8,I0=Ze(()=>{Dt();BQ=Ie("crypto"),C8=ut(wQ())});var G={};Vt(G,{allPeerRequests:()=>qB,areDescriptorsEqual:()=>zce,areIdentsEqual:()=>UB,areLocatorsEqual:()=>_B,areVirtualPackagesEquivalent:()=>j$e,bindDescriptor:()=>_$e,bindLocator:()=>H$e,convertDescriptorToLocator:()=>DQ,convertLocatorToDescriptor:()=>B8,convertPackageToLocator:()=>L$e,convertToIdent:()=>O$e,convertToManifestRange:()=>X$e,copyPackage:()=>LB,devirtualizeDescriptor:()=>MB,devirtualizeLocator:()=>rI,ensureDevirtualizedDescriptor:()=>M$e,ensureDevirtualizedLocator:()=>U$e,getIdentVendorPath:()=>P8,isPackageCompatible:()=>QQ,isVirtualDescriptor:()=>kp,isVirtualLocator:()=>Gu,makeDescriptor:()=>On,makeIdent:()=>Da,makeLocator:()=>Ws,makeRange:()=>xQ,parseDescriptor:()=>C0,parseFileStyleRange:()=>z$e,parseIdent:()=>Sa,parseLocator:()=>Qp,parseRange:()=>em,prettyDependent:()=>$4,prettyDescriptor:()=>ni,prettyIdent:()=>Xi,prettyLocator:()=>Yr,prettyLocatorNoColors:()=>X4,prettyRange:()=>iI,prettyReference:()=>jB,prettyResolution:()=>FB,prettyWorkspace:()=>GB,renamePackage:()=>v8,slugifyIdent:()=>w8,slugifyLocator:()=>nI,sortDescriptors:()=>sI,stringifyDescriptor:()=>al,stringifyIdent:()=>un,stringifyLocator:()=>ll,tryParseDescriptor:()=>HB,tryParseIdent:()=>Zce,tryParseLocator:()=>bQ,tryParseRange:()=>K$e,unwrapIdentFromScope:()=>eet,virtualizeDescriptor:()=>S8,virtualizePackage:()=>D8,wrapIdentIntoScope:()=>$$e});function Da(t,e){if(t?.startsWith("@"))throw new Error("Invalid scope: don't prefix it with '@'");return{identHash:cs(t,e),scope:t,name:e}}function On(t,e){return{identHash:t.identHash,scope:t.scope,name:t.name,descriptorHash:cs(t.identHash,e),range:e}}function Ws(t,e){return{identHash:t.identHash,scope:t.scope,name:t.name,locatorHash:cs(t.identHash,e),reference:e}}function O$e(t){return{identHash:t.identHash,scope:t.scope,name:t.name}}function DQ(t){return{identHash:t.identHash,scope:t.scope,name:t.name,locatorHash:t.descriptorHash,reference:t.range}}function B8(t){return{identHash:t.identHash,scope:t.scope,name:t.name,descriptorHash:t.locatorHash,range:t.reference}}function L$e(t){return{identHash:t.identHash,scope:t.scope,name:t.name,locatorHash:t.locatorHash,reference:t.reference}}function v8(t,e){return{identHash:e.identHash,scope:e.scope,name:e.name,locatorHash:e.locatorHash,reference:e.reference,version:t.version,languageName:t.languageName,linkType:t.linkType,conditions:t.conditions,dependencies:new Map(t.dependencies),peerDependencies:new Map(t.peerDependencies),dependenciesMeta:new Map(t.dependenciesMeta),peerDependenciesMeta:new Map(t.peerDependenciesMeta),bin:new Map(t.bin)}}function LB(t){return v8(t,t)}function S8(t,e){if(e.includes("#"))throw new Error("Invalid entropy");return On(t,`virtual:${e}#${t.range}`)}function D8(t,e){if(e.includes("#"))throw new Error("Invalid entropy");return v8(t,Ws(t,`virtual:${e}#${t.reference}`))}function kp(t){return t.range.startsWith(OB)}function Gu(t){return t.reference.startsWith(OB)}function MB(t){if(!kp(t))throw new Error("Not a virtual descriptor");return On(t,t.range.replace(PQ,""))}function rI(t){if(!Gu(t))throw new Error("Not a virtual descriptor");return Ws(t,t.reference.replace(PQ,""))}function M$e(t){return kp(t)?On(t,t.range.replace(PQ,"")):t}function U$e(t){return Gu(t)?Ws(t,t.reference.replace(PQ,"")):t}function _$e(t,e){return t.range.includes("::")?t:On(t,`${t.range}::${tI.default.stringify(e)}`)}function H$e(t,e){return t.reference.includes("::")?t:Ws(t,`${t.reference}::${tI.default.stringify(e)}`)}function UB(t,e){return t.identHash===e.identHash}function zce(t,e){return t.descriptorHash===e.descriptorHash}function _B(t,e){return t.locatorHash===e.locatorHash}function j$e(t,e){if(!Gu(t))throw new Error("Invalid package type");if(!Gu(e))throw new Error("Invalid package type");if(!UB(t,e)||t.dependencies.size!==e.dependencies.size)return!1;for(let r of t.dependencies.values()){let s=e.dependencies.get(r.identHash);if(!s||!zce(r,s))return!1}return!0}function Sa(t){let e=Zce(t);if(!e)throw new Error(`Invalid ident (${t})`);return e}function Zce(t){let e=t.match(G$e);if(!e)return null;let[,r,s]=e;return Da(typeof r<"u"?r:null,s)}function C0(t,e=!1){let r=HB(t,e);if(!r)throw new Error(`Invalid descriptor (${t})`);return r}function HB(t,e=!1){let r=e?t.match(q$e):t.match(W$e);if(!r)return null;let[,s,a,n]=r;if(n==="unknown")throw new Error(`Invalid range (${t})`);let c=typeof s<"u"?s:null,f=typeof n<"u"?n:"unknown";return On(Da(c,a),f)}function Qp(t,e=!1){let r=bQ(t,e);if(!r)throw new Error(`Invalid locator (${t})`);return r}function bQ(t,e=!1){let r=e?t.match(Y$e):t.match(V$e);if(!r)return null;let[,s,a,n]=r;if(n==="unknown")throw new Error(`Invalid reference (${t})`);let c=typeof s<"u"?s:null,f=typeof n<"u"?n:"unknown";return Ws(Da(c,a),f)}function em(t,e){let r=t.match(J$e);if(r===null)throw new Error(`Invalid range (${t})`);let s=typeof r[1]<"u"?r[1]:null;if(typeof e?.requireProtocol=="string"&&s!==e.requireProtocol)throw new Error(`Invalid protocol (${s})`);if(e?.requireProtocol&&s===null)throw new Error(`Missing protocol (${s})`);let a=typeof r[3]<"u"?decodeURIComponent(r[2]):null;if(e?.requireSource&&a===null)throw new Error(`Missing source (${t})`);let n=typeof r[3]<"u"?decodeURIComponent(r[3]):decodeURIComponent(r[2]),c=e?.parseSelector?tI.default.parse(n):n,f=typeof r[4]<"u"?tI.default.parse(r[4]):null;return{protocol:s,source:a,selector:c,params:f}}function K$e(t,e){try{return em(t,e)}catch{return null}}function z$e(t,{protocol:e}){let{selector:r,params:s}=em(t,{requireProtocol:e,requireBindings:!0});if(typeof s.locator!="string")throw new Error(`Assertion failed: Invalid bindings for ${t}`);return{parentLocator:Qp(s.locator,!0),path:r}}function Yce(t){return t=t.replaceAll("%","%25"),t=t.replaceAll(":","%3A"),t=t.replaceAll("#","%23"),t}function Z$e(t){return t===null?!1:Object.entries(t).length>0}function xQ({protocol:t,source:e,selector:r,params:s}){let a="";return t!==null&&(a+=`${t}`),e!==null&&(a+=`${Yce(e)}#`),a+=Yce(r),Z$e(s)&&(a+=`::${tI.default.stringify(s)}`),a}function X$e(t){let{params:e,protocol:r,source:s,selector:a}=em(t);for(let n in e)n.startsWith("__")&&delete e[n];return xQ({protocol:r,source:s,params:e,selector:a})}function un(t){return t.scope?`@${t.scope}/${t.name}`:`${t.name}`}function $$e(t,e){return t.scope?Da(e,`${t.scope}__${t.name}`):Da(e,t.name)}function eet(t,e){if(t.scope!==e)return t;let r=t.name.indexOf("__");if(r===-1)return Da(null,t.name);let s=t.name.slice(0,r),a=t.name.slice(r+2);return Da(s,a)}function al(t){return t.scope?`@${t.scope}/${t.name}@${t.range}`:`${t.name}@${t.range}`}function ll(t){return t.scope?`@${t.scope}/${t.name}@${t.reference}`:`${t.name}@${t.reference}`}function w8(t){return t.scope!==null?`@${t.scope}-${t.name}`:t.name}function nI(t){let{protocol:e,selector:r}=em(t.reference),s=e!==null?e.replace(tet,""):"exotic",a=Vce.default.valid(r),n=a!==null?`${s}-${a}`:`${s}`,c=10;return t.scope?`${w8(t)}-${n}-${t.locatorHash.slice(0,c)}`:`${w8(t)}-${n}-${t.locatorHash.slice(0,c)}`}function Xi(t,e){return e.scope?`${Ht(t,`@${e.scope}/`,ht.SCOPE)}${Ht(t,e.name,ht.NAME)}`:`${Ht(t,e.name,ht.NAME)}`}function kQ(t){if(t.startsWith(OB)){let e=kQ(t.substring(t.indexOf("#")+1)),r=t.substring(OB.length,OB.length+F$e);return`${e} [${r}]`}else return t.replace(ret,"?[...]")}function iI(t,e){return`${Ht(t,kQ(e),ht.RANGE)}`}function ni(t,e){return`${Xi(t,e)}${Ht(t,"@",ht.RANGE)}${iI(t,e.range)}`}function jB(t,e){return`${Ht(t,kQ(e),ht.REFERENCE)}`}function Yr(t,e){return`${Xi(t,e)}${Ht(t,"@",ht.REFERENCE)}${jB(t,e.reference)}`}function X4(t){return`${un(t)}@${kQ(t.reference)}`}function sI(t){return qs(t,[e=>un(e),e=>e.range])}function GB(t,e){return Xi(t,e.anchoredLocator)}function FB(t,e,r){let s=kp(e)?MB(e):e;return r===null?`${ni(t,s)} \u2192 ${Z4(t).Cross}`:s.identHash===r.identHash?`${ni(t,s)} \u2192 ${jB(t,r.reference)}`:`${ni(t,s)} \u2192 ${Yr(t,r)}`}function $4(t,e,r){return r===null?`${Yr(t,e)}`:`${Yr(t,e)} (via ${iI(t,r.range)})`}function P8(t){return`node_modules/${un(t)}`}function QQ(t,e){return t.conditions?N$e(t.conditions,r=>{let[,s,a]=r.match(Kce),n=e[s];return n?n.includes(a):!0}):!0}function qB(t){let e=new Set;if("children"in t)e.add(t);else for(let r of t.requests.values())e.add(r);for(let r of e)for(let s of r.children.values())e.add(s);return e}var tI,Vce,Jce,OB,F$e,Kce,N$e,PQ,G$e,q$e,W$e,Y$e,V$e,J$e,tet,ret,Wo=Ze(()=>{tI=ut(Ie("querystring")),Vce=ut(Ai()),Jce=ut(dse());xc();I0();bc();Wo();OB="virtual:",F$e=5,Kce=/(os|cpu|libc)=([a-z0-9_-]+)/,N$e=(0,Jce.makeParser)(Kce);PQ=/^[^#]*#/;G$e=/^(?:@([^/]+?)\/)?([^@/]+)$/;q$e=/^(?:@([^/]+?)\/)?([^@/]+?)(?:@(.+))$/,W$e=/^(?:@([^/]+?)\/)?([^@/]+?)(?:@(.+))?$/;Y$e=/^(?:@([^/]+?)\/)?([^@/]+?)(?:@(.+))$/,V$e=/^(?:@([^/]+?)\/)?([^@/]+?)(?:@(.+))?$/;J$e=/^([^#:]*:)?((?:(?!::)[^#])*)(?:#((?:(?!::).)*))?(?:::(.*))?$/;tet=/:$/;ret=/\?.*/});var Xce,$ce=Ze(()=>{Wo();Xce={hooks:{reduceDependency:(t,e,r,s,{resolver:a,resolveOptions:n})=>{for(let{pattern:c,reference:f}of e.topLevelWorkspace.manifest.resolutions){if(c.from&&(c.from.fullName!==un(r)||e.configuration.normalizeLocator(Ws(Sa(c.from.fullName),c.from.description??r.reference)).locatorHash!==r.locatorHash)||c.descriptor.fullName!==un(t)||e.configuration.normalizeDependency(On(Qp(c.descriptor.fullName),c.descriptor.description??t.range)).descriptorHash!==t.descriptorHash)continue;return a.bindDescriptor(e.configuration.normalizeDependency(On(t,f)),e.topLevelWorkspace.anchoredLocator,n)}return t},validateProject:async(t,e)=>{for(let r of t.workspaces){let s=GB(t.configuration,r);await t.configuration.triggerHook(a=>a.validateWorkspace,r,{reportWarning:(a,n)=>e.reportWarning(a,`${s}: ${n}`),reportError:(a,n)=>e.reportError(a,`${s}: ${n}`)})}},validateWorkspace:async(t,e)=>{let{manifest:r}=t;r.resolutions.length&&t.cwd!==t.project.cwd&&r.errors.push(new Error("Resolutions field will be ignored"));for(let s of r.errors)e.reportWarning(57,s.message)}}}});var Ei,tm=Ze(()=>{Ei=class t{static{this.protocol="workspace:"}supportsDescriptor(e,r){return!!(e.range.startsWith(t.protocol)||r.project.tryWorkspaceByDescriptor(e)!==null)}supportsLocator(e,r){return!!e.reference.startsWith(t.protocol)}shouldPersistResolution(e,r){return!1}bindDescriptor(e,r,s){return e}getResolutionDependencies(e,r){return{}}async getCandidates(e,r,s){return[s.project.getWorkspaceByDescriptor(e).anchoredLocator]}async getSatisfying(e,r,s,a){let[n]=await this.getCandidates(e,r,a);return{locators:s.filter(c=>c.locatorHash===n.locatorHash),sorted:!1}}async resolve(e,r){let s=r.project.getWorkspaceByCwd(e.reference.slice(t.protocol.length));return{...e,version:s.manifest.version||"0.0.0",languageName:"unknown",linkType:"SOFT",conditions:null,dependencies:r.project.configuration.normalizeDependencyMap(new Map([...s.manifest.dependencies,...s.manifest.devDependencies])),peerDependencies:new Map([...s.manifest.peerDependencies]),dependenciesMeta:s.manifest.dependenciesMeta,peerDependenciesMeta:s.manifest.peerDependenciesMeta,bin:s.manifest.bin}}}});var Fr={};Vt(Fr,{SemVer:()=>iue.SemVer,clean:()=>iet,getComparator:()=>rue,mergeComparators:()=>b8,satisfiesWithPrereleases:()=>Xf,simplifyRanges:()=>x8,stringifyComparator:()=>nue,validRange:()=>cl});function Xf(t,e,r=!1){if(!t)return!1;let s=`${e}${r}`,a=eue.get(s);if(typeof a>"u")try{a=new Rp.default.Range(e,{includePrerelease:!0,loose:r})}catch{return!1}finally{eue.set(s,a||null)}else if(a===null)return!1;let n;try{n=new Rp.default.SemVer(t,a)}catch{return!1}return a.test(n)?!0:(n.prerelease&&(n.prerelease=[]),a.set.some(c=>{for(let f of c)f.semver.prerelease&&(f.semver.prerelease=[]);return c.every(f=>f.test(n))}))}function cl(t){if(t.indexOf(":")!==-1)return null;let e=tue.get(t);if(typeof e<"u")return e;try{e=new Rp.default.Range(t)}catch{e=null}return tue.set(t,e),e}function iet(t){let e=net.exec(t);return e?e[1]:null}function rue(t){if(t.semver===Rp.default.Comparator.ANY)return{gt:null,lt:null};switch(t.operator){case"":return{gt:[">=",t.semver],lt:["<=",t.semver]};case">":case">=":return{gt:[t.operator,t.semver],lt:null};case"<":case"<=":return{gt:null,lt:[t.operator,t.semver]};default:throw new Error(`Assertion failed: Unexpected comparator operator (${t.operator})`)}}function b8(t){if(t.length===0)return null;let e=null,r=null;for(let s of t){if(s.gt){let a=e!==null?Rp.default.compare(s.gt[1],e[1]):null;(a===null||a>0||a===0&&s.gt[0]===">")&&(e=s.gt)}if(s.lt){let a=r!==null?Rp.default.compare(s.lt[1],r[1]):null;(a===null||a<0||a===0&&s.lt[0]==="<")&&(r=s.lt)}}if(e&&r){let s=Rp.default.compare(e[1],r[1]);if(s===0&&(e[0]===">"||r[0]==="<")||s>0)return null}return{gt:e,lt:r}}function nue(t){if(t.gt&&t.lt){if(t.gt[0]===">="&&t.lt[0]==="<="&&t.gt[1].version===t.lt[1].version)return t.gt[1].version;if(t.gt[0]===">="&&t.lt[0]==="<"){if(t.lt[1].version===`${t.gt[1].major+1}.0.0-0`)return`^${t.gt[1].version}`;if(t.lt[1].version===`${t.gt[1].major}.${t.gt[1].minor+1}.0-0`)return`~${t.gt[1].version}`}}let e=[];return t.gt&&e.push(t.gt[0]+t.gt[1].version),t.lt&&e.push(t.lt[0]+t.lt[1].version),e.length?e.join(" "):"*"}function x8(t){let e=t.map(set).map(s=>cl(s).set.map(a=>a.map(n=>rue(n)))),r=e.shift().map(s=>b8(s)).filter(s=>s!==null);for(let s of e){let a=[];for(let n of r)for(let c of s){let f=b8([n,...c]);f!==null&&a.push(f)}r=a}return r.length===0?null:r.map(s=>nue(s)).join(" || ")}function set(t){let e=t.split("||");if(e.length>1){let r=new Set;for(let s of e)e.some(a=>a!==s&&Rp.default.subset(s,a))||r.add(s);if(r.size{Rp=ut(Ai()),iue=ut(Ai()),eue=new Map;tue=new Map;net=/^(?:[\sv=]*?)((0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-((?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+([0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?)(?:\s*)$/});function sue(t){let e=t.match(/^[ \t]+/m);return e?e[0]:" "}function oue(t){return t.charCodeAt(0)===65279?t.slice(1):t}function Pa(t){return t.replace(/\\/g,"/")}function RQ(t,{yamlCompatibilityMode:e}){return e?q4(t):typeof t>"u"||typeof t=="boolean"?t:null}function aue(t,e){let r=e.search(/[^!]/);if(r===-1)return"invalid";let s=r%2===0?"":"!",a=e.slice(r);return`${s}${t}=${a}`}function k8(t,e){return e.length===1?aue(t,e[0]):`(${e.map(r=>aue(t,r)).join(" | ")})`}var lue,Ut,oI=Ze(()=>{Dt();wc();lue=ut(Ai());tm();bc();Tp();Wo();Ut=class t{constructor(){this.indent=" ";this.name=null;this.version=null;this.os=null;this.cpu=null;this.libc=null;this.type=null;this.packageManager=null;this.private=!1;this.license=null;this.main=null;this.module=null;this.browser=null;this.languageName=null;this.bin=new Map;this.scripts=new Map;this.dependencies=new Map;this.devDependencies=new Map;this.peerDependencies=new Map;this.workspaceDefinitions=[];this.dependenciesMeta=new Map;this.peerDependenciesMeta=new Map;this.resolutions=[];this.files=null;this.publishConfig=null;this.installConfig=null;this.preferUnplugged=null;this.raw={};this.errors=[]}static{this.fileName="package.json"}static{this.allDependencies=["dependencies","devDependencies","peerDependencies"]}static{this.hardDependencies=["dependencies","devDependencies"]}static async tryFind(e,{baseFs:r=new Yn}={}){let s=J.join(e,"package.json");try{return await t.fromFile(s,{baseFs:r})}catch(a){if(a.code==="ENOENT")return null;throw a}}static async find(e,{baseFs:r}={}){let s=await t.tryFind(e,{baseFs:r});if(s===null)throw new Error("Manifest not found");return s}static async fromFile(e,{baseFs:r=new Yn}={}){let s=new t;return await s.loadFile(e,{baseFs:r}),s}static fromText(e){let r=new t;return r.loadFromText(e),r}loadFromText(e){let r;try{r=JSON.parse(oue(e)||"{}")}catch(s){throw s.message+=` (when parsing ${e})`,s}this.load(r),this.indent=sue(e)}async loadFile(e,{baseFs:r=new Yn}){let s=await r.readFilePromise(e,"utf8"),a;try{a=JSON.parse(oue(s)||"{}")}catch(n){throw n.message+=` (when parsing ${e})`,n}this.load(a),this.indent=sue(s)}load(e,{yamlCompatibilityMode:r=!1}={}){if(typeof e!="object"||e===null)throw new Error(`Utterly invalid manifest data (${e})`);this.raw=e;let s=[];if(this.name=null,typeof e.name=="string")try{this.name=Sa(e.name)}catch{s.push(new Error("Parsing failed for the 'name' field"))}if(typeof e.version=="string"?this.version=e.version:this.version=null,Array.isArray(e.os)){let n=[];this.os=n;for(let c of e.os)typeof c!="string"?s.push(new Error("Parsing failed for the 'os' field")):n.push(c)}else this.os=null;if(Array.isArray(e.cpu)){let n=[];this.cpu=n;for(let c of e.cpu)typeof c!="string"?s.push(new Error("Parsing failed for the 'cpu' field")):n.push(c)}else this.cpu=null;if(Array.isArray(e.libc)){let n=[];this.libc=n;for(let c of e.libc)typeof c!="string"?s.push(new Error("Parsing failed for the 'libc' field")):n.push(c)}else this.libc=null;if(typeof e.type=="string"?this.type=e.type:this.type=null,typeof e.packageManager=="string"?this.packageManager=e.packageManager:this.packageManager=null,typeof e.private=="boolean"?this.private=e.private:this.private=!1,typeof e.license=="string"?this.license=e.license:this.license=null,typeof e.languageName=="string"?this.languageName=e.languageName:this.languageName=null,typeof e.main=="string"?this.main=Pa(e.main):this.main=null,typeof e.module=="string"?this.module=Pa(e.module):this.module=null,e.browser!=null)if(typeof e.browser=="string")this.browser=Pa(e.browser);else{this.browser=new Map;for(let[n,c]of Object.entries(e.browser))this.browser.set(Pa(n),typeof c=="string"?Pa(c):c)}else this.browser=null;if(this.bin=new Map,typeof e.bin=="string")e.bin.trim()===""?s.push(new Error("Invalid bin field")):this.name!==null?this.bin.set(this.name.name,Pa(e.bin)):s.push(new Error("String bin field, but no attached package name"));else if(typeof e.bin=="object"&&e.bin!==null)for(let[n,c]of Object.entries(e.bin)){if(typeof c!="string"||c.trim()===""){s.push(new Error(`Invalid bin definition for '${n}'`));continue}let f=Sa(n);this.bin.set(f.name,Pa(c))}if(this.scripts=new Map,typeof e.scripts=="object"&&e.scripts!==null)for(let[n,c]of Object.entries(e.scripts)){if(typeof c!="string"){s.push(new Error(`Invalid script definition for '${n}'`));continue}this.scripts.set(n,c)}if(this.dependencies=new Map,typeof e.dependencies=="object"&&e.dependencies!==null)for(let[n,c]of Object.entries(e.dependencies)){if(typeof c!="string"){s.push(new Error(`Invalid dependency range for '${n}'`));continue}let f;try{f=Sa(n)}catch{s.push(new Error(`Parsing failed for the dependency name '${n}'`));continue}let p=On(f,c);this.dependencies.set(p.identHash,p)}if(this.devDependencies=new Map,typeof e.devDependencies=="object"&&e.devDependencies!==null)for(let[n,c]of Object.entries(e.devDependencies)){if(typeof c!="string"){s.push(new Error(`Invalid dependency range for '${n}'`));continue}let f;try{f=Sa(n)}catch{s.push(new Error(`Parsing failed for the dependency name '${n}'`));continue}let p=On(f,c);this.devDependencies.set(p.identHash,p)}if(this.peerDependencies=new Map,typeof e.peerDependencies=="object"&&e.peerDependencies!==null)for(let[n,c]of Object.entries(e.peerDependencies)){let f;try{f=Sa(n)}catch{s.push(new Error(`Parsing failed for the dependency name '${n}'`));continue}(typeof c!="string"||!c.startsWith(Ei.protocol)&&!cl(c))&&(s.push(new Error(`Invalid dependency range for '${n}'`)),c="*");let p=On(f,c);this.peerDependencies.set(p.identHash,p)}typeof e.workspaces=="object"&&e.workspaces!==null&&e.workspaces.nohoist&&s.push(new Error("'nohoist' is deprecated, please use 'installConfig.hoistingLimits' instead"));let a=Array.isArray(e.workspaces)?e.workspaces:typeof e.workspaces=="object"&&e.workspaces!==null&&Array.isArray(e.workspaces.packages)?e.workspaces.packages:[];this.workspaceDefinitions=[];for(let n of a){if(typeof n!="string"){s.push(new Error(`Invalid workspace definition for '${n}'`));continue}this.workspaceDefinitions.push({pattern:n})}if(this.dependenciesMeta=new Map,typeof e.dependenciesMeta=="object"&&e.dependenciesMeta!==null)for(let[n,c]of Object.entries(e.dependenciesMeta)){if(typeof c!="object"||c===null){s.push(new Error(`Invalid meta field for '${n}`));continue}let f=C0(n),p=this.ensureDependencyMeta(f),h=RQ(c.built,{yamlCompatibilityMode:r});if(h===null){s.push(new Error(`Invalid built meta field for '${n}'`));continue}let E=RQ(c.optional,{yamlCompatibilityMode:r});if(E===null){s.push(new Error(`Invalid optional meta field for '${n}'`));continue}let C=RQ(c.unplugged,{yamlCompatibilityMode:r});if(C===null){s.push(new Error(`Invalid unplugged meta field for '${n}'`));continue}Object.assign(p,{built:h,optional:E,unplugged:C})}if(this.peerDependenciesMeta=new Map,typeof e.peerDependenciesMeta=="object"&&e.peerDependenciesMeta!==null)for(let[n,c]of Object.entries(e.peerDependenciesMeta)){if(typeof c!="object"||c===null){s.push(new Error(`Invalid meta field for '${n}'`));continue}let f=C0(n),p=this.ensurePeerDependencyMeta(f),h=RQ(c.optional,{yamlCompatibilityMode:r});if(h===null){s.push(new Error(`Invalid optional meta field for '${n}'`));continue}Object.assign(p,{optional:h})}if(this.resolutions=[],typeof e.resolutions=="object"&&e.resolutions!==null)for(let[n,c]of Object.entries(e.resolutions)){if(typeof c!="string"){s.push(new Error(`Invalid resolution entry for '${n}'`));continue}try{this.resolutions.push({pattern:px(n),reference:c})}catch(f){s.push(f);continue}}if(Array.isArray(e.files)){this.files=new Set;for(let n of e.files){if(typeof n!="string"){s.push(new Error(`Invalid files entry for '${n}'`));continue}this.files.add(n)}}else this.files=null;if(typeof e.publishConfig=="object"&&e.publishConfig!==null){if(this.publishConfig={},typeof e.publishConfig.access=="string"&&(this.publishConfig.access=e.publishConfig.access),typeof e.publishConfig.main=="string"&&(this.publishConfig.main=Pa(e.publishConfig.main)),typeof e.publishConfig.module=="string"&&(this.publishConfig.module=Pa(e.publishConfig.module)),e.publishConfig.browser!=null)if(typeof e.publishConfig.browser=="string")this.publishConfig.browser=Pa(e.publishConfig.browser);else{this.publishConfig.browser=new Map;for(let[n,c]of Object.entries(e.publishConfig.browser))this.publishConfig.browser.set(Pa(n),typeof c=="string"?Pa(c):c)}if(typeof e.publishConfig.registry=="string"&&(this.publishConfig.registry=e.publishConfig.registry),typeof e.publishConfig.provenance=="boolean"&&(this.publishConfig.provenance=e.publishConfig.provenance),typeof e.publishConfig.bin=="string")this.name!==null?this.publishConfig.bin=new Map([[this.name.name,Pa(e.publishConfig.bin)]]):s.push(new Error("String bin field, but no attached package name"));else if(typeof e.publishConfig.bin=="object"&&e.publishConfig.bin!==null){this.publishConfig.bin=new Map;for(let[n,c]of Object.entries(e.publishConfig.bin)){if(typeof c!="string"){s.push(new Error(`Invalid bin definition for '${n}'`));continue}this.publishConfig.bin.set(n,Pa(c))}}if(Array.isArray(e.publishConfig.executableFiles)){this.publishConfig.executableFiles=new Set;for(let n of e.publishConfig.executableFiles){if(typeof n!="string"){s.push(new Error("Invalid executable file definition"));continue}this.publishConfig.executableFiles.add(Pa(n))}}}else this.publishConfig=null;if(typeof e.installConfig=="object"&&e.installConfig!==null){this.installConfig={};for(let n of Object.keys(e.installConfig))n==="hoistingLimits"?typeof e.installConfig.hoistingLimits=="string"?this.installConfig.hoistingLimits=e.installConfig.hoistingLimits:s.push(new Error("Invalid hoisting limits definition")):n=="selfReferences"?typeof e.installConfig.selfReferences=="boolean"?this.installConfig.selfReferences=e.installConfig.selfReferences:s.push(new Error("Invalid selfReferences definition, must be a boolean value")):s.push(new Error(`Unrecognized installConfig key: ${n}`))}else this.installConfig=null;if(typeof e.optionalDependencies=="object"&&e.optionalDependencies!==null)for(let[n,c]of Object.entries(e.optionalDependencies)){if(typeof c!="string"){s.push(new Error(`Invalid dependency range for '${n}'`));continue}let f;try{f=Sa(n)}catch{s.push(new Error(`Parsing failed for the dependency name '${n}'`));continue}let p=On(f,c);this.dependencies.set(p.identHash,p);let h=On(f,"unknown"),E=this.ensureDependencyMeta(h);Object.assign(E,{optional:!0})}typeof e.preferUnplugged=="boolean"?this.preferUnplugged=e.preferUnplugged:this.preferUnplugged=null,this.errors=s}getForScope(e){switch(e){case"dependencies":return this.dependencies;case"devDependencies":return this.devDependencies;case"peerDependencies":return this.peerDependencies;default:throw new Error(`Unsupported value ("${e}")`)}}hasConsumerDependency(e){return!!(this.dependencies.has(e.identHash)||this.peerDependencies.has(e.identHash))}hasHardDependency(e){return!!(this.dependencies.has(e.identHash)||this.devDependencies.has(e.identHash))}hasSoftDependency(e){return!!this.peerDependencies.has(e.identHash)}hasDependency(e){return!!(this.hasHardDependency(e)||this.hasSoftDependency(e))}getConditions(){let e=[];return this.os&&this.os.length>0&&e.push(k8("os",this.os)),this.cpu&&this.cpu.length>0&&e.push(k8("cpu",this.cpu)),this.libc&&this.libc.length>0&&e.push(k8("libc",this.libc)),e.length>0?e.join(" & "):null}ensureDependencyMeta(e){if(e.range!=="unknown"&&!lue.default.valid(e.range))throw new Error(`Invalid meta field range for '${al(e)}'`);let r=un(e),s=e.range!=="unknown"?e.range:null,a=this.dependenciesMeta.get(r);a||this.dependenciesMeta.set(r,a=new Map);let n=a.get(s);return n||a.set(s,n={}),n}ensurePeerDependencyMeta(e){if(e.range!=="unknown")throw new Error(`Invalid meta field range for '${al(e)}'`);let r=un(e),s=this.peerDependenciesMeta.get(r);return s||this.peerDependenciesMeta.set(r,s={}),s}setRawField(e,r,{after:s=[]}={}){let a=new Set(s.filter(n=>Object.hasOwn(this.raw,n)));if(a.size===0||Object.hasOwn(this.raw,e))this.raw[e]=r;else{let n=this.raw,c=this.raw={},f=!1;for(let p of Object.keys(n))c[p]=n[p],f||(a.delete(p),a.size===0&&(c[e]=r,f=!0))}}exportTo(e,{compatibilityMode:r=!0}={}){if(Object.assign(e,this.raw),this.name!==null?e.name=un(this.name):delete e.name,this.version!==null?e.version=this.version:delete e.version,this.os!==null?e.os=this.os:delete e.os,this.cpu!==null?e.cpu=this.cpu:delete e.cpu,this.type!==null?e.type=this.type:delete e.type,this.packageManager!==null?e.packageManager=this.packageManager:delete e.packageManager,this.private?e.private=!0:delete e.private,this.license!==null?e.license=this.license:delete e.license,this.languageName!==null?e.languageName=this.languageName:delete e.languageName,this.main!==null?e.main=this.main:delete e.main,this.module!==null?e.module=this.module:delete e.module,this.browser!==null){let n=this.browser;typeof n=="string"?e.browser=n:n instanceof Map&&(e.browser=Object.assign({},...Array.from(n.keys()).sort().map(c=>({[c]:n.get(c)}))))}else delete e.browser;this.bin.size===1&&this.name!==null&&this.bin.has(this.name.name)?e.bin=this.bin.get(this.name.name):this.bin.size>0?e.bin=Object.assign({},...Array.from(this.bin.keys()).sort().map(n=>({[n]:this.bin.get(n)}))):delete e.bin,this.workspaceDefinitions.length>0?this.raw.workspaces&&!Array.isArray(this.raw.workspaces)?e.workspaces={...this.raw.workspaces,packages:this.workspaceDefinitions.map(({pattern:n})=>n)}:e.workspaces=this.workspaceDefinitions.map(({pattern:n})=>n):this.raw.workspaces&&!Array.isArray(this.raw.workspaces)&&Object.keys(this.raw.workspaces).length>0?e.workspaces=this.raw.workspaces:delete e.workspaces;let s=[],a=[];for(let n of this.dependencies.values()){let c=this.dependenciesMeta.get(un(n)),f=!1;if(r&&c){let p=c.get(null);p&&p.optional&&(f=!0)}f?a.push(n):s.push(n)}s.length>0?e.dependencies=Object.assign({},...sI(s).map(n=>({[un(n)]:n.range}))):delete e.dependencies,a.length>0?e.optionalDependencies=Object.assign({},...sI(a).map(n=>({[un(n)]:n.range}))):delete e.optionalDependencies,this.devDependencies.size>0?e.devDependencies=Object.assign({},...sI(this.devDependencies.values()).map(n=>({[un(n)]:n.range}))):delete e.devDependencies,this.peerDependencies.size>0?e.peerDependencies=Object.assign({},...sI(this.peerDependencies.values()).map(n=>({[un(n)]:n.range}))):delete e.peerDependencies,e.dependenciesMeta={};for(let[n,c]of qs(this.dependenciesMeta.entries(),([f,p])=>f))for(let[f,p]of qs(c.entries(),([h,E])=>h!==null?`0${h}`:"1")){let h=f!==null?al(On(Sa(n),f)):n,E={...p};r&&f===null&&delete E.optional,Object.keys(E).length!==0&&(e.dependenciesMeta[h]=E)}if(Object.keys(e.dependenciesMeta).length===0&&delete e.dependenciesMeta,this.peerDependenciesMeta.size>0?e.peerDependenciesMeta=Object.assign({},...qs(this.peerDependenciesMeta.entries(),([n,c])=>n).map(([n,c])=>({[n]:c}))):delete e.peerDependenciesMeta,this.resolutions.length>0?e.resolutions=Object.assign({},...this.resolutions.map(({pattern:n,reference:c})=>({[hx(n)]:c}))):delete e.resolutions,this.files!==null?e.files=Array.from(this.files):delete e.files,this.preferUnplugged!==null?e.preferUnplugged=this.preferUnplugged:delete e.preferUnplugged,this.scripts!==null&&this.scripts.size>0){e.scripts??={};for(let n of Object.keys(e.scripts))this.scripts.has(n)||delete e.scripts[n];for(let[n,c]of this.scripts.entries())e.scripts[n]=c}else delete e.scripts;return e}}});function aet(t){return typeof t.reportCode<"u"}var cue,uue,oet,jt,Ao,Rc=Ze(()=>{ql();cue=Ie("stream"),uue=Ie("string_decoder"),oet=15,jt=class extends Error{constructor(r,s,a){super(s);this.reportExtra=a;this.reportCode=r}};Ao=class{constructor(){this.cacheHits=new Set;this.cacheMisses=new Set;this.reportedInfos=new Set;this.reportedWarnings=new Set;this.reportedErrors=new Set}getRecommendedLength(){return 180}reportCacheHit(e){this.cacheHits.add(e.locatorHash)}reportCacheMiss(e,r){this.cacheMisses.add(e.locatorHash)}static progressViaCounter(e){let r=0,s,a=new Promise(p=>{s=p}),n=p=>{let h=s;a=new Promise(E=>{s=E}),r=p,h()},c=(p=0)=>{n(r+1)},f=async function*(){for(;r{r=c}),a=k4(c=>{let f=r;s=new Promise(p=>{r=p}),e=c,f()},1e3/oet),n=async function*(){for(;;)await s,yield{title:e}}();return{[Symbol.asyncIterator](){return n},hasProgress:!1,hasTitle:!0,setTitle:a}}async startProgressPromise(e,r){let s=this.reportProgress(e);try{return await r(e)}finally{s.stop()}}startProgressSync(e,r){let s=this.reportProgress(e);try{return r(e)}finally{s.stop()}}reportInfoOnce(e,r,s){let a=s&&s.key?s.key:r;this.reportedInfos.has(a)||(this.reportedInfos.add(a),this.reportInfo(e,r),s?.reportExtra?.(this))}reportWarningOnce(e,r,s){let a=s&&s.key?s.key:r;this.reportedWarnings.has(a)||(this.reportedWarnings.add(a),this.reportWarning(e,r),s?.reportExtra?.(this))}reportErrorOnce(e,r,s){let a=s&&s.key?s.key:r;this.reportedErrors.has(a)||(this.reportedErrors.add(a),this.reportError(e,r),s?.reportExtra?.(this))}reportExceptionOnce(e){aet(e)?this.reportErrorOnce(e.reportCode,e.message,{key:e,reportExtra:e.reportExtra}):this.reportErrorOnce(1,e.stack||e.message,{key:e})}createStreamReporter(e=null){let r=new cue.PassThrough,s=new uue.StringDecoder,a="";return r.on("data",n=>{let c=s.write(n),f;do if(f=c.indexOf(` `),f!==-1){let p=a+c.substring(0,f);c=c.substring(f+1),a="",e!==null?this.reportInfo(null,`${e} ${p}`):this.reportInfo(null,p)}while(f!==-1);a+=c}),r.on("end",()=>{let n=s.end();n!==""&&(e!==null?this.reportInfo(null,`${e} ${n}`):this.reportInfo(null,n))}),r}}});var aI,Q8=Ze(()=>{Rc();Wo();aI=class{constructor(e){this.fetchers=e}supports(e,r){return!!this.tryFetcher(e,r)}getLocalPath(e,r){return this.getFetcher(e,r).getLocalPath(e,r)}async fetch(e,r){return await this.getFetcher(e,r).fetch(e,r)}tryFetcher(e,r){let s=this.fetchers.find(a=>a.supports(e,r));return s||null}getFetcher(e,r){let s=this.fetchers.find(a=>a.supports(e,r));if(!s)throw new jt(11,`${Yr(r.project.configuration,e)} isn't supported by any available fetcher`);return s}}});var rm,R8=Ze(()=>{Wo();rm=class{constructor(e){this.resolvers=e.filter(r=>r)}supportsDescriptor(e,r){return!!this.tryResolverByDescriptor(e,r)}supportsLocator(e,r){return!!this.tryResolverByLocator(e,r)}shouldPersistResolution(e,r){return this.getResolverByLocator(e,r).shouldPersistResolution(e,r)}bindDescriptor(e,r,s){return this.getResolverByDescriptor(e,s).bindDescriptor(e,r,s)}getResolutionDependencies(e,r){return this.getResolverByDescriptor(e,r).getResolutionDependencies(e,r)}async getCandidates(e,r,s){return await this.getResolverByDescriptor(e,s).getCandidates(e,r,s)}async getSatisfying(e,r,s,a){return this.getResolverByDescriptor(e,a).getSatisfying(e,r,s,a)}async resolve(e,r){return await this.getResolverByLocator(e,r).resolve(e,r)}tryResolverByDescriptor(e,r){let s=this.resolvers.find(a=>a.supportsDescriptor(e,r));return s||null}getResolverByDescriptor(e,r){let s=this.resolvers.find(a=>a.supportsDescriptor(e,r));if(!s)throw new Error(`${ni(r.project.configuration,e)} isn't supported by any available resolver`);return s}tryResolverByLocator(e,r){let s=this.resolvers.find(a=>a.supportsLocator(e,r));return s||null}getResolverByLocator(e,r){let s=this.resolvers.find(a=>a.supportsLocator(e,r));if(!s)throw new Error(`${Yr(r.project.configuration,e)} isn't supported by any available resolver`);return s}}});var lI,T8=Ze(()=>{Dt();Wo();lI=class{supports(e){return!!e.reference.startsWith("virtual:")}getLocalPath(e,r){let s=e.reference.indexOf("#");if(s===-1)throw new Error("Invalid virtual package reference");let a=e.reference.slice(s+1),n=Ws(e,a);return r.fetcher.getLocalPath(n,r)}async fetch(e,r){let s=e.reference.indexOf("#");if(s===-1)throw new Error("Invalid virtual package reference");let a=e.reference.slice(s+1),n=Ws(e,a),c=await r.fetcher.fetch(n,r);return await this.ensureVirtualLink(e,c,r)}getLocatorFilename(e){return nI(e)}async ensureVirtualLink(e,r,s){let a=r.packageFs.getRealPath(),n=s.project.configuration.get("virtualFolder"),c=this.getLocatorFilename(e),f=uo.makeVirtualPath(n,c,a),p=new _f(f,{baseFs:r.packageFs,pathUtils:J});return{...r,packageFs:p}}}});var TQ,fue=Ze(()=>{TQ=class t{static{this.protocol="virtual:"}static isVirtualDescriptor(e){return!!e.range.startsWith(t.protocol)}static isVirtualLocator(e){return!!e.reference.startsWith(t.protocol)}supportsDescriptor(e,r){return t.isVirtualDescriptor(e)}supportsLocator(e,r){return t.isVirtualLocator(e)}shouldPersistResolution(e,r){return!1}bindDescriptor(e,r,s){throw new Error('Assertion failed: calling "bindDescriptor" on a virtual descriptor is unsupported')}getResolutionDependencies(e,r){throw new Error('Assertion failed: calling "getResolutionDependencies" on a virtual descriptor is unsupported')}async getCandidates(e,r,s){throw new Error('Assertion failed: calling "getCandidates" on a virtual descriptor is unsupported')}async getSatisfying(e,r,s,a){throw new Error('Assertion failed: calling "getSatisfying" on a virtual descriptor is unsupported')}async resolve(e,r){throw new Error('Assertion failed: calling "resolve" on a virtual locator is unsupported')}}});var cI,F8=Ze(()=>{Dt();tm();cI=class{supports(e){return!!e.reference.startsWith(Ei.protocol)}getLocalPath(e,r){return this.getWorkspace(e,r).cwd}async fetch(e,r){let s=this.getWorkspace(e,r).cwd;return{packageFs:new Sn(s),prefixPath:vt.dot,localPath:s}}getWorkspace(e,r){return r.project.getWorkspaceByCwd(e.reference.slice(Ei.protocol.length))}}});function WB(t){return typeof t=="object"&&t!==null&&!Array.isArray(t)}function Aue(t){return typeof t>"u"?3:WB(t)?0:Array.isArray(t)?1:2}function L8(t,e){return Object.hasOwn(t,e)}function uet(t){return WB(t)&&L8(t,"onConflict")&&typeof t.onConflict=="string"}function fet(t){if(typeof t>"u")return{onConflict:"default",value:t};if(!uet(t))return{onConflict:"default",value:t};if(L8(t,"value"))return t;let{onConflict:e,...r}=t;return{onConflict:e,value:r}}function pue(t,e){let r=WB(t)&&L8(t,e)?t[e]:void 0;return fet(r)}function uI(t,e){return[t,e,hue]}function M8(t){return Array.isArray(t)?t[2]===hue:!1}function N8(t,e){if(WB(t)){let r={};for(let s of Object.keys(t))r[s]=N8(t[s],e);return uI(e,r)}return Array.isArray(t)?uI(e,t.map(r=>N8(r,e))):uI(e,t)}function O8(t,e,r,s,a){let n,c=[],f=a,p=0;for(let E=a-1;E>=s;--E){let[C,S]=t[E],{onConflict:b,value:I}=pue(S,r),T=Aue(I);if(T!==3){if(n??=T,T!==n||b==="hardReset"){p=f;break}if(T===2)return uI(C,I);if(c.unshift([C,I]),b==="reset"){p=E;break}b==="extend"&&E===s&&(s=0),f=E}}if(typeof n>"u")return null;let h=c.map(([E])=>E).join(", ");switch(n){case 1:return uI(h,new Array().concat(...c.map(([E,C])=>C.map(S=>N8(S,E)))));case 0:{let E=Object.assign({},...c.map(([,T])=>T)),C=Object.keys(E),S={},b=t.map(([T,N])=>[T,pue(N,r).value]),I=cet(b,([T,N])=>{let U=Aue(N);return U!==0&&U!==3});if(I!==-1){let T=b.slice(I+1);for(let N of C)S[N]=O8(T,e,N,0,T.length)}else for(let T of C)S[T]=O8(b,e,T,p,b.length);return uI(h,S)}default:throw new Error("Assertion failed: Non-extendable value type")}}function gue(t){return O8(t.map(([e,r])=>[e,{".":r}]),[],".",0,t.length)}function YB(t){return M8(t)?t[1]:t}function FQ(t){let e=M8(t)?t[1]:t;if(Array.isArray(e))return e.map(r=>FQ(r));if(WB(e)){let r={};for(let[s,a]of Object.entries(e))r[s]=FQ(a);return r}return e}function U8(t){return M8(t)?t[0]:null}var cet,hue,due=Ze(()=>{cet=(t,e,r)=>{let s=[...t];return s.reverse(),s.findIndex(e,r)};hue=Symbol()});var NQ={};Vt(NQ,{getDefaultGlobalFolder:()=>H8,getHomeFolder:()=>fI,isFolderInside:()=>j8});function H8(){if(process.platform==="win32"){let t=fe.toPortablePath(process.env.LOCALAPPDATA||fe.join((0,_8.homedir)(),"AppData","Local"));return J.resolve(t,"Yarn/Berry")}if(process.env.XDG_DATA_HOME){let t=fe.toPortablePath(process.env.XDG_DATA_HOME);return J.resolve(t,"yarn/berry")}return J.resolve(fI(),".yarn/berry")}function fI(){return fe.toPortablePath((0,_8.homedir)()||"/usr/local/share")}function j8(t,e){let r=J.relative(e,t);return r&&!r.startsWith("..")&&!J.isAbsolute(r)}var _8,OQ=Ze(()=>{Dt();_8=Ie("os")});var Eue=_((uMt,yue)=>{"use strict";var G8=Ie("https"),q8=Ie("http"),{URL:mue}=Ie("url"),W8=class extends q8.Agent{constructor(e){let{proxy:r,proxyRequestOptions:s,...a}=e;super(a),this.proxy=typeof r=="string"?new mue(r):r,this.proxyRequestOptions=s||{}}createConnection(e,r){let s={...this.proxyRequestOptions,method:"CONNECT",host:this.proxy.hostname,port:this.proxy.port,path:`${e.host}:${e.port}`,setHost:!1,headers:{...this.proxyRequestOptions.headers,connection:this.keepAlive?"keep-alive":"close",host:`${e.host}:${e.port}`},agent:!1,timeout:e.timeout||0};if(this.proxy.username||this.proxy.password){let n=Buffer.from(`${decodeURIComponent(this.proxy.username||"")}:${decodeURIComponent(this.proxy.password||"")}`).toString("base64");s.headers["proxy-authorization"]=`Basic ${n}`}this.proxy.protocol==="https:"&&(s.servername=this.proxy.hostname);let a=(this.proxy.protocol==="http:"?q8:G8).request(s);a.once("connect",(n,c,f)=>{a.removeAllListeners(),c.removeAllListeners(),n.statusCode===200?r(null,c):(c.destroy(),r(new Error(`Bad response: ${n.statusCode}`),null))}),a.once("timeout",()=>{a.destroy(new Error("Proxy timeout"))}),a.once("error",n=>{a.removeAllListeners(),r(n,null)}),a.end()}},Y8=class extends G8.Agent{constructor(e){let{proxy:r,proxyRequestOptions:s,...a}=e;super(a),this.proxy=typeof r=="string"?new mue(r):r,this.proxyRequestOptions=s||{}}createConnection(e,r){let s={...this.proxyRequestOptions,method:"CONNECT",host:this.proxy.hostname,port:this.proxy.port,path:`${e.host}:${e.port}`,setHost:!1,headers:{...this.proxyRequestOptions.headers,connection:this.keepAlive?"keep-alive":"close",host:`${e.host}:${e.port}`},agent:!1,timeout:e.timeout||0};if(this.proxy.username||this.proxy.password){let n=Buffer.from(`${decodeURIComponent(this.proxy.username||"")}:${decodeURIComponent(this.proxy.password||"")}`).toString("base64");s.headers["proxy-authorization"]=`Basic ${n}`}this.proxy.protocol==="https:"&&(s.servername=this.proxy.hostname);let a=(this.proxy.protocol==="http:"?q8:G8).request(s);a.once("connect",(n,c,f)=>{if(a.removeAllListeners(),c.removeAllListeners(),n.statusCode===200){let p=super.createConnection({...e,socket:c});r(null,p)}else c.destroy(),r(new Error(`Bad response: ${n.statusCode}`),null)}),a.once("timeout",()=>{a.destroy(new Error("Proxy timeout"))}),a.once("error",n=>{a.removeAllListeners(),r(n,null)}),a.end()}};yue.exports={HttpProxyAgent:W8,HttpsProxyAgent:Y8}});var V8,Iue,Cue,wue=Ze(()=>{V8=ut(Eue(),1),Iue=V8.default.HttpProxyAgent,Cue=V8.default.HttpsProxyAgent});var Np=_((Fp,LQ)=>{"use strict";Object.defineProperty(Fp,"__esModule",{value:!0});var Bue=["Int8Array","Uint8Array","Uint8ClampedArray","Int16Array","Uint16Array","Int32Array","Uint32Array","Float32Array","Float64Array","BigInt64Array","BigUint64Array"];function pet(t){return Bue.includes(t)}var het=["Function","Generator","AsyncGenerator","GeneratorFunction","AsyncGeneratorFunction","AsyncFunction","Observable","Array","Buffer","Blob","Object","RegExp","Date","Error","Map","Set","WeakMap","WeakSet","ArrayBuffer","SharedArrayBuffer","DataView","Promise","URL","FormData","URLSearchParams","HTMLElement",...Bue];function get(t){return het.includes(t)}var det=["null","undefined","string","number","bigint","boolean","symbol"];function met(t){return det.includes(t)}function AI(t){return e=>typeof e===t}var{toString:vue}=Object.prototype,VB=t=>{let e=vue.call(t).slice(8,-1);if(/HTML\w+Element/.test(e)&&Pe.domElement(t))return"HTMLElement";if(get(e))return e},pi=t=>e=>VB(e)===t;function Pe(t){if(t===null)return"null";switch(typeof t){case"undefined":return"undefined";case"string":return"string";case"number":return"number";case"boolean":return"boolean";case"function":return"Function";case"bigint":return"bigint";case"symbol":return"symbol";default:}if(Pe.observable(t))return"Observable";if(Pe.array(t))return"Array";if(Pe.buffer(t))return"Buffer";let e=VB(t);if(e)return e;if(t instanceof String||t instanceof Boolean||t instanceof Number)throw new TypeError("Please don't use object wrappers for primitive types");return"Object"}Pe.undefined=AI("undefined");Pe.string=AI("string");var yet=AI("number");Pe.number=t=>yet(t)&&!Pe.nan(t);Pe.bigint=AI("bigint");Pe.function_=AI("function");Pe.null_=t=>t===null;Pe.class_=t=>Pe.function_(t)&&t.toString().startsWith("class ");Pe.boolean=t=>t===!0||t===!1;Pe.symbol=AI("symbol");Pe.numericString=t=>Pe.string(t)&&!Pe.emptyStringOrWhitespace(t)&&!Number.isNaN(Number(t));Pe.array=(t,e)=>Array.isArray(t)?Pe.function_(e)?t.every(e):!0:!1;Pe.buffer=t=>{var e,r,s,a;return(a=(s=(r=(e=t)===null||e===void 0?void 0:e.constructor)===null||r===void 0?void 0:r.isBuffer)===null||s===void 0?void 0:s.call(r,t))!==null&&a!==void 0?a:!1};Pe.blob=t=>pi("Blob")(t);Pe.nullOrUndefined=t=>Pe.null_(t)||Pe.undefined(t);Pe.object=t=>!Pe.null_(t)&&(typeof t=="object"||Pe.function_(t));Pe.iterable=t=>{var e;return Pe.function_((e=t)===null||e===void 0?void 0:e[Symbol.iterator])};Pe.asyncIterable=t=>{var e;return Pe.function_((e=t)===null||e===void 0?void 0:e[Symbol.asyncIterator])};Pe.generator=t=>{var e,r;return Pe.iterable(t)&&Pe.function_((e=t)===null||e===void 0?void 0:e.next)&&Pe.function_((r=t)===null||r===void 0?void 0:r.throw)};Pe.asyncGenerator=t=>Pe.asyncIterable(t)&&Pe.function_(t.next)&&Pe.function_(t.throw);Pe.nativePromise=t=>pi("Promise")(t);var Eet=t=>{var e,r;return Pe.function_((e=t)===null||e===void 0?void 0:e.then)&&Pe.function_((r=t)===null||r===void 0?void 0:r.catch)};Pe.promise=t=>Pe.nativePromise(t)||Eet(t);Pe.generatorFunction=pi("GeneratorFunction");Pe.asyncGeneratorFunction=t=>VB(t)==="AsyncGeneratorFunction";Pe.asyncFunction=t=>VB(t)==="AsyncFunction";Pe.boundFunction=t=>Pe.function_(t)&&!t.hasOwnProperty("prototype");Pe.regExp=pi("RegExp");Pe.date=pi("Date");Pe.error=pi("Error");Pe.map=t=>pi("Map")(t);Pe.set=t=>pi("Set")(t);Pe.weakMap=t=>pi("WeakMap")(t);Pe.weakSet=t=>pi("WeakSet")(t);Pe.int8Array=pi("Int8Array");Pe.uint8Array=pi("Uint8Array");Pe.uint8ClampedArray=pi("Uint8ClampedArray");Pe.int16Array=pi("Int16Array");Pe.uint16Array=pi("Uint16Array");Pe.int32Array=pi("Int32Array");Pe.uint32Array=pi("Uint32Array");Pe.float32Array=pi("Float32Array");Pe.float64Array=pi("Float64Array");Pe.bigInt64Array=pi("BigInt64Array");Pe.bigUint64Array=pi("BigUint64Array");Pe.arrayBuffer=pi("ArrayBuffer");Pe.sharedArrayBuffer=pi("SharedArrayBuffer");Pe.dataView=pi("DataView");Pe.enumCase=(t,e)=>Object.values(e).includes(t);Pe.directInstanceOf=(t,e)=>Object.getPrototypeOf(t)===e.prototype;Pe.urlInstance=t=>pi("URL")(t);Pe.urlString=t=>{if(!Pe.string(t))return!1;try{return new URL(t),!0}catch{return!1}};Pe.truthy=t=>!!t;Pe.falsy=t=>!t;Pe.nan=t=>Number.isNaN(t);Pe.primitive=t=>Pe.null_(t)||met(typeof t);Pe.integer=t=>Number.isInteger(t);Pe.safeInteger=t=>Number.isSafeInteger(t);Pe.plainObject=t=>{if(vue.call(t)!=="[object Object]")return!1;let e=Object.getPrototypeOf(t);return e===null||e===Object.getPrototypeOf({})};Pe.typedArray=t=>pet(VB(t));var Iet=t=>Pe.safeInteger(t)&&t>=0;Pe.arrayLike=t=>!Pe.nullOrUndefined(t)&&!Pe.function_(t)&&Iet(t.length);Pe.inRange=(t,e)=>{if(Pe.number(e))return t>=Math.min(0,e)&&t<=Math.max(e,0);if(Pe.array(e)&&e.length===2)return t>=Math.min(...e)&&t<=Math.max(...e);throw new TypeError(`Invalid range: ${JSON.stringify(e)}`)};var Cet=1,wet=["innerHTML","ownerDocument","style","attributes","nodeValue"];Pe.domElement=t=>Pe.object(t)&&t.nodeType===Cet&&Pe.string(t.nodeName)&&!Pe.plainObject(t)&&wet.every(e=>e in t);Pe.observable=t=>{var e,r,s,a;return t?t===((r=(e=t)[Symbol.observable])===null||r===void 0?void 0:r.call(e))||t===((a=(s=t)["@@observable"])===null||a===void 0?void 0:a.call(s)):!1};Pe.nodeStream=t=>Pe.object(t)&&Pe.function_(t.pipe)&&!Pe.observable(t);Pe.infinite=t=>t===1/0||t===-1/0;var Sue=t=>e=>Pe.integer(e)&&Math.abs(e%2)===t;Pe.evenInteger=Sue(0);Pe.oddInteger=Sue(1);Pe.emptyArray=t=>Pe.array(t)&&t.length===0;Pe.nonEmptyArray=t=>Pe.array(t)&&t.length>0;Pe.emptyString=t=>Pe.string(t)&&t.length===0;var Bet=t=>Pe.string(t)&&!/\S/.test(t);Pe.emptyStringOrWhitespace=t=>Pe.emptyString(t)||Bet(t);Pe.nonEmptyString=t=>Pe.string(t)&&t.length>0;Pe.nonEmptyStringAndNotWhitespace=t=>Pe.string(t)&&!Pe.emptyStringOrWhitespace(t);Pe.emptyObject=t=>Pe.object(t)&&!Pe.map(t)&&!Pe.set(t)&&Object.keys(t).length===0;Pe.nonEmptyObject=t=>Pe.object(t)&&!Pe.map(t)&&!Pe.set(t)&&Object.keys(t).length>0;Pe.emptySet=t=>Pe.set(t)&&t.size===0;Pe.nonEmptySet=t=>Pe.set(t)&&t.size>0;Pe.emptyMap=t=>Pe.map(t)&&t.size===0;Pe.nonEmptyMap=t=>Pe.map(t)&&t.size>0;Pe.propertyKey=t=>Pe.any([Pe.string,Pe.number,Pe.symbol],t);Pe.formData=t=>pi("FormData")(t);Pe.urlSearchParams=t=>pi("URLSearchParams")(t);var Due=(t,e,r)=>{if(!Pe.function_(e))throw new TypeError(`Invalid predicate: ${JSON.stringify(e)}`);if(r.length===0)throw new TypeError("Invalid number of values");return t.call(r,e)};Pe.any=(t,...e)=>(Pe.array(t)?t:[t]).some(s=>Due(Array.prototype.some,s,e));Pe.all=(t,...e)=>Due(Array.prototype.every,t,e);var _t=(t,e,r,s={})=>{if(!t){let{multipleValues:a}=s,n=a?`received values of types ${[...new Set(r.map(c=>`\`${Pe(c)}\``))].join(", ")}`:`received value of type \`${Pe(r)}\``;throw new TypeError(`Expected value which is \`${e}\`, ${n}.`)}};Fp.assert={undefined:t=>_t(Pe.undefined(t),"undefined",t),string:t=>_t(Pe.string(t),"string",t),number:t=>_t(Pe.number(t),"number",t),bigint:t=>_t(Pe.bigint(t),"bigint",t),function_:t=>_t(Pe.function_(t),"Function",t),null_:t=>_t(Pe.null_(t),"null",t),class_:t=>_t(Pe.class_(t),"Class",t),boolean:t=>_t(Pe.boolean(t),"boolean",t),symbol:t=>_t(Pe.symbol(t),"symbol",t),numericString:t=>_t(Pe.numericString(t),"string with a number",t),array:(t,e)=>{_t(Pe.array(t),"Array",t),e&&t.forEach(e)},buffer:t=>_t(Pe.buffer(t),"Buffer",t),blob:t=>_t(Pe.blob(t),"Blob",t),nullOrUndefined:t=>_t(Pe.nullOrUndefined(t),"null or undefined",t),object:t=>_t(Pe.object(t),"Object",t),iterable:t=>_t(Pe.iterable(t),"Iterable",t),asyncIterable:t=>_t(Pe.asyncIterable(t),"AsyncIterable",t),generator:t=>_t(Pe.generator(t),"Generator",t),asyncGenerator:t=>_t(Pe.asyncGenerator(t),"AsyncGenerator",t),nativePromise:t=>_t(Pe.nativePromise(t),"native Promise",t),promise:t=>_t(Pe.promise(t),"Promise",t),generatorFunction:t=>_t(Pe.generatorFunction(t),"GeneratorFunction",t),asyncGeneratorFunction:t=>_t(Pe.asyncGeneratorFunction(t),"AsyncGeneratorFunction",t),asyncFunction:t=>_t(Pe.asyncFunction(t),"AsyncFunction",t),boundFunction:t=>_t(Pe.boundFunction(t),"Function",t),regExp:t=>_t(Pe.regExp(t),"RegExp",t),date:t=>_t(Pe.date(t),"Date",t),error:t=>_t(Pe.error(t),"Error",t),map:t=>_t(Pe.map(t),"Map",t),set:t=>_t(Pe.set(t),"Set",t),weakMap:t=>_t(Pe.weakMap(t),"WeakMap",t),weakSet:t=>_t(Pe.weakSet(t),"WeakSet",t),int8Array:t=>_t(Pe.int8Array(t),"Int8Array",t),uint8Array:t=>_t(Pe.uint8Array(t),"Uint8Array",t),uint8ClampedArray:t=>_t(Pe.uint8ClampedArray(t),"Uint8ClampedArray",t),int16Array:t=>_t(Pe.int16Array(t),"Int16Array",t),uint16Array:t=>_t(Pe.uint16Array(t),"Uint16Array",t),int32Array:t=>_t(Pe.int32Array(t),"Int32Array",t),uint32Array:t=>_t(Pe.uint32Array(t),"Uint32Array",t),float32Array:t=>_t(Pe.float32Array(t),"Float32Array",t),float64Array:t=>_t(Pe.float64Array(t),"Float64Array",t),bigInt64Array:t=>_t(Pe.bigInt64Array(t),"BigInt64Array",t),bigUint64Array:t=>_t(Pe.bigUint64Array(t),"BigUint64Array",t),arrayBuffer:t=>_t(Pe.arrayBuffer(t),"ArrayBuffer",t),sharedArrayBuffer:t=>_t(Pe.sharedArrayBuffer(t),"SharedArrayBuffer",t),dataView:t=>_t(Pe.dataView(t),"DataView",t),enumCase:(t,e)=>_t(Pe.enumCase(t,e),"EnumCase",t),urlInstance:t=>_t(Pe.urlInstance(t),"URL",t),urlString:t=>_t(Pe.urlString(t),"string with a URL",t),truthy:t=>_t(Pe.truthy(t),"truthy",t),falsy:t=>_t(Pe.falsy(t),"falsy",t),nan:t=>_t(Pe.nan(t),"NaN",t),primitive:t=>_t(Pe.primitive(t),"primitive",t),integer:t=>_t(Pe.integer(t),"integer",t),safeInteger:t=>_t(Pe.safeInteger(t),"integer",t),plainObject:t=>_t(Pe.plainObject(t),"plain object",t),typedArray:t=>_t(Pe.typedArray(t),"TypedArray",t),arrayLike:t=>_t(Pe.arrayLike(t),"array-like",t),domElement:t=>_t(Pe.domElement(t),"HTMLElement",t),observable:t=>_t(Pe.observable(t),"Observable",t),nodeStream:t=>_t(Pe.nodeStream(t),"Node.js Stream",t),infinite:t=>_t(Pe.infinite(t),"infinite number",t),emptyArray:t=>_t(Pe.emptyArray(t),"empty array",t),nonEmptyArray:t=>_t(Pe.nonEmptyArray(t),"non-empty array",t),emptyString:t=>_t(Pe.emptyString(t),"empty string",t),emptyStringOrWhitespace:t=>_t(Pe.emptyStringOrWhitespace(t),"empty string or whitespace",t),nonEmptyString:t=>_t(Pe.nonEmptyString(t),"non-empty string",t),nonEmptyStringAndNotWhitespace:t=>_t(Pe.nonEmptyStringAndNotWhitespace(t),"non-empty string and not whitespace",t),emptyObject:t=>_t(Pe.emptyObject(t),"empty object",t),nonEmptyObject:t=>_t(Pe.nonEmptyObject(t),"non-empty object",t),emptySet:t=>_t(Pe.emptySet(t),"empty set",t),nonEmptySet:t=>_t(Pe.nonEmptySet(t),"non-empty set",t),emptyMap:t=>_t(Pe.emptyMap(t),"empty map",t),nonEmptyMap:t=>_t(Pe.nonEmptyMap(t),"non-empty map",t),propertyKey:t=>_t(Pe.propertyKey(t),"PropertyKey",t),formData:t=>_t(Pe.formData(t),"FormData",t),urlSearchParams:t=>_t(Pe.urlSearchParams(t),"URLSearchParams",t),evenInteger:t=>_t(Pe.evenInteger(t),"even integer",t),oddInteger:t=>_t(Pe.oddInteger(t),"odd integer",t),directInstanceOf:(t,e)=>_t(Pe.directInstanceOf(t,e),"T",t),inRange:(t,e)=>_t(Pe.inRange(t,e),"in range",t),any:(t,...e)=>_t(Pe.any(t,...e),"predicate returns truthy for any value",e,{multipleValues:!0}),all:(t,...e)=>_t(Pe.all(t,...e),"predicate returns truthy for all values",e,{multipleValues:!0})};Object.defineProperties(Pe,{class:{value:Pe.class_},function:{value:Pe.function_},null:{value:Pe.null_}});Object.defineProperties(Fp.assert,{class:{value:Fp.assert.class_},function:{value:Fp.assert.function_},null:{value:Fp.assert.null_}});Fp.default=Pe;LQ.exports=Pe;LQ.exports.default=Pe;LQ.exports.assert=Fp.assert});var Pue=_((AMt,J8)=>{"use strict";var MQ=class extends Error{constructor(e){super(e||"Promise was canceled"),this.name="CancelError"}get isCanceled(){return!0}},UQ=class t{static fn(e){return(...r)=>new t((s,a,n)=>{r.push(n),e(...r).then(s,a)})}constructor(e){this._cancelHandlers=[],this._isPending=!0,this._isCanceled=!1,this._rejectOnCancel=!0,this._promise=new Promise((r,s)=>{this._reject=s;let a=f=>{this._isPending=!1,r(f)},n=f=>{this._isPending=!1,s(f)},c=f=>{if(!this._isPending)throw new Error("The `onCancel` handler was attached after the promise settled.");this._cancelHandlers.push(f)};return Object.defineProperties(c,{shouldReject:{get:()=>this._rejectOnCancel,set:f=>{this._rejectOnCancel=f}}}),e(a,n,c)})}then(e,r){return this._promise.then(e,r)}catch(e){return this._promise.catch(e)}finally(e){return this._promise.finally(e)}cancel(e){if(!(!this._isPending||this._isCanceled)){if(this._cancelHandlers.length>0)try{for(let r of this._cancelHandlers)r()}catch(r){this._reject(r)}this._isCanceled=!0,this._rejectOnCancel&&this._reject(new MQ(e))}}get isCanceled(){return this._isCanceled}};Object.setPrototypeOf(UQ.prototype,Promise.prototype);J8.exports=UQ;J8.exports.CancelError=MQ});var bue=_((z8,Z8)=>{"use strict";Object.defineProperty(z8,"__esModule",{value:!0});function vet(t){return t.encrypted}var K8=(t,e)=>{let r;typeof e=="function"?r={connect:e}:r=e;let s=typeof r.connect=="function",a=typeof r.secureConnect=="function",n=typeof r.close=="function",c=()=>{s&&r.connect(),vet(t)&&a&&(t.authorized?r.secureConnect():t.authorizationError||t.once("secureConnect",r.secureConnect)),n&&t.once("close",r.close)};t.writable&&!t.connecting?c():t.connecting?t.once("connect",c):t.destroyed&&n&&r.close(t._hadError)};z8.default=K8;Z8.exports=K8;Z8.exports.default=K8});var xue=_(($8,eH)=>{"use strict";Object.defineProperty($8,"__esModule",{value:!0});var Det=bue(),Pet=Number(process.versions.node.split(".")[0]),X8=t=>{let e={start:Date.now(),socket:void 0,lookup:void 0,connect:void 0,secureConnect:void 0,upload:void 0,response:void 0,end:void 0,error:void 0,abort:void 0,phases:{wait:void 0,dns:void 0,tcp:void 0,tls:void 0,request:void 0,firstByte:void 0,download:void 0,total:void 0}};t.timings=e;let r=c=>{let f=c.emit.bind(c);c.emit=(p,...h)=>(p==="error"&&(e.error=Date.now(),e.phases.total=e.error-e.start,c.emit=f),f(p,...h))};r(t),t.prependOnceListener("abort",()=>{e.abort=Date.now(),(!e.response||Pet>=13)&&(e.phases.total=Date.now()-e.start)});let s=c=>{e.socket=Date.now(),e.phases.wait=e.socket-e.start;let f=()=>{e.lookup=Date.now(),e.phases.dns=e.lookup-e.socket};c.prependOnceListener("lookup",f),Det.default(c,{connect:()=>{e.connect=Date.now(),e.lookup===void 0&&(c.removeListener("lookup",f),e.lookup=e.connect,e.phases.dns=e.lookup-e.socket),e.phases.tcp=e.connect-e.lookup},secureConnect:()=>{e.secureConnect=Date.now(),e.phases.tls=e.secureConnect-e.connect}})};t.socket?s(t.socket):t.prependOnceListener("socket",s);let a=()=>{var c;e.upload=Date.now(),e.phases.request=e.upload-(c=e.secureConnect,c??e.connect)};return(typeof t.writableFinished=="boolean"?t.writableFinished:t.finished&&t.outputSize===0&&(!t.socket||t.socket.writableLength===0))?a():t.prependOnceListener("finish",a),t.prependOnceListener("response",c=>{e.response=Date.now(),e.phases.firstByte=e.response-e.upload,c.timings=e,r(c),c.prependOnceListener("end",()=>{e.end=Date.now(),e.phases.download=e.end-e.response,e.phases.total=e.end-e.start})}),e};$8.default=X8;eH.exports=X8;eH.exports.default=X8});var Oue=_((pMt,nH)=>{"use strict";var{V4MAPPED:bet,ADDRCONFIG:xet,ALL:Nue,promises:{Resolver:kue},lookup:ket}=Ie("dns"),{promisify:tH}=Ie("util"),Qet=Ie("os"),pI=Symbol("cacheableLookupCreateConnection"),rH=Symbol("cacheableLookupInstance"),Que=Symbol("expires"),Ret=typeof Nue=="number",Rue=t=>{if(!(t&&typeof t.createConnection=="function"))throw new Error("Expected an Agent instance as the first argument")},Tet=t=>{for(let e of t)e.family!==6&&(e.address=`::ffff:${e.address}`,e.family=6)},Tue=()=>{let t=!1,e=!1;for(let r of Object.values(Qet.networkInterfaces()))for(let s of r)if(!s.internal&&(s.family==="IPv6"?e=!0:t=!0,t&&e))return{has4:t,has6:e};return{has4:t,has6:e}},Fet=t=>Symbol.iterator in t,Fue={ttl:!0},Net={all:!0},_Q=class{constructor({cache:e=new Map,maxTtl:r=1/0,fallbackDuration:s=3600,errorTtl:a=.15,resolver:n=new kue,lookup:c=ket}={}){if(this.maxTtl=r,this.errorTtl=a,this._cache=e,this._resolver=n,this._dnsLookup=tH(c),this._resolver instanceof kue?(this._resolve4=this._resolver.resolve4.bind(this._resolver),this._resolve6=this._resolver.resolve6.bind(this._resolver)):(this._resolve4=tH(this._resolver.resolve4.bind(this._resolver)),this._resolve6=tH(this._resolver.resolve6.bind(this._resolver))),this._iface=Tue(),this._pending={},this._nextRemovalTime=!1,this._hostnamesToFallback=new Set,s<1)this._fallback=!1;else{this._fallback=!0;let f=setInterval(()=>{this._hostnamesToFallback.clear()},s*1e3);f.unref&&f.unref()}this.lookup=this.lookup.bind(this),this.lookupAsync=this.lookupAsync.bind(this)}set servers(e){this.clear(),this._resolver.setServers(e)}get servers(){return this._resolver.getServers()}lookup(e,r,s){if(typeof r=="function"?(s=r,r={}):typeof r=="number"&&(r={family:r}),!s)throw new Error("Callback must be a function.");this.lookupAsync(e,r).then(a=>{r.all?s(null,a):s(null,a.address,a.family,a.expires,a.ttl)},s)}async lookupAsync(e,r={}){typeof r=="number"&&(r={family:r});let s=await this.query(e);if(r.family===6){let a=s.filter(n=>n.family===6);r.hints&bet&&(Ret&&r.hints&Nue||a.length===0)?Tet(s):s=a}else r.family===4&&(s=s.filter(a=>a.family===4));if(r.hints&xet){let{_iface:a}=this;s=s.filter(n=>n.family===6?a.has6:a.has4)}if(s.length===0){let a=new Error(`cacheableLookup ENOTFOUND ${e}`);throw a.code="ENOTFOUND",a.hostname=e,a}return r.all?s:s[0]}async query(e){let r=await this._cache.get(e);if(!r){let s=this._pending[e];if(s)r=await s;else{let a=this.queryAndCache(e);this._pending[e]=a,r=await a}}return r=r.map(s=>({...s})),r}async _resolve(e){let r=async h=>{try{return await h}catch(E){if(E.code==="ENODATA"||E.code==="ENOTFOUND")return[];throw E}},[s,a]=await Promise.all([this._resolve4(e,Fue),this._resolve6(e,Fue)].map(h=>r(h))),n=0,c=0,f=0,p=Date.now();for(let h of s)h.family=4,h.expires=p+h.ttl*1e3,n=Math.max(n,h.ttl);for(let h of a)h.family=6,h.expires=p+h.ttl*1e3,c=Math.max(c,h.ttl);return s.length>0?a.length>0?f=Math.min(n,c):f=n:f=c,{entries:[...s,...a],cacheTtl:f}}async _lookup(e){try{return{entries:await this._dnsLookup(e,{all:!0}),cacheTtl:0}}catch{return{entries:[],cacheTtl:0}}}async _set(e,r,s){if(this.maxTtl>0&&s>0){s=Math.min(s,this.maxTtl)*1e3,r[Que]=Date.now()+s;try{await this._cache.set(e,r,s)}catch(a){this.lookupAsync=async()=>{let n=new Error("Cache Error. Please recreate the CacheableLookup instance.");throw n.cause=a,n}}Fet(this._cache)&&this._tick(s)}}async queryAndCache(e){if(this._hostnamesToFallback.has(e))return this._dnsLookup(e,Net);try{let r=await this._resolve(e);r.entries.length===0&&this._fallback&&(r=await this._lookup(e),r.entries.length!==0&&this._hostnamesToFallback.add(e));let s=r.entries.length===0?this.errorTtl:r.cacheTtl;return await this._set(e,r.entries,s),delete this._pending[e],r.entries}catch(r){throw delete this._pending[e],r}}_tick(e){let r=this._nextRemovalTime;(!r||e{this._nextRemovalTime=!1;let s=1/0,a=Date.now();for(let[n,c]of this._cache){let f=c[Que];a>=f?this._cache.delete(n):f("lookup"in r||(r.lookup=this.lookup),e[pI](r,s))}uninstall(e){if(Rue(e),e[pI]){if(e[rH]!==this)throw new Error("The agent is not owned by this CacheableLookup instance");e.createConnection=e[pI],delete e[pI],delete e[rH]}}updateInterfaceInfo(){let{_iface:e}=this;this._iface=Tue(),(e.has4&&!this._iface.has4||e.has6&&!this._iface.has6)&&this._cache.clear()}clear(e){if(e){this._cache.delete(e);return}this._cache.clear()}};nH.exports=_Q;nH.exports.default=_Q});var Uue=_((hMt,iH)=>{"use strict";var Oet=typeof URL>"u"?Ie("url").URL:URL,Let="text/plain",Met="us-ascii",Lue=(t,e)=>e.some(r=>r instanceof RegExp?r.test(t):r===t),Uet=(t,{stripHash:e})=>{let r=t.match(/^data:([^,]*?),([^#]*?)(?:#(.*))?$/);if(!r)throw new Error(`Invalid URL: ${t}`);let s=r[1].split(";"),a=r[2],n=e?"":r[3],c=!1;s[s.length-1]==="base64"&&(s.pop(),c=!0);let f=(s.shift()||"").toLowerCase(),h=[...s.map(E=>{let[C,S=""]=E.split("=").map(b=>b.trim());return C==="charset"&&(S=S.toLowerCase(),S===Met)?"":`${C}${S?`=${S}`:""}`}).filter(Boolean)];return c&&h.push("base64"),(h.length!==0||f&&f!==Let)&&h.unshift(f),`data:${h.join(";")},${c?a.trim():a}${n?`#${n}`:""}`},Mue=(t,e)=>{if(e={defaultProtocol:"http:",normalizeProtocol:!0,forceHttp:!1,forceHttps:!1,stripAuthentication:!0,stripHash:!1,stripWWW:!0,removeQueryParameters:[/^utm_\w+/i],removeTrailingSlash:!0,removeDirectoryIndex:!1,sortQueryParameters:!0,...e},Reflect.has(e,"normalizeHttps"))throw new Error("options.normalizeHttps is renamed to options.forceHttp");if(Reflect.has(e,"normalizeHttp"))throw new Error("options.normalizeHttp is renamed to options.forceHttps");if(Reflect.has(e,"stripFragment"))throw new Error("options.stripFragment is renamed to options.stripHash");if(t=t.trim(),/^data:/i.test(t))return Uet(t,e);let r=t.startsWith("//");!r&&/^\.*\//.test(t)||(t=t.replace(/^(?!(?:\w+:)?\/\/)|^\/\//,e.defaultProtocol));let a=new Oet(t);if(e.forceHttp&&e.forceHttps)throw new Error("The `forceHttp` and `forceHttps` options cannot be used together");if(e.forceHttp&&a.protocol==="https:"&&(a.protocol="http:"),e.forceHttps&&a.protocol==="http:"&&(a.protocol="https:"),e.stripAuthentication&&(a.username="",a.password=""),e.stripHash&&(a.hash=""),a.pathname&&(a.pathname=a.pathname.replace(/((?!:).|^)\/{2,}/g,(n,c)=>/^(?!\/)/g.test(c)?`${c}/`:"/")),a.pathname&&(a.pathname=decodeURI(a.pathname)),e.removeDirectoryIndex===!0&&(e.removeDirectoryIndex=[/^index\.[a-z]+$/]),Array.isArray(e.removeDirectoryIndex)&&e.removeDirectoryIndex.length>0){let n=a.pathname.split("/"),c=n[n.length-1];Lue(c,e.removeDirectoryIndex)&&(n=n.slice(0,n.length-1),a.pathname=n.slice(1).join("/")+"/")}if(a.hostname&&(a.hostname=a.hostname.replace(/\.$/,""),e.stripWWW&&/^www\.([a-z\-\d]{2,63})\.([a-z.]{2,5})$/.test(a.hostname)&&(a.hostname=a.hostname.replace(/^www\./,""))),Array.isArray(e.removeQueryParameters))for(let n of[...a.searchParams.keys()])Lue(n,e.removeQueryParameters)&&a.searchParams.delete(n);return e.sortQueryParameters&&a.searchParams.sort(),e.removeTrailingSlash&&(a.pathname=a.pathname.replace(/\/$/,"")),t=a.toString(),(e.removeTrailingSlash||a.pathname==="/")&&a.hash===""&&(t=t.replace(/\/$/,"")),r&&!e.normalizeProtocol&&(t=t.replace(/^http:\/\//,"//")),e.stripProtocol&&(t=t.replace(/^(?:https?:)?\/\//,"")),t};iH.exports=Mue;iH.exports.default=Mue});var jue=_((gMt,Hue)=>{Hue.exports=_ue;function _ue(t,e){if(t&&e)return _ue(t)(e);if(typeof t!="function")throw new TypeError("need wrapper function");return Object.keys(t).forEach(function(s){r[s]=t[s]}),r;function r(){for(var s=new Array(arguments.length),a=0;a{var Gue=jue();sH.exports=Gue(HQ);sH.exports.strict=Gue(que);HQ.proto=HQ(function(){Object.defineProperty(Function.prototype,"once",{value:function(){return HQ(this)},configurable:!0}),Object.defineProperty(Function.prototype,"onceStrict",{value:function(){return que(this)},configurable:!0})});function HQ(t){var e=function(){return e.called?e.value:(e.called=!0,e.value=t.apply(this,arguments))};return e.called=!1,e}function que(t){var e=function(){if(e.called)throw new Error(e.onceError);return e.called=!0,e.value=t.apply(this,arguments)},r=t.name||"Function wrapped with `once`";return e.onceError=r+" shouldn't be called more than once",e.called=!1,e}});var aH=_((mMt,Yue)=>{var _et=oH(),Het=function(){},jet=function(t){return t.setHeader&&typeof t.abort=="function"},Get=function(t){return t.stdio&&Array.isArray(t.stdio)&&t.stdio.length===3},Wue=function(t,e,r){if(typeof e=="function")return Wue(t,null,e);e||(e={}),r=_et(r||Het);var s=t._writableState,a=t._readableState,n=e.readable||e.readable!==!1&&t.readable,c=e.writable||e.writable!==!1&&t.writable,f=function(){t.writable||p()},p=function(){c=!1,n||r.call(t)},h=function(){n=!1,c||r.call(t)},E=function(I){r.call(t,I?new Error("exited with error code: "+I):null)},C=function(I){r.call(t,I)},S=function(){if(n&&!(a&&a.ended))return r.call(t,new Error("premature close"));if(c&&!(s&&s.ended))return r.call(t,new Error("premature close"))},b=function(){t.req.on("finish",p)};return jet(t)?(t.on("complete",p),t.on("abort",S),t.req?b():t.on("request",b)):c&&!s&&(t.on("end",f),t.on("close",f)),Get(t)&&t.on("exit",E),t.on("end",h),t.on("finish",p),e.error!==!1&&t.on("error",C),t.on("close",S),function(){t.removeListener("complete",p),t.removeListener("abort",S),t.removeListener("request",b),t.req&&t.req.removeListener("finish",p),t.removeListener("end",f),t.removeListener("close",f),t.removeListener("finish",p),t.removeListener("exit",E),t.removeListener("end",h),t.removeListener("error",C),t.removeListener("close",S)}};Yue.exports=Wue});var Kue=_((yMt,Jue)=>{var qet=oH(),Wet=aH(),lH=Ie("fs"),JB=function(){},Yet=/^v?\.0/.test(process.version),jQ=function(t){return typeof t=="function"},Vet=function(t){return!Yet||!lH?!1:(t instanceof(lH.ReadStream||JB)||t instanceof(lH.WriteStream||JB))&&jQ(t.close)},Jet=function(t){return t.setHeader&&jQ(t.abort)},Ket=function(t,e,r,s){s=qet(s);var a=!1;t.on("close",function(){a=!0}),Wet(t,{readable:e,writable:r},function(c){if(c)return s(c);a=!0,s()});var n=!1;return function(c){if(!a&&!n){if(n=!0,Vet(t))return t.close(JB);if(Jet(t))return t.abort();if(jQ(t.destroy))return t.destroy();s(c||new Error("stream was destroyed"))}}},Vue=function(t){t()},zet=function(t,e){return t.pipe(e)},Zet=function(){var t=Array.prototype.slice.call(arguments),e=jQ(t[t.length-1]||JB)&&t.pop()||JB;if(Array.isArray(t[0])&&(t=t[0]),t.length<2)throw new Error("pump requires two streams per minimum");var r,s=t.map(function(a,n){var c=n0;return Ket(a,c,f,function(p){r||(r=p),p&&s.forEach(Vue),!c&&(s.forEach(Vue),e(r))})});return t.reduce(zet)};Jue.exports=Zet});var Zue=_((EMt,zue)=>{"use strict";var{PassThrough:Xet}=Ie("stream");zue.exports=t=>{t={...t};let{array:e}=t,{encoding:r}=t,s=r==="buffer",a=!1;e?a=!(r||s):r=r||"utf8",s&&(r=null);let n=new Xet({objectMode:a});r&&n.setEncoding(r);let c=0,f=[];return n.on("data",p=>{f.push(p),a?c=f.length:c+=p.length}),n.getBufferedValue=()=>e?f:s?Buffer.concat(f,c):f.join(""),n.getBufferedLength=()=>c,n}});var Xue=_((IMt,hI)=>{"use strict";var $et=Kue(),ett=Zue(),GQ=class extends Error{constructor(){super("maxBuffer exceeded"),this.name="MaxBufferError"}};async function qQ(t,e){if(!t)return Promise.reject(new Error("Expected a stream"));e={maxBuffer:1/0,...e};let{maxBuffer:r}=e,s;return await new Promise((a,n)=>{let c=f=>{f&&(f.bufferedData=s.getBufferedValue()),n(f)};s=$et(t,ett(e),f=>{if(f){c(f);return}a()}),s.on("data",()=>{s.getBufferedLength()>r&&c(new GQ)})}),s.getBufferedValue()}hI.exports=qQ;hI.exports.default=qQ;hI.exports.buffer=(t,e)=>qQ(t,{...e,encoding:"buffer"});hI.exports.array=(t,e)=>qQ(t,{...e,array:!0});hI.exports.MaxBufferError=GQ});var efe=_((wMt,$ue)=>{"use strict";var ttt=new Set([200,203,204,206,300,301,308,404,405,410,414,501]),rtt=new Set([200,203,204,300,301,302,303,307,308,404,405,410,414,501]),ntt=new Set([500,502,503,504]),itt={date:!0,connection:!0,"keep-alive":!0,"proxy-authenticate":!0,"proxy-authorization":!0,te:!0,trailer:!0,"transfer-encoding":!0,upgrade:!0},stt={"content-length":!0,"content-encoding":!0,"transfer-encoding":!0,"content-range":!0};function nm(t){let e=parseInt(t,10);return isFinite(e)?e:0}function ott(t){return t?ntt.has(t.status):!0}function cH(t){let e={};if(!t)return e;let r=t.trim().split(/,/);for(let s of r){let[a,n]=s.split(/=/,2);e[a.trim()]=n===void 0?!0:n.trim().replace(/^"|"$/g,"")}return e}function att(t){let e=[];for(let r in t){let s=t[r];e.push(s===!0?r:r+"="+s)}if(e.length)return e.join(", ")}$ue.exports=class{constructor(e,r,{shared:s,cacheHeuristic:a,immutableMinTimeToLive:n,ignoreCargoCult:c,_fromObject:f}={}){if(f){this._fromObject(f);return}if(!r||!r.headers)throw Error("Response headers missing");this._assertRequestHasHeaders(e),this._responseTime=this.now(),this._isShared=s!==!1,this._cacheHeuristic=a!==void 0?a:.1,this._immutableMinTtl=n!==void 0?n:24*3600*1e3,this._status="status"in r?r.status:200,this._resHeaders=r.headers,this._rescc=cH(r.headers["cache-control"]),this._method="method"in e?e.method:"GET",this._url=e.url,this._host=e.headers.host,this._noAuthorization=!e.headers.authorization,this._reqHeaders=r.headers.vary?e.headers:null,this._reqcc=cH(e.headers["cache-control"]),c&&"pre-check"in this._rescc&&"post-check"in this._rescc&&(delete this._rescc["pre-check"],delete this._rescc["post-check"],delete this._rescc["no-cache"],delete this._rescc["no-store"],delete this._rescc["must-revalidate"],this._resHeaders=Object.assign({},this._resHeaders,{"cache-control":att(this._rescc)}),delete this._resHeaders.expires,delete this._resHeaders.pragma),r.headers["cache-control"]==null&&/no-cache/.test(r.headers.pragma)&&(this._rescc["no-cache"]=!0)}now(){return Date.now()}storable(){return!!(!this._reqcc["no-store"]&&(this._method==="GET"||this._method==="HEAD"||this._method==="POST"&&this._hasExplicitExpiration())&&rtt.has(this._status)&&!this._rescc["no-store"]&&(!this._isShared||!this._rescc.private)&&(!this._isShared||this._noAuthorization||this._allowsStoringAuthenticated())&&(this._resHeaders.expires||this._rescc["max-age"]||this._isShared&&this._rescc["s-maxage"]||this._rescc.public||ttt.has(this._status)))}_hasExplicitExpiration(){return this._isShared&&this._rescc["s-maxage"]||this._rescc["max-age"]||this._resHeaders.expires}_assertRequestHasHeaders(e){if(!e||!e.headers)throw Error("Request headers missing")}satisfiesWithoutRevalidation(e){this._assertRequestHasHeaders(e);let r=cH(e.headers["cache-control"]);return r["no-cache"]||/no-cache/.test(e.headers.pragma)||r["max-age"]&&this.age()>r["max-age"]||r["min-fresh"]&&this.timeToLive()<1e3*r["min-fresh"]||this.stale()&&!(r["max-stale"]&&!this._rescc["must-revalidate"]&&(r["max-stale"]===!0||r["max-stale"]>this.age()-this.maxAge()))?!1:this._requestMatches(e,!1)}_requestMatches(e,r){return(!this._url||this._url===e.url)&&this._host===e.headers.host&&(!e.method||this._method===e.method||r&&e.method==="HEAD")&&this._varyMatches(e)}_allowsStoringAuthenticated(){return this._rescc["must-revalidate"]||this._rescc.public||this._rescc["s-maxage"]}_varyMatches(e){if(!this._resHeaders.vary)return!0;if(this._resHeaders.vary==="*")return!1;let r=this._resHeaders.vary.trim().toLowerCase().split(/\s*,\s*/);for(let s of r)if(e.headers[s]!==this._reqHeaders[s])return!1;return!0}_copyWithoutHopByHopHeaders(e){let r={};for(let s in e)itt[s]||(r[s]=e[s]);if(e.connection){let s=e.connection.trim().split(/\s*,\s*/);for(let a of s)delete r[a]}if(r.warning){let s=r.warning.split(/,/).filter(a=>!/^\s*1[0-9][0-9]/.test(a));s.length?r.warning=s.join(",").trim():delete r.warning}return r}responseHeaders(){let e=this._copyWithoutHopByHopHeaders(this._resHeaders),r=this.age();return r>3600*24&&!this._hasExplicitExpiration()&&this.maxAge()>3600*24&&(e.warning=(e.warning?`${e.warning}, `:"")+'113 - "rfc7234 5.5.4"'),e.age=`${Math.round(r)}`,e.date=new Date(this.now()).toUTCString(),e}date(){let e=Date.parse(this._resHeaders.date);return isFinite(e)?e:this._responseTime}age(){let e=this._ageValue(),r=(this.now()-this._responseTime)/1e3;return e+r}_ageValue(){return nm(this._resHeaders.age)}maxAge(){if(!this.storable()||this._rescc["no-cache"]||this._isShared&&this._resHeaders["set-cookie"]&&!this._rescc.public&&!this._rescc.immutable||this._resHeaders.vary==="*")return 0;if(this._isShared){if(this._rescc["proxy-revalidate"])return 0;if(this._rescc["s-maxage"])return nm(this._rescc["s-maxage"])}if(this._rescc["max-age"])return nm(this._rescc["max-age"]);let e=this._rescc.immutable?this._immutableMinTtl:0,r=this.date();if(this._resHeaders.expires){let s=Date.parse(this._resHeaders.expires);return Number.isNaN(s)||ss)return Math.max(e,(r-s)/1e3*this._cacheHeuristic)}return e}timeToLive(){let e=this.maxAge()-this.age(),r=e+nm(this._rescc["stale-if-error"]),s=e+nm(this._rescc["stale-while-revalidate"]);return Math.max(0,e,r,s)*1e3}stale(){return this.maxAge()<=this.age()}_useStaleIfError(){return this.maxAge()+nm(this._rescc["stale-if-error"])>this.age()}useStaleWhileRevalidate(){return this.maxAge()+nm(this._rescc["stale-while-revalidate"])>this.age()}static fromObject(e){return new this(void 0,void 0,{_fromObject:e})}_fromObject(e){if(this._responseTime)throw Error("Reinitialized");if(!e||e.v!==1)throw Error("Invalid serialization");this._responseTime=e.t,this._isShared=e.sh,this._cacheHeuristic=e.ch,this._immutableMinTtl=e.imm!==void 0?e.imm:24*3600*1e3,this._status=e.st,this._resHeaders=e.resh,this._rescc=e.rescc,this._method=e.m,this._url=e.u,this._host=e.h,this._noAuthorization=e.a,this._reqHeaders=e.reqh,this._reqcc=e.reqcc}toObject(){return{v:1,t:this._responseTime,sh:this._isShared,ch:this._cacheHeuristic,imm:this._immutableMinTtl,st:this._status,resh:this._resHeaders,rescc:this._rescc,m:this._method,u:this._url,h:this._host,a:this._noAuthorization,reqh:this._reqHeaders,reqcc:this._reqcc}}revalidationHeaders(e){this._assertRequestHasHeaders(e);let r=this._copyWithoutHopByHopHeaders(e.headers);if(delete r["if-range"],!this._requestMatches(e,!0)||!this.storable())return delete r["if-none-match"],delete r["if-modified-since"],r;if(this._resHeaders.etag&&(r["if-none-match"]=r["if-none-match"]?`${r["if-none-match"]}, ${this._resHeaders.etag}`:this._resHeaders.etag),r["accept-ranges"]||r["if-match"]||r["if-unmodified-since"]||this._method&&this._method!="GET"){if(delete r["if-modified-since"],r["if-none-match"]){let a=r["if-none-match"].split(/,/).filter(n=>!/^\s*W\//.test(n));a.length?r["if-none-match"]=a.join(",").trim():delete r["if-none-match"]}}else this._resHeaders["last-modified"]&&!r["if-modified-since"]&&(r["if-modified-since"]=this._resHeaders["last-modified"]);return r}revalidatedPolicy(e,r){if(this._assertRequestHasHeaders(e),this._useStaleIfError()&&ott(r))return{modified:!1,matches:!1,policy:this};if(!r||!r.headers)throw Error("Response headers missing");let s=!1;if(r.status!==void 0&&r.status!=304?s=!1:r.headers.etag&&!/^\s*W\//.test(r.headers.etag)?s=this._resHeaders.etag&&this._resHeaders.etag.replace(/^\s*W\//,"")===r.headers.etag:this._resHeaders.etag&&r.headers.etag?s=this._resHeaders.etag.replace(/^\s*W\//,"")===r.headers.etag.replace(/^\s*W\//,""):this._resHeaders["last-modified"]?s=this._resHeaders["last-modified"]===r.headers["last-modified"]:!this._resHeaders.etag&&!this._resHeaders["last-modified"]&&!r.headers.etag&&!r.headers["last-modified"]&&(s=!0),!s)return{policy:new this.constructor(e,r),modified:r.status!=304,matches:!1};let a={};for(let c in this._resHeaders)a[c]=c in r.headers&&!stt[c]?r.headers[c]:this._resHeaders[c];let n=Object.assign({},r,{status:this._status,method:this._method,headers:a});return{policy:new this.constructor(e,n,{shared:this._isShared,cacheHeuristic:this._cacheHeuristic,immutableMinTimeToLive:this._immutableMinTtl}),modified:!1,matches:!0}}}});var WQ=_((BMt,tfe)=>{"use strict";tfe.exports=t=>{let e={};for(let[r,s]of Object.entries(t))e[r.toLowerCase()]=s;return e}});var nfe=_((vMt,rfe)=>{"use strict";var ltt=Ie("stream").Readable,ctt=WQ(),uH=class extends ltt{constructor(e,r,s,a){if(typeof e!="number")throw new TypeError("Argument `statusCode` should be a number");if(typeof r!="object")throw new TypeError("Argument `headers` should be an object");if(!(s instanceof Buffer))throw new TypeError("Argument `body` should be a buffer");if(typeof a!="string")throw new TypeError("Argument `url` should be a string");super(),this.statusCode=e,this.headers=ctt(r),this.body=s,this.url=a}_read(){this.push(this.body),this.push(null)}};rfe.exports=uH});var sfe=_((SMt,ife)=>{"use strict";var utt=["destroy","setTimeout","socket","headers","trailers","rawHeaders","statusCode","httpVersion","httpVersionMinor","httpVersionMajor","rawTrailers","statusMessage"];ife.exports=(t,e)=>{let r=new Set(Object.keys(t).concat(utt));for(let s of r)s in e||(e[s]=typeof t[s]=="function"?t[s].bind(t):t[s])}});var afe=_((DMt,ofe)=>{"use strict";var ftt=Ie("stream").PassThrough,Att=sfe(),ptt=t=>{if(!(t&&t.pipe))throw new TypeError("Parameter `response` must be a response stream.");let e=new ftt;return Att(t,e),t.pipe(e)};ofe.exports=ptt});var lfe=_(fH=>{fH.stringify=function t(e){if(typeof e>"u")return e;if(e&&Buffer.isBuffer(e))return JSON.stringify(":base64:"+e.toString("base64"));if(e&&e.toJSON&&(e=e.toJSON()),e&&typeof e=="object"){var r="",s=Array.isArray(e);r=s?"[":"{";var a=!0;for(var n in e){var c=typeof e[n]=="function"||!s&&typeof e[n]>"u";Object.hasOwnProperty.call(e,n)&&!c&&(a||(r+=","),a=!1,s?e[n]==null?r+="null":r+=t(e[n]):e[n]!==void 0&&(r+=t(n)+":"+t(e[n])))}return r+=s?"]":"}",r}else return typeof e=="string"?JSON.stringify(/^:/.test(e)?":"+e:e):typeof e>"u"?"null":JSON.stringify(e)};fH.parse=function(t){return JSON.parse(t,function(e,r){return typeof r=="string"?/^:base64:/.test(r)?Buffer.from(r.substring(8),"base64"):/^:/.test(r)?r.substring(1):r:r})}});var Afe=_((bMt,ffe)=>{"use strict";var htt=Ie("events"),cfe=lfe(),gtt=t=>{let e={redis:"@keyv/redis",rediss:"@keyv/redis",mongodb:"@keyv/mongo",mongo:"@keyv/mongo",sqlite:"@keyv/sqlite",postgresql:"@keyv/postgres",postgres:"@keyv/postgres",mysql:"@keyv/mysql",etcd:"@keyv/etcd",offline:"@keyv/offline",tiered:"@keyv/tiered"};if(t.adapter||t.uri){let r=t.adapter||/^[^:+]*/.exec(t.uri)[0];return new(Ie(e[r]))(t)}return new Map},ufe=["sqlite","postgres","mysql","mongo","redis","tiered"],AH=class extends htt{constructor(e,{emitErrors:r=!0,...s}={}){if(super(),this.opts={namespace:"keyv",serialize:cfe.stringify,deserialize:cfe.parse,...typeof e=="string"?{uri:e}:e,...s},!this.opts.store){let n={...this.opts};this.opts.store=gtt(n)}if(this.opts.compression){let n=this.opts.compression;this.opts.serialize=n.serialize.bind(n),this.opts.deserialize=n.deserialize.bind(n)}typeof this.opts.store.on=="function"&&r&&this.opts.store.on("error",n=>this.emit("error",n)),this.opts.store.namespace=this.opts.namespace;let a=n=>async function*(){for await(let[c,f]of typeof n=="function"?n(this.opts.store.namespace):n){let p=await this.opts.deserialize(f);if(!(this.opts.store.namespace&&!c.includes(this.opts.store.namespace))){if(typeof p.expires=="number"&&Date.now()>p.expires){this.delete(c);continue}yield[this._getKeyUnprefix(c),p.value]}}};typeof this.opts.store[Symbol.iterator]=="function"&&this.opts.store instanceof Map?this.iterator=a(this.opts.store):typeof this.opts.store.iterator=="function"&&this.opts.store.opts&&this._checkIterableAdaptar()&&(this.iterator=a(this.opts.store.iterator.bind(this.opts.store)))}_checkIterableAdaptar(){return ufe.includes(this.opts.store.opts.dialect)||ufe.findIndex(e=>this.opts.store.opts.url.includes(e))>=0}_getKeyPrefix(e){return`${this.opts.namespace}:${e}`}_getKeyPrefixArray(e){return e.map(r=>`${this.opts.namespace}:${r}`)}_getKeyUnprefix(e){return e.split(":").splice(1).join(":")}get(e,r){let{store:s}=this.opts,a=Array.isArray(e),n=a?this._getKeyPrefixArray(e):this._getKeyPrefix(e);if(a&&s.getMany===void 0){let c=[];for(let f of n)c.push(Promise.resolve().then(()=>s.get(f)).then(p=>typeof p=="string"?this.opts.deserialize(p):this.opts.compression?this.opts.deserialize(p):p).then(p=>{if(p!=null)return typeof p.expires=="number"&&Date.now()>p.expires?this.delete(f).then(()=>{}):r&&r.raw?p:p.value}));return Promise.allSettled(c).then(f=>{let p=[];for(let h of f)p.push(h.value);return p})}return Promise.resolve().then(()=>a?s.getMany(n):s.get(n)).then(c=>typeof c=="string"?this.opts.deserialize(c):this.opts.compression?this.opts.deserialize(c):c).then(c=>{if(c!=null)return a?c.map((f,p)=>{if(typeof f=="string"&&(f=this.opts.deserialize(f)),f!=null){if(typeof f.expires=="number"&&Date.now()>f.expires){this.delete(e[p]).then(()=>{});return}return r&&r.raw?f:f.value}}):typeof c.expires=="number"&&Date.now()>c.expires?this.delete(e).then(()=>{}):r&&r.raw?c:c.value})}set(e,r,s){let a=this._getKeyPrefix(e);typeof s>"u"&&(s=this.opts.ttl),s===0&&(s=void 0);let{store:n}=this.opts;return Promise.resolve().then(()=>{let c=typeof s=="number"?Date.now()+s:null;return typeof r=="symbol"&&this.emit("error","symbol cannot be serialized"),r={value:r,expires:c},this.opts.serialize(r)}).then(c=>n.set(a,c,s)).then(()=>!0)}delete(e){let{store:r}=this.opts;if(Array.isArray(e)){let a=this._getKeyPrefixArray(e);if(r.deleteMany===void 0){let n=[];for(let c of a)n.push(r.delete(c));return Promise.allSettled(n).then(c=>c.every(f=>f.value===!0))}return Promise.resolve().then(()=>r.deleteMany(a))}let s=this._getKeyPrefix(e);return Promise.resolve().then(()=>r.delete(s))}clear(){let{store:e}=this.opts;return Promise.resolve().then(()=>e.clear())}has(e){let r=this._getKeyPrefix(e),{store:s}=this.opts;return Promise.resolve().then(async()=>typeof s.has=="function"?s.has(r):await s.get(r)!==void 0)}disconnect(){let{store:e}=this.opts;if(typeof e.disconnect=="function")return e.disconnect()}};ffe.exports=AH});var gfe=_((kMt,hfe)=>{"use strict";var dtt=Ie("events"),YQ=Ie("url"),mtt=Uue(),ytt=Xue(),pH=efe(),pfe=nfe(),Ett=WQ(),Itt=afe(),Ctt=Afe(),KB=class t{constructor(e,r){if(typeof e!="function")throw new TypeError("Parameter `request` must be a function");return this.cache=new Ctt({uri:typeof r=="string"&&r,store:typeof r!="string"&&r,namespace:"cacheable-request"}),this.createCacheableRequest(e)}createCacheableRequest(e){return(r,s)=>{let a;if(typeof r=="string")a=hH(YQ.parse(r)),r={};else if(r instanceof YQ.URL)a=hH(YQ.parse(r.toString())),r={};else{let[C,...S]=(r.path||"").split("?"),b=S.length>0?`?${S.join("?")}`:"";a=hH({...r,pathname:C,search:b})}r={headers:{},method:"GET",cache:!0,strictTtl:!1,automaticFailover:!1,...r,...wtt(a)},r.headers=Ett(r.headers);let n=new dtt,c=mtt(YQ.format(a),{stripWWW:!1,removeTrailingSlash:!1,stripAuthentication:!1}),f=`${r.method}:${c}`,p=!1,h=!1,E=C=>{h=!0;let S=!1,b,I=new Promise(N=>{b=()=>{S||(S=!0,N())}}),T=N=>{if(p&&!C.forceRefresh){N.status=N.statusCode;let W=pH.fromObject(p.cachePolicy).revalidatedPolicy(C,N);if(!W.modified){let ee=W.policy.responseHeaders();N=new pfe(p.statusCode,ee,p.body,p.url),N.cachePolicy=W.policy,N.fromCache=!0}}N.fromCache||(N.cachePolicy=new pH(C,N,C),N.fromCache=!1);let U;C.cache&&N.cachePolicy.storable()?(U=Itt(N),(async()=>{try{let W=ytt.buffer(N);if(await Promise.race([I,new Promise(le=>N.once("end",le))]),S)return;let ee=await W,ie={cachePolicy:N.cachePolicy.toObject(),url:N.url,statusCode:N.fromCache?p.statusCode:N.statusCode,body:ee},ue=C.strictTtl?N.cachePolicy.timeToLive():void 0;C.maxTtl&&(ue=ue?Math.min(ue,C.maxTtl):C.maxTtl),await this.cache.set(f,ie,ue)}catch(W){n.emit("error",new t.CacheError(W))}})()):C.cache&&p&&(async()=>{try{await this.cache.delete(f)}catch(W){n.emit("error",new t.CacheError(W))}})(),n.emit("response",U||N),typeof s=="function"&&s(U||N)};try{let N=e(C,T);N.once("error",b),N.once("abort",b),n.emit("request",N)}catch(N){n.emit("error",new t.RequestError(N))}};return(async()=>{let C=async b=>{await Promise.resolve();let I=b.cache?await this.cache.get(f):void 0;if(typeof I>"u")return E(b);let T=pH.fromObject(I.cachePolicy);if(T.satisfiesWithoutRevalidation(b)&&!b.forceRefresh){let N=T.responseHeaders(),U=new pfe(I.statusCode,N,I.body,I.url);U.cachePolicy=T,U.fromCache=!0,n.emit("response",U),typeof s=="function"&&s(U)}else p=I,b.headers=T.revalidationHeaders(b),E(b)},S=b=>n.emit("error",new t.CacheError(b));this.cache.once("error",S),n.on("response",()=>this.cache.removeListener("error",S));try{await C(r)}catch(b){r.automaticFailover&&!h&&E(r),n.emit("error",new t.CacheError(b))}})(),n}}};function wtt(t){let e={...t};return e.path=`${t.pathname||"/"}${t.search||""}`,delete e.pathname,delete e.search,e}function hH(t){return{protocol:t.protocol,auth:t.auth,hostname:t.hostname||t.host||"localhost",port:t.port,pathname:t.pathname,search:t.search}}KB.RequestError=class extends Error{constructor(t){super(t.message),this.name="RequestError",Object.assign(this,t)}};KB.CacheError=class extends Error{constructor(t){super(t.message),this.name="CacheError",Object.assign(this,t)}};hfe.exports=KB});var mfe=_((TMt,dfe)=>{"use strict";var Btt=["aborted","complete","headers","httpVersion","httpVersionMinor","httpVersionMajor","method","rawHeaders","rawTrailers","setTimeout","socket","statusCode","statusMessage","trailers","url"];dfe.exports=(t,e)=>{if(e._readableState.autoDestroy)throw new Error("The second stream must have the `autoDestroy` option set to `false`");let r=new Set(Object.keys(t).concat(Btt)),s={};for(let a of r)a in e||(s[a]={get(){let n=t[a];return typeof n=="function"?n.bind(t):n},set(n){t[a]=n},enumerable:!0,configurable:!1});return Object.defineProperties(e,s),t.once("aborted",()=>{e.destroy(),e.emit("aborted")}),t.once("close",()=>{t.complete&&e.readable?e.once("end",()=>{e.emit("close")}):e.emit("close")}),e}});var Efe=_((FMt,yfe)=>{"use strict";var{Transform:vtt,PassThrough:Stt}=Ie("stream"),gH=Ie("zlib"),Dtt=mfe();yfe.exports=t=>{let e=(t.headers["content-encoding"]||"").toLowerCase();if(!["gzip","deflate","br"].includes(e))return t;let r=e==="br";if(r&&typeof gH.createBrotliDecompress!="function")return t.destroy(new Error("Brotli is not supported on Node.js < 12")),t;let s=!0,a=new vtt({transform(f,p,h){s=!1,h(null,f)},flush(f){f()}}),n=new Stt({autoDestroy:!1,destroy(f,p){t.destroy(),p(f)}}),c=r?gH.createBrotliDecompress():gH.createUnzip();return c.once("error",f=>{if(s&&!t.readable){n.end();return}n.destroy(f)}),Dtt(t,n),t.pipe(a).pipe(c).pipe(n),n}});var mH=_((NMt,Ife)=>{"use strict";var dH=class{constructor(e={}){if(!(e.maxSize&&e.maxSize>0))throw new TypeError("`maxSize` must be a number greater than 0");this.maxSize=e.maxSize,this.onEviction=e.onEviction,this.cache=new Map,this.oldCache=new Map,this._size=0}_set(e,r){if(this.cache.set(e,r),this._size++,this._size>=this.maxSize){if(this._size=0,typeof this.onEviction=="function")for(let[s,a]of this.oldCache.entries())this.onEviction(s,a);this.oldCache=this.cache,this.cache=new Map}}get(e){if(this.cache.has(e))return this.cache.get(e);if(this.oldCache.has(e)){let r=this.oldCache.get(e);return this.oldCache.delete(e),this._set(e,r),r}}set(e,r){return this.cache.has(e)?this.cache.set(e,r):this._set(e,r),this}has(e){return this.cache.has(e)||this.oldCache.has(e)}peek(e){if(this.cache.has(e))return this.cache.get(e);if(this.oldCache.has(e))return this.oldCache.get(e)}delete(e){let r=this.cache.delete(e);return r&&this._size--,this.oldCache.delete(e)||r}clear(){this.cache.clear(),this.oldCache.clear(),this._size=0}*keys(){for(let[e]of this)yield e}*values(){for(let[,e]of this)yield e}*[Symbol.iterator](){for(let e of this.cache)yield e;for(let e of this.oldCache){let[r]=e;this.cache.has(r)||(yield e)}}get size(){let e=0;for(let r of this.oldCache.keys())this.cache.has(r)||e++;return Math.min(this._size+e,this.maxSize)}};Ife.exports=dH});var EH=_((OMt,vfe)=>{"use strict";var Ptt=Ie("events"),btt=Ie("tls"),xtt=Ie("http2"),ktt=mH(),ba=Symbol("currentStreamsCount"),Cfe=Symbol("request"),Tc=Symbol("cachedOriginSet"),gI=Symbol("gracefullyClosing"),Qtt=["maxDeflateDynamicTableSize","maxSessionMemory","maxHeaderListPairs","maxOutstandingPings","maxReservedRemoteStreams","maxSendHeaderBlockLength","paddingStrategy","localAddress","path","rejectUnauthorized","minDHSize","ca","cert","clientCertEngine","ciphers","key","pfx","servername","minVersion","maxVersion","secureProtocol","crl","honorCipherOrder","ecdhCurve","dhparam","secureOptions","sessionIdContext"],Rtt=(t,e,r)=>{let s=0,a=t.length;for(;s>>1;r(t[n],e)?s=n+1:a=n}return s},Ttt=(t,e)=>t.remoteSettings.maxConcurrentStreams>e.remoteSettings.maxConcurrentStreams,yH=(t,e)=>{for(let r of t)r[Tc].lengthe[Tc].includes(s))&&r[ba]+e[ba]<=e.remoteSettings.maxConcurrentStreams&&Bfe(r)},Ftt=(t,e)=>{for(let r of t)e[Tc].lengthr[Tc].includes(s))&&e[ba]+r[ba]<=r.remoteSettings.maxConcurrentStreams&&Bfe(e)},wfe=({agent:t,isFree:e})=>{let r={};for(let s in t.sessions){let n=t.sessions[s].filter(c=>{let f=c[im.kCurrentStreamsCount]{t[gI]=!0,t[ba]===0&&t.close()},im=class t extends Ptt{constructor({timeout:e=6e4,maxSessions:r=1/0,maxFreeSessions:s=10,maxCachedTlsSessions:a=100}={}){super(),this.sessions={},this.queue={},this.timeout=e,this.maxSessions=r,this.maxFreeSessions=s,this._freeSessionsCount=0,this._sessionsCount=0,this.settings={enablePush:!1},this.tlsSessionCache=new ktt({maxSize:a})}static normalizeOrigin(e,r){return typeof e=="string"&&(e=new URL(e)),r&&e.hostname!==r&&(e.hostname=r),e.origin}normalizeOptions(e){let r="";if(e)for(let s of Qtt)e[s]&&(r+=`:${e[s]}`);return r}_tryToCreateNewSession(e,r){if(!(e in this.queue)||!(r in this.queue[e]))return;let s=this.queue[e][r];this._sessionsCount{Array.isArray(s)?(s=[...s],a()):s=[{resolve:a,reject:n}];let c=this.normalizeOptions(r),f=t.normalizeOrigin(e,r&&r.servername);if(f===void 0){for(let{reject:E}of s)E(new TypeError("The `origin` argument needs to be a string or an URL object"));return}if(c in this.sessions){let E=this.sessions[c],C=-1,S=-1,b;for(let I of E){let T=I.remoteSettings.maxConcurrentStreams;if(T=T||I[gI]||I.destroyed)continue;b||(C=T),N>S&&(b=I,S=N)}}if(b){if(s.length!==1){for(let{reject:I}of s){let T=new Error(`Expected the length of listeners to be 1, got ${s.length}. Please report this to https://github.com/szmarczak/http2-wrapper/`);I(T)}return}s[0].resolve(b);return}}if(c in this.queue){if(f in this.queue[c]){this.queue[c][f].listeners.push(...s),this._tryToCreateNewSession(c,f);return}}else this.queue[c]={};let p=()=>{c in this.queue&&this.queue[c][f]===h&&(delete this.queue[c][f],Object.keys(this.queue[c]).length===0&&delete this.queue[c])},h=()=>{let E=`${f}:${c}`,C=!1;try{let S=xtt.connect(e,{createConnection:this.createConnection,settings:this.settings,session:this.tlsSessionCache.get(E),...r});S[ba]=0,S[gI]=!1;let b=()=>S[ba]{this.tlsSessionCache.set(E,N)}),S.once("error",N=>{for(let{reject:U}of s)U(N);this.tlsSessionCache.delete(E)}),S.setTimeout(this.timeout,()=>{S.destroy()}),S.once("close",()=>{if(C){I&&this._freeSessionsCount--,this._sessionsCount--;let N=this.sessions[c];N.splice(N.indexOf(S),1),N.length===0&&delete this.sessions[c]}else{let N=new Error("Session closed without receiving a SETTINGS frame");N.code="HTTP2WRAPPER_NOSETTINGS";for(let{reject:U}of s)U(N);p()}this._tryToCreateNewSession(c,f)});let T=()=>{if(!(!(c in this.queue)||!b())){for(let N of S[Tc])if(N in this.queue[c]){let{listeners:U}=this.queue[c][N];for(;U.length!==0&&b();)U.shift().resolve(S);let W=this.queue[c];if(W[N].listeners.length===0&&(delete W[N],Object.keys(W).length===0)){delete this.queue[c];break}if(!b())break}}};S.on("origin",()=>{S[Tc]=S.originSet,b()&&(T(),yH(this.sessions[c],S))}),S.once("remoteSettings",()=>{if(S.ref(),S.unref(),this._sessionsCount++,h.destroyed){let N=new Error("Agent has been destroyed");for(let U of s)U.reject(N);S.destroy();return}S[Tc]=S.originSet;{let N=this.sessions;if(c in N){let U=N[c];U.splice(Rtt(U,S,Ttt),0,S)}else N[c]=[S]}this._freeSessionsCount+=1,C=!0,this.emit("session",S),T(),p(),S[ba]===0&&this._freeSessionsCount>this.maxFreeSessions&&S.close(),s.length!==0&&(this.getSession(f,r,s),s.length=0),S.on("remoteSettings",()=>{T(),yH(this.sessions[c],S)})}),S[Cfe]=S.request,S.request=(N,U)=>{if(S[gI])throw new Error("The session is gracefully closing. No new streams are allowed.");let W=S[Cfe](N,U);return S.ref(),++S[ba],S[ba]===S.remoteSettings.maxConcurrentStreams&&this._freeSessionsCount--,W.once("close",()=>{if(I=b(),--S[ba],!S.destroyed&&!S.closed&&(Ftt(this.sessions[c],S),b()&&!S.closed)){I||(this._freeSessionsCount++,I=!0);let ee=S[ba]===0;ee&&S.unref(),ee&&(this._freeSessionsCount>this.maxFreeSessions||S[gI])?S.close():(yH(this.sessions[c],S),T())}}),W}}catch(S){for(let b of s)b.reject(S);p()}};h.listeners=s,h.completed=!1,h.destroyed=!1,this.queue[c][f]=h,this._tryToCreateNewSession(c,f)})}request(e,r,s,a){return new Promise((n,c)=>{this.getSession(e,r,[{reject:c,resolve:f=>{try{n(f.request(s,a))}catch(p){c(p)}}}])})}createConnection(e,r){return t.connect(e,r)}static connect(e,r){r.ALPNProtocols=["h2"];let s=e.port||443,a=e.hostname||e.host;return typeof r.servername>"u"&&(r.servername=a),btt.connect(s,a,r)}closeFreeSessions(){for(let e of Object.values(this.sessions))for(let r of e)r[ba]===0&&r.close()}destroy(e){for(let r of Object.values(this.sessions))for(let s of r)s.destroy(e);for(let r of Object.values(this.queue))for(let s of Object.values(r))s.destroyed=!0;this.queue={}}get freeSessions(){return wfe({agent:this,isFree:!0})}get busySessions(){return wfe({agent:this,isFree:!1})}};im.kCurrentStreamsCount=ba;im.kGracefullyClosing=gI;vfe.exports={Agent:im,globalAgent:new im}});var CH=_((LMt,Sfe)=>{"use strict";var{Readable:Ntt}=Ie("stream"),IH=class extends Ntt{constructor(e,r){super({highWaterMark:r,autoDestroy:!1}),this.statusCode=null,this.statusMessage="",this.httpVersion="2.0",this.httpVersionMajor=2,this.httpVersionMinor=0,this.headers={},this.trailers={},this.req=null,this.aborted=!1,this.complete=!1,this.upgrade=null,this.rawHeaders=[],this.rawTrailers=[],this.socket=e,this.connection=e,this._dumped=!1}_destroy(e){this.req._request.destroy(e)}setTimeout(e,r){return this.req.setTimeout(e,r),this}_dump(){this._dumped||(this._dumped=!0,this.removeAllListeners("data"),this.resume())}_read(){this.req&&this.req._request.resume()}};Sfe.exports=IH});var wH=_((MMt,Dfe)=>{"use strict";Dfe.exports=t=>{let e={protocol:t.protocol,hostname:typeof t.hostname=="string"&&t.hostname.startsWith("[")?t.hostname.slice(1,-1):t.hostname,host:t.host,hash:t.hash,search:t.search,pathname:t.pathname,href:t.href,path:`${t.pathname||""}${t.search||""}`};return typeof t.port=="string"&&t.port.length!==0&&(e.port=Number(t.port)),(t.username||t.password)&&(e.auth=`${t.username||""}:${t.password||""}`),e}});var bfe=_((UMt,Pfe)=>{"use strict";Pfe.exports=(t,e,r)=>{for(let s of r)t.on(s,(...a)=>e.emit(s,...a))}});var kfe=_((_Mt,xfe)=>{"use strict";xfe.exports=t=>{switch(t){case":method":case":scheme":case":authority":case":path":return!0;default:return!1}}});var Rfe=_((jMt,Qfe)=>{"use strict";var dI=(t,e,r)=>{Qfe.exports[e]=class extends t{constructor(...a){super(typeof r=="string"?r:r(a)),this.name=`${super.name} [${e}]`,this.code=e}}};dI(TypeError,"ERR_INVALID_ARG_TYPE",t=>{let e=t[0].includes(".")?"property":"argument",r=t[1],s=Array.isArray(r);return s&&(r=`${r.slice(0,-1).join(", ")} or ${r.slice(-1)}`),`The "${t[0]}" ${e} must be ${s?"one of":"of"} type ${r}. Received ${typeof t[2]}`});dI(TypeError,"ERR_INVALID_PROTOCOL",t=>`Protocol "${t[0]}" not supported. Expected "${t[1]}"`);dI(Error,"ERR_HTTP_HEADERS_SENT",t=>`Cannot ${t[0]} headers after they are sent to the client`);dI(TypeError,"ERR_INVALID_HTTP_TOKEN",t=>`${t[0]} must be a valid HTTP token [${t[1]}]`);dI(TypeError,"ERR_HTTP_INVALID_HEADER_VALUE",t=>`Invalid value "${t[0]} for header "${t[1]}"`);dI(TypeError,"ERR_INVALID_CHAR",t=>`Invalid character in ${t[0]} [${t[1]}]`)});var PH=_((GMt,Ufe)=>{"use strict";var Ott=Ie("http2"),{Writable:Ltt}=Ie("stream"),{Agent:Tfe,globalAgent:Mtt}=EH(),Utt=CH(),_tt=wH(),Htt=bfe(),jtt=kfe(),{ERR_INVALID_ARG_TYPE:BH,ERR_INVALID_PROTOCOL:Gtt,ERR_HTTP_HEADERS_SENT:Ffe,ERR_INVALID_HTTP_TOKEN:qtt,ERR_HTTP_INVALID_HEADER_VALUE:Wtt,ERR_INVALID_CHAR:Ytt}=Rfe(),{HTTP2_HEADER_STATUS:Nfe,HTTP2_HEADER_METHOD:Ofe,HTTP2_HEADER_PATH:Lfe,HTTP2_METHOD_CONNECT:Vtt}=Ott.constants,Jo=Symbol("headers"),vH=Symbol("origin"),SH=Symbol("session"),Mfe=Symbol("options"),VQ=Symbol("flushedHeaders"),zB=Symbol("jobs"),Jtt=/^[\^`\-\w!#$%&*+.|~]+$/,Ktt=/[^\t\u0020-\u007E\u0080-\u00FF]/,DH=class extends Ltt{constructor(e,r,s){super({autoDestroy:!1});let a=typeof e=="string"||e instanceof URL;if(a&&(e=_tt(e instanceof URL?e:new URL(e))),typeof r=="function"||r===void 0?(s=r,r=a?e:{...e}):r={...e,...r},r.h2session)this[SH]=r.h2session;else if(r.agent===!1)this.agent=new Tfe({maxFreeSessions:0});else if(typeof r.agent>"u"||r.agent===null)typeof r.createConnection=="function"?(this.agent=new Tfe({maxFreeSessions:0}),this.agent.createConnection=r.createConnection):this.agent=Mtt;else if(typeof r.agent.request=="function")this.agent=r.agent;else throw new BH("options.agent",["Agent-like Object","undefined","false"],r.agent);if(r.protocol&&r.protocol!=="https:")throw new Gtt(r.protocol,"https:");let n=r.port||r.defaultPort||this.agent&&this.agent.defaultPort||443,c=r.hostname||r.host||"localhost";delete r.hostname,delete r.host,delete r.port;let{timeout:f}=r;if(r.timeout=void 0,this[Jo]=Object.create(null),this[zB]=[],this.socket=null,this.connection=null,this.method=r.method||"GET",this.path=r.path,this.res=null,this.aborted=!1,this.reusedSocket=!1,r.headers)for(let[p,h]of Object.entries(r.headers))this.setHeader(p,h);r.auth&&!("authorization"in this[Jo])&&(this[Jo].authorization="Basic "+Buffer.from(r.auth).toString("base64")),r.session=r.tlsSession,r.path=r.socketPath,this[Mfe]=r,n===443?(this[vH]=`https://${c}`,":authority"in this[Jo]||(this[Jo][":authority"]=c)):(this[vH]=`https://${c}:${n}`,":authority"in this[Jo]||(this[Jo][":authority"]=`${c}:${n}`)),f&&this.setTimeout(f),s&&this.once("response",s),this[VQ]=!1}get method(){return this[Jo][Ofe]}set method(e){e&&(this[Jo][Ofe]=e.toUpperCase())}get path(){return this[Jo][Lfe]}set path(e){e&&(this[Jo][Lfe]=e)}get _mustNotHaveABody(){return this.method==="GET"||this.method==="HEAD"||this.method==="DELETE"}_write(e,r,s){if(this._mustNotHaveABody){s(new Error("The GET, HEAD and DELETE methods must NOT have a body"));return}this.flushHeaders();let a=()=>this._request.write(e,r,s);this._request?a():this[zB].push(a)}_final(e){if(this.destroyed)return;this.flushHeaders();let r=()=>{if(this._mustNotHaveABody){e();return}this._request.end(e)};this._request?r():this[zB].push(r)}abort(){this.res&&this.res.complete||(this.aborted||process.nextTick(()=>this.emit("abort")),this.aborted=!0,this.destroy())}_destroy(e,r){this.res&&this.res._dump(),this._request&&this._request.destroy(),r(e)}async flushHeaders(){if(this[VQ]||this.destroyed)return;this[VQ]=!0;let e=this.method===Vtt,r=s=>{if(this._request=s,this.destroyed){s.destroy();return}e||Htt(s,this,["timeout","continue","close","error"]);let a=c=>(...f)=>{!this.writable&&!this.destroyed?c(...f):this.once("finish",()=>{c(...f)})};s.once("response",a((c,f,p)=>{let h=new Utt(this.socket,s.readableHighWaterMark);this.res=h,h.req=this,h.statusCode=c[Nfe],h.headers=c,h.rawHeaders=p,h.once("end",()=>{this.aborted?(h.aborted=!0,h.emit("aborted")):(h.complete=!0,h.socket=null,h.connection=null)}),e?(h.upgrade=!0,this.emit("connect",h,s,Buffer.alloc(0))?this.emit("close"):s.destroy()):(s.on("data",E=>{!h._dumped&&!h.push(E)&&s.pause()}),s.once("end",()=>{h.push(null)}),this.emit("response",h)||h._dump())})),s.once("headers",a(c=>this.emit("information",{statusCode:c[Nfe]}))),s.once("trailers",a((c,f,p)=>{let{res:h}=this;h.trailers=c,h.rawTrailers=p}));let{socket:n}=s.session;this.socket=n,this.connection=n;for(let c of this[zB])c();this.emit("socket",this.socket)};if(this[SH])try{r(this[SH].request(this[Jo]))}catch(s){this.emit("error",s)}else{this.reusedSocket=!0;try{r(await this.agent.request(this[vH],this[Mfe],this[Jo]))}catch(s){this.emit("error",s)}}}getHeader(e){if(typeof e!="string")throw new BH("name","string",e);return this[Jo][e.toLowerCase()]}get headersSent(){return this[VQ]}removeHeader(e){if(typeof e!="string")throw new BH("name","string",e);if(this.headersSent)throw new Ffe("remove");delete this[Jo][e.toLowerCase()]}setHeader(e,r){if(this.headersSent)throw new Ffe("set");if(typeof e!="string"||!Jtt.test(e)&&!jtt(e))throw new qtt("Header name",e);if(typeof r>"u")throw new Wtt(r,e);if(Ktt.test(r))throw new Ytt("header content",e);this[Jo][e.toLowerCase()]=r}setNoDelay(){}setSocketKeepAlive(){}setTimeout(e,r){let s=()=>this._request.setTimeout(e,r);return this._request?s():this[zB].push(s),this}get maxHeadersCount(){if(!this.destroyed&&this._request)return this._request.session.localSettings.maxHeaderListSize}set maxHeadersCount(e){}};Ufe.exports=DH});var Hfe=_((qMt,_fe)=>{"use strict";var ztt=Ie("tls");_fe.exports=(t={},e=ztt.connect)=>new Promise((r,s)=>{let a=!1,n,c=async()=>{await p,n.off("timeout",f),n.off("error",s),t.resolveSocket?(r({alpnProtocol:n.alpnProtocol,socket:n,timeout:a}),a&&(await Promise.resolve(),n.emit("timeout"))):(n.destroy(),r({alpnProtocol:n.alpnProtocol,timeout:a}))},f=async()=>{a=!0,c()},p=(async()=>{try{n=await e(t,c),n.on("error",s),n.once("timeout",f)}catch(h){s(h)}})()})});var Gfe=_((WMt,jfe)=>{"use strict";var Ztt=Ie("net");jfe.exports=t=>{let e=t.host,r=t.headers&&t.headers.host;return r&&(r.startsWith("[")?r.indexOf("]")===-1?e=r:e=r.slice(1,-1):e=r.split(":",1)[0]),Ztt.isIP(e)?"":e}});var Yfe=_((YMt,xH)=>{"use strict";var qfe=Ie("http"),bH=Ie("https"),Xtt=Hfe(),$tt=mH(),ert=PH(),trt=Gfe(),rrt=wH(),JQ=new $tt({maxSize:100}),ZB=new Map,Wfe=(t,e,r)=>{e._httpMessage={shouldKeepAlive:!0};let s=()=>{t.emit("free",e,r)};e.on("free",s);let a=()=>{t.removeSocket(e,r)};e.on("close",a);let n=()=>{t.removeSocket(e,r),e.off("close",a),e.off("free",s),e.off("agentRemove",n)};e.on("agentRemove",n),t.emit("free",e,r)},nrt=async t=>{let e=`${t.host}:${t.port}:${t.ALPNProtocols.sort()}`;if(!JQ.has(e)){if(ZB.has(e))return(await ZB.get(e)).alpnProtocol;let{path:r,agent:s}=t;t.path=t.socketPath;let a=Xtt(t);ZB.set(e,a);try{let{socket:n,alpnProtocol:c}=await a;if(JQ.set(e,c),t.path=r,c==="h2")n.destroy();else{let{globalAgent:f}=bH,p=bH.Agent.prototype.createConnection;s?s.createConnection===p?Wfe(s,n,t):n.destroy():f.createConnection===p?Wfe(f,n,t):n.destroy()}return ZB.delete(e),c}catch(n){throw ZB.delete(e),n}}return JQ.get(e)};xH.exports=async(t,e,r)=>{if((typeof t=="string"||t instanceof URL)&&(t=rrt(new URL(t))),typeof e=="function"&&(r=e,e=void 0),e={ALPNProtocols:["h2","http/1.1"],...t,...e,resolveSocket:!0},!Array.isArray(e.ALPNProtocols)||e.ALPNProtocols.length===0)throw new Error("The `ALPNProtocols` option must be an Array with at least one entry");e.protocol=e.protocol||"https:";let s=e.protocol==="https:";e.host=e.hostname||e.host||"localhost",e.session=e.tlsSession,e.servername=e.servername||trt(e),e.port=e.port||(s?443:80),e._defaultAgent=s?bH.globalAgent:qfe.globalAgent;let a=e.agent;if(a){if(a.addRequest)throw new Error("The `options.agent` object can contain only `http`, `https` or `http2` properties");e.agent=a[s?"https":"http"]}return s&&await nrt(e)==="h2"?(a&&(e.agent=a.http2),new ert(e,r)):qfe.request(e,r)};xH.exports.protocolCache=JQ});var Jfe=_((VMt,Vfe)=>{"use strict";var irt=Ie("http2"),srt=EH(),kH=PH(),ort=CH(),art=Yfe(),lrt=(t,e,r)=>new kH(t,e,r),crt=(t,e,r)=>{let s=new kH(t,e,r);return s.end(),s};Vfe.exports={...irt,ClientRequest:kH,IncomingMessage:ort,...srt,request:lrt,get:crt,auto:art}});var RH=_(QH=>{"use strict";Object.defineProperty(QH,"__esModule",{value:!0});var Kfe=Np();QH.default=t=>Kfe.default.nodeStream(t)&&Kfe.default.function_(t.getBoundary)});var $fe=_(TH=>{"use strict";Object.defineProperty(TH,"__esModule",{value:!0});var Zfe=Ie("fs"),Xfe=Ie("util"),zfe=Np(),urt=RH(),frt=Xfe.promisify(Zfe.stat);TH.default=async(t,e)=>{if(e&&"content-length"in e)return Number(e["content-length"]);if(!t)return 0;if(zfe.default.string(t))return Buffer.byteLength(t);if(zfe.default.buffer(t))return t.length;if(urt.default(t))return Xfe.promisify(t.getLength.bind(t))();if(t instanceof Zfe.ReadStream){let{size:r}=await frt(t.path);return r===0?void 0:r}}});var NH=_(FH=>{"use strict";Object.defineProperty(FH,"__esModule",{value:!0});function Art(t,e,r){let s={};for(let a of r)s[a]=(...n)=>{e.emit(a,...n)},t.on(a,s[a]);return()=>{for(let a of r)t.off(a,s[a])}}FH.default=Art});var eAe=_(OH=>{"use strict";Object.defineProperty(OH,"__esModule",{value:!0});OH.default=()=>{let t=[];return{once(e,r,s){e.once(r,s),t.push({origin:e,event:r,fn:s})},unhandleAll(){for(let e of t){let{origin:r,event:s,fn:a}=e;r.removeListener(s,a)}t.length=0}}}});var rAe=_(XB=>{"use strict";Object.defineProperty(XB,"__esModule",{value:!0});XB.TimeoutError=void 0;var prt=Ie("net"),hrt=eAe(),tAe=Symbol("reentry"),grt=()=>{},KQ=class extends Error{constructor(e,r){super(`Timeout awaiting '${r}' for ${e}ms`),this.event=r,this.name="TimeoutError",this.code="ETIMEDOUT"}};XB.TimeoutError=KQ;XB.default=(t,e,r)=>{if(tAe in t)return grt;t[tAe]=!0;let s=[],{once:a,unhandleAll:n}=hrt.default(),c=(C,S,b)=>{var I;let T=setTimeout(S,C,C,b);(I=T.unref)===null||I===void 0||I.call(T);let N=()=>{clearTimeout(T)};return s.push(N),N},{host:f,hostname:p}=r,h=(C,S)=>{t.destroy(new KQ(C,S))},E=()=>{for(let C of s)C();n()};if(t.once("error",C=>{if(E(),t.listenerCount("error")===0)throw C}),t.once("close",E),a(t,"response",C=>{a(C,"end",E)}),typeof e.request<"u"&&c(e.request,h,"request"),typeof e.socket<"u"){let C=()=>{h(e.socket,"socket")};t.setTimeout(e.socket,C),s.push(()=>{t.removeListener("timeout",C)})}return a(t,"socket",C=>{var S;let{socketPath:b}=t;if(C.connecting){let I=!!(b??prt.isIP((S=p??f)!==null&&S!==void 0?S:"")!==0);if(typeof e.lookup<"u"&&!I&&typeof C.address().address>"u"){let T=c(e.lookup,h,"lookup");a(C,"lookup",T)}if(typeof e.connect<"u"){let T=()=>c(e.connect,h,"connect");I?a(C,"connect",T()):a(C,"lookup",N=>{N===null&&a(C,"connect",T())})}typeof e.secureConnect<"u"&&r.protocol==="https:"&&a(C,"connect",()=>{let T=c(e.secureConnect,h,"secureConnect");a(C,"secureConnect",T)})}if(typeof e.send<"u"){let I=()=>c(e.send,h,"send");C.connecting?a(C,"connect",()=>{a(t,"upload-complete",I())}):a(t,"upload-complete",I())}}),typeof e.response<"u"&&a(t,"upload-complete",()=>{let C=c(e.response,h,"response");a(t,"response",C)}),E}});var iAe=_(LH=>{"use strict";Object.defineProperty(LH,"__esModule",{value:!0});var nAe=Np();LH.default=t=>{t=t;let e={protocol:t.protocol,hostname:nAe.default.string(t.hostname)&&t.hostname.startsWith("[")?t.hostname.slice(1,-1):t.hostname,host:t.host,hash:t.hash,search:t.search,pathname:t.pathname,href:t.href,path:`${t.pathname||""}${t.search||""}`};return nAe.default.string(t.port)&&t.port.length>0&&(e.port=Number(t.port)),(t.username||t.password)&&(e.auth=`${t.username||""}:${t.password||""}`),e}});var sAe=_(MH=>{"use strict";Object.defineProperty(MH,"__esModule",{value:!0});var drt=Ie("url"),mrt=["protocol","host","hostname","port","pathname","search"];MH.default=(t,e)=>{var r,s;if(e.path){if(e.pathname)throw new TypeError("Parameters `path` and `pathname` are mutually exclusive.");if(e.search)throw new TypeError("Parameters `path` and `search` are mutually exclusive.");if(e.searchParams)throw new TypeError("Parameters `path` and `searchParams` are mutually exclusive.")}if(e.search&&e.searchParams)throw new TypeError("Parameters `search` and `searchParams` are mutually exclusive.");if(!t){if(!e.protocol)throw new TypeError("No URL protocol specified");t=`${e.protocol}//${(s=(r=e.hostname)!==null&&r!==void 0?r:e.host)!==null&&s!==void 0?s:""}`}let a=new drt.URL(t);if(e.path){let n=e.path.indexOf("?");n===-1?e.pathname=e.path:(e.pathname=e.path.slice(0,n),e.search=e.path.slice(n+1)),delete e.path}for(let n of mrt)e[n]&&(a[n]=e[n].toString());return a}});var oAe=_(_H=>{"use strict";Object.defineProperty(_H,"__esModule",{value:!0});var UH=class{constructor(){this.weakMap=new WeakMap,this.map=new Map}set(e,r){typeof e=="object"?this.weakMap.set(e,r):this.map.set(e,r)}get(e){return typeof e=="object"?this.weakMap.get(e):this.map.get(e)}has(e){return typeof e=="object"?this.weakMap.has(e):this.map.has(e)}};_H.default=UH});var jH=_(HH=>{"use strict";Object.defineProperty(HH,"__esModule",{value:!0});var yrt=async t=>{let e=[],r=0;for await(let s of t)e.push(s),r+=Buffer.byteLength(s);return Buffer.isBuffer(e[0])?Buffer.concat(e,r):Buffer.from(e.join(""))};HH.default=yrt});var lAe=_(sm=>{"use strict";Object.defineProperty(sm,"__esModule",{value:!0});sm.dnsLookupIpVersionToFamily=sm.isDnsLookupIpVersion=void 0;var aAe={auto:0,ipv4:4,ipv6:6};sm.isDnsLookupIpVersion=t=>t in aAe;sm.dnsLookupIpVersionToFamily=t=>{if(sm.isDnsLookupIpVersion(t))return aAe[t];throw new Error("Invalid DNS lookup IP version")}});var GH=_(zQ=>{"use strict";Object.defineProperty(zQ,"__esModule",{value:!0});zQ.isResponseOk=void 0;zQ.isResponseOk=t=>{let{statusCode:e}=t,r=t.request.options.followRedirect?299:399;return e>=200&&e<=r||e===304}});var uAe=_(qH=>{"use strict";Object.defineProperty(qH,"__esModule",{value:!0});var cAe=new Set;qH.default=t=>{cAe.has(t)||(cAe.add(t),process.emitWarning(`Got: ${t}`,{type:"DeprecationWarning"}))}});var fAe=_(WH=>{"use strict";Object.defineProperty(WH,"__esModule",{value:!0});var Si=Np(),Ert=(t,e)=>{if(Si.default.null_(t.encoding))throw new TypeError("To get a Buffer, set `options.responseType` to `buffer` instead");Si.assert.any([Si.default.string,Si.default.undefined],t.encoding),Si.assert.any([Si.default.boolean,Si.default.undefined],t.resolveBodyOnly),Si.assert.any([Si.default.boolean,Si.default.undefined],t.methodRewriting),Si.assert.any([Si.default.boolean,Si.default.undefined],t.isStream),Si.assert.any([Si.default.string,Si.default.undefined],t.responseType),t.responseType===void 0&&(t.responseType="text");let{retry:r}=t;if(e?t.retry={...e.retry}:t.retry={calculateDelay:s=>s.computedValue,limit:0,methods:[],statusCodes:[],errorCodes:[],maxRetryAfter:void 0},Si.default.object(r)?(t.retry={...t.retry,...r},t.retry.methods=[...new Set(t.retry.methods.map(s=>s.toUpperCase()))],t.retry.statusCodes=[...new Set(t.retry.statusCodes)],t.retry.errorCodes=[...new Set(t.retry.errorCodes)]):Si.default.number(r)&&(t.retry.limit=r),Si.default.undefined(t.retry.maxRetryAfter)&&(t.retry.maxRetryAfter=Math.min(...[t.timeout.request,t.timeout.connect].filter(Si.default.number))),Si.default.object(t.pagination)){e&&(t.pagination={...e.pagination,...t.pagination});let{pagination:s}=t;if(!Si.default.function_(s.transform))throw new Error("`options.pagination.transform` must be implemented");if(!Si.default.function_(s.shouldContinue))throw new Error("`options.pagination.shouldContinue` must be implemented");if(!Si.default.function_(s.filter))throw new TypeError("`options.pagination.filter` must be implemented");if(!Si.default.function_(s.paginate))throw new Error("`options.pagination.paginate` must be implemented")}return t.responseType==="json"&&t.headers.accept===void 0&&(t.headers.accept="application/json"),t};WH.default=Ert});var AAe=_($B=>{"use strict";Object.defineProperty($B,"__esModule",{value:!0});$B.retryAfterStatusCodes=void 0;$B.retryAfterStatusCodes=new Set([413,429,503]);var Irt=({attemptCount:t,retryOptions:e,error:r,retryAfter:s})=>{if(t>e.limit)return 0;let a=e.methods.includes(r.options.method),n=e.errorCodes.includes(r.code),c=r.response&&e.statusCodes.includes(r.response.statusCode);if(!a||!n&&!c)return 0;if(r.response){if(s)return e.maxRetryAfter===void 0||s>e.maxRetryAfter?0:s;if(r.response.statusCode===413)return 0}let f=Math.random()*100;return 2**(t-1)*1e3+f};$B.default=Irt});var rv=_(Ln=>{"use strict";Object.defineProperty(Ln,"__esModule",{value:!0});Ln.UnsupportedProtocolError=Ln.ReadError=Ln.TimeoutError=Ln.UploadError=Ln.CacheError=Ln.HTTPError=Ln.MaxRedirectsError=Ln.RequestError=Ln.setNonEnumerableProperties=Ln.knownHookEvents=Ln.withoutBody=Ln.kIsNormalizedAlready=void 0;var pAe=Ie("util"),hAe=Ie("stream"),Crt=Ie("fs"),w0=Ie("url"),gAe=Ie("http"),YH=Ie("http"),wrt=Ie("https"),Brt=xue(),vrt=Oue(),dAe=gfe(),Srt=Efe(),Drt=Jfe(),Prt=WQ(),at=Np(),brt=$fe(),mAe=RH(),xrt=NH(),yAe=rAe(),krt=iAe(),EAe=sAe(),Qrt=oAe(),Rrt=jH(),IAe=lAe(),Trt=GH(),B0=uAe(),Frt=fAe(),Nrt=AAe(),VH,po=Symbol("request"),$Q=Symbol("response"),mI=Symbol("responseSize"),yI=Symbol("downloadedSize"),EI=Symbol("bodySize"),II=Symbol("uploadedSize"),ZQ=Symbol("serverResponsesPiped"),CAe=Symbol("unproxyEvents"),wAe=Symbol("isFromCache"),JH=Symbol("cancelTimeouts"),BAe=Symbol("startedReading"),CI=Symbol("stopReading"),XQ=Symbol("triggerRead"),v0=Symbol("body"),ev=Symbol("jobs"),vAe=Symbol("originalResponse"),SAe=Symbol("retryTimeout");Ln.kIsNormalizedAlready=Symbol("isNormalizedAlready");var Ort=at.default.string(process.versions.brotli);Ln.withoutBody=new Set(["GET","HEAD"]);Ln.knownHookEvents=["init","beforeRequest","beforeRedirect","beforeError","beforeRetry","afterResponse"];function Lrt(t){for(let e in t){let r=t[e];if(!at.default.string(r)&&!at.default.number(r)&&!at.default.boolean(r)&&!at.default.null_(r)&&!at.default.undefined(r))throw new TypeError(`The \`searchParams\` value '${String(r)}' must be a string, number, boolean or null`)}}function Mrt(t){return at.default.object(t)&&!("statusCode"in t)}var KH=new Qrt.default,Urt=async t=>new Promise((e,r)=>{let s=a=>{r(a)};t.pending||e(),t.once("error",s),t.once("ready",()=>{t.off("error",s),e()})}),_rt=new Set([300,301,302,303,304,307,308]),Hrt=["context","body","json","form"];Ln.setNonEnumerableProperties=(t,e)=>{let r={};for(let s of t)if(s)for(let a of Hrt)a in s&&(r[a]={writable:!0,configurable:!0,enumerable:!1,value:s[a]});Object.defineProperties(e,r)};var us=class extends Error{constructor(e,r,s){var a;if(super(e),Error.captureStackTrace(this,this.constructor),this.name="RequestError",this.code=r.code,s instanceof oR?(Object.defineProperty(this,"request",{enumerable:!1,value:s}),Object.defineProperty(this,"response",{enumerable:!1,value:s[$Q]}),Object.defineProperty(this,"options",{enumerable:!1,value:s.options})):Object.defineProperty(this,"options",{enumerable:!1,value:s}),this.timings=(a=this.request)===null||a===void 0?void 0:a.timings,at.default.string(r.stack)&&at.default.string(this.stack)){let n=this.stack.indexOf(this.message)+this.message.length,c=this.stack.slice(n).split(` `).reverse(),f=r.stack.slice(r.stack.indexOf(r.message)+r.message.length).split(` `).reverse();for(;f.length!==0&&f[0]===c[0];)c.shift();this.stack=`${this.stack.slice(0,n)}${c.reverse().join(` `)}${f.reverse().join(` `)}`}}};Ln.RequestError=us;var eR=class extends us{constructor(e){super(`Redirected ${e.options.maxRedirects} times. Aborting.`,{},e),this.name="MaxRedirectsError"}};Ln.MaxRedirectsError=eR;var tR=class extends us{constructor(e){super(`Response code ${e.statusCode} (${e.statusMessage})`,{},e.request),this.name="HTTPError"}};Ln.HTTPError=tR;var rR=class extends us{constructor(e,r){super(e.message,e,r),this.name="CacheError"}};Ln.CacheError=rR;var nR=class extends us{constructor(e,r){super(e.message,e,r),this.name="UploadError"}};Ln.UploadError=nR;var iR=class extends us{constructor(e,r,s){super(e.message,e,s),this.name="TimeoutError",this.event=e.event,this.timings=r}};Ln.TimeoutError=iR;var tv=class extends us{constructor(e,r){super(e.message,e,r),this.name="ReadError"}};Ln.ReadError=tv;var sR=class extends us{constructor(e){super(`Unsupported protocol "${e.url.protocol}"`,{},e),this.name="UnsupportedProtocolError"}};Ln.UnsupportedProtocolError=sR;var jrt=["socket","connect","continue","information","upgrade","timeout"],oR=class extends hAe.Duplex{constructor(e,r={},s){super({autoDestroy:!1,highWaterMark:0}),this[yI]=0,this[II]=0,this.requestInitialized=!1,this[ZQ]=new Set,this.redirects=[],this[CI]=!1,this[XQ]=!1,this[ev]=[],this.retryCount=0,this._progressCallbacks=[];let a=()=>this._unlockWrite(),n=()=>this._lockWrite();this.on("pipe",h=>{h.prependListener("data",a),h.on("data",n),h.prependListener("end",a),h.on("end",n)}),this.on("unpipe",h=>{h.off("data",a),h.off("data",n),h.off("end",a),h.off("end",n)}),this.on("pipe",h=>{h instanceof YH.IncomingMessage&&(this.options.headers={...h.headers,...this.options.headers})});let{json:c,body:f,form:p}=r;if((c||f||p)&&this._lockWrite(),Ln.kIsNormalizedAlready in r)this.options=r;else try{this.options=this.constructor.normalizeArguments(e,r,s)}catch(h){at.default.nodeStream(r.body)&&r.body.destroy(),this.destroy(h);return}(async()=>{var h;try{this.options.body instanceof Crt.ReadStream&&await Urt(this.options.body);let{url:E}=this.options;if(!E)throw new TypeError("Missing `url` property");if(this.requestUrl=E.toString(),decodeURI(this.requestUrl),await this._finalizeBody(),await this._makeRequest(),this.destroyed){(h=this[po])===null||h===void 0||h.destroy();return}for(let C of this[ev])C();this[ev].length=0,this.requestInitialized=!0}catch(E){if(E instanceof us){this._beforeError(E);return}this.destroyed||this.destroy(E)}})()}static normalizeArguments(e,r,s){var a,n,c,f,p;let h=r;if(at.default.object(e)&&!at.default.urlInstance(e))r={...s,...e,...r};else{if(e&&r&&r.url!==void 0)throw new TypeError("The `url` option is mutually exclusive with the `input` argument");r={...s,...r},e!==void 0&&(r.url=e),at.default.urlInstance(r.url)&&(r.url=new w0.URL(r.url.toString()))}if(r.cache===!1&&(r.cache=void 0),r.dnsCache===!1&&(r.dnsCache=void 0),at.assert.any([at.default.string,at.default.undefined],r.method),at.assert.any([at.default.object,at.default.undefined],r.headers),at.assert.any([at.default.string,at.default.urlInstance,at.default.undefined],r.prefixUrl),at.assert.any([at.default.object,at.default.undefined],r.cookieJar),at.assert.any([at.default.object,at.default.string,at.default.undefined],r.searchParams),at.assert.any([at.default.object,at.default.string,at.default.undefined],r.cache),at.assert.any([at.default.object,at.default.number,at.default.undefined],r.timeout),at.assert.any([at.default.object,at.default.undefined],r.context),at.assert.any([at.default.object,at.default.undefined],r.hooks),at.assert.any([at.default.boolean,at.default.undefined],r.decompress),at.assert.any([at.default.boolean,at.default.undefined],r.ignoreInvalidCookies),at.assert.any([at.default.boolean,at.default.undefined],r.followRedirect),at.assert.any([at.default.number,at.default.undefined],r.maxRedirects),at.assert.any([at.default.boolean,at.default.undefined],r.throwHttpErrors),at.assert.any([at.default.boolean,at.default.undefined],r.http2),at.assert.any([at.default.boolean,at.default.undefined],r.allowGetBody),at.assert.any([at.default.string,at.default.undefined],r.localAddress),at.assert.any([IAe.isDnsLookupIpVersion,at.default.undefined],r.dnsLookupIpVersion),at.assert.any([at.default.object,at.default.undefined],r.https),at.assert.any([at.default.boolean,at.default.undefined],r.rejectUnauthorized),r.https&&(at.assert.any([at.default.boolean,at.default.undefined],r.https.rejectUnauthorized),at.assert.any([at.default.function_,at.default.undefined],r.https.checkServerIdentity),at.assert.any([at.default.string,at.default.object,at.default.array,at.default.undefined],r.https.certificateAuthority),at.assert.any([at.default.string,at.default.object,at.default.array,at.default.undefined],r.https.key),at.assert.any([at.default.string,at.default.object,at.default.array,at.default.undefined],r.https.certificate),at.assert.any([at.default.string,at.default.undefined],r.https.passphrase),at.assert.any([at.default.string,at.default.buffer,at.default.array,at.default.undefined],r.https.pfx)),at.assert.any([at.default.object,at.default.undefined],r.cacheOptions),at.default.string(r.method)?r.method=r.method.toUpperCase():r.method="GET",r.headers===s?.headers?r.headers={...r.headers}:r.headers=Prt({...s?.headers,...r.headers}),"slashes"in r)throw new TypeError("The legacy `url.Url` has been deprecated. Use `URL` instead.");if("auth"in r)throw new TypeError("Parameter `auth` is deprecated. Use `username` / `password` instead.");if("searchParams"in r&&r.searchParams&&r.searchParams!==s?.searchParams){let b;if(at.default.string(r.searchParams)||r.searchParams instanceof w0.URLSearchParams)b=new w0.URLSearchParams(r.searchParams);else{Lrt(r.searchParams),b=new w0.URLSearchParams;for(let I in r.searchParams){let T=r.searchParams[I];T===null?b.append(I,""):T!==void 0&&b.append(I,T)}}(a=s?.searchParams)===null||a===void 0||a.forEach((I,T)=>{b.has(T)||b.append(T,I)}),r.searchParams=b}if(r.username=(n=r.username)!==null&&n!==void 0?n:"",r.password=(c=r.password)!==null&&c!==void 0?c:"",at.default.undefined(r.prefixUrl)?r.prefixUrl=(f=s?.prefixUrl)!==null&&f!==void 0?f:"":(r.prefixUrl=r.prefixUrl.toString(),r.prefixUrl!==""&&!r.prefixUrl.endsWith("/")&&(r.prefixUrl+="/")),at.default.string(r.url)){if(r.url.startsWith("/"))throw new Error("`input` must not start with a slash when using `prefixUrl`");r.url=EAe.default(r.prefixUrl+r.url,r)}else(at.default.undefined(r.url)&&r.prefixUrl!==""||r.protocol)&&(r.url=EAe.default(r.prefixUrl,r));if(r.url){"port"in r&&delete r.port;let{prefixUrl:b}=r;Object.defineProperty(r,"prefixUrl",{set:T=>{let N=r.url;if(!N.href.startsWith(T))throw new Error(`Cannot change \`prefixUrl\` from ${b} to ${T}: ${N.href}`);r.url=new w0.URL(T+N.href.slice(b.length)),b=T},get:()=>b});let{protocol:I}=r.url;if(I==="unix:"&&(I="http:",r.url=new w0.URL(`http://unix${r.url.pathname}${r.url.search}`)),r.searchParams&&(r.url.search=r.searchParams.toString()),I!=="http:"&&I!=="https:")throw new sR(r);r.username===""?r.username=r.url.username:r.url.username=r.username,r.password===""?r.password=r.url.password:r.url.password=r.password}let{cookieJar:E}=r;if(E){let{setCookie:b,getCookieString:I}=E;at.assert.function_(b),at.assert.function_(I),b.length===4&&I.length===0&&(b=pAe.promisify(b.bind(r.cookieJar)),I=pAe.promisify(I.bind(r.cookieJar)),r.cookieJar={setCookie:b,getCookieString:I})}let{cache:C}=r;if(C&&(KH.has(C)||KH.set(C,new dAe((b,I)=>{let T=b[po](b,I);return at.default.promise(T)&&(T.once=(N,U)=>{if(N==="error")T.catch(U);else if(N==="abort")(async()=>{try{(await T).once("abort",U)}catch{}})();else throw new Error(`Unknown HTTP2 promise event: ${N}`);return T}),T},C))),r.cacheOptions={...r.cacheOptions},r.dnsCache===!0)VH||(VH=new vrt.default),r.dnsCache=VH;else if(!at.default.undefined(r.dnsCache)&&!r.dnsCache.lookup)throw new TypeError(`Parameter \`dnsCache\` must be a CacheableLookup instance or a boolean, got ${at.default(r.dnsCache)}`);at.default.number(r.timeout)?r.timeout={request:r.timeout}:s&&r.timeout!==s.timeout?r.timeout={...s.timeout,...r.timeout}:r.timeout={...r.timeout},r.context||(r.context={});let S=r.hooks===s?.hooks;r.hooks={...r.hooks};for(let b of Ln.knownHookEvents)if(b in r.hooks)if(at.default.array(r.hooks[b]))r.hooks[b]=[...r.hooks[b]];else throw new TypeError(`Parameter \`${b}\` must be an Array, got ${at.default(r.hooks[b])}`);else r.hooks[b]=[];if(s&&!S)for(let b of Ln.knownHookEvents)s.hooks[b].length>0&&(r.hooks[b]=[...s.hooks[b],...r.hooks[b]]);if("family"in r&&B0.default('"options.family" was never documented, please use "options.dnsLookupIpVersion"'),s?.https&&(r.https={...s.https,...r.https}),"rejectUnauthorized"in r&&B0.default('"options.rejectUnauthorized" is now deprecated, please use "options.https.rejectUnauthorized"'),"checkServerIdentity"in r&&B0.default('"options.checkServerIdentity" was never documented, please use "options.https.checkServerIdentity"'),"ca"in r&&B0.default('"options.ca" was never documented, please use "options.https.certificateAuthority"'),"key"in r&&B0.default('"options.key" was never documented, please use "options.https.key"'),"cert"in r&&B0.default('"options.cert" was never documented, please use "options.https.certificate"'),"passphrase"in r&&B0.default('"options.passphrase" was never documented, please use "options.https.passphrase"'),"pfx"in r&&B0.default('"options.pfx" was never documented, please use "options.https.pfx"'),"followRedirects"in r)throw new TypeError("The `followRedirects` option does not exist. Use `followRedirect` instead.");if(r.agent){for(let b in r.agent)if(b!=="http"&&b!=="https"&&b!=="http2")throw new TypeError(`Expected the \`options.agent\` properties to be \`http\`, \`https\` or \`http2\`, got \`${b}\``)}return r.maxRedirects=(p=r.maxRedirects)!==null&&p!==void 0?p:0,Ln.setNonEnumerableProperties([s,h],r),Frt.default(r,s)}_lockWrite(){let e=()=>{throw new TypeError("The payload has been already provided")};this.write=e,this.end=e}_unlockWrite(){this.write=super.write,this.end=super.end}async _finalizeBody(){let{options:e}=this,{headers:r}=e,s=!at.default.undefined(e.form),a=!at.default.undefined(e.json),n=!at.default.undefined(e.body),c=s||a||n,f=Ln.withoutBody.has(e.method)&&!(e.method==="GET"&&e.allowGetBody);if(this._cannotHaveBody=f,c){if(f)throw new TypeError(`The \`${e.method}\` method cannot be used with a body`);if([n,s,a].filter(p=>p).length>1)throw new TypeError("The `body`, `json` and `form` options are mutually exclusive");if(n&&!(e.body instanceof hAe.Readable)&&!at.default.string(e.body)&&!at.default.buffer(e.body)&&!mAe.default(e.body))throw new TypeError("The `body` option must be a stream.Readable, string or Buffer");if(s&&!at.default.object(e.form))throw new TypeError("The `form` option must be an Object");{let p=!at.default.string(r["content-type"]);n?(mAe.default(e.body)&&p&&(r["content-type"]=`multipart/form-data; boundary=${e.body.getBoundary()}`),this[v0]=e.body):s?(p&&(r["content-type"]="application/x-www-form-urlencoded"),this[v0]=new w0.URLSearchParams(e.form).toString()):(p&&(r["content-type"]="application/json"),this[v0]=e.stringifyJson(e.json));let h=await brt.default(this[v0],e.headers);at.default.undefined(r["content-length"])&&at.default.undefined(r["transfer-encoding"])&&!f&&!at.default.undefined(h)&&(r["content-length"]=String(h))}}else f?this._lockWrite():this._unlockWrite();this[EI]=Number(r["content-length"])||void 0}async _onResponseBase(e){let{options:r}=this,{url:s}=r;this[vAe]=e,r.decompress&&(e=Srt(e));let a=e.statusCode,n=e;n.statusMessage=n.statusMessage?n.statusMessage:gAe.STATUS_CODES[a],n.url=r.url.toString(),n.requestUrl=this.requestUrl,n.redirectUrls=this.redirects,n.request=this,n.isFromCache=e.fromCache||!1,n.ip=this.ip,n.retryCount=this.retryCount,this[wAe]=n.isFromCache,this[mI]=Number(e.headers["content-length"])||void 0,this[$Q]=e,e.once("end",()=>{this[mI]=this[yI],this.emit("downloadProgress",this.downloadProgress)}),e.once("error",f=>{e.destroy(),this._beforeError(new tv(f,this))}),e.once("aborted",()=>{this._beforeError(new tv({name:"Error",message:"The server aborted pending request",code:"ECONNRESET"},this))}),this.emit("downloadProgress",this.downloadProgress);let c=e.headers["set-cookie"];if(at.default.object(r.cookieJar)&&c){let f=c.map(async p=>r.cookieJar.setCookie(p,s.toString()));r.ignoreInvalidCookies&&(f=f.map(async p=>p.catch(()=>{})));try{await Promise.all(f)}catch(p){this._beforeError(p);return}}if(r.followRedirect&&e.headers.location&&_rt.has(a)){if(e.resume(),this[po]&&(this[JH](),delete this[po],this[CAe]()),(a===303&&r.method!=="GET"&&r.method!=="HEAD"||!r.methodRewriting)&&(r.method="GET","body"in r&&delete r.body,"json"in r&&delete r.json,"form"in r&&delete r.form,this[v0]=void 0,delete r.headers["content-length"]),this.redirects.length>=r.maxRedirects){this._beforeError(new eR(this));return}try{let p=Buffer.from(e.headers.location,"binary").toString(),h=new w0.URL(p,s),E=h.toString();decodeURI(E),h.hostname!==s.hostname||h.port!==s.port?("host"in r.headers&&delete r.headers.host,"cookie"in r.headers&&delete r.headers.cookie,"authorization"in r.headers&&delete r.headers.authorization,(r.username||r.password)&&(r.username="",r.password="")):(h.username=r.username,h.password=r.password),this.redirects.push(E),r.url=h;for(let C of r.hooks.beforeRedirect)await C(r,n);this.emit("redirect",n,r),await this._makeRequest()}catch(p){this._beforeError(p);return}return}if(r.isStream&&r.throwHttpErrors&&!Trt.isResponseOk(n)){this._beforeError(new tR(n));return}e.on("readable",()=>{this[XQ]&&this._read()}),this.on("resume",()=>{e.resume()}),this.on("pause",()=>{e.pause()}),e.once("end",()=>{this.push(null)}),this.emit("response",e);for(let f of this[ZQ])if(!f.headersSent){for(let p in e.headers){let h=r.decompress?p!=="content-encoding":!0,E=e.headers[p];h&&f.setHeader(p,E)}f.statusCode=a}}async _onResponse(e){try{await this._onResponseBase(e)}catch(r){this._beforeError(r)}}_onRequest(e){let{options:r}=this,{timeout:s,url:a}=r;Brt.default(e),this[JH]=yAe.default(e,s,a);let n=r.cache?"cacheableResponse":"response";e.once(n,p=>{this._onResponse(p)}),e.once("error",p=>{var h;e.destroy(),(h=e.res)===null||h===void 0||h.removeAllListeners("end"),p=p instanceof yAe.TimeoutError?new iR(p,this.timings,this):new us(p.message,p,this),this._beforeError(p)}),this[CAe]=xrt.default(e,this,jrt),this[po]=e,this.emit("uploadProgress",this.uploadProgress);let c=this[v0],f=this.redirects.length===0?this:e;at.default.nodeStream(c)?(c.pipe(f),c.once("error",p=>{this._beforeError(new nR(p,this))})):(this._unlockWrite(),at.default.undefined(c)?(this._cannotHaveBody||this._noPipe)&&(f.end(),this._lockWrite()):(this._writeRequest(c,void 0,()=>{}),f.end(),this._lockWrite())),this.emit("request",e)}async _createCacheableRequest(e,r){return new Promise((s,a)=>{Object.assign(r,krt.default(e)),delete r.url;let n,c=KH.get(r.cache)(r,async f=>{f._readableState.autoDestroy=!1,n&&(await n).emit("cacheableResponse",f),s(f)});r.url=e,c.once("error",a),c.once("request",async f=>{n=f,s(n)})})}async _makeRequest(){var e,r,s,a,n;let{options:c}=this,{headers:f}=c;for(let U in f)if(at.default.undefined(f[U]))delete f[U];else if(at.default.null_(f[U]))throw new TypeError(`Use \`undefined\` instead of \`null\` to delete the \`${U}\` header`);if(c.decompress&&at.default.undefined(f["accept-encoding"])&&(f["accept-encoding"]=Ort?"gzip, deflate, br":"gzip, deflate"),c.cookieJar){let U=await c.cookieJar.getCookieString(c.url.toString());at.default.nonEmptyString(U)&&(c.headers.cookie=U)}for(let U of c.hooks.beforeRequest){let W=await U(c);if(!at.default.undefined(W)){c.request=()=>W;break}}c.body&&this[v0]!==c.body&&(this[v0]=c.body);let{agent:p,request:h,timeout:E,url:C}=c;if(c.dnsCache&&!("lookup"in c)&&(c.lookup=c.dnsCache.lookup),C.hostname==="unix"){let U=/(?.+?):(?.+)/.exec(`${C.pathname}${C.search}`);if(U?.groups){let{socketPath:W,path:ee}=U.groups;Object.assign(c,{socketPath:W,path:ee,host:""})}}let S=C.protocol==="https:",b;c.http2?b=Drt.auto:b=S?wrt.request:gAe.request;let I=(e=c.request)!==null&&e!==void 0?e:b,T=c.cache?this._createCacheableRequest:I;p&&!c.http2&&(c.agent=p[S?"https":"http"]),c[po]=I,delete c.request,delete c.timeout;let N=c;if(N.shared=(r=c.cacheOptions)===null||r===void 0?void 0:r.shared,N.cacheHeuristic=(s=c.cacheOptions)===null||s===void 0?void 0:s.cacheHeuristic,N.immutableMinTimeToLive=(a=c.cacheOptions)===null||a===void 0?void 0:a.immutableMinTimeToLive,N.ignoreCargoCult=(n=c.cacheOptions)===null||n===void 0?void 0:n.ignoreCargoCult,c.dnsLookupIpVersion!==void 0)try{N.family=IAe.dnsLookupIpVersionToFamily(c.dnsLookupIpVersion)}catch{throw new Error("Invalid `dnsLookupIpVersion` option value")}c.https&&("rejectUnauthorized"in c.https&&(N.rejectUnauthorized=c.https.rejectUnauthorized),c.https.checkServerIdentity&&(N.checkServerIdentity=c.https.checkServerIdentity),c.https.certificateAuthority&&(N.ca=c.https.certificateAuthority),c.https.certificate&&(N.cert=c.https.certificate),c.https.key&&(N.key=c.https.key),c.https.passphrase&&(N.passphrase=c.https.passphrase),c.https.pfx&&(N.pfx=c.https.pfx));try{let U=await T(C,N);at.default.undefined(U)&&(U=b(C,N)),c.request=h,c.timeout=E,c.agent=p,c.https&&("rejectUnauthorized"in c.https&&delete N.rejectUnauthorized,c.https.checkServerIdentity&&delete N.checkServerIdentity,c.https.certificateAuthority&&delete N.ca,c.https.certificate&&delete N.cert,c.https.key&&delete N.key,c.https.passphrase&&delete N.passphrase,c.https.pfx&&delete N.pfx),Mrt(U)?this._onRequest(U):this.writable?(this.once("finish",()=>{this._onResponse(U)}),this._unlockWrite(),this.end(),this._lockWrite()):this._onResponse(U)}catch(U){throw U instanceof dAe.CacheError?new rR(U,this):new us(U.message,U,this)}}async _error(e){try{for(let r of this.options.hooks.beforeError)e=await r(e)}catch(r){e=new us(r.message,r,this)}this.destroy(e)}_beforeError(e){if(this[CI])return;let{options:r}=this,s=this.retryCount+1;this[CI]=!0,e instanceof us||(e=new us(e.message,e,this));let a=e,{response:n}=a;(async()=>{if(n&&!n.body){n.setEncoding(this._readableState.encoding);try{n.rawBody=await Rrt.default(n),n.body=n.rawBody.toString()}catch{}}if(this.listenerCount("retry")!==0){let c;try{let f;n&&"retry-after"in n.headers&&(f=Number(n.headers["retry-after"]),Number.isNaN(f)?(f=Date.parse(n.headers["retry-after"])-Date.now(),f<=0&&(f=1)):f*=1e3),c=await r.retry.calculateDelay({attemptCount:s,retryOptions:r.retry,error:a,retryAfter:f,computedValue:Nrt.default({attemptCount:s,retryOptions:r.retry,error:a,retryAfter:f,computedValue:0})})}catch(f){this._error(new us(f.message,f,this));return}if(c){let f=async()=>{try{for(let p of this.options.hooks.beforeRetry)await p(this.options,a,s)}catch(p){this._error(new us(p.message,e,this));return}this.destroyed||(this.destroy(),this.emit("retry",s,e))};this[SAe]=setTimeout(f,c);return}}this._error(a)})()}_read(){this[XQ]=!0;let e=this[$Q];if(e&&!this[CI]){e.readableLength&&(this[XQ]=!1);let r;for(;(r=e.read())!==null;){this[yI]+=r.length,this[BAe]=!0;let s=this.downloadProgress;s.percent<1&&this.emit("downloadProgress",s),this.push(r)}}}_write(e,r,s){let a=()=>{this._writeRequest(e,r,s)};this.requestInitialized?a():this[ev].push(a)}_writeRequest(e,r,s){this[po].destroyed||(this._progressCallbacks.push(()=>{this[II]+=Buffer.byteLength(e,r);let a=this.uploadProgress;a.percent<1&&this.emit("uploadProgress",a)}),this[po].write(e,r,a=>{!a&&this._progressCallbacks.length>0&&this._progressCallbacks.shift()(),s(a)}))}_final(e){let r=()=>{for(;this._progressCallbacks.length!==0;)this._progressCallbacks.shift()();if(!(po in this)){e();return}if(this[po].destroyed){e();return}this[po].end(s=>{s||(this[EI]=this[II],this.emit("uploadProgress",this.uploadProgress),this[po].emit("upload-complete")),e(s)})};this.requestInitialized?r():this[ev].push(r)}_destroy(e,r){var s;this[CI]=!0,clearTimeout(this[SAe]),po in this&&(this[JH](),!((s=this[$Q])===null||s===void 0)&&s.complete||this[po].destroy()),e!==null&&!at.default.undefined(e)&&!(e instanceof us)&&(e=new us(e.message,e,this)),r(e)}get _isAboutToError(){return this[CI]}get ip(){var e;return(e=this.socket)===null||e===void 0?void 0:e.remoteAddress}get aborted(){var e,r,s;return((r=(e=this[po])===null||e===void 0?void 0:e.destroyed)!==null&&r!==void 0?r:this.destroyed)&&!(!((s=this[vAe])===null||s===void 0)&&s.complete)}get socket(){var e,r;return(r=(e=this[po])===null||e===void 0?void 0:e.socket)!==null&&r!==void 0?r:void 0}get downloadProgress(){let e;return this[mI]?e=this[yI]/this[mI]:this[mI]===this[yI]?e=1:e=0,{percent:e,transferred:this[yI],total:this[mI]}}get uploadProgress(){let e;return this[EI]?e=this[II]/this[EI]:this[EI]===this[II]?e=1:e=0,{percent:e,transferred:this[II],total:this[EI]}}get timings(){var e;return(e=this[po])===null||e===void 0?void 0:e.timings}get isFromCache(){return this[wAe]}pipe(e,r){if(this[BAe])throw new Error("Failed to pipe. The response has been emitted already.");return e instanceof YH.ServerResponse&&this[ZQ].add(e),super.pipe(e,r)}unpipe(e){return e instanceof YH.ServerResponse&&this[ZQ].delete(e),super.unpipe(e),this}};Ln.default=oR});var nv=_(qu=>{"use strict";var Grt=qu&&qu.__createBinding||(Object.create?function(t,e,r,s){s===void 0&&(s=r),Object.defineProperty(t,s,{enumerable:!0,get:function(){return e[r]}})}:function(t,e,r,s){s===void 0&&(s=r),t[s]=e[r]}),qrt=qu&&qu.__exportStar||function(t,e){for(var r in t)r!=="default"&&!Object.prototype.hasOwnProperty.call(e,r)&&Grt(e,t,r)};Object.defineProperty(qu,"__esModule",{value:!0});qu.CancelError=qu.ParseError=void 0;var DAe=rv(),zH=class extends DAe.RequestError{constructor(e,r){let{options:s}=r.request;super(`${e.message} in "${s.url.toString()}"`,e,r.request),this.name="ParseError"}};qu.ParseError=zH;var ZH=class extends DAe.RequestError{constructor(e){super("Promise was canceled",{},e),this.name="CancelError"}get isCanceled(){return!0}};qu.CancelError=ZH;qrt(rv(),qu)});var bAe=_(XH=>{"use strict";Object.defineProperty(XH,"__esModule",{value:!0});var PAe=nv(),Wrt=(t,e,r,s)=>{let{rawBody:a}=t;try{if(e==="text")return a.toString(s);if(e==="json")return a.length===0?"":r(a.toString());if(e==="buffer")return a;throw new PAe.ParseError({message:`Unknown body type '${e}'`,name:"Error"},t)}catch(n){throw new PAe.ParseError(n,t)}};XH.default=Wrt});var $H=_(S0=>{"use strict";var Yrt=S0&&S0.__createBinding||(Object.create?function(t,e,r,s){s===void 0&&(s=r),Object.defineProperty(t,s,{enumerable:!0,get:function(){return e[r]}})}:function(t,e,r,s){s===void 0&&(s=r),t[s]=e[r]}),Vrt=S0&&S0.__exportStar||function(t,e){for(var r in t)r!=="default"&&!Object.prototype.hasOwnProperty.call(e,r)&&Yrt(e,t,r)};Object.defineProperty(S0,"__esModule",{value:!0});var Jrt=Ie("events"),Krt=Np(),zrt=Pue(),aR=nv(),xAe=bAe(),kAe=rv(),Zrt=NH(),Xrt=jH(),QAe=GH(),$rt=["request","response","redirect","uploadProgress","downloadProgress"];function RAe(t){let e,r,s=new Jrt.EventEmitter,a=new zrt((c,f,p)=>{let h=E=>{let C=new kAe.default(void 0,t);C.retryCount=E,C._noPipe=!0,p(()=>C.destroy()),p.shouldReject=!1,p(()=>f(new aR.CancelError(C))),e=C,C.once("response",async I=>{var T;if(I.retryCount=E,I.request.aborted)return;let N;try{N=await Xrt.default(C),I.rawBody=N}catch{return}if(C._isAboutToError)return;let U=((T=I.headers["content-encoding"])!==null&&T!==void 0?T:"").toLowerCase(),W=["gzip","deflate","br"].includes(U),{options:ee}=C;if(W&&!ee.decompress)I.body=N;else try{I.body=xAe.default(I,ee.responseType,ee.parseJson,ee.encoding)}catch(ie){if(I.body=N.toString(),QAe.isResponseOk(I)){C._beforeError(ie);return}}try{for(let[ie,ue]of ee.hooks.afterResponse.entries())I=await ue(I,async le=>{let me=kAe.default.normalizeArguments(void 0,{...le,retry:{calculateDelay:()=>0},throwHttpErrors:!1,resolveBodyOnly:!1},ee);me.hooks.afterResponse=me.hooks.afterResponse.slice(0,ie);for(let Be of me.hooks.beforeRetry)await Be(me);let pe=RAe(me);return p(()=>{pe.catch(()=>{}),pe.cancel()}),pe})}catch(ie){C._beforeError(new aR.RequestError(ie.message,ie,C));return}if(!QAe.isResponseOk(I)){C._beforeError(new aR.HTTPError(I));return}r=I,c(C.options.resolveBodyOnly?I.body:I)});let S=I=>{if(a.isCanceled)return;let{options:T}=C;if(I instanceof aR.HTTPError&&!T.throwHttpErrors){let{response:N}=I;c(C.options.resolveBodyOnly?N.body:N);return}f(I)};C.once("error",S);let b=C.options.body;C.once("retry",(I,T)=>{var N,U;if(b===((N=T.request)===null||N===void 0?void 0:N.options.body)&&Krt.default.nodeStream((U=T.request)===null||U===void 0?void 0:U.options.body)){S(T);return}h(I)}),Zrt.default(C,s,$rt)};h(0)});a.on=(c,f)=>(s.on(c,f),a);let n=c=>{let f=(async()=>{await a;let{options:p}=r.request;return xAe.default(r,c,p.parseJson,p.encoding)})();return Object.defineProperties(f,Object.getOwnPropertyDescriptors(a)),f};return a.json=()=>{let{headers:c}=e.options;return!e.writableFinished&&c.accept===void 0&&(c.accept="application/json"),n("json")},a.buffer=()=>n("buffer"),a.text=()=>n("text"),a}S0.default=RAe;Vrt(nv(),S0)});var TAe=_(ej=>{"use strict";Object.defineProperty(ej,"__esModule",{value:!0});var ent=nv();function tnt(t,...e){let r=(async()=>{if(t instanceof ent.RequestError)try{for(let a of e)if(a)for(let n of a)t=await n(t)}catch(a){t=a}throw t})(),s=()=>r;return r.json=s,r.text=s,r.buffer=s,r.on=s,r}ej.default=tnt});var OAe=_(tj=>{"use strict";Object.defineProperty(tj,"__esModule",{value:!0});var FAe=Np();function NAe(t){for(let e of Object.values(t))(FAe.default.plainObject(e)||FAe.default.array(e))&&NAe(e);return Object.freeze(t)}tj.default=NAe});var MAe=_(LAe=>{"use strict";Object.defineProperty(LAe,"__esModule",{value:!0})});var rj=_(Nc=>{"use strict";var rnt=Nc&&Nc.__createBinding||(Object.create?function(t,e,r,s){s===void 0&&(s=r),Object.defineProperty(t,s,{enumerable:!0,get:function(){return e[r]}})}:function(t,e,r,s){s===void 0&&(s=r),t[s]=e[r]}),nnt=Nc&&Nc.__exportStar||function(t,e){for(var r in t)r!=="default"&&!Object.prototype.hasOwnProperty.call(e,r)&&rnt(e,t,r)};Object.defineProperty(Nc,"__esModule",{value:!0});Nc.defaultHandler=void 0;var UAe=Np(),Fc=$H(),int=TAe(),cR=rv(),snt=OAe(),ont={RequestError:Fc.RequestError,CacheError:Fc.CacheError,ReadError:Fc.ReadError,HTTPError:Fc.HTTPError,MaxRedirectsError:Fc.MaxRedirectsError,TimeoutError:Fc.TimeoutError,ParseError:Fc.ParseError,CancelError:Fc.CancelError,UnsupportedProtocolError:Fc.UnsupportedProtocolError,UploadError:Fc.UploadError},ant=async t=>new Promise(e=>{setTimeout(e,t)}),{normalizeArguments:lR}=cR.default,_Ae=(...t)=>{let e;for(let r of t)e=lR(void 0,r,e);return e},lnt=t=>t.isStream?new cR.default(void 0,t):Fc.default(t),cnt=t=>"defaults"in t&&"options"in t.defaults,unt=["get","post","put","patch","head","delete"];Nc.defaultHandler=(t,e)=>e(t);var HAe=(t,e)=>{if(t)for(let r of t)r(e)},jAe=t=>{t._rawHandlers=t.handlers,t.handlers=t.handlers.map(s=>(a,n)=>{let c,f=s(a,p=>(c=n(p),c));if(f!==c&&!a.isStream&&c){let p=f,{then:h,catch:E,finally:C}=p;Object.setPrototypeOf(p,Object.getPrototypeOf(c)),Object.defineProperties(p,Object.getOwnPropertyDescriptors(c)),p.then=h,p.catch=E,p.finally=C}return f});let e=(s,a={},n)=>{var c,f;let p=0,h=E=>t.handlers[p++](E,p===t.handlers.length?lnt:h);if(UAe.default.plainObject(s)){let E={...s,...a};cR.setNonEnumerableProperties([s,a],E),a=E,s=void 0}try{let E;try{HAe(t.options.hooks.init,a),HAe((c=a.hooks)===null||c===void 0?void 0:c.init,a)}catch(S){E=S}let C=lR(s,a,n??t.options);if(C[cR.kIsNormalizedAlready]=!0,E)throw new Fc.RequestError(E.message,E,C);return h(C)}catch(E){if(a.isStream)throw E;return int.default(E,t.options.hooks.beforeError,(f=a.hooks)===null||f===void 0?void 0:f.beforeError)}};e.extend=(...s)=>{let a=[t.options],n=[...t._rawHandlers],c;for(let f of s)cnt(f)?(a.push(f.defaults.options),n.push(...f.defaults._rawHandlers),c=f.defaults.mutableDefaults):(a.push(f),"handlers"in f&&n.push(...f.handlers),c=f.mutableDefaults);return n=n.filter(f=>f!==Nc.defaultHandler),n.length===0&&n.push(Nc.defaultHandler),jAe({options:_Ae(...a),handlers:n,mutableDefaults:!!c})};let r=async function*(s,a){let n=lR(s,a,t.options);n.resolveBodyOnly=!1;let c=n.pagination;if(!UAe.default.object(c))throw new TypeError("`options.pagination` must be implemented");let f=[],{countLimit:p}=c,h=0;for(;h{let n=[];for await(let c of r(s,a))n.push(c);return n},e.paginate.each=r,e.stream=(s,a)=>e(s,{...a,isStream:!0});for(let s of unt)e[s]=(a,n)=>e(a,{...n,method:s}),e.stream[s]=(a,n)=>e(a,{...n,method:s,isStream:!0});return Object.assign(e,ont),Object.defineProperty(e,"defaults",{value:t.mutableDefaults?t:snt.default(t),writable:t.mutableDefaults,configurable:t.mutableDefaults,enumerable:!0}),e.mergeOptions=_Ae,e};Nc.default=jAe;nnt(MAe(),Nc)});var WAe=_((Op,uR)=>{"use strict";var fnt=Op&&Op.__createBinding||(Object.create?function(t,e,r,s){s===void 0&&(s=r),Object.defineProperty(t,s,{enumerable:!0,get:function(){return e[r]}})}:function(t,e,r,s){s===void 0&&(s=r),t[s]=e[r]}),GAe=Op&&Op.__exportStar||function(t,e){for(var r in t)r!=="default"&&!Object.prototype.hasOwnProperty.call(e,r)&&fnt(e,t,r)};Object.defineProperty(Op,"__esModule",{value:!0});var Ant=Ie("url"),qAe=rj(),pnt={options:{method:"GET",retry:{limit:2,methods:["GET","PUT","HEAD","DELETE","OPTIONS","TRACE"],statusCodes:[408,413,429,500,502,503,504,521,522,524],errorCodes:["ETIMEDOUT","ECONNRESET","EADDRINUSE","ECONNREFUSED","EPIPE","ENOTFOUND","ENETUNREACH","EAI_AGAIN"],maxRetryAfter:void 0,calculateDelay:({computedValue:t})=>t},timeout:{},headers:{"user-agent":"got (https://github.com/sindresorhus/got)"},hooks:{init:[],beforeRequest:[],beforeRedirect:[],beforeRetry:[],beforeError:[],afterResponse:[]},cache:void 0,dnsCache:void 0,decompress:!0,throwHttpErrors:!0,followRedirect:!0,isStream:!1,responseType:"text",resolveBodyOnly:!1,maxRedirects:10,prefixUrl:"",methodRewriting:!0,ignoreInvalidCookies:!1,context:{},http2:!1,allowGetBody:!1,https:void 0,pagination:{transform:t=>t.request.options.responseType==="json"?t.body:JSON.parse(t.body),paginate:t=>{if(!Reflect.has(t.headers,"link"))return!1;let e=t.headers.link.split(","),r;for(let s of e){let a=s.split(";");if(a[1].includes("next")){r=a[0].trimStart().trim(),r=r.slice(1,-1);break}}return r?{url:new Ant.URL(r)}:!1},filter:()=>!0,shouldContinue:()=>!0,countLimit:1/0,backoff:0,requestLimit:1e4,stackAllItems:!0},parseJson:t=>JSON.parse(t),stringifyJson:t=>JSON.stringify(t),cacheOptions:{}},handlers:[qAe.defaultHandler],mutableDefaults:!1},nj=qAe.default(pnt);Op.default=nj;uR.exports=nj;uR.exports.default=nj;uR.exports.__esModule=!0;GAe(rj(),Op);GAe($H(),Op)});var ln={};Vt(ln,{Method:()=>ZAe,del:()=>ynt,get:()=>oj,getNetworkSettings:()=>zAe,post:()=>aj,put:()=>mnt,request:()=>iv});async function ij(t){return Yl(VAe,t,()=>ce.readFilePromise(t).then(e=>(VAe.set(t,e),e)))}function dnt({statusCode:t,statusMessage:e},r){let s=Ht(r,t,ht.NUMBER),a=`https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/${t}`;return KE(r,`${s}${e?` (${e})`:""}`,a)}async function fR(t,{configuration:e,customErrorMessage:r}){try{return await t}catch(s){if(s.name!=="HTTPError")throw s;let a=r?.(s,e)??s.response.body?.error;a==null&&(s.message.startsWith("Response code")?a="The remote server failed to provide the requested resource":a=s.message),s.code==="ETIMEDOUT"&&s.event==="socket"&&(a+=`(can be increased via ${Ht(e,"httpTimeout",ht.SETTING)})`);let n=new jt(35,a,c=>{s.response&&c.reportError(35,` ${Kf(e,{label:"Response Code",value:_u(ht.NO_HINT,dnt(s.response,e))})}`),s.request&&(c.reportError(35,` ${Kf(e,{label:"Request Method",value:_u(ht.NO_HINT,s.request.options.method)})}`),c.reportError(35,` ${Kf(e,{label:"Request URL",value:_u(ht.URL,s.request.requestUrl)})}`)),s.request.redirects.length>0&&c.reportError(35,` ${Kf(e,{label:"Request Redirects",value:_u(ht.NO_HINT,z4(e,s.request.redirects,ht.URL))})}`),s.request.retryCount===s.request.options.retry.limit&&c.reportError(35,` ${Kf(e,{label:"Request Retry Count",value:_u(ht.NO_HINT,`${Ht(e,s.request.retryCount,ht.NUMBER)} (can be increased via ${Ht(e,"httpRetry",ht.SETTING)})`)})}`)});throw n.originalError=s,n}}function zAe(t,e){let r=[...e.configuration.get("networkSettings")].sort(([c],[f])=>f.length-c.length),s={enableNetwork:void 0,httpsCaFilePath:void 0,httpProxy:void 0,httpsProxy:void 0,httpsKeyFilePath:void 0,httpsCertFilePath:void 0},a=Object.keys(s),n=typeof t=="string"?new URL(t):t;for(let[c,f]of r)if(sj.default.isMatch(n.hostname,c))for(let p of a){let h=f.get(p);h!==null&&typeof s[p]>"u"&&(s[p]=h)}for(let c of a)typeof s[c]>"u"&&(s[c]=e.configuration.get(c));return s}async function iv(t,e,{configuration:r,headers:s,jsonRequest:a,jsonResponse:n,method:c="GET",wrapNetworkRequest:f}){let p={target:t,body:e,configuration:r,headers:s,jsonRequest:a,jsonResponse:n,method:c},h=async()=>await Ent(t,e,p),E=typeof f<"u"?await f(h,p):h;return await(await r.reduceHook(S=>S.wrapNetworkRequest,E,p))()}async function oj(t,{configuration:e,jsonResponse:r,customErrorMessage:s,wrapNetworkRequest:a,...n}){let c=()=>fR(iv(t,null,{configuration:e,wrapNetworkRequest:a,...n}),{configuration:e,customErrorMessage:s}).then(p=>p.body),f=await(typeof a<"u"?c():Yl(YAe,t,()=>c().then(p=>(YAe.set(t,p),p))));return r?JSON.parse(f.toString()):f}async function mnt(t,e,{customErrorMessage:r,...s}){return(await fR(iv(t,e,{...s,method:"PUT"}),{customErrorMessage:r,configuration:s.configuration})).body}async function aj(t,e,{customErrorMessage:r,...s}){return(await fR(iv(t,e,{...s,method:"POST"}),{customErrorMessage:r,configuration:s.configuration})).body}async function ynt(t,{customErrorMessage:e,...r}){return(await fR(iv(t,null,{...r,method:"DELETE"}),{customErrorMessage:e,configuration:r.configuration})).body}async function Ent(t,e,{configuration:r,headers:s,jsonRequest:a,jsonResponse:n,method:c="GET"}){let f=typeof t=="string"?new URL(t):t,p=zAe(f,{configuration:r});if(p.enableNetwork===!1)throw new jt(80,`Request to '${f.href}' has been blocked because of your configuration settings`);if(f.protocol==="http:"&&!sj.default.isMatch(f.hostname,r.get("unsafeHttpWhitelist")))throw new jt(81,`Unsafe http requests must be explicitly whitelisted in your configuration (${f.hostname})`);let h={headers:s,method:c};h.responseType=n?"json":"buffer",e!==null&&(Buffer.isBuffer(e)||!a&&typeof e=="string"?h.body=e:h.json=e);let E=r.get("httpTimeout"),C=r.get("httpRetry"),S=r.get("enableStrictSsl"),b=p.httpsCaFilePath,I=p.httpsCertFilePath,T=p.httpsKeyFilePath,{default:N}=await Promise.resolve().then(()=>ut(WAe())),U=b?await ij(b):void 0,W=I?await ij(I):void 0,ee=T?await ij(T):void 0,ie={rejectUnauthorized:S,ca:U,cert:W,key:ee},ue={http:p.httpProxy?new Iue({proxy:p.httpProxy,proxyRequestOptions:ie}):hnt,https:p.httpsProxy?new Cue({proxy:p.httpsProxy,proxyRequestOptions:ie}):gnt},le=N.extend({timeout:{socket:E},retry:C,agent:ue,https:{rejectUnauthorized:S,certificateAuthority:U,certificate:W,key:ee},...h});return r.getLimit("networkConcurrency")(()=>le(f))}var JAe,KAe,sj,YAe,VAe,hnt,gnt,ZAe,AR=Ze(()=>{Dt();wue();JAe=Ie("https"),KAe=Ie("http"),sj=ut(Go());Rc();xc();bc();YAe=new Map,VAe=new Map,hnt=new KAe.Agent({keepAlive:!0}),gnt=new JAe.Agent({keepAlive:!0});ZAe=(a=>(a.GET="GET",a.PUT="PUT",a.POST="POST",a.DELETE="DELETE",a))(ZAe||{})});var fs={};Vt(fs,{availableParallelism:()=>cj,getArchitecture:()=>sv,getArchitectureName:()=>vnt,getArchitectureSet:()=>lj,getCaller:()=>bnt,major:()=>Int,openUrl:()=>Cnt});function Bnt(){if(process.platform!=="linux")return null;let t;try{t=ce.readFileSync(wnt)}catch{}if(typeof t<"u"){if(t&&(t.includes("GLIBC")||t.includes("GNU libc")||t.includes("GNU C Library")))return"glibc";if(t&&t.includes("musl"))return"musl"}let r=(process.report?.getReport()??{}).sharedObjects??[],s=/\/(?:(ld-linux-|[^/]+-linux-gnu\/)|(libc.musl-|ld-musl-))/;return p0(r,a=>{let n=a.match(s);if(!n)return p0.skip;if(n[1])return"glibc";if(n[2])return"musl";throw new Error("Assertion failed: Expected the libc variant to have been detected")})??null}function sv(){return $Ae=$Ae??{os:(process.env.YARN_IS_TEST_ENV?process.env.YARN_OS_OVERRIDE:void 0)??process.platform,cpu:(process.env.YARN_IS_TEST_ENV?process.env.YARN_CPU_OVERRIDE:void 0)??process.arch,libc:(process.env.YARN_IS_TEST_ENV?process.env.YARN_LIBC_OVERRIDE:void 0)??Bnt()}}function vnt(t=sv()){return t.libc?`${t.os}-${t.cpu}-${t.libc}`:`${t.os}-${t.cpu}`}function lj(){let t=sv();return epe=epe??{os:[t.os],cpu:[t.cpu],libc:t.libc?[t.libc]:[]}}function Pnt(t){let e=Snt.exec(t);if(!e)return null;let r=e[2]&&e[2].indexOf("native")===0,s=e[2]&&e[2].indexOf("eval")===0,a=Dnt.exec(e[2]);return s&&a!=null&&(e[2]=a[1],e[3]=a[2],e[4]=a[3]),{file:r?null:e[2],methodName:e[1]||"",arguments:r?[e[2]]:[],line:e[3]?+e[3]:null,column:e[4]?+e[4]:null}}function bnt(){let e=new Error().stack.split(` `)[3];return Pnt(e)}function cj(){return typeof pR.default.availableParallelism<"u"?pR.default.availableParallelism():Math.max(1,pR.default.cpus().length)}var pR,Int,XAe,Cnt,wnt,$Ae,epe,Snt,Dnt,hR=Ze(()=>{Dt();pR=ut(Ie("os"));gR();bc();Int=Number(process.versions.node.split(".")[0]),XAe=new Map([["darwin","open"],["linux","xdg-open"],["win32","explorer.exe"]]).get(process.platform),Cnt=typeof XAe<"u"?async t=>{try{return await uj(XAe,[t],{cwd:J.cwd()}),!0}catch{return!1}}:void 0,wnt="/usr/bin/ldd";Snt=/^\s*at (.*?) ?\(((?:file|https?|blob|chrome-extension|native|eval|webpack||\/|[a-z]:\\|\\\\).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,Dnt=/\((\S*)(?::(\d+))(?::(\d+))\)/});function gj(t,e,r,s,a){let n=YB(r);if(s.isArray||s.type==="ANY"&&Array.isArray(n))return Array.isArray(n)?n.map((c,f)=>fj(t,`${e}[${f}]`,c,s,a)):String(n).split(/,/).map(c=>fj(t,e,c,s,a));if(Array.isArray(n))throw new Error(`Non-array configuration settings "${e}" cannot be an array`);return fj(t,e,r,s,a)}function fj(t,e,r,s,a){let n=YB(r);switch(s.type){case"ANY":return FQ(n);case"SHAPE":return Rnt(t,e,r,s,a);case"MAP":return Tnt(t,e,r,s,a)}if(n===null&&!s.isNullable&&s.default!==null)throw new Error(`Non-nullable configuration settings "${e}" cannot be set to null`);if(s.values?.includes(n))return n;let f=(()=>{if(s.type==="BOOLEAN"&&typeof n!="string")return kB(n);if(typeof n!="string")throw new Error(`Expected configuration setting "${e}" to be a string, got ${typeof n}`);let p=Vk(n,{env:t.env});switch(s.type){case"ABSOLUTE_PATH":{let h=a,E=U8(r);return E&&E[0]!=="<"&&(h=J.dirname(E)),J.resolve(h,fe.toPortablePath(p))}case"LOCATOR_LOOSE":return Qp(p,!1);case"NUMBER":return parseInt(p);case"LOCATOR":return Qp(p);case"BOOLEAN":return kB(p);default:return p}})();if(s.values&&!s.values.includes(f))throw new Error(`Invalid value, expected one of ${s.values.join(", ")}`);return f}function Rnt(t,e,r,s,a){let n=YB(r);if(typeof n!="object"||Array.isArray(n))throw new nt(`Object configuration settings "${e}" must be an object`);let c=dj(t,s,{ignoreArrays:!0});if(n===null)return c;for(let[f,p]of Object.entries(n)){let h=`${e}.${f}`;if(!s.properties[f])throw new nt(`Unrecognized configuration settings found: ${e}.${f} - run "yarn config" to see the list of settings supported in Yarn`);c.set(f,gj(t,h,p,s.properties[f],a))}return c}function Tnt(t,e,r,s,a){let n=YB(r),c=new Map;if(typeof n!="object"||Array.isArray(n))throw new nt(`Map configuration settings "${e}" must be an object`);if(n===null)return c;for(let[f,p]of Object.entries(n)){let h=s.normalizeKeys?s.normalizeKeys(f):f,E=`${e}['${h}']`,C=s.valueDefinition;c.set(h,gj(t,E,p,C,a))}return c}function dj(t,e,{ignoreArrays:r=!1}={}){switch(e.type){case"SHAPE":{if(e.isArray&&!r)return[];let s=new Map;for(let[a,n]of Object.entries(e.properties))s.set(a,dj(t,n));return s}case"MAP":return e.isArray&&!r?[]:new Map;case"ABSOLUTE_PATH":return e.default===null?null:t.projectCwd===null?Array.isArray(e.default)?e.default.map(s=>J.normalize(s)):J.isAbsolute(e.default)?J.normalize(e.default):e.isNullable?null:void 0:Array.isArray(e.default)?e.default.map(s=>J.resolve(t.projectCwd,s)):J.resolve(t.projectCwd,e.default);default:return e.default}}function mR(t,e,r){if(e.type==="SECRET"&&typeof t=="string"&&r.hideSecrets)return Qnt;if(e.type==="ABSOLUTE_PATH"&&typeof t=="string"&&r.getNativePaths)return fe.fromPortablePath(t);if(e.isArray&&Array.isArray(t)){let s=[];for(let a of t)s.push(mR(a,e,r));return s}if(e.type==="MAP"&&t instanceof Map){if(t.size===0)return;let s=new Map;for(let[a,n]of t.entries()){let c=mR(n,e.valueDefinition,r);typeof c<"u"&&s.set(a,c)}return s}if(e.type==="SHAPE"&&t instanceof Map){if(t.size===0)return;let s=new Map;for(let[a,n]of t.entries()){let c=e.properties[a],f=mR(n,c,r);typeof f<"u"&&s.set(a,f)}return s}return t}function Fnt(){let t={};for(let[e,r]of Object.entries(process.env))e=e.toLowerCase(),e.startsWith(yR)&&(e=(0,rpe.default)(e.slice(yR.length)),t[e]=r);return t}function pj(){let t=`${yR}rc_filename`;for(let[e,r]of Object.entries(process.env))if(e.toLowerCase()===t&&typeof r=="string")return r;return hj}async function tpe(t){try{return await ce.readFilePromise(t)}catch{return Buffer.of()}}async function Nnt(t,e){return Buffer.compare(...await Promise.all([tpe(t),tpe(e)]))===0}async function Ont(t,e){let[r,s]=await Promise.all([ce.statPromise(t),ce.statPromise(e)]);return r.dev===s.dev&&r.ino===s.ino}async function Mnt({configuration:t,selfPath:e}){let r=t.get("yarnPath");return t.get("ignorePath")||r===null||r===e||await Lnt(r,e)?null:r}var rpe,Lp,npe,ipe,spe,Aj,xnt,ov,knt,Mp,yR,hj,Qnt,wI,ope,ER,dR,Lnt,ze,av=Ze(()=>{Dt();wc();rpe=ut(Cre()),Lp=ut(Fd());Yt();npe=ut(hne()),ipe=Ie("module"),spe=ut(Ld()),Aj=Ie("stream");$ce();oI();Q8();R8();T8();fue();F8();tm();due();OQ();xc();I0();AR();bc();hR();Tp();Wo();xnt=function(){if(!Lp.GITHUB_ACTIONS||!process.env.GITHUB_EVENT_PATH)return!1;let t=fe.toPortablePath(process.env.GITHUB_EVENT_PATH),e;try{e=ce.readJsonSync(t)}catch{return!1}return!(!("repository"in e)||!e.repository||(e.repository.private??!0))}(),ov=new Set(["@yarnpkg/plugin-constraints","@yarnpkg/plugin-exec","@yarnpkg/plugin-interactive-tools","@yarnpkg/plugin-stage","@yarnpkg/plugin-typescript","@yarnpkg/plugin-version","@yarnpkg/plugin-workspace-tools"]),knt=new Set(["isTestEnv","injectNpmUser","injectNpmPassword","injectNpm2FaToken","zipDataEpilogue","cacheCheckpointOverride","cacheVersionOverride","lockfileVersionOverride","osOverride","cpuOverride","libcOverride","binFolder","version","flags","profile","gpg","ignoreNode","wrapOutput","home","confDir","registry","ignoreCwd"]),Mp=/^(?!v)[a-z0-9._-]+$/i,yR="yarn_",hj=".yarnrc.yml",Qnt="********",wI=(E=>(E.ANY="ANY",E.BOOLEAN="BOOLEAN",E.ABSOLUTE_PATH="ABSOLUTE_PATH",E.LOCATOR="LOCATOR",E.LOCATOR_LOOSE="LOCATOR_LOOSE",E.NUMBER="NUMBER",E.STRING="STRING",E.SECRET="SECRET",E.SHAPE="SHAPE",E.MAP="MAP",E))(wI||{}),ope=ht,ER=(r=>(r.JUNCTIONS="junctions",r.SYMLINKS="symlinks",r))(ER||{}),dR={lastUpdateCheck:{description:"Last timestamp we checked whether new Yarn versions were available",type:"STRING",default:null},yarnPath:{description:"Path to the local executable that must be used over the global one",type:"ABSOLUTE_PATH",default:null},ignorePath:{description:"If true, the local executable will be ignored when using the global one",type:"BOOLEAN",default:!1},globalFolder:{description:"Folder where all system-global files are stored",type:"ABSOLUTE_PATH",default:H8()},cacheFolder:{description:"Folder where the cache files must be written",type:"ABSOLUTE_PATH",default:"./.yarn/cache"},compressionLevel:{description:"Zip files compression level, from 0 to 9 or mixed (a variant of 9, which stores some files uncompressed, when compression doesn't yield good results)",type:"NUMBER",values:["mixed",0,1,2,3,4,5,6,7,8,9],default:0},virtualFolder:{description:"Folder where the virtual packages (cf doc) will be mapped on the disk (must be named __virtual__)",type:"ABSOLUTE_PATH",default:"./.yarn/__virtual__"},installStatePath:{description:"Path of the file where the install state will be persisted",type:"ABSOLUTE_PATH",default:"./.yarn/install-state.gz"},immutablePatterns:{description:"Array of glob patterns; files matching them won't be allowed to change during immutable installs",type:"STRING",default:[],isArray:!0},rcFilename:{description:"Name of the files where the configuration can be found",type:"STRING",default:pj()},enableGlobalCache:{description:"If true, the system-wide cache folder will be used regardless of `cache-folder`",type:"BOOLEAN",default:!0},cacheMigrationMode:{description:"Defines the conditions under which Yarn upgrades should cause the cache archives to be regenerated.",type:"STRING",values:["always","match-spec","required-only"],default:"always"},enableColors:{description:"If true, the CLI is allowed to use colors in its output",type:"BOOLEAN",default:Zk,defaultText:""},enableHyperlinks:{description:"If true, the CLI is allowed to use hyperlinks in its output",type:"BOOLEAN",default:K4,defaultText:""},enableInlineBuilds:{description:"If true, the CLI will print the build output on the command line",type:"BOOLEAN",default:Lp.isCI,defaultText:""},enableMessageNames:{description:"If true, the CLI will prefix most messages with codes suitable for search engines",type:"BOOLEAN",default:!0},enableProgressBars:{description:"If true, the CLI is allowed to show a progress bar for long-running events",type:"BOOLEAN",default:!Lp.isCI,defaultText:""},enableTimers:{description:"If true, the CLI is allowed to print the time spent executing commands",type:"BOOLEAN",default:!0},enableTips:{description:"If true, installs will print a helpful message every day of the week",type:"BOOLEAN",default:!Lp.isCI,defaultText:""},preferInteractive:{description:"If true, the CLI will automatically use the interactive mode when called from a TTY",type:"BOOLEAN",default:!1},preferTruncatedLines:{description:"If true, the CLI will truncate lines that would go beyond the size of the terminal",type:"BOOLEAN",default:!1},progressBarStyle:{description:"Which style of progress bar should be used (only when progress bars are enabled)",type:"STRING",default:void 0,defaultText:""},defaultLanguageName:{description:"Default language mode that should be used when a package doesn't offer any insight",type:"STRING",default:"node"},defaultProtocol:{description:"Default resolution protocol used when resolving pure semver and tag ranges",type:"STRING",default:"npm:"},enableTransparentWorkspaces:{description:"If false, Yarn won't automatically resolve workspace dependencies unless they use the `workspace:` protocol",type:"BOOLEAN",default:!0},supportedArchitectures:{description:"Architectures that Yarn will fetch and inject into the resolver",type:"SHAPE",properties:{os:{description:"Array of supported process.platform strings, or null to target them all",type:"STRING",isArray:!0,isNullable:!0,default:["current"]},cpu:{description:"Array of supported process.arch strings, or null to target them all",type:"STRING",isArray:!0,isNullable:!0,default:["current"]},libc:{description:"Array of supported libc libraries, or null to target them all",type:"STRING",isArray:!0,isNullable:!0,default:["current"]}}},enableMirror:{description:"If true, the downloaded packages will be retrieved and stored in both the local and global folders",type:"BOOLEAN",default:!0},enableNetwork:{description:"If false, Yarn will refuse to use the network if required to",type:"BOOLEAN",default:!0},enableOfflineMode:{description:"If true, Yarn will attempt to retrieve files and metadata from the global cache rather than the network",type:"BOOLEAN",default:!1},httpProxy:{description:"URL of the http proxy that must be used for outgoing http requests",type:"STRING",default:null},httpsProxy:{description:"URL of the http proxy that must be used for outgoing https requests",type:"STRING",default:null},unsafeHttpWhitelist:{description:"List of the hostnames for which http queries are allowed (glob patterns are supported)",type:"STRING",default:[],isArray:!0},httpTimeout:{description:"Timeout of each http request in milliseconds",type:"NUMBER",default:6e4},httpRetry:{description:"Retry times on http failure",type:"NUMBER",default:3},networkConcurrency:{description:"Maximal number of concurrent requests",type:"NUMBER",default:50},taskPoolConcurrency:{description:"Maximal amount of concurrent heavy task processing",type:"NUMBER",default:cj()},taskPoolMode:{description:"Execution strategy for heavy tasks",type:"STRING",values:["async","workers"],default:"workers"},networkSettings:{description:"Network settings per hostname (glob patterns are supported)",type:"MAP",valueDefinition:{description:"",type:"SHAPE",properties:{httpsCaFilePath:{description:"Path to file containing one or multiple Certificate Authority signing certificates",type:"ABSOLUTE_PATH",default:null},enableNetwork:{description:"If false, the package manager will refuse to use the network if required to",type:"BOOLEAN",default:null},httpProxy:{description:"URL of the http proxy that must be used for outgoing http requests",type:"STRING",default:null},httpsProxy:{description:"URL of the http proxy that must be used for outgoing https requests",type:"STRING",default:null},httpsKeyFilePath:{description:"Path to file containing private key in PEM format",type:"ABSOLUTE_PATH",default:null},httpsCertFilePath:{description:"Path to file containing certificate chain in PEM format",type:"ABSOLUTE_PATH",default:null}}}},httpsCaFilePath:{description:"A path to a file containing one or multiple Certificate Authority signing certificates",type:"ABSOLUTE_PATH",default:null},httpsKeyFilePath:{description:"Path to file containing private key in PEM format",type:"ABSOLUTE_PATH",default:null},httpsCertFilePath:{description:"Path to file containing certificate chain in PEM format",type:"ABSOLUTE_PATH",default:null},enableStrictSsl:{description:"If false, SSL certificate errors will be ignored",type:"BOOLEAN",default:!0},logFilters:{description:"Overrides for log levels",type:"SHAPE",isArray:!0,concatenateValues:!0,properties:{code:{description:"Code of the messages covered by this override",type:"STRING",default:void 0},text:{description:"Code of the texts covered by this override",type:"STRING",default:void 0},pattern:{description:"Code of the patterns covered by this override",type:"STRING",default:void 0},level:{description:"Log level override, set to null to remove override",type:"STRING",values:Object.values($k),isNullable:!0,default:void 0}}},enableTelemetry:{description:"If true, telemetry will be periodically sent, following the rules in https://yarnpkg.com/advanced/telemetry",type:"BOOLEAN",default:!0},telemetryInterval:{description:"Minimal amount of time between two telemetry uploads, in days",type:"NUMBER",default:7},telemetryUserId:{description:"If you desire to tell us which project you are, you can set this field. Completely optional and opt-in.",type:"STRING",default:null},enableHardenedMode:{description:"If true, automatically enable --check-resolutions --refresh-lockfile on installs",type:"BOOLEAN",default:Lp.isPR&&xnt,defaultText:""},enableScripts:{description:"If true, packages are allowed to have install scripts by default",type:"BOOLEAN",default:!0},enableStrictSettings:{description:"If true, unknown settings will cause Yarn to abort",type:"BOOLEAN",default:!0},enableImmutableCache:{description:"If true, the cache is reputed immutable and actions that would modify it will throw",type:"BOOLEAN",default:!1},enableCacheClean:{description:"If false, disallows the `cache clean` command",type:"BOOLEAN",default:!0},checksumBehavior:{description:"Enumeration defining what to do when a checksum doesn't match expectations",type:"STRING",default:"throw"},injectEnvironmentFiles:{description:"List of all the environment files that Yarn should inject inside the process when it starts",type:"ABSOLUTE_PATH",default:[".env.yarn?"],isArray:!0},packageExtensions:{description:"Map of package corrections to apply on the dependency tree",type:"MAP",valueDefinition:{description:"The extension that will be applied to any package whose version matches the specified range",type:"SHAPE",properties:{dependencies:{description:"The set of dependencies that must be made available to the current package in order for it to work properly",type:"MAP",valueDefinition:{description:"A range",type:"STRING"}},peerDependencies:{description:"Inherited dependencies - the consumer of the package will be tasked to provide them",type:"MAP",valueDefinition:{description:"A semver range",type:"STRING"}},peerDependenciesMeta:{description:"Extra information related to the dependencies listed in the peerDependencies field",type:"MAP",valueDefinition:{description:"The peerDependency meta",type:"SHAPE",properties:{optional:{description:"If true, the selected peer dependency will be marked as optional by the package manager and the consumer omitting it won't be reported as an error",type:"BOOLEAN",default:!1}}}}}}}};Lnt=process.platform==="win32"?Nnt:Ont;ze=class t{constructor(e){this.isCI=Lp.isCI;this.projectCwd=null;this.plugins=new Map;this.settings=new Map;this.values=new Map;this.sources=new Map;this.invalid=new Map;this.env={};this.limits=new Map;this.packageExtensions=null;this.startingCwd=e}static{this.deleteProperty=Symbol()}static{this.telemetry=null}static create(e,r,s){let a=new t(e);typeof r<"u"&&!(r instanceof Map)&&(a.projectCwd=r),a.importSettings(dR);let n=typeof s<"u"?s:r instanceof Map?r:new Map;for(let[c,f]of n)a.activatePlugin(c,f);return a}static async find(e,r,{strict:s=!0,usePathCheck:a=null,useRc:n=!0}={}){let c=Fnt();delete c.rcFilename;let f=new t(e),p=await t.findRcFiles(e),h=await t.findFolderRcFile(fI());h&&(p.find(me=>me.path===h.path)||p.unshift(h));let E=gue(p.map(le=>[le.path,le.data])),C=vt.dot,S=new Set(Object.keys(dR)),b=({yarnPath:le,ignorePath:me,injectEnvironmentFiles:pe})=>({yarnPath:le,ignorePath:me,injectEnvironmentFiles:pe}),I=({yarnPath:le,ignorePath:me,injectEnvironmentFiles:pe,...Be})=>{let Ce={};for(let[g,we]of Object.entries(Be))S.has(g)&&(Ce[g]=we);return Ce},T=({yarnPath:le,ignorePath:me,...pe})=>{let Be={};for(let[Ce,g]of Object.entries(pe))S.has(Ce)||(Be[Ce]=g);return Be};if(f.importSettings(b(dR)),f.useWithSource("",b(c),e,{strict:!1}),E){let[le,me]=E;f.useWithSource(le,b(me),C,{strict:!1})}if(a){if(await Mnt({configuration:f,selfPath:a})!==null)return f;f.useWithSource("",{ignorePath:!0},e,{strict:!1,overwrite:!0})}let N=await t.findProjectCwd(e);f.startingCwd=e,f.projectCwd=N;let U=Object.assign(Object.create(null),process.env);f.env=U;let W=await Promise.all(f.get("injectEnvironmentFiles").map(async le=>{let me=le.endsWith("?")?await ce.readFilePromise(le.slice(0,-1),"utf8").catch(()=>""):await ce.readFilePromise(le,"utf8");return(0,npe.parse)(me)}));for(let le of W)for(let[me,pe]of Object.entries(le))f.env[me]=Vk(pe,{env:U});if(f.importSettings(I(dR)),f.useWithSource("",I(c),e,{strict:s}),E){let[le,me]=E;f.useWithSource(le,I(me),C,{strict:s})}let ee=le=>"default"in le?le.default:le,ie=new Map([["@@core",Xce]]);if(r!==null)for(let le of r.plugins.keys())ie.set(le,ee(r.modules.get(le)));for(let[le,me]of ie)f.activatePlugin(le,me);let ue=new Map([]);if(r!==null){let le=new Map;for(let[Be,Ce]of r.modules)le.set(Be,()=>Ce);let me=new Set,pe=async(Be,Ce)=>{let{factory:g,name:we}=bp(Be);if(!g||me.has(we))return;let ye=new Map(le),Ae=X=>{if((0,ipe.isBuiltin)(X))return bp(X);if(ye.has(X))return ye.get(X)();throw new nt(`This plugin cannot access the package referenced via ${X} which is neither a builtin, nor an exposed entry`)},se=await qE(async()=>ee(await g(Ae)),X=>`${X} (when initializing ${we}, defined in ${Ce})`);le.set(we,()=>se),me.add(we),ue.set(we,se)};if(c.plugins)for(let Be of c.plugins.split(";")){let Ce=J.resolve(e,fe.toPortablePath(Be));await pe(Ce,"")}for(let{path:Be,cwd:Ce,data:g}of p)if(n&&Array.isArray(g.plugins))for(let we of g.plugins){let ye=typeof we!="string"?we.path:we,Ae=we?.spec??"",se=we?.checksum??"";if(ov.has(Ae))continue;let X=J.resolve(Ce,fe.toPortablePath(ye));if(!await ce.existsPromise(X)){if(!Ae){let mt=Ht(f,J.basename(X,".cjs"),ht.NAME),j=Ht(f,".gitignore",ht.NAME),rt=Ht(f,f.values.get("rcFilename"),ht.NAME),Fe=Ht(f,"https://yarnpkg.com/getting-started/qa#which-files-should-be-gitignored",ht.URL);throw new nt(`Missing source for the ${mt} plugin - please try to remove the plugin from ${rt} then reinstall it manually. This error usually occurs because ${j} is incorrect, check ${Fe} to make sure your plugin folder isn't gitignored.`)}if(!Ae.match(/^https?:/)){let mt=Ht(f,J.basename(X,".cjs"),ht.NAME),j=Ht(f,f.values.get("rcFilename"),ht.NAME);throw new nt(`Failed to recognize the source for the ${mt} plugin - please try to delete the plugin from ${j} then reinstall it manually.`)}let De=await oj(Ae,{configuration:f}),Te=cs(De);if(se&&se!==Te){let mt=Ht(f,J.basename(X,".cjs"),ht.NAME),j=Ht(f,f.values.get("rcFilename"),ht.NAME),rt=Ht(f,`yarn plugin import ${Ae}`,ht.CODE);throw new nt(`Failed to fetch the ${mt} plugin from its remote location: its checksum seems to have changed. If this is expected, please remove the plugin from ${j} then run ${rt} to reimport it.`)}await ce.mkdirPromise(J.dirname(X),{recursive:!0}),await ce.writeFilePromise(X,De)}await pe(X,Be)}}for(let[le,me]of ue)f.activatePlugin(le,me);if(f.useWithSource("",T(c),e,{strict:s}),E){let[le,me]=E;f.useWithSource(le,T(me),C,{strict:s})}return f.get("enableGlobalCache")&&(f.values.set("cacheFolder",`${f.get("globalFolder")}/cache`),f.sources.set("cacheFolder","")),f}static async findRcFiles(e){let r=pj(),s=[],a=e,n=null;for(;a!==n;){n=a;let c=J.join(n,r);if(ce.existsSync(c)){let f,p;try{p=await ce.readFilePromise(c,"utf8"),f=as(p)}catch{let h="";throw p?.match(/^\s+(?!-)[^:]+\s+\S+/m)&&(h=" (in particular, make sure you list the colons after each key name)"),new nt(`Parse error when loading ${c}; please check it's proper Yaml${h}`)}s.unshift({path:c,cwd:n,data:f})}a=J.dirname(n)}return s}static async findFolderRcFile(e){let r=J.join(e,Er.rc),s;try{s=await ce.readFilePromise(r,"utf8")}catch(n){if(n.code==="ENOENT")return null;throw n}let a=as(s);return{path:r,cwd:e,data:a}}static async findProjectCwd(e){let r=null,s=e,a=null;for(;s!==a;){if(a=s,ce.existsSync(J.join(a,Er.lockfile)))return a;ce.existsSync(J.join(a,Er.manifest))&&(r=a),s=J.dirname(a)}return r}static async updateConfiguration(e,r,s={}){let a=pj(),n=J.join(e,a),c=ce.existsSync(n)?as(await ce.readFilePromise(n,"utf8")):{},f=!1,p;if(typeof r=="function"){try{p=r(c)}catch{p=r({})}if(p===c)return!1}else{p=c;for(let h of Object.keys(r)){let E=c[h],C=r[h],S;if(typeof C=="function")try{S=C(E)}catch{S=C(void 0)}else S=C;E!==S&&(S===t.deleteProperty?delete p[h]:p[h]=S,f=!0)}if(!f)return!1}return await ce.changeFilePromise(n,nl(p),{automaticNewlines:!0}),!0}static async addPlugin(e,r){r.length!==0&&await t.updateConfiguration(e,s=>{let a=s.plugins??[];if(a.length===0)return{...s,plugins:r};let n=[],c=[...r];for(let f of a){let p=typeof f!="string"?f.path:f,h=c.find(E=>E.path===p);h?(n.push(h),c=c.filter(E=>E!==h)):n.push(f)}return n.push(...c),{...s,plugins:n}})}static async updateHomeConfiguration(e){let r=fI();return await t.updateConfiguration(r,e)}activatePlugin(e,r){this.plugins.set(e,r),typeof r.configuration<"u"&&this.importSettings(r.configuration)}importSettings(e){for(let[r,s]of Object.entries(e))if(s!=null){if(this.settings.has(r))throw new Error(`Cannot redefine settings "${r}"`);this.settings.set(r,s),this.values.set(r,dj(this,s))}}useWithSource(e,r,s,a){try{this.use(e,r,s,a)}catch(n){throw n.message+=` (in ${Ht(this,e,ht.PATH)})`,n}}use(e,r,s,{strict:a=!0,overwrite:n=!1}={}){a=a&&this.get("enableStrictSettings");for(let c of["enableStrictSettings",...Object.keys(r)]){let f=r[c],p=U8(f);if(p&&(e=p),typeof f>"u"||c==="plugins"||e===""&&knt.has(c))continue;if(c==="rcFilename")throw new nt(`The rcFilename settings can only be set via ${`${yR}RC_FILENAME`.toUpperCase()}, not via a rc file`);let h=this.settings.get(c);if(!h){let C=fI(),S=e[0]!=="<"?J.dirname(e):null;if(a&&!(S!==null?C===S:!1))throw new nt(`Unrecognized or legacy configuration settings found: ${c} - run "yarn config" to see the list of settings supported in Yarn`);this.invalid.set(c,e);continue}if(this.sources.has(c)&&!(n||h.type==="MAP"||h.isArray&&h.concatenateValues))continue;let E;try{E=gj(this,c,f,h,s)}catch(C){throw C.message+=` in ${Ht(this,e,ht.PATH)}`,C}if(c==="enableStrictSettings"&&e!==""){a=E;continue}if(h.type==="MAP"){let C=this.values.get(c);this.values.set(c,new Map(n?[...C,...E]:[...E,...C])),this.sources.set(c,`${this.sources.get(c)}, ${e}`)}else if(h.isArray&&h.concatenateValues){let C=this.values.get(c);this.values.set(c,n?[...C,...E]:[...E,...C]),this.sources.set(c,`${this.sources.get(c)}, ${e}`)}else this.values.set(c,E),this.sources.set(c,e)}}get(e){if(!this.values.has(e))throw new Error(`Invalid configuration key "${e}"`);return this.values.get(e)}getSpecial(e,{hideSecrets:r=!1,getNativePaths:s=!1}){let a=this.get(e),n=this.settings.get(e);if(typeof n>"u")throw new nt(`Couldn't find a configuration settings named "${e}"`);return mR(a,n,{hideSecrets:r,getNativePaths:s})}getSubprocessStreams(e,{header:r,prefix:s,report:a}){let n,c,f=ce.createWriteStream(e);if(this.get("enableInlineBuilds")){let p=a.createStreamReporter(`${s} ${Ht(this,"STDOUT","green")}`),h=a.createStreamReporter(`${s} ${Ht(this,"STDERR","red")}`);n=new Aj.PassThrough,n.pipe(p),n.pipe(f),c=new Aj.PassThrough,c.pipe(h),c.pipe(f)}else n=f,c=f,typeof r<"u"&&n.write(`${r} `);return{stdout:n,stderr:c}}makeResolver(){let e=[];for(let r of this.plugins.values())for(let s of r.resolvers||[])e.push(new s);return new rm([new TQ,new Ei,...e])}makeFetcher(){let e=[];for(let r of this.plugins.values())for(let s of r.fetchers||[])e.push(new s);return new aI([new lI,new cI,...e])}getLinkers(){let e=[];for(let r of this.plugins.values())for(let s of r.linkers||[])e.push(new s);return e}getSupportedArchitectures(){let e=sv(),r=this.get("supportedArchitectures"),s=r.get("os");s!==null&&(s=s.map(c=>c==="current"?e.os:c));let a=r.get("cpu");a!==null&&(a=a.map(c=>c==="current"?e.cpu:c));let n=r.get("libc");return n!==null&&(n=Wl(n,c=>c==="current"?e.libc??Wl.skip:c)),{os:s,cpu:a,libc:n}}isInteractive({interactive:e,stdout:r}){return r.isTTY?e??this.get("preferInteractive"):!1}async getPackageExtensions(){if(this.packageExtensions!==null)return this.packageExtensions;this.packageExtensions=new Map;let e=this.packageExtensions,r=(s,a,{userProvided:n=!1}={})=>{if(!cl(s.range))throw new Error("Only semver ranges are allowed as keys for the packageExtensions setting");let c=new Ut;c.load(a,{yamlCompatibilityMode:!0});let f=xB(e,s.identHash),p=[];f.push([s.range,p]);let h={status:"inactive",userProvided:n,parentDescriptor:s};for(let E of c.dependencies.values())p.push({...h,type:"Dependency",descriptor:E});for(let E of c.peerDependencies.values())p.push({...h,type:"PeerDependency",descriptor:E});for(let[E,C]of c.peerDependenciesMeta)for(let[S,b]of Object.entries(C))p.push({...h,type:"PeerDependencyMeta",selector:E,key:S,value:b})};await this.triggerHook(s=>s.registerPackageExtensions,this,r);for(let[s,a]of this.get("packageExtensions"))r(C0(s,!0),Yk(a),{userProvided:!0});return e}normalizeLocator(e){return cl(e.reference)?Ws(e,`${this.get("defaultProtocol")}${e.reference}`):Mp.test(e.reference)?Ws(e,`${this.get("defaultProtocol")}${e.reference}`):e}normalizeDependency(e){return cl(e.range)?On(e,`${this.get("defaultProtocol")}${e.range}`):Mp.test(e.range)?On(e,`${this.get("defaultProtocol")}${e.range}`):e}normalizeDependencyMap(e){return new Map([...e].map(([r,s])=>[r,this.normalizeDependency(s)]))}normalizePackage(e,{packageExtensions:r}){let s=LB(e),a=r.get(e.identHash);if(typeof a<"u"){let c=e.version;if(c!==null){for(let[f,p]of a)if(Xf(c,f))for(let h of p)switch(h.status==="inactive"&&(h.status="redundant"),h.type){case"Dependency":typeof s.dependencies.get(h.descriptor.identHash)>"u"&&(h.status="active",s.dependencies.set(h.descriptor.identHash,this.normalizeDependency(h.descriptor)));break;case"PeerDependency":typeof s.peerDependencies.get(h.descriptor.identHash)>"u"&&(h.status="active",s.peerDependencies.set(h.descriptor.identHash,h.descriptor));break;case"PeerDependencyMeta":{let E=s.peerDependenciesMeta.get(h.selector);(typeof E>"u"||!Object.hasOwn(E,h.key)||E[h.key]!==h.value)&&(h.status="active",Yl(s.peerDependenciesMeta,h.selector,()=>({}))[h.key]=h.value)}break;default:H4(h)}}}let n=c=>c.scope?`${c.scope}__${c.name}`:`${c.name}`;for(let c of s.peerDependenciesMeta.keys()){let f=Sa(c);s.peerDependencies.has(f.identHash)||s.peerDependencies.set(f.identHash,On(f,"*"))}for(let c of s.peerDependencies.values()){if(c.scope==="types")continue;let f=n(c),p=Da("types",f),h=un(p);s.peerDependencies.has(p.identHash)||s.peerDependenciesMeta.has(h)||s.dependencies.has(p.identHash)||(s.peerDependencies.set(p.identHash,On(p,"*")),s.peerDependenciesMeta.set(h,{optional:!0}))}return s.dependencies=new Map(qs(s.dependencies,([,c])=>al(c))),s.peerDependencies=new Map(qs(s.peerDependencies,([,c])=>al(c))),s}getLimit(e){return Yl(this.limits,e,()=>(0,spe.default)(this.get(e)))}async triggerHook(e,...r){for(let s of this.plugins.values()){let a=s.hooks;if(!a)continue;let n=e(a);n&&await n(...r)}}async triggerMultipleHooks(e,r){for(let s of r)await this.triggerHook(e,...s)}async reduceHook(e,r,...s){let a=r;for(let n of this.plugins.values()){let c=n.hooks;if(!c)continue;let f=e(c);f&&(a=await f(a,...s))}return a}async firstHook(e,...r){for(let s of this.plugins.values()){let a=s.hooks;if(!a)continue;let n=e(a);if(!n)continue;let c=await n(...r);if(typeof c<"u")return c}return null}}});var qr={};Vt(qr,{EndStrategy:()=>Ij,ExecError:()=>IR,PipeError:()=>lv,execvp:()=>uj,pipevp:()=>Wu});function om(t){return t!==null&&typeof t.fd=="number"}function mj(){}function yj(){for(let t of am)t.kill()}async function Wu(t,e,{cwd:r,env:s=process.env,strict:a=!1,stdin:n=null,stdout:c,stderr:f,end:p=2}){let h=["pipe","pipe","pipe"];n===null?h[0]="ignore":om(n)&&(h[0]=n),om(c)&&(h[1]=c),om(f)&&(h[2]=f);let E=(0,Ej.default)(t,e,{cwd:fe.fromPortablePath(r),env:{...s,PWD:fe.fromPortablePath(r)},stdio:h});am.add(E),am.size===1&&(process.on("SIGINT",mj),process.on("SIGTERM",yj)),!om(n)&&n!==null&&n.pipe(E.stdin),om(c)||E.stdout.pipe(c,{end:!1}),om(f)||E.stderr.pipe(f,{end:!1});let C=()=>{for(let S of new Set([c,f]))om(S)||S.end()};return new Promise((S,b)=>{E.on("error",I=>{am.delete(E),am.size===0&&(process.off("SIGINT",mj),process.off("SIGTERM",yj)),(p===2||p===1)&&C(),b(I)}),E.on("close",(I,T)=>{am.delete(E),am.size===0&&(process.off("SIGINT",mj),process.off("SIGTERM",yj)),(p===2||p===1&&I!==0)&&C(),I===0||!a?S({code:Cj(I,T)}):b(new lv({fileName:t,code:I,signal:T}))})})}async function uj(t,e,{cwd:r,env:s=process.env,encoding:a="utf8",strict:n=!1}){let c=["ignore","pipe","pipe"],f=[],p=[],h=fe.fromPortablePath(r);typeof s.PWD<"u"&&(s={...s,PWD:h});let E=(0,Ej.default)(t,e,{cwd:h,env:s,stdio:c});return E.stdout.on("data",C=>{f.push(C)}),E.stderr.on("data",C=>{p.push(C)}),await new Promise((C,S)=>{E.on("error",b=>{let I=ze.create(r),T=Ht(I,t,ht.PATH);S(new jt(1,`Process ${T} failed to spawn`,N=>{N.reportError(1,` ${Kf(I,{label:"Thrown Error",value:_u(ht.NO_HINT,b.message)})}`)}))}),E.on("close",(b,I)=>{let T=a==="buffer"?Buffer.concat(f):Buffer.concat(f).toString(a),N=a==="buffer"?Buffer.concat(p):Buffer.concat(p).toString(a);b===0||!n?C({code:Cj(b,I),stdout:T,stderr:N}):S(new IR({fileName:t,code:b,signal:I,stdout:T,stderr:N}))})})}function Cj(t,e){let r=Unt.get(e);return typeof r<"u"?128+r:t??1}function _nt(t,e,{configuration:r,report:s}){s.reportError(1,` ${Kf(r,t!==null?{label:"Exit Code",value:_u(ht.NUMBER,t)}:{label:"Exit Signal",value:_u(ht.CODE,e)})}`)}var Ej,Ij,lv,IR,am,Unt,gR=Ze(()=>{Dt();Ej=ut(UU());av();Rc();xc();Ij=(s=>(s[s.Never=0]="Never",s[s.ErrorCode=1]="ErrorCode",s[s.Always=2]="Always",s))(Ij||{}),lv=class extends jt{constructor({fileName:e,code:r,signal:s}){let a=ze.create(J.cwd()),n=Ht(a,e,ht.PATH);super(1,`Child ${n} reported an error`,c=>{_nt(r,s,{configuration:a,report:c})}),this.code=Cj(r,s)}},IR=class extends lv{constructor({fileName:e,code:r,signal:s,stdout:a,stderr:n}){super({fileName:e,code:r,signal:s}),this.stdout=a,this.stderr=n}};am=new Set;Unt=new Map([["SIGINT",2],["SIGQUIT",3],["SIGKILL",9],["SIGTERM",15]])});function lpe(t){ape=t}function cv(){return typeof wj>"u"&&(wj=ape()),wj}var wj,ape,Bj=Ze(()=>{ape=()=>{throw new Error("Assertion failed: No libzip instance is available, and no factory was configured")}});var cpe=_((CR,Sj)=>{var Hnt=Object.assign({},Ie("fs")),vj=function(){var t=typeof document<"u"&&document.currentScript?document.currentScript.src:void 0;return typeof __filename<"u"&&(t=t||__filename),function(e){e=e||{};var r=typeof e<"u"?e:{},s,a;r.ready=new Promise(function(Ke,st){s=Ke,a=st});var n={},c;for(c in r)r.hasOwnProperty(c)&&(n[c]=r[c]);var f=[],p="./this.program",h=function(Ke,st){throw st},E=!1,C=!0,S="";function b(Ke){return r.locateFile?r.locateFile(Ke,S):S+Ke}var I,T,N,U;C&&(E?S=Ie("path").dirname(S)+"/":S=__dirname+"/",I=function(st,St){var lr=Me(st);return lr?St?lr:lr.toString():(N||(N=Hnt),U||(U=Ie("path")),st=U.normalize(st),N.readFileSync(st,St?null:"utf8"))},T=function(st){var St=I(st,!0);return St.buffer||(St=new Uint8Array(St)),we(St.buffer),St},process.argv.length>1&&(p=process.argv[1].replace(/\\/g,"/")),f=process.argv.slice(2),h=function(Ke){process.exit(Ke)},r.inspect=function(){return"[Emscripten Module object]"});var W=r.print||console.log.bind(console),ee=r.printErr||console.warn.bind(console);for(c in n)n.hasOwnProperty(c)&&(r[c]=n[c]);n=null,r.arguments&&(f=r.arguments),r.thisProgram&&(p=r.thisProgram),r.quit&&(h=r.quit);var ie=0,ue=function(Ke){ie=Ke},le;r.wasmBinary&&(le=r.wasmBinary);var me=r.noExitRuntime||!0;typeof WebAssembly!="object"&&ts("no native wasm support detected");function pe(Ke,st,St){switch(st=st||"i8",st.charAt(st.length-1)==="*"&&(st="i32"),st){case"i1":return Ve[Ke>>0];case"i8":return Ve[Ke>>0];case"i16":return mh((Ke>>1)*2);case"i32":return to((Ke>>2)*4);case"i64":return to((Ke>>2)*4);case"float":return Af((Ke>>2)*4);case"double":return dh((Ke>>3)*8);default:ts("invalid type for getValue: "+st)}return null}var Be,Ce=!1,g;function we(Ke,st){Ke||ts("Assertion failed: "+st)}function ye(Ke){var st=r["_"+Ke];return we(st,"Cannot call unknown function "+Ke+", make sure it is exported"),st}function Ae(Ke,st,St,lr,te){var Ee={string:function(Gi){var Rn=0;if(Gi!=null&&Gi!==0){var Ga=(Gi.length<<2)+1;Rn=wi(Ga),mt(Gi,Rn,Ga)}return Rn},array:function(Gi){var Rn=wi(Gi.length);return Fe(Gi,Rn),Rn}};function Oe(Gi){return st==="string"?De(Gi):st==="boolean"?!!Gi:Gi}var dt=ye(Ke),Et=[],Pt=0;if(lr)for(var tr=0;tr=St)&&ke[lr];)++lr;return X.decode(ke.subarray(Ke,lr))}function Te(Ke,st,St,lr){if(!(lr>0))return 0;for(var te=St,Ee=St+lr-1,Oe=0;Oe=55296&&dt<=57343){var Et=Ke.charCodeAt(++Oe);dt=65536+((dt&1023)<<10)|Et&1023}if(dt<=127){if(St>=Ee)break;st[St++]=dt}else if(dt<=2047){if(St+1>=Ee)break;st[St++]=192|dt>>6,st[St++]=128|dt&63}else if(dt<=65535){if(St+2>=Ee)break;st[St++]=224|dt>>12,st[St++]=128|dt>>6&63,st[St++]=128|dt&63}else{if(St+3>=Ee)break;st[St++]=240|dt>>18,st[St++]=128|dt>>12&63,st[St++]=128|dt>>6&63,st[St++]=128|dt&63}}return st[St]=0,St-te}function mt(Ke,st,St){return Te(Ke,ke,st,St)}function j(Ke){for(var st=0,St=0;St=55296&&lr<=57343&&(lr=65536+((lr&1023)<<10)|Ke.charCodeAt(++St)&1023),lr<=127?++st:lr<=2047?st+=2:lr<=65535?st+=3:st+=4}return st}function rt(Ke){var st=j(Ke)+1,St=La(st);return St&&Te(Ke,Ve,St,st),St}function Fe(Ke,st){Ve.set(Ke,st)}function Ne(Ke,st){return Ke%st>0&&(Ke+=st-Ke%st),Ke}var be,Ve,ke,it,Ue,x,w,P,y,F;function z(Ke){be=Ke,r.HEAP_DATA_VIEW=F=new DataView(Ke),r.HEAP8=Ve=new Int8Array(Ke),r.HEAP16=it=new Int16Array(Ke),r.HEAP32=x=new Int32Array(Ke),r.HEAPU8=ke=new Uint8Array(Ke),r.HEAPU16=Ue=new Uint16Array(Ke),r.HEAPU32=w=new Uint32Array(Ke),r.HEAPF32=P=new Float32Array(Ke),r.HEAPF64=y=new Float64Array(Ke)}var Z=r.INITIAL_MEMORY||16777216,$,oe=[],xe=[],Re=[],lt=!1;function Ct(){if(r.preRun)for(typeof r.preRun=="function"&&(r.preRun=[r.preRun]);r.preRun.length;)bt(r.preRun.shift());Rs(oe)}function qt(){lt=!0,Rs(xe)}function ir(){if(r.postRun)for(typeof r.postRun=="function"&&(r.postRun=[r.postRun]);r.postRun.length;)br(r.postRun.shift());Rs(Re)}function bt(Ke){oe.unshift(Ke)}function gn(Ke){xe.unshift(Ke)}function br(Ke){Re.unshift(Ke)}var Ir=0,Or=null,nn=null;function ai(Ke){Ir++,r.monitorRunDependencies&&r.monitorRunDependencies(Ir)}function Io(Ke){if(Ir--,r.monitorRunDependencies&&r.monitorRunDependencies(Ir),Ir==0&&(Or!==null&&(clearInterval(Or),Or=null),nn)){var st=nn;nn=null,st()}}r.preloadedImages={},r.preloadedAudios={};function ts(Ke){r.onAbort&&r.onAbort(Ke),Ke+="",ee(Ke),Ce=!0,g=1,Ke="abort("+Ke+"). Build with -s ASSERTIONS=1 for more info.";var st=new WebAssembly.RuntimeError(Ke);throw a(st),st}var $s="data:application/octet-stream;base64,";function Co(Ke){return Ke.startsWith($s)}var Hi="data:application/octet-stream;base64,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QCAAKAJIIgEgASADaiADEAcaAkAgAyAAKAJsIgFNBEAgACABIANrNgJsDAELIABCADcCbAsgACAAKAJoIANrIgE2AmggACAAKAJYIANrNgJYIAEgACgChC5JBEAgACABNgKELgsgAEH8gAEoAgARAwAgAiADaiECCwJAIAAoAgAiASgCBCIERQ0AIAAoAjwhBSAAIAIgBCACIARJGyICBH8gACgCSCAAKAJoaiAFaiEFIAEgBCACazYCBAJAAkACQAJAIAEoAhwiBCgCFEEBaw4CAQACCyAEQaABaiAFIAEoAgAgAkHcgAEoAgARCAAMAgsgASABKAIwIAUgASgCACACQcSAASgCABEEADYCMAwBCyAFIAEoAgAgAhAHGgsgASABKAIAIAJqNgIAIAEgASgCCCACajYCCCAAKAI8BSAFCyACaiICNgI8AkAgACgChC4iASACakEDSQ0AIAAoAmggAWshAQJAIAAoAnRBgQhPBEAgACAAIAAoAkggAWoiAi0AACACLQABIAAoAnwRAAA2AlQMAQsgAUUNACAAIAFBAWsgACgChAERAgAaCyAAKAKELiAAKAI8IgJBAUZrIgRFDQAgACABIAQgACgCgAERBQAgACAAKAKELiAEazYChC4gACgCPCECCyACQYUCSw0AIAAoAgAoAgRFDQAgACgCMCEBDAELCwJAIAAoAkQiAiAAKAJAIgNNDQAgAAJ/IAAoAjwgACgCaGoiASADSwRAIAAoAkggAWpBACACIAFrIgNBggIgA0GCAkkbIgMQGSABIANqDAELIAFBggJqIgEgA00NASAAKAJIIANqQQAgAiADayICIAEgA2siAyACIANJGyIDEBkgACgCQCADags2AkALC50CAQF/AkAgAAJ/IAAoAqAuIgFBwABGBEAgACgCBCAAKAIQaiAAKQOYLjcAACAAQgA3A5guIAAgACgCEEEIajYCEEEADAELIAFBIE4EQCAAKAIEIAAoAhBqIAApA5guPgAAIAAgAEGcLmo1AgA3A5guIAAgACgCEEEEajYCECAAIAAoAqAuQSBrIgE2AqAuCyABQRBOBEAgACgCBCAAKAIQaiAAKQOYLj0AACAAIAAoAhBBAmo2AhAgACAAKQOYLkIQiDcDmC4gACAAKAKgLkEQayIBNgKgLgsgAUEISA0BIAAgACgCECIBQQFqNgIQ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KAJUIgEEfyABQQAgARAiEBkgACgCVAVBAAsQBiAAQQA2AlQLC9wMAgl/AX4jAEFAaiIGJAACQAJAAkACQAJAIAEoAjBBABAjIgVBAkZBACABKAI4QQAQIyIEQQFGGw0AIAVBAUZBACAEQQJGGw0AIAVBAkciAw0BIARBAkcNAQsgASABLwEMQYAQcjsBDEEAIQMMAQsgASABLwEMQf/vA3E7AQxBACEFIANFBEBB9eABIAEoAjAgAEEIahBpIgVFDQILIAJBgAJxBEAgBSEDDAELIARBAkcEQCAFIQMMAQtB9cYBIAEoAjggAEEIahBpIgNFBEAgBRAcDAILIAMgBTYCAAsgASABLwEMQf7/A3EgAS8BUiIFQQBHcjsBDAJAAkACQAJAAn8CQAJAIAEpAyhC/v///w9WDQAgASkDIEL+////D1YNACACQYAEcUUNASABKQNIQv////8PVA0BCyAFQYECa0H//wNxQQNJIQdBAQwBCyAFQYECa0H//wNxIQQgAkGACnFBgApHDQEgBEEDSSEHQQALIQkgBkIcEBciBEUEQCAAQQhqIgAEQCAAQQA2AgQgAEEONgIACyADEBwMBQsgAkGACHEhBQJAAkAgAkGAAnEEQAJAIAUNACABKQMgQv////8PVg0AIAEpAyhCgICAgBBUDQMLIAQgASkDKBAYIAEpAyAhDAwBCwJAAkACQCAFDQAgASkDIEL/////D1YNACABKQMoIgxC/////w9WDQEgASkDSEKAgICAEFQNBAsgASkDKCIMQv////8PVA0BCyAEIAwQGAsgASkDICIMQv////8PWgRAIAQgDBAYCyABKQNIIgxC/////w9UDQELIAQgDBAYCyAELQAARQRAIABBCGoiAARAIABBADYCBCAAQRQ2AgALIAQQCCADEBwMBQtBASEKQQEgBC0AAAR+IAQpAxAFQgALp0H//wNxIAYQRyEFIAQQCCAFIAM2AgAgBw0BDAILIAMhBSAEQQJLDQELIAZCBxAXIgRFBEAgAEEIaiIABEAgAEEANgIEIABBDjYCAAsgBRAcDAMLIARBAhANIARBhxJBAhAsIAQgAS0AUhBwIAQgAS8BEBANIAQtAABFBEAgAEEIaiIABEAgAEEANgIEIABBFDYCAAsgBBAIDAILQYGyAkEHIAYQRyEDIAQQCCADIAU2AgBBASEL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NgIEIABB7A42AhggGiEdDAMLIARB/wFxIgJBwABxRQRAIAggDSADLwECQQJ0aiAdp0F/IAJ0QX9zcUECdGoiAy0AASICayEIIB0gAq2IIR0gAy0AACIERQ0HDAELCyAEQSBxBEAgB0G//gA2AgQgASECDAgLIAdB0f4ANgIEIABB0A42AhggASECDAcLIB1BfyAGdEF/c62DIBt8IhunIQUgCCAEQQ9xIgNrIQggGiAErUIPg4ghHSABIBdrIgYgAjMBAiAaQX8gA3RBf3Otg3ynIgRPDQIgBCAGayIGIBlNDQEgBygCjEdFDQEgB0HR/gA2AgQgAEG5DDYCGAsgASECIAshBQwFCwJAIA5FBEAgDCARIAZraiEDDAELIAYgDk0EQCAMIA4gBmtqIQMMAQsgDCARIAYgDmsiBmtqIQMgBSAGTQ0AIAUgBmshBQJAAkAgASADTSABIA8gAWusIhogBq0iGyAaIBtUGyIapyIGaiICIANLcQ0AIAMgBmogAUsgASADT3ENACABIAMgBhAHGiACIQEMAQsgASADIAMgAWsiASABQR91IgFqIAFzIgIQByACaiEBIBogAq0iHn0iHFANACACIANqIQIDQAJAIBwgHiAcIB5UGyIbQiBUBEAgGyEaDAELIBsiGkIgfSIgQgWIQgF8QgODIh9QRQRAA0AgASACKQAANwAAIAEgAikAGDcAGCABIAIpABA3ABAgASACKQAINwAIIBpCIH0hGiACQSBqIQIgAUEgaiEBIB9CAX0iH0IAUg0ACwsgIELgAFQNAANAIAEgAikAADcAACABIAIpABg3ABggASACKQAQNwAQIAEgAikACDcACCABIAIpADg3ADggASACKQAwNwAwIAEgAikAKDcAKCABIAIpACA3ACAgASACKQBYNwBYIAEgAikAUDcAUCABIAIpAEg3AEggASACKQBANwBAIAEgAikAYDcAYCABIAIpAGg3AGggASACKQBwNwBwIAEgAikAeDcAeCACQYABaiECIAFBgAFqIQEgGkKAAX0iGkIfVg0ACwsgGkIQWgRAIAEgAikAADcAACABIAIpAAg3AAggGkIQfSEaIAJBEGohAiABQRBqIQELIBpCCFoEQCABIAIpAAA3AAAgGkIIfSEaIAJBCGohAiABQQhqIQELIBpCBFoEQCABIAIoAAA2AAAgGkIEfSEaIAJBBGohAiABQQRqIQELIBpCAloEQCABIAIvAAA7AAAgGkICfSEaIAJBAmohAiABQQJqIQELIBwgG30hHCAaUEUEQCABIAItAAA6AAAgAkEBaiECIAFBAWohAQsgHEIAUg0ACwsgDiEGIAwhAwsgBSAGSwRAAkACQCABIANNIAEgDyABa6wiGiAGrSIbIBogG1QbIhqnIglqIgIgA0txDQAgAyAJaiABSyABIANPcQ0AIAEgAyAJEAcaDAELIAEgAyADIAFrIgEgAUEfdSIBaiABcyIBEAcgAWohAiAaIAGtIh59IhxQDQAgASADaiEBA0ACQCAcIB4gHCAeVBsiG0IgVARAIBshGgwBCyAbIhpCIH0iIEIFiEIBfEIDgyIfUEUEQANAIAIgASkAADcAACACIAEpABg3ABggAiABKQAQNwAQIAIgASkACDcACCAaQiB9IRogAUEgaiEBIAJBIGohAiAfQgF9Ih9CAFINAAsLICBC4ABUDQADQCACIAEpAAA3AAAgAiABKQAYNwAYIAIgASkAEDcAECACIAEpAAg3AAggAiABKQA4NwA4IAIgASkAMDcAMCACIAEpACg3ACggAiABKQAgNwAgIAIgASkAWDcAWCACIAEpAFA3AFAgAiABKQBINwBIIAIgASkAQDcAQCACIAEpAGA3AGAgAiABKQBoNwBoIAIgASkAcDcAcCACIAEpAHg3AHggAUGAAWohASACQYABaiECIBpCgAF9IhpCH1YNAAsLIBpCEFoEQCACIAEpAAA3AAAgAiABKQAINwAIIBpCEH0hGiACQRBqIQIgAUEQaiEBCyAaQghaBEAgAiABKQAANwAAIBpCCH0hGiACQQhqIQIgAUEIaiEBCyAaQgRaBEAgAiABKAAANgAAIBpCBH0hGiACQQRqIQIgAUEEaiEBCyAaQgJaBEAgAiABLwAAOwAAIBpCAn0hGiACQQJqIQIgAUECaiEBCyAcIBt9IRwgGlBFBEAgAiABLQAAOgAAIAJBAWohAiABQQFqIQELIBxCAFINAAsLIAUgBmshAUEAIARrIQUCQCAEQQdLBEAgBCEDDAELIAEgBE0EQCAEIQMMAQsgAiAEayEFA0ACQCACIAUpAAA3AAAgBEEBdCEDIAEgBGshASACIARqIQIgBEEDSw0AIAMhBCABIANLDQELC0EAIANrIQULIAIgBWohBAJAIAUgDyACa6wiGiABrSIbIBogG1QbIhqnIgFIIAVBf0pxDQAgBUEBSCABIARqIAJLcQ0AIAIgBCABEAcgAWohAgwDCyACIAQgAyADQR91IgFqIAFzIgEQByABaiECIBogAa0iHn0iHFANAiABIARqIQEDQAJAIBwgHiAcIB5UGyIbQiBUBEAgGyEaDAELIBsiGkIgfSIgQgWIQgF8QgODIh9QRQRAA0AgAiABKQAANwAAIAIgASkAGDcAGCACIAEpABA3ABAgAiABKQAINwAIIBpCIH0hGiABQSBqIQEgAkEgaiECIB9CAX0iH0IAUg0ACwsgIELgAFQNAANAIAIgASkAADcAACACIAEpABg3ABggAiABKQAQNwAQIAIgASkACDcACCACIAEpADg3ADggAiABKQAwNwAwIAIgASkAKDcAKCACIAEpACA3ACAgAiABKQBYNwBYIAIgASkAUDcAUCACIAEpAEg3AEggAiABKQBANwBAIAIgASkAYDcAYCACIAEpAGg3AGggAiABKQBwNwBwIAIgASkAeDcAeCABQYABaiEBIAJBgAFqIQIgGkKAAX0iGkIfVg0ACwsgGkIQWgRAIAIgASkAADcAACACIAEpAAg3AAggGkIQfSEaIAJBEGohAiABQRBqIQELIBpCCFoEQCACIAEpAAA3AAAgGkIIfSEaIAJBCGohAiABQQhqIQELIBpCBFoEQCACIAEoAAA2AAAgGkIEfSEaIAJBBGohAiABQQRqIQELIBpCAloEQCACIAEvAAA7AAAgGkICfSEaIAJBAmohAiABQQJqIQELIBwgG30hHCAaUEUEQCACIAEtAAA6AAAgAkEBaiECIAFBAWohAQsgHFBFDQALDAILAkAgASADTSABIA8gAWusIhogBa0iGyAaIBtUGyIapyIEaiICIANLcQ0AIAMgBGogAUsgASADT3ENACABIAMgBBAHGgwCCyABIAMgAyABayIBIAFBH3UiAWogAXMiARAHIAFqIQIgGiABrSIefSIcUA0BIAEgA2ohAQNAAkAgHCAeIBwgHlQbIhtCIFQEQCAbIRoMAQsgGyIaQiB9IiBCBYhCAXxCA4MiH1BFBEADQCACIAEpAAA3AAAgAiABKQAYNwAYIAIgASkAEDcAECACIAEpAAg3AAggGkIgfSEaIAFBIGohASACQSBqIQIgH0IBfSIfQgBSDQALCyAgQuAAVA0AA0AgAiABKQAANwAAIAIgASkAGDcAGCACIAEpABA3ABAgAiABKQAINwAIIAIgASkAODcAOCACIAEpADA3ADAgAiABKQAoNwAoIAIgASkAIDcAICACIAEpAFg3AFggAiABKQBQNwBQIAIgASkASDcASCACIAEpAEA3AEAgAiABKQBgNwBgIAIgASkAaDcAaCACIAEpAHA3AHAgAiABKQB4NwB4IAFBgAFqIQEgAkGAAWohAiAaQoABfSIaQh9WDQALCyAaQhBaBEAgAiABKQAANwAAIAIgASkACDcACCAaQhB9IRogAkEQaiECIAFBEGohAQsgGkIIWgRAIAIgASkAADcAACAaQgh9IRogAkEIaiECIAFBCGohAQsgGkIEWgRAIAIgASgAADYAACAaQgR9IRogAkEEaiECIAFBBGohAQsgGkICWgRAIAIgAS8AADsAACAaQgJ9IRogAkECaiECIAFBAmohAQsgHCAbfSEcIBpQRQRAIAIgAS0AADoAACACQQFqIQIgAUEBaiEBCyAcUEUNAAsMAQsCQAJAIBYEQAJAIAQgBUkEQCAHKAKYRyAESw0BCyABIARrIQMCQEEAIARrIgVBf0ogDyABa6wiGiAbIBogG1QbIhqnIgIgBUpxDQAgBUEBSCACIANqIAFLcQ0AIAEgAyACEAcgAmohAgwFCyABIAMgBCAEQR91IgFqIAFzIgEQByABaiECIBogAa0iHn0iHFANBCABIANqIQEDQAJAIBwgHiAcIB5UGyIbQiBUBEAgGyEaDAELIBsiGkIgfSIgQgWIQgF8QgODIh9QRQRAA0AgAiABKQAANwAAIAIgASkAGDcAGCACIAEpABA3ABAgAiABKQAINwAIIBpCIH0hGiABQSBqIQEgAkEgaiECIB9CAX0iH0IAUg0ACwsgIELgAFQNAANAIAIgASkAADcAACACIAEpABg3ABggAiABKQAQNwAQIAIgASkACDcACCACIAEpADg3ADggAiABKQAwNwAwIAIgASkAKDcAKCACIAEpACA3ACAgAiABKQBYNwBYIAIgASkAUDcAUCACIAEpAEg3AEggAiABKQBANwBAIAIgASkAYDcAYCACIAEpAGg3AGggAiABKQBwNwBwIAIgASkAeDcAeCABQYABaiEBIAJBgAFqIQIgGkKAAX0iGkIfVg0ACwsgGkIQWgRAIAIgASkAADcAACACIAEpAAg3AAggGkIQfSEaIAJBEGohAiABQRBqIQELIBpCCFoEQCACIAEpAAA3AAAgGkIIfSEaIAJBCGohAiABQQhqIQELIBpCBFoEQCACIAEoAAA2AAAgGkIEfSEaIAJBBGohAiABQQRqIQELIBpCAloEQCACIAEvAAA7AAAgGkICfSEaIAJBAmohAiABQQJqIQELIBwgG30hHCAaUEUEQCACIAEtAAA6AAAgAkEBaiECIAFBAWohAQsgHFBFDQALDAQLIBAgAWsiCUEBaiIGIAUgBSAGSxshAyABIARrIQIgAUEHcUUNAiADRQ0CIAEgAi0AADoAACACQQFqIQIgAUEBaiIGQQdxQQAgA0EBayIFGw0BIAYhASAFIQMgCSEGDAILAkAgBCAFSQRAIAcoAphHIARLDQELIAEgASAEayIGKQAANwAAIAEgBUEBa0EHcUEBaiIDaiECIAUgA2siBEUNAyADIAZqIQEDQCACIAEpAAA3AAAgAUEIaiEBIAJBCGohAiAEQQhrIgQNAAsMAwsgASAEIAUQPyECDAILIAEgAi0AADoAASAJQQFrIQYgA0ECayEFIAJBAWohAgJAIAFBAmoiCkEHcUUNACAFRQ0AIAEgAi0AADoAAiAJQQJrIQYgA0EDayEFIAJBAWohAgJAIAFBA2oiCkEHcUUNACAFRQ0AIAEgAi0AADoAAyAJQQNrIQYgA0EEayEFIAJBAWohAgJAIAFBBGoiCkEHcUUNACAFRQ0AIAEgAi0AADoABCAJQQRrIQYgA0EFayEFIAJBAWohAgJAIAFBBWoiCkEHcUUNACAFRQ0AIAEgAi0AADoABSAJQQVrIQYgA0EGayEFIAJBAWohAgJAIAFBBmoiCkEHcUUNACAFRQ0AIAEgAi0AADoABiAJQQZrIQYgA0EHayEFIAJBAWohAgJAIAFBB2oiCkEHcUUNACAFRQ0AIAEgAi0AADoAByAJQQdrIQYgA0EIayEDIAFBCGohASACQQFqIQIMBgsgCiEBIAUhAwwFCyAKIQEgBSEDDAQLIAohASAFIQMMAwsgCiEBIAUhAwwCCyAKIQEgBSEDDAELIAohASAFIQMLAkACQCAGQRdNBEAgA0UNASADQQFrIQUgA0EHcSIEBEADQCABIAItAAA6AAAgA0EBayEDIAFBAWohASACQQFqIQIgBEEBayIEDQALCyAFQQdJDQEDQCABIAItAAA6AAAgASACLQABOgABIAEgAi0AAjoAAiABIAItAAM6AAMgASACLQAEOgAEIAEgAi0ABToABSABIAItAAY6AAYgASACLQAHOgAHIAFBCGohASACQQhqIQIgA0EIayIDDQALDAELIAMNAQsgASECDAELIAEgBCADED8hAgsgCyEFDAELIAEgAy0AAjoAACABQQFqIQILIAUgFE8NACACIBNJDQELCyAAIAI2AgwgACAFIAhBA3ZrIgE2AgAgACATIAJrQYMCajYCECAAIBQgAWtBDmo2AgQgByAIQQdxIgA2AogBIAcgHUJ/IACthkJ/hYM+AoQBC+cFAQR/IAMgAiACIANLGyEEIAAgAWshAgJAIABBB3FFDQAgBEUNACAAIAItAAA6AAAgA0EBayEGIAJBAWohAiAAQQFqIgdBB3FBACAEQQFrIgUbRQRAIAchACAFIQQgBiEDDAELIAAgAi0AADoAASADQQJrIQYgBEECayEFIAJBAWohAgJAIABBAmoiB0EHcUUNACAFRQ0AIAAgAi0AADoAAiADQQNrIQYgBEEDayEFIAJBAWohAgJAIABBA2oiB0EHcUUNACAFRQ0AIAAgAi0AADoAAyADQQRrIQYgBEEEayEFIAJBAWohAgJAIABBBGoiB0EHcUUNACAFRQ0AIAAgAi0AADoABCADQQVrIQYgBEEFayEFIAJBAWohAgJAIABBBWoiB0EHcUUNACAFRQ0AIAAgAi0AADoABSADQQZrIQYgBEEGayEFIAJBAWohAgJAIABBBmoiB0EHcUUNACAFRQ0AIAAgAi0AADoABiADQQdrIQYgBEEHayEFIAJBAWohAgJAIABBB2oiB0EHcUUNACAFRQ0AIAAgAi0AADoAByADQQhrIQMgBEEIayEEIABBCGohACACQQFqIQIMBgsgByEAIAUhBCAGIQMMBQsgByEAIAUhBCAGIQMMBAsgByEAIAUhBCAGIQMMAwsgByEAIAUhBCAGIQMMAgsgByEAIAUhBCAGIQMMAQsgByEAIAUhBCAGIQMLAkAgA0EXTQRAIARFDQEgBEEBayEBIARBB3EiAwRAA0AgACACLQAAOgAAIARBAWshBCAAQQFqIQAgAkEBaiECIANBAWsiAw0ACwsgAUEHSQ0BA0AgACACLQAAOgAAIAAgAi0AAToAASAAIAItAAI6AAIgACACLQADOgADIAAgAi0ABDoABCAAIAItAAU6AAUgACACLQAGOgAGIAAgAi0ABzoAByAAQQhqIQAgAkEIaiECIARBCGsiBA0ACwwBCyAERQ0AIAAgASAEED8hAAsgAAvyCAEXfyAAKAJoIgwgACgCMEGGAmsiBWtBACAFIAxJGyENIAAoAnQhAiAAKAKQASEPIAAoAkgiDiAMaiIJIAAoAnAiBUECIAUbIgVBAWsiBmoiAy0AASESIAMtAAAhEyAGIA5qIQZBAyEDIAAoApQBIRYgACgCPCEUIAAoAkwhECAAKAI4IRECQAJ/IAVBA0kEQCANIQggDgwBCyAAIABBACAJLQABIAAoAnwRAAAgCS0AAiAAKAJ8EQAAIQoDQCAAIAogAyAJai0AACAAKAJ8EQAAIQogACgCUCAKQQF0ai8BACIIIAEgCCABQf//A3FJIggbIQEgA0ECayAHIAgbIQcgA0EBaiIDIAVNDQALIAFB//8DcSAHIA1qIghB//8DcU0NASAGIAdB//8DcSIDayEGIA4gA2sLIQMCQAJAIAwgAUH//wNxTQ0AIAIgAkECdiAFIA9JGyEKIA1B//8DcSEVIAlBAmohDyAJQQRrIRcDQAJAAkAgBiABQf//A3EiC2otAAAgE0cNACAGIAtBAWoiAWotAAAgEkcNACADIAtqIgItAAAgCS0AAEcNACABIANqLQAAIAktAAFGDQELIApBAWsiCkUNAiAQIAsgEXFBAXRqLwEAIgEgCEH//wNxSw0BDAILIAJBAmohAUEAIQQgDyECAkADQCACLQAAIAEtAABHDQEgAi0AASABLQABRwRAIARBAXIhBAwCCyACLQACIAEtAAJHBEAgBEECciEEDAILIAItAAMgAS0AA0cEQCAEQQNyIQQMAgsgAi0ABCABLQAERwRAIARBBHIhBAwCCyACLQAFIAEtAAVHBEAgBEEFciEEDAILIAItAAYgAS0ABkcEQCAEQQZyIQQMAgsgAi0AByABLQAHRwRAIARBB3IhBAwCCyABQQhqIQEgAkEIaiECIARB+AFJIRggBEEIaiEEIBgNAAtBgAIhBAsCQAJAIAUgBEECaiICSQRAIAAgCyAHQf//A3FrIgY2AmwgAiAUSwRAIBQPCyACIBZPBEAgAg8LIAkgBEEBaiIFaiIBLQABIRIgAS0AACETAkAgAkEESQ0AIAIgBmogDE8NACAGQf//A3EhCCAEQQFrIQtBACEDQQAhBwNAIBAgAyAIaiARcUEBdGovAQAiASAGQf//A3FJBEAgAyAVaiABTw0IIAMhByABIQYLIANBAWoiAyALTQ0ACyAAIAAgAEEAIAIgF2oiAS0AACAAKAJ8EQAAIAEtAAEgACgCfBEAACABLQACIAAoAnwRAAAhASAAKAJQIAFBAXRqLwEAIgEgBkH//wNxTwRAIAdB//8DcSEDIAYhAQwDCyAEQQJrIgdB//8DcSIDIBVqIAFPDQYMAgsgAyAFaiEGIAIhBQsgCkEBayIKRQ0DIBAgCyARcUEBdGovAQAiASAIQf//A3FNDQMMAQsgByANaiEIIA4gA2siAyAFaiEGIAIhBQsgDCABQf//A3FLDQALCyAFDwsgAiEFCyAFIAAoAjwiACAAIAVLGwuGBQETfyAAKAJ0IgMgA0ECdiAAKAJwIgNBAiADGyIDIAAoApABSRshByAAKAJoIgogACgCMEGGAmsiBWtB//8DcUEAIAUgCkkbIQwgACgCSCIIIApqIgkgA0EBayICaiIFLQABIQ0gBS0AACEOIAlBAmohBSACIAhqIQsgACgClAEhEiAAKAI8IQ8gACgCTCEQIAAoAjghESAAKAKIAUEFSCETA0ACQCAKIAFB//8DcU0NAANAAkACQCALIAFB//8DcSIGai0AACAORw0AIAsgBkEBaiIBai0AACANRw0AIAYgCGoiAi0AACAJLQAARw0AIAEgCGotAAAgCS0AAUYNAQsgB0EBayIHRQ0CIAwgECAGIBFxQQF0ai8BACIBSQ0BDAILCyACQQJqIQRBACECIAUhAQJAA0AgAS0AACAELQAARw0BIAEtAAEgBC0AAUcEQCACQQFyIQIMAgsgAS0AAiAELQACRwRAIAJBAnIhAgwCCyABLQADIAQtAANHBEAgAkEDciECDAILIAEtAAQgBC0ABEcEQCACQQRyIQIMAgsgAS0ABSAELQAFRwRAIAJBBXIhAgwCCyABLQAGIAQtAAZHBEAgAkEGciECDAILIAEtAAcgBC0AB0cEQCACQQdyIQIMAgsgBEEIaiEEIAFBCGohASACQfgBSSEUIAJBCGohAiAUDQALQYACIQILAkAgAyACQQJqIgFJBEAgACAGNgJsIAEgD0sEQCAPDwsgASASTwRAIAEPCyAIIAJBAWoiA2ohCyADIAlqIgMtAAEhDSADLQAAIQ4gASEDDAELIBMNAQsgB0EBayIHRQ0AIAwgECAGIBFxQQF0ai8BACIBSQ0BCwsgAwvLAQECfwJAA0AgAC0AACABLQAARw0BIAAtAAEgAS0AAUcEQCACQQFyDwsgAC0AAiABLQACRwRAIAJBAnIPCyAALQADIAEtAANHBEAgAkEDcg8LIAAtAAQgAS0ABEcEQCACQQRyDwsgAC0ABSABLQAFRwRAIAJBBXIPCyAALQAGIAEtAAZHBEAgAkEGcg8LIAAtAAcgAS0AB0cEQCACQQdyDwsgAUEIaiEBIABBCGohACACQfgBSSEDIAJBCGohAiADDQALQYACIQILIAIL5wwBB38gAEF/cyEAIAJBF08EQAJAIAFBA3FFDQAgAS0AACAAQf8BcXNBAnRB0BhqKAIAIABBCHZzIQAgAkEBayIEQQAgAUEBaiIDQQNxG0UEQCAEIQIgAyEBDAELIAEtAAEgAEH/AXFzQQJ0QdAYaigCACAAQQh2cyEAIAFBAmohAwJAIAJBAmsiBEUNACADQQNxRQ0AIAEtAAIgAEH/AXFzQQJ0QdAYaigCACAAQQh2cyEAIAFBA2ohAwJAIAJBA2siBEUNACADQQNxRQ0AIAEtAAMgAEH/AXFzQQJ0QdAYaigCACAAQQh2cyEAIAFBBGohASACQQRrIQIMAgsgBCECIAMhAQwBCyAEIQIgAyEBCyACQRRuIgNBbGwhCQJAIANBAWsiCEUEQEEAIQQMAQsgA0EUbCABakEUayEDQQAhBANAIAEoAhAgB3MiB0EWdkH8B3FB0DhqKAIAIAdBDnZB/AdxQdAwaigCACAHQQZ2QfwHcUHQKGooAgAgB0H/AXFBAnRB0CBqKAIAc3NzIQcgASgCDCAGcyIGQRZ2QfwHcUHQOGooAgAgBkEOdkH8B3FB0DBqKAIAIAZBBnZB/AdxQdAoaigCACAGQf8BcUECdEHQIGooAgBzc3MhBiABKAIIIAVzIgVBFnZB/AdxQdA4aigCACAFQQ52QfwHcUHQMGooAgAgBUEGdkH8B3FB0ChqKAIAIAVB/wFxQQJ0QdAgaigCAHNzcyEFIAEoAgQgBHMiBEEWdkH8B3FB0DhqKAIAIARBDnZB/AdxQdAwaigCACAEQQZ2QfwHcUHQKGooAgAgBEH/AXFBAnRB0CBqKAIAc3NzIQQgASgCACAAcyIAQRZ2QfwHcUHQOGooAgAgAEEOdkH8B3FB0DBqKAIAIABBBnZB/AdxQdAoaigCACAAQf8BcUECdEHQIGooAgBzc3MhACABQRRqIQEgCEEBayIIDQALIAMhAQsgAiAJaiECIAEoAhAgASgCDCABKAIIIAEoAgQgASgCACAAcyIAQQh2IABB/wFxQQJ0QdAYaigCAHMiAEEIdiAAQf8BcUECdEHQGGooAgBzIgBBCHYgAEH/AXFBAnRB0BhqKAIAcyIAQf8BcUECdEHQGGooAgAgBHNzIABBCHZzIgBBCHYgAEH/AXFBAnRB0BhqKAIAcyIAQQh2IABB/wFxQQJ0QdAYaigCAHMiAEEIdiAAQf8BcUECdEHQGGooAgBzIgBB/wFxQQJ0QdAYaigCACAFc3MgAEEIdnMiAEEIdiAAQf8BcUECdEHQGGooAgBzIgBBCHYgAEH/AXFBAnRB0BhqKAIAcyIAQQh2IABB/wFxQQJ0QdAYaigCAHMiAEH/AXFBAnRB0BhqKAIAIAZzcyAAQQh2cyIAQQh2IABB/wFxQQJ0QdAYaigCAHMiAEEIdiAAQf8BcUECdEHQGGooAgBzIgBBCHYgAEH/AXFBAnRB0BhqKAIAcyIAQf8BcUECdEHQGGooAgAgB3NzIABBCHZzIgBBCHYgAEH/AXFBAnRB0BhqKAIAcyIAQQh2IABB/wFxQQJ0QdAYaigCAHMiAEEIdiAAQf8BcUECdEHQGGooAgBzIgBBCHYgAEH/AXFBAnRB0BhqKAIAcyEAIAFBFGohAQsgAkEHSwRAA0AgAS0AByABLQAGIAEtAAUgAS0ABCABLQADIAEtAAIgAS0AASABLQAAIABB/wFxc0ECdEHQGGooAgAgAEEIdnMiAEH/AXFzQQJ0QdAYaigCACAAQQh2cyIAQf8BcXNBAnRB0BhqKAIAIABBCHZzIgBB/wFxc0ECdEHQGGooAgAgAEEIdnMiAEH/AXFzQQJ0QdAYaigCACAAQQh2cyIAQf8BcXNBAnRB0BhqKAIAIABBCHZzIgBB/wFxc0ECdEHQGGooAgAgAEEIdnMiAEH/AXFzQQJ0QdAYaigCACAAQQh2cyEAIAFBCGohASACQQhrIgJBB0sNAAsLAkAgAkUNACACQQFxBH8gAS0AACAAQf8BcXNBAnRB0BhqKAIAIABBCHZzIQAgAUEBaiEBIAJBAWsFIAILIQMgAkEBRg0AA0AgAS0AASABLQAAIABB/wFxc0ECdEHQGGooAgAgAEEIdnMiAEH/AXFzQQJ0QdAYaigCACAAQQh2cyEAIAFBAmohASADQQJrIgMNAAsLIABBf3MLwgIBA38jAEEQayIIJAACfwJAIAAEQCAEDQEgBVANAQsgBgRAIAZBADYCBCAGQRI2AgALQQAMAQtBgAEQCSIHRQRAIAYEQCAGQQA2AgQgBkEONgIAC0EADAELIAcgATcDCCAHQgA3AwAgB0EoaiIJECogByAFNwMYIAcgBDYCECAHIAM6AGAgB0EANgJsIAdCADcCZCAAKQMYIQEgCEF/NgIIIAhCjoCAgPAANwMAIAdBECAIECQgAUL/gQGDhCIBNwNwIAcgAadBBnZBAXE6AHgCQCACRQ0AIAkgAhBgQX9KDQAgBxAGQQAMAQsgBhBfIgIEQCAAIAAoAjBBAWo2AjAgAiAHNgIIIAJBATYCBCACIAA2AgAgAkI/IAAgB0EAQgBBDkEBEQoAIgEgAUIAUxs3AxgLIAILIQAgCEEQaiQAIAALYgEBf0E4EAkiAUUEQCAABEAgAEEANgIEIABBDjYCAAtBAA8LIAFBADYCCCABQgA3AwAgAUIANwMgIAFCgICAgBA3AiwgAUEAOgAoIAFBADYCFCABQgA3AgwgAUEAOwE0IAELuwEBAX4gASkDACICQgKDUEUEQCAAIAEpAxA3AxALIAJCBINQRQRAIAAgASkDGDcDGAsgAkIIg1BFBEAgACABKQMgNwMgCyACQhCDUEUEQCAAIAEoAig2AigLIAJCIINQRQRAIAAgASgCLDYCLAsgAkLAAINQRQRAIAAgAS8BMDsBMAsgAkKAAYNQRQRAIAAgAS8BMjsBMgsgAkKAAoNQRQRAIAAgASgCNDYCNAsgACAAKQMAIAKENwMAQQALGQAgAUUEQEEADwsgACABKAIAIAEzAQQQGws3AQJ/IABBACABG0UEQCAAIAFGDwsgAC8BBCIDIAEvAQRGBH8gACgCACABKAIAIAMQPQVBAQtFCyIBAX8gAUUEQEEADwsgARAJIgJFBEBBAA8LIAIgACABEAcLKQAgACABIAIgAyAEEEUiAEUEQEEADwsgACACQQAgBBA1IQEgABAGIAELcQEBfgJ/AkAgAkJ/VwRAIAMEQCADQQA2AgQgA0EUNgIACwwBCyAAIAEgAhARIgRCf1cEQCADBEAgAyAAKAIMNgIAIAMgACgCEDYCBAsMAQtBACACIARXDQEaIAMEQCADQQA2AgQgA0ERNgIACwtBfwsLNQAgACABIAJBABAmIgBFBEBBfw8LIAMEQCADIAAtAAk6AAALIAQEQCAEIAAoAkQ2AgALQQAL/AECAn8BfiMAQRBrIgMkAAJAIAAgA0EOaiABQYAGQQAQRiIARQRAIAIhAAwBCyADLwEOIgFBBUkEQCACIQAMAQsgAC0AAEEBRwRAIAIhAAwBCyAAIAGtQv//A4MQFyIBRQRAIAIhAAwBCyABEH0aAkAgARAVIAIEfwJ/IAIvAQQhAEEAIAIoAgAiBEUNABpBACAEIABB1IABKAIAEQAACwVBAAtHBEAgAiEADAELIAEgAS0AAAR+IAEpAwggASkDEH0FQgALIgVC//8DgxATIAWnQf//A3FBgBBBABA1IgBFBEAgAiEADAELIAIQEAsgARAICyADQRBqJAAgAAvmDwIIfwJ+IwBB4ABrIgckAEEeQS4gAxshCwJAAkAgAgRAIAIiBSIGLQAABH4gBikDCCAGKQMQfQVCAAsgC61aDQEgBARAIARBADYCBCAEQRM2AgALQn8hDQwCCyABIAutIAcgBBAtIgUNAEJ/IQ0MAQsgBUIEEBMoAABBoxJBqBIgAxsoAABHBEAgBARAIARBADYCBCAEQRM2AgALQn8hDSACDQEgBRAIDAELIABCADcDICAAQQA2AhggAEL/////DzcDECAAQQA7AQwgAEG/hig2AgggAEEBOgAGIABBADsBBCAAQQA2AgAgAEIANwNIIABBgIDYjXg2AkQgAEIANwMoIABCADcDMCAAQgA3AzggAEFAa0EAOwEAIABCADcDUCAAIAMEf0EABSAFEAwLOwEIIAAgBRAMOwEKIAAgBRAMOwEMIAAgBRAMNgIQIAUQDCEGIAUQDCEJIAdBADYCWCAHQgA3A1AgB0IANwNIIAcgCUEfcTYCPCAHIAZBC3Y2AjggByAGQQV2QT9xNgI0IAcgBkEBdEE+cTYCMCAHIAlBCXZB0ABqNgJEIAcgCUEFdkEPcUEBazYCQCAAIAdBMGoQBTYCFCAAIAUQFTYCGCAAIAUQFa03AyAgACAFEBWtNwMoIAUQDCEIIAUQDCEGIAACfiADBEBBACEJIABBADYCRCAAQQA7AUAgAEEANgI8QgAMAQsgBRAMIQkgACAFEAw2AjwgACAFEAw7AUAgACAFEBU2AkQgBRAVrQs3A0ggBS0AAEUEQCAEBEAgBEEANgIEIARBFDYCAAtCfyENIAINASAFEAgMAQsCQCAALwEMIgpBAXEEQCAKQcAAcQRAIABB//8DOwFSDAILIABBATsBUgwBCyAAQQA7AVILIABBADYCOCAAQgA3AzAgBiAIaiAJaiEKAkAgAgRAIAUtAAAEfiAFKQMIIAUpAxB9BUIACyAKrVoNASAEBEAgBEEANgIEIARBFTYCAAtCfyENDAILIAUQCCABIAqtQQAgBBAtIgUNAEJ/IQ0MAQsCQCAIRQ0AIAAgBSABIAhBASAEEGQiCDYCMCAIRQRAIAQoAgBBEUYEQCAEBEAgBEEANgIEIARBFTYCAAsLQn8hDSACDQIgBRAIDAILIAAtAA1BCHFFDQAgCEECECNBBUcNACAEBEAgBEEANgIEIARBFTYCAAtCfyENIAINASAFEAgMAQsgAEE0aiEIAkAgBkUNACAFIAEgBkEAIAQQRSIMRQRAQn8hDSACDQIgBRAIDAILIAwgBkGAAkGABCADGyAIIAQQbiEGIAwQBiAGRQRAQn8hDSACDQIgBRAIDAILIANFDQAgAEEBOgAECwJAIAlFDQAgACAFIAEgCUEAIAQQZCIBNgI4IAFFBEBCfyENIAINAiAFEAgMAgsgAC0ADUEIcUUNACABQQIQI0EFRw0AIAQEQCAEQQA2AgQgBEEVNgIAC0J/IQ0gAg0BIAUQCAwBCyAAIAAoAjRB9eABIAAoAjAQZzYCMCAAIAAoAjRB9cYBIAAoAjgQZzYCOAJAAkAgACkDKEL/////D1ENACAAKQMgQv////8PUQ0AIAApA0hC/////w9SDQELAkACQAJAIAgoAgAgB0EwakEBQYACQYAEIAMbIAQQRiIBRQRAIAJFDQEMAgsgASAHMwEwEBciAUUEQCAEBEAgBEEANgIEIARBDjYCAAsgAkUNAQwCCwJAIAApAyhC/////w9RBEAgACABEB03AygMAQsgA0UNAEEAIQYCQCABKQMQIg5CCHwiDSAOVA0AIAEpAwggDVQNACABIA03AxBBASEGCyABIAY6AAALIAApAyBC/////w9RBEAgACABEB03AyALAkAgAw0AIAApA0hC/////w9RBEAgACABEB03A0gLIAAoAjxB//8DRw0AIAAgARAVNgI8CyABLQAABH8gASkDECABKQMIUQVBAAsNAiAEBEAgBEEANgIEIARBFTYCAAsgARAIIAINAQsgBRAIC0J/IQ0MAgsgARAICyAFLQAARQRAIAQEQCAEQQA2AgQgBEEUNgIAC0J/IQ0gAg0BIAUQCAwBCyACRQRAIAUQCAtCfyENIAApA0hCf1cEQCAEBEAgBEEWNgIEIARBBDYCAAsMAQsjAEEQayIDJABBASEBAkAgACgCEEHjAEcNAEEAIQECQCAAKAI0IANBDmpBgbICQYAGQQAQRiICBEAgAy8BDiIFQQZLDQELIAQEQCAEQQA2AgQgBEEVNgIACwwBCyACIAWtQv//A4MQFyICRQRAIAQEQCAEQQA2AgQgBEEUNgIACwwBC0EBIQECQAJAAkAgAhAMQQFrDgICAQALQQAhASAEBEAgBEEANgIEIARBGDYCAAsgAhAIDAILIAApAyhCE1YhAQsgAkICEBMvAABBwYoBRwRAQQAhASAEBEAgBEEANgIEIARBGDYCAAsgAhAIDAELIAIQfUEBayIFQf8BcUEDTwRAQQAhASAEBEAgBEEANgIEIARBGDYCAAsgAhAIDAELIAMvAQ5BB0cEQEEAIQEgBARAIARBADYCBCAEQRU2AgALIAIQCAwBCyAAIAE6AAYgACAFQf8BcUGBAmo7AVIgACACEAw2AhAgAhAIQQEhAQsgA0EQaiQAIAFFDQAgCCAIKAIAEG02AgAgCiALaq0hDQsgB0HgAGokACANC4ECAQR/IwBBEGsiBCQAAkAgASAEQQxqQcAAQQAQJSIGRQ0AIAQoAgxBBWoiA0GAgARPBEAgAgRAIAJBADYCBCACQRI2AgALDAELQQAgA60QFyIDRQRAIAIEQCACQQA2AgQgAkEONgIACwwBCyADQQEQcCADIAEEfwJ/IAEvAQQhBUEAIAEoAgAiAUUNABpBACABIAVB1IABKAIAEQAACwVBAAsQEiADIAYgBCgCDBAsAn8gAy0AAEUEQCACBEAgAkEANgIEIAJBFDYCAAtBAAwBCyAAIAMtAAAEfiADKQMQBUIAC6dB//8DcSADKAIEEEcLIQUgAxAICyAEQRBqJAAgBQvgAQICfwF+QTAQCSICRQRAIAEEQCABQQA2AgQgAUEONgIAC0EADwsgAkIANwMIIAJBADYCACACQgA3AxAgAkIANwMYIAJCADcDICACQgA3ACUgAFAEQCACDwsCQCAAQv////8AVg0AIACnQQR0EAkiA0UNACACIAM2AgBBACEBQgEhBANAIAMgAUEEdGoiAUIANwIAIAFCADcABSAAIARSBEAgBKchASAEQgF8IQQMAQsLIAIgADcDCCACIAA3AxAgAg8LIAEEQCABQQA2AgQgAUEONgIAC0EAEBAgAhAGQQAL7gECA38BfiMAQRBrIgQkAAJAIARBDGpCBBAXIgNFBEBBfyECDAELAkAgAQRAIAJBgAZxIQUDQAJAIAUgASgCBHFFDQACQCADKQMIQgBUBEAgA0EAOgAADAELIANCADcDECADQQE6AAALIAMgAS8BCBANIAMgAS8BChANIAMtAABFBEAgAEEIaiIABEAgAEEANgIEIABBFDYCAAtBfyECDAQLQX8hAiAAIARBDGpCBBAbQQBIDQMgATMBCiIGUA0AIAAgASgCDCAGEBtBAEgNAwsgASgCACIBDQALC0EAIQILIAMQCAsgBEEQaiQAIAILPAEBfyAABEAgAUGABnEhAQNAIAEgACgCBHEEQCACIAAvAQpqQQRqIQILIAAoAgAiAA0ACwsgAkH//wNxC5wBAQN/IABFBEBBAA8LIAAhAwNAAn8CQAJAIAAvAQgiAUH04AFNBEAgAUEBRg0BIAFB9cYBRg0BDAILIAFBgbICRg0AIAFB9eABRw0BCyAAKAIAIQEgAEEANgIAIAAoAgwQBiAAEAYgASADIAAgA0YbIQMCQCACRQRAQQAhAgwBCyACIAE2AgALIAEMAQsgACICKAIACyIADQALIAMLsgQCBX8BfgJAAkACQCAAIAGtEBciAQRAIAEtAAANAUEAIQAMAgsgBARAIARBADYCBCAEQQ42AgALQQAPC0EAIQADQCABLQAABH4gASkDCCABKQMQfQVCAAtCBFQNASABEAwhByABIAEQDCIGrRATIghFBEBBACECIAQEQCAEQQA2AgQgBEEVNgIACyABEAggAEUNAwNAIAAoAgAhASAAKAIMEAYg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DCAAQRg2AggLDAMLIAAgBiAFLwFqQQAgBCABEQYAIQEgBhALIAFFDQILAkAgDUUEQCABIQMMAQsgACABIAUvAWgQgQEhAyABEAsgA0UNAQsCQCAJRSAMckUEQCADIQEMAQsgACADQQEQgAEhASADEAsgAUUNAQsgASEDDAELQQAhAwsgBUHwAGokACADC4UBAQF/IAFFBEAgAEEIaiIABEAgAEEANgIEIABBEjYCAAtBAA8LQTgQCSIDRQRAIABBCGoiAARAIABBADYCBCAAQQ42AgALQQAPCyADQQA2AhAgA0IANwIIIANCADcDKCADQQA2AgQgAyACNgIAIANCADcDGCADQQA2AjAgACABQTsgAxBCCw8AIAAgASACQQBBABCCAQusAgECfyABRQRAIABBCGoiAARAIABBADYCBCAAQRI2AgALQQAPCwJAIAJBfUsNACACQf//A3FBCEYNACAAQQhqIgAEQCAAQQA2AgQgAEEQNgIAC0EADwsCQEGwwAAQCSIFBEAgBUEANgIIIAVCADcCACAFQYiBAUGogQEgAxs2AqhAIAUgAjYCFCAFIAM6ABAgBUEAOgAPIAVBADsBDCAFIAMgAkF9SyIGcToADiAFQQggAiAGG0H//wNxIAQgBUGIgQFBqIEBIAMbKAIAEQAAIgI2AqxAIAINASAFEDEgBRAGCyAAQQhqIgAEQCAAQQA2AgQgAEEONgIAC0EADwsgACABQTogBRBCIgAEfyAABSAFKAKsQCAFKAKoQCgCBBEDACAFEDEgBRAGQQALC6ABAQF/IAIgACgCBCIDIAIgA0kbIgIEQCAAIAMgAms2AgQCQAJAAkACQCAAKAIcIgMoAhRBAWsOAgEAAgsgA0GgAWogASAAKAIAIAJB3IABKAIAEQgADAILIAAgACgCMCABIAAoAgAgAkHEgAEoAgARBAA2AjAMAQsgASAAKAIAIAIQBxoLIAAgACgCACACajYCACAAIAAoAgggAmo2AggLC7cCAQR/QX4hAgJAIABFDQAgACgCIEUNACAAKAIkIgRFDQAgACgCHCIBRQ0AIAEoAgAgAEcNAAJAAkAgASgCICIDQTlrDjkBAgICAgICAgICAgIBAgICAQICAgICAgICAgICAgICAgICAQICAgICAgICAgICAQICAgICAgICAgEACyADQZoFRg0AIANBKkcN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DCABajYCDCAGIAYoAgggAWo2AgggBSAFKAIUIAFqNgIUIAUgBSgCECABazYCECAGIAYoAhAgAWsiATYCECABDQAgBiAGKAIENgIIC0EAIQRBACEJIAMoAhBFDQAMCgsgAygCHCgCJCEGIAMgAygCGCIBQQFqNgIYIAEgBmotAAAhASADIARBAWo2AhAgAygCBCAEaiABOgAAIAEEQCADKAIQIQQMAQsLIAMoAhwoAixFDQAgAygCECIGIAlNDQAgBQJ/IAUoAjAhBEEAIAMoAgQgCWoiAUUNABogBCABIAYgCWtB1IABKAIAEQAACzYCMAsgA0HnADYCIAsCQCADKAIcKAIsBEAgAygCDCADKAIQIgFBAmpJBH8gBRAKIAMoAhANAkEABSABCyADKAIEaiAFKAIwOwAAIAMgAygCEEECajYCECADQaABakHkgAEoAgARAQAaCyADQfEANgIgIAUQCiADKAIQRQ0BDAcLDAYLIAUoAgQNAQsgAygCPA0AIApFDQEgAygCIEGaBUYNAQsCfyADKAKIASIBRQRAIAMgChCFAQwBCwJAAkACQCADKAKMAUECaw4CAAECCwJ/AkADQAJAAkAgAygCPA0AIAMQLyADKAI8DQAgCg0BQQAMBAsgAygCSCADKAJoai0AACEEIAMgAygC8C0iAUEBajYC8C0gASADKALsLWpBADoAACADIAMoAvAtIgFBAWo2AvAtIAEgAygC7C1qQQA6AAAgAyADKALwLSIBQQFqNgLwLSABIAMoAuwtaiAEOgAAIAMgBEECdGoiASABLwHkAUEBajsB5AEgAyADKAI8QQFrNgI8IAMgAygCaEEBaiIBNgJoIAMoAvAtIAMoAvQtRw0BQQAhBCADIAMoAlgiBkEATgR/IAMoAkggBmoFQQALIAEgBmtBABAPIAMgAygCaDYCWCADKAIAEAogAygCACgCEA0BDAILCyADQQA2AoQuIApBBEYEQCADIAMoAlgiAUEATgR/IAMoAkggAWoFQQALIAMoAmggAWtBARAPIAMgAygCaDYCWCADKAIAEApBA0ECIAMoAgAoAhAbDAILIAMoAvAtBEBBACEEIAMgAygCWCIBQQBOBH8gAygCSCABagVBAAsgAygCaCABa0EAEA8gAyADKAJoNgJYIAMoAgAQCiADKAIAKAIQRQ0BC0EBIQQLIAQL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bGl0ZXJhbC9sZW5ndGhzIHNldABpbnZhbGlkIGNvZGUgbGVuZ3RocyBzZXQAdW5rbm93biBoZWFkZXIgZmxhZ3Mgc2V0AGludmFsaWQgZGlzdGFuY2VzIHNldABpbnZhbGlkIGJpdCBsZW5ndGggcmVwZWF0AEZpbGUgYWxyZWFkeSBleGlzdHMAdG9vIG1hbnkgbGVuZ3RoIG9yIGRpc3RhbmNlIHN5bWJvbHMAaW52YWxpZCBzdG9yZWQgYmxvY2sgbGVuZ3RocwAlcyVzJXMAYnVmZmVyIGVycm9yAE5vIGVycm9yAHN0cmVhbSBlcnJvcgBUZWxsIGVycm9yAEludGVybmFsIGVycm9yAFNlZWsgZXJyb3IAV3JpdGUgZXJyb3IAZmlsZSBlcnJvcgBSZWFkIGVycm9yAFpsaWIgZXJyb3IAZGF0YSBlcnJvcgBDUkMgZXJyb3IAaW5jb21wYXRpYmxlIHZlcnNpb24AaW52YWxpZCBjb2RlIC0tIG1pc3NpbmcgZW5kLW9mLWJsb2NrAGluY29ycmVjdCBoZWFkZXIgY2hlY2sAaW5jb3JyZWN0IGxlbmd0aCBjaGVjawBpbmNvcnJlY3QgZGF0YSBjaGVjawBpbnZhbGlkIGRpc3RhbmNlIHRvbyBmYXIgYmFjawBoZWFkZXIgY3JjIG1pc21hdGNoADEuMi4xMy56bGliLW5nAGludmFsaWQgd2luZG93IHNpemUAUmVhZC1vbmx5IGFyY2hpdmUATm90IGEgemlwIGFyY2hpdmUAUmVzb3VyY2Ugc3RpbGwgaW4gdXNlAE1hbGxvYyBmYWlsdXJlAGludmFsaWQgYmxvY2sgdHlwZQBGYWlsdXJlIHRvIGNyZWF0ZSB0ZW1wb3JhcnkgZmlsZQBDYW4ndCBvcGVuIGZpbGUATm8gc3VjaCBmaWxlAFByZW1hdHVyZSBlbmQgb2YgZmlsZQBDYW4ndCByZW1vdmUgZmlsZQBpbnZhbGlkIGxpdGVyYWwvbGVuZ3RoIGNvZGUAaW52YWxpZCBkaXN0YW5jZSBjb2RlAHVua25vd24gY29tcHJlc3Npb24gbWV0aG9kAHN0cmVhbSBlbmQAQ29tcHJlc3NlZCBkYXRhIGludmFsaWQATXVsdGktZGlzayB6aXAgYXJjaGl2ZXMgbm90IHN1cHBvcnRl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UgAIANIACAAyAAgAsgAIAHIACADyAAgACgAIAIoACABKAAgAygAIACoACACqAAgAagAIAOoACAAaAAgAmgAIAFoACADaAAgAOgAIALoACAB6AAgA+gAIAAYACACGAAgARgAIAMYACAAmAAgApgAIAGYACADmAAgAFgAIAJYACABWAAgA1gAIADYACAC2AAgAdgAIAPYACAAOAAgAjgAIAE4ACADOAAgALgAIAK4ACABuAAgA7gAIAB4ACACeAAgAXgAIAN4ACAA+AAgAvgAIAH4ACAD+AAgAAQAIAIEACABBAAgAwQAIACEACAChAAgAYQAIAOEACAARAAgAkQAIAFEACADRAAgAMQAIALEACABxAAgA8QAIAAkACACJAAgASQAIAMkACAApAAgAqQAIAGkACADpAAgAGQAIAJkACABZAAgA2QAIADkACAC5AAgAeQAIAPkACAAFAAgAhQAIAEUACADFAAgAJQAIAKUACABlAAgA5QAIABUACACVAAgAVQAIANUACAA1AAgAtQAIAHUACAD1AAgADQAIAI0ACABNAAgAzQAIAC0ACACtAAgAbQAIAO0ACAAdAAgAnQAIAF0ACADdAAgAPQAIAL0ACAB9AAgA/QAIABMACQATAQkAkwAJAJMBCQBTAAkAUwEJANMACQDTAQkAMwAJADMBCQCzAAkAswEJAHMACQBzAQkA8wAJAPMBCQALAAkACwEJAIsACQCLAQkASwAJAEsBCQDLAAkAywEJACsACQArAQkAqwAJAKsBCQBrAAkAawEJAOsACQDrAQkAGwAJABsBCQCbAAkAmwEJAFsACQBbAQkA2wAJANsBCQA7AAkAOwEJALsACQC7AQkAewAJAHsBCQD7AAkA+wEJAAcACQAHAQkAhwAJAIcBCQBHAAkARwEJAMcACQDHAQkAJwAJACcBCQCnAAkApwEJAGcACQBnAQkA5wAJAOcBCQAXAAkAFwEJAJcACQCXAQkAVwAJAFcBCQDXAAkA1wEJADcACQA3AQkAtwAJALcBCQB3AAkAdwEJAPcACQD3AQkADwAJAA8BCQCPAAkAjwEJAE8ACQBPAQkAzwAJAM8BCQAvAAkALwEJAK8ACQCvAQkAbwAJAG8BCQDvAAkA7wEJAB8ACQAfAQkAnwAJAJ8BCQBfAAkAXwEJAN8ACQDfAQkAPwAJAD8BCQC/AAkAvwEJAH8ACQB/AQkA/wAJAP8BCQAAAAcAQAAHACAABwBgAAcAEAAHAFAABwAwAAcAcAAHAAgABwBIAAcAKAAHAGgABwAYAAcAWAAHADgABwB4AAcABAAHAEQABwAkAAcAZAAHABQABwBUAAcANAAHAHQABwADAAgAgwAIAEMACADDAAgAIwAIAKMACABjAAgA4wAIAAAABQAQAAUACAAFABgABQAEAAUAFAAFAAwABQAcAAUAAgAFABIABQAKAAUAGgAFAAYABQAWAAUADgAFAB4ABQABAAUAEQAFAAkABQAZAAUABQAFABUABQANAAUAHQAFAAMABQATAAUACwAFABsABQAHAAUAFwAFAEGBywAL7AYBAgMEBAUFBgYGBgcHBwcICAgICAgICAkJCQkJCQkJCgoKCgoKCgoKCgoKCgoKCgsLCwsLCwsLCwsLCwsLCwsMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8AABAREhITExQUFBQVFRUVFhYWFhYWFhYXFxcXFxcXFxgYGBgYGBgYGBgYGBgYGBgZGRkZGRkZGRkZGRkZGRkZGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhobGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwdHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dAAECAwQFBgcICAkJCgoLCwwMDAwNDQ0NDg4ODg8PDw8QEBAQEBAQEBEREREREREREhISEhISEhITExMTExMTExQUFBQUFBQUFBQUFBQUFBQVFRUVFRUVFRUVFRUVFRUVFhYWFhYWFhYWFhYWFhYWFhcXFxcXFxcXFxcXFxcXFxcYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhobGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbHAAAAAABAAAAAgAAAAMAAAAEAAAABQAAAAYAAAAHAAAACAAAAAoAAAAMAAAADgAAABAAAAAUAAAAGAAAABwAAAAgAAAAKAAAADAAAAA4AAAAQAAAAFAAAABgAAAAcAAAAIAAAACgAAAAwAAAAOAAQYTSAAutAQEAAAACAAAAAwAAAAQAAAAGAAAACAAAAAwAAAAQAAAAGAAAACAAAAAwAAAAQAAAAGAAAACAAAAAwAAAAAABAACAAQAAAAIAAAADAAAABAAAAAYAAAAIAAAADAAAABAAAAAYAAAAIAAAADAAAABAAAAAYAAAgCAAAMApAAABAQAAHgEAAA8AAAAAJQAAQCoAAAAAAAAeAAAADwAAAAAAAADAKgAAAAAAABMAAAAHAEHg0wALTQEAAAABAAAAAQAAAAEAAAACAAAAAgAAAAIAAAACAAAAAwAAAAMAAAADAAAAAwAAAAQAAAAEAAAABAAAAAQAAAAFAAAABQAAAAUAAAAFAEHQ1AALZQEAAAABAAAAAgAAAAIAAAADAAAAAwAAAAQAAAAEAAAABQAAAAUAAAAGAAAABgAAAAcAAAAHAAAACAAAAAgAAAAJAAAACQAAAAoAAAAKAAAACwAAAAsAAAAMAAAADAAAAA0AAAANAEGA1gALIwIAAAADAAAABwAAAAAAAAAQERIACAcJBgoFCwQMAw0CDgEPAEHQ1gALTQEAAAABAAAAAQAAAAEAAAACAAAAAgAAAAIAAAACAAAAAwAAAAMAAAADAAAAAwAAAAQAAAAEAAAABAAAAAQAAAAFAAAABQAAAAUAAAAFAEHA1wALZQEAAAABAAAAAgAAAAIAAAADAAAAAwAAAAQAAAAEAAAABQAAAAUAAAAGAAAABgAAAAcAAAAHAAAACAAAAAgAAAAJAAAACQAAAAoAAAAKAAAACwAAAAsAAAAMAAAADAAAAA0AAAANAEG42AALASwAQcTYAAthLQAAAAQABAAIAAQALgAAAAQABgAQAAYALwAAAAQADAAgABgALwAAAAgAEAAgACAALwAAAAgAEACAAIAALwAAAAgAIACAAAABMAAAACAAgAACAQAEMAAAACAAAgECAQAQMABBsNkAC6UTAwAEAAUABgAHAAgACQAKAAsADQAPABEAEwAXABsAHwAjACsAMwA7AEMAUwBjAHMAgwCjAMMA4wACAQAAAAAAABAAEAAQABAAEAAQABAAEAARABEAEQARABIAEgASABIAEwATABMAEwAUABQAFAAUABUAFQAVABUAEABNAMoAAAABAAIAAwAEAAUABwAJAA0AEQAZACEAMQBBAGEAgQDBAAEBgQEBAgEDAQQBBgEIAQwBEAEYASABMAFAAWAAAAAAEAAQABAAEAARABEAEgASABMAEwAUABQAFQAVABYAFgAXABcAGAAYABkAGQAaABoAGwAbABwAHAAdAB0AQABAAGAHAAAACFAAAAgQABQIcwASBx8AAAhwAAAIMAAACcAAEAcKAAAIYAAACCAAAAmgAAAIAAAACIAAAAhAAAAJ4AAQBwYAAAhYAAAIGAAACZAAEwc7AAAIeAAACDgAAAnQABEHEQAACGgAAAgoAAAJsAAACAgAAAiIAAAISAAACfAAEAcEAAAIVAAACBQAFQjjABMHKwAACHQAAAg0AAAJyAARBw0AAAhkAAAIJAAACagAAAgEAAAIhAAACEQAAAnoABAHCAAACFwAAAgcAAAJmAAUB1MAAAh8AAAIPAAACdgAEgcXAAAIbAAACCwAAAm4AAAIDAAACIwAAAhMAAAJ+AAQBwMAAAhSAAAIEgAVCKMAEwcjAAAIcgAACDIAAAnEABEHCwAACGIAAAgiAAAJpAAACAIAAAiCAAAIQgAACeQAEAcHAAAIWgAACBoAAAmUABQHQwAACHoAAAg6AAAJ1AASBxMAAAhqAAAIKgAACbQAAAgKAAAIigAACEoAAAn0ABAHBQAACFYAAAgWAEAIAAATBzMAAAh2AAAINgAACcwAEQcPAAAIZgAACCYAAAmsAAAIBgAACIYAAAhGAAAJ7AAQBwkAAAheAAAIHgAACZwAFAdjAAAIfgAACD4AAAncABIHGwAACG4AAAguAAAJvAAACA4AAAiOAAAITgAACfwAYAcAAAAIUQAACBEAFQiDABIHHwAACHEAAAgxAAAJwgAQBwoAAAhhAAAIIQAACaIAAAgBAAAIgQAACEEAAAniABAHBgAACFkAAAgZAAAJkgATBzsAAAh5AAAIOQAACdIAEQcRAAAIaQAACCkAAAmyAAAICQAACIkAAAhJAAAJ8gAQBwQAAAhVAAAIFQAQCAIBEwcrAAAIdQAACDUAAAnKABEHDQAACGUAAAglAAAJqgAACAUAAAiFAAAIRQAACeoAEAcIAAAIXQAACB0AAAmaABQHUwAACH0AAAg9AAAJ2gASBxcAAAhtAAAILQAACboAAAgNAAAIjQAACE0AAAn6ABAHAwAACFMAAAgTABUIwwATByMAAAhzAAAIMwAACcYAEQcLAAAIYwAACCMAAAmmAAAIAwAACIMAAAhDAAAJ5gAQBwcAAAhbAAAIGwAACZYAFAdDAAAIewAACDsAAAnWABIHEwAACGsAAAgrAAAJtgAACAsAAAiLAAAISwAACfYAEAcFAAAIVwAACBcAQAgAABMHMwAACHcAAAg3AAAJzgARBw8AAAhnAAAIJwAACa4AAAgHAAAIhwAACEcAAAnuABAHCQAACF8AAAgfAAAJngAUB2MAAAh/AAAIPwAACd4AEgcbAAAIbwAACC8AAAm+AAAIDwAACI8AAAhPAAAJ/gBgBwAAAAhQAAAIEAAUCHMAEgcfAAAIcAAACDAAAAnBABAHCgAACGAAAAggAAAJoQAACAAAAAiAAAAIQAAACeEAEAcGAAAIWAAACBgAAAmRABMHOwAACHgAAAg4AAAJ0QARBxEAAAhoAAAIKAAACbEAAAgIAAAIiAAACEgAAAnxABAHBAAACFQAAAgUABUI4wATBysAAAh0AAAINAAACckAEQcNAAAIZAAACCQAAAmpAAAIBAAACIQAAAhEAAAJ6QAQBwgAAAhcAAAIHAAACZkAFAdTAAAIfAAACDwAAAnZABIHFwAACGwAAAgsAAAJuQAACAwAAAiMAAAITAAACfkAEAcDAAAIUgAACBIAFQijABMHIwAACHIAAAgyAAAJxQARBwsAAAhiAAAIIgAACaUAAAgCAAAIggAACEIAAAnlABAHBwAACFoAAAgaAAAJlQAUB0MAAAh6AAAIOgAACdUAEgcTAAAIagAACCoAAAm1AAAICgAACIoAAAhKAAAJ9QAQBwUAAAhWAAAIFgBACAAAEwczAAAIdgAACDYAAAnNABEHDwAACGYAAAgmAAAJrQAACAYAAAiGAAAIRgAACe0AEAcJAAAIXgAACB4AAAmdABQHYwAACH4AAAg+AAAJ3QASBxsAAAhuAAAILgAACb0AAAgOAAAIjgAACE4AAAn9AGAHAAAACFEAAAgRABUIgwASBx8AAAhxAAAIMQAACcMAEAcKAAAIYQAACCEAAAmjAAAIAQAACIEAAAhBAAAJ4wAQBwYAAAhZAAAIGQAACZMAEwc7AAAIeQAACDkAAAnTABEHEQAACGkAAAgpAAAJswAACAkAAAiJAAAISQAACfMAEAcEAAAIVQAACBUAEAgCARMHKwAACHUAAAg1AAAJywARBw0AAAhlAAAIJQAACasAAAgFAAAIhQAACEUAAAnrABAHCAAACF0AAAgdAAAJmwAUB1MAAAh9AAAIPQAACdsAEgcXAAAIbQAACC0AAAm7AAAIDQAACI0AAAhNAAAJ+wAQBwMAAAhTAAAIEwAVCMMAEwcjAAAIcwAACDMAAAnHABEHCwAACGMAAAgjAAAJpwAACAMAAAiDAAAIQwAACecAEAcHAAAIWwAACBsAAAmXABQHQwAACHsAAAg7AAAJ1wASBxMAAAhrAAAIKwAACbcAAAgLAAAIiwAACEsAAAn3ABAHBQAACFcAAAgXAEAIAAATBzMAAAh3AAAINwAACc8AEQcPAAAIZwAACCcAAAmvAAAIBwAACIcAAAhHAAAJ7wAQBwkAAAhfAAAIHwAACZ8AFAdjAAAIfwAACD8AAAnfABIHGwAACG8AAAgvAAAJvwAACA8AAAiPAAAITwAACf8AEAUBABcFAQETBREAGwUBEBEFBQAZBQEEFQVBAB0FAUAQBQMAGAUBAhQFIQAcBQEgEgUJABoFAQgWBYEAQAUAABAFAgAXBYEBEwUZABsFARgRBQcAGQUBBhUFYQAdBQFgEAUEABgFAQMUBTEAHAUBMBIFDQAaBQEMFgXBAEAFAAAQABEAEgAAAAgABwAJAAYACgAFAAsABAAMAAMADQACAA4AAQAPAEHg7AALQREACgAREREAAAAABQAAAAAAAAkAAAAACwAAAAAAAAAAEQAPChEREQMKBwABAAkLCwAACQYLAAALAAYRAAAAERERAEGx7QALIQsAAAAAAAAAABEACgoREREACgAAAgAJCwAAAAkACwAACwBB6+0ACwEMAEH37QALFQwAAAAADAAAAAAJDAAAAAAADAAADABBpe4ACwEOAEGx7gALFQ0AAAAEDQAAAAAJDgAAAAAADgAADgBB3+4ACwEQAEHr7gALHg8AAAAADwAAAAAJEAAAAAAAEAAAEAAAEgAAABISEgBBou8ACw4SAAAAEhISAAAAAAAACQBB0+8ACwELAEHf7wALFQoAAAAACgAAAAAJCwAAAAAACwAACwBBjfAACwEMAEGZ8AALJwwAAAAADAAAAAAJDAAAAAAADAAADAAAMDEyMzQ1Njc4OUFCQ0RFRgBB5PAACwE+AEGL8QALBf//////AEHQ8QALVxkSRDsCPyxHFD0zMAobBkZLRTcPSQ6OFwNAHTxpKzYfSi0cASAlKSEIDBUWIi4QOD4LNDEYZHR1di9BCX85ESNDMkKJiosFBCYoJw0qHjWMBxpIkxOUlQBBsPIAC4oOSWxsZWdhbCBieXRlIHNlcXVlbmNlAERvbWFpbiBlcnJvcgBSZXN1bHQgbm90IHJlcHJlc2VudGFibGUATm90IGEgdHR5AFBlcm1pc3Npb24gZGVuaWVkAE9wZXJhdGlvbiBub3QgcGVybWl0dGVkAE5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnkATm8gc3VjaCBwcm9jZXNzAEZpbGUgZXhpc3RzAFZhbHVlIHRvbyBsYXJnZSBmb3IgZGF0YSB0eXBlAE5vIHNwYWNlIGxlZnQgb24gZGV2aWNlAE91dCBvZiBtZW1vcnkAUmVzb3VyY2UgYnVzeQBJbnRlcnJ1cHRlZCBzeXN0ZW0gY2FsbABSZXNvdXJjZSB0ZW1wb3JhcmlseSB1bmF2YWlsYWJsZQBJbnZhbGlkIHNlZWsAQ3Jvc3MtZGV2aWNlIGxpbmsAUmVhZC1vbmx5IGZpbGUgc3lzdGVtAERpcmVjdG9yeSBub3QgZW1wdHkAQ29ubmVjdGlvbiByZXNldCBieSBwZWVyAE9wZXJhdGlvbiB0aW1lZCBvdXQAQ29ubmVjdGlvbiByZWZ1c2VkAEhvc3QgaXMgZG93bgBIb3N0IGlzIHVucmVhY2hhYmxlAEFkZHJlc3MgaW4gdXNlAEJyb2tlbiBwaXBlAEkvTyBlcnJvcgBObyBzdWNoIGRldmljZSBvciBhZGRyZXNzAEJsb2NrIGRldmljZSByZXF1aXJlZABObyBzdWNoIGRldmljZQBOb3QgYSBkaXJlY3RvcnkASXMgYSBkaXJlY3RvcnkAVGV4dCBmaWxlIGJ1c3kARXhlYyBmb3JtYXQgZXJyb3IASW52YWxpZCBhcmd1bWVudABBcmd1bWVudCBsaXN0IHRvbyBsb25nAFN5bWJvbGljIGxpbmsgbG9vcABGaWxlbmFtZSB0b28gbG9uZwBUb28gbWFueSBvcGVuIGZpbGVzIGluIHN5c3RlbQBObyBmaWxlIGRlc2NyaXB0b3JzIGF2YWlsYWJsZQBCYWQgZmlsZSBkZXNjcmlwdG9yAE5vIGNoaWxkIHByb2Nlc3MAQmFkIGFkZHJlc3MARmlsZSB0b28gbGFyZ2UAVG9vIG1hbnkgbGlua3MATm8gbG9ja3MgYXZhaWxhYmxlAFJlc291cmNlIGRlYWRsb2NrIHdvdWxkIG9jY3VyAFN0YXRlIG5vdCByZWNvdmVyYWJsZQBQcmV2aW91cyBvd25lciBkaWVkAE9wZXJhdGlvbiBjYW5jZWxlZABGdW5jdGlvbiBub3QgaW1wbGVtZW50ZWQATm8gbWVzc2FnZSBvZiBkZXNpcmVkIHR5cGUASWRlbnRpZmllciByZW1vdmVkAERldmljZSBub3QgYSBzdHJlYW0ATm8gZGF0YSBhdmFpbGFibGUARGV2aWNlIHRpbWVvdXQAT3V0IG9mIHN0cmVhbXMgcmVzb3VyY2VzAExpbmsgaGFzIGJlZW4gc2V2ZXJlZABQcm90b2NvbCBlcnJvcgBCYWQgbWVzc2FnZQBGaWxlIGRlc2NyaXB0b3IgaW4gYmFkIHN0YXRlAE5vdCBhIHNvY2tldABEZXN0aW5hdGlvbiBhZGRyZXNzIHJlcXVpcmVkAE1lc3NhZ2UgdG9vIGxhcmdlAFByb3RvY29sIHdyb25nIHR5cGUgZm9yIHNvY2tldABQcm90b2NvbCBub3QgYXZhaWxhYmxlAFByb3RvY29sIG5vdCBzdXBwb3J0ZWQAU29ja2V0IHR5cGUgbm90IHN1cHBvcnRlZABOb3Qgc3VwcG9ydGVkAFByb3RvY29sIGZhbWlseSBub3Qgc3VwcG9ydGVkAEFkZHJlc3MgZmFtaWx5IG5vdCBzdXBwb3J0ZWQgYnkgcHJvdG9jb2wAQWRkcmVzcyBub3QgYXZhaWxhYmxlAE5ldHdvcmsgaXMgZG93bgBOZXR3b3JrIHVucmVhY2hhYmxlAENvbm5lY3Rpb24gcmVzZXQgYnkgbmV0d29yawBDb25uZWN0aW9uIGFib3J0ZWQATm8gYnVmZmVyIHNwYWNlIGF2YWlsYWJsZQBTb2NrZXQgaXMgY29ubmVjdGVkAFNvY2tldCBub3QgY29ubmVjdGVkAENhbm5vdCBzZW5kIGFmdGVyIHNvY2tldCBzaHV0ZG93bgBPcGVyYXRpb24gYWxyZWFkeSBpbiBwcm9ncmVzcwBPcGVyYXRpb24gaW4gcHJvZ3Jlc3MAU3RhbGUgZmlsZSBoYW5kbGUAUmVtb3RlIEkvTyBlcnJvcgBRdW90YSBleGNlZWRlZABObyBtZWRpdW0gZm91bmQAV3JvbmcgbWVkaXVtIHR5cGUATm8gZXJyb3IgaW5mb3JtYXRpb24AQcCAAQuFARMAAAAUAAAAFQAAABYAAAAXAAAAGAAAABkAAAAaAAAAGwAAABwAAAAdAAAAHgAAAB8AAAAgAAAAIQAAACIAAAAjAAAAgERQADEAAAAyAAAAMwAAADQAAAA1AAAANgAAADcAAAA4AAAAOQAAADIAAAAzAAAANAAAADUAAAA2AAAANwAAADgAQfSCAQsCXEQAQbCDAQsQ/////////////////////w==";Co(Hi)||(Hi=b(Hi));function eo(Ke){try{if(Ke==Hi&&le)return new Uint8Array(le);var st=Me(Ke);if(st)return st;if(T)return T(Ke);throw"sync fetching of the wasm failed: you can preload it to Module['wasmBinary'] manually, or emcc.py will do that for you when generating HTML (but not JS)"}catch(St){ts(St)}}function wo(Ke,st){var St,lr,te;try{te=eo(Ke),lr=new WebAssembly.Module(te),St=new WebAssembly.Instance(lr,st)}catch(Oe){var Ee=Oe.toString();throw ee("failed to compile wasm module: "+Ee),(Ee.includes("imported Memory")||Ee.includes("memory import"))&&ee("Memory size incompatibility issues may be due to changing INITIAL_MEMORY at runtime to something too large. Use ALLOW_MEMORY_GROWTH to allow any size memory (and also make sure not to set INITIAL_MEMORY at runtime to something smaller than it was at compile time)."),Oe}return[St,lr]}function QA(){var Ke={a:cu};function st(te,Ee){var Oe=te.exports;r.asm=Oe,Be=r.asm.g,z(Be.buffer),$=r.asm.W,gn(r.asm.h),Io("wasm-instantiate")}if(ai("wasm-instantiate"),r.instantiateWasm)try{var St=r.instantiateWasm(Ke,st);return St}catch(te){return ee("Module.instantiateWasm callback failed with error: "+te),!1}var lr=wo(Hi,Ke);return st(lr[0]),r.asm}function Af(Ke){return F.getFloat32(Ke,!0)}function dh(Ke){return F.getFloat64(Ke,!0)}function mh(Ke){return F.getInt16(Ke,!0)}function to(Ke){return F.getInt32(Ke,!0)}function jn(Ke,st){F.setInt32(Ke,st,!0)}function Rs(Ke){for(;Ke.length>0;){var st=Ke.shift();if(typeof st=="function"){st(r);continue}var St=st.func;typeof St=="number"?st.arg===void 0?$.get(St)():$.get(St)(st.arg):St(st.arg===void 0?null:st.arg)}}function ro(Ke,st){var St=new Date(to((Ke>>2)*4)*1e3);jn((st>>2)*4,St.getUTCSeconds()),jn((st+4>>2)*4,St.getUTCMinutes()),jn((st+8>>2)*4,St.getUTCHours()),jn((st+12>>2)*4,St.getUTCDate()),jn((st+16>>2)*4,St.getUTCMonth()),jn((st+20>>2)*4,St.getUTCFullYear()-1900),jn((st+24>>2)*4,St.getUTCDay()),jn((st+36>>2)*4,0),jn((st+32>>2)*4,0);var lr=Date.UTC(St.getUTCFullYear(),0,1,0,0,0,0),te=(St.getTime()-lr)/(1e3*60*60*24)|0;return jn((st+28>>2)*4,te),ro.GMTString||(ro.GMTString=rt("GMT")),jn((st+40>>2)*4,ro.GMTString),st}function ou(Ke,st){return ro(Ke,st)}function au(Ke,st,St){ke.copyWithin(Ke,st,st+St)}function lu(Ke){try{return Be.grow(Ke-be.byteLength+65535>>>16),z(Be.buffer),1}catch{}}function RA(Ke){var st=ke.length;Ke=Ke>>>0;var St=2147483648;if(Ke>St)return!1;for(var lr=1;lr<=4;lr*=2){var te=st*(1+.2/lr);te=Math.min(te,Ke+100663296);var Ee=Math.min(St,Ne(Math.max(Ke,te),65536)),Oe=lu(Ee);if(Oe)return!0}return!1}function TA(Ke){ue(Ke)}function oa(Ke){var st=Date.now()/1e3|0;return Ke&&jn((Ke>>2)*4,st),st}function aa(){if(aa.called)return;aa.called=!0;var Ke=new Date().getFullYear(),st=new Date(Ke,0,1),St=new Date(Ke,6,1),lr=st.getTimezoneOffset(),te=St.getTimezoneOffset(),Ee=Math.max(lr,te);jn((vl()>>2)*4,Ee*60),jn((Is()>>2)*4,+(lr!=te));function Oe(An){var li=An.toTimeString().match(/\(([A-Za-z ]+)\)$/);return li?li[1]:"GMT"}var dt=Oe(st),Et=Oe(St),Pt=rt(dt),tr=rt(Et);te>2)*4,Pt),jn((Mi()+4>>2)*4,tr)):(jn((Mi()>>2)*4,tr),jn((Mi()+4>>2)*4,Pt))}function FA(Ke){aa();var st=Date.UTC(to((Ke+20>>2)*4)+1900,to((Ke+16>>2)*4),to((Ke+12>>2)*4),to((Ke+8>>2)*4),to((Ke+4>>2)*4),to((Ke>>2)*4),0),St=new Date(st);jn((Ke+24>>2)*4,St.getUTCDay());var lr=Date.UTC(St.getUTCFullYear(),0,1,0,0,0,0),te=(St.getTime()-lr)/(1e3*60*60*24)|0;return jn((Ke+28>>2)*4,te),St.getTime()/1e3|0}var gr=typeof atob=="function"?atob:function(Ke){var st="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",St="",lr,te,Ee,Oe,dt,Et,Pt,tr=0;Ke=Ke.replace(/[^A-Za-z0-9\+\/\=]/g,"");do Oe=st.indexOf(Ke.charAt(tr++)),dt=st.indexOf(Ke.charAt(tr++)),Et=st.indexOf(Ke.charAt(tr++)),Pt=st.indexOf(Ke.charAt(tr++)),lr=Oe<<2|dt>>4,te=(dt&15)<<4|Et>>2,Ee=(Et&3)<<6|Pt,St=St+String.fromCharCode(lr),Et!==64&&(St=St+String.fromCharCode(te)),Pt!==64&&(St=St+String.fromCharCode(Ee));while(tr0||(Ct(),Ir>0))return;function st(){Qn||(Qn=!0,r.calledRun=!0,!Ce&&(qt(),s(r),r.onRuntimeInitialized&&r.onRuntimeInitialized(),ir()))}r.setStatus?(r.setStatus("Running..."),setTimeout(function(){setTimeout(function(){r.setStatus("")},1),st()},1)):st()}if(r.run=Ac,r.preInit)for(typeof r.preInit=="function"&&(r.preInit=[r.preInit]);r.preInit.length>0;)r.preInit.pop()();return Ac(),e}}();typeof CR=="object"&&typeof Sj=="object"?Sj.exports=vj:typeof define=="function"&&define.amd?define([],function(){return vj}):typeof CR=="object"&&(CR.createModule=vj)});var Up,upe,fpe,Ape=Ze(()=>{Up=["number","number"],upe=(X=>(X[X.ZIP_ER_OK=0]="ZIP_ER_OK",X[X.ZIP_ER_MULTIDISK=1]="ZIP_ER_MULTIDISK",X[X.ZIP_ER_RENAME=2]="ZIP_ER_RENAME",X[X.ZIP_ER_CLOSE=3]="ZIP_ER_CLOSE",X[X.ZIP_ER_SEEK=4]="ZIP_ER_SEEK",X[X.ZIP_ER_READ=5]="ZIP_ER_READ",X[X.ZIP_ER_WRITE=6]="ZIP_ER_WRITE",X[X.ZIP_ER_CRC=7]="ZIP_ER_CRC",X[X.ZIP_ER_ZIPCLOSED=8]="ZIP_ER_ZIPCLOSED",X[X.ZIP_ER_NOENT=9]="ZIP_ER_NOENT",X[X.ZIP_ER_EXISTS=10]="ZIP_ER_EXISTS",X[X.ZIP_ER_OPEN=11]="ZIP_ER_OPEN",X[X.ZIP_ER_TMPOPEN=12]="ZIP_ER_TMPOPEN",X[X.ZIP_ER_ZLIB=13]="ZIP_ER_ZLIB",X[X.ZIP_ER_MEMORY=14]="ZIP_ER_MEMORY",X[X.ZIP_ER_CHANGED=15]="ZIP_ER_CHANGED",X[X.ZIP_ER_COMPNOTSUPP=16]="ZIP_ER_COMPNOTSUPP",X[X.ZIP_ER_EOF=17]="ZIP_ER_EOF",X[X.ZIP_ER_INVAL=18]="ZIP_ER_INVAL",X[X.ZIP_ER_NOZIP=19]="ZIP_ER_NOZIP",X[X.ZIP_ER_INTERNAL=20]="ZIP_ER_INTERNAL",X[X.ZIP_ER_INCONS=21]="ZIP_ER_INCONS",X[X.ZIP_ER_REMOVE=22]="ZIP_ER_REMOVE",X[X.ZIP_ER_DELETED=23]="ZIP_ER_DELETED",X[X.ZIP_ER_ENCRNOTSUPP=24]="ZIP_ER_ENCRNOTSUPP",X[X.ZIP_ER_RDONLY=25]="ZIP_ER_RDONLY",X[X.ZIP_ER_NOPASSWD=26]="ZIP_ER_NOPASSWD",X[X.ZIP_ER_WRONGPASSWD=27]="ZIP_ER_WRONGPASSWD",X[X.ZIP_ER_OPNOTSUPP=28]="ZIP_ER_OPNOTSUPP",X[X.ZIP_ER_INUSE=29]="ZIP_ER_INUSE",X[X.ZIP_ER_TELL=30]="ZIP_ER_TELL",X[X.ZIP_ER_COMPRESSED_DATA=31]="ZIP_ER_COMPRESSED_DATA",X))(upe||{}),fpe=t=>({get HEAPU8(){return t.HEAPU8},errors:upe,SEEK_SET:0,SEEK_CUR:1,SEEK_END:2,ZIP_CHECKCONS:4,ZIP_EXCL:2,ZIP_RDONLY:16,ZIP_FL_OVERWRITE:8192,ZIP_FL_COMPRESSED:4,ZIP_OPSYS_DOS:0,ZIP_OPSYS_AMIGA:1,ZIP_OPSYS_OPENVMS:2,ZIP_OPSYS_UNIX:3,ZIP_OPSYS_VM_CMS:4,ZIP_OPSYS_ATARI_ST:5,ZIP_OPSYS_OS_2:6,ZIP_OPSYS_MACINTOSH:7,ZIP_OPSYS_Z_SYSTEM:8,ZIP_OPSYS_CPM:9,ZIP_OPSYS_WINDOWS_NTFS:10,ZIP_OPSYS_MVS:11,ZIP_OPSYS_VSE:12,ZIP_OPSYS_ACORN_RISC:13,ZIP_OPSYS_VFAT:14,ZIP_OPSYS_ALTERNATE_MVS:15,ZIP_OPSYS_BEOS:16,ZIP_OPSYS_TANDEM:17,ZIP_OPSYS_OS_400:18,ZIP_OPSYS_OS_X:19,ZIP_CM_DEFAULT:-1,ZIP_CM_STORE:0,ZIP_CM_DEFLATE:8,uint08S:t._malloc(1),uint32S:t._malloc(4),malloc:t._malloc,free:t._free,getValue:t.getValue,openFromSource:t.cwrap("zip_open_from_source","number",["number","number","number"]),close:t.cwrap("zip_close","number",["number"]),discard:t.cwrap("zip_discard",null,["number"]),getError:t.cwrap("zip_get_error","number",["number"]),getName:t.cwrap("zip_get_name","string",["number","number","number"]),getNumEntries:t.cwrap("zip_get_num_entries","number",["number","number"]),delete:t.cwrap("zip_delete","number",["number","number"]),statIndex:t.cwrap("zip_stat_index","number",["number",...Up,"number","number"]),fopenIndex:t.cwrap("zip_fopen_index","number",["number",...Up,"number"]),fread:t.cwrap("zip_fread","number",["number","number","number","number"]),fclose:t.cwrap("zip_fclose","number",["number"]),dir:{add:t.cwrap("zip_dir_add","number",["number","string"])},file:{add:t.cwrap("zip_file_add","number",["number","string","number","number"]),getError:t.cwrap("zip_file_get_error","number",["number"]),getExternalAttributes:t.cwrap("zip_file_get_external_attributes","number",["number",...Up,"number","number","number"]),setExternalAttributes:t.cwrap("zip_file_set_external_attributes","number",["number",...Up,"number","number","number"]),setMtime:t.cwrap("zip_file_set_mtime","number",["number",...Up,"number","number"]),setCompression:t.cwrap("zip_set_file_compression","number",["number",...Up,"number","number"])},ext:{countSymlinks:t.cwrap("zip_ext_count_symlinks","number",["number"])},error:{initWithCode:t.cwrap("zip_error_init_with_code",null,["number","number"]),strerror:t.cwrap("zip_error_strerror","string",["number"])},name:{locate:t.cwrap("zip_name_locate","number",["number","string","number"])},source:{fromUnattachedBuffer:t.cwrap("zip_source_buffer_create","number",["number",...Up,"number","number"]),fromBuffer:t.cwrap("zip_source_buffer","number",["number","number",...Up,"number"]),free:t.cwrap("zip_source_free",null,["number"]),keep:t.cwrap("zip_source_keep",null,["number"]),open:t.cwrap("zip_source_open","number",["number"]),close:t.cwrap("zip_source_close","number",["number"]),seek:t.cwrap("zip_source_seek","number",["number",...Up,"number"]),tell:t.cwrap("zip_source_tell","number",["number"]),read:t.cwrap("zip_source_read","number",["number","number","number"]),error:t.cwrap("zip_source_error","number",["number"])},struct:{statS:t.cwrap("zipstruct_statS","number",[]),statSize:t.cwrap("zipstruct_stat_size","number",["number"]),statCompSize:t.cwrap("zipstruct_stat_comp_size","number",["number"]),statCompMethod:t.cwrap("zipstruct_stat_comp_method","number",["number"]),statMtime:t.cwrap("zipstruct_stat_mtime","number",["number"]),statCrc:t.cwrap("zipstruct_stat_crc","number",["number"]),errorS:t.cwrap("zipstruct_errorS","number",[]),errorCodeZip:t.cwrap("zipstruct_error_code_zip","number",["number"])}})});function Dj(t,e){let r=t.indexOf(e);if(r<=0)return null;let s=r;for(;r>=0&&(s=r+e.length,t[s]!==J.sep);){if(t[r-1]===J.sep)return null;r=t.indexOf(e,s)}return t.length>s&&t[s]!==J.sep?null:t.slice(0,s)}var $f,ppe=Ze(()=>{Dt();Dt();eA();$f=class t extends e0{static async openPromise(e,r){let s=new t(r);try{return await e(s)}finally{s.saveAndClose()}}constructor(e={}){let r=e.fileExtensions,s=e.readOnlyArchives,a=typeof r>"u"?f=>Dj(f,".zip"):f=>{for(let p of r){let h=Dj(f,p);if(h)return h}return null},n=(f,p)=>new As(p,{baseFs:f,readOnly:s,stats:f.statSync(p),customZipImplementation:e.customZipImplementation}),c=async(f,p)=>{let h={baseFs:f,readOnly:s,stats:await f.statPromise(p),customZipImplementation:e.customZipImplementation};return()=>new As(p,h)};super({...e,factorySync:n,factoryPromise:c,getMountPoint:a})}}});var Pj,BI,bj=Ze(()=>{Bj();Pj=class extends Error{constructor(e,r){super(e),this.name="Libzip Error",this.code=r}},BI=class{constructor(e){this.filesShouldBeCached=!0;let r="buffer"in e?e.buffer:e.baseFs.readFileSync(e.path);this.libzip=cv();let s=this.libzip.malloc(4);try{let c=0;e.readOnly&&(c|=this.libzip.ZIP_RDONLY);let f=this.allocateUnattachedSource(r);try{this.zip=this.libzip.openFromSource(f,c,s),this.lzSource=f}catch(p){throw this.libzip.source.free(f),p}if(this.zip===0){let p=this.libzip.struct.errorS();throw this.libzip.error.initWithCode(p,this.libzip.getValue(s,"i32")),this.makeLibzipError(p)}}finally{this.libzip.free(s)}let a=this.libzip.getNumEntries(this.zip,0),n=new Array(a);for(let c=0;c>>0,n=this.libzip.struct.statMtime(r)>>>0,c=this.libzip.struct.statCrc(r)>>>0;return{size:a,mtime:n,crc:c}}makeLibzipError(e){let r=this.libzip.struct.errorCodeZip(e),s=this.libzip.error.strerror(e),a=new Pj(s,this.libzip.errors[r]);if(r===this.libzip.errors.ZIP_ER_CHANGED)throw new Error(`Assertion failed: Unexpected libzip error: ${a.message}`);return a}setFileSource(e,r,s){let a=this.allocateSource(s);try{let n=this.libzip.file.add(this.zip,e,a,this.libzip.ZIP_FL_OVERWRITE);if(n===-1)throw this.makeLibzipError(this.libzip.getError(this.zip));if(r!==null&&this.libzip.file.setCompression(this.zip,n,0,r[0],r[1])===-1)throw this.makeLibzipError(this.libzip.getError(this.zip));return n}catch(n){throw this.libzip.source.free(a),n}}setMtime(e,r){if(this.libzip.file.setMtime(this.zip,e,0,r,0)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip))}getExternalAttributes(e){if(this.libzip.file.getExternalAttributes(this.zip,e,0,0,this.libzip.uint08S,this.libzip.uint32S)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip));let s=this.libzip.getValue(this.libzip.uint08S,"i8")>>>0,a=this.libzip.getValue(this.libzip.uint32S,"i32")>>>0;return[s,a]}setExternalAttributes(e,r,s){if(this.libzip.file.setExternalAttributes(this.zip,e,0,0,r,s)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip))}locate(e){return this.libzip.name.locate(this.zip,e,0)}getFileSource(e){let r=this.libzip.struct.statS();if(this.libzip.statIndex(this.zip,e,0,0,r)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip));let a=this.libzip.struct.statCompSize(r),n=this.libzip.struct.statCompMethod(r),c=this.libzip.malloc(a);try{let f=this.libzip.fopenIndex(this.zip,e,0,this.libzip.ZIP_FL_COMPRESSED);if(f===0)throw this.makeLibzipError(this.libzip.getError(this.zip));try{let p=this.libzip.fread(f,c,a,0);if(p===-1)throw this.makeLibzipError(this.libzip.file.getError(f));if(pa)throw new Error("Overread");let h=this.libzip.HEAPU8.subarray(c,c+a);return{data:Buffer.from(h),compressionMethod:n}}finally{this.libzip.fclose(f)}}finally{this.libzip.free(c)}}deleteEntry(e){if(this.libzip.delete(this.zip,e)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip))}addDirectory(e){let r=this.libzip.dir.add(this.zip,e);if(r===-1)throw this.makeLibzipError(this.libzip.getError(this.zip));return r}getBufferAndClose(){try{if(this.libzip.source.keep(this.lzSource),this.libzip.close(this.zip)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip));if(this.libzip.source.open(this.lzSource)===-1)throw this.makeLibzipError(this.libzip.source.error(this.lzSource));if(this.libzip.source.seek(this.lzSource,0,0,this.libzip.SEEK_END)===-1)throw this.makeLibzipError(this.libzip.source.error(this.lzSource));let e=this.libzip.source.tell(this.lzSource);if(e===-1)throw this.makeLibzipError(this.libzip.source.error(this.lzSource));if(this.libzip.source.seek(this.lzSource,0,0,this.libzip.SEEK_SET)===-1)throw this.makeLibzipError(this.libzip.source.error(this.lzSource));let r=this.libzip.malloc(e);if(!r)throw new Error("Couldn't allocate enough memory");try{let s=this.libzip.source.read(this.lzSource,r,e);if(s===-1)throw this.makeLibzipError(this.libzip.source.error(this.lzSource));if(se)throw new Error("Overread");let a=Buffer.from(this.libzip.HEAPU8.subarray(r,r+e));return process.env.YARN_IS_TEST_ENV&&process.env.YARN_ZIP_DATA_EPILOGUE&&(a=Buffer.concat([a,Buffer.from(process.env.YARN_ZIP_DATA_EPILOGUE)])),a}finally{this.libzip.free(r)}}finally{this.libzip.source.close(this.lzSource),this.libzip.source.free(this.lzSource)}}allocateBuffer(e){Buffer.isBuffer(e)||(e=Buffer.from(e));let r=this.libzip.malloc(e.byteLength);if(!r)throw new Error("Couldn't allocate enough memory");return new Uint8Array(this.libzip.HEAPU8.buffer,r,e.byteLength).set(e),{buffer:r,byteLength:e.byteLength}}allocateUnattachedSource(e){let r=this.libzip.struct.errorS(),{buffer:s,byteLength:a}=this.allocateBuffer(e),n=this.libzip.source.fromUnattachedBuffer(s,a,0,1,r);if(n===0)throw this.libzip.free(r),this.makeLibzipError(r);return n}allocateSource(e){let{buffer:r,byteLength:s}=this.allocateBuffer(e),a=this.libzip.source.fromBuffer(this.zip,r,s,0,1);if(a===0)throw this.libzip.free(r),this.makeLibzipError(this.libzip.getError(this.zip));return a}discard(){this.libzip.discard(this.zip)}}});function jnt(t){if(typeof t=="string"&&String(+t)===t)return+t;if(typeof t=="number"&&Number.isFinite(t))return t<0?Date.now()/1e3:t;if(hpe.types.isDate(t))return t.getTime()/1e3;throw new Error("Invalid time")}function wR(){return Buffer.from([80,75,5,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0])}var xa,xj,hpe,kj,lm,Qj,Rj,gpe,As,BR=Ze(()=>{Dt();Dt();Dt();Dt();Dt();Dt();xa=Ie("fs"),xj=Ie("stream"),hpe=Ie("util"),kj=ut(Ie("zlib"));bj();lm=3,Qj=0,Rj=8,gpe="mixed";As=class extends Uf{constructor(r,s={}){super();this.listings=new Map;this.entries=new Map;this.fileSources=new Map;this.fds=new Map;this.nextFd=0;this.ready=!1;this.readOnly=!1;s.readOnly&&(this.readOnly=!0);let a=s;this.level=typeof a.level<"u"?a.level:gpe;let n=s.customZipImplementation??BI;if(typeof r=="string"){let{baseFs:f=new Yn}=a;this.baseFs=f,this.path=r}else this.path=null,this.baseFs=null;if(s.stats)this.stats=s.stats;else if(typeof r=="string")try{this.stats=this.baseFs.statSync(r)}catch(f){if(f.code==="ENOENT"&&a.create)this.stats=$a.makeDefaultStats();else throw f}else this.stats=$a.makeDefaultStats();typeof r=="string"?s.create?this.zipImpl=new n({buffer:wR(),readOnly:this.readOnly}):this.zipImpl=new n({path:r,baseFs:this.baseFs,readOnly:this.readOnly,size:this.stats.size}):this.zipImpl=new n({buffer:r??wR(),readOnly:this.readOnly}),this.listings.set(vt.root,new Set);let c=this.zipImpl.getListings();for(let f=0;f{this.closeSync(f)}})}async readPromise(r,s,a,n,c){return this.readSync(r,s,a,n,c)}readSync(r,s,a=0,n=s.byteLength,c=-1){let f=this.fds.get(r);if(typeof f>"u")throw or.EBADF("read");let p=c===-1||c===null?f.cursor:c,h=this.readFileSync(f.p);h.copy(s,a,p,p+n);let E=Math.max(0,Math.min(h.length-p,n));return(c===-1||c===null)&&(f.cursor+=E),E}async writePromise(r,s,a,n,c){return typeof s=="string"?this.writeSync(r,s,c):this.writeSync(r,s,a,n,c)}writeSync(r,s,a,n,c){throw typeof this.fds.get(r)>"u"?or.EBADF("read"):new Error("Unimplemented")}async closePromise(r){return this.closeSync(r)}closeSync(r){if(typeof this.fds.get(r)>"u")throw or.EBADF("read");this.fds.delete(r)}createReadStream(r,{encoding:s}={}){if(r===null)throw new Error("Unimplemented");let a=this.openSync(r,"r"),n=Object.assign(new xj.PassThrough({emitClose:!0,autoDestroy:!0,destroy:(f,p)=>{clearImmediate(c),this.closeSync(a),p(f)}}),{close(){n.destroy()},bytesRead:0,path:r,pending:!1}),c=setImmediate(async()=>{try{let f=await this.readFilePromise(r,s);n.bytesRead=f.length,n.end(f)}catch(f){n.destroy(f)}});return n}createWriteStream(r,{encoding:s}={}){if(this.readOnly)throw or.EROFS(`open '${r}'`);if(r===null)throw new Error("Unimplemented");let a=[],n=this.openSync(r,"w"),c=Object.assign(new xj.PassThrough({autoDestroy:!0,emitClose:!0,destroy:(f,p)=>{try{f?p(f):(this.writeFileSync(r,Buffer.concat(a),s),p(null))}catch(h){p(h)}finally{this.closeSync(n)}}}),{close(){c.destroy()},bytesWritten:0,path:r,pending:!1});return c.on("data",f=>{let p=Buffer.from(f);c.bytesWritten+=p.length,a.push(p)}),c}async realpathPromise(r){return this.realpathSync(r)}realpathSync(r){let s=this.resolveFilename(`lstat '${r}'`,r);if(!this.entries.has(s)&&!this.listings.has(s))throw or.ENOENT(`lstat '${r}'`);return s}async existsPromise(r){return this.existsSync(r)}existsSync(r){if(!this.ready)throw or.EBUSY(`archive closed, existsSync '${r}'`);if(this.symlinkCount===0){let a=J.resolve(vt.root,r);return this.entries.has(a)||this.listings.has(a)}let s;try{s=this.resolveFilename(`stat '${r}'`,r,void 0,!1)}catch{return!1}return s===void 0?!1:this.entries.has(s)||this.listings.has(s)}async accessPromise(r,s){return this.accessSync(r,s)}accessSync(r,s=xa.constants.F_OK){let a=this.resolveFilename(`access '${r}'`,r);if(!this.entries.has(a)&&!this.listings.has(a))throw or.ENOENT(`access '${r}'`);if(this.readOnly&&s&xa.constants.W_OK)throw or.EROFS(`access '${r}'`)}async statPromise(r,s={bigint:!1}){return s.bigint?this.statSync(r,{bigint:!0}):this.statSync(r)}statSync(r,s={bigint:!1,throwIfNoEntry:!0}){let a=this.resolveFilename(`stat '${r}'`,r,void 0,s.throwIfNoEntry);if(a!==void 0){if(!this.entries.has(a)&&!this.listings.has(a)){if(s.throwIfNoEntry===!1)return;throw or.ENOENT(`stat '${r}'`)}if(r[r.length-1]==="/"&&!this.listings.has(a))throw or.ENOTDIR(`stat '${r}'`);return this.statImpl(`stat '${r}'`,a,s)}}async fstatPromise(r,s){return this.fstatSync(r,s)}fstatSync(r,s){let a=this.fds.get(r);if(typeof a>"u")throw or.EBADF("fstatSync");let{p:n}=a,c=this.resolveFilename(`stat '${n}'`,n);if(!this.entries.has(c)&&!this.listings.has(c))throw or.ENOENT(`stat '${n}'`);if(n[n.length-1]==="/"&&!this.listings.has(c))throw or.ENOTDIR(`stat '${n}'`);return this.statImpl(`fstat '${n}'`,c,s)}async lstatPromise(r,s={bigint:!1}){return s.bigint?this.lstatSync(r,{bigint:!0}):this.lstatSync(r)}lstatSync(r,s={bigint:!1,throwIfNoEntry:!0}){let a=this.resolveFilename(`lstat '${r}'`,r,!1,s.throwIfNoEntry);if(a!==void 0){if(!this.entries.has(a)&&!this.listings.has(a)){if(s.throwIfNoEntry===!1)return;throw or.ENOENT(`lstat '${r}'`)}if(r[r.length-1]==="/"&&!this.listings.has(a))throw or.ENOTDIR(`lstat '${r}'`);return this.statImpl(`lstat '${r}'`,a,s)}}statImpl(r,s,a={}){let n=this.entries.get(s);if(typeof n<"u"){let c=this.zipImpl.stat(n),f=c.crc,p=c.size,h=c.mtime*1e3,E=this.stats.uid,C=this.stats.gid,S=512,b=Math.ceil(c.size/S),I=h,T=h,N=h,U=new Date(I),W=new Date(T),ee=new Date(N),ie=new Date(h),ue=this.listings.has(s)?xa.constants.S_IFDIR:this.isSymbolicLink(n)?xa.constants.S_IFLNK:xa.constants.S_IFREG,le=ue===xa.constants.S_IFDIR?493:420,me=ue|this.getUnixMode(n,le)&511,pe=Object.assign(new $a.StatEntry,{uid:E,gid:C,size:p,blksize:S,blocks:b,atime:U,birthtime:W,ctime:ee,mtime:ie,atimeMs:I,birthtimeMs:T,ctimeMs:N,mtimeMs:h,mode:me,crc:f});return a.bigint===!0?$a.convertToBigIntStats(pe):pe}if(this.listings.has(s)){let c=this.stats.uid,f=this.stats.gid,p=0,h=512,E=0,C=this.stats.mtimeMs,S=this.stats.mtimeMs,b=this.stats.mtimeMs,I=this.stats.mtimeMs,T=new Date(C),N=new Date(S),U=new Date(b),W=new Date(I),ee=xa.constants.S_IFDIR|493,ue=Object.assign(new $a.StatEntry,{uid:c,gid:f,size:p,blksize:h,blocks:E,atime:T,birthtime:N,ctime:U,mtime:W,atimeMs:C,birthtimeMs:S,ctimeMs:b,mtimeMs:I,mode:ee,crc:0});return a.bigint===!0?$a.convertToBigIntStats(ue):ue}throw new Error("Unreachable")}getUnixMode(r,s){let[a,n]=this.zipImpl.getExternalAttributes(r);return a!==lm?s:n>>>16}registerListing(r){let s=this.listings.get(r);if(s)return s;this.registerListing(J.dirname(r)).add(J.basename(r));let n=new Set;return this.listings.set(r,n),n}registerEntry(r,s){this.registerListing(J.dirname(r)).add(J.basename(r)),this.entries.set(r,s)}unregisterListing(r){this.listings.delete(r),this.listings.get(J.dirname(r))?.delete(J.basename(r))}unregisterEntry(r){this.unregisterListing(r);let s=this.entries.get(r);this.entries.delete(r),!(typeof s>"u")&&(this.fileSources.delete(s),this.isSymbolicLink(s)&&this.symlinkCount--)}deleteEntry(r,s){this.unregisterEntry(r),this.zipImpl.deleteEntry(s)}resolveFilename(r,s,a=!0,n=!0){if(!this.ready)throw or.EBUSY(`archive closed, ${r}`);let c=J.resolve(vt.root,s);if(c==="/")return vt.root;let f=this.entries.get(c);if(a&&f!==void 0)if(this.symlinkCount!==0&&this.isSymbolicLink(f)){let p=this.getFileSource(f).toString();return this.resolveFilename(r,J.resolve(J.dirname(c),p),!0,n)}else return c;for(;;){let p=this.resolveFilename(r,J.dirname(c),!0,n);if(p===void 0)return p;let h=this.listings.has(p),E=this.entries.has(p);if(!h&&!E){if(n===!1)return;throw or.ENOENT(r)}if(!h)throw or.ENOTDIR(r);if(c=J.resolve(p,J.basename(c)),!a||this.symlinkCount===0)break;let C=this.zipImpl.locate(c.slice(1));if(C===-1)break;if(this.isSymbolicLink(C)){let S=this.getFileSource(C).toString();c=J.resolve(J.dirname(c),S)}else break}return c}setFileSource(r,s){let a=Buffer.isBuffer(s)?s:Buffer.from(s),n=J.relative(vt.root,r),c=null;this.level!=="mixed"&&(c=[this.level===0?Qj:Rj,this.level]);let f=this.zipImpl.setFileSource(n,c,a);return this.fileSources.set(f,a),f}isSymbolicLink(r){if(this.symlinkCount===0)return!1;let[s,a]=this.zipImpl.getExternalAttributes(r);return s!==lm?!1:(a>>>16&xa.constants.S_IFMT)===xa.constants.S_IFLNK}getFileSource(r,s={asyncDecompress:!1}){let a=this.fileSources.get(r);if(typeof a<"u")return a;let{data:n,compressionMethod:c}=this.zipImpl.getFileSource(r);if(c===Qj)return this.zipImpl.filesShouldBeCached&&this.fileSources.set(r,n),n;if(c===Rj){if(s.asyncDecompress)return new Promise((f,p)=>{kj.default.inflateRaw(n,(h,E)=>{h?p(h):(this.zipImpl.filesShouldBeCached&&this.fileSources.set(r,E),f(E))})});{let f=kj.default.inflateRawSync(n);return this.zipImpl.filesShouldBeCached&&this.fileSources.set(r,f),f}}else throw new Error(`Unsupported compression method: ${c}`)}async fchmodPromise(r,s){return this.chmodPromise(this.fdToPath(r,"fchmod"),s)}fchmodSync(r,s){return this.chmodSync(this.fdToPath(r,"fchmodSync"),s)}async chmodPromise(r,s){return this.chmodSync(r,s)}chmodSync(r,s){if(this.readOnly)throw or.EROFS(`chmod '${r}'`);s&=493;let a=this.resolveFilename(`chmod '${r}'`,r,!1),n=this.entries.get(a);if(typeof n>"u")throw new Error(`Assertion failed: The entry should have been registered (${a})`);let f=this.getUnixMode(n,xa.constants.S_IFREG|0)&-512|s;this.zipImpl.setExternalAttributes(n,lm,f<<16)}async fchownPromise(r,s,a){return this.chownPromise(this.fdToPath(r,"fchown"),s,a)}fchownSync(r,s,a){return this.chownSync(this.fdToPath(r,"fchownSync"),s,a)}async chownPromise(r,s,a){return this.chownSync(r,s,a)}chownSync(r,s,a){throw new Error("Unimplemented")}async renamePromise(r,s){return this.renameSync(r,s)}renameSync(r,s){throw new Error("Unimplemented")}async copyFilePromise(r,s,a){let{indexSource:n,indexDest:c,resolvedDestP:f}=this.prepareCopyFile(r,s,a),p=await this.getFileSource(n,{asyncDecompress:!0}),h=this.setFileSource(f,p);h!==c&&this.registerEntry(f,h)}copyFileSync(r,s,a=0){let{indexSource:n,indexDest:c,resolvedDestP:f}=this.prepareCopyFile(r,s,a),p=this.getFileSource(n),h=this.setFileSource(f,p);h!==c&&this.registerEntry(f,h)}prepareCopyFile(r,s,a=0){if(this.readOnly)throw or.EROFS(`copyfile '${r} -> '${s}'`);if(a&xa.constants.COPYFILE_FICLONE_FORCE)throw or.ENOSYS("unsupported clone operation",`copyfile '${r}' -> ${s}'`);let n=this.resolveFilename(`copyfile '${r} -> ${s}'`,r),c=this.entries.get(n);if(typeof c>"u")throw or.EINVAL(`copyfile '${r}' -> '${s}'`);let f=this.resolveFilename(`copyfile '${r}' -> ${s}'`,s),p=this.entries.get(f);if(a&(xa.constants.COPYFILE_EXCL|xa.constants.COPYFILE_FICLONE_FORCE)&&typeof p<"u")throw or.EEXIST(`copyfile '${r}' -> '${s}'`);return{indexSource:c,resolvedDestP:f,indexDest:p}}async appendFilePromise(r,s,a){if(this.readOnly)throw or.EROFS(`open '${r}'`);return typeof a>"u"?a={flag:"a"}:typeof a=="string"?a={flag:"a",encoding:a}:typeof a.flag>"u"&&(a={flag:"a",...a}),this.writeFilePromise(r,s,a)}appendFileSync(r,s,a={}){if(this.readOnly)throw or.EROFS(`open '${r}'`);return typeof a>"u"?a={flag:"a"}:typeof a=="string"?a={flag:"a",encoding:a}:typeof a.flag>"u"&&(a={flag:"a",...a}),this.writeFileSync(r,s,a)}fdToPath(r,s){let a=this.fds.get(r)?.p;if(typeof a>"u")throw or.EBADF(s);return a}async writeFilePromise(r,s,a){let{encoding:n,mode:c,index:f,resolvedP:p}=this.prepareWriteFile(r,a);f!==void 0&&typeof a=="object"&&a.flag&&a.flag.includes("a")&&(s=Buffer.concat([await this.getFileSource(f,{asyncDecompress:!0}),Buffer.from(s)])),n!==null&&(s=s.toString(n));let h=this.setFileSource(p,s);h!==f&&this.registerEntry(p,h),c!==null&&await this.chmodPromise(p,c)}writeFileSync(r,s,a){let{encoding:n,mode:c,index:f,resolvedP:p}=this.prepareWriteFile(r,a);f!==void 0&&typeof a=="object"&&a.flag&&a.flag.includes("a")&&(s=Buffer.concat([this.getFileSource(f),Buffer.from(s)])),n!==null&&(s=s.toString(n));let h=this.setFileSource(p,s);h!==f&&this.registerEntry(p,h),c!==null&&this.chmodSync(p,c)}prepareWriteFile(r,s){if(typeof r=="number"&&(r=this.fdToPath(r,"read")),this.readOnly)throw or.EROFS(`open '${r}'`);let a=this.resolveFilename(`open '${r}'`,r);if(this.listings.has(a))throw or.EISDIR(`open '${r}'`);let n=null,c=null;typeof s=="string"?n=s:typeof s=="object"&&({encoding:n=null,mode:c=null}=s);let f=this.entries.get(a);return{encoding:n,mode:c,resolvedP:a,index:f}}async unlinkPromise(r){return this.unlinkSync(r)}unlinkSync(r){if(this.readOnly)throw or.EROFS(`unlink '${r}'`);let s=this.resolveFilename(`unlink '${r}'`,r);if(this.listings.has(s))throw or.EISDIR(`unlink '${r}'`);let a=this.entries.get(s);if(typeof a>"u")throw or.EINVAL(`unlink '${r}'`);this.deleteEntry(s,a)}async utimesPromise(r,s,a){return this.utimesSync(r,s,a)}utimesSync(r,s,a){if(this.readOnly)throw or.EROFS(`utimes '${r}'`);let n=this.resolveFilename(`utimes '${r}'`,r);this.utimesImpl(n,a)}async lutimesPromise(r,s,a){return this.lutimesSync(r,s,a)}lutimesSync(r,s,a){if(this.readOnly)throw or.EROFS(`lutimes '${r}'`);let n=this.resolveFilename(`utimes '${r}'`,r,!1);this.utimesImpl(n,a)}utimesImpl(r,s){this.listings.has(r)&&(this.entries.has(r)||this.hydrateDirectory(r));let a=this.entries.get(r);if(a===void 0)throw new Error("Unreachable");this.zipImpl.setMtime(a,jnt(s))}async mkdirPromise(r,s){return this.mkdirSync(r,s)}mkdirSync(r,{mode:s=493,recursive:a=!1}={}){if(a)return this.mkdirpSync(r,{chmod:s});if(this.readOnly)throw or.EROFS(`mkdir '${r}'`);let n=this.resolveFilename(`mkdir '${r}'`,r);if(this.entries.has(n)||this.listings.has(n))throw or.EEXIST(`mkdir '${r}'`);this.hydrateDirectory(n),this.chmodSync(n,s)}async rmdirPromise(r,s){return this.rmdirSync(r,s)}rmdirSync(r,{recursive:s=!1}={}){if(this.readOnly)throw or.EROFS(`rmdir '${r}'`);if(s){this.removeSync(r);return}let a=this.resolveFilename(`rmdir '${r}'`,r),n=this.listings.get(a);if(!n)throw or.ENOTDIR(`rmdir '${r}'`);if(n.size>0)throw or.ENOTEMPTY(`rmdir '${r}'`);let c=this.entries.get(a);if(typeof c>"u")throw or.EINVAL(`rmdir '${r}'`);this.deleteEntry(r,c)}async rmPromise(r,s){return this.rmSync(r,s)}rmSync(r,{recursive:s=!1}={}){if(this.readOnly)throw or.EROFS(`rm '${r}'`);if(s){this.removeSync(r);return}let a=this.resolveFilename(`rm '${r}'`,r),n=this.listings.get(a);if(!n)throw or.ENOTDIR(`rm '${r}'`);if(n.size>0)throw or.ENOTEMPTY(`rm '${r}'`);let c=this.entries.get(a);if(typeof c>"u")throw or.EINVAL(`rm '${r}'`);this.deleteEntry(r,c)}hydrateDirectory(r){let s=this.zipImpl.addDirectory(J.relative(vt.root,r));return this.registerListing(r),this.registerEntry(r,s),s}async linkPromise(r,s){return this.linkSync(r,s)}linkSync(r,s){throw or.EOPNOTSUPP(`link '${r}' -> '${s}'`)}async symlinkPromise(r,s){return this.symlinkSync(r,s)}symlinkSync(r,s){if(this.readOnly)throw or.EROFS(`symlink '${r}' -> '${s}'`);let a=this.resolveFilename(`symlink '${r}' -> '${s}'`,s);if(this.listings.has(a))throw or.EISDIR(`symlink '${r}' -> '${s}'`);if(this.entries.has(a))throw or.EEXIST(`symlink '${r}' -> '${s}'`);let n=this.setFileSource(a,r);this.registerEntry(a,n),this.zipImpl.setExternalAttributes(n,lm,(xa.constants.S_IFLNK|511)<<16),this.symlinkCount+=1}async readFilePromise(r,s){typeof s=="object"&&(s=s?s.encoding:void 0);let a=await this.readFileBuffer(r,{asyncDecompress:!0});return s?a.toString(s):a}readFileSync(r,s){typeof s=="object"&&(s=s?s.encoding:void 0);let a=this.readFileBuffer(r);return s?a.toString(s):a}readFileBuffer(r,s={asyncDecompress:!1}){typeof r=="number"&&(r=this.fdToPath(r,"read"));let a=this.resolveFilename(`open '${r}'`,r);if(!this.entries.has(a)&&!this.listings.has(a))throw or.ENOENT(`open '${r}'`);if(r[r.length-1]==="/"&&!this.listings.has(a))throw or.ENOTDIR(`open '${r}'`);if(this.listings.has(a))throw or.EISDIR("read");let n=this.entries.get(a);if(n===void 0)throw new Error("Unreachable");return this.getFileSource(n,s)}async readdirPromise(r,s){return this.readdirSync(r,s)}readdirSync(r,s){let a=this.resolveFilename(`scandir '${r}'`,r);if(!this.entries.has(a)&&!this.listings.has(a))throw or.ENOENT(`scandir '${r}'`);let n=this.listings.get(a);if(!n)throw or.ENOTDIR(`scandir '${r}'`);if(s?.recursive)if(s?.withFileTypes){let c=Array.from(n,f=>Object.assign(this.statImpl("lstat",J.join(r,f)),{name:f,path:vt.dot,parentPath:vt.dot}));for(let f of c){if(!f.isDirectory())continue;let p=J.join(f.path,f.name),h=this.listings.get(J.join(a,p));for(let E of h)c.push(Object.assign(this.statImpl("lstat",J.join(r,p,E)),{name:E,path:p,parentPath:p}))}return c}else{let c=[...n];for(let f of c){let p=this.listings.get(J.join(a,f));if(!(typeof p>"u"))for(let h of p)c.push(J.join(f,h))}return c}else return s?.withFileTypes?Array.from(n,c=>Object.assign(this.statImpl("lstat",J.join(r,c)),{name:c,path:void 0,parentPath:void 0})):[...n]}async readlinkPromise(r){let s=this.prepareReadlink(r);return(await this.getFileSource(s,{asyncDecompress:!0})).toString()}readlinkSync(r){let s=this.prepareReadlink(r);return this.getFileSource(s).toString()}prepareReadlink(r){let s=this.resolveFilename(`readlink '${r}'`,r,!1);if(!this.entries.has(s)&&!this.listings.has(s))throw or.ENOENT(`readlink '${r}'`);if(r[r.length-1]==="/"&&!this.listings.has(s))throw or.ENOTDIR(`open '${r}'`);if(this.listings.has(s))throw or.EINVAL(`readlink '${r}'`);let a=this.entries.get(s);if(a===void 0)throw new Error("Unreachable");if(!this.isSymbolicLink(a))throw or.EINVAL(`readlink '${r}'`);return a}async truncatePromise(r,s=0){let a=this.resolveFilename(`open '${r}'`,r),n=this.entries.get(a);if(typeof n>"u")throw or.EINVAL(`open '${r}'`);let c=await this.getFileSource(n,{asyncDecompress:!0}),f=Buffer.alloc(s,0);return c.copy(f),await this.writeFilePromise(r,f)}truncateSync(r,s=0){let a=this.resolveFilename(`open '${r}'`,r),n=this.entries.get(a);if(typeof n>"u")throw or.EINVAL(`open '${r}'`);let c=this.getFileSource(n),f=Buffer.alloc(s,0);return c.copy(f),this.writeFileSync(r,f)}async ftruncatePromise(r,s){return this.truncatePromise(this.fdToPath(r,"ftruncate"),s)}ftruncateSync(r,s){return this.truncateSync(this.fdToPath(r,"ftruncateSync"),s)}watch(r,s,a){let n;switch(typeof s){case"function":case"string":case"undefined":n=!0;break;default:({persistent:n=!0}=s);break}if(!n)return{on:()=>{},close:()=>{}};let c=setInterval(()=>{},24*60*60*1e3);return{on:()=>{},close:()=>{clearInterval(c)}}}watchFile(r,s,a){let n=J.resolve(vt.root,r);return sE(this,n,s,a)}unwatchFile(r,s){let a=J.resolve(vt.root,r);return md(this,a,s)}}});function mpe(t,e,r=Buffer.alloc(0),s){let a=new As(r),n=C=>C===e||C.startsWith(`${e}/`)?C.slice(0,e.length):null,c=async(C,S)=>()=>a,f=(C,S)=>a,p={...t},h=new Yn(p),E=new e0({baseFs:h,getMountPoint:n,factoryPromise:c,factorySync:f,magicByte:21,maxAge:1/0,typeCheck:s?.typeCheck});return U2(dpe.default,new t0(E)),a}var dpe,ype=Ze(()=>{Dt();dpe=ut(Ie("fs"));BR()});var Epe=Ze(()=>{ppe();BR();ype()});var Tj,uv,vR,Ipe=Ze(()=>{Dt();BR();Tj={CENTRAL_DIRECTORY:33639248,END_OF_CENTRAL_DIRECTORY:101010256},uv=22,vR=class t{constructor(e){this.filesShouldBeCached=!1;if("buffer"in e)throw new Error("Buffer based zip archives are not supported");if(!e.readOnly)throw new Error("Writable zip archives are not supported");this.baseFs=e.baseFs,this.fd=this.baseFs.openSync(e.path,"r");try{this.entries=t.readZipSync(this.fd,this.baseFs,e.size)}catch(r){throw this.baseFs.closeSync(this.fd),this.fd="closed",r}}static readZipSync(e,r,s){if(s=0;N--)if(n.readUInt32LE(N)===Tj.END_OF_CENTRAL_DIRECTORY){a=N;break}if(a===-1)throw new Error("Not a zip archive")}let c=n.readUInt16LE(a+10),f=n.readUInt32LE(a+12),p=n.readUInt32LE(a+16),h=n.readUInt16LE(a+20);if(a+h+uv>n.length)throw new Error("Zip archive inconsistent");if(c==65535||f==4294967295||p==4294967295)throw new Error("Zip 64 is not supported");if(f>s)throw new Error("Zip archive inconsistent");if(c>f/46)throw new Error("Zip archive inconsistent");let E=Buffer.alloc(f);if(r.readSync(e,E,0,E.length,p)!==E.length)throw new Error("Zip archive inconsistent");let C=[],S=0,b=0,I=0;for(;bE.length)throw new Error("Zip archive inconsistent");if(E.readUInt32LE(S)!==Tj.CENTRAL_DIRECTORY)throw new Error("Zip archive inconsistent");let N=E.readUInt16LE(S+4)>>>8;if(E.readUInt16LE(S+8)&1)throw new Error("Encrypted zip files are not supported");let W=E.readUInt16LE(S+10),ee=E.readUInt32LE(S+16),ie=E.readUInt16LE(S+28),ue=E.readUInt16LE(S+30),le=E.readUInt16LE(S+32),me=E.readUInt32LE(S+42),pe=E.toString("utf8",S+46,S+46+ie).replaceAll("\0"," ");if(pe.includes("\0"))throw new Error("Invalid ZIP file");let Be=E.readUInt32LE(S+20),Ce=E.readUInt32LE(S+38);C.push({name:pe,os:N,mtime:fi.SAFE_TIME,crc:ee,compressionMethod:W,isSymbolicLink:N===lm&&(Ce>>>16&fi.S_IFMT)===fi.S_IFLNK,size:E.readUInt32LE(S+24),compressedSize:Be,externalAttributes:Ce,localHeaderOffset:me}),I+=Be,b+=1,S+=46+ie+ue+le}if(I>s)throw new Error("Zip archive inconsistent");if(S!==E.length)throw new Error("Zip archive inconsistent");return C}getExternalAttributes(e){let r=this.entries[e];return[r.os,r.externalAttributes]}getListings(){return this.entries.map(e=>e.name)}getSymlinkCount(){let e=0;for(let r of this.entries)r.isSymbolicLink&&(e+=1);return e}stat(e){let r=this.entries[e];return{crc:r.crc,mtime:r.mtime,size:r.size}}locate(e){for(let r=0;rgpe,DEFLATE:()=>Rj,JsZipImpl:()=>vR,LibZipImpl:()=>BI,STORE:()=>Qj,ZIP_UNIX:()=>lm,ZipFS:()=>As,ZipOpenFS:()=>$f,getArchivePart:()=>Dj,getLibzipPromise:()=>qnt,getLibzipSync:()=>Gnt,makeEmptyArchive:()=>wR,mountMemoryDrive:()=>mpe});function Gnt(){return cv()}async function qnt(){return cv()}var Cpe,eA=Ze(()=>{Bj();Cpe=ut(cpe());Ape();Epe();Ipe();bj();lpe(()=>{let t=(0,Cpe.default)();return fpe(t)})});var Av,wpe=Ze(()=>{Dt();Yt();pv();Av=class extends ot{constructor(){super(...arguments);this.cwd=ge.String("--cwd",process.cwd(),{description:"The directory to run the command in"});this.commandName=ge.String();this.args=ge.Proxy()}static{this.usage={description:"run a command using yarn's portable shell",details:` This command will run a command using Yarn's portable shell. Make sure to escape glob patterns, redirections, and other features that might be expanded by your own shell. Note: To escape something from Yarn's shell, you might have to escape it twice, the first time from your own shell. Note: Don't use this command in Yarn scripts, as Yarn's shell is automatically used. For a list of features, visit: https://github.com/yarnpkg/berry/blob/master/packages/yarnpkg-shell/README.md. `,examples:[["Run a simple command","$0 echo Hello"],["Run a command with a glob pattern","$0 echo '*.js'"],["Run a command with a redirection","$0 echo Hello World '>' hello.txt"],["Run a command with an escaped glob pattern (The double escape is needed in Unix shells)",`$0 echo '"*.js"'`],["Run a command with a variable (Double quotes are needed in Unix shells, to prevent them from expanding the variable)",'$0 "GREETING=Hello echo $GREETING World"']]}}async execute(){let r=this.args.length>0?`${this.commandName} ${this.args.join(" ")}`:this.commandName;return await vI(r,[],{cwd:fe.toPortablePath(this.cwd),stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr})}}});var Vl,Bpe=Ze(()=>{Vl=class extends Error{constructor(e){super(e),this.name="ShellError"}}});var PR={};Vt(PR,{fastGlobOptions:()=>Dpe,isBraceExpansion:()=>Fj,isGlobPattern:()=>Wnt,match:()=>Ynt,micromatchOptions:()=>DR});function Wnt(t){if(!SR.default.scan(t,DR).isGlob)return!1;try{SR.default.parse(t,DR)}catch{return!1}return!0}function Ynt(t,{cwd:e,baseFs:r}){return(0,vpe.default)(t,{...Dpe,cwd:fe.fromPortablePath(e),fs:ax(Spe.default,new t0(r))})}function Fj(t){return SR.default.scan(t,DR).isBrace}var vpe,Spe,SR,DR,Dpe,Ppe=Ze(()=>{Dt();vpe=ut(wQ()),Spe=ut(Ie("fs")),SR=ut(Go()),DR={strictBrackets:!0},Dpe={onlyDirectories:!1,onlyFiles:!1}});function Nj(){}function Oj(){for(let t of cm)t.kill()}function Qpe(t,e,r,s){return a=>{let n=a[0]instanceof tA.Transform?"pipe":a[0],c=a[1]instanceof tA.Transform?"pipe":a[1],f=a[2]instanceof tA.Transform?"pipe":a[2],p=(0,xpe.default)(t,e,{...s,stdio:[n,c,f]});return cm.add(p),cm.size===1&&(process.on("SIGINT",Nj),process.on("SIGTERM",Oj)),a[0]instanceof tA.Transform&&a[0].pipe(p.stdin),a[1]instanceof tA.Transform&&p.stdout.pipe(a[1],{end:!1}),a[2]instanceof tA.Transform&&p.stderr.pipe(a[2],{end:!1}),{stdin:p.stdin,promise:new Promise(h=>{p.on("error",E=>{switch(cm.delete(p),cm.size===0&&(process.off("SIGINT",Nj),process.off("SIGTERM",Oj)),E.code){case"ENOENT":a[2].write(`command not found: ${t} `),h(127);break;case"EACCES":a[2].write(`permission denied: ${t} `),h(128);break;default:a[2].write(`uncaught error: ${E.message} `),h(1);break}}),p.on("close",E=>{cm.delete(p),cm.size===0&&(process.off("SIGINT",Nj),process.off("SIGTERM",Oj)),h(E!==null?E:129)})})}}}function Rpe(t){return e=>{let r=e[0]==="pipe"?new tA.PassThrough:e[0];return{stdin:r,promise:Promise.resolve().then(()=>t({stdin:r,stdout:e[1],stderr:e[2]}))}}}function bR(t,e){return Mj.start(t,e)}function bpe(t,e=null){let r=new tA.PassThrough,s=new kpe.StringDecoder,a="";return r.on("data",n=>{let c=s.write(n),f;do if(f=c.indexOf(` `),f!==-1){let p=a+c.substring(0,f);c=c.substring(f+1),a="",t(e!==null?`${e} ${p}`:p)}while(f!==-1);a+=c}),r.on("end",()=>{let n=s.end();n!==""&&t(e!==null?`${e} ${n}`:n)}),r}function Tpe(t,{prefix:e}){return{stdout:bpe(r=>t.stdout.write(`${r} `),t.stdout.isTTY?e:null),stderr:bpe(r=>t.stderr.write(`${r} `),t.stderr.isTTY?e:null)}}var xpe,tA,kpe,cm,Oc,Lj,Mj,Uj=Ze(()=>{xpe=ut(UU()),tA=Ie("stream"),kpe=Ie("string_decoder"),cm=new Set;Oc=class{constructor(e){this.stream=e}close(){}get(){return this.stream}},Lj=class{constructor(){this.stream=null}close(){if(this.stream===null)throw new Error("Assertion failed: No stream attached");this.stream.end()}attach(e){this.stream=e}get(){if(this.stream===null)throw new Error("Assertion failed: No stream attached");return this.stream}},Mj=class t{constructor(e,r){this.stdin=null;this.stdout=null;this.stderr=null;this.pipe=null;this.ancestor=e,this.implementation=r}static start(e,{stdin:r,stdout:s,stderr:a}){let n=new t(null,e);return n.stdin=r,n.stdout=s,n.stderr=a,n}pipeTo(e,r=1){let s=new t(this,e),a=new Lj;return s.pipe=a,s.stdout=this.stdout,s.stderr=this.stderr,(r&1)===1?this.stdout=a:this.ancestor!==null&&(this.stderr=this.ancestor.stdout),(r&2)===2?this.stderr=a:this.ancestor!==null&&(this.stderr=this.ancestor.stderr),s}async exec(){let e=["ignore","ignore","ignore"];if(this.pipe)e[0]="pipe";else{if(this.stdin===null)throw new Error("Assertion failed: No input stream registered");e[0]=this.stdin.get()}let r;if(this.stdout===null)throw new Error("Assertion failed: No output stream registered");r=this.stdout,e[1]=r.get();let s;if(this.stderr===null)throw new Error("Assertion failed: No error stream registered");s=this.stderr,e[2]=s.get();let a=this.implementation(e);return this.pipe&&this.pipe.attach(a.stdin),await a.promise.then(n=>(r.close(),s.close(),n))}async run(){let e=[];for(let s=this;s;s=s.ancestor)e.push(s.exec());return(await Promise.all(e))[0]}}});var mv={};Vt(mv,{EntryCommand:()=>Av,ShellError:()=>Vl,execute:()=>vI,globUtils:()=>PR});function Fpe(t,e,r){let s=new Jl.PassThrough({autoDestroy:!0});switch(t){case 0:(e&1)===1&&r.stdin.pipe(s,{end:!1}),(e&2)===2&&r.stdin instanceof Jl.Writable&&s.pipe(r.stdin,{end:!1});break;case 1:(e&1)===1&&r.stdout.pipe(s,{end:!1}),(e&2)===2&&s.pipe(r.stdout,{end:!1});break;case 2:(e&1)===1&&r.stderr.pipe(s,{end:!1}),(e&2)===2&&s.pipe(r.stderr,{end:!1});break;default:throw new Vl(`Bad file descriptor: "${t}"`)}return s}function kR(t,e={}){let r={...t,...e};return r.environment={...t.environment,...e.environment},r.variables={...t.variables,...e.variables},r}async function Jnt(t,e,r){let s=[],a=new Jl.PassThrough;return a.on("data",n=>s.push(n)),await QR(t,e,kR(r,{stdout:a})),Buffer.concat(s).toString().replace(/[\r\n]+$/,"")}async function Npe(t,e,r){let s=t.map(async n=>{let c=await um(n.args,e,r);return{name:n.name,value:c.join(" ")}});return(await Promise.all(s)).reduce((n,c)=>(n[c.name]=c.value,n),{})}function xR(t){return t.match(/[^ \r\n\t]+/g)||[]}async function Hpe(t,e,r,s,a=s){switch(t.name){case"$":s(String(process.pid));break;case"#":s(String(e.args.length));break;case"@":if(t.quoted)for(let n of e.args)a(n);else for(let n of e.args){let c=xR(n);for(let f=0;f=0&&n"u"&&(t.defaultValue?c=(await um(t.defaultValue,e,r)).join(" "):t.alternativeValue&&(c="")),typeof c>"u")throw f?new Vl(`Unbound argument #${n}`):new Vl(`Unbound variable "${t.name}"`);if(t.quoted)s(c);else{let p=xR(c);for(let E=0;Es.push(n));let a=Number(s.join(" "));return Number.isNaN(a)?hv({type:"variable",name:s.join(" ")},e,r):hv({type:"number",value:a},e,r)}else return Knt[t.type](await hv(t.left,e,r),await hv(t.right,e,r))}async function um(t,e,r){let s=new Map,a=[],n=[],c=E=>{n.push(E)},f=()=>{n.length>0&&a.push(n.join("")),n=[]},p=E=>{c(E),f()},h=(E,C,S)=>{let b=JSON.stringify({type:E,fd:C}),I=s.get(b);typeof I>"u"&&s.set(b,I=[]),I.push(S)};for(let E of t){let C=!1;switch(E.type){case"redirection":{let S=await um(E.args,e,r);for(let b of S)h(E.subtype,E.fd,b)}break;case"argument":for(let S of E.segments)switch(S.type){case"text":c(S.text);break;case"glob":c(S.pattern),C=!0;break;case"shell":{let b=await Jnt(S.shell,e,r);if(S.quoted)c(b);else{let I=xR(b);for(let T=0;T"u")throw new Error("Assertion failed: Expected a glob pattern to have been set");let b=await e.glob.match(S,{cwd:r.cwd,baseFs:e.baseFs});if(b.length===0){let I=Fj(S)?". Note: Brace expansion of arbitrary strings isn't currently supported. For more details, please read this issue: https://github.com/yarnpkg/berry/issues/22":"";throw new Vl(`No matches found: "${S}"${I}`)}for(let I of b.sort())p(I)}}if(s.size>0){let E=[];for(let[C,S]of s.entries())E.splice(E.length,0,C,String(S.length),...S);a.splice(0,0,"__ysh_set_redirects",...E,"--")}return a}function gv(t,e,r){e.builtins.has(t[0])||(t=["command",...t]);let s=fe.fromPortablePath(r.cwd),a=r.environment;typeof a.PWD<"u"&&(a={...a,PWD:s});let[n,...c]=t;if(n==="command")return Qpe(c[0],c.slice(1),e,{cwd:s,env:a});let f=e.builtins.get(n);if(typeof f>"u")throw new Error(`Assertion failed: A builtin should exist for "${n}"`);return Rpe(async({stdin:p,stdout:h,stderr:E})=>{let{stdin:C,stdout:S,stderr:b}=r;r.stdin=p,r.stdout=h,r.stderr=E;try{return await f(c,e,r)}finally{r.stdin=C,r.stdout=S,r.stderr=b}})}function znt(t,e,r){return s=>{let a=new Jl.PassThrough,n=QR(t,e,kR(r,{stdin:a}));return{stdin:a,promise:n}}}function Znt(t,e,r){return s=>{let a=new Jl.PassThrough,n=QR(t,e,r);return{stdin:a,promise:n}}}function Ope(t,e,r,s){if(e.length===0)return t;{let a;do a=String(Math.random());while(Object.hasOwn(s.procedures,a));return s.procedures={...s.procedures},s.procedures[a]=t,gv([...e,"__ysh_run_procedure",a],r,s)}}async function Lpe(t,e,r){let s=t,a=null,n=null;for(;s;){let c=s.then?{...r}:r,f;switch(s.type){case"command":{let p=await um(s.args,e,r),h=await Npe(s.envs,e,r);f=s.envs.length?gv(p,e,kR(c,{environment:h})):gv(p,e,c)}break;case"subshell":{let p=await um(s.args,e,r),h=znt(s.subshell,e,c);f=Ope(h,p,e,c)}break;case"group":{let p=await um(s.args,e,r),h=Znt(s.group,e,c);f=Ope(h,p,e,c)}break;case"envs":{let p=await Npe(s.envs,e,r);c.environment={...c.environment,...p},f=gv(["true"],e,c)}break}if(typeof f>"u")throw new Error("Assertion failed: An action should have been generated");if(a===null)n=bR(f,{stdin:new Oc(c.stdin),stdout:new Oc(c.stdout),stderr:new Oc(c.stderr)});else{if(n===null)throw new Error("Assertion failed: The execution pipeline should have been setup");switch(a){case"|":n=n.pipeTo(f,1);break;case"|&":n=n.pipeTo(f,3);break}}s.then?(a=s.then.type,s=s.then.chain):s=null}if(n===null)throw new Error("Assertion failed: The execution pipeline should have been setup");return await n.run()}async function Xnt(t,e,r,{background:s=!1}={}){function a(n){let c=["#2E86AB","#A23B72","#F18F01","#C73E1D","#CCE2A3"],f=c[n%c.length];return Mpe.default.hex(f)}if(s){let n=r.nextBackgroundJobIndex++,c=a(n),f=`[${n}]`,p=c(f),{stdout:h,stderr:E}=Tpe(r,{prefix:p});return r.backgroundJobs.push(Lpe(t,e,kR(r,{stdout:h,stderr:E})).catch(C=>E.write(`${C.message} `)).finally(()=>{r.stdout.isTTY&&r.stdout.write(`Job ${p}, '${c(AE(t))}' has ended `)})),0}return await Lpe(t,e,r)}async function $nt(t,e,r,{background:s=!1}={}){let a,n=f=>{a=f,r.variables["?"]=String(f)},c=async f=>{try{return await Xnt(f.chain,e,r,{background:s&&typeof f.then>"u"})}catch(p){if(!(p instanceof Vl))throw p;return r.stderr.write(`${p.message} `),1}};for(n(await c(t));t.then;){if(r.exitCode!==null)return r.exitCode;switch(t.then.type){case"&&":a===0&&n(await c(t.then.line));break;case"||":a!==0&&n(await c(t.then.line));break;default:throw new Error(`Assertion failed: Unsupported command type: "${t.then.type}"`)}t=t.then.line}return a}async function QR(t,e,r){let s=r.backgroundJobs;r.backgroundJobs=[];let a=0;for(let{command:n,type:c}of t){if(a=await $nt(n,e,r,{background:c==="&"}),r.exitCode!==null)return r.exitCode;r.variables["?"]=String(a)}return await Promise.all(r.backgroundJobs),r.backgroundJobs=s,a}function jpe(t){switch(t.type){case"variable":return t.name==="@"||t.name==="#"||t.name==="*"||Number.isFinite(parseInt(t.name,10))||"defaultValue"in t&&!!t.defaultValue&&t.defaultValue.some(e=>dv(e))||"alternativeValue"in t&&!!t.alternativeValue&&t.alternativeValue.some(e=>dv(e));case"arithmetic":return _j(t.arithmetic);case"shell":return Hj(t.shell);default:return!1}}function dv(t){switch(t.type){case"redirection":return t.args.some(e=>dv(e));case"argument":return t.segments.some(e=>jpe(e));default:throw new Error(`Assertion failed: Unsupported argument type: "${t.type}"`)}}function _j(t){switch(t.type){case"variable":return jpe(t);case"number":return!1;default:return _j(t.left)||_j(t.right)}}function Hj(t){return t.some(({command:e})=>{for(;e;){let r=e.chain;for(;r;){let s;switch(r.type){case"subshell":s=Hj(r.subshell);break;case"command":s=r.envs.some(a=>a.args.some(n=>dv(n)))||r.args.some(a=>dv(a));break}if(s)return!0;if(!r.then)break;r=r.then.chain}if(!e.then)break;e=e.then.line}return!1})}async function vI(t,e=[],{baseFs:r=new Yn,builtins:s={},cwd:a=fe.toPortablePath(process.cwd()),env:n=process.env,stdin:c=process.stdin,stdout:f=process.stdout,stderr:p=process.stderr,variables:h={},glob:E=PR}={}){let C={};for(let[I,T]of Object.entries(n))typeof T<"u"&&(C[I]=T);let S=new Map(Vnt);for(let[I,T]of Object.entries(s))S.set(I,T);c===null&&(c=new Jl.PassThrough,c.end());let b=ux(t,E);if(!Hj(b)&&b.length>0&&e.length>0){let{command:I}=b[b.length-1];for(;I.then;)I=I.then.line;let T=I.chain;for(;T.then;)T=T.then.chain;T.type==="command"&&(T.args=T.args.concat(e.map(N=>({type:"argument",segments:[{type:"text",text:N}]}))))}return await QR(b,{args:e,baseFs:r,builtins:S,initialStdin:c,initialStdout:f,initialStderr:p,glob:E},{cwd:a,environment:C,exitCode:null,procedures:{},stdin:c,stdout:f,stderr:p,variables:Object.assign({},h,{"?":0}),nextBackgroundJobIndex:1,backgroundJobs:[]})}var Mpe,Upe,Jl,_pe,Vnt,Knt,pv=Ze(()=>{Dt();wc();Mpe=ut(RE()),Upe=Ie("os"),Jl=Ie("stream"),_pe=Ie("timers/promises");wpe();Bpe();Ppe();Uj();Uj();Vnt=new Map([["cd",async([t=(0,Upe.homedir)(),...e],r,s)=>{let a=J.resolve(s.cwd,fe.toPortablePath(t));if(!(await r.baseFs.statPromise(a).catch(c=>{throw c.code==="ENOENT"?new Vl(`cd: no such file or directory: ${t}`):c})).isDirectory())throw new Vl(`cd: not a directory: ${t}`);return s.cwd=a,0}],["pwd",async(t,e,r)=>(r.stdout.write(`${fe.fromPortablePath(r.cwd)} `),0)],[":",async(t,e,r)=>0],["true",async(t,e,r)=>0],["false",async(t,e,r)=>1],["exit",async([t,...e],r,s)=>s.exitCode=parseInt(t??s.variables["?"],10)],["echo",async(t,e,r)=>(r.stdout.write(`${t.join(" ")} `),0)],["sleep",async([t],e,r)=>{if(typeof t>"u")throw new Vl("sleep: missing operand");let s=Number(t);if(Number.isNaN(s))throw new Vl(`sleep: invalid time interval '${t}'`);return await(0,_pe.setTimeout)(1e3*s,0)}],["unset",async(t,e,r)=>{for(let s of t)delete r.environment[s],delete r.variables[s];return 0}],["__ysh_run_procedure",async(t,e,r)=>{let s=r.procedures[t[0]];return await bR(s,{stdin:new Oc(r.stdin),stdout:new Oc(r.stdout),stderr:new Oc(r.stderr)}).run()}],["__ysh_set_redirects",async(t,e,r)=>{let s=r.stdin,a=r.stdout,n=r.stderr,c=[],f=[],p=[],h=0;for(;t[h]!=="--";){let C=t[h++],{type:S,fd:b}=JSON.parse(C),I=W=>{switch(b){case null:case 0:c.push(W);break;default:throw new Error(`Unsupported file descriptor: "${b}"`)}},T=W=>{switch(b){case null:case 1:f.push(W);break;case 2:p.push(W);break;default:throw new Error(`Unsupported file descriptor: "${b}"`)}},N=Number(t[h++]),U=h+N;for(let W=h;We.baseFs.createReadStream(J.resolve(r.cwd,fe.toPortablePath(t[W]))));break;case"<<<":I(()=>{let ee=new Jl.PassThrough;return process.nextTick(()=>{ee.write(`${t[W]} `),ee.end()}),ee});break;case"<&":I(()=>Fpe(Number(t[W]),1,r));break;case">":case">>":{let ee=J.resolve(r.cwd,fe.toPortablePath(t[W]));T(ee==="/dev/null"?new Jl.Writable({autoDestroy:!0,emitClose:!0,write(ie,ue,le){setImmediate(le)}}):e.baseFs.createWriteStream(ee,S===">>"?{flags:"a"}:void 0))}break;case">&":T(Fpe(Number(t[W]),2,r));break;default:throw new Error(`Assertion failed: Unsupported redirection type: "${S}"`)}}if(c.length>0){let C=new Jl.PassThrough;s=C;let S=b=>{if(b===c.length)C.end();else{let I=c[b]();I.pipe(C,{end:!1}),I.on("end",()=>{S(b+1)})}};S(0)}if(f.length>0){let C=new Jl.PassThrough;a=C;for(let S of f)C.pipe(S)}if(p.length>0){let C=new Jl.PassThrough;n=C;for(let S of p)C.pipe(S)}let E=await bR(gv(t.slice(h+1),e,r),{stdin:new Oc(s),stdout:new Oc(a),stderr:new Oc(n)}).run();return await Promise.all(f.map(C=>new Promise((S,b)=>{C.on("error",I=>{b(I)}),C.on("close",()=>{S()}),C.end()}))),await Promise.all(p.map(C=>new Promise((S,b)=>{C.on("error",I=>{b(I)}),C.on("close",()=>{S()}),C.end()}))),E}]]);Knt={addition:(t,e)=>t+e,subtraction:(t,e)=>t-e,multiplication:(t,e)=>t*e,division:(t,e)=>Math.trunc(t/e)}});var Gpe=_((d4t,RR)=>{function eit(){var t=0,e=1,r=2,s=3,a=4,n=5,c=6,f=7,p=8,h=9,E=10,C=11,S=12,b=13,I=14,T=15,N=16,U=17,W=0,ee=1,ie=2,ue=3,le=4;function me(g,we){return 55296<=g.charCodeAt(we)&&g.charCodeAt(we)<=56319&&56320<=g.charCodeAt(we+1)&&g.charCodeAt(we+1)<=57343}function pe(g,we){we===void 0&&(we=0);var ye=g.charCodeAt(we);if(55296<=ye&&ye<=56319&&we=1){var Ae=g.charCodeAt(we-1),se=ye;return 55296<=Ae&&Ae<=56319?(Ae-55296)*1024+(se-56320)+65536:se}return ye}function Be(g,we,ye){var Ae=[g].concat(we).concat([ye]),se=Ae[Ae.length-2],X=ye,De=Ae.lastIndexOf(I);if(De>1&&Ae.slice(1,De).every(function(j){return j==s})&&[s,b,U].indexOf(g)==-1)return ie;var Te=Ae.lastIndexOf(a);if(Te>0&&Ae.slice(1,Te).every(function(j){return j==a})&&[S,a].indexOf(se)==-1)return Ae.filter(function(j){return j==a}).length%2==1?ue:le;if(se==t&&X==e)return W;if(se==r||se==t||se==e)return X==I&&we.every(function(j){return j==s})?ie:ee;if(X==r||X==t||X==e)return ee;if(se==c&&(X==c||X==f||X==h||X==E))return W;if((se==h||se==f)&&(X==f||X==p))return W;if((se==E||se==p)&&X==p)return W;if(X==s||X==T)return W;if(X==n)return W;if(se==S)return W;var mt=Ae.indexOf(s)!=-1?Ae.lastIndexOf(s)-1:Ae.length-2;return[b,U].indexOf(Ae[mt])!=-1&&Ae.slice(mt+1,-1).every(function(j){return j==s})&&X==I||se==T&&[N,U].indexOf(X)!=-1?W:we.indexOf(a)!=-1?ie:se==a&&X==a?W:ee}this.nextBreak=function(g,we){if(we===void 0&&(we=0),we<0)return 0;if(we>=g.length-1)return g.length;for(var ye=Ce(pe(g,we)),Ae=[],se=we+1;se{var tit=/^(.*?)(\x1b\[[^m]+m|\x1b\]8;;.*?(\x1b\\|\u0007))/,TR;function rit(){if(TR)return TR;if(typeof Intl.Segmenter<"u"){let t=new Intl.Segmenter("en",{granularity:"grapheme"});return TR=e=>Array.from(t.segment(e),({segment:r})=>r)}else{let t=Gpe(),e=new t;return TR=r=>e.splitGraphemes(r)}}qpe.exports=(t,e=0,r=t.length)=>{if(e<0||r<0)throw new RangeError("Negative indices aren't supported by this implementation");let s=r-e,a="",n=0,c=0;for(;t.length>0;){let f=t.match(tit)||[t,t,void 0],p=rit()(f[1]),h=Math.min(e-n,p.length);p=p.slice(h);let E=Math.min(s-c,p.length);a+=p.slice(0,E).join(""),n+=h,c+=E,typeof f[2]<"u"&&(a+=f[2]),t=t.slice(f[0].length)}return a}});var fn,yv=Ze(()=>{fn=process.env.YARN_IS_TEST_ENV?"0.0.0":"4.10.3"});function Zpe(t,{configuration:e,json:r}){if(!e.get("enableMessageNames"))return"";let a=Yf(t===null?0:t);return!r&&t===null?Ht(e,a,"grey"):a}function jj(t,{configuration:e,json:r}){let s=Zpe(t,{configuration:e,json:r});if(!s||t===null||t===0)return s;let a=Br[t],n=`https://yarnpkg.com/advanced/error-codes#${s}---${a}`.toLowerCase();return KE(e,s,n)}async function SI({configuration:t,stdout:e,forceError:r},s){let a=await Ot.start({configuration:t,stdout:e,includeFooter:!1},async n=>{let c=!1,f=!1;for(let p of s)typeof p.option<"u"&&(p.error||r?(f=!0,n.reportError(50,p.message)):(c=!0,n.reportWarning(50,p.message)),p.callback?.());c&&!f&&n.reportSeparator()});return a.hasErrors()?a.exitCode():null}var Kpe,FR,nit,Ype,Vpe,D0,zpe,Jpe,iit,sit,NR,oit,Ot,Ev=Ze(()=>{Kpe=ut(Wpe()),FR=ut(Fd());Gx();Rc();yv();xc();nit="\xB7",Ype=["\u280B","\u2819","\u2839","\u2838","\u283C","\u2834","\u2826","\u2827","\u2807","\u280F"],Vpe=80,D0=FR.default.GITHUB_ACTIONS?{start:t=>`::group::${t} `,end:t=>`::endgroup:: `}:FR.default.TRAVIS?{start:t=>`travis_fold:start:${t} `,end:t=>`travis_fold:end:${t} `}:FR.default.GITLAB?{start:t=>`section_start:${Math.floor(Date.now()/1e3)}:${t.toLowerCase().replace(/\W+/g,"_")}[collapsed=true]\r\x1B[0K${t} `,end:t=>`section_end:${Math.floor(Date.now()/1e3)}:${t.toLowerCase().replace(/\W+/g,"_")}\r\x1B[0K`}:null,zpe=D0!==null,Jpe=new Date,iit=["iTerm.app","Apple_Terminal","WarpTerminal","vscode"].includes(process.env.TERM_PROGRAM)||!!process.env.WT_SESSION,sit=t=>t,NR=sit({patrick:{date:[17,3],chars:["\u{1F340}","\u{1F331}"],size:40},simba:{date:[19,7],chars:["\u{1F981}","\u{1F334}"],size:40},jack:{date:[31,10],chars:["\u{1F383}","\u{1F987}"],size:40},hogsfather:{date:[31,12],chars:["\u{1F389}","\u{1F384}"],size:40},default:{chars:["=","-"],size:80}}),oit=iit&&Object.keys(NR).find(t=>{let e=NR[t];return!(e.date&&(e.date[0]!==Jpe.getDate()||e.date[1]!==Jpe.getMonth()+1))})||"default";Ot=class extends Ao{constructor({configuration:r,stdout:s,json:a=!1,forceSectionAlignment:n=!1,includeNames:c=!0,includePrefix:f=!0,includeFooter:p=!0,includeLogs:h=!a,includeInfos:E=h,includeWarnings:C=h}){super();this.uncommitted=new Set;this.warningCount=0;this.errorCount=0;this.timerFooter=[];this.startTime=Date.now();this.indent=0;this.level=0;this.progress=new Map;this.progressTime=0;this.progressFrame=0;this.progressTimeout=null;this.progressStyle=null;this.progressMaxScaledSize=null;if(TB(this,{configuration:r}),this.configuration=r,this.forceSectionAlignment=n,this.includeNames=c,this.includePrefix=f,this.includeFooter=p,this.includeInfos=E,this.includeWarnings=C,this.json=a,this.stdout=s,r.get("enableProgressBars")&&!a&&s.isTTY&&s.columns>22){let S=r.get("progressBarStyle")||oit;if(!Object.hasOwn(NR,S))throw new Error("Assertion failed: Invalid progress bar style");this.progressStyle=NR[S];let b=Math.min(this.getRecommendedLength(),80);this.progressMaxScaledSize=Math.floor(this.progressStyle.size*b/80)}}static async start(r,s){let a=new this(r),n=process.emitWarning;process.emitWarning=(c,f)=>{if(typeof c!="string"){let h=c;c=h.message,f=f??h.name}let p=typeof f<"u"?`${f}: ${c}`:c;a.reportWarning(0,p)},r.includeVersion&&a.reportInfo(0,zd(r.configuration,`Yarn ${fn}`,2));try{await s(a)}catch(c){a.reportExceptionOnce(c)}finally{await a.finalize(),process.emitWarning=n}return a}hasErrors(){return this.errorCount>0}exitCode(){return this.hasErrors()?1:0}getRecommendedLength(){let s=this.progressStyle!==null?this.stdout.columns-1:super.getRecommendedLength();return Math.max(40,s-12-this.indent*2)}startSectionSync({reportHeader:r,reportFooter:s,skipIfEmpty:a},n){let c={committed:!1,action:()=>{r?.()}};a?this.uncommitted.add(c):(c.action(),c.committed=!0);let f=Date.now();try{return n()}catch(p){throw this.reportExceptionOnce(p),p}finally{let p=Date.now();this.uncommitted.delete(c),c.committed&&s?.(p-f)}}async startSectionPromise({reportHeader:r,reportFooter:s,skipIfEmpty:a},n){let c={committed:!1,action:()=>{r?.()}};a?this.uncommitted.add(c):(c.action(),c.committed=!0);let f=Date.now();try{return await n()}catch(p){throw this.reportExceptionOnce(p),p}finally{let p=Date.now();this.uncommitted.delete(c),c.committed&&s?.(p-f)}}startTimerImpl(r,s,a){return{cb:typeof s=="function"?s:a,reportHeader:()=>{this.level+=1,this.reportInfo(null,`\u250C ${r}`),this.indent+=1,D0!==null&&!this.json&&this.includeInfos&&this.stdout.write(D0.start(r))},reportFooter:f=>{if(this.indent-=1,D0!==null&&!this.json&&this.includeInfos){this.stdout.write(D0.end(r));for(let p of this.timerFooter)p()}this.configuration.get("enableTimers")&&f>200?this.reportInfo(null,`\u2514 Completed in ${Ht(this.configuration,f,ht.DURATION)}`):this.reportInfo(null,"\u2514 Completed"),this.level-=1},skipIfEmpty:(typeof s=="function"?{}:s).skipIfEmpty}}startTimerSync(r,s,a){let{cb:n,...c}=this.startTimerImpl(r,s,a);return this.startSectionSync(c,n)}async startTimerPromise(r,s,a){let{cb:n,...c}=this.startTimerImpl(r,s,a);return this.startSectionPromise(c,n)}reportSeparator(){this.indent===0?this.writeLine(""):this.reportInfo(null,"")}reportInfo(r,s){if(!this.includeInfos)return;this.commit();let a=this.formatNameWithHyperlink(r),n=a?`${a}: `:"",c=`${this.formatPrefix(n,"blueBright")}${s}`;this.json?this.reportJson({type:"info",name:r,displayName:this.formatName(r),indent:this.formatIndent(),data:s}):this.writeLine(c)}reportWarning(r,s){if(this.warningCount+=1,!this.includeWarnings)return;this.commit();let a=this.formatNameWithHyperlink(r),n=a?`${a}: `:"";this.json?this.reportJson({type:"warning",name:r,displayName:this.formatName(r),indent:this.formatIndent(),data:s}):this.writeLine(`${this.formatPrefix(n,"yellowBright")}${s}`)}reportError(r,s){this.errorCount+=1,this.timerFooter.push(()=>this.reportErrorImpl(r,s)),this.reportErrorImpl(r,s)}reportErrorImpl(r,s){this.commit();let a=this.formatNameWithHyperlink(r),n=a?`${a}: `:"";this.json?this.reportJson({type:"error",name:r,displayName:this.formatName(r),indent:this.formatIndent(),data:s}):this.writeLine(`${this.formatPrefix(n,"redBright")}${s}`,{truncate:!1})}reportFold(r,s){if(!D0)return;let a=`${D0.start(r)}${s}${D0.end(r)}`;this.timerFooter.push(()=>this.stdout.write(a))}reportProgress(r){if(this.progressStyle===null)return{...Promise.resolve(),stop:()=>{}};if(r.hasProgress&&r.hasTitle)throw new Error("Unimplemented: Progress bars can't have both progress and titles.");let s=!1,a=Promise.resolve().then(async()=>{let c={progress:r.hasProgress?0:void 0,title:r.hasTitle?"":void 0};this.progress.set(r,{definition:c,lastScaledSize:r.hasProgress?-1:void 0,lastTitle:void 0}),this.refreshProgress({delta:-1});for await(let{progress:f,title:p}of r)s||c.progress===f&&c.title===p||(c.progress=f,c.title=p,this.refreshProgress());n()}),n=()=>{s||(s=!0,this.progress.delete(r),this.refreshProgress({delta:1}))};return{...a,stop:n}}reportJson(r){this.json&&this.writeLine(`${JSON.stringify(r)}`)}async finalize(){if(!this.includeFooter)return;let r="";this.errorCount>0?r="Failed with errors":this.warningCount>0?r="Done with warnings":r="Done";let s=Ht(this.configuration,Date.now()-this.startTime,ht.DURATION),a=this.configuration.get("enableTimers")?`${r} in ${s}`:r;this.errorCount>0?this.reportError(0,a):this.warningCount>0?this.reportWarning(0,a):this.reportInfo(0,a)}writeLine(r,{truncate:s}={}){this.clearProgress({clear:!0}),this.stdout.write(`${this.truncate(r,{truncate:s})} `),this.writeProgress()}writeLines(r,{truncate:s}={}){this.clearProgress({delta:r.length});for(let a of r)this.stdout.write(`${this.truncate(a,{truncate:s})} `);this.writeProgress()}commit(){let r=this.uncommitted;this.uncommitted=new Set;for(let s of r)s.committed=!0,s.action()}clearProgress({delta:r=0,clear:s=!1}){this.progressStyle!==null&&this.progress.size+r>0&&(this.stdout.write(`\x1B[${this.progress.size+r}A`),(r>0||s)&&this.stdout.write("\x1B[0J"))}writeProgress(){if(this.progressStyle===null||(this.progressTimeout!==null&&clearTimeout(this.progressTimeout),this.progressTimeout=null,this.progress.size===0))return;let r=Date.now();r-this.progressTime>Vpe&&(this.progressFrame=(this.progressFrame+1)%Ype.length,this.progressTime=r);let s=Ype[this.progressFrame];for(let a of this.progress.values()){let n="";if(typeof a.lastScaledSize<"u"){let h=this.progressStyle.chars[0].repeat(a.lastScaledSize),E=this.progressStyle.chars[1].repeat(this.progressMaxScaledSize-a.lastScaledSize);n=` ${h}${E}`}let c=this.formatName(null),f=c?`${c}: `:"",p=a.definition.title?` ${a.definition.title}`:"";this.stdout.write(`${Ht(this.configuration,"\u27A4","blueBright")} ${f}${s}${n}${p} `)}this.progressTimeout=setTimeout(()=>{this.refreshProgress({force:!0})},Vpe)}refreshProgress({delta:r=0,force:s=!1}={}){let a=!1,n=!1;if(s||this.progress.size===0)a=!0;else for(let c of this.progress.values()){let f=typeof c.definition.progress<"u"?Math.trunc(this.progressMaxScaledSize*c.definition.progress):void 0,p=c.lastScaledSize;c.lastScaledSize=f;let h=c.lastTitle;if(c.lastTitle=c.definition.title,f!==p||(n=h!==c.definition.title)){a=!0;break}}a&&(this.clearProgress({delta:r,clear:n}),this.writeProgress())}truncate(r,{truncate:s}={}){return this.progressStyle===null&&(s=!1),typeof s>"u"&&(s=this.configuration.get("preferTruncatedLines")),s&&(r=(0,Kpe.default)(r,0,this.stdout.columns-1)),r}formatName(r){return this.includeNames?Zpe(r,{configuration:this.configuration,json:this.json}):""}formatPrefix(r,s){return this.includePrefix?`${Ht(this.configuration,"\u27A4",s)} ${r}${this.formatIndent()}`:""}formatNameWithHyperlink(r){return this.includeNames?jj(r,{configuration:this.configuration,json:this.json}):""}formatIndent(){return this.level>0||!this.forceSectionAlignment?"\u2502 ".repeat(this.indent):`${nit} `}}});var In={};Vt(In,{PackageManager:()=>$pe,detectPackageManager:()=>ehe,executePackageAccessibleBinary:()=>she,executePackageScript:()=>OR,executePackageShellcode:()=>Gj,executeWorkspaceAccessibleBinary:()=>pit,executeWorkspaceLifecycleScript:()=>nhe,executeWorkspaceScript:()=>rhe,getPackageAccessibleBinaries:()=>LR,getWorkspaceAccessibleBinaries:()=>ihe,hasPackageScript:()=>uit,hasWorkspaceScript:()=>qj,isNodeScript:()=>Wj,makeScriptEnv:()=>Iv,maybeExecuteWorkspaceLifecycleScript:()=>Ait,prepareExternalProject:()=>cit});async function P0(t,e,r,s=[]){if(process.platform==="win32"){let a=`@goto #_undefined_# 2>NUL || @title %COMSPEC% & @setlocal & @"${r}" ${s.map(n=>`"${n.replace('"','""')}"`).join(" ")} %*`;await ce.writeFilePromise(J.format({dir:t,name:e,ext:".cmd"}),a)}await ce.writeFilePromise(J.join(t,e),`#!/bin/sh exec "${r}" ${s.map(a=>`'${a.replace(/'/g,`'"'"'`)}'`).join(" ")} "$@" `,{mode:493})}async function ehe(t){let e=await Ut.tryFind(t);if(e?.packageManager){let s=bQ(e.packageManager);if(s?.name){let a=`found ${JSON.stringify({packageManager:e.packageManager})} in manifest`,[n]=s.reference.split(".");switch(s.name){case"yarn":return{packageManagerField:!0,packageManager:Number(n)===1?"Yarn Classic":"Yarn",reason:a};case"npm":return{packageManagerField:!0,packageManager:"npm",reason:a};case"pnpm":return{packageManagerField:!0,packageManager:"pnpm",reason:a}}}}let r;try{r=await ce.readFilePromise(J.join(t,Er.lockfile),"utf8")}catch{}return r!==void 0?r.match(/^__metadata:$/m)?{packageManager:"Yarn",reason:'"__metadata" key found in yarn.lock'}:{packageManager:"Yarn Classic",reason:'"__metadata" key not found in yarn.lock, must be a Yarn classic lockfile'}:ce.existsSync(J.join(t,"package-lock.json"))?{packageManager:"npm",reason:`found npm's "package-lock.json" lockfile`}:ce.existsSync(J.join(t,"pnpm-lock.yaml"))?{packageManager:"pnpm",reason:`found pnpm's "pnpm-lock.yaml" lockfile`}:null}async function Iv({project:t,locator:e,binFolder:r,ignoreCorepack:s,lifecycleScript:a,baseEnv:n=t?.configuration.env??process.env}){let c={};for(let[E,C]of Object.entries(n))typeof C<"u"&&(c[E.toLowerCase()!=="path"?E:"PATH"]=C);let f=fe.fromPortablePath(r);c.BERRY_BIN_FOLDER=fe.fromPortablePath(f);let p=process.env.COREPACK_ROOT&&!s?fe.join(process.env.COREPACK_ROOT,"dist/yarn.js"):process.argv[1];if(await Promise.all([P0(r,"node",process.execPath),...fn!==null?[P0(r,"run",process.execPath,[p,"run"]),P0(r,"yarn",process.execPath,[p]),P0(r,"yarnpkg",process.execPath,[p]),P0(r,"node-gyp",process.execPath,[p,"run","--top-level","node-gyp"])]:[]]),t&&(c.INIT_CWD=fe.fromPortablePath(t.configuration.startingCwd),c.PROJECT_CWD=fe.fromPortablePath(t.cwd)),c.PATH=c.PATH?`${f}${fe.delimiter}${c.PATH}`:`${f}`,c.npm_execpath=`${f}${fe.sep}yarn`,c.npm_node_execpath=`${f}${fe.sep}node`,e){if(!t)throw new Error("Assertion failed: Missing project");let E=t.tryWorkspaceByLocator(e),C=E?E.manifest.version??"":t.storedPackages.get(e.locatorHash).version??"";c.npm_package_name=un(e),c.npm_package_version=C;let S;if(E)S=E.cwd;else{let b=t.storedPackages.get(e.locatorHash);if(!b)throw new Error(`Package for ${Yr(t.configuration,e)} not found in the project`);let I=t.configuration.getLinkers(),T={project:t,report:new Ot({stdout:new b0.PassThrough,configuration:t.configuration})},N=I.find(U=>U.supportsPackage(b,T));if(!N)throw new Error(`The package ${Yr(t.configuration,b)} isn't supported by any of the available linkers`);S=await N.findPackageLocation(b,T)}c.npm_package_json=fe.fromPortablePath(J.join(S,Er.manifest))}let h=fn!==null?`yarn/${fn}`:`yarn/${bp("@yarnpkg/core").version}-core`;return c.npm_config_user_agent=`${h} npm/? node/${process.version} ${process.platform} ${process.arch}`,a&&(c.npm_lifecycle_event=a),t&&await t.configuration.triggerHook(E=>E.setupScriptEnvironment,t,c,async(E,C,S)=>await P0(r,E,C,S)),c}async function cit(t,e,{configuration:r,report:s,workspace:a=null,locator:n=null}){await lit(async()=>{await ce.mktempPromise(async c=>{let f=J.join(c,"pack.log"),p=null,{stdout:h,stderr:E}=r.getSubprocessStreams(f,{prefix:fe.fromPortablePath(t),report:s}),C=n&&Gu(n)?rI(n):n,S=C?ll(C):"an external project";h.write(`Packing ${S} from sources `);let b=await ehe(t),I;b!==null?(h.write(`Using ${b.packageManager} for bootstrap. Reason: ${b.reason} `),I=b.packageManager):(h.write(`No package manager configuration detected; defaulting to Yarn `),I="Yarn");let T=I==="Yarn"&&!b?.packageManagerField;await ce.mktempPromise(async N=>{let U=await Iv({binFolder:N,ignoreCorepack:T,baseEnv:{...process.env,COREPACK_ENABLE_AUTO_PIN:"0"}}),ee=new Map([["Yarn Classic",async()=>{let ue=a!==null?["workspace",a]:[],le=J.join(t,Er.manifest),me=await ce.readFilePromise(le),pe=await Wu(process.execPath,[process.argv[1],"set","version","classic","--only-if-needed","--yarn-path"],{cwd:t,env:U,stdin:p,stdout:h,stderr:E,end:1});if(pe.code!==0)return pe.code;await ce.writeFilePromise(le,me),await ce.appendFilePromise(J.join(t,".npmignore"),`/.yarn `),h.write(` `),delete U.NODE_ENV;let Be=await Wu("yarn",["install"],{cwd:t,env:U,stdin:p,stdout:h,stderr:E,end:1});if(Be.code!==0)return Be.code;h.write(` `);let Ce=await Wu("yarn",[...ue,"pack","--filename",fe.fromPortablePath(e)],{cwd:t,env:U,stdin:p,stdout:h,stderr:E});return Ce.code!==0?Ce.code:0}],["Yarn",async()=>{let ue=a!==null?["workspace",a]:[];U.YARN_ENABLE_INLINE_BUILDS="1";let le=J.join(t,Er.lockfile);await ce.existsPromise(le)||await ce.writeFilePromise(le,"");let me=await Wu("yarn",[...ue,"pack","--install-if-needed","--filename",fe.fromPortablePath(e)],{cwd:t,env:U,stdin:p,stdout:h,stderr:E});return me.code!==0?me.code:0}],["npm",async()=>{if(a!==null){let we=new b0.PassThrough,ye=WE(we);we.pipe(h,{end:!1});let Ae=await Wu("npm",["--version"],{cwd:t,env:U,stdin:p,stdout:we,stderr:E,end:0});if(we.end(),Ae.code!==0)return h.end(),E.end(),Ae.code;let se=(await ye).toString().trim();if(!Xf(se,">=7.x")){let X=Da(null,"npm"),De=On(X,se),Te=On(X,">=7.x");throw new Error(`Workspaces aren't supported by ${ni(r,De)}; please upgrade to ${ni(r,Te)} (npm has been detected as the primary package manager for ${Ht(r,t,ht.PATH)})`)}}let ue=a!==null?["--workspace",a]:[];delete U.npm_config_user_agent,delete U.npm_config_production,delete U.NPM_CONFIG_PRODUCTION,delete U.NODE_ENV;let le=await Wu("npm",["install","--legacy-peer-deps"],{cwd:t,env:U,stdin:p,stdout:h,stderr:E,end:1});if(le.code!==0)return le.code;let me=new b0.PassThrough,pe=WE(me);me.pipe(h);let Be=await Wu("npm",["pack","--silent",...ue],{cwd:t,env:U,stdin:p,stdout:me,stderr:E});if(Be.code!==0)return Be.code;let Ce=(await pe).toString().trim().replace(/^.*\n/s,""),g=J.resolve(t,fe.toPortablePath(Ce));return await ce.renamePromise(g,e),0}]]).get(I);if(typeof ee>"u")throw new Error("Assertion failed: Unsupported workflow");let ie=await ee();if(!(ie===0||typeof ie>"u"))throw ce.detachTemp(c),new jt(58,`Packing the package failed (exit code ${ie}, logs can be found here: ${Ht(r,f,ht.PATH)})`)})})})}async function uit(t,e,{project:r}){let s=r.tryWorkspaceByLocator(t);if(s!==null)return qj(s,e);let a=r.storedPackages.get(t.locatorHash);if(!a)throw new Error(`Package for ${Yr(r.configuration,t)} not found in the project`);return await $f.openPromise(async n=>{let c=r.configuration,f=r.configuration.getLinkers(),p={project:r,report:new Ot({stdout:new b0.PassThrough,configuration:c})},h=f.find(b=>b.supportsPackage(a,p));if(!h)throw new Error(`The package ${Yr(r.configuration,a)} isn't supported by any of the available linkers`);let E=await h.findPackageLocation(a,p),C=new Sn(E,{baseFs:n});return(await Ut.find(vt.dot,{baseFs:C})).scripts.has(e)})}async function OR(t,e,r,{cwd:s,project:a,stdin:n,stdout:c,stderr:f}){return await ce.mktempPromise(async p=>{let{manifest:h,env:E,cwd:C}=await the(t,{project:a,binFolder:p,cwd:s,lifecycleScript:e}),S=h.scripts.get(e);if(typeof S>"u")return 1;let b=async()=>await vI(S,r,{cwd:C,env:E,stdin:n,stdout:c,stderr:f});return await(await a.configuration.reduceHook(T=>T.wrapScriptExecution,b,a,t,e,{script:S,args:r,cwd:C,env:E,stdin:n,stdout:c,stderr:f}))()})}async function Gj(t,e,r,{cwd:s,project:a,stdin:n,stdout:c,stderr:f}){return await ce.mktempPromise(async p=>{let{env:h,cwd:E}=await the(t,{project:a,binFolder:p,cwd:s});return await vI(e,r,{cwd:E,env:h,stdin:n,stdout:c,stderr:f})})}async function fit(t,{binFolder:e,cwd:r,lifecycleScript:s}){let a=await Iv({project:t.project,locator:t.anchoredLocator,binFolder:e,lifecycleScript:s});return await Yj(e,await ihe(t)),typeof r>"u"&&(r=J.dirname(await ce.realpathPromise(J.join(t.cwd,"package.json")))),{manifest:t.manifest,binFolder:e,env:a,cwd:r}}async function the(t,{project:e,binFolder:r,cwd:s,lifecycleScript:a}){let n=e.tryWorkspaceByLocator(t);if(n!==null)return fit(n,{binFolder:r,cwd:s,lifecycleScript:a});let c=e.storedPackages.get(t.locatorHash);if(!c)throw new Error(`Package for ${Yr(e.configuration,t)} not found in the project`);return await $f.openPromise(async f=>{let p=e.configuration,h=e.configuration.getLinkers(),E={project:e,report:new Ot({stdout:new b0.PassThrough,configuration:p})},C=h.find(N=>N.supportsPackage(c,E));if(!C)throw new Error(`The package ${Yr(e.configuration,c)} isn't supported by any of the available linkers`);let S=await Iv({project:e,locator:t,binFolder:r,lifecycleScript:a});await Yj(r,await LR(t,{project:e}));let b=await C.findPackageLocation(c,E),I=new Sn(b,{baseFs:f}),T=await Ut.find(vt.dot,{baseFs:I});return typeof s>"u"&&(s=b),{manifest:T,binFolder:r,env:S,cwd:s}})}async function rhe(t,e,r,{cwd:s,stdin:a,stdout:n,stderr:c}){return await OR(t.anchoredLocator,e,r,{cwd:s,project:t.project,stdin:a,stdout:n,stderr:c})}function qj(t,e){return t.manifest.scripts.has(e)}async function nhe(t,e,{cwd:r,report:s}){let{configuration:a}=t.project,n=null;await ce.mktempPromise(async c=>{let f=J.join(c,`${e}.log`),p=`# This file contains the result of Yarn calling the "${e}" lifecycle script inside a workspace ("${fe.fromPortablePath(t.cwd)}") `,{stdout:h,stderr:E}=a.getSubprocessStreams(f,{report:s,prefix:Yr(a,t.anchoredLocator),header:p});s.reportInfo(36,`Calling the "${e}" lifecycle script`);let C=await rhe(t,e,[],{cwd:r,stdin:n,stdout:h,stderr:E});if(h.end(),E.end(),C!==0)throw ce.detachTemp(c),new jt(36,`${PB(e)} script failed (exit code ${Ht(a,C,ht.NUMBER)}, logs can be found here: ${Ht(a,f,ht.PATH)}); run ${Ht(a,`yarn ${e}`,ht.CODE)} to investigate`)})}async function Ait(t,e,r){qj(t,e)&&await nhe(t,e,r)}function Wj(t){let e=J.extname(t);if(e.match(/\.[cm]?[jt]sx?$/))return!0;if(e===".exe"||e===".bin")return!1;let r=Buffer.alloc(4),s;try{s=ce.openSync(t,"r")}catch{return!0}try{ce.readSync(s,r,0,r.length,0)}finally{ce.closeSync(s)}let a=r.readUint32BE();return!(a===3405691582||a===3489328638||a===2135247942||(a&4294901760)===1297743872)}async function LR(t,{project:e}){let r=e.configuration,s=new Map,a=e.storedPackages.get(t.locatorHash);if(!a)throw new Error(`Package for ${Yr(r,t)} not found in the project`);let n=new b0.Writable,c=r.getLinkers(),f={project:e,report:new Ot({configuration:r,stdout:n})},p=new Set([t.locatorHash]);for(let E of a.dependencies.values()){let C=e.storedResolutions.get(E.descriptorHash);if(!C)throw new Error(`Assertion failed: The resolution (${ni(r,E)}) should have been registered`);p.add(C)}let h=await Promise.all(Array.from(p,async E=>{let C=e.storedPackages.get(E);if(!C)throw new Error(`Assertion failed: The package (${E}) should have been registered`);if(C.bin.size===0)return Wl.skip;let S=c.find(I=>I.supportsPackage(C,f));if(!S)return Wl.skip;let b=null;try{b=await S.findPackageLocation(C,f)}catch(I){if(I.code==="LOCATOR_NOT_INSTALLED")return Wl.skip;throw I}return{dependency:C,packageLocation:b}}));for(let E of h){if(E===Wl.skip)continue;let{dependency:C,packageLocation:S}=E;for(let[b,I]of C.bin){let T=J.resolve(S,I);s.set(b,[C,fe.fromPortablePath(T),Wj(T)])}}return s}async function ihe(t){return await LR(t.anchoredLocator,{project:t.project})}async function Yj(t,e){await Promise.all(Array.from(e,([r,[,s,a]])=>a?P0(t,r,process.execPath,[s]):P0(t,r,s,[])))}async function she(t,e,r,{cwd:s,project:a,stdin:n,stdout:c,stderr:f,nodeArgs:p=[],packageAccessibleBinaries:h}){h??=await LR(t,{project:a});let E=h.get(e);if(!E)throw new Error(`Binary not found (${e}) for ${Yr(a.configuration,t)}`);return await ce.mktempPromise(async C=>{let[,S]=E,b=await Iv({project:a,locator:t,binFolder:C});await Yj(b.BERRY_BIN_FOLDER,h);let I=Wj(fe.toPortablePath(S))?Wu(process.execPath,[...p,S,...r],{cwd:s,env:b,stdin:n,stdout:c,stderr:f}):Wu(S,r,{cwd:s,env:b,stdin:n,stdout:c,stderr:f}),T;try{T=await I}finally{await ce.removePromise(b.BERRY_BIN_FOLDER)}return T.code})}async function pit(t,e,r,{cwd:s,stdin:a,stdout:n,stderr:c,packageAccessibleBinaries:f}){return await she(t.anchoredLocator,e,r,{project:t.project,cwd:s,stdin:a,stdout:n,stderr:c,packageAccessibleBinaries:f})}var Xpe,b0,$pe,ait,lit,Vj=Ze(()=>{Dt();Dt();eA();pv();ql();Xpe=ut(Ld()),b0=Ie("stream");oI();Rc();Ev();yv();gR();xc();bc();Tp();Wo();$pe=(a=>(a.Yarn1="Yarn Classic",a.Yarn2="Yarn",a.Npm="npm",a.Pnpm="pnpm",a))($pe||{});ait=2,lit=(0,Xpe.default)(ait)});var DI=_((U4t,ahe)=>{"use strict";var ohe=new Map([["C","cwd"],["f","file"],["z","gzip"],["P","preservePaths"],["U","unlink"],["strip-components","strip"],["stripComponents","strip"],["keep-newer","newer"],["keepNewer","newer"],["keep-newer-files","newer"],["keepNewerFiles","newer"],["k","keep"],["keep-existing","keep"],["keepExisting","keep"],["m","noMtime"],["no-mtime","noMtime"],["p","preserveOwner"],["L","follow"],["h","follow"]]);ahe.exports=t=>t?Object.keys(t).map(e=>[ohe.has(e)?ohe.get(e):e,t[e]]).reduce((e,r)=>(e[r[0]]=r[1],e),Object.create(null)):{}});var bI=_((_4t,dhe)=>{"use strict";var lhe=typeof process=="object"&&process?process:{stdout:null,stderr:null},hit=Ie("events"),che=Ie("stream"),uhe=Ie("string_decoder").StringDecoder,_p=Symbol("EOF"),Hp=Symbol("maybeEmitEnd"),x0=Symbol("emittedEnd"),MR=Symbol("emittingEnd"),Cv=Symbol("emittedError"),UR=Symbol("closed"),fhe=Symbol("read"),_R=Symbol("flush"),Ahe=Symbol("flushChunk"),ul=Symbol("encoding"),jp=Symbol("decoder"),HR=Symbol("flowing"),wv=Symbol("paused"),PI=Symbol("resume"),Ys=Symbol("bufferLength"),Jj=Symbol("bufferPush"),Kj=Symbol("bufferShift"),Ko=Symbol("objectMode"),zo=Symbol("destroyed"),zj=Symbol("emitData"),phe=Symbol("emitEnd"),Zj=Symbol("emitEnd2"),Gp=Symbol("async"),Bv=t=>Promise.resolve().then(t),hhe=global._MP_NO_ITERATOR_SYMBOLS_!=="1",git=hhe&&Symbol.asyncIterator||Symbol("asyncIterator not implemented"),dit=hhe&&Symbol.iterator||Symbol("iterator not implemented"),mit=t=>t==="end"||t==="finish"||t==="prefinish",yit=t=>t instanceof ArrayBuffer||typeof t=="object"&&t.constructor&&t.constructor.name==="ArrayBuffer"&&t.byteLength>=0,Eit=t=>!Buffer.isBuffer(t)&&ArrayBuffer.isView(t),jR=class{constructor(e,r,s){this.src=e,this.dest=r,this.opts=s,this.ondrain=()=>e[PI](),r.on("drain",this.ondrain)}unpipe(){this.dest.removeListener("drain",this.ondrain)}proxyErrors(){}end(){this.unpipe(),this.opts.end&&this.dest.end()}},Xj=class extends jR{unpipe(){this.src.removeListener("error",this.proxyErrors),super.unpipe()}constructor(e,r,s){super(e,r,s),this.proxyErrors=a=>r.emit("error",a),e.on("error",this.proxyErrors)}};dhe.exports=class ghe extends che{constructor(e){super(),this[HR]=!1,this[wv]=!1,this.pipes=[],this.buffer=[],this[Ko]=e&&e.objectMode||!1,this[Ko]?this[ul]=null:this[ul]=e&&e.encoding||null,this[ul]==="buffer"&&(this[ul]=null),this[Gp]=e&&!!e.async||!1,this[jp]=this[ul]?new uhe(this[ul]):null,this[_p]=!1,this[x0]=!1,this[MR]=!1,this[UR]=!1,this[Cv]=null,this.writable=!0,this.readable=!0,this[Ys]=0,this[zo]=!1}get bufferLength(){return this[Ys]}get encoding(){return this[ul]}set encoding(e){if(this[Ko])throw new Error("cannot set encoding in objectMode");if(this[ul]&&e!==this[ul]&&(this[jp]&&this[jp].lastNeed||this[Ys]))throw new Error("cannot change encoding");this[ul]!==e&&(this[jp]=e?new uhe(e):null,this.buffer.length&&(this.buffer=this.buffer.map(r=>this[jp].write(r)))),this[ul]=e}setEncoding(e){this.encoding=e}get objectMode(){return this[Ko]}set objectMode(e){this[Ko]=this[Ko]||!!e}get async(){return this[Gp]}set async(e){this[Gp]=this[Gp]||!!e}write(e,r,s){if(this[_p])throw new Error("write after end");if(this[zo])return this.emit("error",Object.assign(new Error("Cannot call write after a stream was destroyed"),{code:"ERR_STREAM_DESTROYED"})),!0;typeof r=="function"&&(s=r,r="utf8"),r||(r="utf8");let a=this[Gp]?Bv:n=>n();return!this[Ko]&&!Buffer.isBuffer(e)&&(Eit(e)?e=Buffer.from(e.buffer,e.byteOffset,e.byteLength):yit(e)?e=Buffer.from(e):typeof e!="string"&&(this.objectMode=!0)),this[Ko]?(this.flowing&&this[Ys]!==0&&this[_R](!0),this.flowing?this.emit("data",e):this[Jj](e),this[Ys]!==0&&this.emit("readable"),s&&a(s),this.flowing):e.length?(typeof e=="string"&&!(r===this[ul]&&!this[jp].lastNeed)&&(e=Buffer.from(e,r)),Buffer.isBuffer(e)&&this[ul]&&(e=this[jp].write(e)),this.flowing&&this[Ys]!==0&&this[_R](!0),this.flowing?this.emit("data",e):this[Jj](e),this[Ys]!==0&&this.emit("readable"),s&&a(s),this.flowing):(this[Ys]!==0&&this.emit("readable"),s&&a(s),this.flowing)}read(e){if(this[zo])return null;if(this[Ys]===0||e===0||e>this[Ys])return this[Hp](),null;this[Ko]&&(e=null),this.buffer.length>1&&!this[Ko]&&(this.encoding?this.buffer=[this.buffer.join("")]:this.buffer=[Buffer.concat(this.buffer,this[Ys])]);let r=this[fhe](e||null,this.buffer[0]);return this[Hp](),r}[fhe](e,r){return e===r.length||e===null?this[Kj]():(this.buffer[0]=r.slice(e),r=r.slice(0,e),this[Ys]-=e),this.emit("data",r),!this.buffer.length&&!this[_p]&&this.emit("drain"),r}end(e,r,s){return typeof e=="function"&&(s=e,e=null),typeof r=="function"&&(s=r,r="utf8"),e&&this.write(e,r),s&&this.once("end",s),this[_p]=!0,this.writable=!1,(this.flowing||!this[wv])&&this[Hp](),this}[PI](){this[zo]||(this[wv]=!1,this[HR]=!0,this.emit("resume"),this.buffer.length?this[_R]():this[_p]?this[Hp]():this.emit("drain"))}resume(){return this[PI]()}pause(){this[HR]=!1,this[wv]=!0}get destroyed(){return this[zo]}get flowing(){return this[HR]}get paused(){return this[wv]}[Jj](e){this[Ko]?this[Ys]+=1:this[Ys]+=e.length,this.buffer.push(e)}[Kj](){return this.buffer.length&&(this[Ko]?this[Ys]-=1:this[Ys]-=this.buffer[0].length),this.buffer.shift()}[_R](e){do;while(this[Ahe](this[Kj]()));!e&&!this.buffer.length&&!this[_p]&&this.emit("drain")}[Ahe](e){return e?(this.emit("data",e),this.flowing):!1}pipe(e,r){if(this[zo])return;let s=this[x0];return r=r||{},e===lhe.stdout||e===lhe.stderr?r.end=!1:r.end=r.end!==!1,r.proxyErrors=!!r.proxyErrors,s?r.end&&e.end():(this.pipes.push(r.proxyErrors?new Xj(this,e,r):new jR(this,e,r)),this[Gp]?Bv(()=>this[PI]()):this[PI]()),e}unpipe(e){let r=this.pipes.find(s=>s.dest===e);r&&(this.pipes.splice(this.pipes.indexOf(r),1),r.unpipe())}addListener(e,r){return this.on(e,r)}on(e,r){let s=super.on(e,r);return e==="data"&&!this.pipes.length&&!this.flowing?this[PI]():e==="readable"&&this[Ys]!==0?super.emit("readable"):mit(e)&&this[x0]?(super.emit(e),this.removeAllListeners(e)):e==="error"&&this[Cv]&&(this[Gp]?Bv(()=>r.call(this,this[Cv])):r.call(this,this[Cv])),s}get emittedEnd(){return this[x0]}[Hp](){!this[MR]&&!this[x0]&&!this[zo]&&this.buffer.length===0&&this[_p]&&(this[MR]=!0,this.emit("end"),this.emit("prefinish"),this.emit("finish"),this[UR]&&this.emit("close"),this[MR]=!1)}emit(e,r,...s){if(e!=="error"&&e!=="close"&&e!==zo&&this[zo])return;if(e==="data")return r?this[Gp]?Bv(()=>this[zj](r)):this[zj](r):!1;if(e==="end")return this[phe]();if(e==="close"){if(this[UR]=!0,!this[x0]&&!this[zo])return;let n=super.emit("close");return this.removeAllListeners("close"),n}else if(e==="error"){this[Cv]=r;let n=super.emit("error",r);return this[Hp](),n}else if(e==="resume"){let n=super.emit("resume");return this[Hp](),n}else if(e==="finish"||e==="prefinish"){let n=super.emit(e);return this.removeAllListeners(e),n}let a=super.emit(e,r,...s);return this[Hp](),a}[zj](e){for(let s of this.pipes)s.dest.write(e)===!1&&this.pause();let r=super.emit("data",e);return this[Hp](),r}[phe](){this[x0]||(this[x0]=!0,this.readable=!1,this[Gp]?Bv(()=>this[Zj]()):this[Zj]())}[Zj](){if(this[jp]){let r=this[jp].end();if(r){for(let s of this.pipes)s.dest.write(r);super.emit("data",r)}}for(let r of this.pipes)r.end();let e=super.emit("end");return this.removeAllListeners("end"),e}collect(){let e=[];this[Ko]||(e.dataLength=0);let r=this.promise();return this.on("data",s=>{e.push(s),this[Ko]||(e.dataLength+=s.length)}),r.then(()=>e)}concat(){return this[Ko]?Promise.reject(new Error("cannot concat in objectMode")):this.collect().then(e=>this[Ko]?Promise.reject(new Error("cannot concat in objectMode")):this[ul]?e.join(""):Buffer.concat(e,e.dataLength))}promise(){return new Promise((e,r)=>{this.on(zo,()=>r(new Error("stream destroyed"))),this.on("error",s=>r(s)),this.on("end",()=>e())})}[git](){return{next:()=>{let r=this.read();if(r!==null)return Promise.resolve({done:!1,value:r});if(this[_p])return Promise.resolve({done:!0});let s=null,a=null,n=h=>{this.removeListener("data",c),this.removeListener("end",f),a(h)},c=h=>{this.removeListener("error",n),this.removeListener("end",f),this.pause(),s({value:h,done:!!this[_p]})},f=()=>{this.removeListener("error",n),this.removeListener("data",c),s({done:!0})},p=()=>n(new Error("stream destroyed"));return new Promise((h,E)=>{a=E,s=h,this.once(zo,p),this.once("error",n),this.once("end",f),this.once("data",c)})}}}[dit](){return{next:()=>{let r=this.read();return{value:r,done:r===null}}}}destroy(e){return this[zo]?(e?this.emit("error",e):this.emit(zo),this):(this[zo]=!0,this.buffer.length=0,this[Ys]=0,typeof this.close=="function"&&!this[UR]&&this.close(),e?this.emit("error",e):this.emit(zo),this)}static isStream(e){return!!e&&(e instanceof ghe||e instanceof che||e instanceof hit&&(typeof e.pipe=="function"||typeof e.write=="function"&&typeof e.end=="function"))}}});var yhe=_((H4t,mhe)=>{var Iit=Ie("zlib").constants||{ZLIB_VERNUM:4736};mhe.exports=Object.freeze(Object.assign(Object.create(null),{Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_MEM_ERROR:-4,Z_BUF_ERROR:-5,Z_VERSION_ERROR:-6,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,DEFLATE:1,INFLATE:2,GZIP:3,GUNZIP:4,DEFLATERAW:5,INFLATERAW:6,UNZIP:7,BROTLI_DECODE:8,BROTLI_ENCODE:9,Z_MIN_WINDOWBITS:8,Z_MAX_WINDOWBITS:15,Z_DEFAULT_WINDOWBITS:15,Z_MIN_CHUNK:64,Z_MAX_CHUNK:1/0,Z_DEFAULT_CHUNK:16384,Z_MIN_MEMLEVEL:1,Z_MAX_MEMLEVEL:9,Z_DEFAULT_MEMLEVEL:8,Z_MIN_LEVEL:-1,Z_MAX_LEVEL:9,Z_DEFAULT_LEVEL:-1,BROTLI_OPERATION_PROCESS:0,BROTLI_OPERATION_FLUSH:1,BROTLI_OPERATION_FINISH:2,BROTLI_OPERATION_EMIT_METADATA:3,BROTLI_MODE_GENERIC:0,BROTLI_MODE_TEXT:1,BROTLI_MODE_FONT:2,BROTLI_DEFAULT_MODE:0,BROTLI_MIN_QUALITY:0,BROTLI_MAX_QUALITY:11,BROTLI_DEFAULT_QUALITY:11,BROTLI_MIN_WINDOW_BITS:10,BROTLI_MAX_WINDOW_BITS:24,BROTLI_LARGE_MAX_WINDOW_BITS:30,BROTLI_DEFAULT_WINDOW:22,BROTLI_MIN_INPUT_BLOCK_BITS:16,BROTLI_MAX_INPUT_BLOCK_BITS:24,BROTLI_PARAM_MODE:0,BROTLI_PARAM_QUALITY:1,BROTLI_PARAM_LGWIN:2,BROTLI_PARAM_LGBLOCK:3,BROTLI_PARAM_DISABLE_LITERAL_CONTEXT_MODELING:4,BROTLI_PARAM_SIZE_HINT:5,BROTLI_PARAM_LARGE_WINDOW:6,BROTLI_PARAM_NPOSTFIX:7,BROTLI_PARAM_NDIRECT:8,BROTLI_DECODER_RESULT_ERROR:0,BROTLI_DECODER_RESULT_SUCCESS:1,BROTLI_DECODER_RESULT_NEEDS_MORE_INPUT:2,BROTLI_DECODER_RESULT_NEEDS_MORE_OUTPUT:3,BROTLI_DECODER_PARAM_DISABLE_RING_BUFFER_REALLOCATION:0,BROTLI_DECODER_PARAM_LARGE_WINDOW:1,BROTLI_DECODER_NO_ERROR:0,BROTLI_DECODER_SUCCESS:1,BROTLI_DECODER_NEEDS_MORE_INPUT:2,BROTLI_DECODER_NEEDS_MORE_OUTPUT:3,BROTLI_DECODER_ERROR_FORMAT_EXUBERANT_NIBBLE:-1,BROTLI_DECODER_ERROR_FORMAT_RESERVED:-2,BROTLI_DECODER_ERROR_FORMAT_EXUBERANT_META_NIBBLE:-3,BROTLI_DECODER_ERROR_FORMAT_SIMPLE_HUFFMAN_ALPHABET:-4,BROTLI_DECODER_ERROR_FORMAT_SIMPLE_HUFFMAN_SAME:-5,BROTLI_DECODER_ERROR_FORMAT_CL_SPACE:-6,BROTLI_DECODER_ERROR_FORMAT_HUFFMAN_SPACE:-7,BROTLI_DECODER_ERROR_FORMAT_CONTEXT_MAP_REPEAT:-8,BROTLI_DECODER_ERROR_FORMAT_BLOCK_LENGTH_1:-9,BROTLI_DECODER_ERROR_FORMAT_BLOCK_LENGTH_2:-10,BROTLI_DECODER_ERROR_FORMAT_TRANSFORM:-11,BROTLI_DECODER_ERROR_FORMAT_DICTIONARY:-12,BROTLI_DECODER_ERROR_FORMAT_WINDOW_BITS:-13,BROTLI_DECODER_ERROR_FORMAT_PADDING_1:-14,BROTLI_DECODER_ERROR_FORMAT_PADDING_2:-15,BROTLI_DECODER_ERROR_FORMAT_DISTANCE:-16,BROTLI_DECODER_ERROR_DICTIONARY_NOT_SET:-19,BROTLI_DECODER_ERROR_INVALID_ARGUMENTS:-20,BROTLI_DECODER_ERROR_ALLOC_CONTEXT_MODES:-21,BROTLI_DECODER_ERROR_ALLOC_TREE_GROUPS:-22,BROTLI_DECODER_ERROR_ALLOC_CONTEXT_MAP:-25,BROTLI_DECODER_ERROR_ALLOC_RING_BUFFER_1:-26,BROTLI_DECODER_ERROR_ALLOC_RING_BUFFER_2:-27,BROTLI_DECODER_ERROR_ALLOC_BLOCK_TYPE_TREES:-30,BROTLI_DECODER_ERROR_UNREACHABLE:-31},Iit))});var h6=_(Kl=>{"use strict";var n6=Ie("assert"),k0=Ie("buffer").Buffer,Che=Ie("zlib"),fm=Kl.constants=yhe(),Cit=bI(),Ehe=k0.concat,Am=Symbol("_superWrite"),kI=class extends Error{constructor(e){super("zlib: "+e.message),this.code=e.code,this.errno=e.errno,this.code||(this.code="ZLIB_ERROR"),this.message="zlib: "+e.message,Error.captureStackTrace(this,this.constructor)}get name(){return"ZlibError"}},wit=Symbol("opts"),vv=Symbol("flushFlag"),Ihe=Symbol("finishFlushFlag"),p6=Symbol("fullFlushFlag"),Ii=Symbol("handle"),GR=Symbol("onError"),xI=Symbol("sawError"),$j=Symbol("level"),e6=Symbol("strategy"),t6=Symbol("ended"),j4t=Symbol("_defaultFullFlush"),qR=class extends Cit{constructor(e,r){if(!e||typeof e!="object")throw new TypeError("invalid options for ZlibBase constructor");super(e),this[xI]=!1,this[t6]=!1,this[wit]=e,this[vv]=e.flush,this[Ihe]=e.finishFlush;try{this[Ii]=new Che[r](e)}catch(s){throw new kI(s)}this[GR]=s=>{this[xI]||(this[xI]=!0,this.close(),this.emit("error",s))},this[Ii].on("error",s=>this[GR](new kI(s))),this.once("end",()=>this.close)}close(){this[Ii]&&(this[Ii].close(),this[Ii]=null,this.emit("close"))}reset(){if(!this[xI])return n6(this[Ii],"zlib binding closed"),this[Ii].reset()}flush(e){this.ended||(typeof e!="number"&&(e=this[p6]),this.write(Object.assign(k0.alloc(0),{[vv]:e})))}end(e,r,s){return e&&this.write(e,r),this.flush(this[Ihe]),this[t6]=!0,super.end(null,null,s)}get ended(){return this[t6]}write(e,r,s){if(typeof r=="function"&&(s=r,r="utf8"),typeof e=="string"&&(e=k0.from(e,r)),this[xI])return;n6(this[Ii],"zlib binding closed");let a=this[Ii]._handle,n=a.close;a.close=()=>{};let c=this[Ii].close;this[Ii].close=()=>{},k0.concat=h=>h;let f;try{let h=typeof e[vv]=="number"?e[vv]:this[vv];f=this[Ii]._processChunk(e,h),k0.concat=Ehe}catch(h){k0.concat=Ehe,this[GR](new kI(h))}finally{this[Ii]&&(this[Ii]._handle=a,a.close=n,this[Ii].close=c,this[Ii].removeAllListeners("error"))}this[Ii]&&this[Ii].on("error",h=>this[GR](new kI(h)));let p;if(f)if(Array.isArray(f)&&f.length>0){p=this[Am](k0.from(f[0]));for(let h=1;h{this.flush(a),n()};try{this[Ii].params(e,r)}finally{this[Ii].flush=s}this[Ii]&&(this[$j]=e,this[e6]=r)}}}},i6=class extends qp{constructor(e){super(e,"Deflate")}},s6=class extends qp{constructor(e){super(e,"Inflate")}},r6=Symbol("_portable"),o6=class extends qp{constructor(e){super(e,"Gzip"),this[r6]=e&&!!e.portable}[Am](e){return this[r6]?(this[r6]=!1,e[9]=255,super[Am](e)):super[Am](e)}},a6=class extends qp{constructor(e){super(e,"Gunzip")}},l6=class extends qp{constructor(e){super(e,"DeflateRaw")}},c6=class extends qp{constructor(e){super(e,"InflateRaw")}},u6=class extends qp{constructor(e){super(e,"Unzip")}},WR=class extends qR{constructor(e,r){e=e||{},e.flush=e.flush||fm.BROTLI_OPERATION_PROCESS,e.finishFlush=e.finishFlush||fm.BROTLI_OPERATION_FINISH,super(e,r),this[p6]=fm.BROTLI_OPERATION_FLUSH}},f6=class extends WR{constructor(e){super(e,"BrotliCompress")}},A6=class extends WR{constructor(e){super(e,"BrotliDecompress")}};Kl.Deflate=i6;Kl.Inflate=s6;Kl.Gzip=o6;Kl.Gunzip=a6;Kl.DeflateRaw=l6;Kl.InflateRaw=c6;Kl.Unzip=u6;typeof Che.BrotliCompress=="function"?(Kl.BrotliCompress=f6,Kl.BrotliDecompress=A6):Kl.BrotliCompress=Kl.BrotliDecompress=class{constructor(){throw new Error("Brotli is not supported in this version of Node.js")}}});var QI=_((W4t,whe)=>{var Bit=process.env.TESTING_TAR_FAKE_PLATFORM||process.platform;whe.exports=Bit!=="win32"?t=>t:t=>t&&t.replace(/\\/g,"/")});var YR=_((V4t,Bhe)=>{"use strict";var vit=bI(),g6=QI(),d6=Symbol("slurp");Bhe.exports=class extends vit{constructor(e,r,s){switch(super(),this.pause(),this.extended=r,this.globalExtended=s,this.header=e,this.startBlockSize=512*Math.ceil(e.size/512),this.blockRemain=this.startBlockSize,this.remain=e.size,this.type=e.type,this.meta=!1,this.ignore=!1,this.type){case"File":case"OldFile":case"Link":case"SymbolicLink":case"CharacterDevice":case"BlockDevice":case"Directory":case"FIFO":case"ContiguousFile":case"GNUDumpDir":break;case"NextFileHasLongLinkpath":case"NextFileHasLongPath":case"OldGnuLongPath":case"GlobalExtendedHeader":case"ExtendedHeader":case"OldExtendedHeader":this.meta=!0;break;default:this.ignore=!0}this.path=g6(e.path),this.mode=e.mode,this.mode&&(this.mode=this.mode&4095),this.uid=e.uid,this.gid=e.gid,this.uname=e.uname,this.gname=e.gname,this.size=e.size,this.mtime=e.mtime,this.atime=e.atime,this.ctime=e.ctime,this.linkpath=g6(e.linkpath),this.uname=e.uname,this.gname=e.gname,r&&this[d6](r),s&&this[d6](s,!0)}write(e){let r=e.length;if(r>this.blockRemain)throw new Error("writing more to entry than is appropriate");let s=this.remain,a=this.blockRemain;return this.remain=Math.max(0,s-r),this.blockRemain=Math.max(0,a-r),this.ignore?!0:s>=r?super.write(e):super.write(e.slice(0,s))}[d6](e,r){for(let s in e)e[s]!==null&&e[s]!==void 0&&!(r&&s==="path")&&(this[s]=s==="path"||s==="linkpath"?g6(e[s]):e[s])}}});var m6=_(VR=>{"use strict";VR.name=new Map([["0","File"],["","OldFile"],["1","Link"],["2","SymbolicLink"],["3","CharacterDevice"],["4","BlockDevice"],["5","Directory"],["6","FIFO"],["7","ContiguousFile"],["g","GlobalExtendedHeader"],["x","ExtendedHeader"],["A","SolarisACL"],["D","GNUDumpDir"],["I","Inode"],["K","NextFileHasLongLinkpath"],["L","NextFileHasLongPath"],["M","ContinuationFile"],["N","OldGnuLongPath"],["S","SparseFile"],["V","TapeVolumeHeader"],["X","OldExtendedHeader"]]);VR.code=new Map(Array.from(VR.name).map(t=>[t[1],t[0]]))});var Phe=_((K4t,Dhe)=>{"use strict";var Sit=(t,e)=>{if(Number.isSafeInteger(t))t<0?Pit(t,e):Dit(t,e);else throw Error("cannot encode number outside of javascript safe integer range");return e},Dit=(t,e)=>{e[0]=128;for(var r=e.length;r>1;r--)e[r-1]=t&255,t=Math.floor(t/256)},Pit=(t,e)=>{e[0]=255;var r=!1;t=t*-1;for(var s=e.length;s>1;s--){var a=t&255;t=Math.floor(t/256),r?e[s-1]=vhe(a):a===0?e[s-1]=0:(r=!0,e[s-1]=She(a))}},bit=t=>{let e=t[0],r=e===128?kit(t.slice(1,t.length)):e===255?xit(t):null;if(r===null)throw Error("invalid base256 encoding");if(!Number.isSafeInteger(r))throw Error("parsed number outside of javascript safe integer range");return r},xit=t=>{for(var e=t.length,r=0,s=!1,a=e-1;a>-1;a--){var n=t[a],c;s?c=vhe(n):n===0?c=n:(s=!0,c=She(n)),c!==0&&(r-=c*Math.pow(256,e-a-1))}return r},kit=t=>{for(var e=t.length,r=0,s=e-1;s>-1;s--){var a=t[s];a!==0&&(r+=a*Math.pow(256,e-s-1))}return r},vhe=t=>(255^t)&255,She=t=>(255^t)+1&255;Dhe.exports={encode:Sit,parse:bit}});var TI=_((z4t,xhe)=>{"use strict";var y6=m6(),RI=Ie("path").posix,bhe=Phe(),E6=Symbol("slurp"),zl=Symbol("type"),w6=class{constructor(e,r,s,a){this.cksumValid=!1,this.needPax=!1,this.nullBlock=!1,this.block=null,this.path=null,this.mode=null,this.uid=null,this.gid=null,this.size=null,this.mtime=null,this.cksum=null,this[zl]="0",this.linkpath=null,this.uname=null,this.gname=null,this.devmaj=0,this.devmin=0,this.atime=null,this.ctime=null,Buffer.isBuffer(e)?this.decode(e,r||0,s,a):e&&this.set(e)}decode(e,r,s,a){if(r||(r=0),!e||!(e.length>=r+512))throw new Error("need 512 bytes for header");if(this.path=pm(e,r,100),this.mode=Q0(e,r+100,8),this.uid=Q0(e,r+108,8),this.gid=Q0(e,r+116,8),this.size=Q0(e,r+124,12),this.mtime=I6(e,r+136,12),this.cksum=Q0(e,r+148,12),this[E6](s),this[E6](a,!0),this[zl]=pm(e,r+156,1),this[zl]===""&&(this[zl]="0"),this[zl]==="0"&&this.path.substr(-1)==="/"&&(this[zl]="5"),this[zl]==="5"&&(this.size=0),this.linkpath=pm(e,r+157,100),e.slice(r+257,r+265).toString()==="ustar\x0000")if(this.uname=pm(e,r+265,32),this.gname=pm(e,r+297,32),this.devmaj=Q0(e,r+329,8),this.devmin=Q0(e,r+337,8),e[r+475]!==0){let c=pm(e,r+345,155);this.path=c+"/"+this.path}else{let c=pm(e,r+345,130);c&&(this.path=c+"/"+this.path),this.atime=I6(e,r+476,12),this.ctime=I6(e,r+488,12)}let n=8*32;for(let c=r;c=r+512))throw new Error("need 512 bytes for header");let s=this.ctime||this.atime?130:155,a=Qit(this.path||"",s),n=a[0],c=a[1];this.needPax=a[2],this.needPax=hm(e,r,100,n)||this.needPax,this.needPax=R0(e,r+100,8,this.mode)||this.needPax,this.needPax=R0(e,r+108,8,this.uid)||this.needPax,this.needPax=R0(e,r+116,8,this.gid)||this.needPax,this.needPax=R0(e,r+124,12,this.size)||this.needPax,this.needPax=C6(e,r+136,12,this.mtime)||this.needPax,e[r+156]=this[zl].charCodeAt(0),this.needPax=hm(e,r+157,100,this.linkpath)||this.needPax,e.write("ustar\x0000",r+257,8),this.needPax=hm(e,r+265,32,this.uname)||this.needPax,this.needPax=hm(e,r+297,32,this.gname)||this.needPax,this.needPax=R0(e,r+329,8,this.devmaj)||this.needPax,this.needPax=R0(e,r+337,8,this.devmin)||this.needPax,this.needPax=hm(e,r+345,s,c)||this.needPax,e[r+475]!==0?this.needPax=hm(e,r+345,155,c)||this.needPax:(this.needPax=hm(e,r+345,130,c)||this.needPax,this.needPax=C6(e,r+476,12,this.atime)||this.needPax,this.needPax=C6(e,r+488,12,this.ctime)||this.needPax);let f=8*32;for(let p=r;p{let s=t,a="",n,c=RI.parse(t).root||".";if(Buffer.byteLength(s)<100)n=[s,a,!1];else{a=RI.dirname(s),s=RI.basename(s);do Buffer.byteLength(s)<=100&&Buffer.byteLength(a)<=e?n=[s,a,!1]:Buffer.byteLength(s)>100&&Buffer.byteLength(a)<=e?n=[s.substr(0,99),a,!0]:(s=RI.join(RI.basename(a),s),a=RI.dirname(a));while(a!==c&&!n);n||(n=[t.substr(0,99),"",!0])}return n},pm=(t,e,r)=>t.slice(e,e+r).toString("utf8").replace(/\0.*/,""),I6=(t,e,r)=>Rit(Q0(t,e,r)),Rit=t=>t===null?null:new Date(t*1e3),Q0=(t,e,r)=>t[e]&128?bhe.parse(t.slice(e,e+r)):Fit(t,e,r),Tit=t=>isNaN(t)?null:t,Fit=(t,e,r)=>Tit(parseInt(t.slice(e,e+r).toString("utf8").replace(/\0.*$/,"").trim(),8)),Nit={12:8589934591,8:2097151},R0=(t,e,r,s)=>s===null?!1:s>Nit[r]||s<0?(bhe.encode(s,t.slice(e,e+r)),!0):(Oit(t,e,r,s),!1),Oit=(t,e,r,s)=>t.write(Lit(s,r),e,r,"ascii"),Lit=(t,e)=>Mit(Math.floor(t).toString(8),e),Mit=(t,e)=>(t.length===e-1?t:new Array(e-t.length-1).join("0")+t+" ")+"\0",C6=(t,e,r,s)=>s===null?!1:R0(t,e,r,s.getTime()/1e3),Uit=new Array(156).join("\0"),hm=(t,e,r,s)=>s===null?!1:(t.write(s+Uit,e,r,"utf8"),s.length!==Buffer.byteLength(s)||s.length>r);xhe.exports=w6});var JR=_((Z4t,khe)=>{"use strict";var _it=TI(),Hit=Ie("path"),Sv=class{constructor(e,r){this.atime=e.atime||null,this.charset=e.charset||null,this.comment=e.comment||null,this.ctime=e.ctime||null,this.gid=e.gid||null,this.gname=e.gname||null,this.linkpath=e.linkpath||null,this.mtime=e.mtime||null,this.path=e.path||null,this.size=e.size||null,this.uid=e.uid||null,this.uname=e.uname||null,this.dev=e.dev||null,this.ino=e.ino||null,this.nlink=e.nlink||null,this.global=r||!1}encode(){let e=this.encodeBody();if(e==="")return null;let r=Buffer.byteLength(e),s=512*Math.ceil(1+r/512),a=Buffer.allocUnsafe(s);for(let n=0;n<512;n++)a[n]=0;new _it({path:("PaxHeader/"+Hit.basename(this.path)).slice(0,99),mode:this.mode||420,uid:this.uid||null,gid:this.gid||null,size:r,mtime:this.mtime||null,type:this.global?"GlobalExtendedHeader":"ExtendedHeader",linkpath:"",uname:this.uname||"",gname:this.gname||"",devmaj:0,devmin:0,atime:this.atime||null,ctime:this.ctime||null}).encode(a),a.write(e,512,r,"utf8");for(let n=r+512;n=Math.pow(10,n)&&(n+=1),n+a+s}};Sv.parse=(t,e,r)=>new Sv(jit(Git(t),e),r);var jit=(t,e)=>e?Object.keys(t).reduce((r,s)=>(r[s]=t[s],r),e):t,Git=t=>t.replace(/\n$/,"").split(` `).reduce(qit,Object.create(null)),qit=(t,e)=>{let r=parseInt(e,10);if(r!==Buffer.byteLength(e)+1)return t;e=e.substr((r+" ").length);let s=e.split("="),a=s.shift().replace(/^SCHILY\.(dev|ino|nlink)/,"$1");if(!a)return t;let n=s.join("=");return t[a]=/^([A-Z]+\.)?([mac]|birth|creation)time$/.test(a)?new Date(n*1e3):/^[0-9]+$/.test(n)?+n:n,t};khe.exports=Sv});var FI=_((X4t,Qhe)=>{Qhe.exports=t=>{let e=t.length-1,r=-1;for(;e>-1&&t.charAt(e)==="/";)r=e,e--;return r===-1?t:t.slice(0,r)}});var KR=_(($4t,Rhe)=>{"use strict";Rhe.exports=t=>class extends t{warn(e,r,s={}){this.file&&(s.file=this.file),this.cwd&&(s.cwd=this.cwd),s.code=r instanceof Error&&r.code||e,s.tarCode=e,!this.strict&&s.recoverable!==!1?(r instanceof Error&&(s=Object.assign(r,s),r=r.message),this.emit("warn",s.tarCode,r,s)):r instanceof Error?this.emit("error",Object.assign(r,s)):this.emit("error",Object.assign(new Error(`${e}: ${r}`),s))}}});var v6=_((t3t,The)=>{"use strict";var zR=["|","<",">","?",":"],B6=zR.map(t=>String.fromCharCode(61440+t.charCodeAt(0))),Wit=new Map(zR.map((t,e)=>[t,B6[e]])),Yit=new Map(B6.map((t,e)=>[t,zR[e]]));The.exports={encode:t=>zR.reduce((e,r)=>e.split(r).join(Wit.get(r)),t),decode:t=>B6.reduce((e,r)=>e.split(r).join(Yit.get(r)),t)}});var S6=_((r3t,Nhe)=>{var{isAbsolute:Vit,parse:Fhe}=Ie("path").win32;Nhe.exports=t=>{let e="",r=Fhe(t);for(;Vit(t)||r.root;){let s=t.charAt(0)==="/"&&t.slice(0,4)!=="//?/"?"/":r.root;t=t.substr(s.length),e+=s,r=Fhe(t)}return[e,t]}});var Lhe=_((n3t,Ohe)=>{"use strict";Ohe.exports=(t,e,r)=>(t&=4095,r&&(t=(t|384)&-19),e&&(t&256&&(t|=64),t&32&&(t|=8),t&4&&(t|=1)),t)});var N6=_((o3t,Zhe)=>{"use strict";var qhe=bI(),Whe=JR(),Yhe=TI(),nA=Ie("fs"),Mhe=Ie("path"),rA=QI(),Jit=FI(),Vhe=(t,e)=>e?(t=rA(t).replace(/^\.(\/|$)/,""),Jit(e)+"/"+t):rA(t),Kit=16*1024*1024,Uhe=Symbol("process"),_he=Symbol("file"),Hhe=Symbol("directory"),P6=Symbol("symlink"),jhe=Symbol("hardlink"),Dv=Symbol("header"),ZR=Symbol("read"),b6=Symbol("lstat"),XR=Symbol("onlstat"),x6=Symbol("onread"),k6=Symbol("onreadlink"),Q6=Symbol("openfile"),R6=Symbol("onopenfile"),T0=Symbol("close"),$R=Symbol("mode"),T6=Symbol("awaitDrain"),D6=Symbol("ondrain"),iA=Symbol("prefix"),Ghe=Symbol("hadError"),Jhe=KR(),zit=v6(),Khe=S6(),zhe=Lhe(),eT=Jhe(class extends qhe{constructor(e,r){if(r=r||{},super(r),typeof e!="string")throw new TypeError("path is required");this.path=rA(e),this.portable=!!r.portable,this.myuid=process.getuid&&process.getuid()||0,this.myuser=process.env.USER||"",this.maxReadSize=r.maxReadSize||Kit,this.linkCache=r.linkCache||new Map,this.statCache=r.statCache||new Map,this.preservePaths=!!r.preservePaths,this.cwd=rA(r.cwd||process.cwd()),this.strict=!!r.strict,this.noPax=!!r.noPax,this.noMtime=!!r.noMtime,this.mtime=r.mtime||null,this.prefix=r.prefix?rA(r.prefix):null,this.fd=null,this.blockLen=null,this.blockRemain=null,this.buf=null,this.offset=null,this.length=null,this.pos=null,this.remain=null,typeof r.onwarn=="function"&&this.on("warn",r.onwarn);let s=!1;if(!this.preservePaths){let[a,n]=Khe(this.path);a&&(this.path=n,s=a)}this.win32=!!r.win32||process.platform==="win32",this.win32&&(this.path=zit.decode(this.path.replace(/\\/g,"/")),e=e.replace(/\\/g,"/")),this.absolute=rA(r.absolute||Mhe.resolve(this.cwd,e)),this.path===""&&(this.path="./"),s&&this.warn("TAR_ENTRY_INFO",`stripping ${s} from absolute path`,{entry:this,path:s+this.path}),this.statCache.has(this.absolute)?this[XR](this.statCache.get(this.absolute)):this[b6]()}emit(e,...r){return e==="error"&&(this[Ghe]=!0),super.emit(e,...r)}[b6](){nA.lstat(this.absolute,(e,r)=>{if(e)return this.emit("error",e);this[XR](r)})}[XR](e){this.statCache.set(this.absolute,e),this.stat=e,e.isFile()||(e.size=0),this.type=Xit(e),this.emit("stat",e),this[Uhe]()}[Uhe](){switch(this.type){case"File":return this[_he]();case"Directory":return this[Hhe]();case"SymbolicLink":return this[P6]();default:return this.end()}}[$R](e){return zhe(e,this.type==="Directory",this.portable)}[iA](e){return Vhe(e,this.prefix)}[Dv](){this.type==="Directory"&&this.portable&&(this.noMtime=!0),this.header=new Yhe({path:this[iA](this.path),linkpath:this.type==="Link"?this[iA](this.linkpath):this.linkpath,mode:this[$R](this.stat.mode),uid:this.portable?null:this.stat.uid,gid:this.portable?null:this.stat.gid,size:this.stat.size,mtime:this.noMtime?null:this.mtime||this.stat.mtime,type:this.type,uname:this.portable?null:this.stat.uid===this.myuid?this.myuser:"",atime:this.portable?null:this.stat.atime,ctime:this.portable?null:this.stat.ctime}),this.header.encode()&&!this.noPax&&super.write(new Whe({atime:this.portable?null:this.header.atime,ctime:this.portable?null:this.header.ctime,gid:this.portable?null:this.header.gid,mtime:this.noMtime?null:this.mtime||this.header.mtime,path:this[iA](this.path),linkpath:this.type==="Link"?this[iA](this.linkpath):this.linkpath,size:this.header.size,uid:this.portable?null:this.header.uid,uname:this.portable?null:this.header.uname,dev:this.portable?null:this.stat.dev,ino:this.portable?null:this.stat.ino,nlink:this.portable?null:this.stat.nlink}).encode()),super.write(this.header.block)}[Hhe](){this.path.substr(-1)!=="/"&&(this.path+="/"),this.stat.size=0,this[Dv](),this.end()}[P6](){nA.readlink(this.absolute,(e,r)=>{if(e)return this.emit("error",e);this[k6](r)})}[k6](e){this.linkpath=rA(e),this[Dv](),this.end()}[jhe](e){this.type="Link",this.linkpath=rA(Mhe.relative(this.cwd,e)),this.stat.size=0,this[Dv](),this.end()}[_he](){if(this.stat.nlink>1){let e=this.stat.dev+":"+this.stat.ino;if(this.linkCache.has(e)){let r=this.linkCache.get(e);if(r.indexOf(this.cwd)===0)return this[jhe](r)}this.linkCache.set(e,this.absolute)}if(this[Dv](),this.stat.size===0)return this.end();this[Q6]()}[Q6](){nA.open(this.absolute,"r",(e,r)=>{if(e)return this.emit("error",e);this[R6](r)})}[R6](e){if(this.fd=e,this[Ghe])return this[T0]();this.blockLen=512*Math.ceil(this.stat.size/512),this.blockRemain=this.blockLen;let r=Math.min(this.blockLen,this.maxReadSize);this.buf=Buffer.allocUnsafe(r),this.offset=0,this.pos=0,this.remain=this.stat.size,this.length=this.buf.length,this[ZR]()}[ZR](){let{fd:e,buf:r,offset:s,length:a,pos:n}=this;nA.read(e,r,s,a,n,(c,f)=>{if(c)return this[T0](()=>this.emit("error",c));this[x6](f)})}[T0](e){nA.close(this.fd,e)}[x6](e){if(e<=0&&this.remain>0){let a=new Error("encountered unexpected EOF");return a.path=this.absolute,a.syscall="read",a.code="EOF",this[T0](()=>this.emit("error",a))}if(e>this.remain){let a=new Error("did not encounter expected EOF");return a.path=this.absolute,a.syscall="read",a.code="EOF",this[T0](()=>this.emit("error",a))}if(e===this.remain)for(let a=e;athis[D6]())}[T6](e){this.once("drain",e)}write(e){if(this.blockRemaine?this.emit("error",e):this.end());this.offset>=this.length&&(this.buf=Buffer.allocUnsafe(Math.min(this.blockRemain,this.buf.length)),this.offset=0),this.length=this.buf.length-this.offset,this[ZR]()}}),F6=class extends eT{[b6](){this[XR](nA.lstatSync(this.absolute))}[P6](){this[k6](nA.readlinkSync(this.absolute))}[Q6](){this[R6](nA.openSync(this.absolute,"r"))}[ZR](){let e=!0;try{let{fd:r,buf:s,offset:a,length:n,pos:c}=this,f=nA.readSync(r,s,a,n,c);this[x6](f),e=!1}finally{if(e)try{this[T0](()=>{})}catch{}}}[T6](e){e()}[T0](e){nA.closeSync(this.fd),e()}},Zit=Jhe(class extends qhe{constructor(e,r){r=r||{},super(r),this.preservePaths=!!r.preservePaths,this.portable=!!r.portable,this.strict=!!r.strict,this.noPax=!!r.noPax,this.noMtime=!!r.noMtime,this.readEntry=e,this.type=e.type,this.type==="Directory"&&this.portable&&(this.noMtime=!0),this.prefix=r.prefix||null,this.path=rA(e.path),this.mode=this[$R](e.mode),this.uid=this.portable?null:e.uid,this.gid=this.portable?null:e.gid,this.uname=this.portable?null:e.uname,this.gname=this.portable?null:e.gname,this.size=e.size,this.mtime=this.noMtime?null:r.mtime||e.mtime,this.atime=this.portable?null:e.atime,this.ctime=this.portable?null:e.ctime,this.linkpath=rA(e.linkpath),typeof r.onwarn=="function"&&this.on("warn",r.onwarn);let s=!1;if(!this.preservePaths){let[a,n]=Khe(this.path);a&&(this.path=n,s=a)}this.remain=e.size,this.blockRemain=e.startBlockSize,this.header=new Yhe({path:this[iA](this.path),linkpath:this.type==="Link"?this[iA](this.linkpath):this.linkpath,mode:this.mode,uid:this.portable?null:this.uid,gid:this.portable?null:this.gid,size:this.size,mtime:this.noMtime?null:this.mtime,type:this.type,uname:this.portable?null:this.uname,atime:this.portable?null:this.atime,ctime:this.portable?null:this.ctime}),s&&this.warn("TAR_ENTRY_INFO",`stripping ${s} from absolute path`,{entry:this,path:s+this.path}),this.header.encode()&&!this.noPax&&super.write(new Whe({atime:this.portable?null:this.atime,ctime:this.portable?null:this.ctime,gid:this.portable?null:this.gid,mtime:this.noMtime?null:this.mtime,path:this[iA](this.path),linkpath:this.type==="Link"?this[iA](this.linkpath):this.linkpath,size:this.size,uid:this.portable?null:this.uid,uname:this.portable?null:this.uname,dev:this.portable?null:this.readEntry.dev,ino:this.portable?null:this.readEntry.ino,nlink:this.portable?null:this.readEntry.nlink}).encode()),super.write(this.header.block),e.pipe(this)}[iA](e){return Vhe(e,this.prefix)}[$R](e){return zhe(e,this.type==="Directory",this.portable)}write(e){let r=e.length;if(r>this.blockRemain)throw new Error("writing more to entry than is appropriate");return this.blockRemain-=r,super.write(e)}end(){return this.blockRemain&&super.write(Buffer.alloc(this.blockRemain)),super.end()}});eT.Sync=F6;eT.Tar=Zit;var Xit=t=>t.isFile()?"File":t.isDirectory()?"Directory":t.isSymbolicLink()?"SymbolicLink":"Unsupported";Zhe.exports=eT});var cT=_((l3t,i0e)=>{"use strict";var aT=class{constructor(e,r){this.path=e||"./",this.absolute=r,this.entry=null,this.stat=null,this.readdir=null,this.pending=!1,this.ignore=!1,this.piped=!1}},$it=bI(),est=h6(),tst=YR(),q6=N6(),rst=q6.Sync,nst=q6.Tar,ist=$x(),Xhe=Buffer.alloc(1024),nT=Symbol("onStat"),tT=Symbol("ended"),sA=Symbol("queue"),NI=Symbol("current"),gm=Symbol("process"),rT=Symbol("processing"),$he=Symbol("processJob"),oA=Symbol("jobs"),O6=Symbol("jobDone"),iT=Symbol("addFSEntry"),e0e=Symbol("addTarEntry"),_6=Symbol("stat"),H6=Symbol("readdir"),sT=Symbol("onreaddir"),oT=Symbol("pipe"),t0e=Symbol("entry"),L6=Symbol("entryOpt"),j6=Symbol("writeEntryClass"),n0e=Symbol("write"),M6=Symbol("ondrain"),lT=Ie("fs"),r0e=Ie("path"),sst=KR(),U6=QI(),W6=sst(class extends $it{constructor(e){super(e),e=e||Object.create(null),this.opt=e,this.file=e.file||"",this.cwd=e.cwd||process.cwd(),this.maxReadSize=e.maxReadSize,this.preservePaths=!!e.preservePaths,this.strict=!!e.strict,this.noPax=!!e.noPax,this.prefix=U6(e.prefix||""),this.linkCache=e.linkCache||new Map,this.statCache=e.statCache||new Map,this.readdirCache=e.readdirCache||new Map,this[j6]=q6,typeof e.onwarn=="function"&&this.on("warn",e.onwarn),this.portable=!!e.portable,this.zip=null,e.gzip?(typeof e.gzip!="object"&&(e.gzip={}),this.portable&&(e.gzip.portable=!0),this.zip=new est.Gzip(e.gzip),this.zip.on("data",r=>super.write(r)),this.zip.on("end",r=>super.end()),this.zip.on("drain",r=>this[M6]()),this.on("resume",r=>this.zip.resume())):this.on("drain",this[M6]),this.noDirRecurse=!!e.noDirRecurse,this.follow=!!e.follow,this.noMtime=!!e.noMtime,this.mtime=e.mtime||null,this.filter=typeof e.filter=="function"?e.filter:r=>!0,this[sA]=new ist,this[oA]=0,this.jobs=+e.jobs||4,this[rT]=!1,this[tT]=!1}[n0e](e){return super.write(e)}add(e){return this.write(e),this}end(e){return e&&this.write(e),this[tT]=!0,this[gm](),this}write(e){if(this[tT])throw new Error("write after end");return e instanceof tst?this[e0e](e):this[iT](e),this.flowing}[e0e](e){let r=U6(r0e.resolve(this.cwd,e.path));if(!this.filter(e.path,e))e.resume();else{let s=new aT(e.path,r,!1);s.entry=new nst(e,this[L6](s)),s.entry.on("end",a=>this[O6](s)),this[oA]+=1,this[sA].push(s)}this[gm]()}[iT](e){let r=U6(r0e.resolve(this.cwd,e));this[sA].push(new aT(e,r)),this[gm]()}[_6](e){e.pending=!0,this[oA]+=1;let r=this.follow?"stat":"lstat";lT[r](e.absolute,(s,a)=>{e.pending=!1,this[oA]-=1,s?this.emit("error",s):this[nT](e,a)})}[nT](e,r){this.statCache.set(e.absolute,r),e.stat=r,this.filter(e.path,r)||(e.ignore=!0),this[gm]()}[H6](e){e.pending=!0,this[oA]+=1,lT.readdir(e.absolute,(r,s)=>{if(e.pending=!1,this[oA]-=1,r)return this.emit("error",r);this[sT](e,s)})}[sT](e,r){this.readdirCache.set(e.absolute,r),e.readdir=r,this[gm]()}[gm](){if(!this[rT]){this[rT]=!0;for(let e=this[sA].head;e!==null&&this[oA]this.warn(r,s,a),noPax:this.noPax,cwd:this.cwd,absolute:e.absolute,preservePaths:this.preservePaths,maxReadSize:this.maxReadSize,strict:this.strict,portable:this.portable,linkCache:this.linkCache,statCache:this.statCache,noMtime:this.noMtime,mtime:this.mtime,prefix:this.prefix}}[t0e](e){this[oA]+=1;try{return new this[j6](e.path,this[L6](e)).on("end",()=>this[O6](e)).on("error",r=>this.emit("error",r))}catch(r){this.emit("error",r)}}[M6](){this[NI]&&this[NI].entry&&this[NI].entry.resume()}[oT](e){e.piped=!0,e.readdir&&e.readdir.forEach(a=>{let n=e.path,c=n==="./"?"":n.replace(/\/*$/,"/");this[iT](c+a)});let r=e.entry,s=this.zip;s?r.on("data",a=>{s.write(a)||r.pause()}):r.on("data",a=>{super.write(a)||r.pause()})}pause(){return this.zip&&this.zip.pause(),super.pause()}}),G6=class extends W6{constructor(e){super(e),this[j6]=rst}pause(){}resume(){}[_6](e){let r=this.follow?"statSync":"lstatSync";this[nT](e,lT[r](e.absolute))}[H6](e,r){this[sT](e,lT.readdirSync(e.absolute))}[oT](e){let r=e.entry,s=this.zip;e.readdir&&e.readdir.forEach(a=>{let n=e.path,c=n==="./"?"":n.replace(/\/*$/,"/");this[iT](c+a)}),s?r.on("data",a=>{s.write(a)}):r.on("data",a=>{super[n0e](a)})}};W6.Sync=G6;i0e.exports=W6});var GI=_(bv=>{"use strict";var ost=bI(),ast=Ie("events").EventEmitter,fl=Ie("fs"),J6=fl.writev;if(!J6){let t=process.binding("fs"),e=t.FSReqWrap||t.FSReqCallback;J6=(r,s,a,n)=>{let c=(p,h)=>n(p,h,s),f=new e;f.oncomplete=c,t.writeBuffers(r,s,a,f)}}var HI=Symbol("_autoClose"),Yu=Symbol("_close"),Pv=Symbol("_ended"),ii=Symbol("_fd"),s0e=Symbol("_finished"),N0=Symbol("_flags"),Y6=Symbol("_flush"),K6=Symbol("_handleChunk"),z6=Symbol("_makeBuf"),hT=Symbol("_mode"),uT=Symbol("_needDrain"),UI=Symbol("_onerror"),jI=Symbol("_onopen"),V6=Symbol("_onread"),LI=Symbol("_onwrite"),O0=Symbol("_open"),Wp=Symbol("_path"),dm=Symbol("_pos"),aA=Symbol("_queue"),MI=Symbol("_read"),o0e=Symbol("_readSize"),F0=Symbol("_reading"),fT=Symbol("_remain"),a0e=Symbol("_size"),AT=Symbol("_write"),OI=Symbol("_writing"),pT=Symbol("_defaultFlag"),_I=Symbol("_errored"),gT=class extends ost{constructor(e,r){if(r=r||{},super(r),this.readable=!0,this.writable=!1,typeof e!="string")throw new TypeError("path must be a string");this[_I]=!1,this[ii]=typeof r.fd=="number"?r.fd:null,this[Wp]=e,this[o0e]=r.readSize||16*1024*1024,this[F0]=!1,this[a0e]=typeof r.size=="number"?r.size:1/0,this[fT]=this[a0e],this[HI]=typeof r.autoClose=="boolean"?r.autoClose:!0,typeof this[ii]=="number"?this[MI]():this[O0]()}get fd(){return this[ii]}get path(){return this[Wp]}write(){throw new TypeError("this is a readable stream")}end(){throw new TypeError("this is a readable stream")}[O0](){fl.open(this[Wp],"r",(e,r)=>this[jI](e,r))}[jI](e,r){e?this[UI](e):(this[ii]=r,this.emit("open",r),this[MI]())}[z6](){return Buffer.allocUnsafe(Math.min(this[o0e],this[fT]))}[MI](){if(!this[F0]){this[F0]=!0;let e=this[z6]();if(e.length===0)return process.nextTick(()=>this[V6](null,0,e));fl.read(this[ii],e,0,e.length,null,(r,s,a)=>this[V6](r,s,a))}}[V6](e,r,s){this[F0]=!1,e?this[UI](e):this[K6](r,s)&&this[MI]()}[Yu](){if(this[HI]&&typeof this[ii]=="number"){let e=this[ii];this[ii]=null,fl.close(e,r=>r?this.emit("error",r):this.emit("close"))}}[UI](e){this[F0]=!0,this[Yu](),this.emit("error",e)}[K6](e,r){let s=!1;return this[fT]-=e,e>0&&(s=super.write(ethis[jI](e,r))}[jI](e,r){this[pT]&&this[N0]==="r+"&&e&&e.code==="ENOENT"?(this[N0]="w",this[O0]()):e?this[UI](e):(this[ii]=r,this.emit("open",r),this[Y6]())}end(e,r){return e&&this.write(e,r),this[Pv]=!0,!this[OI]&&!this[aA].length&&typeof this[ii]=="number"&&this[LI](null,0),this}write(e,r){return typeof e=="string"&&(e=Buffer.from(e,r)),this[Pv]?(this.emit("error",new Error("write() after end()")),!1):this[ii]===null||this[OI]||this[aA].length?(this[aA].push(e),this[uT]=!0,!1):(this[OI]=!0,this[AT](e),!0)}[AT](e){fl.write(this[ii],e,0,e.length,this[dm],(r,s)=>this[LI](r,s))}[LI](e,r){e?this[UI](e):(this[dm]!==null&&(this[dm]+=r),this[aA].length?this[Y6]():(this[OI]=!1,this[Pv]&&!this[s0e]?(this[s0e]=!0,this[Yu](),this.emit("finish")):this[uT]&&(this[uT]=!1,this.emit("drain"))))}[Y6](){if(this[aA].length===0)this[Pv]&&this[LI](null,0);else if(this[aA].length===1)this[AT](this[aA].pop());else{let e=this[aA];this[aA]=[],J6(this[ii],e,this[dm],(r,s)=>this[LI](r,s))}}[Yu](){if(this[HI]&&typeof this[ii]=="number"){let e=this[ii];this[ii]=null,fl.close(e,r=>r?this.emit("error",r):this.emit("close"))}}},X6=class extends dT{[O0](){let e;if(this[pT]&&this[N0]==="r+")try{e=fl.openSync(this[Wp],this[N0],this[hT])}catch(r){if(r.code==="ENOENT")return this[N0]="w",this[O0]();throw r}else e=fl.openSync(this[Wp],this[N0],this[hT]);this[jI](null,e)}[Yu](){if(this[HI]&&typeof this[ii]=="number"){let e=this[ii];this[ii]=null,fl.closeSync(e),this.emit("close")}}[AT](e){let r=!0;try{this[LI](null,fl.writeSync(this[ii],e,0,e.length,this[dm])),r=!1}finally{if(r)try{this[Yu]()}catch{}}}};bv.ReadStream=gT;bv.ReadStreamSync=Z6;bv.WriteStream=dT;bv.WriteStreamSync=X6});var BT=_((f3t,h0e)=>{"use strict";var lst=KR(),cst=TI(),ust=Ie("events"),fst=$x(),Ast=1024*1024,pst=YR(),l0e=JR(),hst=h6(),$6=Buffer.from([31,139]),Lc=Symbol("state"),mm=Symbol("writeEntry"),Yp=Symbol("readEntry"),eG=Symbol("nextEntry"),c0e=Symbol("processEntry"),Mc=Symbol("extendedHeader"),xv=Symbol("globalExtendedHeader"),L0=Symbol("meta"),u0e=Symbol("emitMeta"),Di=Symbol("buffer"),Vp=Symbol("queue"),ym=Symbol("ended"),f0e=Symbol("emittedEnd"),Em=Symbol("emit"),Al=Symbol("unzip"),mT=Symbol("consumeChunk"),yT=Symbol("consumeChunkSub"),tG=Symbol("consumeBody"),A0e=Symbol("consumeMeta"),p0e=Symbol("consumeHeader"),ET=Symbol("consuming"),rG=Symbol("bufferConcat"),nG=Symbol("maybeEnd"),kv=Symbol("writing"),M0=Symbol("aborted"),IT=Symbol("onDone"),Im=Symbol("sawValidEntry"),CT=Symbol("sawNullBlock"),wT=Symbol("sawEOF"),gst=t=>!0;h0e.exports=lst(class extends ust{constructor(e){e=e||{},super(e),this.file=e.file||"",this[Im]=null,this.on(IT,r=>{(this[Lc]==="begin"||this[Im]===!1)&&this.warn("TAR_BAD_ARCHIVE","Unrecognized archive format")}),e.ondone?this.on(IT,e.ondone):this.on(IT,r=>{this.emit("prefinish"),this.emit("finish"),this.emit("end"),this.emit("close")}),this.strict=!!e.strict,this.maxMetaEntrySize=e.maxMetaEntrySize||Ast,this.filter=typeof e.filter=="function"?e.filter:gst,this.writable=!0,this.readable=!1,this[Vp]=new fst,this[Di]=null,this[Yp]=null,this[mm]=null,this[Lc]="begin",this[L0]="",this[Mc]=null,this[xv]=null,this[ym]=!1,this[Al]=null,this[M0]=!1,this[CT]=!1,this[wT]=!1,typeof e.onwarn=="function"&&this.on("warn",e.onwarn),typeof e.onentry=="function"&&this.on("entry",e.onentry)}[p0e](e,r){this[Im]===null&&(this[Im]=!1);let s;try{s=new cst(e,r,this[Mc],this[xv])}catch(a){return this.warn("TAR_ENTRY_INVALID",a)}if(s.nullBlock)this[CT]?(this[wT]=!0,this[Lc]==="begin"&&(this[Lc]="header"),this[Em]("eof")):(this[CT]=!0,this[Em]("nullBlock"));else if(this[CT]=!1,!s.cksumValid)this.warn("TAR_ENTRY_INVALID","checksum failure",{header:s});else if(!s.path)this.warn("TAR_ENTRY_INVALID","path is required",{header:s});else{let a=s.type;if(/^(Symbolic)?Link$/.test(a)&&!s.linkpath)this.warn("TAR_ENTRY_INVALID","linkpath required",{header:s});else if(!/^(Symbolic)?Link$/.test(a)&&s.linkpath)this.warn("TAR_ENTRY_INVALID","linkpath forbidden",{header:s});else{let n=this[mm]=new pst(s,this[Mc],this[xv]);if(!this[Im])if(n.remain){let c=()=>{n.invalid||(this[Im]=!0)};n.on("end",c)}else this[Im]=!0;n.meta?n.size>this.maxMetaEntrySize?(n.ignore=!0,this[Em]("ignoredEntry",n),this[Lc]="ignore",n.resume()):n.size>0&&(this[L0]="",n.on("data",c=>this[L0]+=c),this[Lc]="meta"):(this[Mc]=null,n.ignore=n.ignore||!this.filter(n.path,n),n.ignore?(this[Em]("ignoredEntry",n),this[Lc]=n.remain?"ignore":"header",n.resume()):(n.remain?this[Lc]="body":(this[Lc]="header",n.end()),this[Yp]?this[Vp].push(n):(this[Vp].push(n),this[eG]())))}}}[c0e](e){let r=!0;return e?Array.isArray(e)?this.emit.apply(this,e):(this[Yp]=e,this.emit("entry",e),e.emittedEnd||(e.on("end",s=>this[eG]()),r=!1)):(this[Yp]=null,r=!1),r}[eG](){do;while(this[c0e](this[Vp].shift()));if(!this[Vp].length){let e=this[Yp];!e||e.flowing||e.size===e.remain?this[kv]||this.emit("drain"):e.once("drain",s=>this.emit("drain"))}}[tG](e,r){let s=this[mm],a=s.blockRemain,n=a>=e.length&&r===0?e:e.slice(r,r+a);return s.write(n),s.blockRemain||(this[Lc]="header",this[mm]=null,s.end()),n.length}[A0e](e,r){let s=this[mm],a=this[tG](e,r);return this[mm]||this[u0e](s),a}[Em](e,r,s){!this[Vp].length&&!this[Yp]?this.emit(e,r,s):this[Vp].push([e,r,s])}[u0e](e){switch(this[Em]("meta",this[L0]),e.type){case"ExtendedHeader":case"OldExtendedHeader":this[Mc]=l0e.parse(this[L0],this[Mc],!1);break;case"GlobalExtendedHeader":this[xv]=l0e.parse(this[L0],this[xv],!0);break;case"NextFileHasLongPath":case"OldGnuLongPath":this[Mc]=this[Mc]||Object.create(null),this[Mc].path=this[L0].replace(/\0.*/,"");break;case"NextFileHasLongLinkpath":this[Mc]=this[Mc]||Object.create(null),this[Mc].linkpath=this[L0].replace(/\0.*/,"");break;default:throw new Error("unknown meta: "+e.type)}}abort(e){this[M0]=!0,this.emit("abort",e),this.warn("TAR_ABORT",e,{recoverable:!1})}write(e){if(this[M0])return;if(this[Al]===null&&e){if(this[Di]&&(e=Buffer.concat([this[Di],e]),this[Di]=null),e.length<$6.length)return this[Di]=e,!0;for(let s=0;this[Al]===null&&s<$6.length;s++)e[s]!==$6[s]&&(this[Al]=!1);if(this[Al]===null){let s=this[ym];this[ym]=!1,this[Al]=new hst.Unzip,this[Al].on("data",n=>this[mT](n)),this[Al].on("error",n=>this.abort(n)),this[Al].on("end",n=>{this[ym]=!0,this[mT]()}),this[kv]=!0;let a=this[Al][s?"end":"write"](e);return this[kv]=!1,a}}this[kv]=!0,this[Al]?this[Al].write(e):this[mT](e),this[kv]=!1;let r=this[Vp].length?!1:this[Yp]?this[Yp].flowing:!0;return!r&&!this[Vp].length&&this[Yp].once("drain",s=>this.emit("drain")),r}[rG](e){e&&!this[M0]&&(this[Di]=this[Di]?Buffer.concat([this[Di],e]):e)}[nG](){if(this[ym]&&!this[f0e]&&!this[M0]&&!this[ET]){this[f0e]=!0;let e=this[mm];if(e&&e.blockRemain){let r=this[Di]?this[Di].length:0;this.warn("TAR_BAD_ARCHIVE",`Truncated input (needed ${e.blockRemain} more bytes, only ${r} available)`,{entry:e}),this[Di]&&e.write(this[Di]),e.end()}this[Em](IT)}}[mT](e){if(this[ET])this[rG](e);else if(!e&&!this[Di])this[nG]();else{if(this[ET]=!0,this[Di]){this[rG](e);let r=this[Di];this[Di]=null,this[yT](r)}else this[yT](e);for(;this[Di]&&this[Di].length>=512&&!this[M0]&&!this[wT];){let r=this[Di];this[Di]=null,this[yT](r)}this[ET]=!1}(!this[Di]||this[ym])&&this[nG]()}[yT](e){let r=0,s=e.length;for(;r+512<=s&&!this[M0]&&!this[wT];)switch(this[Lc]){case"begin":case"header":this[p0e](e,r),r+=512;break;case"ignore":case"body":r+=this[tG](e,r);break;case"meta":r+=this[A0e](e,r);break;default:throw new Error("invalid state: "+this[Lc])}r{"use strict";var dst=DI(),d0e=BT(),qI=Ie("fs"),mst=GI(),g0e=Ie("path"),iG=FI();y0e.exports=(t,e,r)=>{typeof t=="function"?(r=t,e=null,t={}):Array.isArray(t)&&(e=t,t={}),typeof e=="function"&&(r=e,e=null),e?e=Array.from(e):e=[];let s=dst(t);if(s.sync&&typeof r=="function")throw new TypeError("callback not supported for sync tar functions");if(!s.file&&typeof r=="function")throw new TypeError("callback only supported with file option");return e.length&&Est(s,e),s.noResume||yst(s),s.file&&s.sync?Ist(s):s.file?Cst(s,r):m0e(s)};var yst=t=>{let e=t.onentry;t.onentry=e?r=>{e(r),r.resume()}:r=>r.resume()},Est=(t,e)=>{let r=new Map(e.map(n=>[iG(n),!0])),s=t.filter,a=(n,c)=>{let f=c||g0e.parse(n).root||".",p=n===f?!1:r.has(n)?r.get(n):a(g0e.dirname(n),f);return r.set(n,p),p};t.filter=s?(n,c)=>s(n,c)&&a(iG(n)):n=>a(iG(n))},Ist=t=>{let e=m0e(t),r=t.file,s=!0,a;try{let n=qI.statSync(r),c=t.maxReadSize||16*1024*1024;if(n.size{let r=new d0e(t),s=t.maxReadSize||16*1024*1024,a=t.file,n=new Promise((c,f)=>{r.on("error",f),r.on("end",c),qI.stat(a,(p,h)=>{if(p)f(p);else{let E=new mst.ReadStream(a,{readSize:s,size:h.size});E.on("error",f),E.pipe(r)}})});return e?n.then(e,e):n},m0e=t=>new d0e(t)});var v0e=_((p3t,B0e)=>{"use strict";var wst=DI(),ST=cT(),E0e=GI(),I0e=vT(),C0e=Ie("path");B0e.exports=(t,e,r)=>{if(typeof e=="function"&&(r=e),Array.isArray(t)&&(e=t,t={}),!e||!Array.isArray(e)||!e.length)throw new TypeError("no files or directories specified");e=Array.from(e);let s=wst(t);if(s.sync&&typeof r=="function")throw new TypeError("callback not supported for sync tar functions");if(!s.file&&typeof r=="function")throw new TypeError("callback only supported with file option");return s.file&&s.sync?Bst(s,e):s.file?vst(s,e,r):s.sync?Sst(s,e):Dst(s,e)};var Bst=(t,e)=>{let r=new ST.Sync(t),s=new E0e.WriteStreamSync(t.file,{mode:t.mode||438});r.pipe(s),w0e(r,e)},vst=(t,e,r)=>{let s=new ST(t),a=new E0e.WriteStream(t.file,{mode:t.mode||438});s.pipe(a);let n=new Promise((c,f)=>{a.on("error",f),a.on("close",c),s.on("error",f)});return sG(s,e),r?n.then(r,r):n},w0e=(t,e)=>{e.forEach(r=>{r.charAt(0)==="@"?I0e({file:C0e.resolve(t.cwd,r.substr(1)),sync:!0,noResume:!0,onentry:s=>t.add(s)}):t.add(r)}),t.end()},sG=(t,e)=>{for(;e.length;){let r=e.shift();if(r.charAt(0)==="@")return I0e({file:C0e.resolve(t.cwd,r.substr(1)),noResume:!0,onentry:s=>t.add(s)}).then(s=>sG(t,e));t.add(r)}t.end()},Sst=(t,e)=>{let r=new ST.Sync(t);return w0e(r,e),r},Dst=(t,e)=>{let r=new ST(t);return sG(r,e),r}});var oG=_((h3t,Q0e)=>{"use strict";var Pst=DI(),S0e=cT(),Zl=Ie("fs"),D0e=GI(),P0e=vT(),b0e=Ie("path"),x0e=TI();Q0e.exports=(t,e,r)=>{let s=Pst(t);if(!s.file)throw new TypeError("file is required");if(s.gzip)throw new TypeError("cannot append to compressed archives");if(!e||!Array.isArray(e)||!e.length)throw new TypeError("no files or directories specified");return e=Array.from(e),s.sync?bst(s,e):kst(s,e,r)};var bst=(t,e)=>{let r=new S0e.Sync(t),s=!0,a,n;try{try{a=Zl.openSync(t.file,"r+")}catch(p){if(p.code==="ENOENT")a=Zl.openSync(t.file,"w+");else throw p}let c=Zl.fstatSync(a),f=Buffer.alloc(512);e:for(n=0;nc.size)break;n+=h,t.mtimeCache&&t.mtimeCache.set(p.path,p.mtime)}s=!1,xst(t,r,n,a,e)}finally{if(s)try{Zl.closeSync(a)}catch{}}},xst=(t,e,r,s,a)=>{let n=new D0e.WriteStreamSync(t.file,{fd:s,start:r});e.pipe(n),Qst(e,a)},kst=(t,e,r)=>{e=Array.from(e);let s=new S0e(t),a=(c,f,p)=>{let h=(I,T)=>{I?Zl.close(c,N=>p(I)):p(null,T)},E=0;if(f===0)return h(null,0);let C=0,S=Buffer.alloc(512),b=(I,T)=>{if(I)return h(I);if(C+=T,C<512&&T)return Zl.read(c,S,C,S.length-C,E+C,b);if(E===0&&S[0]===31&&S[1]===139)return h(new Error("cannot append to compressed archives"));if(C<512)return h(null,E);let N=new x0e(S);if(!N.cksumValid)return h(null,E);let U=512*Math.ceil(N.size/512);if(E+U+512>f||(E+=U+512,E>=f))return h(null,E);t.mtimeCache&&t.mtimeCache.set(N.path,N.mtime),C=0,Zl.read(c,S,0,512,E,b)};Zl.read(c,S,0,512,E,b)},n=new Promise((c,f)=>{s.on("error",f);let p="r+",h=(E,C)=>{if(E&&E.code==="ENOENT"&&p==="r+")return p="w+",Zl.open(t.file,p,h);if(E)return f(E);Zl.fstat(C,(S,b)=>{if(S)return Zl.close(C,()=>f(S));a(C,b.size,(I,T)=>{if(I)return f(I);let N=new D0e.WriteStream(t.file,{fd:C,start:T});s.pipe(N),N.on("error",f),N.on("close",c),k0e(s,e)})})};Zl.open(t.file,p,h)});return r?n.then(r,r):n},Qst=(t,e)=>{e.forEach(r=>{r.charAt(0)==="@"?P0e({file:b0e.resolve(t.cwd,r.substr(1)),sync:!0,noResume:!0,onentry:s=>t.add(s)}):t.add(r)}),t.end()},k0e=(t,e)=>{for(;e.length;){let r=e.shift();if(r.charAt(0)==="@")return P0e({file:b0e.resolve(t.cwd,r.substr(1)),noResume:!0,onentry:s=>t.add(s)}).then(s=>k0e(t,e));t.add(r)}t.end()}});var T0e=_((g3t,R0e)=>{"use strict";var Rst=DI(),Tst=oG();R0e.exports=(t,e,r)=>{let s=Rst(t);if(!s.file)throw new TypeError("file is required");if(s.gzip)throw new TypeError("cannot append to compressed archives");if(!e||!Array.isArray(e)||!e.length)throw new TypeError("no files or directories specified");return e=Array.from(e),Fst(s),Tst(s,e,r)};var Fst=t=>{let e=t.filter;t.mtimeCache||(t.mtimeCache=new Map),t.filter=e?(r,s)=>e(r,s)&&!(t.mtimeCache.get(r)>s.mtime):(r,s)=>!(t.mtimeCache.get(r)>s.mtime)}});var O0e=_((d3t,N0e)=>{var{promisify:F0e}=Ie("util"),U0=Ie("fs"),Nst=t=>{if(!t)t={mode:511,fs:U0};else if(typeof t=="object")t={mode:511,fs:U0,...t};else if(typeof t=="number")t={mode:t,fs:U0};else if(typeof t=="string")t={mode:parseInt(t,8),fs:U0};else throw new TypeError("invalid options argument");return t.mkdir=t.mkdir||t.fs.mkdir||U0.mkdir,t.mkdirAsync=F0e(t.mkdir),t.stat=t.stat||t.fs.stat||U0.stat,t.statAsync=F0e(t.stat),t.statSync=t.statSync||t.fs.statSync||U0.statSync,t.mkdirSync=t.mkdirSync||t.fs.mkdirSync||U0.mkdirSync,t};N0e.exports=Nst});var M0e=_((m3t,L0e)=>{var Ost=process.platform,{resolve:Lst,parse:Mst}=Ie("path"),Ust=t=>{if(/\0/.test(t))throw Object.assign(new TypeError("path must be a string without null bytes"),{path:t,code:"ERR_INVALID_ARG_VALUE"});if(t=Lst(t),Ost==="win32"){let e=/[*|"<>?:]/,{root:r}=Mst(t);if(e.test(t.substr(r.length)))throw Object.assign(new Error("Illegal characters in path."),{path:t,code:"EINVAL"})}return t};L0e.exports=Ust});var G0e=_((y3t,j0e)=>{var{dirname:U0e}=Ie("path"),_0e=(t,e,r=void 0)=>r===e?Promise.resolve():t.statAsync(e).then(s=>s.isDirectory()?r:void 0,s=>s.code==="ENOENT"?_0e(t,U0e(e),e):void 0),H0e=(t,e,r=void 0)=>{if(r!==e)try{return t.statSync(e).isDirectory()?r:void 0}catch(s){return s.code==="ENOENT"?H0e(t,U0e(e),e):void 0}};j0e.exports={findMade:_0e,findMadeSync:H0e}});var cG=_((E3t,W0e)=>{var{dirname:q0e}=Ie("path"),aG=(t,e,r)=>{e.recursive=!1;let s=q0e(t);return s===t?e.mkdirAsync(t,e).catch(a=>{if(a.code!=="EISDIR")throw a}):e.mkdirAsync(t,e).then(()=>r||t,a=>{if(a.code==="ENOENT")return aG(s,e).then(n=>aG(t,e,n));if(a.code!=="EEXIST"&&a.code!=="EROFS")throw a;return e.statAsync(t).then(n=>{if(n.isDirectory())return r;throw a},()=>{throw a})})},lG=(t,e,r)=>{let s=q0e(t);if(e.recursive=!1,s===t)try{return e.mkdirSync(t,e)}catch(a){if(a.code!=="EISDIR")throw a;return}try{return e.mkdirSync(t,e),r||t}catch(a){if(a.code==="ENOENT")return lG(t,e,lG(s,e,r));if(a.code!=="EEXIST"&&a.code!=="EROFS")throw a;try{if(!e.statSync(t).isDirectory())throw a}catch{throw a}}};W0e.exports={mkdirpManual:aG,mkdirpManualSync:lG}});var J0e=_((I3t,V0e)=>{var{dirname:Y0e}=Ie("path"),{findMade:_st,findMadeSync:Hst}=G0e(),{mkdirpManual:jst,mkdirpManualSync:Gst}=cG(),qst=(t,e)=>(e.recursive=!0,Y0e(t)===t?e.mkdirAsync(t,e):_st(e,t).then(s=>e.mkdirAsync(t,e).then(()=>s).catch(a=>{if(a.code==="ENOENT")return jst(t,e);throw a}))),Wst=(t,e)=>{if(e.recursive=!0,Y0e(t)===t)return e.mkdirSync(t,e);let s=Hst(e,t);try{return e.mkdirSync(t,e),s}catch(a){if(a.code==="ENOENT")return Gst(t,e);throw a}};V0e.exports={mkdirpNative:qst,mkdirpNativeSync:Wst}});var X0e=_((C3t,Z0e)=>{var K0e=Ie("fs"),Yst=process.version,uG=Yst.replace(/^v/,"").split("."),z0e=+uG[0]>10||+uG[0]==10&&+uG[1]>=12,Vst=z0e?t=>t.mkdir===K0e.mkdir:()=>!1,Jst=z0e?t=>t.mkdirSync===K0e.mkdirSync:()=>!1;Z0e.exports={useNative:Vst,useNativeSync:Jst}});var ige=_((w3t,nge)=>{var WI=O0e(),YI=M0e(),{mkdirpNative:$0e,mkdirpNativeSync:ege}=J0e(),{mkdirpManual:tge,mkdirpManualSync:rge}=cG(),{useNative:Kst,useNativeSync:zst}=X0e(),VI=(t,e)=>(t=YI(t),e=WI(e),Kst(e)?$0e(t,e):tge(t,e)),Zst=(t,e)=>(t=YI(t),e=WI(e),zst(e)?ege(t,e):rge(t,e));VI.sync=Zst;VI.native=(t,e)=>$0e(YI(t),WI(e));VI.manual=(t,e)=>tge(YI(t),WI(e));VI.nativeSync=(t,e)=>ege(YI(t),WI(e));VI.manualSync=(t,e)=>rge(YI(t),WI(e));nge.exports=VI});var fge=_((B3t,uge)=>{"use strict";var Uc=Ie("fs"),Cm=Ie("path"),Xst=Uc.lchown?"lchown":"chown",$st=Uc.lchownSync?"lchownSync":"chownSync",oge=Uc.lchown&&!process.version.match(/v1[1-9]+\./)&&!process.version.match(/v10\.[6-9]/),sge=(t,e,r)=>{try{return Uc[$st](t,e,r)}catch(s){if(s.code!=="ENOENT")throw s}},eot=(t,e,r)=>{try{return Uc.chownSync(t,e,r)}catch(s){if(s.code!=="ENOENT")throw s}},tot=oge?(t,e,r,s)=>a=>{!a||a.code!=="EISDIR"?s(a):Uc.chown(t,e,r,s)}:(t,e,r,s)=>s,fG=oge?(t,e,r)=>{try{return sge(t,e,r)}catch(s){if(s.code!=="EISDIR")throw s;eot(t,e,r)}}:(t,e,r)=>sge(t,e,r),rot=process.version,age=(t,e,r)=>Uc.readdir(t,e,r),not=(t,e)=>Uc.readdirSync(t,e);/^v4\./.test(rot)&&(age=(t,e,r)=>Uc.readdir(t,r));var DT=(t,e,r,s)=>{Uc[Xst](t,e,r,tot(t,e,r,a=>{s(a&&a.code!=="ENOENT"?a:null)}))},lge=(t,e,r,s,a)=>{if(typeof e=="string")return Uc.lstat(Cm.resolve(t,e),(n,c)=>{if(n)return a(n.code!=="ENOENT"?n:null);c.name=e,lge(t,c,r,s,a)});if(e.isDirectory())AG(Cm.resolve(t,e.name),r,s,n=>{if(n)return a(n);let c=Cm.resolve(t,e.name);DT(c,r,s,a)});else{let n=Cm.resolve(t,e.name);DT(n,r,s,a)}},AG=(t,e,r,s)=>{age(t,{withFileTypes:!0},(a,n)=>{if(a){if(a.code==="ENOENT")return s();if(a.code!=="ENOTDIR"&&a.code!=="ENOTSUP")return s(a)}if(a||!n.length)return DT(t,e,r,s);let c=n.length,f=null,p=h=>{if(!f){if(h)return s(f=h);if(--c===0)return DT(t,e,r,s)}};n.forEach(h=>lge(t,h,e,r,p))})},iot=(t,e,r,s)=>{if(typeof e=="string")try{let a=Uc.lstatSync(Cm.resolve(t,e));a.name=e,e=a}catch(a){if(a.code==="ENOENT")return;throw a}e.isDirectory()&&cge(Cm.resolve(t,e.name),r,s),fG(Cm.resolve(t,e.name),r,s)},cge=(t,e,r)=>{let s;try{s=not(t,{withFileTypes:!0})}catch(a){if(a.code==="ENOENT")return;if(a.code==="ENOTDIR"||a.code==="ENOTSUP")return fG(t,e,r);throw a}return s&&s.length&&s.forEach(a=>iot(t,a,e,r)),fG(t,e,r)};uge.exports=AG;AG.sync=cge});var gge=_((v3t,pG)=>{"use strict";var Age=ige(),_c=Ie("fs"),PT=Ie("path"),pge=fge(),Vu=QI(),bT=class extends Error{constructor(e,r){super("Cannot extract through symbolic link"),this.path=r,this.symlink=e}get name(){return"SylinkError"}},xT=class extends Error{constructor(e,r){super(r+": Cannot cd into '"+e+"'"),this.path=e,this.code=r}get name(){return"CwdError"}},kT=(t,e)=>t.get(Vu(e)),Qv=(t,e,r)=>t.set(Vu(e),r),sot=(t,e)=>{_c.stat(t,(r,s)=>{(r||!s.isDirectory())&&(r=new xT(t,r&&r.code||"ENOTDIR")),e(r)})};pG.exports=(t,e,r)=>{t=Vu(t);let s=e.umask,a=e.mode|448,n=(a&s)!==0,c=e.uid,f=e.gid,p=typeof c=="number"&&typeof f=="number"&&(c!==e.processUid||f!==e.processGid),h=e.preserve,E=e.unlink,C=e.cache,S=Vu(e.cwd),b=(N,U)=>{N?r(N):(Qv(C,t,!0),U&&p?pge(U,c,f,W=>b(W)):n?_c.chmod(t,a,r):r())};if(C&&kT(C,t)===!0)return b();if(t===S)return sot(t,b);if(h)return Age(t,{mode:a}).then(N=>b(null,N),b);let T=Vu(PT.relative(S,t)).split("/");QT(S,T,a,C,E,S,null,b)};var QT=(t,e,r,s,a,n,c,f)=>{if(!e.length)return f(null,c);let p=e.shift(),h=Vu(PT.resolve(t+"/"+p));if(kT(s,h))return QT(h,e,r,s,a,n,c,f);_c.mkdir(h,r,hge(h,e,r,s,a,n,c,f))},hge=(t,e,r,s,a,n,c,f)=>p=>{p?_c.lstat(t,(h,E)=>{if(h)h.path=h.path&&Vu(h.path),f(h);else if(E.isDirectory())QT(t,e,r,s,a,n,c,f);else if(a)_c.unlink(t,C=>{if(C)return f(C);_c.mkdir(t,r,hge(t,e,r,s,a,n,c,f))});else{if(E.isSymbolicLink())return f(new bT(t,t+"/"+e.join("/")));f(p)}}):(c=c||t,QT(t,e,r,s,a,n,c,f))},oot=t=>{let e=!1,r="ENOTDIR";try{e=_c.statSync(t).isDirectory()}catch(s){r=s.code}finally{if(!e)throw new xT(t,r)}};pG.exports.sync=(t,e)=>{t=Vu(t);let r=e.umask,s=e.mode|448,a=(s&r)!==0,n=e.uid,c=e.gid,f=typeof n=="number"&&typeof c=="number"&&(n!==e.processUid||c!==e.processGid),p=e.preserve,h=e.unlink,E=e.cache,C=Vu(e.cwd),S=N=>{Qv(E,t,!0),N&&f&&pge.sync(N,n,c),a&&_c.chmodSync(t,s)};if(E&&kT(E,t)===!0)return S();if(t===C)return oot(C),S();if(p)return S(Age.sync(t,s));let I=Vu(PT.relative(C,t)).split("/"),T=null;for(let N=I.shift(),U=C;N&&(U+="/"+N);N=I.shift())if(U=Vu(PT.resolve(U)),!kT(E,U))try{_c.mkdirSync(U,s),T=T||U,Qv(E,U,!0)}catch{let ee=_c.lstatSync(U);if(ee.isDirectory()){Qv(E,U,!0);continue}else if(h){_c.unlinkSync(U),_c.mkdirSync(U,s),T=T||U,Qv(E,U,!0);continue}else if(ee.isSymbolicLink())return new bT(U,U+"/"+I.join("/"))}return S(T)}});var gG=_((S3t,dge)=>{var hG=Object.create(null),{hasOwnProperty:aot}=Object.prototype;dge.exports=t=>(aot.call(hG,t)||(hG[t]=t.normalize("NFKD")),hG[t])});var Ige=_((D3t,Ege)=>{var mge=Ie("assert"),lot=gG(),cot=FI(),{join:yge}=Ie("path"),uot=process.env.TESTING_TAR_FAKE_PLATFORM||process.platform,fot=uot==="win32";Ege.exports=()=>{let t=new Map,e=new Map,r=h=>h.split("/").slice(0,-1).reduce((C,S)=>(C.length&&(S=yge(C[C.length-1],S)),C.push(S||"/"),C),[]),s=new Set,a=h=>{let E=e.get(h);if(!E)throw new Error("function does not have any path reservations");return{paths:E.paths.map(C=>t.get(C)),dirs:[...E.dirs].map(C=>t.get(C))}},n=h=>{let{paths:E,dirs:C}=a(h);return E.every(S=>S[0]===h)&&C.every(S=>S[0]instanceof Set&&S[0].has(h))},c=h=>s.has(h)||!n(h)?!1:(s.add(h),h(()=>f(h)),!0),f=h=>{if(!s.has(h))return!1;let{paths:E,dirs:C}=e.get(h),S=new Set;return E.forEach(b=>{let I=t.get(b);mge.equal(I[0],h),I.length===1?t.delete(b):(I.shift(),typeof I[0]=="function"?S.add(I[0]):I[0].forEach(T=>S.add(T)))}),C.forEach(b=>{let I=t.get(b);mge(I[0]instanceof Set),I[0].size===1&&I.length===1?t.delete(b):I[0].size===1?(I.shift(),S.add(I[0])):I[0].delete(h)}),s.delete(h),S.forEach(b=>c(b)),!0};return{check:n,reserve:(h,E)=>{h=fot?["win32 parallelization disabled"]:h.map(S=>lot(cot(yge(S))).toLowerCase());let C=new Set(h.map(S=>r(S)).reduce((S,b)=>S.concat(b)));return e.set(E,{dirs:C,paths:h}),h.forEach(S=>{let b=t.get(S);b?b.push(E):t.set(S,[E])}),C.forEach(S=>{let b=t.get(S);b?b[b.length-1]instanceof Set?b[b.length-1].add(E):b.push(new Set([E])):t.set(S,[new Set([E])])}),c(E)}}}});var Bge=_((P3t,wge)=>{var Aot=process.platform,pot=Aot==="win32",hot=global.__FAKE_TESTING_FS__||Ie("fs"),{O_CREAT:got,O_TRUNC:dot,O_WRONLY:mot,UV_FS_O_FILEMAP:Cge=0}=hot.constants,yot=pot&&!!Cge,Eot=512*1024,Iot=Cge|dot|got|mot;wge.exports=yot?t=>t"w"});var vG=_((b3t,Lge)=>{"use strict";var Cot=Ie("assert"),wot=BT(),Mn=Ie("fs"),Bot=GI(),Jp=Ie("path"),Fge=gge(),vge=v6(),vot=Ige(),Sot=S6(),Xl=QI(),Dot=FI(),Pot=gG(),Sge=Symbol("onEntry"),yG=Symbol("checkFs"),Dge=Symbol("checkFs2"),FT=Symbol("pruneCache"),EG=Symbol("isReusable"),Hc=Symbol("makeFs"),IG=Symbol("file"),CG=Symbol("directory"),NT=Symbol("link"),Pge=Symbol("symlink"),bge=Symbol("hardlink"),xge=Symbol("unsupported"),kge=Symbol("checkPath"),_0=Symbol("mkdir"),Zo=Symbol("onError"),RT=Symbol("pending"),Qge=Symbol("pend"),JI=Symbol("unpend"),dG=Symbol("ended"),mG=Symbol("maybeClose"),wG=Symbol("skip"),Rv=Symbol("doChown"),Tv=Symbol("uid"),Fv=Symbol("gid"),Nv=Symbol("checkedCwd"),Nge=Ie("crypto"),Oge=Bge(),bot=process.env.TESTING_TAR_FAKE_PLATFORM||process.platform,Ov=bot==="win32",xot=(t,e)=>{if(!Ov)return Mn.unlink(t,e);let r=t+".DELETE."+Nge.randomBytes(16).toString("hex");Mn.rename(t,r,s=>{if(s)return e(s);Mn.unlink(r,e)})},kot=t=>{if(!Ov)return Mn.unlinkSync(t);let e=t+".DELETE."+Nge.randomBytes(16).toString("hex");Mn.renameSync(t,e),Mn.unlinkSync(e)},Rge=(t,e,r)=>t===t>>>0?t:e===e>>>0?e:r,Tge=t=>Pot(Dot(Xl(t))).toLowerCase(),Qot=(t,e)=>{e=Tge(e);for(let r of t.keys()){let s=Tge(r);(s===e||s.indexOf(e+"/")===0)&&t.delete(r)}},Rot=t=>{for(let e of t.keys())t.delete(e)},Lv=class extends wot{constructor(e){if(e||(e={}),e.ondone=r=>{this[dG]=!0,this[mG]()},super(e),this[Nv]=!1,this.reservations=vot(),this.transform=typeof e.transform=="function"?e.transform:null,this.writable=!0,this.readable=!1,this[RT]=0,this[dG]=!1,this.dirCache=e.dirCache||new Map,typeof e.uid=="number"||typeof e.gid=="number"){if(typeof e.uid!="number"||typeof e.gid!="number")throw new TypeError("cannot set owner without number uid and gid");if(e.preserveOwner)throw new TypeError("cannot preserve owner in archive and also set owner explicitly");this.uid=e.uid,this.gid=e.gid,this.setOwner=!0}else this.uid=null,this.gid=null,this.setOwner=!1;e.preserveOwner===void 0&&typeof e.uid!="number"?this.preserveOwner=process.getuid&&process.getuid()===0:this.preserveOwner=!!e.preserveOwner,this.processUid=(this.preserveOwner||this.setOwner)&&process.getuid?process.getuid():null,this.processGid=(this.preserveOwner||this.setOwner)&&process.getgid?process.getgid():null,this.forceChown=e.forceChown===!0,this.win32=!!e.win32||Ov,this.newer=!!e.newer,this.keep=!!e.keep,this.noMtime=!!e.noMtime,this.preservePaths=!!e.preservePaths,this.unlink=!!e.unlink,this.cwd=Xl(Jp.resolve(e.cwd||process.cwd())),this.strip=+e.strip||0,this.processUmask=e.noChmod?0:process.umask(),this.umask=typeof e.umask=="number"?e.umask:this.processUmask,this.dmode=e.dmode||511&~this.umask,this.fmode=e.fmode||438&~this.umask,this.on("entry",r=>this[Sge](r))}warn(e,r,s={}){return(e==="TAR_BAD_ARCHIVE"||e==="TAR_ABORT")&&(s.recoverable=!1),super.warn(e,r,s)}[mG](){this[dG]&&this[RT]===0&&(this.emit("prefinish"),this.emit("finish"),this.emit("end"),this.emit("close"))}[kge](e){if(this.strip){let r=Xl(e.path).split("/");if(r.length=this.strip)e.linkpath=s.slice(this.strip).join("/");else return!1}}if(!this.preservePaths){let r=Xl(e.path),s=r.split("/");if(s.includes("..")||Ov&&/^[a-z]:\.\.$/i.test(s[0]))return this.warn("TAR_ENTRY_ERROR","path contains '..'",{entry:e,path:r}),!1;let[a,n]=Sot(r);a&&(e.path=n,this.warn("TAR_ENTRY_INFO",`stripping ${a} from absolute path`,{entry:e,path:r}))}if(Jp.isAbsolute(e.path)?e.absolute=Xl(Jp.resolve(e.path)):e.absolute=Xl(Jp.resolve(this.cwd,e.path)),!this.preservePaths&&e.absolute.indexOf(this.cwd+"/")!==0&&e.absolute!==this.cwd)return this.warn("TAR_ENTRY_ERROR","path escaped extraction target",{entry:e,path:Xl(e.path),resolvedPath:e.absolute,cwd:this.cwd}),!1;if(e.absolute===this.cwd&&e.type!=="Directory"&&e.type!=="GNUDumpDir")return!1;if(this.win32){let{root:r}=Jp.win32.parse(e.absolute);e.absolute=r+vge.encode(e.absolute.substr(r.length));let{root:s}=Jp.win32.parse(e.path);e.path=s+vge.encode(e.path.substr(s.length))}return!0}[Sge](e){if(!this[kge](e))return e.resume();switch(Cot.equal(typeof e.absolute,"string"),e.type){case"Directory":case"GNUDumpDir":e.mode&&(e.mode=e.mode|448);case"File":case"OldFile":case"ContiguousFile":case"Link":case"SymbolicLink":return this[yG](e);case"CharacterDevice":case"BlockDevice":case"FIFO":default:return this[xge](e)}}[Zo](e,r){e.name==="CwdError"?this.emit("error",e):(this.warn("TAR_ENTRY_ERROR",e,{entry:r}),this[JI](),r.resume())}[_0](e,r,s){Fge(Xl(e),{uid:this.uid,gid:this.gid,processUid:this.processUid,processGid:this.processGid,umask:this.processUmask,preserve:this.preservePaths,unlink:this.unlink,cache:this.dirCache,cwd:this.cwd,mode:r,noChmod:this.noChmod},s)}[Rv](e){return this.forceChown||this.preserveOwner&&(typeof e.uid=="number"&&e.uid!==this.processUid||typeof e.gid=="number"&&e.gid!==this.processGid)||typeof this.uid=="number"&&this.uid!==this.processUid||typeof this.gid=="number"&&this.gid!==this.processGid}[Tv](e){return Rge(this.uid,e.uid,this.processUid)}[Fv](e){return Rge(this.gid,e.gid,this.processGid)}[IG](e,r){let s=e.mode&4095||this.fmode,a=new Bot.WriteStream(e.absolute,{flags:Oge(e.size),mode:s,autoClose:!1});a.on("error",p=>{a.fd&&Mn.close(a.fd,()=>{}),a.write=()=>!0,this[Zo](p,e),r()});let n=1,c=p=>{if(p){a.fd&&Mn.close(a.fd,()=>{}),this[Zo](p,e),r();return}--n===0&&Mn.close(a.fd,h=>{h?this[Zo](h,e):this[JI](),r()})};a.on("finish",p=>{let h=e.absolute,E=a.fd;if(e.mtime&&!this.noMtime){n++;let C=e.atime||new Date,S=e.mtime;Mn.futimes(E,C,S,b=>b?Mn.utimes(h,C,S,I=>c(I&&b)):c())}if(this[Rv](e)){n++;let C=this[Tv](e),S=this[Fv](e);Mn.fchown(E,C,S,b=>b?Mn.chown(h,C,S,I=>c(I&&b)):c())}c()});let f=this.transform&&this.transform(e)||e;f!==e&&(f.on("error",p=>{this[Zo](p,e),r()}),e.pipe(f)),f.pipe(a)}[CG](e,r){let s=e.mode&4095||this.dmode;this[_0](e.absolute,s,a=>{if(a){this[Zo](a,e),r();return}let n=1,c=f=>{--n===0&&(r(),this[JI](),e.resume())};e.mtime&&!this.noMtime&&(n++,Mn.utimes(e.absolute,e.atime||new Date,e.mtime,c)),this[Rv](e)&&(n++,Mn.chown(e.absolute,this[Tv](e),this[Fv](e),c)),c()})}[xge](e){e.unsupported=!0,this.warn("TAR_ENTRY_UNSUPPORTED",`unsupported entry type: ${e.type}`,{entry:e}),e.resume()}[Pge](e,r){this[NT](e,e.linkpath,"symlink",r)}[bge](e,r){let s=Xl(Jp.resolve(this.cwd,e.linkpath));this[NT](e,s,"link",r)}[Qge](){this[RT]++}[JI](){this[RT]--,this[mG]()}[wG](e){this[JI](),e.resume()}[EG](e,r){return e.type==="File"&&!this.unlink&&r.isFile()&&r.nlink<=1&&!Ov}[yG](e){this[Qge]();let r=[e.path];e.linkpath&&r.push(e.linkpath),this.reservations.reserve(r,s=>this[Dge](e,s))}[FT](e){e.type==="SymbolicLink"?Rot(this.dirCache):e.type!=="Directory"&&Qot(this.dirCache,e.absolute)}[Dge](e,r){this[FT](e);let s=f=>{this[FT](e),r(f)},a=()=>{this[_0](this.cwd,this.dmode,f=>{if(f){this[Zo](f,e),s();return}this[Nv]=!0,n()})},n=()=>{if(e.absolute!==this.cwd){let f=Xl(Jp.dirname(e.absolute));if(f!==this.cwd)return this[_0](f,this.dmode,p=>{if(p){this[Zo](p,e),s();return}c()})}c()},c=()=>{Mn.lstat(e.absolute,(f,p)=>{if(p&&(this.keep||this.newer&&p.mtime>e.mtime)){this[wG](e),s();return}if(f||this[EG](e,p))return this[Hc](null,e,s);if(p.isDirectory()){if(e.type==="Directory"){let h=!this.noChmod&&e.mode&&(p.mode&4095)!==e.mode,E=C=>this[Hc](C,e,s);return h?Mn.chmod(e.absolute,e.mode,E):E()}if(e.absolute!==this.cwd)return Mn.rmdir(e.absolute,h=>this[Hc](h,e,s))}if(e.absolute===this.cwd)return this[Hc](null,e,s);xot(e.absolute,h=>this[Hc](h,e,s))})};this[Nv]?n():a()}[Hc](e,r,s){if(e){this[Zo](e,r),s();return}switch(r.type){case"File":case"OldFile":case"ContiguousFile":return this[IG](r,s);case"Link":return this[bge](r,s);case"SymbolicLink":return this[Pge](r,s);case"Directory":case"GNUDumpDir":return this[CG](r,s)}}[NT](e,r,s,a){Mn[s](r,e.absolute,n=>{n?this[Zo](n,e):(this[JI](),e.resume()),a()})}},TT=t=>{try{return[null,t()]}catch(e){return[e,null]}},BG=class extends Lv{[Hc](e,r){return super[Hc](e,r,()=>{})}[yG](e){if(this[FT](e),!this[Nv]){let n=this[_0](this.cwd,this.dmode);if(n)return this[Zo](n,e);this[Nv]=!0}if(e.absolute!==this.cwd){let n=Xl(Jp.dirname(e.absolute));if(n!==this.cwd){let c=this[_0](n,this.dmode);if(c)return this[Zo](c,e)}}let[r,s]=TT(()=>Mn.lstatSync(e.absolute));if(s&&(this.keep||this.newer&&s.mtime>e.mtime))return this[wG](e);if(r||this[EG](e,s))return this[Hc](null,e);if(s.isDirectory()){if(e.type==="Directory"){let c=!this.noChmod&&e.mode&&(s.mode&4095)!==e.mode,[f]=c?TT(()=>{Mn.chmodSync(e.absolute,e.mode)}):[];return this[Hc](f,e)}let[n]=TT(()=>Mn.rmdirSync(e.absolute));this[Hc](n,e)}let[a]=e.absolute===this.cwd?[]:TT(()=>kot(e.absolute));this[Hc](a,e)}[IG](e,r){let s=e.mode&4095||this.fmode,a=f=>{let p;try{Mn.closeSync(n)}catch(h){p=h}(f||p)&&this[Zo](f||p,e),r()},n;try{n=Mn.openSync(e.absolute,Oge(e.size),s)}catch(f){return a(f)}let c=this.transform&&this.transform(e)||e;c!==e&&(c.on("error",f=>this[Zo](f,e)),e.pipe(c)),c.on("data",f=>{try{Mn.writeSync(n,f,0,f.length)}catch(p){a(p)}}),c.on("end",f=>{let p=null;if(e.mtime&&!this.noMtime){let h=e.atime||new Date,E=e.mtime;try{Mn.futimesSync(n,h,E)}catch(C){try{Mn.utimesSync(e.absolute,h,E)}catch{p=C}}}if(this[Rv](e)){let h=this[Tv](e),E=this[Fv](e);try{Mn.fchownSync(n,h,E)}catch(C){try{Mn.chownSync(e.absolute,h,E)}catch{p=p||C}}}a(p)})}[CG](e,r){let s=e.mode&4095||this.dmode,a=this[_0](e.absolute,s);if(a){this[Zo](a,e),r();return}if(e.mtime&&!this.noMtime)try{Mn.utimesSync(e.absolute,e.atime||new Date,e.mtime)}catch{}if(this[Rv](e))try{Mn.chownSync(e.absolute,this[Tv](e),this[Fv](e))}catch{}r(),e.resume()}[_0](e,r){try{return Fge.sync(Xl(e),{uid:this.uid,gid:this.gid,processUid:this.processUid,processGid:this.processGid,umask:this.processUmask,preserve:this.preservePaths,unlink:this.unlink,cache:this.dirCache,cwd:this.cwd,mode:r})}catch(s){return s}}[NT](e,r,s,a){try{Mn[s+"Sync"](r,e.absolute),a(),e.resume()}catch(n){return this[Zo](n,e)}}};Lv.Sync=BG;Lge.exports=Lv});var jge=_((x3t,Hge)=>{"use strict";var Tot=DI(),OT=vG(),Uge=Ie("fs"),_ge=GI(),Mge=Ie("path"),SG=FI();Hge.exports=(t,e,r)=>{typeof t=="function"?(r=t,e=null,t={}):Array.isArray(t)&&(e=t,t={}),typeof e=="function"&&(r=e,e=null),e?e=Array.from(e):e=[];let s=Tot(t);if(s.sync&&typeof r=="function")throw new TypeError("callback not supported for sync tar functions");if(!s.file&&typeof r=="function")throw new TypeError("callback only supported with file option");return e.length&&Fot(s,e),s.file&&s.sync?Not(s):s.file?Oot(s,r):s.sync?Lot(s):Mot(s)};var Fot=(t,e)=>{let r=new Map(e.map(n=>[SG(n),!0])),s=t.filter,a=(n,c)=>{let f=c||Mge.parse(n).root||".",p=n===f?!1:r.has(n)?r.get(n):a(Mge.dirname(n),f);return r.set(n,p),p};t.filter=s?(n,c)=>s(n,c)&&a(SG(n)):n=>a(SG(n))},Not=t=>{let e=new OT.Sync(t),r=t.file,s=Uge.statSync(r),a=t.maxReadSize||16*1024*1024;new _ge.ReadStreamSync(r,{readSize:a,size:s.size}).pipe(e)},Oot=(t,e)=>{let r=new OT(t),s=t.maxReadSize||16*1024*1024,a=t.file,n=new Promise((c,f)=>{r.on("error",f),r.on("close",c),Uge.stat(a,(p,h)=>{if(p)f(p);else{let E=new _ge.ReadStream(a,{readSize:s,size:h.size});E.on("error",f),E.pipe(r)}})});return e?n.then(e,e):n},Lot=t=>new OT.Sync(t),Mot=t=>new OT(t)});var Gge=_(bs=>{"use strict";bs.c=bs.create=v0e();bs.r=bs.replace=oG();bs.t=bs.list=vT();bs.u=bs.update=T0e();bs.x=bs.extract=jge();bs.Pack=cT();bs.Unpack=vG();bs.Parse=BT();bs.ReadEntry=YR();bs.WriteEntry=N6();bs.Header=TI();bs.Pax=JR();bs.types=m6()});var DG,qge,H0,Mv,Uv,Wge=Ze(()=>{DG=ut(Ld()),qge=Ie("worker_threads"),H0=Symbol("kTaskInfo"),Mv=class{constructor(e,r){this.fn=e;this.limit=(0,DG.default)(r.poolSize)}run(e){return this.limit(()=>this.fn(e))}},Uv=class{constructor(e,r){this.source=e;this.workers=[];this.limit=(0,DG.default)(r.poolSize),this.cleanupInterval=setInterval(()=>{if(this.limit.pendingCount===0&&this.limit.activeCount===0){let s=this.workers.pop();s?s.terminate():clearInterval(this.cleanupInterval)}},5e3).unref()}createWorker(){this.cleanupInterval.refresh();let e=new qge.Worker(this.source,{eval:!0,execArgv:[...process.execArgv,"--unhandled-rejections=strict"]});return e.on("message",r=>{if(!e[H0])throw new Error("Assertion failed: Worker sent a result without having a task assigned");e[H0].resolve(r),e[H0]=null,e.unref(),this.workers.push(e)}),e.on("error",r=>{e[H0]?.reject(r),e[H0]=null}),e.on("exit",r=>{r!==0&&e[H0]?.reject(new Error(`Worker exited with code ${r}`)),e[H0]=null}),e}run(e){return this.limit(()=>{let r=this.workers.pop()??this.createWorker();return r.ref(),new Promise((s,a)=>{r[H0]={resolve:s,reject:a},r.postMessage(e)})})}}});var Vge=_((T3t,Yge)=>{var PG;Yge.exports.getContent=()=>(typeof PG>"u"&&(PG=Ie("zlib").brotliDecompressSync(Buffer.from("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","base64")).toString()),PG)});var ps={};Vt(ps,{convertToZip:()=>jot,convertToZipWorker:()=>kG,extractArchiveTo:()=>Xge,getDefaultTaskPool:()=>zge,getTaskPoolForConfiguration:()=>Zge,makeArchiveFromDirectory:()=>Hot});function Uot(t,e){switch(t){case"async":return new Mv(kG,{poolSize:e});case"workers":return new Uv((0,xG.getContent)(),{poolSize:e});default:throw new Error(`Assertion failed: Unknown value ${t} for taskPoolMode`)}}function zge(){return typeof bG>"u"&&(bG=Uot("workers",fs.availableParallelism())),bG}function Zge(t){return typeof t>"u"?zge():Yl(_ot,t,()=>{let e=t.get("taskPoolMode"),r=t.get("taskPoolConcurrency");switch(e){case"async":return new Mv(kG,{poolSize:r});case"workers":return new Uv((0,xG.getContent)(),{poolSize:r});default:throw new Error(`Assertion failed: Unknown value ${e} for taskPoolMode`)}})}async function kG(t){let{tmpFile:e,tgz:r,compressionLevel:s,extractBufferOpts:a}=t,n=new As(e,{create:!0,level:s,stats:$a.makeDefaultStats()}),c=Buffer.from(r.buffer,r.byteOffset,r.byteLength);return await Xge(c,n,a),n.saveAndClose(),e}async function Hot(t,{baseFs:e=new Yn,prefixPath:r=vt.root,compressionLevel:s,inMemory:a=!1}={}){let n;if(a)n=new As(null,{level:s});else{let f=await ce.mktempPromise(),p=J.join(f,"archive.zip");n=new As(p,{create:!0,level:s})}let c=J.resolve(vt.root,r);return await n.copyPromise(c,t,{baseFs:e,stableTime:!0,stableSort:!0}),n}async function jot(t,e={}){let r=await ce.mktempPromise(),s=J.join(r,"archive.zip"),a=e.compressionLevel??e.configuration?.get("compressionLevel")??"mixed",n={prefixPath:e.prefixPath,stripComponents:e.stripComponents};return await(e.taskPool??Zge(e.configuration)).run({tmpFile:s,tgz:t,compressionLevel:a,extractBufferOpts:n}),new As(s,{level:e.compressionLevel})}async function*Got(t){let e=new Kge.default.Parse,r=new Jge.PassThrough({objectMode:!0,autoDestroy:!0,emitClose:!0});e.on("entry",s=>{r.write(s)}),e.on("error",s=>{r.destroy(s)}),e.on("close",()=>{r.destroyed||r.end()}),e.end(t);for await(let s of r){let a=s;yield a,a.resume()}}async function Xge(t,e,{stripComponents:r=0,prefixPath:s=vt.dot}={}){function a(n){if(n.path[0]==="/")return!0;let c=n.path.split(/\//g);return!!(c.some(f=>f==="..")||c.length<=r)}for await(let n of Got(t)){if(a(n))continue;let c=J.normalize(fe.toPortablePath(n.path)).replace(/\/$/,"").split(/\//g);if(c.length<=r)continue;let f=c.slice(r).join("/"),p=J.join(s,f),h=420;switch((n.type==="Directory"||(n.mode??0)&73)&&(h|=73),n.type){case"Directory":e.mkdirpSync(J.dirname(p),{chmod:493,utimes:[fi.SAFE_TIME,fi.SAFE_TIME]}),e.mkdirSync(p,{mode:h}),e.utimesSync(p,fi.SAFE_TIME,fi.SAFE_TIME);break;case"OldFile":case"File":e.mkdirpSync(J.dirname(p),{chmod:493,utimes:[fi.SAFE_TIME,fi.SAFE_TIME]}),e.writeFileSync(p,await WE(n),{mode:h}),e.utimesSync(p,fi.SAFE_TIME,fi.SAFE_TIME);break;case"SymbolicLink":e.mkdirpSync(J.dirname(p),{chmod:493,utimes:[fi.SAFE_TIME,fi.SAFE_TIME]}),e.symlinkSync(n.linkpath,p),e.lutimesSync(p,fi.SAFE_TIME,fi.SAFE_TIME);break}}return e}var Jge,Kge,xG,bG,_ot,$ge=Ze(()=>{Ge();Dt();eA();Jge=Ie("stream"),Kge=ut(Gge());Wge();bc();xG=ut(Vge());_ot=new WeakMap});var tde=_((QG,ede)=>{(function(t,e){typeof QG=="object"?ede.exports=e():typeof define=="function"&&define.amd?define(e):t.treeify=e()})(QG,function(){function t(a,n){var c=n?"\u2514":"\u251C";return a?c+="\u2500 ":c+="\u2500\u2500\u2510",c}function e(a,n){var c=[];for(var f in a)a.hasOwnProperty(f)&&(n&&typeof a[f]=="function"||c.push(f));return c}function r(a,n,c,f,p,h,E){var C="",S=0,b,I,T=f.slice(0);if(T.push([n,c])&&f.length>0&&(f.forEach(function(U,W){W>0&&(C+=(U[1]?" ":"\u2502")+" "),!I&&U[0]===n&&(I=!0)}),C+=t(a,c)+a,p&&(typeof n!="object"||n instanceof Date)&&(C+=": "+n),I&&(C+=" (circular ref.)"),E(C)),!I&&typeof n=="object"){var N=e(n,h);N.forEach(function(U){b=++S===N.length,r(U,n[U],b,T,p,h,E)})}}var s={};return s.asLines=function(a,n,c,f){var p=typeof c!="function"?c:!1;r(".",a,!1,[],n,p,f||c)},s.asTree=function(a,n,c){var f="";return r(".",a,!1,[],n,c,function(p){f+=p+` `}),f},s})});var xs={};Vt(xs,{emitList:()=>qot,emitTree:()=>sde,treeNodeToJson:()=>ide,treeNodeToTreeify:()=>nde});function nde(t,{configuration:e}){let r={},s=0,a=(n,c)=>{let f=Array.isArray(n)?n.entries():Object.entries(n);for(let[p,h]of f){if(!h)continue;let{label:E,value:C,children:S}=h,b=[];typeof E<"u"&&b.push(zd(e,E,2)),typeof C<"u"&&b.push(Ht(e,C[0],C[1])),b.length===0&&b.push(zd(e,`${p}`,2));let I=b.join(": ").trim(),T=`\0${s++}\0`,N=c[`${T}${I}`]={};typeof S<"u"&&a(S,N)}};if(typeof t.children>"u")throw new Error("The root node must only contain children");return a(t.children,r),r}function ide(t){let e=r=>{if(typeof r.children>"u"){if(typeof r.value>"u")throw new Error("Assertion failed: Expected a value to be set if the children are missing");return Zd(r.value[0],r.value[1])}let s=Array.isArray(r.children)?r.children.entries():Object.entries(r.children??{}),a=Array.isArray(r.children)?[]:{};for(let[n,c]of s)c&&(a[Wot(n)]=e(c));return typeof r.value>"u"?a:{value:Zd(r.value[0],r.value[1]),children:a}};return e(t)}function qot(t,{configuration:e,stdout:r,json:s}){let a=t.map(n=>({value:n}));sde({children:a},{configuration:e,stdout:r,json:s})}function sde(t,{configuration:e,stdout:r,json:s,separators:a=0}){if(s){let c=Array.isArray(t.children)?t.children.values():Object.values(t.children??{});for(let f of c)f&&r.write(`${JSON.stringify(ide(f))} `);return}let n=(0,rde.asTree)(nde(t,{configuration:e}),!1,!1);if(n=n.replace(/\0[0-9]+\0/g,""),a>=1&&(n=n.replace(/^([├└]─)/gm,`\u2502 $1`).replace(/^│\n/,"")),a>=2)for(let c=0;c<2;++c)n=n.replace(/^([│ ].{2}[├│ ].{2}[^\n]+\n)(([│ ]).{2}[├└].{2}[^\n]*\n[│ ].{2}[│ ].{2}[├└]─)/gm,`$1$3 \u2502 $2`).replace(/^│\n/,"");if(a>=3)throw new Error("Only the first two levels are accepted by treeUtils.emitTree");r.write(n)}function Wot(t){return typeof t=="string"?t.replace(/^\0[0-9]+\0/,""):t}var rde,ode=Ze(()=>{rde=ut(tde());xc()});var LT,ade=Ze(()=>{LT=class{constructor(e){this.releaseFunction=e;this.map=new Map}addOrCreate(e,r){let s=this.map.get(e);if(typeof s<"u"){if(s.refCount<=0)throw new Error(`Race condition in RefCountedMap. While adding a new key the refCount is: ${s.refCount} for ${JSON.stringify(e)}`);return s.refCount++,{value:s.value,release:()=>this.release(e)}}else{let a=r();return this.map.set(e,{refCount:1,value:a}),{value:a,release:()=>this.release(e)}}}release(e){let r=this.map.get(e);if(!r)throw new Error(`Unbalanced calls to release. No known instances of: ${JSON.stringify(e)}`);let s=r.refCount;if(s<=0)throw new Error(`Unbalanced calls to release. Too many release vs alloc refcount would become: ${s-1} of ${JSON.stringify(e)}`);s==1?(this.map.delete(e),this.releaseFunction(r.value)):r.refCount--}}});function _v(t){let e=t.match(Yot);if(!e?.groups)throw new Error("Assertion failed: Expected the checksum to match the requested pattern");let r=e.groups.cacheVersion?parseInt(e.groups.cacheVersion):null;return{cacheKey:e.groups.cacheKey??null,cacheVersion:r,cacheSpec:e.groups.cacheSpec??null,hash:e.groups.hash}}var lde,RG,TG,MT,Kr,Yot,FG=Ze(()=>{Ge();Dt();Dt();eA();lde=Ie("crypto"),RG=ut(Ie("fs"));ade();Rc();I0();bc();Wo();TG=YE(process.env.YARN_CACHE_CHECKPOINT_OVERRIDE??process.env.YARN_CACHE_VERSION_OVERRIDE??9),MT=YE(process.env.YARN_CACHE_VERSION_OVERRIDE??10),Kr=class t{constructor(e,{configuration:r,immutable:s=r.get("enableImmutableCache"),check:a=!1}){this.markedFiles=new Set;this.mutexes=new Map;this.refCountedZipFsCache=new LT(e=>{e.discardAndClose()});this.cacheId=`-${(0,lde.randomBytes)(8).toString("hex")}.tmp`;this.configuration=r,this.cwd=e,this.immutable=s,this.check=a;let{cacheSpec:n,cacheKey:c}=t.getCacheKey(r);this.cacheSpec=n,this.cacheKey=c}static async find(e,{immutable:r,check:s}={}){let a=new t(e.get("cacheFolder"),{configuration:e,immutable:r,check:s});return await a.setup(),a}static getCacheKey(e){let r=e.get("compressionLevel"),s=r!=="mixed"?`c${r}`:"";return{cacheKey:[MT,s].join(""),cacheSpec:s}}get mirrorCwd(){if(!this.configuration.get("enableMirror"))return null;let e=`${this.configuration.get("globalFolder")}/cache`;return e!==this.cwd?e:null}getVersionFilename(e){return`${nI(e)}-${this.cacheKey}.zip`}getChecksumFilename(e,r){let a=_v(r).hash.slice(0,10);return`${nI(e)}-${a}.zip`}isChecksumCompatible(e){if(e===null)return!1;let{cacheVersion:r,cacheSpec:s}=_v(e);if(r===null||r{let pe=new As,Be=J.join(vt.root,P8(e));return pe.mkdirSync(Be,{recursive:!0}),pe.writeJsonSync(J.join(Be,Er.manifest),{name:un(e),mocked:!0}),pe},E=async(pe,{isColdHit:Be,controlPath:Ce=null})=>{if(Ce===null&&c.unstablePackages?.has(e.locatorHash))return{isValid:!0,hash:null};let g=r&&!Be?_v(r).cacheKey:this.cacheKey,we=!c.skipIntegrityCheck||!r?`${g}/${await vQ(pe)}`:r;if(Ce!==null){let Ae=!c.skipIntegrityCheck||!r?`${this.cacheKey}/${await vQ(Ce)}`:r;if(we!==Ae)throw new jt(18,"The remote archive doesn't match the local checksum - has the local cache been corrupted?")}let ye=null;switch(r!==null&&we!==r&&(this.check?ye="throw":_v(r).cacheKey!==_v(we).cacheKey?ye="update":ye=this.configuration.get("checksumBehavior")),ye){case null:case"update":return{isValid:!0,hash:we};case"ignore":return{isValid:!0,hash:r};case"reset":return{isValid:!1,hash:r};default:case"throw":throw new jt(18,"The remote archive doesn't match the expected checksum")}},C=async pe=>{if(!n)throw new Error(`Cache check required but no loader configured for ${Yr(this.configuration,e)}`);let Be=await n(),Ce=Be.getRealPath();Be.saveAndClose(),await ce.chmodPromise(Ce,420);let g=await E(pe,{controlPath:Ce,isColdHit:!1});if(!g.isValid)throw new Error("Assertion failed: Expected a valid checksum");return g.hash},S=async()=>{if(f===null||!await ce.existsPromise(f)){let pe=await n(),Be=pe.getRealPath();return pe.saveAndClose(),{source:"loader",path:Be}}return{source:"mirror",path:f}},b=async()=>{if(!n)throw new Error(`Cache entry required but missing for ${Yr(this.configuration,e)}`);if(this.immutable)throw new jt(56,`Cache entry required but missing for ${Yr(this.configuration,e)}`);let{path:pe,source:Be}=await S(),{hash:Ce}=await E(pe,{isColdHit:!0}),g=this.getLocatorPath(e,Ce),we=[];Be!=="mirror"&&f!==null&&we.push(async()=>{let Ae=`${f}${this.cacheId}`;await ce.copyFilePromise(pe,Ae,RG.default.constants.COPYFILE_FICLONE),await ce.chmodPromise(Ae,420),await ce.renamePromise(Ae,f)}),(!c.mirrorWriteOnly||f===null)&&we.push(async()=>{let Ae=`${g}${this.cacheId}`;await ce.copyFilePromise(pe,Ae,RG.default.constants.COPYFILE_FICLONE),await ce.chmodPromise(Ae,420),await ce.renamePromise(Ae,g)});let ye=c.mirrorWriteOnly?f??g:g;return await Promise.all(we.map(Ae=>Ae())),[!1,ye,Ce]},I=async()=>{let Be=(async()=>{let Ce=c.unstablePackages?.has(e.locatorHash),g=Ce||!r||this.isChecksumCompatible(r)?this.getLocatorPath(e,r):null,we=g!==null?this.markedFiles.has(g)||await p.existsPromise(g):!1,ye=!!c.mockedPackages?.has(e.locatorHash)&&(!this.check||!we),Ae=ye||we,se=Ae?s:a;if(se&&se(),Ae){let X=null,De=g;if(!ye)if(this.check)X=await C(De);else{let Te=await E(De,{isColdHit:!1});if(Te.isValid)X=Te.hash;else return b()}return[ye,De,X]}else{if(this.immutable&&Ce)throw new jt(56,`Cache entry required but missing for ${Yr(this.configuration,e)}; consider defining ${he.pretty(this.configuration,"supportedArchitectures",he.Type.CODE)} to cache packages for multiple systems`);return b()}})();this.mutexes.set(e.locatorHash,Be);try{return await Be}finally{this.mutexes.delete(e.locatorHash)}};for(let pe;pe=this.mutexes.get(e.locatorHash);)await pe;let[T,N,U]=await I();T||this.markedFiles.add(N);let W=()=>this.refCountedZipFsCache.addOrCreate(N,()=>T?h():new As(N,{baseFs:p,readOnly:!0})),ee,ie=new oE(()=>G4(()=>(ee=W(),ee.value),pe=>`Failed to open the cache entry for ${Yr(this.configuration,e)}: ${pe}`),J),ue=new _f(N,{baseFs:ie,pathUtils:J}),le=()=>{ee?.release()},me=c.unstablePackages?.has(e.locatorHash)?null:U;return[ue,le,me]}},Yot=/^(?:(?(?[0-9]+)(?.*))\/)?(?.*)$/});var UT,cde=Ze(()=>{UT=(r=>(r[r.SCRIPT=0]="SCRIPT",r[r.SHELLCODE=1]="SHELLCODE",r))(UT||{})});var Vot,KI,NG=Ze(()=>{Dt();wc();Tp();Wo();Vot=[[/^(git(?:\+(?:https|ssh))?:\/\/.*(?:\.git)?)#(.*)$/,(t,e,r,s)=>`${r}#commit=${s}`],[/^https:\/\/((?:[^/]+?)@)?codeload\.github\.com\/([^/]+\/[^/]+)\/tar\.gz\/([0-9a-f]+)$/,(t,e,r="",s,a)=>`https://${r}github.com/${s}.git#commit=${a}`],[/^https:\/\/((?:[^/]+?)@)?github\.com\/([^/]+\/[^/]+?)(?:\.git)?#([0-9a-f]+)$/,(t,e,r="",s,a)=>`https://${r}github.com/${s}.git#commit=${a}`],[/^https?:\/\/[^/]+\/(?:[^/]+\/)*(?:@.+(?:\/|(?:%2f)))?([^/]+)\/(?:-|download)\/\1-[^/]+\.tgz(?:#|$)/,t=>`npm:${t}`],[/^https:\/\/npm\.pkg\.github\.com\/download\/(?:@[^/]+)\/(?:[^/]+)\/(?:[^/]+)\/(?:[0-9a-f]+)(?:#|$)/,t=>`npm:${t}`],[/^https:\/\/npm\.fontawesome\.com\/(?:@[^/]+)\/([^/]+)\/-\/([^/]+)\/\1-\2.tgz(?:#|$)/,t=>`npm:${t}`],[/^https?:\/\/[^/]+\/.*\/(@[^/]+)\/([^/]+)\/-\/\1\/\2-(?:[.\d\w-]+)\.tgz(?:#|$)/,(t,e)=>xQ({protocol:"npm:",source:null,selector:t,params:{__archiveUrl:e}})],[/^[^/]+\.tgz#[0-9a-f]+$/,t=>`npm:${t}`]],KI=class{constructor(e){this.resolver=e;this.resolutions=null}async setup(e,{report:r}){let s=J.join(e.cwd,Er.lockfile);if(!ce.existsSync(s))return;let a=await ce.readFilePromise(s,"utf8"),n=as(a);if(Object.hasOwn(n,"__metadata"))return;let c=this.resolutions=new Map;for(let f of Object.keys(n)){let p=HB(f);if(!p){r.reportWarning(14,`Failed to parse the string "${f}" into a proper descriptor`);continue}let h=cl(p.range)?On(p,`npm:${p.range}`):p,{version:E,resolved:C}=n[f];if(!C)continue;let S;for(let[I,T]of Vot){let N=C.match(I);if(N){S=T(E,...N);break}}if(!S){r.reportWarning(14,`${ni(e.configuration,h)}: Only some patterns can be imported from legacy lockfiles (not "${C}")`);continue}let b=h;try{let I=em(h.range),T=HB(I.selector,!0);T&&(b=T)}catch{}c.set(h.descriptorHash,Ws(b,S))}}supportsDescriptor(e,r){return this.resolutions?this.resolutions.has(e.descriptorHash):!1}supportsLocator(e,r){return!1}shouldPersistResolution(e,r){throw new Error("Assertion failed: This resolver doesn't support resolving locators to packages")}bindDescriptor(e,r,s){return e}getResolutionDependencies(e,r){return{}}async getCandidates(e,r,s){if(!this.resolutions)throw new Error("Assertion failed: The resolution store should have been setup");let a=this.resolutions.get(e.descriptorHash);if(!a)throw new Error("Assertion failed: The resolution should have been registered");let n=B8(a),c=s.project.configuration.normalizeDependency(n);return await this.resolver.getCandidates(c,r,s)}async getSatisfying(e,r,s,a){let[n]=await this.getCandidates(e,r,a);return{locators:s.filter(c=>c.locatorHash===n.locatorHash),sorted:!1}}async resolve(e,r){throw new Error("Assertion failed: This resolver doesn't support resolving locators to packages")}}});var lA,ude=Ze(()=>{Rc();Ev();xc();lA=class extends Ao{constructor({configuration:r,stdout:s,suggestInstall:a=!0}){super();this.errorCount=0;TB(this,{configuration:r}),this.configuration=r,this.stdout=s,this.suggestInstall=a}static async start(r,s){let a=new this(r);try{await s(a)}catch(n){a.reportExceptionOnce(n)}finally{await a.finalize()}return a}hasErrors(){return this.errorCount>0}exitCode(){return this.hasErrors()?1:0}reportCacheHit(r){}reportCacheMiss(r){}startSectionSync(r,s){return s()}async startSectionPromise(r,s){return await s()}startTimerSync(r,s,a){return(typeof s=="function"?s:a)()}async startTimerPromise(r,s,a){return await(typeof s=="function"?s:a)()}reportSeparator(){}reportInfo(r,s){}reportWarning(r,s){}reportError(r,s){this.errorCount+=1,this.stdout.write(`${Ht(this.configuration,"\u27A4","redBright")} ${this.formatNameWithHyperlink(r)}: ${s} `)}reportProgress(r){return{...Promise.resolve().then(async()=>{for await(let{}of r);}),stop:()=>{}}}reportJson(r){}reportFold(r,s){}async finalize(){this.errorCount>0&&(this.stdout.write(` `),this.stdout.write(`${Ht(this.configuration,"\u27A4","redBright")} Errors happened when preparing the environment required to run this command. `),this.suggestInstall&&this.stdout.write(`${Ht(this.configuration,"\u27A4","redBright")} This might be caused by packages being missing from the lockfile, in which case running "yarn install" might help. `))}formatNameWithHyperlink(r){return jj(r,{configuration:this.configuration,json:!1})}}});var zI,OG=Ze(()=>{Wo();zI=class{constructor(e){this.resolver=e}supportsDescriptor(e,r){return!!(r.project.storedResolutions.get(e.descriptorHash)||r.project.originalPackages.has(DQ(e).locatorHash))}supportsLocator(e,r){return!!(r.project.originalPackages.has(e.locatorHash)&&!r.project.lockfileNeedsRefresh)}shouldPersistResolution(e,r){throw new Error("The shouldPersistResolution method shouldn't be called on the lockfile resolver, which would always answer yes")}bindDescriptor(e,r,s){return e}getResolutionDependencies(e,r){return this.resolver.getResolutionDependencies(e,r)}async getCandidates(e,r,s){let a=s.project.storedResolutions.get(e.descriptorHash);if(a){let c=s.project.originalPackages.get(a);if(c)return[c]}let n=s.project.originalPackages.get(DQ(e).locatorHash);if(n)return[n];throw new Error("Resolution expected from the lockfile data")}async getSatisfying(e,r,s,a){let[n]=await this.getCandidates(e,r,a);return{locators:s.filter(c=>c.locatorHash===n.locatorHash),sorted:!1}}async resolve(e,r){let s=r.project.originalPackages.get(e.locatorHash);if(!s)throw new Error("The lockfile resolver isn't meant to resolve packages - they should already have been stored into a cache");return s}}});function Kp(){}function Jot(t,e,r,s,a){for(var n=0,c=e.length,f=0,p=0;nb.length?T:b}),h.value=t.join(E)}else h.value=t.join(r.slice(f,f+h.count));f+=h.count,h.added||(p+=h.count)}}var S=e[c-1];return c>1&&typeof S.value=="string"&&(S.added||S.removed)&&t.equals("",S.value)&&(e[c-2].value+=S.value,e.pop()),e}function Kot(t){return{newPos:t.newPos,components:t.components.slice(0)}}function zot(t,e){if(typeof t=="function")e.callback=t;else if(t)for(var r in t)t.hasOwnProperty(r)&&(e[r]=t[r]);return e}function pde(t,e,r){return r=zot(r,{ignoreWhitespace:!0}),HG.diff(t,e,r)}function Zot(t,e,r){return jG.diff(t,e,r)}function _T(t){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?_T=function(e){return typeof e}:_T=function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},_T(t)}function LG(t){return eat(t)||tat(t)||rat(t)||nat()}function eat(t){if(Array.isArray(t))return MG(t)}function tat(t){if(typeof Symbol<"u"&&Symbol.iterator in Object(t))return Array.from(t)}function rat(t,e){if(t){if(typeof t=="string")return MG(t,e);var r=Object.prototype.toString.call(t).slice(8,-1);if(r==="Object"&&t.constructor&&(r=t.constructor.name),r==="Map"||r==="Set")return Array.from(t);if(r==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return MG(t,e)}}function MG(t,e){(e==null||e>t.length)&&(e=t.length);for(var r=0,s=new Array(e);r"u"&&(c.context=4);var f=Zot(r,s,c);if(!f)return;f.push({value:"",lines:[]});function p(U){return U.map(function(W){return" "+W})}for(var h=[],E=0,C=0,S=[],b=1,I=1,T=function(W){var ee=f[W],ie=ee.lines||ee.value.replace(/\n$/,"").split(` `);if(ee.lines=ie,ee.added||ee.removed){var ue;if(!E){var le=f[W-1];E=b,C=I,le&&(S=c.context>0?p(le.lines.slice(-c.context)):[],E-=S.length,C-=S.length)}(ue=S).push.apply(ue,LG(ie.map(function(Ae){return(ee.added?"+":"-")+Ae}))),ee.added?I+=ie.length:b+=ie.length}else{if(E)if(ie.length<=c.context*2&&W=f.length-2&&ie.length<=c.context){var g=/\n$/.test(r),we=/\n$/.test(s),ye=ie.length==0&&S.length>Ce.oldLines;!g&&ye&&r.length>0&&S.splice(Ce.oldLines,0,"\\ No newline at end of file"),(!g&&!ye||!we)&&S.push("\\ No newline at end of file")}h.push(Ce),E=0,C=0,S=[]}b+=ie.length,I+=ie.length}},N=0;N{Kp.prototype={diff:function(e,r){var s=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},a=s.callback;typeof s=="function"&&(a=s,s={}),this.options=s;var n=this;function c(T){return a?(setTimeout(function(){a(void 0,T)},0),!0):T}e=this.castInput(e),r=this.castInput(r),e=this.removeEmpty(this.tokenize(e)),r=this.removeEmpty(this.tokenize(r));var f=r.length,p=e.length,h=1,E=f+p;s.maxEditLength&&(E=Math.min(E,s.maxEditLength));var C=[{newPos:-1,components:[]}],S=this.extractCommon(C[0],r,e,0);if(C[0].newPos+1>=f&&S+1>=p)return c([{value:this.join(r),count:r.length}]);function b(){for(var T=-1*h;T<=h;T+=2){var N=void 0,U=C[T-1],W=C[T+1],ee=(W?W.newPos:0)-T;U&&(C[T-1]=void 0);var ie=U&&U.newPos+1=f&&ee+1>=p)return c(Jot(n,N.components,r,e,n.useLongestToken));C[T]=N}h++}if(a)(function T(){setTimeout(function(){if(h>E)return a();b()||T()},0)})();else for(;h<=E;){var I=b();if(I)return I}},pushComponent:function(e,r,s){var a=e[e.length-1];a&&a.added===r&&a.removed===s?e[e.length-1]={count:a.count+1,added:r,removed:s}:e.push({count:1,added:r,removed:s})},extractCommon:function(e,r,s,a){for(var n=r.length,c=s.length,f=e.newPos,p=f-a,h=0;f+1"u"?r:c}:s;return typeof t=="string"?t:JSON.stringify(UG(t,null,null,a),a," ")};Hv.equals=function(t,e){return Kp.prototype.equals.call(Hv,t.replace(/,([\r\n])/g,"$1"),e.replace(/,([\r\n])/g,"$1"))};_G=new Kp;_G.tokenize=function(t){return t.slice()};_G.join=_G.removeEmpty=function(t){return t}});var HT,gde=Ze(()=>{Rc();HT=class{constructor(e){this.resolver=e}supportsDescriptor(e,r){return this.resolver.supportsDescriptor(e,r)}supportsLocator(e,r){return this.resolver.supportsLocator(e,r)}shouldPersistResolution(e,r){return this.resolver.shouldPersistResolution(e,r)}bindDescriptor(e,r,s){return this.resolver.bindDescriptor(e,r,s)}getResolutionDependencies(e,r){return this.resolver.getResolutionDependencies(e,r)}async getCandidates(e,r,s){throw new jt(20,`This package doesn't seem to be present in your lockfile; run "yarn install" to update the lockfile`)}async getSatisfying(e,r,s,a){throw new jt(20,`This package doesn't seem to be present in your lockfile; run "yarn install" to update the lockfile`)}async resolve(e,r){throw new jt(20,`This package doesn't seem to be present in your lockfile; run "yarn install" to update the lockfile`)}}});var ki,qG=Ze(()=>{Rc();ki=class extends Ao{reportCacheHit(e){}reportCacheMiss(e){}startSectionSync(e,r){return r()}async startSectionPromise(e,r){return await r()}startTimerSync(e,r,s){return(typeof r=="function"?r:s)()}async startTimerPromise(e,r,s){return await(typeof r=="function"?r:s)()}reportSeparator(){}reportInfo(e,r){}reportWarning(e,r){}reportError(e,r){}reportProgress(e){return{...Promise.resolve().then(async()=>{for await(let{}of e);}),stop:()=>{}}}reportJson(e){}reportFold(e,r){}async finalize(){}}});var dde,ZI,WG=Ze(()=>{Dt();dde=ut(wQ());oI();tm();xc();I0();Tp();Wo();ZI=class{constructor(e,{project:r}){this.workspacesCwds=new Set;this.project=r,this.cwd=e}async setup(){this.manifest=await Ut.tryFind(this.cwd)??new Ut,this.relativeCwd=J.relative(this.project.cwd,this.cwd)||vt.dot;let e=this.manifest.name?this.manifest.name:Da(null,`${this.computeCandidateName()}-${cs(this.relativeCwd).substring(0,6)}`);this.anchoredDescriptor=On(e,`${Ei.protocol}${this.relativeCwd}`),this.anchoredLocator=Ws(e,`${Ei.protocol}${this.relativeCwd}`);let r=this.manifest.workspaceDefinitions.map(({pattern:a})=>a);if(r.length===0)return;let s=await(0,dde.default)(r,{cwd:fe.fromPortablePath(this.cwd),onlyDirectories:!0,ignore:["**/node_modules","**/.git","**/.yarn"]});s.sort(),await s.reduce(async(a,n)=>{let c=J.resolve(this.cwd,fe.toPortablePath(n)),f=await ce.existsPromise(J.join(c,"package.json"));await a,f&&this.workspacesCwds.add(c)},Promise.resolve())}get anchoredPackage(){let e=this.project.storedPackages.get(this.anchoredLocator.locatorHash);if(!e)throw new Error(`Assertion failed: Expected workspace ${GB(this.project.configuration,this)} (${Ht(this.project.configuration,J.join(this.cwd,Er.manifest),ht.PATH)}) to have been resolved. Run "yarn install" to update the lockfile`);return e}accepts(e){let r=e.indexOf(":"),s=r!==-1?e.slice(0,r+1):null,a=r!==-1?e.slice(r+1):e;if(s===Ei.protocol&&J.normalize(a)===this.relativeCwd||s===Ei.protocol&&(a==="*"||a==="^"||a==="~"))return!0;let n=cl(a);return n?s===Ei.protocol?n.test(this.manifest.version??"0.0.0"):this.project.configuration.get("enableTransparentWorkspaces")&&this.manifest.version!==null?n.test(this.manifest.version):!1:!1}computeCandidateName(){return this.cwd===this.project.cwd?"root-workspace":`${J.basename(this.cwd)}`||"unnamed-workspace"}getRecursiveWorkspaceDependencies({dependencies:e=Ut.hardDependencies}={}){let r=new Set,s=a=>{for(let n of e)for(let c of a.manifest[n].values()){let f=this.project.tryWorkspaceByDescriptor(c);f===null||r.has(f)||(r.add(f),s(f))}};return s(this),r}getRecursiveWorkspaceDependents({dependencies:e=Ut.hardDependencies}={}){let r=new Set,s=a=>{for(let n of this.project.workspaces)e.some(f=>[...n.manifest[f].values()].some(p=>{let h=this.project.tryWorkspaceByDescriptor(p);return h!==null&&_B(h.anchoredLocator,a.anchoredLocator)}))&&!r.has(n)&&(r.add(n),s(n))};return s(this),r}getRecursiveWorkspaceChildren(){let e=new Set([this]);for(let r of e)for(let s of r.workspacesCwds){let a=this.project.workspacesByCwd.get(s);a&&e.add(a)}return e.delete(this),Array.from(e)}async persistManifest(){let e={};this.manifest.exportTo(e);let r=J.join(this.cwd,Ut.fileName),s=`${JSON.stringify(e,null,this.manifest.indent)} `;await ce.changeFilePromise(r,s,{automaticNewlines:!0}),this.manifest.raw=e}}});function uat({project:t,allDescriptors:e,allResolutions:r,allPackages:s,accessibleLocators:a=new Set,optionalBuilds:n=new Set,peerRequirements:c=new Map,peerWarnings:f=[],peerRequirementNodes:p=new Map,volatileDescriptors:h=new Set}){let E=new Map,C=[],S=new Map,b=new Map,I=new Map,T=new Map,N=new Map,U=new Map(t.workspaces.map(le=>{let me=le.anchoredLocator.locatorHash,pe=s.get(me);if(typeof pe>"u")throw new Error("Assertion failed: The workspace should have an associated package");return[me,LB(pe)]})),W=()=>{let le=ce.mktempSync(),me=J.join(le,"stacktrace.log"),pe=String(C.length+1).length,Be=C.map((Ce,g)=>`${`${g+1}.`.padStart(pe," ")} ${ll(Ce)} `).join("");throw ce.writeFileSync(me,Be),ce.detachTemp(le),new jt(45,`Encountered a stack overflow when resolving peer dependencies; cf ${fe.fromPortablePath(me)}`)},ee=le=>{let me=r.get(le.descriptorHash);if(typeof me>"u")throw new Error("Assertion failed: The resolution should have been registered");let pe=s.get(me);if(!pe)throw new Error("Assertion failed: The package could not be found");return pe},ie=(le,me,pe,{top:Be,optional:Ce})=>{C.length>1e3&&W(),C.push(me);let g=ue(le,me,pe,{top:Be,optional:Ce});return C.pop(),g},ue=(le,me,pe,{top:Be,optional:Ce})=>{if(Ce||n.delete(me.locatorHash),a.has(me.locatorHash))return;a.add(me.locatorHash);let g=s.get(me.locatorHash);if(!g)throw new Error(`Assertion failed: The package (${Yr(t.configuration,me)}) should have been registered`);let we=new Set,ye=new Map,Ae=[],se=[],X=[],De=[];for(let Te of Array.from(g.dependencies.values())){if(g.peerDependencies.has(Te.identHash)&&g.locatorHash!==Be)continue;if(kp(Te))throw new Error("Assertion failed: Virtual packages shouldn't be encountered when virtualizing a branch");h.delete(Te.descriptorHash);let mt=Ce;if(!mt){let ke=g.dependenciesMeta.get(un(Te));if(typeof ke<"u"){let it=ke.get(null);typeof it<"u"&&it.optional&&(mt=!0)}}let j=r.get(Te.descriptorHash);if(!j)throw new Error(`Assertion failed: The resolution (${ni(t.configuration,Te)}) should have been registered`);let rt=U.get(j)||s.get(j);if(!rt)throw new Error(`Assertion failed: The package (${j}, resolved from ${ni(t.configuration,Te)}) should have been registered`);if(rt.peerDependencies.size===0){ie(Te,rt,new Map,{top:Be,optional:mt});continue}let Fe,Ne,be=new Set,Ve=new Map;Ae.push(()=>{Fe=S8(Te,me.locatorHash),Ne=D8(rt,me.locatorHash),g.dependencies.set(Te.identHash,Fe),r.set(Fe.descriptorHash,Ne.locatorHash),e.set(Fe.descriptorHash,Fe),s.set(Ne.locatorHash,Ne),Pp(T,Ne.locatorHash).add(Fe.descriptorHash),we.add(Ne.locatorHash)}),se.push(()=>{N.set(Ne.locatorHash,Ve);for(let ke of Ne.peerDependencies.values()){let Ue=Yl(ye,ke.identHash,()=>{let x=pe.get(ke.identHash)??null,w=g.dependencies.get(ke.identHash);return!w&&UB(me,ke)&&(le.identHash===me.identHash?w=le:(w=On(me,le.range),e.set(w.descriptorHash,w),r.set(w.descriptorHash,me.locatorHash),h.delete(w.descriptorHash),x=null)),w||(w=On(ke,"missing:")),{subject:me,ident:ke,provided:w,root:!x,requests:new Map,hash:`p${cs(me.locatorHash,ke.identHash).slice(0,6)}`}}).provided;if(Ue.range==="missing:"&&Ne.dependencies.has(ke.identHash)){Ne.peerDependencies.delete(ke.identHash);continue}if(Ve.set(ke.identHash,{requester:Ne,descriptor:ke,meta:Ne.peerDependenciesMeta.get(un(ke)),children:new Map}),Ne.dependencies.set(ke.identHash,Ue),kp(Ue)){let x=r.get(Ue.descriptorHash);Pp(I,x).add(Ne.locatorHash)}S.set(Ue.identHash,Ue),Ue.range==="missing:"&&be.add(Ue.identHash)}Ne.dependencies=new Map(qs(Ne.dependencies,([ke,it])=>un(it)))}),X.push(()=>{if(!s.has(Ne.locatorHash))return;let ke=E.get(rt.locatorHash);typeof ke=="number"&&ke>=2&&W();let it=E.get(rt.locatorHash),Ue=typeof it<"u"?it+1:1;E.set(rt.locatorHash,Ue),ie(Fe,Ne,Ve,{top:Be,optional:mt}),E.set(rt.locatorHash,Ue-1)}),De.push(()=>{let ke=r.get(Fe.descriptorHash);if(typeof ke>"u")throw new Error("Assertion failed: Expected the descriptor to be registered");let it=N.get(ke);if(typeof it>"u")throw new Error("Assertion failed: Expected the peer requests to be registered");for(let Ue of ye.values()){let x=it.get(Ue.ident.identHash);x&&(Ue.requests.set(Fe.descriptorHash,x),p.set(Ue.hash,Ue),Ue.root||pe.get(Ue.ident.identHash)?.children.set(Fe.descriptorHash,x))}if(s.has(Ne.locatorHash))for(let Ue of be)Ne.dependencies.delete(Ue)})}for(let Te of[...Ae,...se])Te();for(let Te of we){we.delete(Te);let mt=s.get(Te),j=cs(rI(mt).locatorHash,...Array.from(mt.dependencies.values(),be=>{let Ve=be.range!=="missing:"?r.get(be.descriptorHash):"missing:";if(typeof Ve>"u")throw new Error(`Assertion failed: Expected the resolution for ${ni(t.configuration,be)} to have been registered`);return Ve===Be?`${Ve} (top)`:Ve})),rt=b.get(j);if(typeof rt>"u"){b.set(j,mt);continue}let Fe=Pp(T,rt.locatorHash);for(let be of T.get(mt.locatorHash)??[])r.set(be,rt.locatorHash),Fe.add(be);s.delete(mt.locatorHash),a.delete(mt.locatorHash),we.delete(mt.locatorHash);let Ne=I.get(mt.locatorHash);if(Ne!==void 0){let be=Pp(I,rt.locatorHash);for(let Ve of Ne)be.add(Ve),we.add(Ve)}}for(let Te of[...X,...De])Te()};for(let le of t.workspaces){let me=le.anchoredLocator;h.delete(le.anchoredDescriptor.descriptorHash),ie(le.anchoredDescriptor,me,new Map,{top:me.locatorHash,optional:!1})}for(let le of p.values()){if(!le.root)continue;let me=s.get(le.subject.locatorHash);if(typeof me>"u")continue;for(let Be of le.requests.values()){let Ce=`p${cs(le.subject.locatorHash,un(le.ident),Be.requester.locatorHash).slice(0,6)}`;c.set(Ce,{subject:le.subject.locatorHash,requested:le.ident,rootRequester:Be.requester.locatorHash,allRequesters:Array.from(qB(Be),g=>g.requester.locatorHash)})}let pe=[...qB(le)];if(le.provided.range!=="missing:"){let Be=ee(le.provided),Ce=Be.version??"0.0.0",g=ye=>{if(ye.startsWith(Ei.protocol)){if(!t.tryWorkspaceByLocator(Be))return null;ye=ye.slice(Ei.protocol.length),(ye==="^"||ye==="~")&&(ye="*")}return ye},we=!0;for(let ye of pe){let Ae=g(ye.descriptor.range);if(Ae===null){we=!1;continue}if(!Xf(Ce,Ae)){we=!1;let se=`p${cs(le.subject.locatorHash,un(le.ident),ye.requester.locatorHash).slice(0,6)}`;f.push({type:1,subject:me,requested:le.ident,requester:ye.requester,version:Ce,hash:se,requirementCount:pe.length})}}if(!we){let ye=pe.map(Ae=>g(Ae.descriptor.range));f.push({type:3,node:le,range:ye.includes(null)?null:x8(ye),hash:le.hash})}}else{let Be=!0;for(let Ce of pe)if(!Ce.meta?.optional){Be=!1;let g=`p${cs(le.subject.locatorHash,un(le.ident),Ce.requester.locatorHash).slice(0,6)}`;f.push({type:0,subject:me,requested:le.ident,requester:Ce.requester,hash:g})}Be||f.push({type:2,node:le,hash:le.hash})}}}function*fat(t){let e=new Map;if("children"in t)e.set(t,t);else for(let r of t.requests.values())e.set(r,r);for(let[r,s]of e){yield{request:r,root:s};for(let a of r.children.values())e.has(a)||e.set(a,s)}}function Aat(t,e){let r=[],s=[],a=!1;for(let n of t.peerWarnings)if(!(n.type===1||n.type===0)){if(!t.tryWorkspaceByLocator(n.node.subject)){a=!0;continue}if(n.type===3){let c=t.storedResolutions.get(n.node.provided.descriptorHash);if(typeof c>"u")throw new Error("Assertion failed: Expected the descriptor to be registered");let f=t.storedPackages.get(c);if(typeof f>"u")throw new Error("Assertion failed: Expected the package to be registered");let p=p0(fat(n.node),({request:C,root:S})=>Xf(f.version??"0.0.0",C.descriptor.range)?p0.skip:C===S?Xi(t.configuration,C.requester):`${Xi(t.configuration,C.requester)} (via ${Xi(t.configuration,S.requester)})`),h=[...qB(n.node)].length>1?"and other dependencies request":"requests",E=n.range?iI(t.configuration,n.range):Ht(t.configuration,"but they have non-overlapping ranges!","redBright");r.push(`${Xi(t.configuration,n.node.ident)} is listed by your project with version ${jB(t.configuration,f.version??"0.0.0")} (${Ht(t.configuration,n.hash,ht.CODE)}), which doesn't satisfy what ${p} ${h} (${E}).`)}if(n.type===2){let c=n.node.requests.size>1?" and other dependencies":"";s.push(`${Yr(t.configuration,n.node.subject)} doesn't provide ${Xi(t.configuration,n.node.ident)} (${Ht(t.configuration,n.hash,ht.CODE)}), requested by ${Xi(t.configuration,n.node.requests.values().next().value.requester)}${c}.`)}}e.startSectionSync({reportFooter:()=>{e.reportWarning(86,`Some peer dependencies are incorrectly met by your project; run ${Ht(t.configuration,"yarn explain peer-requirements ",ht.CODE)} for details, where ${Ht(t.configuration,"",ht.CODE)} is the six-letter p-prefixed code.`)},skipIfEmpty:!0},()=>{for(let n of qs(r,c=>JE.default(c)))e.reportWarning(60,n);for(let n of qs(s,c=>JE.default(c)))e.reportWarning(2,n)}),a&&e.reportWarning(86,`Some peer dependencies are incorrectly met by dependencies; run ${Ht(t.configuration,"yarn explain peer-requirements",ht.CODE)} for details.`)}var jT,GT,Ede,JG,VG,KG,qT,sat,oat,mde,aat,lat,cat,$l,YG,WT,yde,Rt,Ide=Ze(()=>{Dt();Dt();wc();Yt();jT=Ie("crypto");GG();ql();GT=ut(Ld()),Ede=ut(Ai()),JG=Ie("util"),VG=ut(Ie("v8")),KG=ut(Ie("zlib"));FG();av();NG();OG();oI();R8();Rc();gde();Ev();qG();tm();WG();OQ();xc();I0();bc();hR();Vj();Tp();Wo();qT=YE(process.env.YARN_LOCKFILE_VERSION_OVERRIDE??8),sat=3,oat=/ *, */g,mde=/\/$/,aat=32,lat=(0,JG.promisify)(KG.default.gzip),cat=(0,JG.promisify)(KG.default.gunzip),$l=(r=>(r.UpdateLockfile="update-lockfile",r.SkipBuild="skip-build",r))($l||{}),YG={restoreLinkersCustomData:["linkersCustomData"],restoreResolutions:["accessibleLocators","conditionalLocators","disabledLocators","optionalBuilds","storedDescriptors","storedResolutions","storedPackages","lockFileChecksum"],restoreBuildState:["skippedBuilds","storedBuildState"]},WT=(a=>(a[a.NotProvided=0]="NotProvided",a[a.NotCompatible=1]="NotCompatible",a[a.NodeNotProvided=2]="NodeNotProvided",a[a.NodeNotCompatible=3]="NodeNotCompatible",a))(WT||{}),yde=t=>cs(`${sat}`,t),Rt=class t{constructor(e,{configuration:r}){this.resolutionAliases=new Map;this.workspaces=[];this.workspacesByCwd=new Map;this.workspacesByIdent=new Map;this.storedResolutions=new Map;this.storedDescriptors=new Map;this.storedPackages=new Map;this.storedChecksums=new Map;this.storedBuildState=new Map;this.accessibleLocators=new Set;this.conditionalLocators=new Set;this.disabledLocators=new Set;this.originalPackages=new Map;this.optionalBuilds=new Set;this.skippedBuilds=new Set;this.lockfileLastVersion=null;this.lockfileNeedsRefresh=!1;this.peerRequirements=new Map;this.peerWarnings=[];this.peerRequirementNodes=new Map;this.linkersCustomData=new Map;this.lockFileChecksum=null;this.installStateChecksum=null;this.configuration=r,this.cwd=e}static async find(e,r){if(!e.projectCwd)throw new nt(`No project found in ${r}`);let s=e.projectCwd,a=r,n=null;for(;n!==e.projectCwd;){if(n=a,ce.existsSync(J.join(n,Er.manifest))){s=n;break}a=J.dirname(n)}let c=new t(e.projectCwd,{configuration:e});ze.telemetry?.reportProject(c.cwd),await c.setupResolutions(),await c.setupWorkspaces(),ze.telemetry?.reportWorkspaceCount(c.workspaces.length),ze.telemetry?.reportDependencyCount(c.workspaces.reduce((I,T)=>I+T.manifest.dependencies.size+T.manifest.devDependencies.size,0));let f=c.tryWorkspaceByCwd(s);if(f)return{project:c,workspace:f,locator:f.anchoredLocator};let p=await c.findLocatorForLocation(`${s}/`,{strict:!0});if(p)return{project:c,locator:p,workspace:null};let h=Ht(e,c.cwd,ht.PATH),E=Ht(e,J.relative(c.cwd,s),ht.PATH),C=`- If ${h} isn't intended to be a project, remove any yarn.lock and/or package.json file there.`,S=`- If ${h} is intended to be a project, it might be that you forgot to list ${E} in its workspace configuration.`,b=`- Finally, if ${h} is fine and you intend ${E} to be treated as a completely separate project (not even a workspace), create an empty yarn.lock file in it.`;throw new nt(`The nearest package directory (${Ht(e,s,ht.PATH)}) doesn't seem to be part of the project declared in ${Ht(e,c.cwd,ht.PATH)}. ${[C,S,b].join(` `)}`)}async setupResolutions(){this.storedResolutions=new Map,this.storedDescriptors=new Map,this.storedPackages=new Map,this.lockFileChecksum=null;let e=J.join(this.cwd,Er.lockfile),r=this.configuration.get("defaultLanguageName");if(ce.existsSync(e)){let s=await ce.readFilePromise(e,"utf8");this.lockFileChecksum=yde(s);let a=as(s);if(a.__metadata){let n=a.__metadata.version,c=a.__metadata.cacheKey;this.lockfileLastVersion=n,this.lockfileNeedsRefresh=n"u")throw new Error(`Assertion failed: Expected the lockfile entry to have a resolution field (${f})`);let h=Qp(p.resolution,!0),E=new Ut;E.load(p,{yamlCompatibilityMode:!0});let C=E.version,S=E.languageName||r,b=p.linkType.toUpperCase(),I=p.conditions??null,T=E.dependencies,N=E.peerDependencies,U=E.dependenciesMeta,W=E.peerDependenciesMeta,ee=E.bin;if(p.checksum!=null){let ue=typeof c<"u"&&!p.checksum.includes("/")?`${c}/${p.checksum}`:p.checksum;this.storedChecksums.set(h.locatorHash,ue)}let ie={...h,version:C,languageName:S,linkType:b,conditions:I,dependencies:T,peerDependencies:N,dependenciesMeta:U,peerDependenciesMeta:W,bin:ee};this.originalPackages.set(ie.locatorHash,ie);for(let ue of f.split(oat)){let le=C0(ue);n<=6&&(le=this.configuration.normalizeDependency(le),le=On(le,le.range.replace(/^patch:[^@]+@(?!npm(:|%3A))/,"$1npm%3A"))),this.storedDescriptors.set(le.descriptorHash,le),this.storedResolutions.set(le.descriptorHash,h.locatorHash)}}}else s.includes("yarn lockfile v1")&&(this.lockfileLastVersion=-1)}}async setupWorkspaces(){this.workspaces=[],this.workspacesByCwd=new Map,this.workspacesByIdent=new Map;let e=new Set,r=(0,GT.default)(4),s=async(a,n)=>{if(e.has(n))return a;e.add(n);let c=new ZI(n,{project:this});await r(()=>c.setup());let f=a.then(()=>{this.addWorkspace(c)});return Array.from(c.workspacesCwds).reduce(s,f)};await s(Promise.resolve(),this.cwd)}addWorkspace(e){let r=this.workspacesByIdent.get(e.anchoredLocator.identHash);if(typeof r<"u")throw new Error(`Duplicate workspace name ${Xi(this.configuration,e.anchoredLocator)}: ${fe.fromPortablePath(e.cwd)} conflicts with ${fe.fromPortablePath(r.cwd)}`);this.workspaces.push(e),this.workspacesByCwd.set(e.cwd,e),this.workspacesByIdent.set(e.anchoredLocator.identHash,e)}get topLevelWorkspace(){return this.getWorkspaceByCwd(this.cwd)}tryWorkspaceByCwd(e){J.isAbsolute(e)||(e=J.resolve(this.cwd,e)),e=J.normalize(e).replace(/\/+$/,"");let r=this.workspacesByCwd.get(e);return r||null}getWorkspaceByCwd(e){let r=this.tryWorkspaceByCwd(e);if(!r)throw new Error(`Workspace not found (${e})`);return r}tryWorkspaceByFilePath(e){let r=null;for(let s of this.workspaces)J.relative(s.cwd,e).startsWith("../")||r&&r.cwd.length>=s.cwd.length||(r=s);return r||null}getWorkspaceByFilePath(e){let r=this.tryWorkspaceByFilePath(e);if(!r)throw new Error(`Workspace not found (${e})`);return r}tryWorkspaceByIdent(e){let r=this.workspacesByIdent.get(e.identHash);return typeof r>"u"?null:r}getWorkspaceByIdent(e){let r=this.tryWorkspaceByIdent(e);if(!r)throw new Error(`Workspace not found (${Xi(this.configuration,e)})`);return r}tryWorkspaceByDescriptor(e){if(e.range.startsWith(Ei.protocol)){let s=e.range.slice(Ei.protocol.length);if(s!=="^"&&s!=="~"&&s!=="*"&&!cl(s))return this.tryWorkspaceByCwd(s)}let r=this.tryWorkspaceByIdent(e);return r===null||(kp(e)&&(e=MB(e)),!r.accepts(e.range))?null:r}getWorkspaceByDescriptor(e){let r=this.tryWorkspaceByDescriptor(e);if(r===null)throw new Error(`Workspace not found (${ni(this.configuration,e)})`);return r}tryWorkspaceByLocator(e){let r=this.tryWorkspaceByIdent(e);return r===null||(Gu(e)&&(e=rI(e)),r.anchoredLocator.locatorHash!==e.locatorHash)?null:r}getWorkspaceByLocator(e){let r=this.tryWorkspaceByLocator(e);if(!r)throw new Error(`Workspace not found (${Yr(this.configuration,e)})`);return r}deleteDescriptor(e){this.storedResolutions.delete(e),this.storedDescriptors.delete(e)}deleteLocator(e){this.originalPackages.delete(e),this.storedPackages.delete(e),this.accessibleLocators.delete(e)}forgetResolution(e){if("descriptorHash"in e){let r=this.storedResolutions.get(e.descriptorHash);this.deleteDescriptor(e.descriptorHash);let s=new Set(this.storedResolutions.values());typeof r<"u"&&!s.has(r)&&this.deleteLocator(r)}if("locatorHash"in e){this.deleteLocator(e.locatorHash);for(let[r,s]of this.storedResolutions)s===e.locatorHash&&this.deleteDescriptor(r)}}forgetTransientResolutions(){let e=this.configuration.makeResolver(),r=new Map;for(let[s,a]of this.storedResolutions.entries()){let n=r.get(a);n||r.set(a,n=new Set),n.add(s)}for(let s of this.originalPackages.values()){let a;try{a=e.shouldPersistResolution(s,{project:this,resolver:e})}catch{a=!1}if(!a){this.deleteLocator(s.locatorHash);let n=r.get(s.locatorHash);if(n){r.delete(s.locatorHash);for(let c of n)this.deleteDescriptor(c)}}}}forgetVirtualResolutions(){for(let e of this.storedPackages.values())for(let[r,s]of e.dependencies)kp(s)&&e.dependencies.set(r,MB(s))}getDependencyMeta(e,r){let s={},n=this.topLevelWorkspace.manifest.dependenciesMeta.get(un(e));if(!n)return s;let c=n.get(null);if(c&&Object.assign(s,c),r===null||!Ede.default.valid(r))return s;for(let[f,p]of n)f!==null&&f===r&&Object.assign(s,p);return s}async findLocatorForLocation(e,{strict:r=!1}={}){let s=new ki,a=this.configuration.getLinkers(),n={project:this,report:s};for(let c of a){let f=await c.findPackageLocator(e,n);if(f){if(r&&(await c.findPackageLocation(f,n)).replace(mde,"")!==e.replace(mde,""))continue;return f}}return null}async loadUserConfig(){let e=J.join(this.cwd,".pnp.cjs");await ce.existsPromise(e)&&bp(e).setup();let r=J.join(this.cwd,"yarn.config.cjs");return await ce.existsPromise(r)?bp(r):null}async preparePackage(e,{resolver:r,resolveOptions:s}){let a=await this.configuration.getPackageExtensions(),n=this.configuration.normalizePackage(e,{packageExtensions:a});for(let[c,f]of n.dependencies){let p=await this.configuration.reduceHook(E=>E.reduceDependency,f,this,n,f,{resolver:r,resolveOptions:s});if(!UB(f,p))throw new Error("Assertion failed: The descriptor ident cannot be changed through aliases");let h=r.bindDescriptor(p,n,s);n.dependencies.set(c,h)}return n}async resolveEverything(e){if(!this.workspacesByCwd||!this.workspacesByIdent)throw new Error("Workspaces must have been setup before calling this function");this.forgetVirtualResolutions();let r=new Map(this.originalPackages),s=[];e.lockfileOnly||this.forgetTransientResolutions();let a=e.resolver||this.configuration.makeResolver(),n=new KI(a);await n.setup(this,{report:e.report});let c=e.lockfileOnly?[new HT(a)]:[n,a],f=new rm([new zI(a),...c]),p=new rm([...c]),h=this.configuration.makeFetcher(),E=e.lockfileOnly?{project:this,report:e.report,resolver:f}:{project:this,report:e.report,resolver:f,fetchOptions:{project:this,cache:e.cache,checksums:this.storedChecksums,report:e.report,fetcher:h,cacheOptions:{mirrorWriteOnly:!0}}},C=new Map,S=new Map,b=new Map,I=new Map,T=new Map,N=new Map,U=this.topLevelWorkspace.anchoredLocator,W=new Set,ee=[],ie=lj(),ue=this.configuration.getSupportedArchitectures();await e.report.startProgressPromise(Ao.progressViaTitle(),async se=>{let X=async rt=>{let Fe=await qE(async()=>await f.resolve(rt,E),ke=>`${Yr(this.configuration,rt)}: ${ke}`);if(!_B(rt,Fe))throw new Error(`Assertion failed: The locator cannot be changed by the resolver (went from ${Yr(this.configuration,rt)} to ${Yr(this.configuration,Fe)})`);I.set(Fe.locatorHash,Fe),!r.delete(Fe.locatorHash)&&!this.tryWorkspaceByLocator(Fe)&&s.push(Fe);let be=await this.preparePackage(Fe,{resolver:f,resolveOptions:E}),Ve=Uu([...be.dependencies.values()].map(ke=>j(ke)));return ee.push(Ve),Ve.catch(()=>{}),S.set(be.locatorHash,be),be},De=async rt=>{let Fe=T.get(rt.locatorHash);if(typeof Fe<"u")return Fe;let Ne=Promise.resolve().then(()=>X(rt));return T.set(rt.locatorHash,Ne),Ne},Te=async(rt,Fe)=>{let Ne=await j(Fe);return C.set(rt.descriptorHash,rt),b.set(rt.descriptorHash,Ne.locatorHash),Ne},mt=async rt=>{se.setTitle(ni(this.configuration,rt));let Fe=this.resolutionAliases.get(rt.descriptorHash);if(typeof Fe<"u")return Te(rt,this.storedDescriptors.get(Fe));let Ne=f.getResolutionDependencies(rt,E),be=Object.fromEntries(await Uu(Object.entries(Ne).map(async([it,Ue])=>{let x=f.bindDescriptor(Ue,U,E),w=await j(x);return W.add(w.locatorHash),[it,w]}))),ke=(await qE(async()=>await f.getCandidates(rt,be,E),it=>`${ni(this.configuration,rt)}: ${it}`))[0];if(typeof ke>"u")throw new jt(82,`${ni(this.configuration,rt)}: No candidates found`);if(e.checkResolutions){let{locators:it}=await p.getSatisfying(rt,be,[ke],{...E,resolver:p});if(!it.find(Ue=>Ue.locatorHash===ke.locatorHash))throw new jt(78,`Invalid resolution ${FB(this.configuration,rt,ke)}`)}return C.set(rt.descriptorHash,rt),b.set(rt.descriptorHash,ke.locatorHash),De(ke)},j=rt=>{let Fe=N.get(rt.descriptorHash);if(typeof Fe<"u")return Fe;C.set(rt.descriptorHash,rt);let Ne=Promise.resolve().then(()=>mt(rt));return N.set(rt.descriptorHash,Ne),Ne};for(let rt of this.workspaces){let Fe=rt.anchoredDescriptor;ee.push(j(Fe))}for(;ee.length>0;){let rt=[...ee];ee.length=0,await Uu(rt)}});let le=Wl(r.values(),se=>this.tryWorkspaceByLocator(se)?Wl.skip:se);if(s.length>0||le.length>0){let se=new Set(this.workspaces.flatMap(rt=>{let Fe=S.get(rt.anchoredLocator.locatorHash);if(!Fe)throw new Error("Assertion failed: The workspace should have been resolved");return Array.from(Fe.dependencies.values(),Ne=>{let be=b.get(Ne.descriptorHash);if(!be)throw new Error("Assertion failed: The resolution should have been registered");return be})})),X=rt=>se.has(rt.locatorHash)?"0":"1",De=rt=>ll(rt),Te=qs(s,[X,De]),mt=qs(le,[X,De]),j=e.report.getRecommendedLength();Te.length>0&&e.report.reportInfo(85,`${Ht(this.configuration,"+",ht.ADDED)} ${Xk(this.configuration,Te,j)}`),mt.length>0&&e.report.reportInfo(85,`${Ht(this.configuration,"-",ht.REMOVED)} ${Xk(this.configuration,mt,j)}`)}let me=new Set(this.resolutionAliases.values()),pe=new Set(S.keys()),Be=new Set,Ce=new Map,g=[],we=new Map;uat({project:this,accessibleLocators:Be,volatileDescriptors:me,optionalBuilds:pe,peerRequirements:Ce,peerWarnings:g,peerRequirementNodes:we,allDescriptors:C,allResolutions:b,allPackages:S});for(let se of W)pe.delete(se);for(let se of me)C.delete(se),b.delete(se);let ye=new Set,Ae=new Set;for(let se of S.values())se.conditions!=null&&pe.has(se.locatorHash)&&(QQ(se,ue)||(QQ(se,ie)&&e.report.reportWarningOnce(77,`${Yr(this.configuration,se)}: Your current architecture (${process.platform}-${process.arch}) is supported by this package, but is missing from the ${Ht(this.configuration,"supportedArchitectures",ht.SETTING)} setting`),Ae.add(se.locatorHash)),ye.add(se.locatorHash));this.storedResolutions=b,this.storedDescriptors=C,this.storedPackages=S,this.accessibleLocators=Be,this.conditionalLocators=ye,this.disabledLocators=Ae,this.originalPackages=I,this.optionalBuilds=pe,this.peerRequirements=Ce,this.peerWarnings=g,this.peerRequirementNodes=we}async fetchEverything({cache:e,report:r,fetcher:s,mode:a,persistProject:n=!0}){let c={mockedPackages:this.disabledLocators,unstablePackages:this.conditionalLocators},f=s||this.configuration.makeFetcher(),p={checksums:this.storedChecksums,project:this,cache:e,fetcher:f,report:r,cacheOptions:c},h=Array.from(new Set(qs(this.storedResolutions.values(),[I=>{let T=this.storedPackages.get(I);if(!T)throw new Error("Assertion failed: The locator should have been registered");return ll(T)}])));a==="update-lockfile"&&(h=h.filter(I=>!this.storedChecksums.has(I)));let E=!1,C=Ao.progressViaCounter(h.length);await r.reportProgress(C);let S=(0,GT.default)(aat);if(await Uu(h.map(I=>S(async()=>{let T=this.storedPackages.get(I);if(!T)throw new Error("Assertion failed: The locator should have been registered");if(Gu(T))return;let N;try{N=await f.fetch(T,p)}catch(U){U.message=`${Yr(this.configuration,T)}: ${U.message}`,r.reportExceptionOnce(U),E=U;return}N.checksum!=null?this.storedChecksums.set(T.locatorHash,N.checksum):this.storedChecksums.delete(T.locatorHash),N.releaseFs&&N.releaseFs()}).finally(()=>{C.tick()}))),E)throw E;let b=n&&a!=="update-lockfile"?await this.cacheCleanup({cache:e,report:r}):null;if(r.cacheMisses.size>0||b){let T=(await Promise.all([...r.cacheMisses].map(async le=>{let me=this.storedPackages.get(le),pe=this.storedChecksums.get(le)??null,Be=e.getLocatorPath(me,pe);return(await ce.statPromise(Be)).size}))).reduce((le,me)=>le+me,0)-(b?.size??0),N=r.cacheMisses.size,U=b?.count??0,W=`${Wk(N,{zero:"No new packages",one:"A package was",more:`${Ht(this.configuration,N,ht.NUMBER)} packages were`})} added to the project`,ee=`${Wk(U,{zero:"none were",one:"one was",more:`${Ht(this.configuration,U,ht.NUMBER)} were`})} removed`,ie=T!==0?` (${Ht(this.configuration,T,ht.SIZE_DIFF)})`:"",ue=U>0?N>0?`${W}, and ${ee}${ie}.`:`${W}, but ${ee}${ie}.`:`${W}${ie}.`;r.reportInfo(13,ue)}}async linkEverything({cache:e,report:r,fetcher:s,mode:a}){let n={mockedPackages:this.disabledLocators,unstablePackages:this.conditionalLocators,skipIntegrityCheck:!0},c=s||this.configuration.makeFetcher(),f={checksums:this.storedChecksums,project:this,cache:e,fetcher:c,report:r,cacheOptions:n},p=this.configuration.getLinkers(),h={project:this,report:r},E=new Map(p.map(ye=>{let Ae=ye.makeInstaller(h),se=ye.getCustomDataKey(),X=this.linkersCustomData.get(se);return typeof X<"u"&&Ae.attachCustomData(X),[ye,Ae]})),C=new Map,S=new Map,b=new Map,I=new Map(await Uu([...this.accessibleLocators].map(async ye=>{let Ae=this.storedPackages.get(ye);if(!Ae)throw new Error("Assertion failed: The locator should have been registered");return[ye,await c.fetch(Ae,f)]}))),T=[],N=new Set,U=[];for(let ye of this.accessibleLocators){let Ae=this.storedPackages.get(ye);if(typeof Ae>"u")throw new Error("Assertion failed: The locator should have been registered");let se=I.get(Ae.locatorHash);if(typeof se>"u")throw new Error("Assertion failed: The fetch result should have been registered");let X=[],De=mt=>{X.push(mt)},Te=this.tryWorkspaceByLocator(Ae);if(Te!==null){let mt=[],{scripts:j}=Te.manifest;for(let Fe of["preinstall","install","postinstall"])j.has(Fe)&&mt.push({type:0,script:Fe});try{for(let[Fe,Ne]of E)if(Fe.supportsPackage(Ae,h)&&(await Ne.installPackage(Ae,se,{holdFetchResult:De})).buildRequest!==null)throw new Error("Assertion failed: Linkers can't return build directives for workspaces; this responsibility befalls to the Yarn core")}finally{X.length===0?se.releaseFs?.():T.push(Uu(X).catch(()=>{}).then(()=>{se.releaseFs?.()}))}let rt=J.join(se.packageFs.getRealPath(),se.prefixPath);S.set(Ae.locatorHash,rt),!Gu(Ae)&&mt.length>0&&b.set(Ae.locatorHash,{buildDirectives:mt,buildLocations:[rt]})}else{let mt=p.find(Fe=>Fe.supportsPackage(Ae,h));if(!mt)throw new jt(12,`${Yr(this.configuration,Ae)} isn't supported by any available linker`);let j=E.get(mt);if(!j)throw new Error("Assertion failed: The installer should have been registered");let rt;try{rt=await j.installPackage(Ae,se,{holdFetchResult:De})}finally{X.length===0?se.releaseFs?.():T.push(Uu(X).then(()=>{}).then(()=>{se.releaseFs?.()}))}C.set(Ae.locatorHash,mt),S.set(Ae.locatorHash,rt.packageLocation),rt.buildRequest&&rt.packageLocation&&(rt.buildRequest.skipped?(N.add(Ae.locatorHash),this.skippedBuilds.has(Ae.locatorHash)||U.push([Ae,rt.buildRequest.explain])):b.set(Ae.locatorHash,{buildDirectives:rt.buildRequest.directives,buildLocations:[rt.packageLocation]}))}}let W=new Map;for(let ye of this.accessibleLocators){let Ae=this.storedPackages.get(ye);if(!Ae)throw new Error("Assertion failed: The locator should have been registered");let se=this.tryWorkspaceByLocator(Ae)!==null,X=async(De,Te)=>{let mt=S.get(Ae.locatorHash);if(typeof mt>"u")throw new Error(`Assertion failed: The package (${Yr(this.configuration,Ae)}) should have been registered`);let j=[];for(let rt of Ae.dependencies.values()){let Fe=this.storedResolutions.get(rt.descriptorHash);if(typeof Fe>"u")throw new Error(`Assertion failed: The resolution (${ni(this.configuration,rt)}, from ${Yr(this.configuration,Ae)})should have been registered`);let Ne=this.storedPackages.get(Fe);if(typeof Ne>"u")throw new Error(`Assertion failed: The package (${Fe}, resolved from ${ni(this.configuration,rt)}) should have been registered`);let be=this.tryWorkspaceByLocator(Ne)===null?C.get(Fe):null;if(typeof be>"u")throw new Error(`Assertion failed: The package (${Fe}, resolved from ${ni(this.configuration,rt)}) should have been registered`);be===De||be===null?S.get(Ne.locatorHash)!==null&&j.push([rt,Ne]):!se&&mt!==null&&xB(W,Fe).push(mt)}mt!==null&&await Te.attachInternalDependencies(Ae,j)};if(se)for(let[De,Te]of E)De.supportsPackage(Ae,h)&&await X(De,Te);else{let De=C.get(Ae.locatorHash);if(!De)throw new Error("Assertion failed: The linker should have been found");let Te=E.get(De);if(!Te)throw new Error("Assertion failed: The installer should have been registered");await X(De,Te)}}for(let[ye,Ae]of W){let se=this.storedPackages.get(ye);if(!se)throw new Error("Assertion failed: The package should have been registered");let X=C.get(se.locatorHash);if(!X)throw new Error("Assertion failed: The linker should have been found");let De=E.get(X);if(!De)throw new Error("Assertion failed: The installer should have been registered");await De.attachExternalDependents(se,Ae)}let ee=new Map;for(let[ye,Ae]of E){let se=await Ae.finalizeInstall();for(let X of se?.records??[])X.buildRequest.skipped?(N.add(X.locator.locatorHash),this.skippedBuilds.has(X.locator.locatorHash)||U.push([X.locator,X.buildRequest.explain])):b.set(X.locator.locatorHash,{buildDirectives:X.buildRequest.directives,buildLocations:X.buildLocations});typeof se?.customData<"u"&&ee.set(ye.getCustomDataKey(),se.customData)}if(this.linkersCustomData=ee,await Uu(T),a==="skip-build")return;for(let[,ye]of qs(U,([Ae])=>ll(Ae)))ye(r);let ie=new Set(b.keys()),ue=(0,jT.createHash)("sha512");ue.update(process.versions.node),await this.configuration.triggerHook(ye=>ye.globalHashGeneration,this,ye=>{ue.update("\0"),ue.update(ye)});let le=ue.digest("hex"),me=new Map,pe=ye=>{let Ae=me.get(ye.locatorHash);if(typeof Ae<"u")return Ae;let se=this.storedPackages.get(ye.locatorHash);if(typeof se>"u")throw new Error("Assertion failed: The package should have been registered");let X=(0,jT.createHash)("sha512");X.update(ye.locatorHash),me.set(ye.locatorHash,"");for(let De of se.dependencies.values()){let Te=this.storedResolutions.get(De.descriptorHash);if(typeof Te>"u")throw new Error(`Assertion failed: The resolution (${ni(this.configuration,De)}) should have been registered`);let mt=this.storedPackages.get(Te);if(typeof mt>"u")throw new Error("Assertion failed: The package should have been registered");X.update(pe(mt))}return Ae=X.digest("hex"),me.set(ye.locatorHash,Ae),Ae},Be=(ye,Ae)=>{let se=(0,jT.createHash)("sha512");se.update(le),se.update(pe(ye));for(let X of Ae)se.update(X);return se.digest("hex")},Ce=new Map,g=!1,we=ye=>{let Ae=new Set([ye.locatorHash]);for(let se of Ae){let X=this.storedPackages.get(se);if(!X)throw new Error("Assertion failed: The package should have been registered");for(let De of X.dependencies.values()){let Te=this.storedResolutions.get(De.descriptorHash);if(!Te)throw new Error(`Assertion failed: The resolution (${ni(this.configuration,De)}) should have been registered`);if(Te!==ye.locatorHash&&ie.has(Te))return!1;let mt=this.storedPackages.get(Te);if(!mt)throw new Error("Assertion failed: The package should have been registered");let j=this.tryWorkspaceByLocator(mt);if(j){if(j.anchoredLocator.locatorHash!==ye.locatorHash&&ie.has(j.anchoredLocator.locatorHash))return!1;Ae.add(j.anchoredLocator.locatorHash)}Ae.add(Te)}}return!0};for(;ie.size>0;){let ye=ie.size,Ae=[];for(let se of ie){let X=this.storedPackages.get(se);if(!X)throw new Error("Assertion failed: The package should have been registered");if(!we(X))continue;let De=b.get(X.locatorHash);if(!De)throw new Error("Assertion failed: The build directive should have been registered");let Te=Be(X,De.buildLocations);if(this.storedBuildState.get(X.locatorHash)===Te){Ce.set(X.locatorHash,Te),ie.delete(se);continue}g||(await this.persistInstallStateFile(),g=!0),this.storedBuildState.has(X.locatorHash)?r.reportInfo(8,`${Yr(this.configuration,X)} must be rebuilt because its dependency tree changed`):r.reportInfo(7,`${Yr(this.configuration,X)} must be built because it never has been before or the last one failed`);let mt=De.buildLocations.map(async j=>{if(!J.isAbsolute(j))throw new Error(`Assertion failed: Expected the build location to be absolute (not ${j})`);for(let rt of De.buildDirectives){let Fe=`# This file contains the result of Yarn building a package (${ll(X)}) `;switch(rt.type){case 0:Fe+=`# Script name: ${rt.script} `;break;case 1:Fe+=`# Script code: ${rt.script} `;break}let Ne=null;if(!await ce.mktempPromise(async Ve=>{let ke=J.join(Ve,"build.log"),{stdout:it,stderr:Ue}=this.configuration.getSubprocessStreams(ke,{header:Fe,prefix:Yr(this.configuration,X),report:r}),x;try{switch(rt.type){case 0:x=await OR(X,rt.script,[],{cwd:j,project:this,stdin:Ne,stdout:it,stderr:Ue});break;case 1:x=await Gj(X,rt.script,[],{cwd:j,project:this,stdin:Ne,stdout:it,stderr:Ue});break}}catch(y){Ue.write(y.stack),x=1}if(it.end(),Ue.end(),x===0)return!0;ce.detachTemp(Ve);let w=`${Yr(this.configuration,X)} couldn't be built successfully (exit code ${Ht(this.configuration,x,ht.NUMBER)}, logs can be found here: ${Ht(this.configuration,ke,ht.PATH)})`,P=this.optionalBuilds.has(X.locatorHash);return P?r.reportInfo(9,w):r.reportError(9,w),zpe&&r.reportFold(fe.fromPortablePath(ke),ce.readFileSync(ke,"utf8")),P}))return!1}return!0});Ae.push(...mt,Promise.allSettled(mt).then(j=>{ie.delete(se),j.every(rt=>rt.status==="fulfilled"&&rt.value===!0)&&Ce.set(X.locatorHash,Te)}))}if(await Uu(Ae),ye===ie.size){let se=Array.from(ie).map(X=>{let De=this.storedPackages.get(X);if(!De)throw new Error("Assertion failed: The package should have been registered");return Yr(this.configuration,De)}).join(", ");r.reportError(3,`Some packages have circular dependencies that make their build order unsatisfiable - as a result they won't be built (affected packages are: ${se})`);break}}this.storedBuildState=Ce,this.skippedBuilds=N}async installWithNewReport(e,r){return(await Ot.start({configuration:this.configuration,json:e.json,stdout:e.stdout,forceSectionAlignment:!0,includeLogs:!e.json&&!e.quiet,includeVersion:!0},async a=>{await this.install({...r,report:a})})).exitCode()}async install(e){let r=this.configuration.get("nodeLinker");ze.telemetry?.reportInstall(r);let s=!1;if(await e.report.startTimerPromise("Project validation",{skipIfEmpty:!0},async()=>{this.configuration.get("enableOfflineMode")&&e.report.reportWarning(90,"Offline work is enabled; Yarn won't fetch packages from the remote registry if it can avoid it"),await this.configuration.triggerHook(E=>E.validateProject,this,{reportWarning:(E,C)=>{e.report.reportWarning(E,C)},reportError:(E,C)=>{e.report.reportError(E,C),s=!0}})}),s)return;let a=await this.configuration.getPackageExtensions();for(let E of a.values())for(let[,C]of E)for(let S of C)S.status="inactive";let n=J.join(this.cwd,Er.lockfile),c=null;if(e.immutable)try{c=await ce.readFilePromise(n,"utf8")}catch(E){throw E.code==="ENOENT"?new jt(28,"The lockfile would have been created by this install, which is explicitly forbidden."):E}await e.report.startTimerPromise("Resolution step",async()=>{await this.resolveEverything(e)}),await e.report.startTimerPromise("Post-resolution validation",{skipIfEmpty:!0},async()=>{Aat(this,e.report);for(let[,E]of a)for(let[,C]of E)for(let S of C)if(S.userProvided){let b=Ht(this.configuration,S,ht.PACKAGE_EXTENSION);switch(S.status){case"inactive":e.report.reportWarning(68,`${b}: No matching package in the dependency tree; you may not need this rule anymore.`);break;case"redundant":e.report.reportWarning(69,`${b}: This rule seems redundant when applied on the original package; the extension may have been applied upstream.`);break}}if(c!==null){let E=Ed(c,this.generateLockfile());if(E!==c){let C=hde(n,n,c,E,void 0,void 0,{maxEditLength:100});if(C){e.report.reportSeparator();for(let S of C.hunks){e.report.reportInfo(null,`@@ -${S.oldStart},${S.oldLines} +${S.newStart},${S.newLines} @@`);for(let b of S.lines)b.startsWith("+")?e.report.reportError(28,Ht(this.configuration,b,ht.ADDED)):b.startsWith("-")?e.report.reportError(28,Ht(this.configuration,b,ht.REMOVED)):e.report.reportInfo(null,Ht(this.configuration,b,"grey"))}e.report.reportSeparator()}throw new jt(28,"The lockfile would have been modified by this install, which is explicitly forbidden.")}}});for(let E of a.values())for(let[,C]of E)for(let S of C)S.userProvided&&S.status==="active"&&ze.telemetry?.reportPackageExtension(Zd(S,ht.PACKAGE_EXTENSION));await e.report.startTimerPromise("Fetch step",async()=>{await this.fetchEverything(e)});let f=e.immutable?[...new Set(this.configuration.get("immutablePatterns"))].sort():[],p=await Promise.all(f.map(async E=>SQ(E,{cwd:this.cwd})));(typeof e.persistProject>"u"||e.persistProject)&&await this.persist(),await e.report.startTimerPromise("Link step",async()=>{if(e.mode==="update-lockfile"){e.report.reportWarning(73,`Skipped due to ${Ht(this.configuration,"mode=update-lockfile",ht.CODE)}`);return}await this.linkEverything(e);let E=await Promise.all(f.map(async C=>SQ(C,{cwd:this.cwd})));for(let C=0;C{await this.configuration.triggerHook(E=>E.validateProjectAfterInstall,this,{reportWarning:(E,C)=>{e.report.reportWarning(E,C)},reportError:(E,C)=>{e.report.reportError(E,C),h=!0}})}),!h&&await this.configuration.triggerHook(E=>E.afterAllInstalled,this,e)}generateLockfile(){let e=new Map;for(let[n,c]of this.storedResolutions.entries()){let f=e.get(c);f||e.set(c,f=new Set),f.add(n)}let r={},{cacheKey:s}=Kr.getCacheKey(this.configuration);r.__metadata={version:qT,cacheKey:s};for(let[n,c]of e.entries()){let f=this.originalPackages.get(n);if(!f)continue;let p=[];for(let C of c){let S=this.storedDescriptors.get(C);if(!S)throw new Error("Assertion failed: The descriptor should have been registered");p.push(S)}let h=p.map(C=>al(C)).sort().join(", "),E=new Ut;E.version=f.linkType==="HARD"?f.version:"0.0.0-use.local",E.languageName=f.languageName,E.dependencies=new Map(f.dependencies),E.peerDependencies=new Map(f.peerDependencies),E.dependenciesMeta=new Map(f.dependenciesMeta),E.peerDependenciesMeta=new Map(f.peerDependenciesMeta),E.bin=new Map(f.bin),r[h]={...E.exportTo({},{compatibilityMode:!1}),linkType:f.linkType.toLowerCase(),resolution:ll(f),checksum:this.storedChecksums.get(f.locatorHash),conditions:f.conditions||void 0}}return`${[`# This file is generated by running "yarn install" inside your project. `,`# Manual changes might be lost - proceed with caution! `].join("")} `+nl(r)}async persistLockfile(){let e=J.join(this.cwd,Er.lockfile),r="";try{r=await ce.readFilePromise(e,"utf8")}catch{}let s=this.generateLockfile(),a=Ed(r,s);a!==r&&(await ce.writeFilePromise(e,a),this.lockFileChecksum=yde(a),this.lockfileNeedsRefresh=!1)}async persistInstallStateFile(){let e=[];for(let c of Object.values(YG))e.push(...c);let r=Kd(this,e),s=VG.default.serialize(r),a=cs(s);if(this.installStateChecksum===a)return;let n=this.configuration.get("installStatePath");await ce.mkdirPromise(J.dirname(n),{recursive:!0}),await ce.writeFilePromise(n,await lat(s)),this.installStateChecksum=a}async restoreInstallState({restoreLinkersCustomData:e=!0,restoreResolutions:r=!0,restoreBuildState:s=!0}={}){let a=this.configuration.get("installStatePath"),n;try{let c=await cat(await ce.readFilePromise(a));n=VG.default.deserialize(c),this.installStateChecksum=cs(c)}catch{r&&await this.applyLightResolution();return}e&&typeof n.linkersCustomData<"u"&&(this.linkersCustomData=n.linkersCustomData),s&&Object.assign(this,Kd(n,YG.restoreBuildState)),r&&(n.lockFileChecksum===this.lockFileChecksum?Object.assign(this,Kd(n,YG.restoreResolutions)):await this.applyLightResolution())}async applyLightResolution(){await this.resolveEverything({lockfileOnly:!0,report:new ki}),await this.persistInstallStateFile()}async persist(){let e=(0,GT.default)(4);await Promise.all([this.persistLockfile(),...this.workspaces.map(r=>e(()=>r.persistManifest()))])}async cacheCleanup({cache:e,report:r}){if(this.configuration.get("enableGlobalCache"))return null;let s=new Set([".gitignore"]);if(!j8(e.cwd,this.cwd)||!await ce.existsPromise(e.cwd))return null;let a=[];for(let c of await ce.readdirPromise(e.cwd)){if(s.has(c))continue;let f=J.resolve(e.cwd,c);e.markedFiles.has(f)||(e.immutable?r.reportError(56,`${Ht(this.configuration,J.basename(f),"magenta")} appears to be unused and would be marked for deletion, but the cache is immutable`):a.push(ce.lstatPromise(f).then(async p=>(await ce.removePromise(f),p.size))))}if(a.length===0)return null;let n=await Promise.all(a);return{count:a.length,size:n.reduce((c,f)=>c+f,0)}}}});function pat(t){let s=Math.floor(t.timeNow/864e5),a=t.updateInterval*864e5,n=t.state.lastUpdate??t.timeNow+a+Math.floor(a*t.randomInitialInterval),c=n+a,f=t.state.lastTips??s*864e5,p=f+864e5+8*36e5-t.timeZone,h=c<=t.timeNow,E=p<=t.timeNow,C=null;return(h||E||!t.state.lastUpdate||!t.state.lastTips)&&(C={},C.lastUpdate=h?t.timeNow:n,C.lastTips=f,C.blocks=h?{}:t.state.blocks,C.displayedTips=t.state.displayedTips),{nextState:C,triggerUpdate:h,triggerTips:E,nextTips:E?s*864e5:f}}var XI,Cde=Ze(()=>{Dt();yv();I0();AR();bc();Tp();XI=class{constructor(e,r){this.values=new Map;this.hits=new Map;this.enumerators=new Map;this.nextTips=0;this.displayedTips=[];this.shouldCommitTips=!1;this.configuration=e;let s=this.getRegistryPath();this.isNew=!ce.existsSync(s),this.shouldShowTips=!1,this.sendReport(r),this.startBuffer()}commitTips(){this.shouldShowTips&&(this.shouldCommitTips=!0)}selectTip(e){let r=new Set(this.displayedTips),s=f=>f&&fn?Xf(fn,f):!1,a=e.map((f,p)=>p).filter(f=>e[f]&&s(e[f]?.selector));if(a.length===0)return null;let n=a.filter(f=>!r.has(f));if(n.length===0){let f=Math.floor(a.length*.2);this.displayedTips=f>0?this.displayedTips.slice(-f):[],n=a.filter(p=>!r.has(p))}let c=n[Math.floor(Math.random()*n.length)];return this.displayedTips.push(c),this.commitTips(),e[c]}reportVersion(e){this.reportValue("version",e.replace(/-git\..*/,"-git"))}reportCommandName(e){this.reportValue("commandName",e||"")}reportPluginName(e){this.reportValue("pluginName",e)}reportProject(e){this.reportEnumerator("projectCount",e)}reportInstall(e){this.reportHit("installCount",e)}reportPackageExtension(e){this.reportValue("packageExtension",e)}reportWorkspaceCount(e){this.reportValue("workspaceCount",String(e))}reportDependencyCount(e){this.reportValue("dependencyCount",String(e))}reportValue(e,r){Pp(this.values,e).add(r)}reportEnumerator(e,r){Pp(this.enumerators,e).add(cs(r))}reportHit(e,r="*"){let s=j4(this.hits,e),a=Yl(s,r,()=>0);s.set(r,a+1)}getRegistryPath(){let e=this.configuration.get("globalFolder");return J.join(e,"telemetry.json")}sendReport(e){let r=this.getRegistryPath(),s;try{s=ce.readJsonSync(r)}catch{s={}}let{nextState:a,triggerUpdate:n,triggerTips:c,nextTips:f}=pat({state:s,timeNow:Date.now(),timeZone:new Date().getTimezoneOffset()*60*1e3,randomInitialInterval:Math.random(),updateInterval:this.configuration.get("telemetryInterval")});if(this.nextTips=f,this.displayedTips=s.displayedTips??[],a!==null)try{ce.mkdirSync(J.dirname(r),{recursive:!0}),ce.writeJsonSync(r,a)}catch{return!1}if(c&&this.configuration.get("enableTips")&&(this.shouldShowTips=!0),n){let p=s.blocks??{};if(Object.keys(p).length===0){let h=`https://browser-http-intake.logs.datadoghq.eu/v1/input/${e}?ddsource=yarn`,E=C=>aj(h,C,{configuration:this.configuration}).catch(()=>{});for(let[C,S]of Object.entries(s.blocks??{})){if(Object.keys(S).length===0)continue;let b=S;b.userId=C,b.reportType="primary";for(let N of Object.keys(b.enumerators??{}))b.enumerators[N]=b.enumerators[N].length;E(b);let I=new Map,T=20;for(let[N,U]of Object.entries(b.values))U.length>0&&I.set(N,U.slice(0,T));for(;I.size>0;){let N={};N.userId=C,N.reportType="secondary",N.metrics={};for(let[U,W]of I)N.metrics[U]=W.shift(),W.length===0&&I.delete(U);E(N)}}}}return!0}applyChanges(){let e=this.getRegistryPath(),r;try{r=ce.readJsonSync(e)}catch{r={}}let s=this.configuration.get("telemetryUserId")??"*",a=r.blocks=r.blocks??{},n=a[s]=a[s]??{};for(let c of this.hits.keys()){let f=n.hits=n.hits??{},p=f[c]=f[c]??{};for(let[h,E]of this.hits.get(c))p[h]=(p[h]??0)+E}for(let c of["values","enumerators"])for(let f of this[c].keys()){let p=n[c]=n[c]??{};p[f]=[...new Set([...p[f]??[],...this[c].get(f)??[]])]}this.shouldCommitTips&&(r.lastTips=this.nextTips,r.displayedTips=this.displayedTips),ce.mkdirSync(J.dirname(e),{recursive:!0}),ce.writeJsonSync(e,r)}startBuffer(){process.on("exit",()=>{try{this.applyChanges()}catch{}})}}});var jv={};Vt(jv,{BuildDirectiveType:()=>UT,CACHE_CHECKPOINT:()=>TG,CACHE_VERSION:()=>MT,Cache:()=>Kr,Configuration:()=>ze,DEFAULT_RC_FILENAME:()=>hj,FormatType:()=>ope,InstallMode:()=>$l,LEGACY_PLUGINS:()=>ov,LOCKFILE_VERSION:()=>qT,LegacyMigrationResolver:()=>KI,LightReport:()=>lA,LinkType:()=>VE,LockfileResolver:()=>zI,Manifest:()=>Ut,MessageName:()=>Br,MultiFetcher:()=>aI,PackageExtensionStatus:()=>Y4,PackageExtensionType:()=>W4,PeerWarningType:()=>WT,Project:()=>Rt,Report:()=>Ao,ReportError:()=>jt,SettingsType:()=>wI,StreamReport:()=>Ot,TAG_REGEXP:()=>Mp,TelemetryManager:()=>XI,ThrowReport:()=>ki,VirtualFetcher:()=>lI,WindowsLinkType:()=>ER,Workspace:()=>ZI,WorkspaceFetcher:()=>cI,WorkspaceResolver:()=>Ei,YarnVersion:()=>fn,execUtils:()=>qr,folderUtils:()=>NQ,formatUtils:()=>he,hashUtils:()=>Nn,httpUtils:()=>ln,miscUtils:()=>je,nodeUtils:()=>fs,parseMessageName:()=>jx,reportOptionDeprecations:()=>SI,scriptUtils:()=>In,semverUtils:()=>Fr,stringifyMessageName:()=>Yf,structUtils:()=>G,tgzUtils:()=>ps,treeUtils:()=>xs});var Ge=Ze(()=>{gR();OQ();xc();I0();AR();bc();hR();Vj();Tp();Wo();$ge();ode();FG();av();av();cde();NG();ude();OG();oI();Gx();Q8();Ide();Rc();Ev();Cde();qG();T8();F8();tm();WG();yv();ule()});var Pde=_((OHt,qv)=>{"use strict";var gat=process.env.TERM_PROGRAM==="Hyper",dat=process.platform==="win32",vde=process.platform==="linux",zG={ballotDisabled:"\u2612",ballotOff:"\u2610",ballotOn:"\u2611",bullet:"\u2022",bulletWhite:"\u25E6",fullBlock:"\u2588",heart:"\u2764",identicalTo:"\u2261",line:"\u2500",mark:"\u203B",middot:"\xB7",minus:"\uFF0D",multiplication:"\xD7",obelus:"\xF7",pencilDownRight:"\u270E",pencilRight:"\u270F",pencilUpRight:"\u2710",percent:"%",pilcrow2:"\u2761",pilcrow:"\xB6",plusMinus:"\xB1",section:"\xA7",starsOff:"\u2606",starsOn:"\u2605",upDownArrow:"\u2195"},Sde=Object.assign({},zG,{check:"\u221A",cross:"\xD7",ellipsisLarge:"...",ellipsis:"...",info:"i",question:"?",questionSmall:"?",pointer:">",pointerSmall:"\xBB",radioOff:"( )",radioOn:"(*)",warning:"\u203C"}),Dde=Object.assign({},zG,{ballotCross:"\u2718",check:"\u2714",cross:"\u2716",ellipsisLarge:"\u22EF",ellipsis:"\u2026",info:"\u2139",question:"?",questionFull:"\uFF1F",questionSmall:"\uFE56",pointer:vde?"\u25B8":"\u276F",pointerSmall:vde?"\u2023":"\u203A",radioOff:"\u25EF",radioOn:"\u25C9",warning:"\u26A0"});qv.exports=dat&&!gat?Sde:Dde;Reflect.defineProperty(qv.exports,"common",{enumerable:!1,value:zG});Reflect.defineProperty(qv.exports,"windows",{enumerable:!1,value:Sde});Reflect.defineProperty(qv.exports,"other",{enumerable:!1,value:Dde})});var Ju=_((LHt,ZG)=>{"use strict";var mat=t=>t!==null&&typeof t=="object"&&!Array.isArray(t),yat=/[\u001b\u009b][[\]#;?()]*(?:(?:(?:[^\W_]*;?[^\W_]*)\u0007)|(?:(?:[0-9]{1,4}(;[0-9]{0,4})*)?[~0-9=<>cf-nqrtyA-PRZ]))/g,bde=()=>{let t={enabled:!0,visible:!0,styles:{},keys:{}};"FORCE_COLOR"in process.env&&(t.enabled=process.env.FORCE_COLOR!=="0");let e=n=>{let c=n.open=`\x1B[${n.codes[0]}m`,f=n.close=`\x1B[${n.codes[1]}m`,p=n.regex=new RegExp(`\\u001b\\[${n.codes[1]}m`,"g");return n.wrap=(h,E)=>{h.includes(f)&&(h=h.replace(p,f+c));let C=c+h+f;return E?C.replace(/\r*\n/g,`${f}$&${c}`):C},n},r=(n,c,f)=>typeof n=="function"?n(c):n.wrap(c,f),s=(n,c)=>{if(n===""||n==null)return"";if(t.enabled===!1)return n;if(t.visible===!1)return"";let f=""+n,p=f.includes(` `),h=c.length;for(h>0&&c.includes("unstyle")&&(c=[...new Set(["unstyle",...c])].reverse());h-- >0;)f=r(t.styles[c[h]],f,p);return f},a=(n,c,f)=>{t.styles[n]=e({name:n,codes:c}),(t.keys[f]||(t.keys[f]=[])).push(n),Reflect.defineProperty(t,n,{configurable:!0,enumerable:!0,set(h){t.alias(n,h)},get(){let h=E=>s(E,h.stack);return Reflect.setPrototypeOf(h,t),h.stack=this.stack?this.stack.concat(n):[n],h}})};return a("reset",[0,0],"modifier"),a("bold",[1,22],"modifier"),a("dim",[2,22],"modifier"),a("italic",[3,23],"modifier"),a("underline",[4,24],"modifier"),a("inverse",[7,27],"modifier"),a("hidden",[8,28],"modifier"),a("strikethrough",[9,29],"modifier"),a("black",[30,39],"color"),a("red",[31,39],"color"),a("green",[32,39],"color"),a("yellow",[33,39],"color"),a("blue",[34,39],"color"),a("magenta",[35,39],"color"),a("cyan",[36,39],"color"),a("white",[37,39],"color"),a("gray",[90,39],"color"),a("grey",[90,39],"color"),a("bgBlack",[40,49],"bg"),a("bgRed",[41,49],"bg"),a("bgGreen",[42,49],"bg"),a("bgYellow",[43,49],"bg"),a("bgBlue",[44,49],"bg"),a("bgMagenta",[45,49],"bg"),a("bgCyan",[46,49],"bg"),a("bgWhite",[47,49],"bg"),a("blackBright",[90,39],"bright"),a("redBright",[91,39],"bright"),a("greenBright",[92,39],"bright"),a("yellowBright",[93,39],"bright"),a("blueBright",[94,39],"bright"),a("magentaBright",[95,39],"bright"),a("cyanBright",[96,39],"bright"),a("whiteBright",[97,39],"bright"),a("bgBlackBright",[100,49],"bgBright"),a("bgRedBright",[101,49],"bgBright"),a("bgGreenBright",[102,49],"bgBright"),a("bgYellowBright",[103,49],"bgBright"),a("bgBlueBright",[104,49],"bgBright"),a("bgMagentaBright",[105,49],"bgBright"),a("bgCyanBright",[106,49],"bgBright"),a("bgWhiteBright",[107,49],"bgBright"),t.ansiRegex=yat,t.hasColor=t.hasAnsi=n=>(t.ansiRegex.lastIndex=0,typeof n=="string"&&n!==""&&t.ansiRegex.test(n)),t.alias=(n,c)=>{let f=typeof c=="string"?t[c]:c;if(typeof f!="function")throw new TypeError("Expected alias to be the name of an existing color (string) or a function");f.stack||(Reflect.defineProperty(f,"name",{value:n}),t.styles[n]=f,f.stack=[n]),Reflect.defineProperty(t,n,{configurable:!0,enumerable:!0,set(p){t.alias(n,p)},get(){let p=h=>s(h,p.stack);return Reflect.setPrototypeOf(p,t),p.stack=this.stack?this.stack.concat(f.stack):f.stack,p}})},t.theme=n=>{if(!mat(n))throw new TypeError("Expected theme to be an object");for(let c of Object.keys(n))t.alias(c,n[c]);return t},t.alias("unstyle",n=>typeof n=="string"&&n!==""?(t.ansiRegex.lastIndex=0,n.replace(t.ansiRegex,"")):""),t.alias("noop",n=>n),t.none=t.clear=t.noop,t.stripColor=t.unstyle,t.symbols=Pde(),t.define=a,t};ZG.exports=bde();ZG.exports.create=bde});var Xo=_(pn=>{"use strict";var Eat=Object.prototype.toString,jc=Ju(),xde=!1,XG=[],kde={yellow:"blue",cyan:"red",green:"magenta",black:"white",blue:"yellow",red:"cyan",magenta:"green",white:"black"};pn.longest=(t,e)=>t.reduce((r,s)=>Math.max(r,e?s[e].length:s.length),0);pn.hasColor=t=>!!t&&jc.hasColor(t);var VT=pn.isObject=t=>t!==null&&typeof t=="object"&&!Array.isArray(t);pn.nativeType=t=>Eat.call(t).slice(8,-1).toLowerCase().replace(/\s/g,"");pn.isAsyncFn=t=>pn.nativeType(t)==="asyncfunction";pn.isPrimitive=t=>t!=null&&typeof t!="object"&&typeof t!="function";pn.resolve=(t,e,...r)=>typeof e=="function"?e.call(t,...r):e;pn.scrollDown=(t=[])=>[...t.slice(1),t[0]];pn.scrollUp=(t=[])=>[t.pop(),...t];pn.reorder=(t=[])=>{let e=t.slice();return e.sort((r,s)=>r.index>s.index?1:r.index{let s=t.length,a=r===s?0:r<0?s-1:r,n=t[e];t[e]=t[a],t[a]=n};pn.width=(t,e=80)=>{let r=t&&t.columns?t.columns:e;return t&&typeof t.getWindowSize=="function"&&(r=t.getWindowSize()[0]),process.platform==="win32"?r-1:r};pn.height=(t,e=20)=>{let r=t&&t.rows?t.rows:e;return t&&typeof t.getWindowSize=="function"&&(r=t.getWindowSize()[1]),r};pn.wordWrap=(t,e={})=>{if(!t)return t;typeof e=="number"&&(e={width:e});let{indent:r="",newline:s=` `+r,width:a=80}=e,n=(s+r).match(/[^\S\n]/g)||[];a-=n.length;let c=`.{1,${a}}([\\s\\u200B]+|$)|[^\\s\\u200B]+?([\\s\\u200B]+|$)`,f=t.trim(),p=new RegExp(c,"g"),h=f.match(p)||[];return h=h.map(E=>E.replace(/\n$/,"")),e.padEnd&&(h=h.map(E=>E.padEnd(a," "))),e.padStart&&(h=h.map(E=>E.padStart(a," "))),r+h.join(s)};pn.unmute=t=>{let e=t.stack.find(s=>jc.keys.color.includes(s));return e?jc[e]:t.stack.find(s=>s.slice(2)==="bg")?jc[e.slice(2)]:s=>s};pn.pascal=t=>t?t[0].toUpperCase()+t.slice(1):"";pn.inverse=t=>{if(!t||!t.stack)return t;let e=t.stack.find(s=>jc.keys.color.includes(s));if(e){let s=jc["bg"+pn.pascal(e)];return s?s.black:t}let r=t.stack.find(s=>s.slice(0,2)==="bg");return r?jc[r.slice(2).toLowerCase()]||t:jc.none};pn.complement=t=>{if(!t||!t.stack)return t;let e=t.stack.find(s=>jc.keys.color.includes(s)),r=t.stack.find(s=>s.slice(0,2)==="bg");if(e&&!r)return jc[kde[e]||e];if(r){let s=r.slice(2).toLowerCase(),a=kde[s];return a&&jc["bg"+pn.pascal(a)]||t}return jc.none};pn.meridiem=t=>{let e=t.getHours(),r=t.getMinutes(),s=e>=12?"pm":"am";e=e%12;let a=e===0?12:e,n=r<10?"0"+r:r;return a+":"+n+" "+s};pn.set=(t={},e="",r)=>e.split(".").reduce((s,a,n,c)=>{let f=c.length-1>n?s[a]||{}:r;return!pn.isObject(f)&&n{let s=t[e]==null?e.split(".").reduce((a,n)=>a&&a[n],t):t[e];return s??r};pn.mixin=(t,e)=>{if(!VT(t))return e;if(!VT(e))return t;for(let r of Object.keys(e)){let s=Object.getOwnPropertyDescriptor(e,r);if(s.hasOwnProperty("value"))if(t.hasOwnProperty(r)&&VT(s.value)){let a=Object.getOwnPropertyDescriptor(t,r);VT(a.value)?t[r]=pn.merge({},t[r],e[r]):Reflect.defineProperty(t,r,s)}else Reflect.defineProperty(t,r,s);else Reflect.defineProperty(t,r,s)}return t};pn.merge=(...t)=>{let e={};for(let r of t)pn.mixin(e,r);return e};pn.mixinEmitter=(t,e)=>{let r=e.constructor.prototype;for(let s of Object.keys(r)){let a=r[s];typeof a=="function"?pn.define(t,s,a.bind(e)):pn.define(t,s,a)}};pn.onExit=t=>{let e=(r,s)=>{xde||(xde=!0,XG.forEach(a=>a()),r===!0&&process.exit(128+s))};XG.length===0&&(process.once("SIGTERM",e.bind(null,!0,15)),process.once("SIGINT",e.bind(null,!0,2)),process.once("exit",e)),XG.push(t)};pn.define=(t,e,r)=>{Reflect.defineProperty(t,e,{value:r})};pn.defineExport=(t,e,r)=>{let s;Reflect.defineProperty(t,e,{enumerable:!0,configurable:!0,set(a){s=a},get(){return s?s():r()}})}});var Qde=_(rC=>{"use strict";rC.ctrl={a:"first",b:"backward",c:"cancel",d:"deleteForward",e:"last",f:"forward",g:"reset",i:"tab",k:"cutForward",l:"reset",n:"newItem",m:"cancel",j:"submit",p:"search",r:"remove",s:"save",u:"undo",w:"cutLeft",x:"toggleCursor",v:"paste"};rC.shift={up:"shiftUp",down:"shiftDown",left:"shiftLeft",right:"shiftRight",tab:"prev"};rC.fn={up:"pageUp",down:"pageDown",left:"pageLeft",right:"pageRight",delete:"deleteForward"};rC.option={b:"backward",f:"forward",d:"cutRight",left:"cutLeft",up:"altUp",down:"altDown"};rC.keys={pageup:"pageUp",pagedown:"pageDown",home:"home",end:"end",cancel:"cancel",delete:"deleteForward",backspace:"delete",down:"down",enter:"submit",escape:"cancel",left:"left",space:"space",number:"number",return:"submit",right:"right",tab:"next",up:"up"}});var Fde=_((_Ht,Tde)=>{"use strict";var Rde=Ie("readline"),Iat=Qde(),Cat=/^(?:\x1b)([a-zA-Z0-9])$/,wat=/^(?:\x1b+)(O|N|\[|\[\[)(?:(\d+)(?:;(\d+))?([~^$])|(?:1;)?(\d+)?([a-zA-Z]))/,Bat={OP:"f1",OQ:"f2",OR:"f3",OS:"f4","[11~":"f1","[12~":"f2","[13~":"f3","[14~":"f4","[[A":"f1","[[B":"f2","[[C":"f3","[[D":"f4","[[E":"f5","[15~":"f5","[17~":"f6","[18~":"f7","[19~":"f8","[20~":"f9","[21~":"f10","[23~":"f11","[24~":"f12","[A":"up","[B":"down","[C":"right","[D":"left","[E":"clear","[F":"end","[H":"home",OA:"up",OB:"down",OC:"right",OD:"left",OE:"clear",OF:"end",OH:"home","[1~":"home","[2~":"insert","[3~":"delete","[4~":"end","[5~":"pageup","[6~":"pagedown","[[5~":"pageup","[[6~":"pagedown","[7~":"home","[8~":"end","[a":"up","[b":"down","[c":"right","[d":"left","[e":"clear","[2$":"insert","[3$":"delete","[5$":"pageup","[6$":"pagedown","[7$":"home","[8$":"end",Oa:"up",Ob:"down",Oc:"right",Od:"left",Oe:"clear","[2^":"insert","[3^":"delete","[5^":"pageup","[6^":"pagedown","[7^":"home","[8^":"end","[Z":"tab"};function vat(t){return["[a","[b","[c","[d","[e","[2$","[3$","[5$","[6$","[7$","[8$","[Z"].includes(t)}function Sat(t){return["Oa","Ob","Oc","Od","Oe","[2^","[3^","[5^","[6^","[7^","[8^"].includes(t)}var JT=(t="",e={})=>{let r,s={name:e.name,ctrl:!1,meta:!1,shift:!1,option:!1,sequence:t,raw:t,...e};if(Buffer.isBuffer(t)?t[0]>127&&t[1]===void 0?(t[0]-=128,t="\x1B"+String(t)):t=String(t):t!==void 0&&typeof t!="string"?t=String(t):t||(t=s.sequence||""),s.sequence=s.sequence||t||s.name,t==="\r")s.raw=void 0,s.name="return";else if(t===` `)s.name="enter";else if(t===" ")s.name="tab";else if(t==="\b"||t==="\x7F"||t==="\x1B\x7F"||t==="\x1B\b")s.name="backspace",s.meta=t.charAt(0)==="\x1B";else if(t==="\x1B"||t==="\x1B\x1B")s.name="escape",s.meta=t.length===2;else if(t===" "||t==="\x1B ")s.name="space",s.meta=t.length===2;else if(t<="")s.name=String.fromCharCode(t.charCodeAt(0)+97-1),s.ctrl=!0;else if(t.length===1&&t>="0"&&t<="9")s.name="number";else if(t.length===1&&t>="a"&&t<="z")s.name=t;else if(t.length===1&&t>="A"&&t<="Z")s.name=t.toLowerCase(),s.shift=!0;else if(r=Cat.exec(t))s.meta=!0,s.shift=/^[A-Z]$/.test(r[1]);else if(r=wat.exec(t)){let a=[...t];a[0]==="\x1B"&&a[1]==="\x1B"&&(s.option=!0);let n=[r[1],r[2],r[4],r[6]].filter(Boolean).join(""),c=(r[3]||r[5]||1)-1;s.ctrl=!!(c&4),s.meta=!!(c&10),s.shift=!!(c&1),s.code=n,s.name=Bat[n],s.shift=vat(n)||s.shift,s.ctrl=Sat(n)||s.ctrl}return s};JT.listen=(t={},e)=>{let{stdin:r}=t;if(!r||r!==process.stdin&&!r.isTTY)throw new Error("Invalid stream passed");let s=Rde.createInterface({terminal:!0,input:r});Rde.emitKeypressEvents(r,s);let a=(f,p)=>e(f,JT(f,p),s),n=r.isRaw;return r.isTTY&&r.setRawMode(!0),r.on("keypress",a),s.resume(),()=>{r.isTTY&&r.setRawMode(n),r.removeListener("keypress",a),s.pause(),s.close()}};JT.action=(t,e,r)=>{let s={...Iat,...r};return e.ctrl?(e.action=s.ctrl[e.name],e):e.option&&s.option?(e.action=s.option[e.name],e):e.shift?(e.action=s.shift[e.name],e):(e.action=s.keys[e.name],e)};Tde.exports=JT});var Ode=_((HHt,Nde)=>{"use strict";Nde.exports=t=>{t.timers=t.timers||{};let e=t.options.timers;if(e)for(let r of Object.keys(e)){let s=e[r];typeof s=="number"&&(s={interval:s}),Dat(t,r,s)}};function Dat(t,e,r={}){let s=t.timers[e]={name:e,start:Date.now(),ms:0,tick:0},a=r.interval||120;s.frames=r.frames||[],s.loading=!0;let n=setInterval(()=>{s.ms=Date.now()-s.start,s.tick++,t.render()},a);return s.stop=()=>{s.loading=!1,clearInterval(n)},Reflect.defineProperty(s,"interval",{value:n}),t.once("close",()=>s.stop()),s.stop}});var Mde=_((jHt,Lde)=>{"use strict";var{define:Pat,width:bat}=Xo(),$G=class{constructor(e){let r=e.options;Pat(this,"_prompt",e),this.type=e.type,this.name=e.name,this.message="",this.header="",this.footer="",this.error="",this.hint="",this.input="",this.cursor=0,this.index=0,this.lines=0,this.tick=0,this.prompt="",this.buffer="",this.width=bat(r.stdout||process.stdout),Object.assign(this,r),this.name=this.name||this.message,this.message=this.message||this.name,this.symbols=e.symbols,this.styles=e.styles,this.required=new Set,this.cancelled=!1,this.submitted=!1}clone(){let e={...this};return e.status=this.status,e.buffer=Buffer.from(e.buffer),delete e.clone,e}set color(e){this._color=e}get color(){let e=this.prompt.styles;if(this.cancelled)return e.cancelled;if(this.submitted)return e.submitted;let r=this._color||e[this.status];return typeof r=="function"?r:e.pending}set loading(e){this._loading=e}get loading(){return typeof this._loading=="boolean"?this._loading:this.loadingChoices?"choices":!1}get status(){return this.cancelled?"cancelled":this.submitted?"submitted":"pending"}};Lde.exports=$G});var _de=_((GHt,Ude)=>{"use strict";var eq=Xo(),ho=Ju(),tq={default:ho.noop,noop:ho.noop,set inverse(t){this._inverse=t},get inverse(){return this._inverse||eq.inverse(this.primary)},set complement(t){this._complement=t},get complement(){return this._complement||eq.complement(this.primary)},primary:ho.cyan,success:ho.green,danger:ho.magenta,strong:ho.bold,warning:ho.yellow,muted:ho.dim,disabled:ho.gray,dark:ho.dim.gray,underline:ho.underline,set info(t){this._info=t},get info(){return this._info||this.primary},set em(t){this._em=t},get em(){return this._em||this.primary.underline},set heading(t){this._heading=t},get heading(){return this._heading||this.muted.underline},set pending(t){this._pending=t},get pending(){return this._pending||this.primary},set submitted(t){this._submitted=t},get submitted(){return this._submitted||this.success},set cancelled(t){this._cancelled=t},get cancelled(){return this._cancelled||this.danger},set typing(t){this._typing=t},get typing(){return this._typing||this.dim},set placeholder(t){this._placeholder=t},get placeholder(){return this._placeholder||this.primary.dim},set highlight(t){this._highlight=t},get highlight(){return this._highlight||this.inverse}};tq.merge=(t={})=>{t.styles&&typeof t.styles.enabled=="boolean"&&(ho.enabled=t.styles.enabled),t.styles&&typeof t.styles.visible=="boolean"&&(ho.visible=t.styles.visible);let e=eq.merge({},tq,t.styles);delete e.merge;for(let r of Object.keys(ho))e.hasOwnProperty(r)||Reflect.defineProperty(e,r,{get:()=>ho[r]});for(let r of Object.keys(ho.styles))e.hasOwnProperty(r)||Reflect.defineProperty(e,r,{get:()=>ho[r]});return e};Ude.exports=tq});var jde=_((qHt,Hde)=>{"use strict";var rq=process.platform==="win32",zp=Ju(),xat=Xo(),nq={...zp.symbols,upDownDoubleArrow:"\u21D5",upDownDoubleArrow2:"\u2B0D",upDownArrow:"\u2195",asterisk:"*",asterism:"\u2042",bulletWhite:"\u25E6",electricArrow:"\u2301",ellipsisLarge:"\u22EF",ellipsisSmall:"\u2026",fullBlock:"\u2588",identicalTo:"\u2261",indicator:zp.symbols.check,leftAngle:"\u2039",mark:"\u203B",minus:"\u2212",multiplication:"\xD7",obelus:"\xF7",percent:"%",pilcrow:"\xB6",pilcrow2:"\u2761",pencilUpRight:"\u2710",pencilDownRight:"\u270E",pencilRight:"\u270F",plus:"+",plusMinus:"\xB1",pointRight:"\u261E",rightAngle:"\u203A",section:"\xA7",hexagon:{off:"\u2B21",on:"\u2B22",disabled:"\u2B22"},ballot:{on:"\u2611",off:"\u2610",disabled:"\u2612"},stars:{on:"\u2605",off:"\u2606",disabled:"\u2606"},folder:{on:"\u25BC",off:"\u25B6",disabled:"\u25B6"},prefix:{pending:zp.symbols.question,submitted:zp.symbols.check,cancelled:zp.symbols.cross},separator:{pending:zp.symbols.pointerSmall,submitted:zp.symbols.middot,cancelled:zp.symbols.middot},radio:{off:rq?"( )":"\u25EF",on:rq?"(*)":"\u25C9",disabled:rq?"(|)":"\u24BE"},numbers:["\u24EA","\u2460","\u2461","\u2462","\u2463","\u2464","\u2465","\u2466","\u2467","\u2468","\u2469","\u246A","\u246B","\u246C","\u246D","\u246E","\u246F","\u2470","\u2471","\u2472","\u2473","\u3251","\u3252","\u3253","\u3254","\u3255","\u3256","\u3257","\u3258","\u3259","\u325A","\u325B","\u325C","\u325D","\u325E","\u325F","\u32B1","\u32B2","\u32B3","\u32B4","\u32B5","\u32B6","\u32B7","\u32B8","\u32B9","\u32BA","\u32BB","\u32BC","\u32BD","\u32BE","\u32BF"]};nq.merge=t=>{let e=xat.merge({},zp.symbols,nq,t.symbols);return delete e.merge,e};Hde.exports=nq});var qde=_((WHt,Gde)=>{"use strict";var kat=_de(),Qat=jde(),Rat=Xo();Gde.exports=t=>{t.options=Rat.merge({},t.options.theme,t.options),t.symbols=Qat.merge(t.options),t.styles=kat.merge(t.options)}});var Kde=_((Vde,Jde)=>{"use strict";var Wde=process.env.TERM_PROGRAM==="Apple_Terminal",Tat=Ju(),iq=Xo(),Ku=Jde.exports=Vde,Ui="\x1B[",Yde="\x07",sq=!1,j0=Ku.code={bell:Yde,beep:Yde,beginning:`${Ui}G`,down:`${Ui}J`,esc:Ui,getPosition:`${Ui}6n`,hide:`${Ui}?25l`,line:`${Ui}2K`,lineEnd:`${Ui}K`,lineStart:`${Ui}1K`,restorePosition:Ui+(Wde?"8":"u"),savePosition:Ui+(Wde?"7":"s"),screen:`${Ui}2J`,show:`${Ui}?25h`,up:`${Ui}1J`},wm=Ku.cursor={get hidden(){return sq},hide(){return sq=!0,j0.hide},show(){return sq=!1,j0.show},forward:(t=1)=>`${Ui}${t}C`,backward:(t=1)=>`${Ui}${t}D`,nextLine:(t=1)=>`${Ui}E`.repeat(t),prevLine:(t=1)=>`${Ui}F`.repeat(t),up:(t=1)=>t?`${Ui}${t}A`:"",down:(t=1)=>t?`${Ui}${t}B`:"",right:(t=1)=>t?`${Ui}${t}C`:"",left:(t=1)=>t?`${Ui}${t}D`:"",to(t,e){return e?`${Ui}${e+1};${t+1}H`:`${Ui}${t+1}G`},move(t=0,e=0){let r="";return r+=t<0?wm.left(-t):t>0?wm.right(t):"",r+=e<0?wm.up(-e):e>0?wm.down(e):"",r},restore(t={}){let{after:e,cursor:r,initial:s,input:a,prompt:n,size:c,value:f}=t;if(s=iq.isPrimitive(s)?String(s):"",a=iq.isPrimitive(a)?String(a):"",f=iq.isPrimitive(f)?String(f):"",c){let p=Ku.cursor.up(c)+Ku.cursor.to(n.length),h=a.length-r;return h>0&&(p+=Ku.cursor.left(h)),p}if(f||e){let p=!a&&s?-s.length:-a.length+r;return e&&(p-=e.length),a===""&&s&&!n.includes(s)&&(p+=s.length),Ku.cursor.move(p)}}},oq=Ku.erase={screen:j0.screen,up:j0.up,down:j0.down,line:j0.line,lineEnd:j0.lineEnd,lineStart:j0.lineStart,lines(t){let e="";for(let r=0;r{if(!e)return oq.line+wm.to(0);let r=n=>[...Tat.unstyle(n)].length,s=t.split(/\r?\n/),a=0;for(let n of s)a+=1+Math.floor(Math.max(r(n)-1,0)/e);return(oq.line+wm.prevLine()).repeat(a-1)+oq.line+wm.to(0)}});var nC=_((YHt,Zde)=>{"use strict";var Fat=Ie("events"),zde=Ju(),aq=Fde(),Nat=Ode(),Oat=Mde(),Lat=qde(),pl=Xo(),Bm=Kde(),lq=class t extends Fat{constructor(e={}){super(),this.name=e.name,this.type=e.type,this.options=e,Lat(this),Nat(this),this.state=new Oat(this),this.initial=[e.initial,e.default].find(r=>r!=null),this.stdout=e.stdout||process.stdout,this.stdin=e.stdin||process.stdin,this.scale=e.scale||1,this.term=this.options.term||process.env.TERM_PROGRAM,this.margin=Uat(this.options.margin),this.setMaxListeners(0),Mat(this)}async keypress(e,r={}){this.keypressed=!0;let s=aq.action(e,aq(e,r),this.options.actions);this.state.keypress=s,this.emit("keypress",e,s),this.emit("state",this.state.clone());let a=this.options[s.action]||this[s.action]||this.dispatch;if(typeof a=="function")return await a.call(this,e,s);this.alert()}alert(){delete this.state.alert,this.options.show===!1?this.emit("alert"):this.stdout.write(Bm.code.beep)}cursorHide(){this.stdout.write(Bm.cursor.hide()),pl.onExit(()=>this.cursorShow())}cursorShow(){this.stdout.write(Bm.cursor.show())}write(e){e&&(this.stdout&&this.state.show!==!1&&this.stdout.write(e),this.state.buffer+=e)}clear(e=0){let r=this.state.buffer;this.state.buffer="",!(!r&&!e||this.options.show===!1)&&this.stdout.write(Bm.cursor.down(e)+Bm.clear(r,this.width))}restore(){if(this.state.closed||this.options.show===!1)return;let{prompt:e,after:r,rest:s}=this.sections(),{cursor:a,initial:n="",input:c="",value:f=""}=this,p=this.state.size=s.length,h={after:r,cursor:a,initial:n,input:c,prompt:e,size:p,value:f},E=Bm.cursor.restore(h);E&&this.stdout.write(E)}sections(){let{buffer:e,input:r,prompt:s}=this.state;s=zde.unstyle(s);let a=zde.unstyle(e),n=a.indexOf(s),c=a.slice(0,n),p=a.slice(n).split(` `),h=p[0],E=p[p.length-1],S=(s+(r?" "+r:"")).length,b=Se.call(this,this.value),this.result=()=>s.call(this,this.value),typeof r.initial=="function"&&(this.initial=await r.initial.call(this,this)),typeof r.onRun=="function"&&await r.onRun.call(this,this),typeof r.onSubmit=="function"){let a=r.onSubmit.bind(this),n=this.submit.bind(this);delete this.options.onSubmit,this.submit=async()=>(await a(this.name,this.value,this),n())}await this.start(),await this.render()}render(){throw new Error("expected prompt to have a custom render method")}run(){return new Promise(async(e,r)=>{if(this.once("submit",e),this.once("cancel",r),await this.skip())return this.render=()=>{},this.submit();await this.initialize(),this.emit("run")})}async element(e,r,s){let{options:a,state:n,symbols:c,timers:f}=this,p=f&&f[e];n.timer=p;let h=a[e]||n[e]||c[e],E=r&&r[e]!=null?r[e]:await h;if(E==="")return E;let C=await this.resolve(E,n,r,s);return!C&&r&&r[e]?this.resolve(h,n,r,s):C}async prefix(){let e=await this.element("prefix")||this.symbols,r=this.timers&&this.timers.prefix,s=this.state;return s.timer=r,pl.isObject(e)&&(e=e[s.status]||e.pending),pl.hasColor(e)?e:(this.styles[s.status]||this.styles.pending)(e)}async message(){let e=await this.element("message");return pl.hasColor(e)?e:this.styles.strong(e)}async separator(){let e=await this.element("separator")||this.symbols,r=this.timers&&this.timers.separator,s=this.state;s.timer=r;let a=e[s.status]||e.pending||s.separator,n=await this.resolve(a,s);return pl.isObject(n)&&(n=n[s.status]||n.pending),pl.hasColor(n)?n:this.styles.muted(n)}async pointer(e,r){let s=await this.element("pointer",e,r);if(typeof s=="string"&&pl.hasColor(s))return s;if(s){let a=this.styles,n=this.index===r,c=n?a.primary:h=>h,f=await this.resolve(s[n?"on":"off"]||s,this.state),p=pl.hasColor(f)?f:c(f);return n?p:" ".repeat(f.length)}}async indicator(e,r){let s=await this.element("indicator",e,r);if(typeof s=="string"&&pl.hasColor(s))return s;if(s){let a=this.styles,n=e.enabled===!0,c=n?a.success:a.dark,f=s[n?"on":"off"]||s;return pl.hasColor(f)?f:c(f)}return""}body(){return null}footer(){if(this.state.status==="pending")return this.element("footer")}header(){if(this.state.status==="pending")return this.element("header")}async hint(){if(this.state.status==="pending"&&!this.isValue(this.state.input)){let e=await this.element("hint");return pl.hasColor(e)?e:this.styles.muted(e)}}error(e){return this.state.submitted?"":e||this.state.error}format(e){return e}result(e){return e}validate(e){return this.options.required===!0?this.isValue(e):!0}isValue(e){return e!=null&&e!==""}resolve(e,...r){return pl.resolve(this,e,...r)}get base(){return t.prototype}get style(){return this.styles[this.state.status]}get height(){return this.options.rows||pl.height(this.stdout,25)}get width(){return this.options.columns||pl.width(this.stdout,80)}get size(){return{width:this.width,height:this.height}}set cursor(e){this.state.cursor=e}get cursor(){return this.state.cursor}set input(e){this.state.input=e}get input(){return this.state.input}set value(e){this.state.value=e}get value(){let{input:e,value:r}=this.state,s=[r,e].find(this.isValue.bind(this));return this.isValue(s)?s:this.initial}static get prompt(){return e=>new this(e).run()}};function Mat(t){let e=a=>t[a]===void 0||typeof t[a]=="function",r=["actions","choices","initial","margin","roles","styles","symbols","theme","timers","value"],s=["body","footer","error","header","hint","indicator","message","prefix","separator","skip"];for(let a of Object.keys(t.options)){if(r.includes(a)||/^on[A-Z]/.test(a))continue;let n=t.options[a];typeof n=="function"&&e(a)?s.includes(a)||(t[a]=n.bind(t)):typeof t[a]!="function"&&(t[a]=n)}}function Uat(t){typeof t=="number"&&(t=[t,t,t,t]);let e=[].concat(t||[]),r=a=>a%2===0?` `:" ",s=[];for(let a=0;a<4;a++){let n=r(a);e[a]?s.push(n.repeat(e[a])):s.push("")}return s}Zde.exports=lq});var eme=_((VHt,$de)=>{"use strict";var _at=Xo(),Xde={default(t,e){return e},checkbox(t,e){throw new Error("checkbox role is not implemented yet")},editable(t,e){throw new Error("editable role is not implemented yet")},expandable(t,e){throw new Error("expandable role is not implemented yet")},heading(t,e){return e.disabled="",e.indicator=[e.indicator," "].find(r=>r!=null),e.message=e.message||"",e},input(t,e){throw new Error("input role is not implemented yet")},option(t,e){return Xde.default(t,e)},radio(t,e){throw new Error("radio role is not implemented yet")},separator(t,e){return e.disabled="",e.indicator=[e.indicator," "].find(r=>r!=null),e.message=e.message||t.symbols.line.repeat(5),e},spacer(t,e){return e}};$de.exports=(t,e={})=>{let r=_at.merge({},Xde,e.roles);return r[t]||r.default}});var Wv=_((JHt,nme)=>{"use strict";var Hat=Ju(),jat=nC(),Gat=eme(),KT=Xo(),{reorder:cq,scrollUp:qat,scrollDown:Wat,isObject:tme,swap:Yat}=KT,uq=class extends jat{constructor(e){super(e),this.cursorHide(),this.maxSelected=e.maxSelected||1/0,this.multiple=e.multiple||!1,this.initial=e.initial||0,this.delay=e.delay||0,this.longest=0,this.num=""}async initialize(){typeof this.options.initial=="function"&&(this.initial=await this.options.initial.call(this)),await this.reset(!0),await super.initialize()}async reset(){let{choices:e,initial:r,autofocus:s,suggest:a}=this.options;if(this.state._choices=[],this.state.choices=[],this.choices=await Promise.all(await this.toChoices(e)),this.choices.forEach(n=>n.enabled=!1),typeof a!="function"&&this.selectable.length===0)throw new Error("At least one choice must be selectable");tme(r)&&(r=Object.keys(r)),Array.isArray(r)?(s!=null&&(this.index=this.findIndex(s)),r.forEach(n=>this.enable(this.find(n))),await this.render()):(s!=null&&(r=s),typeof r=="string"&&(r=this.findIndex(r)),typeof r=="number"&&r>-1&&(this.index=Math.max(0,Math.min(r,this.choices.length)),this.enable(this.find(this.index)))),this.isDisabled(this.focused)&&await this.down()}async toChoices(e,r){this.state.loadingChoices=!0;let s=[],a=0,n=async(c,f)=>{typeof c=="function"&&(c=await c.call(this)),c instanceof Promise&&(c=await c);for(let p=0;p(this.state.loadingChoices=!1,c))}async toChoice(e,r,s){if(typeof e=="function"&&(e=await e.call(this,this)),e instanceof Promise&&(e=await e),typeof e=="string"&&(e={name:e}),e.normalized)return e;e.normalized=!0;let a=e.value;if(e=Gat(e.role,this.options)(this,e),typeof e.disabled=="string"&&!e.hint&&(e.hint=e.disabled,e.disabled=!0),e.disabled===!0&&e.hint==null&&(e.hint="(disabled)"),e.index!=null)return e;e.name=e.name||e.key||e.title||e.value||e.message,e.message=e.message||e.name||"",e.value=[e.value,e.name].find(this.isValue.bind(this)),e.input="",e.index=r,e.cursor=0,KT.define(e,"parent",s),e.level=s?s.level+1:1,e.indent==null&&(e.indent=s?s.indent+" ":e.indent||""),e.path=s?s.path+"."+e.name:e.name,e.enabled=!!(this.multiple&&!this.isDisabled(e)&&(e.enabled||this.isSelected(e))),this.isDisabled(e)||(this.longest=Math.max(this.longest,Hat.unstyle(e.message).length));let c={...e};return e.reset=(f=c.input,p=c.value)=>{for(let h of Object.keys(c))e[h]=c[h];e.input=f,e.value=p},a==null&&typeof e.initial=="function"&&(e.input=await e.initial.call(this,this.state,e,r)),e}async onChoice(e,r){this.emit("choice",e,r,this),typeof e.onChoice=="function"&&await e.onChoice.call(this,this.state,e,r)}async addChoice(e,r,s){let a=await this.toChoice(e,r,s);return this.choices.push(a),this.index=this.choices.length-1,this.limit=this.choices.length,a}async newItem(e,r,s){let a={name:"New choice name?",editable:!0,newChoice:!0,...e},n=await this.addChoice(a,r,s);return n.updateChoice=()=>{delete n.newChoice,n.name=n.message=n.input,n.input="",n.cursor=0},this.render()}indent(e){return e.indent==null?e.level>1?" ".repeat(e.level-1):"":e.indent}dispatch(e,r){if(this.multiple&&this[r.name])return this[r.name]();this.alert()}focus(e,r){return typeof r!="boolean"&&(r=e.enabled),r&&!e.enabled&&this.selected.length>=this.maxSelected?this.alert():(this.index=e.index,e.enabled=r&&!this.isDisabled(e),e)}space(){return this.multiple?(this.toggle(this.focused),this.render()):this.alert()}a(){if(this.maxSelectedr.enabled);return this.choices.forEach(r=>r.enabled=!e),this.render()}i(){return this.choices.length-this.selected.length>this.maxSelected?this.alert():(this.choices.forEach(e=>e.enabled=!e.enabled),this.render())}g(e=this.focused){return this.choices.some(r=>!!r.parent)?(this.toggle(e.parent&&!e.choices?e.parent:e),this.render()):this.a()}toggle(e,r){if(!e.enabled&&this.selected.length>=this.maxSelected)return this.alert();typeof r!="boolean"&&(r=!e.enabled),e.enabled=r,e.choices&&e.choices.forEach(a=>this.toggle(a,r));let s=e.parent;for(;s;){let a=s.choices.filter(n=>this.isDisabled(n));s.enabled=a.every(n=>n.enabled===!0),s=s.parent}return rme(this,this.choices),this.emit("toggle",e,this),e}enable(e){return this.selected.length>=this.maxSelected?this.alert():(e.enabled=!this.isDisabled(e),e.choices&&e.choices.forEach(this.enable.bind(this)),e)}disable(e){return e.enabled=!1,e.choices&&e.choices.forEach(this.disable.bind(this)),e}number(e){this.num+=e;let r=s=>{let a=Number(s);if(a>this.choices.length-1)return this.alert();let n=this.focused,c=this.choices.find(f=>a===f.index);if(!c.enabled&&this.selected.length>=this.maxSelected)return this.alert();if(this.visible.indexOf(c)===-1){let f=cq(this.choices),p=f.indexOf(c);if(n.index>p){let h=f.slice(p,p+this.limit),E=f.filter(C=>!h.includes(C));this.choices=h.concat(E)}else{let h=p-this.limit+1;this.choices=f.slice(h).concat(f.slice(0,h))}}return this.index=this.choices.indexOf(c),this.toggle(this.focused),this.render()};return clearTimeout(this.numberTimeout),new Promise(s=>{let a=this.choices.length,n=this.num,c=(f=!1,p)=>{clearTimeout(this.numberTimeout),f&&(p=r(n)),this.num="",s(p)};if(n==="0"||n.length===1&&+(n+"0")>a)return c(!0);if(Number(n)>a)return c(!1,this.alert());this.numberTimeout=setTimeout(()=>c(!0),this.delay)})}home(){return this.choices=cq(this.choices),this.index=0,this.render()}end(){let e=this.choices.length-this.limit,r=cq(this.choices);return this.choices=r.slice(e).concat(r.slice(0,e)),this.index=this.limit-1,this.render()}first(){return this.index=0,this.render()}last(){return this.index=this.visible.length-1,this.render()}prev(){return this.visible.length<=1?this.alert():this.up()}next(){return this.visible.length<=1?this.alert():this.down()}right(){return this.cursor>=this.input.length?this.alert():(this.cursor++,this.render())}left(){return this.cursor<=0?this.alert():(this.cursor--,this.render())}up(){let e=this.choices.length,r=this.visible.length,s=this.index;return this.options.scroll===!1&&s===0?this.alert():e>r&&s===0?this.scrollUp():(this.index=(s-1%e+e)%e,this.isDisabled()?this.up():this.render())}down(){let e=this.choices.length,r=this.visible.length,s=this.index;return this.options.scroll===!1&&s===r-1?this.alert():e>r&&s===r-1?this.scrollDown():(this.index=(s+1)%e,this.isDisabled()?this.down():this.render())}scrollUp(e=0){return this.choices=qat(this.choices),this.index=e,this.isDisabled()?this.up():this.render()}scrollDown(e=this.visible.length-1){return this.choices=Wat(this.choices),this.index=e,this.isDisabled()?this.down():this.render()}async shiftUp(){if(this.options.sort===!0){this.sorting=!0,this.swap(this.index-1),await this.up(),this.sorting=!1;return}return this.scrollUp(this.index)}async shiftDown(){if(this.options.sort===!0){this.sorting=!0,this.swap(this.index+1),await this.down(),this.sorting=!1;return}return this.scrollDown(this.index)}pageUp(){return this.visible.length<=1?this.alert():(this.limit=Math.max(this.limit-1,0),this.index=Math.min(this.limit-1,this.index),this._limit=this.limit,this.isDisabled()?this.up():this.render())}pageDown(){return this.visible.length>=this.choices.length?this.alert():(this.index=Math.max(0,this.index),this.limit=Math.min(this.limit+1,this.choices.length),this._limit=this.limit,this.isDisabled()?this.down():this.render())}swap(e){Yat(this.choices,this.index,e)}isDisabled(e=this.focused){return e&&["disabled","collapsed","hidden","completing","readonly"].some(s=>e[s]===!0)?!0:e&&e.role==="heading"}isEnabled(e=this.focused){if(Array.isArray(e))return e.every(r=>this.isEnabled(r));if(e.choices){let r=e.choices.filter(s=>!this.isDisabled(s));return e.enabled&&r.every(s=>this.isEnabled(s))}return e.enabled&&!this.isDisabled(e)}isChoice(e,r){return e.name===r||e.index===Number(r)}isSelected(e){return Array.isArray(this.initial)?this.initial.some(r=>this.isChoice(e,r)):this.isChoice(e,this.initial)}map(e=[],r="value"){return[].concat(e||[]).reduce((s,a)=>(s[a]=this.find(a,r),s),{})}filter(e,r){let a=typeof e=="function"?e:(f,p)=>[f.name,p].includes(e),c=(this.options.multiple?this.state._choices:this.choices).filter(a);return r?c.map(f=>f[r]):c}find(e,r){if(tme(e))return r?e[r]:e;let a=typeof e=="function"?e:(c,f)=>[c.name,f].includes(e),n=this.choices.find(a);if(n)return r?n[r]:n}findIndex(e){return this.choices.indexOf(this.find(e))}async submit(){let e=this.focused;if(!e)return this.alert();if(e.newChoice)return e.input?(e.updateChoice(),this.render()):this.alert();if(this.choices.some(c=>c.newChoice))return this.alert();let{reorder:r,sort:s}=this.options,a=this.multiple===!0,n=this.selected;return n===void 0?this.alert():(Array.isArray(n)&&r!==!1&&s!==!0&&(n=KT.reorder(n)),this.value=a?n.map(c=>c.name):n.name,super.submit())}set choices(e=[]){this.state._choices=this.state._choices||[],this.state.choices=e;for(let r of e)this.state._choices.some(s=>s.name===r.name)||this.state._choices.push(r);if(!this._initial&&this.options.initial){this._initial=!0;let r=this.initial;if(typeof r=="string"||typeof r=="number"){let s=this.find(r);s&&(this.initial=s.index,this.focus(s,!0))}}}get choices(){return rme(this,this.state.choices||[])}set visible(e){this.state.visible=e}get visible(){return(this.state.visible||this.choices).slice(0,this.limit)}set limit(e){this.state.limit=e}get limit(){let{state:e,options:r,choices:s}=this,a=e.limit||this._limit||r.limit||s.length;return Math.min(a,this.height)}set value(e){super.value=e}get value(){return typeof super.value!="string"&&super.value===this.initial?this.input:super.value}set index(e){this.state.index=e}get index(){return Math.max(0,this.state?this.state.index:0)}get enabled(){return this.filter(this.isEnabled.bind(this))}get focused(){let e=this.choices[this.index];return e&&this.state.submitted&&this.multiple!==!0&&(e.enabled=!0),e}get selectable(){return this.choices.filter(e=>!this.isDisabled(e))}get selected(){return this.multiple?this.enabled:this.focused}};function rme(t,e){if(e instanceof Promise)return e;if(typeof e=="function"){if(KT.isAsyncFn(e))return e;e=e.call(t,t)}for(let r of e){if(Array.isArray(r.choices)){let s=r.choices.filter(a=>!t.isDisabled(a));r.enabled=s.every(a=>a.enabled===!0)}t.isDisabled(r)===!0&&delete r.enabled}return e}nme.exports=uq});var G0=_((KHt,ime)=>{"use strict";var Vat=Wv(),fq=Xo(),Aq=class extends Vat{constructor(e){super(e),this.emptyError=this.options.emptyError||"No items were selected"}async dispatch(e,r){if(this.multiple)return this[r.name]?await this[r.name](e,r):await super.dispatch(e,r);this.alert()}separator(){if(this.options.separator)return super.separator();let e=this.styles.muted(this.symbols.ellipsis);return this.state.submitted?super.separator():e}pointer(e,r){return!this.multiple||this.options.pointer?super.pointer(e,r):""}indicator(e,r){return this.multiple?super.indicator(e,r):""}choiceMessage(e,r){let s=this.resolve(e.message,this.state,e,r);return e.role==="heading"&&!fq.hasColor(s)&&(s=this.styles.strong(s)),this.resolve(s,this.state,e,r)}choiceSeparator(){return":"}async renderChoice(e,r){await this.onChoice(e,r);let s=this.index===r,a=await this.pointer(e,r),n=await this.indicator(e,r)+(e.pad||""),c=await this.resolve(e.hint,this.state,e,r);c&&!fq.hasColor(c)&&(c=this.styles.muted(c));let f=this.indent(e),p=await this.choiceMessage(e,r),h=()=>[this.margin[3],f+a+n,p,this.margin[1],c].filter(Boolean).join(" ");return e.role==="heading"?h():e.disabled?(fq.hasColor(p)||(p=this.styles.disabled(p)),h()):(s&&(p=this.styles.em(p)),h())}async renderChoices(){if(this.state.loading==="choices")return this.styles.warning("Loading choices");if(this.state.submitted)return"";let e=this.visible.map(async(n,c)=>await this.renderChoice(n,c)),r=await Promise.all(e);r.length||r.push(this.styles.danger("No matching choices"));let s=this.margin[0]+r.join(` `),a;return this.options.choicesHeader&&(a=await this.resolve(this.options.choicesHeader,this.state)),[a,s].filter(Boolean).join(` `)}format(){return!this.state.submitted||this.state.cancelled?"":Array.isArray(this.selected)?this.selected.map(e=>this.styles.primary(e.name)).join(", "):this.styles.primary(this.selected.name)}async render(){let{submitted:e,size:r}=this.state,s="",a=await this.header(),n=await this.prefix(),c=await this.separator(),f=await this.message();this.options.promptLine!==!1&&(s=[n,f,c,""].join(" "),this.state.prompt=s);let p=await this.format(),h=await this.error()||await this.hint(),E=await this.renderChoices(),C=await this.footer();p&&(s+=p),h&&!s.includes(h)&&(s+=" "+h),e&&!p&&!E.trim()&&this.multiple&&this.emptyError!=null&&(s+=this.styles.danger(this.emptyError)),this.clear(r),this.write([a,s,E,C].filter(Boolean).join(` `)),this.write(this.margin[2]),this.restore()}};ime.exports=Aq});var ome=_((zHt,sme)=>{"use strict";var Jat=G0(),Kat=(t,e)=>{let r=t.toLowerCase();return s=>{let n=s.toLowerCase().indexOf(r),c=e(s.slice(n,n+r.length));return n>=0?s.slice(0,n)+c+s.slice(n+r.length):s}},pq=class extends Jat{constructor(e){super(e),this.cursorShow()}moveCursor(e){this.state.cursor+=e}dispatch(e){return this.append(e)}space(e){return this.options.multiple?super.space(e):this.append(e)}append(e){let{cursor:r,input:s}=this.state;return this.input=s.slice(0,r)+e+s.slice(r),this.moveCursor(1),this.complete()}delete(){let{cursor:e,input:r}=this.state;return r?(this.input=r.slice(0,e-1)+r.slice(e),this.moveCursor(-1),this.complete()):this.alert()}deleteForward(){let{cursor:e,input:r}=this.state;return r[e]===void 0?this.alert():(this.input=`${r}`.slice(0,e)+`${r}`.slice(e+1),this.complete())}number(e){return this.append(e)}async complete(){this.completing=!0,this.choices=await this.suggest(this.input,this.state._choices),this.state.limit=void 0,this.index=Math.min(Math.max(this.visible.length-1,0),this.index),await this.render(),this.completing=!1}suggest(e=this.input,r=this.state._choices){if(typeof this.options.suggest=="function")return this.options.suggest.call(this,e,r);let s=e.toLowerCase();return r.filter(a=>a.message.toLowerCase().includes(s))}pointer(){return""}format(){if(!this.focused)return this.input;if(this.options.multiple&&this.state.submitted)return this.selected.map(e=>this.styles.primary(e.message)).join(", ");if(this.state.submitted){let e=this.value=this.input=this.focused.value;return this.styles.primary(e)}return this.input}async render(){if(this.state.status!=="pending")return super.render();let e=this.options.highlight?this.options.highlight.bind(this):this.styles.placeholder,r=Kat(this.input,e),s=this.choices;this.choices=s.map(a=>({...a,message:r(a.message)})),await super.render(),this.choices=s}submit(){return this.options.multiple&&(this.value=this.selected.map(e=>e.name)),super.submit()}};sme.exports=pq});var gq=_((ZHt,ame)=>{"use strict";var hq=Xo();ame.exports=(t,e={})=>{t.cursorHide();let{input:r="",initial:s="",pos:a,showCursor:n=!0,color:c}=e,f=c||t.styles.placeholder,p=hq.inverse(t.styles.primary),h=T=>p(t.styles.black(T)),E=r,C=" ",S=h(C);if(t.blink&&t.blink.off===!0&&(h=T=>T,S=""),n&&a===0&&s===""&&r==="")return h(C);if(n&&a===0&&(r===s||r===""))return h(s[0])+f(s.slice(1));s=hq.isPrimitive(s)?`${s}`:"",r=hq.isPrimitive(r)?`${r}`:"";let b=s&&s.startsWith(r)&&s!==r,I=b?h(s[r.length]):S;if(a!==r.length&&n===!0&&(E=r.slice(0,a)+h(r[a])+r.slice(a+1),I=""),n===!1&&(I=""),b){let T=t.styles.unstyle(E+I);return E+I+f(s.slice(T.length))}return E+I}});var zT=_((XHt,lme)=>{"use strict";var zat=Ju(),Zat=G0(),Xat=gq(),dq=class extends Zat{constructor(e){super({...e,multiple:!0}),this.type="form",this.initial=this.options.initial,this.align=[this.options.align,"right"].find(r=>r!=null),this.emptyError="",this.values={}}async reset(e){return await super.reset(),e===!0&&(this._index=this.index),this.index=this._index,this.values={},this.choices.forEach(r=>r.reset&&r.reset()),this.render()}dispatch(e){return!!e&&this.append(e)}append(e){let r=this.focused;if(!r)return this.alert();let{cursor:s,input:a}=r;return r.value=r.input=a.slice(0,s)+e+a.slice(s),r.cursor++,this.render()}delete(){let e=this.focused;if(!e||e.cursor<=0)return this.alert();let{cursor:r,input:s}=e;return e.value=e.input=s.slice(0,r-1)+s.slice(r),e.cursor--,this.render()}deleteForward(){let e=this.focused;if(!e)return this.alert();let{cursor:r,input:s}=e;if(s[r]===void 0)return this.alert();let a=`${s}`.slice(0,r)+`${s}`.slice(r+1);return e.value=e.input=a,this.render()}right(){let e=this.focused;return e?e.cursor>=e.input.length?this.alert():(e.cursor++,this.render()):this.alert()}left(){let e=this.focused;return e?e.cursor<=0?this.alert():(e.cursor--,this.render()):this.alert()}space(e,r){return this.dispatch(e,r)}number(e,r){return this.dispatch(e,r)}next(){let e=this.focused;if(!e)return this.alert();let{initial:r,input:s}=e;return r&&r.startsWith(s)&&s!==r?(e.value=e.input=r,e.cursor=e.value.length,this.render()):super.next()}prev(){let e=this.focused;return e?e.cursor===0?super.prev():(e.value=e.input="",e.cursor=0,this.render()):this.alert()}separator(){return""}format(e){return this.state.submitted?"":super.format(e)}pointer(){return""}indicator(e){return e.input?"\u29BF":"\u2299"}async choiceSeparator(e,r){let s=await this.resolve(e.separator,this.state,e,r)||":";return s?" "+this.styles.disabled(s):""}async renderChoice(e,r){await this.onChoice(e,r);let{state:s,styles:a}=this,{cursor:n,initial:c="",name:f,hint:p,input:h=""}=e,{muted:E,submitted:C,primary:S,danger:b}=a,I=p,T=this.index===r,N=e.validate||(()=>!0),U=await this.choiceSeparator(e,r),W=e.message;this.align==="right"&&(W=W.padStart(this.longest+1," ")),this.align==="left"&&(W=W.padEnd(this.longest+1," "));let ee=this.values[f]=h||c,ie=h?"success":"dark";await N.call(e,ee,this.state)!==!0&&(ie="danger");let ue=a[ie],le=ue(await this.indicator(e,r))+(e.pad||""),me=this.indent(e),pe=()=>[me,le,W+U,h,I].filter(Boolean).join(" ");if(s.submitted)return W=zat.unstyle(W),h=C(h),I="",pe();if(e.format)h=await e.format.call(this,h,e,r);else{let Be=this.styles.muted;h=Xat(this,{input:h,initial:c,pos:n,showCursor:T,color:Be})}return this.isValue(h)||(h=this.styles.muted(this.symbols.ellipsis)),e.result&&(this.values[f]=await e.result.call(this,ee,e,r)),T&&(W=S(W)),e.error?h+=(h?" ":"")+b(e.error.trim()):e.hint&&(h+=(h?" ":"")+E(e.hint.trim())),pe()}async submit(){return this.value=this.values,super.base.submit.call(this)}};lme.exports=dq});var mq=_(($Ht,ume)=>{"use strict";var $at=zT(),elt=()=>{throw new Error("expected prompt to have a custom authenticate method")},cme=(t=elt)=>{class e extends $at{constructor(s){super(s)}async submit(){this.value=await t.call(this,this.values,this.state),super.base.submit.call(this)}static create(s){return cme(s)}}return e};ume.exports=cme()});var pme=_((ejt,Ame)=>{"use strict";var tlt=mq();function rlt(t,e){return t.username===this.options.username&&t.password===this.options.password}var fme=(t=rlt)=>{let e=[{name:"username",message:"username"},{name:"password",message:"password",format(s){return this.options.showPassword?s:(this.state.submitted?this.styles.primary:this.styles.muted)(this.symbols.asterisk.repeat(s.length))}}];class r extends tlt.create(t){constructor(a){super({...a,choices:e})}static create(a){return fme(a)}}return r};Ame.exports=fme()});var ZT=_((tjt,hme)=>{"use strict";var nlt=nC(),{isPrimitive:ilt,hasColor:slt}=Xo(),yq=class extends nlt{constructor(e){super(e),this.cursorHide()}async initialize(){let e=await this.resolve(this.initial,this.state);this.input=await this.cast(e),await super.initialize()}dispatch(e){return this.isValue(e)?(this.input=e,this.submit()):this.alert()}format(e){let{styles:r,state:s}=this;return s.submitted?r.success(e):r.primary(e)}cast(e){return this.isTrue(e)}isTrue(e){return/^[ty1]/i.test(e)}isFalse(e){return/^[fn0]/i.test(e)}isValue(e){return ilt(e)&&(this.isTrue(e)||this.isFalse(e))}async hint(){if(this.state.status==="pending"){let e=await this.element("hint");return slt(e)?e:this.styles.muted(e)}}async render(){let{input:e,size:r}=this.state,s=await this.prefix(),a=await this.separator(),n=await this.message(),c=this.styles.muted(this.default),f=[s,n,c,a].filter(Boolean).join(" ");this.state.prompt=f;let p=await this.header(),h=this.value=this.cast(e),E=await this.format(h),C=await this.error()||await this.hint(),S=await this.footer();C&&!f.includes(C)&&(E+=" "+C),f+=" "+E,this.clear(r),this.write([p,f,S].filter(Boolean).join(` `)),this.restore()}set value(e){super.value=e}get value(){return this.cast(super.value)}};hme.exports=yq});var dme=_((rjt,gme)=>{"use strict";var olt=ZT(),Eq=class extends olt{constructor(e){super(e),this.default=this.options.default||(this.initial?"(Y/n)":"(y/N)")}};gme.exports=Eq});var yme=_((njt,mme)=>{"use strict";var alt=G0(),llt=zT(),iC=llt.prototype,Iq=class extends alt{constructor(e){super({...e,multiple:!0}),this.align=[this.options.align,"left"].find(r=>r!=null),this.emptyError="",this.values={}}dispatch(e,r){let s=this.focused,a=s.parent||{};return!s.editable&&!a.editable&&(e==="a"||e==="i")?super[e]():iC.dispatch.call(this,e,r)}append(e,r){return iC.append.call(this,e,r)}delete(e,r){return iC.delete.call(this,e,r)}space(e){return this.focused.editable?this.append(e):super.space()}number(e){return this.focused.editable?this.append(e):super.number(e)}next(){return this.focused.editable?iC.next.call(this):super.next()}prev(){return this.focused.editable?iC.prev.call(this):super.prev()}async indicator(e,r){let s=e.indicator||"",a=e.editable?s:super.indicator(e,r);return await this.resolve(a,this.state,e,r)||""}indent(e){return e.role==="heading"?"":e.editable?" ":" "}async renderChoice(e,r){return e.indent="",e.editable?iC.renderChoice.call(this,e,r):super.renderChoice(e,r)}error(){return""}footer(){return this.state.error}async validate(){let e=!0;for(let r of this.choices){if(typeof r.validate!="function"||r.role==="heading")continue;let s=r.parent?this.value[r.parent.name]:this.value;if(r.editable?s=r.value===r.name?r.initial||"":r.value:this.isDisabled(r)||(s=r.enabled===!0),e=await r.validate(s,this.state),e!==!0)break}return e!==!0&&(this.state.error=typeof e=="string"?e:"Invalid Input"),e}submit(){if(this.focused.newChoice===!0)return super.submit();if(this.choices.some(e=>e.newChoice))return this.alert();this.value={};for(let e of this.choices){let r=e.parent?this.value[e.parent.name]:this.value;if(e.role==="heading"){this.value[e.name]={};continue}e.editable?r[e.name]=e.value===e.name?e.initial||"":e.value:this.isDisabled(e)||(r[e.name]=e.enabled===!0)}return this.base.submit.call(this)}};mme.exports=Iq});var vm=_((ijt,Eme)=>{"use strict";var clt=nC(),ult=gq(),{isPrimitive:flt}=Xo(),Cq=class extends clt{constructor(e){super(e),this.initial=flt(this.initial)?String(this.initial):"",this.initial&&this.cursorHide(),this.state.prevCursor=0,this.state.clipboard=[]}async keypress(e,r={}){let s=this.state.prevKeypress;return this.state.prevKeypress=r,this.options.multiline===!0&&r.name==="return"&&(!s||s.name!=="return")?this.append(` `,r):super.keypress(e,r)}moveCursor(e){this.cursor+=e}reset(){return this.input=this.value="",this.cursor=0,this.render()}dispatch(e,r){if(!e||r.ctrl||r.code)return this.alert();this.append(e)}append(e){let{cursor:r,input:s}=this.state;this.input=`${s}`.slice(0,r)+e+`${s}`.slice(r),this.moveCursor(String(e).length),this.render()}insert(e){this.append(e)}delete(){let{cursor:e,input:r}=this.state;if(e<=0)return this.alert();this.input=`${r}`.slice(0,e-1)+`${r}`.slice(e),this.moveCursor(-1),this.render()}deleteForward(){let{cursor:e,input:r}=this.state;if(r[e]===void 0)return this.alert();this.input=`${r}`.slice(0,e)+`${r}`.slice(e+1),this.render()}cutForward(){let e=this.cursor;if(this.input.length<=e)return this.alert();this.state.clipboard.push(this.input.slice(e)),this.input=this.input.slice(0,e),this.render()}cutLeft(){let e=this.cursor;if(e===0)return this.alert();let r=this.input.slice(0,e),s=this.input.slice(e),a=r.split(" ");this.state.clipboard.push(a.pop()),this.input=a.join(" "),this.cursor=this.input.length,this.input+=s,this.render()}paste(){if(!this.state.clipboard.length)return this.alert();this.insert(this.state.clipboard.pop()),this.render()}toggleCursor(){this.state.prevCursor?(this.cursor=this.state.prevCursor,this.state.prevCursor=0):(this.state.prevCursor=this.cursor,this.cursor=0),this.render()}first(){this.cursor=0,this.render()}last(){this.cursor=this.input.length-1,this.render()}next(){let e=this.initial!=null?String(this.initial):"";if(!e||!e.startsWith(this.input))return this.alert();this.input=this.initial,this.cursor=this.initial.length,this.render()}prev(){if(!this.input)return this.alert();this.reset()}backward(){return this.left()}forward(){return this.right()}right(){return this.cursor>=this.input.length?this.alert():(this.moveCursor(1),this.render())}left(){return this.cursor<=0?this.alert():(this.moveCursor(-1),this.render())}isValue(e){return!!e}async format(e=this.value){let r=await this.resolve(this.initial,this.state);return this.state.submitted?this.styles.submitted(e||r):ult(this,{input:e,initial:r,pos:this.cursor})}async render(){let e=this.state.size,r=await this.prefix(),s=await this.separator(),a=await this.message(),n=[r,a,s].filter(Boolean).join(" ");this.state.prompt=n;let c=await this.header(),f=await this.format(),p=await this.error()||await this.hint(),h=await this.footer();p&&!f.includes(p)&&(f+=" "+p),n+=" "+f,this.clear(e),this.write([c,n,h].filter(Boolean).join(` `)),this.restore()}};Eme.exports=Cq});var Cme=_((sjt,Ime)=>{"use strict";var Alt=t=>t.filter((e,r)=>t.lastIndexOf(e)===r),XT=t=>Alt(t).filter(Boolean);Ime.exports=(t,e={},r="")=>{let{past:s=[],present:a=""}=e,n,c;switch(t){case"prev":case"undo":return n=s.slice(0,s.length-1),c=s[s.length-1]||"",{past:XT([r,...n]),present:c};case"next":case"redo":return n=s.slice(1),c=s[0]||"",{past:XT([...n,r]),present:c};case"save":return{past:XT([...s,r]),present:""};case"remove":return c=XT(s.filter(f=>f!==r)),a="",c.length&&(a=c.pop()),{past:c,present:a};default:throw new Error(`Invalid action: "${t}"`)}}});var Bq=_((ojt,Bme)=>{"use strict";var plt=vm(),wme=Cme(),wq=class extends plt{constructor(e){super(e);let r=this.options.history;if(r&&r.store){let s=r.values||this.initial;this.autosave=!!r.autosave,this.store=r.store,this.data=this.store.get("values")||{past:[],present:s},this.initial=this.data.present||this.data.past[this.data.past.length-1]}}completion(e){return this.store?(this.data=wme(e,this.data,this.input),this.data.present?(this.input=this.data.present,this.cursor=this.input.length,this.render()):this.alert()):this.alert()}altUp(){return this.completion("prev")}altDown(){return this.completion("next")}prev(){return this.save(),super.prev()}save(){this.store&&(this.data=wme("save",this.data,this.input),this.store.set("values",this.data))}submit(){return this.store&&this.autosave===!0&&this.save(),super.submit()}};Bme.exports=wq});var Sme=_((ajt,vme)=>{"use strict";var hlt=vm(),vq=class extends hlt{format(){return""}};vme.exports=vq});var Pme=_((ljt,Dme)=>{"use strict";var glt=vm(),Sq=class extends glt{constructor(e={}){super(e),this.sep=this.options.separator||/, */,this.initial=e.initial||""}split(e=this.value){return e?String(e).split(this.sep):[]}format(){let e=this.state.submitted?this.styles.primary:r=>r;return this.list.map(e).join(", ")}async submit(e){let r=this.state.error||await this.validate(this.list,this.state);return r!==!0?(this.state.error=r,super.submit()):(this.value=this.list,super.submit())}get list(){return this.split()}};Dme.exports=Sq});var xme=_((cjt,bme)=>{"use strict";var dlt=G0(),Dq=class extends dlt{constructor(e){super({...e,multiple:!0})}};bme.exports=Dq});var bq=_((ujt,kme)=>{"use strict";var mlt=vm(),Pq=class extends mlt{constructor(e={}){super({style:"number",...e}),this.min=this.isValue(e.min)?this.toNumber(e.min):-1/0,this.max=this.isValue(e.max)?this.toNumber(e.max):1/0,this.delay=e.delay!=null?e.delay:1e3,this.float=e.float!==!1,this.round=e.round===!0||e.float===!1,this.major=e.major||10,this.minor=e.minor||1,this.initial=e.initial!=null?e.initial:"",this.input=String(this.initial),this.cursor=this.input.length,this.cursorShow()}append(e){return!/[-+.]/.test(e)||e==="."&&this.input.includes(".")?this.alert("invalid number"):super.append(e)}number(e){return super.append(e)}next(){return this.input&&this.input!==this.initial?this.alert():this.isValue(this.initial)?(this.input=this.initial,this.cursor=String(this.initial).length,this.render()):this.alert()}up(e){let r=e||this.minor,s=this.toNumber(this.input);return s>this.max+r?this.alert():(this.input=`${s+r}`,this.render())}down(e){let r=e||this.minor,s=this.toNumber(this.input);return sthis.isValue(r));return this.value=this.toNumber(e||0),super.submit()}};kme.exports=Pq});var Rme=_((fjt,Qme)=>{Qme.exports=bq()});var Fme=_((Ajt,Tme)=>{"use strict";var ylt=vm(),xq=class extends ylt{constructor(e){super(e),this.cursorShow()}format(e=this.input){return this.keypressed?(this.state.submitted?this.styles.primary:this.styles.muted)(this.symbols.asterisk.repeat(e.length)):""}};Tme.exports=xq});var Lme=_((pjt,Ome)=>{"use strict";var Elt=Ju(),Ilt=Wv(),Nme=Xo(),kq=class extends Ilt{constructor(e={}){super(e),this.widths=[].concat(e.messageWidth||50),this.align=[].concat(e.align||"left"),this.linebreak=e.linebreak||!1,this.edgeLength=e.edgeLength||3,this.newline=e.newline||` `;let r=e.startNumber||1;typeof this.scale=="number"&&(this.scaleKey=!1,this.scale=Array(this.scale).fill(0).map((s,a)=>({name:a+r})))}async reset(){return this.tableized=!1,await super.reset(),this.render()}tableize(){if(this.tableized===!0)return;this.tableized=!0;let e=0;for(let r of this.choices){e=Math.max(e,r.message.length),r.scaleIndex=r.initial||2,r.scale=[];for(let s=0;s=this.scale.length-1?this.alert():(e.scaleIndex++,this.render())}left(){let e=this.focused;return e.scaleIndex<=0?this.alert():(e.scaleIndex--,this.render())}indent(){return""}format(){return this.state.submitted?this.choices.map(r=>this.styles.info(r.index)).join(", "):""}pointer(){return""}renderScaleKey(){return this.scaleKey===!1||this.state.submitted?"":["",...this.scale.map(s=>` ${s.name} - ${s.message}`)].map(s=>this.styles.muted(s)).join(` `)}renderScaleHeading(e){let r=this.scale.map(p=>p.name);typeof this.options.renderScaleHeading=="function"&&(r=this.options.renderScaleHeading.call(this,e));let s=this.scaleLength-r.join("").length,a=Math.round(s/(r.length-1)),c=r.map(p=>this.styles.strong(p)).join(" ".repeat(a)),f=" ".repeat(this.widths[0]);return this.margin[3]+f+this.margin[1]+c}scaleIndicator(e,r,s){if(typeof this.options.scaleIndicator=="function")return this.options.scaleIndicator.call(this,e,r,s);let a=e.scaleIndex===r.index;return r.disabled?this.styles.hint(this.symbols.radio.disabled):a?this.styles.success(this.symbols.radio.on):this.symbols.radio.off}renderScale(e,r){let s=e.scale.map(n=>this.scaleIndicator(e,n,r)),a=this.term==="Hyper"?"":" ";return s.join(a+this.symbols.line.repeat(this.edgeLength))}async renderChoice(e,r){await this.onChoice(e,r);let s=this.index===r,a=await this.pointer(e,r),n=await e.hint;n&&!Nme.hasColor(n)&&(n=this.styles.muted(n));let c=I=>this.margin[3]+I.replace(/\s+$/,"").padEnd(this.widths[0]," "),f=this.newline,p=this.indent(e),h=await this.resolve(e.message,this.state,e,r),E=await this.renderScale(e,r),C=this.margin[1]+this.margin[3];this.scaleLength=Elt.unstyle(E).length,this.widths[0]=Math.min(this.widths[0],this.width-this.scaleLength-C.length);let b=Nme.wordWrap(h,{width:this.widths[0],newline:f}).split(` `).map(I=>c(I)+this.margin[1]);return s&&(E=this.styles.info(E),b=b.map(I=>this.styles.info(I))),b[0]+=E,this.linebreak&&b.push(""),[p+a,b.join(` `)].filter(Boolean)}async renderChoices(){if(this.state.submitted)return"";this.tableize();let e=this.visible.map(async(a,n)=>await this.renderChoice(a,n)),r=await Promise.all(e),s=await this.renderScaleHeading();return this.margin[0]+[s,...r.map(a=>a.join(" "))].join(` `)}async render(){let{submitted:e,size:r}=this.state,s=await this.prefix(),a=await this.separator(),n=await this.message(),c="";this.options.promptLine!==!1&&(c=[s,n,a,""].join(" "),this.state.prompt=c);let f=await this.header(),p=await this.format(),h=await this.renderScaleKey(),E=await this.error()||await this.hint(),C=await this.renderChoices(),S=await this.footer(),b=this.emptyError;p&&(c+=p),E&&!c.includes(E)&&(c+=" "+E),e&&!p&&!C.trim()&&this.multiple&&b!=null&&(c+=this.styles.danger(b)),this.clear(r),this.write([f,c,h,C,S].filter(Boolean).join(` `)),this.state.submitted||this.write(this.margin[2]),this.restore()}submit(){this.value={};for(let e of this.choices)this.value[e.name]=e.scaleIndex;return this.base.submit.call(this)}};Ome.exports=kq});var _me=_((hjt,Ume)=>{"use strict";var Mme=Ju(),Clt=(t="")=>typeof t=="string"?t.replace(/^['"]|['"]$/g,""):"",Rq=class{constructor(e){this.name=e.key,this.field=e.field||{},this.value=Clt(e.initial||this.field.initial||""),this.message=e.message||this.name,this.cursor=0,this.input="",this.lines=[]}},wlt=async(t={},e={},r=s=>s)=>{let s=new Set,a=t.fields||[],n=t.template,c=[],f=[],p=[],h=1;typeof n=="function"&&(n=await n());let E=-1,C=()=>n[++E],S=()=>n[E+1],b=I=>{I.line=h,c.push(I)};for(b({type:"bos",value:""});Eie.name===U.key);U.field=a.find(ie=>ie.name===U.key),ee||(ee=new Rq(U),f.push(ee)),ee.lines.push(U.line-1);continue}let T=c[c.length-1];T.type==="text"&&T.line===h?T.value+=I:b({type:"text",value:I})}return b({type:"eos",value:""}),{input:n,tabstops:c,unique:s,keys:p,items:f}};Ume.exports=async t=>{let e=t.options,r=new Set(e.required===!0?[]:e.required||[]),s={...e.values,...e.initial},{tabstops:a,items:n,keys:c}=await wlt(e,s),f=Qq("result",t,e),p=Qq("format",t,e),h=Qq("validate",t,e,!0),E=t.isValue.bind(t);return async(C={},S=!1)=>{let b=0;C.required=r,C.items=n,C.keys=c,C.output="";let I=async(W,ee,ie,ue)=>{let le=await h(W,ee,ie,ue);return le===!1?"Invalid field "+ie.name:le};for(let W of a){let ee=W.value,ie=W.key;if(W.type!=="template"){ee&&(C.output+=ee);continue}if(W.type==="template"){let ue=n.find(Ce=>Ce.name===ie);e.required===!0&&C.required.add(ue.name);let le=[ue.input,C.values[ue.value],ue.value,ee].find(E),pe=(ue.field||{}).message||W.inner;if(S){let Ce=await I(C.values[ie],C,ue,b);if(Ce&&typeof Ce=="string"||Ce===!1){C.invalid.set(ie,Ce);continue}C.invalid.delete(ie);let g=await f(C.values[ie],C,ue,b);C.output+=Mme.unstyle(g);continue}ue.placeholder=!1;let Be=ee;ee=await p(ee,C,ue,b),le!==ee?(C.values[ie]=le,ee=t.styles.typing(le),C.missing.delete(pe)):(C.values[ie]=void 0,le=`<${pe}>`,ee=t.styles.primary(le),ue.placeholder=!0,C.required.has(ie)&&C.missing.add(pe)),C.missing.has(pe)&&C.validating&&(ee=t.styles.warning(le)),C.invalid.has(ie)&&C.validating&&(ee=t.styles.danger(le)),b===C.index&&(Be!==ee?ee=t.styles.underline(ee):ee=t.styles.heading(Mme.unstyle(ee))),b++}ee&&(C.output+=ee)}let T=C.output.split(` `).map(W=>" "+W),N=n.length,U=0;for(let W of n)C.invalid.has(W.name)&&W.lines.forEach(ee=>{T[ee][0]===" "&&(T[ee]=C.styles.danger(C.symbols.bullet)+T[ee].slice(1))}),t.isValue(C.values[W.name])&&U++;return C.completed=(U/N*100).toFixed(0),C.output=T.join(` `),C.output}};function Qq(t,e,r,s){return(a,n,c,f)=>typeof c.field[t]=="function"?c.field[t].call(e,a,n,c,f):[s,a].find(p=>e.isValue(p))}});var jme=_((gjt,Hme)=>{"use strict";var Blt=Ju(),vlt=_me(),Slt=nC(),Tq=class extends Slt{constructor(e){super(e),this.cursorHide(),this.reset(!0)}async initialize(){this.interpolate=await vlt(this),await super.initialize()}async reset(e){this.state.keys=[],this.state.invalid=new Map,this.state.missing=new Set,this.state.completed=0,this.state.values={},e!==!0&&(await this.initialize(),await this.render())}moveCursor(e){let r=this.getItem();this.cursor+=e,r.cursor+=e}dispatch(e,r){if(!r.code&&!r.ctrl&&e!=null&&this.getItem()){this.append(e,r);return}this.alert()}append(e,r){let s=this.getItem(),a=s.input.slice(0,this.cursor),n=s.input.slice(this.cursor);this.input=s.input=`${a}${e}${n}`,this.moveCursor(1),this.render()}delete(){let e=this.getItem();if(this.cursor<=0||!e.input)return this.alert();let r=e.input.slice(this.cursor),s=e.input.slice(0,this.cursor-1);this.input=e.input=`${s}${r}`,this.moveCursor(-1),this.render()}increment(e){return e>=this.state.keys.length-1?0:e+1}decrement(e){return e<=0?this.state.keys.length-1:e-1}first(){this.state.index=0,this.render()}last(){this.state.index=this.state.keys.length-1,this.render()}right(){if(this.cursor>=this.input.length)return this.alert();this.moveCursor(1),this.render()}left(){if(this.cursor<=0)return this.alert();this.moveCursor(-1),this.render()}prev(){this.state.index=this.decrement(this.state.index),this.getItem(),this.render()}next(){this.state.index=this.increment(this.state.index),this.getItem(),this.render()}up(){this.prev()}down(){this.next()}format(e){let r=this.state.completed<100?this.styles.warning:this.styles.success;return this.state.submitted===!0&&this.state.completed!==100&&(r=this.styles.danger),r(`${this.state.completed}% completed`)}async render(){let{index:e,keys:r=[],submitted:s,size:a}=this.state,n=[this.options.newline,` `].find(W=>W!=null),c=await this.prefix(),f=await this.separator(),p=await this.message(),h=[c,p,f].filter(Boolean).join(" ");this.state.prompt=h;let E=await this.header(),C=await this.error()||"",S=await this.hint()||"",b=s?"":await this.interpolate(this.state),I=this.state.key=r[e]||"",T=await this.format(I),N=await this.footer();T&&(h+=" "+T),S&&!T&&this.state.completed===0&&(h+=" "+S),this.clear(a);let U=[E,h,b,N,C.trim()];this.write(U.filter(Boolean).join(n)),this.restore()}getItem(e){let{items:r,keys:s,index:a}=this.state,n=r.find(c=>c.name===s[a]);return n&&n.input!=null&&(this.input=n.input,this.cursor=n.cursor),n}async submit(){typeof this.interpolate!="function"&&await this.initialize(),await this.interpolate(this.state,!0);let{invalid:e,missing:r,output:s,values:a}=this.state;if(e.size){let f="";for(let[p,h]of e)f+=`Invalid ${p}: ${h} `;return this.state.error=f,super.submit()}if(r.size)return this.state.error="Required: "+[...r.keys()].join(", "),super.submit();let c=Blt.unstyle(s).split(` `).map(f=>f.slice(1)).join(` `);return this.value={values:a,result:c},super.submit()}};Hme.exports=Tq});var qme=_((djt,Gme)=>{"use strict";var Dlt="(Use + to sort)",Plt=G0(),Fq=class extends Plt{constructor(e){super({...e,reorder:!1,sort:!0,multiple:!0}),this.state.hint=[this.options.hint,Dlt].find(this.isValue.bind(this))}indicator(){return""}async renderChoice(e,r){let s=await super.renderChoice(e,r),a=this.symbols.identicalTo+" ",n=this.index===r&&this.sorting?this.styles.muted(a):" ";return this.options.drag===!1&&(n=""),this.options.numbered===!0?n+`${r+1} - `+s:n+s}get selected(){return this.choices}submit(){return this.value=this.choices.map(e=>e.value),super.submit()}};Gme.exports=Fq});var Yme=_((mjt,Wme)=>{"use strict";var blt=Wv(),Nq=class extends blt{constructor(e={}){if(super(e),this.emptyError=e.emptyError||"No items were selected",this.term=process.env.TERM_PROGRAM,!this.options.header){let r=["","4 - Strongly Agree","3 - Agree","2 - Neutral","1 - Disagree","0 - Strongly Disagree",""];r=r.map(s=>this.styles.muted(s)),this.state.header=r.join(` `)}}async toChoices(...e){if(this.createdScales)return!1;this.createdScales=!0;let r=await super.toChoices(...e);for(let s of r)s.scale=xlt(5,this.options),s.scaleIdx=2;return r}dispatch(){this.alert()}space(){let e=this.focused,r=e.scale[e.scaleIdx],s=r.selected;return e.scale.forEach(a=>a.selected=!1),r.selected=!s,this.render()}indicator(){return""}pointer(){return""}separator(){return this.styles.muted(this.symbols.ellipsis)}right(){let e=this.focused;return e.scaleIdx>=e.scale.length-1?this.alert():(e.scaleIdx++,this.render())}left(){let e=this.focused;return e.scaleIdx<=0?this.alert():(e.scaleIdx--,this.render())}indent(){return" "}async renderChoice(e,r){await this.onChoice(e,r);let s=this.index===r,a=this.term==="Hyper",n=a?9:8,c=a?"":" ",f=this.symbols.line.repeat(n),p=" ".repeat(n+(a?0:1)),h=ee=>(ee?this.styles.success("\u25C9"):"\u25EF")+c,E=r+1+".",C=s?this.styles.heading:this.styles.noop,S=await this.resolve(e.message,this.state,e,r),b=this.indent(e),I=b+e.scale.map((ee,ie)=>h(ie===e.scaleIdx)).join(f),T=ee=>ee===e.scaleIdx?C(ee):ee,N=b+e.scale.map((ee,ie)=>T(ie)).join(p),U=()=>[E,S].filter(Boolean).join(" "),W=()=>[U(),I,N," "].filter(Boolean).join(` `);return s&&(I=this.styles.cyan(I),N=this.styles.cyan(N)),W()}async renderChoices(){if(this.state.submitted)return"";let e=this.visible.map(async(s,a)=>await this.renderChoice(s,a)),r=await Promise.all(e);return r.length||r.push(this.styles.danger("No matching choices")),r.join(` `)}format(){return this.state.submitted?this.choices.map(r=>this.styles.info(r.scaleIdx)).join(", "):""}async render(){let{submitted:e,size:r}=this.state,s=await this.prefix(),a=await this.separator(),n=await this.message(),c=[s,n,a].filter(Boolean).join(" ");this.state.prompt=c;let f=await this.header(),p=await this.format(),h=await this.error()||await this.hint(),E=await this.renderChoices(),C=await this.footer();(p||!h)&&(c+=" "+p),h&&!c.includes(h)&&(c+=" "+h),e&&!p&&!E&&this.multiple&&this.type!=="form"&&(c+=this.styles.danger(this.emptyError)),this.clear(r),this.write([c,f,E,C].filter(Boolean).join(` `)),this.restore()}submit(){this.value={};for(let e of this.choices)this.value[e.name]=e.scaleIdx;return this.base.submit.call(this)}};function xlt(t,e={}){if(Array.isArray(e.scale))return e.scale.map(s=>({...s}));let r=[];for(let s=1;s{Vme.exports=Bq()});var zme=_((Ejt,Kme)=>{"use strict";var klt=ZT(),Oq=class extends klt{async initialize(){await super.initialize(),this.value=this.initial=!!this.options.initial,this.disabled=this.options.disabled||"no",this.enabled=this.options.enabled||"yes",await this.render()}reset(){this.value=this.initial,this.render()}delete(){this.alert()}toggle(){this.value=!this.value,this.render()}enable(){if(this.value===!0)return this.alert();this.value=!0,this.render()}disable(){if(this.value===!1)return this.alert();this.value=!1,this.render()}up(){this.toggle()}down(){this.toggle()}right(){this.toggle()}left(){this.toggle()}next(){this.toggle()}prev(){this.toggle()}dispatch(e="",r){switch(e.toLowerCase()){case" ":return this.toggle();case"1":case"y":case"t":return this.enable();case"0":case"n":case"f":return this.disable();default:return this.alert()}}format(){let e=s=>this.styles.primary.underline(s);return[this.value?this.disabled:e(this.disabled),this.value?e(this.enabled):this.enabled].join(this.styles.muted(" / "))}async render(){let{size:e}=this.state,r=await this.header(),s=await this.prefix(),a=await this.separator(),n=await this.message(),c=await this.format(),f=await this.error()||await this.hint(),p=await this.footer(),h=[s,n,a,c].join(" ");this.state.prompt=h,f&&!h.includes(f)&&(h+=" "+f),this.clear(e),this.write([r,h,p].filter(Boolean).join(` `)),this.write(this.margin[2]),this.restore()}};Kme.exports=Oq});var Xme=_((Ijt,Zme)=>{"use strict";var Qlt=G0(),Lq=class extends Qlt{constructor(e){if(super(e),typeof this.options.correctChoice!="number"||this.options.correctChoice<0)throw new Error("Please specify the index of the correct answer from the list of choices")}async toChoices(e,r){let s=await super.toChoices(e,r);if(s.length<2)throw new Error("Please give at least two choices to the user");if(this.options.correctChoice>s.length)throw new Error("Please specify the index of the correct answer from the list of choices");return s}check(e){return e.index===this.options.correctChoice}async result(e){return{selectedAnswer:e,correctAnswer:this.options.choices[this.options.correctChoice].value,correct:await this.check(this.state)}}};Zme.exports=Lq});var eye=_(Mq=>{"use strict";var $me=Xo(),ks=(t,e)=>{$me.defineExport(Mq,t,e),$me.defineExport(Mq,t.toLowerCase(),e)};ks("AutoComplete",()=>ome());ks("BasicAuth",()=>pme());ks("Confirm",()=>dme());ks("Editable",()=>yme());ks("Form",()=>zT());ks("Input",()=>Bq());ks("Invisible",()=>Sme());ks("List",()=>Pme());ks("MultiSelect",()=>xme());ks("Numeral",()=>Rme());ks("Password",()=>Fme());ks("Scale",()=>Lme());ks("Select",()=>G0());ks("Snippet",()=>jme());ks("Sort",()=>qme());ks("Survey",()=>Yme());ks("Text",()=>Jme());ks("Toggle",()=>zme());ks("Quiz",()=>Xme())});var rye=_((wjt,tye)=>{tye.exports={ArrayPrompt:Wv(),AuthPrompt:mq(),BooleanPrompt:ZT(),NumberPrompt:bq(),StringPrompt:vm()}});var Vv=_((Bjt,iye)=>{"use strict";var nye=Ie("assert"),_q=Ie("events"),q0=Xo(),zu=class extends _q{constructor(e,r){super(),this.options=q0.merge({},e),this.answers={...r}}register(e,r){if(q0.isObject(e)){for(let a of Object.keys(e))this.register(a,e[a]);return this}nye.equal(typeof r,"function","expected a function");let s=e.toLowerCase();return r.prototype instanceof this.Prompt?this.prompts[s]=r:this.prompts[s]=r(this.Prompt,this),this}async prompt(e=[]){for(let r of[].concat(e))try{typeof r=="function"&&(r=await r.call(this)),await this.ask(q0.merge({},this.options,r))}catch(s){return Promise.reject(s)}return this.answers}async ask(e){typeof e=="function"&&(e=await e.call(this));let r=q0.merge({},this.options,e),{type:s,name:a}=e,{set:n,get:c}=q0;if(typeof s=="function"&&(s=await s.call(this,e,this.answers)),!s)return this.answers[a];nye(this.prompts[s],`Prompt "${s}" is not registered`);let f=new this.prompts[s](r),p=c(this.answers,a);f.state.answers=this.answers,f.enquirer=this,a&&f.on("submit",E=>{this.emit("answer",a,E,f),n(this.answers,a,E)});let h=f.emit.bind(f);return f.emit=(...E)=>(this.emit.call(this,...E),h(...E)),this.emit("prompt",f,this),r.autofill&&p!=null?(f.value=f.input=p,r.autofill==="show"&&await f.submit()):p=f.value=await f.run(),p}use(e){return e.call(this,this),this}set Prompt(e){this._Prompt=e}get Prompt(){return this._Prompt||this.constructor.Prompt}get prompts(){return this.constructor.prompts}static set Prompt(e){this._Prompt=e}static get Prompt(){return this._Prompt||nC()}static get prompts(){return eye()}static get types(){return rye()}static get prompt(){let e=(r,...s)=>{let a=new this(...s),n=a.emit.bind(a);return a.emit=(...c)=>(e.emit(...c),n(...c)),a.prompt(r)};return q0.mixinEmitter(e,new _q),e}};q0.mixinEmitter(zu,new _q);var Uq=zu.prompts;for(let t of Object.keys(Uq)){let e=t.toLowerCase(),r=s=>new Uq[t](s).run();zu.prompt[e]=r,zu[e]=r,zu[t]||Reflect.defineProperty(zu,t,{get:()=>Uq[t]})}var Yv=t=>{q0.defineExport(zu,t,()=>zu.types[t])};Yv("ArrayPrompt");Yv("AuthPrompt");Yv("BooleanPrompt");Yv("NumberPrompt");Yv("StringPrompt");iye.exports=zu});var Aye=_((Y6t,_lt)=>{_lt.exports={name:"@yarnpkg/cli",version:"4.10.3",license:"BSD-2-Clause",main:"./sources/index.ts",exports:{".":"./sources/index.ts","./polyfills":"./sources/polyfills.ts","./package.json":"./package.json"},dependencies:{"@yarnpkg/core":"workspace:^","@yarnpkg/fslib":"workspace:^","@yarnpkg/libzip":"workspace:^","@yarnpkg/parsers":"workspace:^","@yarnpkg/plugin-catalog":"workspace:^","@yarnpkg/plugin-compat":"workspace:^","@yarnpkg/plugin-constraints":"workspace:^","@yarnpkg/plugin-dlx":"workspace:^","@yarnpkg/plugin-essentials":"workspace:^","@yarnpkg/plugin-exec":"workspace:^","@yarnpkg/plugin-file":"workspace:^","@yarnpkg/plugin-git":"workspace:^","@yarnpkg/plugin-github":"workspace:^","@yarnpkg/plugin-http":"workspace:^","@yarnpkg/plugin-init":"workspace:^","@yarnpkg/plugin-interactive-tools":"workspace:^","@yarnpkg/plugin-jsr":"workspace:^","@yarnpkg/plugin-link":"workspace:^","@yarnpkg/plugin-nm":"workspace:^","@yarnpkg/plugin-npm":"workspace:^","@yarnpkg/plugin-npm-cli":"workspace:^","@yarnpkg/plugin-pack":"workspace:^","@yarnpkg/plugin-patch":"workspace:^","@yarnpkg/plugin-pnp":"workspace:^","@yarnpkg/plugin-pnpm":"workspace:^","@yarnpkg/plugin-stage":"workspace:^","@yarnpkg/plugin-typescript":"workspace:^","@yarnpkg/plugin-version":"workspace:^","@yarnpkg/plugin-workspace-tools":"workspace:^","@yarnpkg/shell":"workspace:^","ci-info":"^4.0.0",clipanion:"^4.0.0-rc.2",semver:"^7.1.2",tslib:"^2.4.0",typanion:"^3.14.0"},devDependencies:{"@types/semver":"^7.1.0","@yarnpkg/builder":"workspace:^","@yarnpkg/monorepo":"workspace:^","@yarnpkg/pnpify":"workspace:^"},peerDependencies:{"@yarnpkg/core":"workspace:^"},scripts:{postpack:"rm -rf lib",prepack:'run build:compile "$(pwd)"',"build:cli+hook":"run build:pnp:hook && builder build bundle","build:cli":"builder build bundle","run:cli":"builder run","update-local":"run build:cli --no-git-hash && rsync -a --delete bundles/ bin/"},publishConfig:{main:"./lib/index.js",bin:null,exports:{".":"./lib/index.js","./package.json":"./package.json"}},files:["/lib/**/*","!/lib/pluginConfiguration.*","!/lib/cli.*"],"@yarnpkg/builder":{bundles:{standard:["@yarnpkg/plugin-essentials","@yarnpkg/plugin-compat","@yarnpkg/plugin-constraints","@yarnpkg/plugin-dlx","@yarnpkg/plugin-exec","@yarnpkg/plugin-file","@yarnpkg/plugin-git","@yarnpkg/plugin-github","@yarnpkg/plugin-http","@yarnpkg/plugin-init","@yarnpkg/plugin-interactive-tools","@yarnpkg/plugin-jsr","@yarnpkg/plugin-link","@yarnpkg/plugin-nm","@yarnpkg/plugin-npm","@yarnpkg/plugin-npm-cli","@yarnpkg/plugin-pack","@yarnpkg/plugin-patch","@yarnpkg/plugin-pnp","@yarnpkg/plugin-pnpm","@yarnpkg/plugin-stage","@yarnpkg/plugin-typescript","@yarnpkg/plugin-version","@yarnpkg/plugin-workspace-tools","@yarnpkg/plugin-catalog"]}},repository:{type:"git",url:"git+https://github.com/yarnpkg/berry.git",directory:"packages/yarnpkg-cli"},engines:{node:">=18.12.0"}}});var t5=_((v9t,vye)=>{"use strict";vye.exports=function(e,r){r===!0&&(r=0);var s="";if(typeof e=="string")try{s=new URL(e).protocol}catch{}else e&&e.constructor===URL&&(s=e.protocol);var a=s.split(/\:|\+/).filter(Boolean);return typeof r=="number"?a[r]:a}});var Dye=_((S9t,Sye)=>{"use strict";var oct=t5();function act(t){var e={protocols:[],protocol:null,port:null,resource:"",host:"",user:"",password:"",pathname:"",hash:"",search:"",href:t,query:{},parse_failed:!1};try{var r=new URL(t);e.protocols=oct(r),e.protocol=e.protocols[0],e.port=r.port,e.resource=r.hostname,e.host=r.host,e.user=r.username||"",e.password=r.password||"",e.pathname=r.pathname,e.hash=r.hash.slice(1),e.search=r.search.slice(1),e.href=r.href,e.query=Object.fromEntries(r.searchParams)}catch{e.protocols=["file"],e.protocol=e.protocols[0],e.port="",e.resource="",e.user="",e.pathname="",e.hash="",e.search="",e.href=t,e.query={},e.parse_failed=!0}return e}Sye.exports=act});var xye=_((D9t,bye)=>{"use strict";var lct=Dye();function cct(t){return t&&typeof t=="object"&&"default"in t?t:{default:t}}var uct=cct(lct),fct="text/plain",Act="us-ascii",Pye=(t,e)=>e.some(r=>r instanceof RegExp?r.test(t):r===t),pct=(t,{stripHash:e})=>{let r=/^data:(?[^,]*?),(?[^#]*?)(?:#(?.*))?$/.exec(t);if(!r)throw new Error(`Invalid URL: ${t}`);let{type:s,data:a,hash:n}=r.groups,c=s.split(";");n=e?"":n;let f=!1;c[c.length-1]==="base64"&&(c.pop(),f=!0);let p=(c.shift()||"").toLowerCase(),E=[...c.map(C=>{let[S,b=""]=C.split("=").map(I=>I.trim());return S==="charset"&&(b=b.toLowerCase(),b===Act)?"":`${S}${b?`=${b}`:""}`}).filter(Boolean)];return f&&E.push("base64"),(E.length>0||p&&p!==fct)&&E.unshift(p),`data:${E.join(";")},${f?a.trim():a}${n?`#${n}`:""}`};function hct(t,e){if(e={defaultProtocol:"http:",normalizeProtocol:!0,forceHttp:!1,forceHttps:!1,stripAuthentication:!0,stripHash:!1,stripTextFragment:!0,stripWWW:!0,removeQueryParameters:[/^utm_\w+/i],removeTrailingSlash:!0,removeSingleSlash:!0,removeDirectoryIndex:!1,sortQueryParameters:!0,...e},t=t.trim(),/^data:/i.test(t))return pct(t,e);if(/^view-source:/i.test(t))throw new Error("`view-source:` is not supported as it is a non-standard protocol");let r=t.startsWith("//");!r&&/^\.*\//.test(t)||(t=t.replace(/^(?!(?:\w+:)?\/\/)|^\/\//,e.defaultProtocol));let a=new URL(t);if(e.forceHttp&&e.forceHttps)throw new Error("The `forceHttp` and `forceHttps` options cannot be used together");if(e.forceHttp&&a.protocol==="https:"&&(a.protocol="http:"),e.forceHttps&&a.protocol==="http:"&&(a.protocol="https:"),e.stripAuthentication&&(a.username="",a.password=""),e.stripHash?a.hash="":e.stripTextFragment&&(a.hash=a.hash.replace(/#?:~:text.*?$/i,"")),a.pathname){let c=/\b[a-z][a-z\d+\-.]{1,50}:\/\//g,f=0,p="";for(;;){let E=c.exec(a.pathname);if(!E)break;let C=E[0],S=E.index,b=a.pathname.slice(f,S);p+=b.replace(/\/{2,}/g,"/"),p+=C,f=S+C.length}let h=a.pathname.slice(f,a.pathname.length);p+=h.replace(/\/{2,}/g,"/"),a.pathname=p}if(a.pathname)try{a.pathname=decodeURI(a.pathname)}catch{}if(e.removeDirectoryIndex===!0&&(e.removeDirectoryIndex=[/^index\.[a-z]+$/]),Array.isArray(e.removeDirectoryIndex)&&e.removeDirectoryIndex.length>0){let c=a.pathname.split("/"),f=c[c.length-1];Pye(f,e.removeDirectoryIndex)&&(c=c.slice(0,-1),a.pathname=c.slice(1).join("/")+"/")}if(a.hostname&&(a.hostname=a.hostname.replace(/\.$/,""),e.stripWWW&&/^www\.(?!www\.)[a-z\-\d]{1,63}\.[a-z.\-\d]{2,63}$/.test(a.hostname)&&(a.hostname=a.hostname.replace(/^www\./,""))),Array.isArray(e.removeQueryParameters))for(let c of[...a.searchParams.keys()])Pye(c,e.removeQueryParameters)&&a.searchParams.delete(c);if(e.removeQueryParameters===!0&&(a.search=""),e.sortQueryParameters){a.searchParams.sort();try{a.search=decodeURIComponent(a.search)}catch{}}e.removeTrailingSlash&&(a.pathname=a.pathname.replace(/\/$/,""));let n=t;return t=a.toString(),!e.removeSingleSlash&&a.pathname==="/"&&!n.endsWith("/")&&a.hash===""&&(t=t.replace(/\/$/,"")),(e.removeTrailingSlash||a.pathname==="/")&&a.hash===""&&e.removeSingleSlash&&(t=t.replace(/\/$/,"")),r&&!e.normalizeProtocol&&(t=t.replace(/^http:\/\//,"//")),e.stripProtocol&&(t=t.replace(/^(?:https?:)?\/\//,"")),t}var r5=(t,e=!1)=>{let r=/^(?:([a-z_][a-z0-9_-]{0,31})@|https?:\/\/)([\w\.\-@]+)[\/:]([\~,\.\w,\-,\_,\/]+?(?:\.git|\/)?)$/,s=n=>{let c=new Error(n);throw c.subject_url=t,c};(typeof t!="string"||!t.trim())&&s("Invalid url."),t.length>r5.MAX_INPUT_LENGTH&&s("Input exceeds maximum length. If needed, change the value of parseUrl.MAX_INPUT_LENGTH."),e&&(typeof e!="object"&&(e={stripHash:!1}),t=hct(t,e));let a=uct.default(t);if(a.parse_failed){let n=a.href.match(r);n?(a.protocols=["ssh"],a.protocol="ssh",a.resource=n[2],a.host=n[2],a.user=n[1],a.pathname=`/${n[3]}`,a.parse_failed=!1):s("URL parsing failed.")}return a};r5.MAX_INPUT_LENGTH=2048;bye.exports=r5});var Rye=_((P9t,Qye)=>{"use strict";var gct=t5();function kye(t){if(Array.isArray(t))return t.indexOf("ssh")!==-1||t.indexOf("rsync")!==-1;if(typeof t!="string")return!1;var e=gct(t);if(t=t.substring(t.indexOf("://")+3),kye(e))return!0;var r=new RegExp(".([a-zA-Z\\d]+):(\\d+)/");return!t.match(r)&&t.indexOf("@"){"use strict";var dct=xye(),Tye=Rye();function mct(t){var e=dct(t);return e.token="",e.password==="x-oauth-basic"?e.token=e.user:e.user==="x-token-auth"&&(e.token=e.password),Tye(e.protocols)||e.protocols.length===0&&Tye(t)?e.protocol="ssh":e.protocols.length?e.protocol=e.protocols[0]:(e.protocol="file",e.protocols=["file"]),e.href=e.href.replace(/\/$/,""),e}Fye.exports=mct});var Lye=_((x9t,Oye)=>{"use strict";var yct=Nye();function n5(t){if(typeof t!="string")throw new Error("The url must be a string.");var e=/^([a-z\d-]{1,39})\/([-\.\w]{1,100})$/i;e.test(t)&&(t="https://github.com/"+t);var r=yct(t),s=r.resource.split("."),a=null;switch(r.toString=function(N){return n5.stringify(this,N)},r.source=s.length>2?s.slice(1-s.length).join("."):r.source=r.resource,r.git_suffix=/\.git$/.test(r.pathname),r.name=decodeURIComponent((r.pathname||r.href).replace(/(^\/)|(\/$)/g,"").replace(/\.git$/,"")),r.owner=decodeURIComponent(r.user),r.source){case"git.cloudforge.com":r.owner=r.user,r.organization=s[0],r.source="cloudforge.com";break;case"visualstudio.com":if(r.resource==="vs-ssh.visualstudio.com"){a=r.name.split("/"),a.length===4&&(r.organization=a[1],r.owner=a[2],r.name=a[3],r.full_name=a[2]+"/"+a[3]);break}else{a=r.name.split("/"),a.length===2?(r.owner=a[1],r.name=a[1],r.full_name="_git/"+r.name):a.length===3?(r.name=a[2],a[0]==="DefaultCollection"?(r.owner=a[2],r.organization=a[0],r.full_name=r.organization+"/_git/"+r.name):(r.owner=a[0],r.full_name=r.owner+"/_git/"+r.name)):a.length===4&&(r.organization=a[0],r.owner=a[1],r.name=a[3],r.full_name=r.organization+"/"+r.owner+"/_git/"+r.name);break}case"dev.azure.com":case"azure.com":if(r.resource==="ssh.dev.azure.com"){a=r.name.split("/"),a.length===4&&(r.organization=a[1],r.owner=a[2],r.name=a[3]);break}else{a=r.name.split("/"),a.length===5?(r.organization=a[0],r.owner=a[1],r.name=a[4],r.full_name="_git/"+r.name):a.length===3?(r.name=a[2],a[0]==="DefaultCollection"?(r.owner=a[2],r.organization=a[0],r.full_name=r.organization+"/_git/"+r.name):(r.owner=a[0],r.full_name=r.owner+"/_git/"+r.name)):a.length===4&&(r.organization=a[0],r.owner=a[1],r.name=a[3],r.full_name=r.organization+"/"+r.owner+"/_git/"+r.name),r.query&&r.query.path&&(r.filepath=r.query.path.replace(/^\/+/g,"")),r.query&&r.query.version&&(r.ref=r.query.version.replace(/^GB/,""));break}default:a=r.name.split("/");var n=a.length-1;if(a.length>=2){var c=a.indexOf("-",2),f=a.indexOf("blob",2),p=a.indexOf("tree",2),h=a.indexOf("commit",2),E=a.indexOf("src",2),C=a.indexOf("raw",2),S=a.indexOf("edit",2);n=c>0?c-1:f>0?f-1:p>0?p-1:h>0?h-1:E>0?E-1:C>0?C-1:S>0?S-1:n,r.owner=a.slice(0,n).join("/"),r.name=a[n],h&&(r.commit=a[n+2])}r.ref="",r.filepathtype="",r.filepath="";var b=a.length>n&&a[n+1]==="-"?n+1:n;a.length>b+2&&["raw","src","blob","tree","edit"].indexOf(a[b+1])>=0&&(r.filepathtype=a[b+1],r.ref=a[b+2],a.length>b+3&&(r.filepath=a.slice(b+3).join("/"))),r.organization=r.owner;break}r.full_name||(r.full_name=r.owner,r.name&&(r.full_name&&(r.full_name+="/"),r.full_name+=r.name)),r.owner.startsWith("scm/")&&(r.source="bitbucket-server",r.owner=r.owner.replace("scm/",""),r.organization=r.owner,r.full_name=r.owner+"/"+r.name);var I=/(projects|users)\/(.*?)\/repos\/(.*?)((\/.*$)|$)/,T=I.exec(r.pathname);return T!=null&&(r.source="bitbucket-server",T[1]==="users"?r.owner="~"+T[2]:r.owner=T[2],r.organization=r.owner,r.name=T[3],a=T[4].split("/"),a.length>1&&(["raw","browse"].indexOf(a[1])>=0?(r.filepathtype=a[1],a.length>2&&(r.filepath=a.slice(2).join("/"))):a[1]==="commits"&&a.length>2&&(r.commit=a[2])),r.full_name=r.owner+"/"+r.name,r.query.at?r.ref=r.query.at:r.ref=""),r}n5.stringify=function(t,e){e=e||(t.protocols&&t.protocols.length?t.protocols.join("+"):t.protocol);var r=t.port?":"+t.port:"",s=t.user||"git",a=t.git_suffix?".git":"";switch(e){case"ssh":return r?"ssh://"+s+"@"+t.resource+r+"/"+t.full_name+a:s+"@"+t.resource+":"+t.full_name+a;case"git+ssh":case"ssh+git":case"ftp":case"ftps":return e+"://"+s+"@"+t.resource+r+"/"+t.full_name+a;case"http":case"https":var n=t.token?Ect(t):t.user&&(t.protocols.includes("http")||t.protocols.includes("https"))?t.user+"@":"";return e+"://"+n+t.resource+r+"/"+Ict(t)+a;default:return t.href}};function Ect(t){switch(t.source){case"bitbucket.org":return"x-token-auth:"+t.token+"@";default:return t.token+"@"}}function Ict(t){switch(t.source){case"bitbucket-server":return"scm/"+t.full_name;default:return""+t.full_name}}Oye.exports=n5});function Fct(t,e){return e===1&&Tct.has(t[0])}function nS(t){let e=Array.isArray(t)?t:Mu(t);return e.map((s,a)=>Qct.test(s)?`[${s}]`:Rct.test(s)&&!Fct(e,a)?`.${s}`:`[${JSON.stringify(s)}]`).join("").replace(/^\./,"")}function Nct(t,e){let r=[];if(e.methodName!==null&&r.push(he.pretty(t,e.methodName,he.Type.CODE)),e.file!==null){let s=[];s.push(he.pretty(t,e.file,he.Type.PATH)),e.line!==null&&(s.push(he.pretty(t,e.line,he.Type.NUMBER)),e.column!==null&&s.push(he.pretty(t,e.column,he.Type.NUMBER))),r.push(`(${s.join(he.pretty(t,":","grey"))})`)}return r.join(" ")}function nF(t,{manifestUpdates:e,reportedErrors:r},{fix:s}={}){let a=new Map,n=new Map,c=[...r.keys()].map(f=>[f,new Map]);for(let[f,p]of[...c,...e]){let h=r.get(f)?.map(b=>({text:b,fixable:!1}))??[],E=!1,C=t.getWorkspaceByCwd(f),S=C.manifest.exportTo({});for(let[b,I]of p){if(I.size>1){let T=[...I].map(([N,U])=>{let W=he.pretty(t.configuration,N,he.Type.INSPECT),ee=U.size>0?Nct(t.configuration,U.values().next().value):null;return ee!==null?` ${W} at ${ee}`:` ${W}`}).join("");h.push({text:`Conflict detected in constraint targeting ${he.pretty(t.configuration,b,he.Type.CODE)}; conflicting values are:${T}`,fixable:!1})}else{let[[T]]=I,N=va(S,b);if(JSON.stringify(N)===JSON.stringify(T))continue;if(!s){let U=typeof N>"u"?`Missing field ${he.pretty(t.configuration,b,he.Type.CODE)}; expected ${he.pretty(t.configuration,T,he.Type.INSPECT)}`:typeof T>"u"?`Extraneous field ${he.pretty(t.configuration,b,he.Type.CODE)} currently set to ${he.pretty(t.configuration,N,he.Type.INSPECT)}`:`Invalid field ${he.pretty(t.configuration,b,he.Type.CODE)}; expected ${he.pretty(t.configuration,T,he.Type.INSPECT)}, found ${he.pretty(t.configuration,N,he.Type.INSPECT)}`;h.push({text:U,fixable:!0});continue}typeof T>"u"?A0(S,b):Jd(S,b,T),E=!0}E&&a.set(C,S)}h.length>0&&n.set(C,h)}return{changedWorkspaces:a,remainingErrors:n}}function Zye(t,{configuration:e}){let r={children:[]};for(let[s,a]of t){let n=[];for(let f of a){let p=f.text.split(/\n/);f.fixable&&(p[0]=`${he.pretty(e,"\u2699","gray")} ${p[0]}`),n.push({value:he.tuple(he.Type.NO_HINT,p[0]),children:p.slice(1).map(h=>({value:he.tuple(he.Type.NO_HINT,h)}))})}let c={value:he.tuple(he.Type.LOCATOR,s.anchoredLocator),children:je.sortMap(n,f=>f.value[1])};r.children.push(c)}return r.children=je.sortMap(r.children,s=>s.value[1]),r}var WC,Qct,Rct,Tct,iS=Ze(()=>{Ge();ql();WC=class{constructor(e){this.indexedFields=e;this.items=[];this.indexes={};this.clear()}clear(){this.items=[];for(let e of this.indexedFields)this.indexes[e]=new Map}insert(e){this.items.push(e);for(let r of this.indexedFields){let s=Object.hasOwn(e,r)?e[r]:void 0;if(typeof s>"u")continue;je.getArrayWithDefault(this.indexes[r],s).push(e)}return e}find(e){if(typeof e>"u")return this.items;let r=Object.entries(e);if(r.length===0)return this.items;let s=[],a;for(let[c,f]of r){let p=c,h=Object.hasOwn(this.indexes,p)?this.indexes[p]:void 0;if(typeof h>"u"){s.push([p,f]);continue}let E=new Set(h.get(f)??[]);if(E.size===0)return[];if(typeof a>"u")a=E;else for(let C of a)E.has(C)||a.delete(C);if(a.size===0)break}let n=[...a??[]];return s.length>0&&(n=n.filter(c=>{for(let[f,p]of s)if(!(typeof p<"u"?Object.hasOwn(c,f)&&c[f]===p:Object.hasOwn(c,f)===!1))return!1;return!0})),n}},Qct=/^[0-9]+$/,Rct=/^[a-zA-Z0-9_]+$/,Tct=new Set(["scripts",...Ut.allDependencies])});var Xye=_((CYt,m5)=>{var Oct;(function(t){var e=function(){return{"append/2":[new t.type.Rule(new t.type.Term("append",[new t.type.Var("X"),new t.type.Var("L")]),new t.type.Term("foldl",[new t.type.Term("append",[]),new t.type.Var("X"),new t.type.Term("[]",[]),new t.type.Var("L")]))],"append/3":[new t.type.Rule(new t.type.Term("append",[new t.type.Term("[]",[]),new t.type.Var("X"),new t.type.Var("X")]),null),new t.type.Rule(new t.type.Term("append",[new t.type.Term(".",[new t.type.Var("H"),new t.type.Var("T")]),new t.type.Var("X"),new t.type.Term(".",[new t.type.Var("H"),new t.type.Var("S")])]),new t.type.Term("append",[new t.type.Var("T"),new t.type.Var("X"),new t.type.Var("S")]))],"member/2":[new t.type.Rule(new t.type.Term("member",[new t.type.Var("X"),new t.type.Term(".",[new t.type.Var("X"),new t.type.Var("_")])]),null),new t.type.Rule(new t.type.Term("member",[new t.type.Var("X"),new t.type.Term(".",[new t.type.Var("_"),new t.type.Var("Xs")])]),new t.type.Term("member",[new t.type.Var("X"),new t.type.Var("Xs")]))],"permutation/2":[new t.type.Rule(new t.type.Term("permutation",[new t.type.Term("[]",[]),new t.type.Term("[]",[])]),null),new t.type.Rule(new t.type.Term("permutation",[new t.type.Term(".",[new t.type.Var("H"),new t.type.Var("T")]),new t.type.Var("S")]),new t.type.Term(",",[new t.type.Term("permutation",[new t.type.Var("T"),new t.type.Var("P")]),new t.type.Term(",",[new t.type.Term("append",[new t.type.Var("X"),new t.type.Var("Y"),new t.type.Var("P")]),new t.type.Term("append",[new t.type.Var("X"),new t.type.Term(".",[new t.type.Var("H"),new t.type.Var("Y")]),new t.type.Var("S")])])]))],"maplist/2":[new t.type.Rule(new t.type.Term("maplist",[new t.type.Var("_"),new t.type.Term("[]",[])]),null),new t.type.Rule(new t.type.Term("maplist",[new t.type.Var("P"),new t.type.Term(".",[new t.type.Var("X"),new t.type.Var("Xs")])]),new t.type.Term(",",[new t.type.Term("call",[new t.type.Var("P"),new t.type.Var("X")]),new t.type.Term("maplist",[new t.type.Var("P"),new t.type.Var("Xs")])]))],"maplist/3":[new t.type.Rule(new t.type.Term("maplist",[new t.type.Var("_"),new t.type.Term("[]",[]),new t.type.Term("[]",[])]),null),new t.type.Rule(new t.type.Term("maplist",[new t.type.Var("P"),new t.type.Term(".",[new t.type.Var("A"),new t.type.Var("As")]),new t.type.Term(".",[new t.type.Var("B"),new t.type.Var("Bs")])]),new t.type.Term(",",[new t.type.Term("call",[new t.type.Var("P"),new t.type.Var("A"),new t.type.Var("B")]),new t.type.Term("maplist",[new t.type.Var("P"),new t.type.Var("As"),new t.type.Var("Bs")])]))],"maplist/4":[new t.type.Rule(new t.type.Term("maplist",[new t.type.Var("_"),new t.type.Term("[]",[]),new t.type.Term("[]",[]),new t.type.Term("[]",[])]),null),new t.type.Rule(new t.type.Term("maplist",[new t.type.Var("P"),new t.type.Term(".",[new t.type.Var("A"),new t.type.Var("As")]),new t.type.Term(".",[new t.type.Var("B"),new t.type.Var("Bs")]),new t.type.Term(".",[new t.type.Var("C"),new t.type.Var("Cs")])]),new t.type.Term(",",[new t.type.Term("call",[new t.type.Var("P"),new t.type.Var("A"),new t.type.Var("B"),new t.type.Var("C")]),new t.type.Term("maplist",[new t.type.Var("P"),new t.type.Var("As"),new t.type.Var("Bs"),new t.type.Var("Cs")])]))],"maplist/5":[new t.type.Rule(new t.type.Term("maplist",[new t.type.Var("_"),new t.type.Term("[]",[]),new t.type.Term("[]",[]),new t.type.Term("[]",[]),new t.type.Term("[]",[])]),null),new t.type.Rule(new t.type.Term("maplist",[new t.type.Var("P"),new t.type.Term(".",[new t.type.Var("A"),new t.type.Var("As")]),new t.type.Term(".",[new t.type.Var("B"),new t.type.Var("Bs")]),new t.type.Term(".",[new t.type.Var("C"),new t.type.Var("Cs")]),new t.type.Term(".",[new t.type.Var("D"),new t.type.Var("Ds")])]),new t.type.Term(",",[new t.type.Term("call",[new t.type.Var("P"),new t.type.Var("A"),new t.type.Var("B"),new t.type.Var("C"),new t.type.Var("D")]),new t.type.Term("maplist",[new t.type.Var("P"),new t.type.Var("As"),new t.type.Var("Bs"),new t.type.Var("Cs"),new t.type.Var("Ds")])]))],"maplist/6":[new t.type.Rule(new t.type.Term("maplist",[new t.type.Var("_"),new t.type.Term("[]",[]),new t.type.Term("[]",[]),new t.type.Term("[]",[]),new t.type.Term("[]",[]),new t.type.Term("[]",[])]),null),new t.type.Rule(new t.type.Term("maplist",[new t.type.Var("P"),new t.type.Term(".",[new t.type.Var("A"),new t.type.Var("As")]),new t.type.Term(".",[new t.type.Var("B"),new t.type.Var("Bs")]),new t.type.Term(".",[new t.type.Var("C"),new t.type.Var("Cs")]),new t.type.Term(".",[new t.type.Var("D"),new t.type.Var("Ds")]),new t.type.Term(".",[new t.type.Var("E"),new t.type.Var("Es")])]),new t.type.Term(",",[new t.type.Term("call",[new t.type.Var("P"),new t.type.Var("A"),new t.type.Var("B"),new t.type.Var("C"),new t.type.Var("D"),new t.type.Var("E")]),new t.type.Term("maplist",[new t.type.Var("P"),new t.type.Var("As"),new t.type.Var("Bs"),new t.type.Var("Cs"),new t.type.Var("Ds"),new t.type.Var("Es")])]))],"maplist/7":[new t.type.Rule(new t.type.Term("maplist",[new t.type.Var("_"),new t.type.Term("[]",[]),new t.type.Term("[]",[]),new t.type.Term("[]",[]),new t.type.Term("[]",[]),new t.type.Term("[]",[]),new t.type.Term("[]",[])]),null),new t.type.Rule(new t.type.Term("maplist",[new t.type.Var("P"),new t.type.Term(".",[new t.type.Var("A"),new t.type.Var("As")]),new t.type.Term(".",[new t.type.Var("B"),new t.type.Var("Bs")]),new t.type.Term(".",[new t.type.Var("C"),new t.type.Var("Cs")]),new t.type.Term(".",[new t.type.Var("D"),new t.type.Var("Ds")]),new t.type.Term(".",[new t.type.Var("E"),new t.type.Var("Es")]),new t.type.Term(".",[new t.type.Var("F"),new t.type.Var("Fs")])]),new t.type.Term(",",[new t.type.Term("call",[new t.type.Var("P"),new t.type.Var("A"),new t.type.Var("B"),new t.type.Var("C"),new t.type.Var("D"),new t.type.Var("E"),new t.type.Var("F")]),new t.type.Term("maplist",[new t.type.Var("P"),new t.type.Var("As"),new t.type.Var("Bs"),new t.type.Var("Cs"),new t.type.Var("Ds"),new t.type.Var("Es"),new t.type.Var("Fs")])]))],"maplist/8":[new t.type.Rule(new t.type.Term("maplist",[new t.type.Var("_"),new t.type.Term("[]",[]),new t.type.Term("[]",[]),new t.type.Term("[]",[]),new t.type.Term("[]",[]),new t.type.Term("[]",[]),new t.type.Term("[]",[]),new t.type.Term("[]",[])]),null),new t.type.Rule(new t.type.Term("maplist",[new t.type.Var("P"),new t.type.Term(".",[new t.type.Var("A"),new t.type.Var("As")]),new t.type.Term(".",[new t.type.Var("B"),new t.type.Var("Bs")]),new t.type.Term(".",[new t.type.Var("C"),new t.type.Var("Cs")]),new t.type.Term(".",[new t.type.Var("D"),new t.type.Var("Ds")]),new t.type.Term(".",[new t.type.Var("E"),new t.type.Var("Es")]),new t.type.Term(".",[new t.type.Var("F"),new t.type.Var("Fs")]),new t.type.Term(".",[new t.type.Var("G"),new t.type.Var("Gs")])]),new t.type.Term(",",[new t.type.Term("call",[new t.type.Var("P"),new t.type.Var("A"),new t.type.Var("B"),new t.type.Var("C"),new t.type.Var("D"),new t.type.Var("E"),new t.type.Var("F"),new t.type.Var("G")]),new t.type.Term("maplist",[new t.type.Var("P"),new t.type.Var("As"),new t.type.Var("Bs"),new t.type.Var("Cs"),new t.type.Var("Ds"),new t.type.Var("Es"),new t.type.Var("Fs"),new t.type.Var("Gs")])]))],"include/3":[new t.type.Rule(new t.type.Term("include",[new t.type.Var("_"),new t.type.Term("[]",[]),new t.type.Term("[]",[])]),null),new t.type.Rule(new t.type.Term("include",[new t.type.Var("P"),new t.type.Term(".",[new t.type.Var("H"),new t.type.Var("T")]),new t.type.Var("L")]),new t.type.Term(",",[new t.type.Term("=..",[new t.type.Var("P"),new t.type.Var("A")]),new t.type.Term(",",[new t.type.Term("append",[new t.type.Var("A"),new t.type.Term(".",[new t.type.Var("H"),new t.type.Term("[]",[])]),new t.type.Var("B")]),new t.type.Term(",",[new t.type.Term("=..",[new t.type.Var("F"),new t.type.Var("B")]),new t.type.Term(",",[new t.type.Term(";",[new t.type.Term(",",[new t.type.Term("call",[new t.type.Var("F")]),new t.type.Term(",",[new t.type.Term("=",[new t.type.Var("L"),new t.type.Term(".",[new t.type.Var("H"),new t.type.Var("S")])]),new t.type.Term("!",[])])]),new t.type.Term("=",[new t.type.Var("L"),new t.type.Var("S")])]),new t.type.Term("include",[new t.type.Var("P"),new t.type.Var("T"),new t.type.Var("S")])])])])]))],"exclude/3":[new t.type.Rule(new t.type.Term("exclude",[new t.type.Var("_"),new t.type.Term("[]",[]),new t.type.Term("[]",[])]),null),new t.type.Rule(new t.type.Term("exclude",[new t.type.Var("P"),new t.type.Term(".",[new t.type.Var("H"),new t.type.Var("T")]),new t.type.Var("S")]),new t.type.Term(",",[new t.type.Term("exclude",[new t.type.Var("P"),new t.type.Var("T"),new t.type.Var("E")]),new t.type.Term(",",[new t.type.Term("=..",[new t.type.Var("P"),new t.type.Var("L")]),new t.type.Term(",",[new t.type.Term("append",[new t.type.Var("L"),new t.type.Term(".",[new t.type.Var("H"),new t.type.Term("[]",[])]),new t.type.Var("Q")]),new t.type.Term(",",[new t.type.Term("=..",[new t.type.Var("R"),new t.type.Var("Q")]),new t.type.Term(";",[new t.type.Term(",",[new t.type.Term("call",[new t.type.Var("R")]),new t.type.Term(",",[new t.type.Term("!",[]),new t.type.Term("=",[new t.type.Var("S"),new t.type.Var("E")])])]),new t.type.Term("=",[new t.type.Var("S"),new t.type.Term(".",[new t.type.Var("H"),new t.type.Var("E")])])])])])])]))],"foldl/4":[new t.type.Rule(new t.type.Term("foldl",[new t.type.Var("_"),new t.type.Term("[]",[]),new t.type.Var("I"),new t.type.Var("I")]),null),new t.type.Rule(new t.type.Term("foldl",[new t.type.Var("P"),new t.type.Term(".",[new t.type.Var("H"),new t.type.Var("T")]),new t.type.Var("I"),new t.type.Var("R")]),new t.type.Term(",",[new t.type.Term("=..",[new t.type.Var("P"),new t.type.Var("L")]),new t.type.Term(",",[new t.type.Term("append",[new t.type.Var("L"),new t.type.Term(".",[new t.type.Var("I"),new t.type.Term(".",[new t.type.Var("H"),new t.type.Term(".",[new t.type.Var("X"),new t.type.Term("[]",[])])])]),new t.type.Var("L2")]),new t.type.Term(",",[new t.type.Term("=..",[new t.type.Var("P2"),new t.type.Var("L2")]),new t.type.Term(",",[new t.type.Term("call",[new t.type.Var("P2")]),new t.type.Term("foldl",[new t.type.Var("P"),new t.type.Var("T"),new t.type.Var("X"),new t.type.Var("R")])])])])]))],"select/3":[new t.type.Rule(new t.type.Term("select",[new t.type.Var("E"),new t.type.Term(".",[new t.type.Var("E"),new t.type.Var("Xs")]),new t.type.Var("Xs")]),null),new t.type.Rule(new t.type.Term("select",[new t.type.Var("E"),new t.type.Term(".",[new t.type.Var("X"),new t.type.Var("Xs")]),new t.type.Term(".",[new t.type.Var("X"),new t.type.Var("Ys")])]),new t.type.Term("select",[new t.type.Var("E"),new t.type.Var("Xs"),new t.type.Var("Ys")]))],"sum_list/2":[new t.type.Rule(new t.type.Term("sum_list",[new t.type.Term("[]",[]),new t.type.Num(0,!1)]),null),new t.type.Rule(new t.type.Term("sum_list",[new t.type.Term(".",[new t.type.Var("X"),new t.type.Var("Xs")]),new t.type.Var("S")]),new t.type.Term(",",[new t.type.Term("sum_list",[new t.type.Var("Xs"),new t.type.Var("Y")]),new t.type.Term("is",[new t.type.Var("S"),new t.type.Term("+",[new t.type.Var("X"),new t.type.Var("Y")])])]))],"max_list/2":[new t.type.Rule(new t.type.Term("max_list",[new t.type.Term(".",[new t.type.Var("X"),new t.type.Term("[]",[])]),new t.type.Var("X")]),null),new t.type.Rule(new t.type.Term("max_list",[new t.type.Term(".",[new t.type.Var("X"),new t.type.Var("Xs")]),new t.type.Var("S")]),new t.type.Term(",",[new t.type.Term("max_list",[new t.type.Var("Xs"),new t.type.Var("Y")]),new t.type.Term(";",[new t.type.Term(",",[new t.type.Term(">=",[new t.type.Var("X"),new t.type.Var("Y")]),new t.type.Term(",",[new t.type.Term("=",[new t.type.Var("S"),new t.type.Var("X")]),new t.type.Term("!",[])])]),new t.type.Term("=",[new t.type.Var("S"),new t.type.Var("Y")])])]))],"min_list/2":[new t.type.Rule(new t.type.Term("min_list",[new t.type.Term(".",[new t.type.Var("X"),new t.type.Term("[]",[])]),new t.type.Var("X")]),null),new t.type.Rule(new t.type.Term("min_list",[new t.type.Term(".",[new t.type.Var("X"),new t.type.Var("Xs")]),new t.type.Var("S")]),new t.type.Term(",",[new t.type.Term("min_list",[new t.type.Var("Xs"),new t.type.Var("Y")]),new t.type.Term(";",[new t.type.Term(",",[new t.type.Term("=<",[new t.type.Var("X"),new t.type.Var("Y")]),new t.type.Term(",",[new t.type.Term("=",[new t.type.Var("S"),new t.type.Var("X")]),new t.type.Term("!",[])])]),new t.type.Term("=",[new t.type.Var("S"),new t.type.Var("Y")])])]))],"prod_list/2":[new t.type.Rule(new t.type.Term("prod_list",[new t.type.Term("[]",[]),new t.type.Num(1,!1)]),null),new t.type.Rule(new t.type.Term("prod_list",[new t.type.Term(".",[new t.type.Var("X"),new t.type.Var("Xs")]),new t.type.Var("S")]),new t.type.Term(",",[new t.type.Term("prod_list",[new t.type.Var("Xs"),new t.type.Var("Y")]),new t.type.Term("is",[new t.type.Var("S"),new t.type.Term("*",[new t.type.Var("X"),new t.type.Var("Y")])])]))],"last/2":[new t.type.Rule(new t.type.Term("last",[new t.type.Term(".",[new t.type.Var("X"),new t.type.Term("[]",[])]),new t.type.Var("X")]),null),new t.type.Rule(new t.type.Term("last",[new t.type.Term(".",[new t.type.Var("_"),new t.type.Var("Xs")]),new t.type.Var("X")]),new t.type.Term("last",[new t.type.Var("Xs"),new t.type.Var("X")]))],"prefix/2":[new t.type.Rule(new t.type.Term("prefix",[new t.type.Var("Part"),new t.type.Var("Whole")]),new t.type.Term("append",[new t.type.Var("Part"),new t.type.Var("_"),new t.type.Var("Whole")]))],"nth0/3":[new t.type.Rule(new t.type.Term("nth0",[new t.type.Var("X"),new t.type.Var("Y"),new t.type.Var("Z")]),new t.type.Term(";",[new t.type.Term("->",[new t.type.Term("var",[new t.type.Var("X")]),new t.type.Term("nth",[new t.type.Num(0,!1),new t.type.Var("X"),new t.type.Var("Y"),new t.type.Var("Z"),new t.type.Var("_")])]),new t.type.Term(",",[new t.type.Term(">=",[new t.type.Var("X"),new t.type.Num(0,!1)]),new t.type.Term(",",[new t.type.Term("nth",[new t.type.Num(0,!1),new t.type.Var("X"),new t.type.Var("Y"),new t.type.Var("Z"),new t.type.Var("_")]),new t.type.Term("!",[])])])]))],"nth1/3":[new t.type.Rule(new t.type.Term("nth1",[new t.type.Var("X"),new t.type.Var("Y"),new t.type.Var("Z")]),new t.type.Term(";",[new t.type.Term("->",[new t.type.Term("var",[new t.type.Var("X")]),new t.type.Term("nth",[new t.type.Num(1,!1),new t.type.Var("X"),new t.type.Var("Y"),new t.type.Var("Z"),new t.type.Var("_")])]),new t.type.Term(",",[new t.type.Term(">",[new t.type.Var("X"),new t.type.Num(0,!1)]),new t.type.Term(",",[new t.type.Term("nth",[new t.type.Num(1,!1),new t.type.Var("X"),new t.type.Var("Y"),new t.type.Var("Z"),new t.type.Var("_")]),new t.type.Term("!",[])])])]))],"nth0/4":[new t.type.Rule(new t.type.Term("nth0",[new t.type.Var("X"),new t.type.Var("Y"),new t.type.Var("Z"),new t.type.Var("W")]),new t.type.Term(";",[new t.type.Term("->",[new t.type.Term("var",[new t.type.Var("X")]),new t.type.Term("nth",[new t.type.Num(0,!1),new t.type.Var("X"),new t.type.Var("Y"),new t.type.Var("Z"),new t.type.Var("W")])]),new t.type.Term(",",[new t.type.Term(">=",[new t.type.Var("X"),new t.type.Num(0,!1)]),new t.type.Term(",",[new t.type.Term("nth",[new t.type.Num(0,!1),new t.type.Var("X"),new t.type.Var("Y"),new t.type.Var("Z"),new t.type.Var("W")]),new t.type.Term("!",[])])])]))],"nth1/4":[new t.type.Rule(new t.type.Term("nth1",[new t.type.Var("X"),new t.type.Var("Y"),new t.type.Var("Z"),new t.type.Var("W")]),new t.type.Term(";",[new t.type.Term("->",[new t.type.Term("var",[new t.type.Var("X")]),new t.type.Term("nth",[new t.type.Num(1,!1),new t.type.Var("X"),new t.type.Var("Y"),new t.type.Var("Z"),new t.type.Var("W")])]),new t.type.Term(",",[new t.type.Term(">",[new t.type.Var("X"),new t.type.Num(0,!1)]),new t.type.Term(",",[new t.type.Term("nth",[new t.type.Num(1,!1),new t.type.Var("X"),new t.type.Var("Y"),new t.type.Var("Z"),new t.type.Var("W")]),new t.type.Term("!",[])])])]))],"nth/5":[new t.type.Rule(new t.type.Term("nth",[new t.type.Var("N"),new t.type.Var("N"),new t.type.Term(".",[new t.type.Var("X"),new t.type.Var("Xs")]),new t.type.Var("X"),new t.type.Var("Xs")]),null),new t.type.Rule(new t.type.Term("nth",[new t.type.Var("N"),new t.type.Var("O"),new t.type.Term(".",[new t.type.Var("X"),new t.type.Var("Xs")]),new t.type.Var("Y"),new t.type.Term(".",[new t.type.Var("X"),new t.type.Var("Ys")])]),new t.type.Term(",",[new t.type.Term("is",[new t.type.Var("M"),new t.type.Term("+",[new t.type.Var("N"),new t.type.Num(1,!1)])]),new t.type.Term("nth",[new t.type.Var("M"),new t.type.Var("O"),new t.type.Var("Xs"),new t.type.Var("Y"),new t.type.Var("Ys")])]))],"length/2":function(s,a,n){var c=n.args[0],f=n.args[1];if(!t.type.is_variable(f)&&!t.type.is_integer(f))s.throw_error(t.error.type("integer",f,n.indicator));else if(t.type.is_integer(f)&&f.value<0)s.throw_error(t.error.domain("not_less_than_zero",f,n.indicator));else{var p=new t.type.Term("length",[c,new t.type.Num(0,!1),f]);t.type.is_integer(f)&&(p=new t.type.Term(",",[p,new t.type.Term("!",[])])),s.prepend([new t.type.State(a.goal.replace(p),a.substitution,a)])}},"length/3":[new t.type.Rule(new t.type.Term("length",[new t.type.Term("[]",[]),new t.type.Var("N"),new t.type.Var("N")]),null),new t.type.Rule(new t.type.Term("length",[new t.type.Term(".",[new t.type.Var("_"),new t.type.Var("X")]),new t.type.Var("A"),new t.type.Var("N")]),new t.type.Term(",",[new t.type.Term("succ",[new t.type.Var("A"),new t.type.Var("B")]),new t.type.Term("length",[new t.type.Var("X"),new t.type.Var("B"),new t.type.Var("N")])]))],"replicate/3":function(s,a,n){var c=n.args[0],f=n.args[1],p=n.args[2];if(t.type.is_variable(f))s.throw_error(t.error.instantiation(n.indicator));else if(!t.type.is_integer(f))s.throw_error(t.error.type("integer",f,n.indicator));else if(f.value<0)s.throw_error(t.error.domain("not_less_than_zero",f,n.indicator));else if(!t.type.is_variable(p)&&!t.type.is_list(p))s.throw_error(t.error.type("list",p,n.indicator));else{for(var h=new t.type.Term("[]"),E=0;E0;C--)E[C].equals(E[C-1])&&E.splice(C,1);for(var S=new t.type.Term("[]"),C=E.length-1;C>=0;C--)S=new t.type.Term(".",[E[C],S]);s.prepend([new t.type.State(a.goal.replace(new t.type.Term("=",[S,f])),a.substitution,a)])}}},"msort/2":function(s,a,n){var c=n.args[0],f=n.args[1];if(t.type.is_variable(c))s.throw_error(t.error.instantiation(n.indicator));else if(!t.type.is_variable(f)&&!t.type.is_fully_list(f))s.throw_error(t.error.type("list",f,n.indicator));else{for(var p=[],h=c;h.indicator==="./2";)p.push(h.args[0]),h=h.args[1];if(t.type.is_variable(h))s.throw_error(t.error.instantiation(n.indicator));else if(!t.type.is_empty_list(h))s.throw_error(t.error.type("list",c,n.indicator));else{for(var E=p.sort(t.compare),C=new t.type.Term("[]"),S=E.length-1;S>=0;S--)C=new t.type.Term(".",[E[S],C]);s.prepend([new t.type.State(a.goal.replace(new t.type.Term("=",[C,f])),a.substitution,a)])}}},"keysort/2":function(s,a,n){var c=n.args[0],f=n.args[1];if(t.type.is_variable(c))s.throw_error(t.error.instantiation(n.indicator));else if(!t.type.is_variable(f)&&!t.type.is_fully_list(f))s.throw_error(t.error.type("list",f,n.indicator));else{for(var p=[],h,E=c;E.indicator==="./2";){if(h=E.args[0],t.type.is_variable(h)){s.throw_error(t.error.instantiation(n.indicator));return}else if(!t.type.is_term(h)||h.indicator!=="-/2"){s.throw_error(t.error.type("pair",h,n.indicator));return}h.args[0].pair=h.args[1],p.push(h.args[0]),E=E.args[1]}if(t.type.is_variable(E))s.throw_error(t.error.instantiation(n.indicator));else if(!t.type.is_empty_list(E))s.throw_error(t.error.type("list",c,n.indicator));else{for(var C=p.sort(t.compare),S=new t.type.Term("[]"),b=C.length-1;b>=0;b--)S=new t.type.Term(".",[new t.type.Term("-",[C[b],C[b].pair]),S]),delete C[b].pair;s.prepend([new t.type.State(a.goal.replace(new t.type.Term("=",[S,f])),a.substitution,a)])}}},"take/3":function(s,a,n){var c=n.args[0],f=n.args[1],p=n.args[2];if(t.type.is_variable(f)||t.type.is_variable(c))s.throw_error(t.error.instantiation(n.indicator));else if(!t.type.is_list(f))s.throw_error(t.error.type("list",f,n.indicator));else if(!t.type.is_integer(c))s.throw_error(t.error.type("integer",c,n.indicator));else if(!t.type.is_variable(p)&&!t.type.is_list(p))s.throw_error(t.error.type("list",p,n.indicator));else{for(var h=c.value,E=[],C=f;h>0&&C.indicator==="./2";)E.push(C.args[0]),C=C.args[1],h--;if(h===0){for(var S=new t.type.Term("[]"),h=E.length-1;h>=0;h--)S=new t.type.Term(".",[E[h],S]);s.prepend([new t.type.State(a.goal.replace(new t.type.Term("=",[S,p])),a.substitution,a)])}}},"drop/3":function(s,a,n){var c=n.args[0],f=n.args[1],p=n.args[2];if(t.type.is_variable(f)||t.type.is_variable(c))s.throw_error(t.error.instantiation(n.indicator));else if(!t.type.is_list(f))s.throw_error(t.error.type("list",f,n.indicator));else if(!t.type.is_integer(c))s.throw_error(t.error.type("integer",c,n.indicator));else if(!t.type.is_variable(p)&&!t.type.is_list(p))s.throw_error(t.error.type("list",p,n.indicator));else{for(var h=c.value,E=[],C=f;h>0&&C.indicator==="./2";)E.push(C.args[0]),C=C.args[1],h--;h===0&&s.prepend([new t.type.State(a.goal.replace(new t.type.Term("=",[C,p])),a.substitution,a)])}},"reverse/2":function(s,a,n){var c=n.args[0],f=n.args[1],p=t.type.is_instantiated_list(c),h=t.type.is_instantiated_list(f);if(t.type.is_variable(c)&&t.type.is_variable(f))s.throw_error(t.error.instantiation(n.indicator));else if(!t.type.is_variable(c)&&!t.type.is_fully_list(c))s.throw_error(t.error.type("list",c,n.indicator));else if(!t.type.is_variable(f)&&!t.type.is_fully_list(f))s.throw_error(t.error.type("list",f,n.indicator));else if(!p&&!h)s.throw_error(t.error.instantiation(n.indicator));else{for(var E=p?c:f,C=new t.type.Term("[]",[]);E.indicator==="./2";)C=new t.type.Term(".",[E.args[0],C]),E=E.args[1];s.prepend([new t.type.State(a.goal.replace(new t.type.Term("=",[C,p?f:c])),a.substitution,a)])}},"list_to_set/2":function(s,a,n){var c=n.args[0],f=n.args[1];if(t.type.is_variable(c))s.throw_error(t.error.instantiation(n.indicator));else{for(var p=c,h=[];p.indicator==="./2";)h.push(p.args[0]),p=p.args[1];if(t.type.is_variable(p))s.throw_error(t.error.instantiation(n.indicator));else if(!t.type.is_term(p)||p.indicator!=="[]/0")s.throw_error(t.error.type("list",c,n.indicator));else{for(var E=[],C=new t.type.Term("[]",[]),S,b=0;b=0;b--)C=new t.type.Term(".",[E[b],C]);s.prepend([new t.type.State(a.goal.replace(new t.type.Term("=",[f,C])),a.substitution,a)])}}}}},r=["append/2","append/3","member/2","permutation/2","maplist/2","maplist/3","maplist/4","maplist/5","maplist/6","maplist/7","maplist/8","include/3","exclude/3","foldl/4","sum_list/2","max_list/2","min_list/2","prod_list/2","last/2","prefix/2","nth0/3","nth1/3","nth0/4","nth1/4","length/2","replicate/3","select/3","sort/2","msort/2","keysort/2","take/3","drop/3","reverse/2","list_to_set/2"];typeof m5<"u"?m5.exports=function(s){t=s,new t.type.Module("lists",e(),r)}:new t.type.Module("lists",e(),r)})(Oct)});var pEe=_($r=>{"use strict";var Pm=process.platform==="win32",y5="aes-256-cbc",Lct="sha256",tEe="The current environment doesn't support interactive reading from TTY.",si=Ie("fs"),$ye=process.binding("tty_wrap").TTY,I5=Ie("child_process"),V0=Ie("path"),C5={prompt:"> ",hideEchoBack:!1,mask:"*",limit:[],limitMessage:"Input another, please.$<( [)limit(])>",defaultInput:"",trueValue:[],falseValue:[],caseSensitive:!1,keepWhitespace:!1,encoding:"utf8",bufferSize:1024,print:void 0,history:!0,cd:!1,phContent:void 0,preCheck:void 0},Zp="none",Xu,VC,eEe=!1,Y0,sF,E5,Mct=0,D5="",Dm=[],oF,rEe=!1,w5=!1,sS=!1;function nEe(t){function e(r){return r.replace(/[^\w\u0080-\uFFFF]/g,function(s){return"#"+s.charCodeAt(0)+";"})}return sF.concat(function(r){var s=[];return Object.keys(r).forEach(function(a){r[a]==="boolean"?t[a]&&s.push("--"+a):r[a]==="string"&&t[a]&&s.push("--"+a,e(t[a]))}),s}({display:"string",displayOnly:"boolean",keyIn:"boolean",hideEchoBack:"boolean",mask:"string",limit:"string",caseSensitive:"boolean"}))}function Uct(t,e){function r(U){var W,ee="",ie;for(E5=E5||Ie("os").tmpdir();;){W=V0.join(E5,U+ee);try{ie=si.openSync(W,"wx")}catch(ue){if(ue.code==="EEXIST"){ee++;continue}else throw ue}si.closeSync(ie);break}return W}var s,a,n,c={},f,p,h=r("readline-sync.stdout"),E=r("readline-sync.stderr"),C=r("readline-sync.exit"),S=r("readline-sync.done"),b=Ie("crypto"),I,T,N;I=b.createHash(Lct),I.update(""+process.pid+Mct+++Math.random()),N=I.digest("hex"),T=b.createDecipher(y5,N),s=nEe(t),Pm?(a=process.env.ComSpec||"cmd.exe",process.env.Q='"',n=["/V:ON","/S","/C","(%Q%"+a+"%Q% /V:ON /S /C %Q%%Q%"+Y0+"%Q%"+s.map(function(U){return" %Q%"+U+"%Q%"}).join("")+" & (echo !ERRORLEVEL!)>%Q%"+C+"%Q%%Q%) 2>%Q%"+E+"%Q% |%Q%"+process.execPath+"%Q% %Q%"+__dirname+"\\encrypt.js%Q% %Q%"+y5+"%Q% %Q%"+N+"%Q% >%Q%"+h+"%Q% & (echo 1)>%Q%"+S+"%Q%"]):(a="/bin/sh",n=["-c",'("'+Y0+'"'+s.map(function(U){return" '"+U.replace(/'/g,"'\\''")+"'"}).join("")+'; echo $?>"'+C+'") 2>"'+E+'" |"'+process.execPath+'" "'+__dirname+'/encrypt.js" "'+y5+'" "'+N+'" >"'+h+'"; echo 1 >"'+S+'"']),sS&&sS("_execFileSync",s);try{I5.spawn(a,n,e)}catch(U){c.error=new Error(U.message),c.error.method="_execFileSync - spawn",c.error.program=a,c.error.args=n}for(;si.readFileSync(S,{encoding:t.encoding}).trim()!=="1";);return(f=si.readFileSync(C,{encoding:t.encoding}).trim())==="0"?c.input=T.update(si.readFileSync(h,{encoding:"binary"}),"hex",t.encoding)+T.final(t.encoding):(p=si.readFileSync(E,{encoding:t.encoding}).trim(),c.error=new Error(tEe+(p?` `+p:"")),c.error.method="_execFileSync",c.error.program=a,c.error.args=n,c.error.extMessage=p,c.error.exitCode=+f),si.unlinkSync(h),si.unlinkSync(E),si.unlinkSync(C),si.unlinkSync(S),c}function _ct(t){var e,r={},s,a={env:process.env,encoding:t.encoding};if(Y0||(Pm?process.env.PSModulePath?(Y0="powershell.exe",sF=["-ExecutionPolicy","Bypass","-File",__dirname+"\\read.ps1"]):(Y0="cscript.exe",sF=["//nologo",__dirname+"\\read.cs.js"]):(Y0="/bin/sh",sF=[__dirname+"/read.sh"])),Pm&&!process.env.PSModulePath&&(a.stdio=[process.stdin]),I5.execFileSync){e=nEe(t),sS&&sS("execFileSync",e);try{r.input=I5.execFileSync(Y0,e,a)}catch(n){s=n.stderr?(n.stderr+"").trim():"",r.error=new Error(tEe+(s?` `+s:"")),r.error.method="execFileSync",r.error.program=Y0,r.error.args=e,r.error.extMessage=s,r.error.exitCode=n.status,r.error.code=n.code,r.error.signal=n.signal}}else r=Uct(t,a);return r.error||(r.input=r.input.replace(/^\s*'|'\s*$/g,""),t.display=""),r}function B5(t){var e="",r=t.display,s=!t.display&&t.keyIn&&t.hideEchoBack&&!t.mask;function a(){var n=_ct(t);if(n.error)throw n.error;return n.input}return w5&&w5(t),function(){var n,c,f;function p(){return n||(n=process.binding("fs"),c=process.binding("constants")),n}if(typeof Zp=="string")if(Zp=null,Pm){if(f=function(h){var E=h.replace(/^\D+/,"").split("."),C=0;return(E[0]=+E[0])&&(C+=E[0]*1e4),(E[1]=+E[1])&&(C+=E[1]*100),(E[2]=+E[2])&&(C+=E[2]),C}(process.version),!(f>=20302&&f<40204||f>=5e4&&f<50100||f>=50600&&f<60200)&&process.stdin.isTTY)process.stdin.pause(),Zp=process.stdin.fd,VC=process.stdin._handle;else try{Zp=p().open("CONIN$",c.O_RDWR,parseInt("0666",8)),VC=new $ye(Zp,!0)}catch{}if(process.stdout.isTTY)Xu=process.stdout.fd;else{try{Xu=si.openSync("\\\\.\\CON","w")}catch{}if(typeof Xu!="number")try{Xu=p().open("CONOUT$",c.O_RDWR,parseInt("0666",8))}catch{}}}else{if(process.stdin.isTTY){process.stdin.pause();try{Zp=si.openSync("/dev/tty","r"),VC=process.stdin._handle}catch{}}else try{Zp=si.openSync("/dev/tty","r"),VC=new $ye(Zp,!1)}catch{}if(process.stdout.isTTY)Xu=process.stdout.fd;else try{Xu=si.openSync("/dev/tty","w")}catch{}}}(),function(){var n,c,f=!t.hideEchoBack&&!t.keyIn,p,h,E,C,S;oF="";function b(I){return I===eEe?!0:VC.setRawMode(I)!==0?!1:(eEe=I,!0)}if(rEe||!VC||typeof Xu!="number"&&(t.display||!f)){e=a();return}if(t.display&&(si.writeSync(Xu,t.display),t.display=""),!t.displayOnly){if(!b(!f)){e=a();return}for(h=t.keyIn?1:t.bufferSize,p=Buffer.allocUnsafe&&Buffer.alloc?Buffer.alloc(h):new Buffer(h),t.keyIn&&t.limit&&(c=new RegExp("[^"+t.limit+"]","g"+(t.caseSensitive?"":"i")));;){E=0;try{E=si.readSync(Zp,p,0,h)}catch(I){if(I.code!=="EOF"){b(!1),e+=a();return}}if(E>0?(C=p.toString(t.encoding,0,E),oF+=C):(C=` `,oF+="\0"),C&&typeof(S=(C.match(/^(.*?)[\r\n]/)||[])[1])=="string"&&(C=S,n=!0),C&&(C=C.replace(/[\x00-\x08\x0b\x0c\x0e-\x1f\x7f]/g,"")),C&&c&&(C=C.replace(c,"")),C&&(f||(t.hideEchoBack?t.mask&&si.writeSync(Xu,new Array(C.length+1).join(t.mask)):si.writeSync(Xu,C)),e+=C),!t.keyIn&&n||t.keyIn&&e.length>=h)break}!f&&!s&&si.writeSync(Xu,` `),b(!1)}}(),t.print&&!s&&t.print(r+(t.displayOnly?"":(t.hideEchoBack?new Array(e.length+1).join(t.mask):e)+` `),t.encoding),t.displayOnly?"":D5=t.keepWhitespace||t.keyIn?e:e.trim()}function Hct(t,e){var r=[];function s(a){a!=null&&(Array.isArray(a)?a.forEach(s):(!e||e(a))&&r.push(a))}return s(t),r}function P5(t){return t.replace(/[\x00-\x7f]/g,function(e){return"\\x"+("00"+e.charCodeAt().toString(16)).substr(-2)})}function Vs(){var t=Array.prototype.slice.call(arguments),e,r;return t.length&&typeof t[0]=="boolean"&&(r=t.shift(),r&&(e=Object.keys(C5),t.unshift(C5))),t.reduce(function(s,a){return a==null||(a.hasOwnProperty("noEchoBack")&&!a.hasOwnProperty("hideEchoBack")&&(a.hideEchoBack=a.noEchoBack,delete a.noEchoBack),a.hasOwnProperty("noTrim")&&!a.hasOwnProperty("keepWhitespace")&&(a.keepWhitespace=a.noTrim,delete a.noTrim),r||(e=Object.keys(a)),e.forEach(function(n){var c;if(a.hasOwnProperty(n))switch(c=a[n],n){case"mask":case"limitMessage":case"defaultInput":case"encoding":c=c!=null?c+"":"",c&&n!=="limitMessage"&&(c=c.replace(/[\r\n]/g,"")),s[n]=c;break;case"bufferSize":!isNaN(c=parseInt(c,10))&&typeof c=="number"&&(s[n]=c);break;case"displayOnly":case"keyIn":case"hideEchoBack":case"caseSensitive":case"keepWhitespace":case"history":case"cd":s[n]=!!c;break;case"limit":case"trueValue":case"falseValue":s[n]=Hct(c,function(f){var p=typeof f;return p==="string"||p==="number"||p==="function"||f instanceof RegExp}).map(function(f){return typeof f=="string"?f.replace(/[\r\n]/g,""):f});break;case"print":case"phContent":case"preCheck":s[n]=typeof c=="function"?c:void 0;break;case"prompt":case"display":s[n]=c??"";break}})),s},{})}function v5(t,e,r){return e.some(function(s){var a=typeof s;return a==="string"?r?t===s:t.toLowerCase()===s.toLowerCase():a==="number"?parseFloat(t)===s:a==="function"?s(t):s instanceof RegExp?s.test(t):!1})}function b5(t,e){var r=V0.normalize(Pm?(process.env.HOMEDRIVE||"")+(process.env.HOMEPATH||""):process.env.HOME||"").replace(/[\/\\]+$/,"");return t=V0.normalize(t),e?t.replace(/^~(?=\/|\\|$)/,r):t.replace(new RegExp("^"+P5(r)+"(?=\\/|\\\\|$)",Pm?"i":""),"~")}function JC(t,e){var r="(?:\\(([\\s\\S]*?)\\))?(\\w+|.-.)(?:\\(([\\s\\S]*?)\\))?",s=new RegExp("(\\$)?(\\$<"+r+">)","g"),a=new RegExp("(\\$)?(\\$\\{"+r+"\\})","g");function n(c,f,p,h,E,C){var S;return f||typeof(S=e(E))!="string"?p:S?(h||"")+S+(C||""):""}return t.replace(s,n).replace(a,n)}function iEe(t,e,r){var s,a=[],n=-1,c=0,f="",p;function h(E,C){return C.length>3?(E.push(C[0]+"..."+C[C.length-1]),p=!0):C.length&&(E=E.concat(C)),E}return s=t.reduce(function(E,C){return E.concat((C+"").split(""))},[]).reduce(function(E,C){var S,b;return e||(C=C.toLowerCase()),S=/^\d$/.test(C)?1:/^[A-Z]$/.test(C)?2:/^[a-z]$/.test(C)?3:0,r&&S===0?f+=C:(b=C.charCodeAt(0),S&&S===n&&b===c+1?a.push(C):(E=h(E,a),a=[C],n=S),c=b),E},[]),s=h(s,a),f&&(s.push(f),p=!0),{values:s,suppressed:p}}function sEe(t,e){return t.join(t.length>2?", ":e?" / ":"/")}function oEe(t,e){var r,s,a={},n;if(e.phContent&&(r=e.phContent(t,e)),typeof r!="string")switch(t){case"hideEchoBack":case"mask":case"defaultInput":case"caseSensitive":case"keepWhitespace":case"encoding":case"bufferSize":case"history":case"cd":r=e.hasOwnProperty(t)?typeof e[t]=="boolean"?e[t]?"on":"off":e[t]+"":"";break;case"limit":case"trueValue":case"falseValue":s=e[e.hasOwnProperty(t+"Src")?t+"Src":t],e.keyIn?(a=iEe(s,e.caseSensitive),s=a.values):s=s.filter(function(c){var f=typeof c;return f==="string"||f==="number"}),r=sEe(s,a.suppressed);break;case"limitCount":case"limitCountNotZero":r=e[e.hasOwnProperty("limitSrc")?"limitSrc":"limit"].length,r=r||t!=="limitCountNotZero"?r+"":"";break;case"lastInput":r=D5;break;case"cwd":case"CWD":case"cwdHome":r=process.cwd(),t==="CWD"?r=V0.basename(r):t==="cwdHome"&&(r=b5(r));break;case"date":case"time":case"localeDate":case"localeTime":r=new Date()["to"+t.replace(/^./,function(c){return c.toUpperCase()})+"String"]();break;default:typeof(n=(t.match(/^history_m(\d+)$/)||[])[1])=="string"&&(r=Dm[Dm.length-n]||"")}return r}function aEe(t){var e=/^(.)-(.)$/.exec(t),r="",s,a,n,c;if(!e)return null;for(s=e[1].charCodeAt(0),a=e[2].charCodeAt(0),c=s And the length must be: $`,trueValue:null,falseValue:null,caseSensitive:!0},e,{history:!1,cd:!1,phContent:function(b){return b==="charlist"?r.text:b==="length"?s+"..."+a:null}}),c,f,p,h,E,C,S;for(e=e||{},c=JC(e.charlist?e.charlist+"":"$",aEe),(isNaN(s=parseInt(e.min,10))||typeof s!="number")&&(s=12),(isNaN(a=parseInt(e.max,10))||typeof a!="number")&&(a=24),h=new RegExp("^["+P5(c)+"]{"+s+","+a+"}$"),r=iEe([c],n.caseSensitive,!0),r.text=sEe(r.values,r.suppressed),f=e.confirmMessage!=null?e.confirmMessage:"Reinput a same one to confirm it: ",p=e.unmatchMessage!=null?e.unmatchMessage:"It differs from first one. Hit only the Enter key if you want to retry from first one.",t==null&&(t="Input new password: "),E=n.limitMessage;!S;)n.limit=h,n.limitMessage=E,C=$r.question(t,n),n.limit=[C,""],n.limitMessage=p,S=$r.question(f,n);return C};function uEe(t,e,r){var s;function a(n){return s=r(n),!isNaN(s)&&typeof s=="number"}return $r.question(t,Vs({limitMessage:"Input valid number, please."},e,{limit:a,cd:!1})),s}$r.questionInt=function(t,e){return uEe(t,e,function(r){return parseInt(r,10)})};$r.questionFloat=function(t,e){return uEe(t,e,parseFloat)};$r.questionPath=function(t,e){var r,s="",a=Vs({hideEchoBack:!1,limitMessage:`$Input valid path, please.$<( Min:)min>$<( Max:)max>`,history:!0,cd:!0},e,{keepWhitespace:!1,limit:function(n){var c,f,p;n=b5(n,!0),s="";function h(E){E.split(/\/|\\/).reduce(function(C,S){var b=V0.resolve(C+=S+V0.sep);if(!si.existsSync(b))si.mkdirSync(b);else if(!si.statSync(b).isDirectory())throw new Error("Non directory already exists: "+b);return C},"")}try{if(c=si.existsSync(n),r=c?si.realpathSync(n):V0.resolve(n),!e.hasOwnProperty("exists")&&!c||typeof e.exists=="boolean"&&e.exists!==c)return s=(c?"Already exists":"No such file or directory")+": "+r,!1;if(!c&&e.create&&(e.isDirectory?h(r):(h(V0.dirname(r)),si.closeSync(si.openSync(r,"w"))),r=si.realpathSync(r)),c&&(e.min||e.max||e.isFile||e.isDirectory)){if(f=si.statSync(r),e.isFile&&!f.isFile())return s="Not file: "+r,!1;if(e.isDirectory&&!f.isDirectory())return s="Not directory: "+r,!1;if(e.min&&f.size<+e.min||e.max&&f.size>+e.max)return s="Size "+f.size+" is out of range: "+r,!1}if(typeof e.validate=="function"&&(p=e.validate(r))!==!0)return typeof p=="string"&&(s=p),!1}catch(E){return s=E+"",!1}return!0},phContent:function(n){return n==="error"?s:n!=="min"&&n!=="max"?null:e.hasOwnProperty(n)?e[n]+"":""}});return e=e||{},t==null&&(t='Input path (you can "cd" and "pwd"): '),$r.question(t,a),r};function fEe(t,e){var r={},s={};return typeof t=="object"?(Object.keys(t).forEach(function(a){typeof t[a]=="function"&&(s[e.caseSensitive?a:a.toLowerCase()]=t[a])}),r.preCheck=function(a){var n;return r.args=S5(a),n=r.args[0]||"",e.caseSensitive||(n=n.toLowerCase()),r.hRes=n!=="_"&&s.hasOwnProperty(n)?s[n].apply(a,r.args.slice(1)):s.hasOwnProperty("_")?s._.apply(a,r.args):null,{res:a,forceNext:!1}},s.hasOwnProperty("_")||(r.limit=function(){var a=r.args[0]||"";return e.caseSensitive||(a=a.toLowerCase()),s.hasOwnProperty(a)})):r.preCheck=function(a){return r.args=S5(a),r.hRes=typeof t=="function"?t.apply(a,r.args):!0,{res:a,forceNext:!1}},r}$r.promptCL=function(t,e){var r=Vs({hideEchoBack:!1,limitMessage:"Requested command is not available.",caseSensitive:!1,history:!0},e),s=fEe(t,r);return r.limit=s.limit,r.preCheck=s.preCheck,$r.prompt(r),s.args};$r.promptLoop=function(t,e){for(var r=Vs({hideEchoBack:!1,trueValue:null,falseValue:null,caseSensitive:!1,history:!0},e);!t($r.prompt(r)););};$r.promptCLLoop=function(t,e){var r=Vs({hideEchoBack:!1,limitMessage:"Requested command is not available.",caseSensitive:!1,history:!0},e),s=fEe(t,r);for(r.limit=s.limit,r.preCheck=s.preCheck;$r.prompt(r),!s.hRes;);};$r.promptSimShell=function(t){return $r.prompt(Vs({hideEchoBack:!1,history:!0},t,{prompt:function(){return Pm?"$>":(process.env.USER||"")+(process.env.HOSTNAME?"@"+process.env.HOSTNAME.replace(/\..*$/,""):"")+":$$ "}()}))};function AEe(t,e,r){var s;return t==null&&(t="Are you sure? "),(!e||e.guide!==!1)&&(t+="")&&(t=t.replace(/\s*:?\s*$/,"")+" [y/n]: "),s=$r.keyIn(t,Vs(e,{hideEchoBack:!1,limit:r,trueValue:"y",falseValue:"n",caseSensitive:!1})),typeof s=="boolean"?s:""}$r.keyInYN=function(t,e){return AEe(t,e)};$r.keyInYNStrict=function(t,e){return AEe(t,e,"yn")};$r.keyInPause=function(t,e){t==null&&(t="Continue..."),(!e||e.guide!==!1)&&(t+="")&&(t=t.replace(/\s+$/,"")+" (Hit any key)"),$r.keyIn(t,Vs({limit:null},e,{hideEchoBack:!0,mask:""}))};$r.keyInSelect=function(t,e,r){var s=Vs({hideEchoBack:!1},r,{trueValue:null,falseValue:null,caseSensitive:!1,phContent:function(p){return p==="itemsCount"?t.length+"":p==="firstItem"?(t[0]+"").trim():p==="lastItem"?(t[t.length-1]+"").trim():null}}),a="",n={},c=49,f=` `;if(!Array.isArray(t)||!t.length||t.length>35)throw"`items` must be Array (max length: 35).";return t.forEach(function(p,h){var E=String.fromCharCode(c);a+=E,n[E]=h,f+="["+E+"] "+(p+"").trim()+` `,c=c===57?97:c+1}),(!r||r.cancel!==!1)&&(a+="0",n[0]=-1,f+="[0] "+(r&&r.cancel!=null&&typeof r.cancel!="boolean"?(r.cancel+"").trim():"CANCEL")+` `),s.limit=a,f+=` `,e==null&&(e="Choose one from list: "),(e+="")&&((!r||r.guide!==!1)&&(e=e.replace(/\s*:?\s*$/,"")+" [$]: "),f+=e),n[$r.keyIn(f,s).toLowerCase()]};$r.getRawInput=function(){return oF};function oS(t,e){var r;return e.length&&(r={},r[t]=e[0]),$r.setDefaultOptions(r)[t]}$r.setPrint=function(){return oS("print",arguments)};$r.setPrompt=function(){return oS("prompt",arguments)};$r.setEncoding=function(){return oS("encoding",arguments)};$r.setMask=function(){return oS("mask",arguments)};$r.setBufferSize=function(){return oS("bufferSize",arguments)}});var x5=_((BYt,ec)=>{(function(){var t={major:0,minor:2,patch:66,status:"beta"};tau_file_system={files:{},open:function(w,P,y){var F=tau_file_system.files[w];if(!F){if(y==="read")return null;F={path:w,text:"",type:P,get:function(z,Z){return Z===this.text.length||Z>this.text.length?"end_of_file":this.text.substring(Z,Z+z)},put:function(z,Z){return Z==="end_of_file"?(this.text+=z,!0):Z==="past_end_of_file"?null:(this.text=this.text.substring(0,Z)+z+this.text.substring(Z+z.length),!0)},get_byte:function(z){if(z==="end_of_stream")return-1;var Z=Math.floor(z/2);if(this.text.length<=Z)return-1;var $=n(this.text[Math.floor(z/2)],0);return z%2===0?$&255:$/256>>>0},put_byte:function(z,Z){var $=Z==="end_of_stream"?this.text.length:Math.floor(Z/2);if(this.text.length<$)return null;var oe=this.text.length===$?-1:n(this.text[Math.floor(Z/2)],0);return Z%2===0?(oe=oe/256>>>0,oe=(oe&255)<<8|z&255):(oe=oe&255,oe=(z&255)<<8|oe&255),this.text.length===$?this.text+=c(oe):this.text=this.text.substring(0,$)+c(oe)+this.text.substring($+1),!0},flush:function(){return!0},close:function(){var z=tau_file_system.files[this.path];return z?!0:null}},tau_file_system.files[w]=F}return y==="write"&&(F.text=""),F}},tau_user_input={buffer:"",get:function(w,P){for(var y;tau_user_input.buffer.length\?\@\^\~\\]+|'(?:[^']*?(?:\\(?:x?\d+)?\\)*(?:'')*(?:\\')*)*')/,number:/^(?:0o[0-7]+|0x[0-9a-fA-F]+|0b[01]+|0'(?:''|\\[abfnrtv\\'"`]|\\x?\d+\\|[^\\])|\d+(?:\.\d+(?:[eE][+-]?\d+)?)?)/,string:/^(?:"([^"]|""|\\")*"|`([^`]|``|\\`)*`)/,l_brace:/^(?:\[)/,r_brace:/^(?:\])/,l_bracket:/^(?:\{)/,r_bracket:/^(?:\})/,bar:/^(?:\|)/,l_paren:/^(?:\()/,r_paren:/^(?:\))/};function N(w,P){return w.get_flag("char_conversion").id==="on"?P.replace(/./g,function(y){return w.get_char_conversion(y)}):P}function U(w){this.thread=w,this.text="",this.tokens=[]}U.prototype.set_last_tokens=function(w){return this.tokens=w},U.prototype.new_text=function(w){this.text=w,this.tokens=[]},U.prototype.get_tokens=function(w){var P,y=0,F=0,z=0,Z=[],$=!1;if(w){var oe=this.tokens[w-1];y=oe.len,P=N(this.thread,this.text.substr(oe.len)),F=oe.line,z=oe.start}else P=this.text;if(/^\s*$/.test(P))return null;for(;P!=="";){var xe=[],Re=!1;if(/^\n/.exec(P)!==null){F++,z=0,y++,P=P.replace(/\n/,""),$=!0;continue}for(var lt in T)if(T.hasOwnProperty(lt)){var Ct=T[lt].exec(P);Ct&&xe.push({value:Ct[0],name:lt,matches:Ct})}if(!xe.length)return this.set_last_tokens([{value:P,matches:[],name:"lexical",line:F,start:z}]);var oe=r(xe,function(br,Ir){return br.value.length>=Ir.value.length?br:Ir});switch(oe.start=z,oe.line=F,P=P.replace(oe.value,""),z+=oe.value.length,y+=oe.value.length,oe.name){case"atom":oe.raw=oe.value,oe.value.charAt(0)==="'"&&(oe.value=S(oe.value.substr(1,oe.value.length-2),"'"),oe.value===null&&(oe.name="lexical",oe.value="unknown escape sequence"));break;case"number":oe.float=oe.value.substring(0,2)!=="0x"&&oe.value.match(/[.eE]/)!==null&&oe.value!=="0'.",oe.value=I(oe.value),oe.blank=Re;break;case"string":var qt=oe.value.charAt(0);oe.value=S(oe.value.substr(1,oe.value.length-2),qt),oe.value===null&&(oe.name="lexical",oe.value="unknown escape sequence");break;case"whitespace":var ir=Z[Z.length-1];ir&&(ir.space=!0),Re=!0;continue;case"r_bracket":Z.length>0&&Z[Z.length-1].name==="l_bracket"&&(oe=Z.pop(),oe.name="atom",oe.value="{}",oe.raw="{}",oe.space=!1);break;case"r_brace":Z.length>0&&Z[Z.length-1].name==="l_brace"&&(oe=Z.pop(),oe.name="atom",oe.value="[]",oe.raw="[]",oe.space=!1);break}oe.len=y,Z.push(oe),Re=!1}var bt=this.set_last_tokens(Z);return bt.length===0?null:bt};function W(w,P,y,F,z){if(!P[y])return{type:f,value:x.error.syntax(P[y-1],"expression expected",!0)};var Z;if(F==="0"){var $=P[y];switch($.name){case"number":return{type:p,len:y+1,value:new x.type.Num($.value,$.float)};case"variable":return{type:p,len:y+1,value:new x.type.Var($.value)};case"string":var oe;switch(w.get_flag("double_quotes").id){case"atom":oe=new j($.value,[]);break;case"codes":oe=new j("[]",[]);for(var xe=$.value.length-1;xe>=0;xe--)oe=new j(".",[new x.type.Num(n($.value,xe),!1),oe]);break;case"chars":oe=new j("[]",[]);for(var xe=$.value.length-1;xe>=0;xe--)oe=new j(".",[new x.type.Term($.value.charAt(xe),[]),oe]);break}return{type:p,len:y+1,value:oe};case"l_paren":var bt=W(w,P,y+1,w.__get_max_priority(),!0);return bt.type!==p?bt:P[bt.len]&&P[bt.len].name==="r_paren"?(bt.len++,bt):{type:f,derived:!0,value:x.error.syntax(P[bt.len]?P[bt.len]:P[bt.len-1],") or operator expected",!P[bt.len])};case"l_bracket":var bt=W(w,P,y+1,w.__get_max_priority(),!0);return bt.type!==p?bt:P[bt.len]&&P[bt.len].name==="r_bracket"?(bt.len++,bt.value=new j("{}",[bt.value]),bt):{type:f,derived:!0,value:x.error.syntax(P[bt.len]?P[bt.len]:P[bt.len-1],"} or operator expected",!P[bt.len])}}var Re=ee(w,P,y,z);return Re.type===p||Re.derived||(Re=ie(w,P,y),Re.type===p||Re.derived)?Re:{type:f,derived:!1,value:x.error.syntax(P[y],"unexpected token")}}var lt=w.__get_max_priority(),Ct=w.__get_next_priority(F),qt=y;if(P[y].name==="atom"&&P[y+1]&&(P[y].space||P[y+1].name!=="l_paren")){var $=P[y++],ir=w.__lookup_operator_classes(F,$.value);if(ir&&ir.indexOf("fy")>-1){var bt=W(w,P,y,F,z);if(bt.type!==f)return $.value==="-"&&!$.space&&x.type.is_number(bt.value)?{value:new x.type.Num(-bt.value.value,bt.value.is_float),len:bt.len,type:p}:{value:new x.type.Term($.value,[bt.value]),len:bt.len,type:p};Z=bt}else if(ir&&ir.indexOf("fx")>-1){var bt=W(w,P,y,Ct,z);if(bt.type!==f)return{value:new x.type.Term($.value,[bt.value]),len:bt.len,type:p};Z=bt}}y=qt;var bt=W(w,P,y,Ct,z);if(bt.type===p){y=bt.len;var $=P[y];if(P[y]&&(P[y].name==="atom"&&w.__lookup_operator_classes(F,$.value)||P[y].name==="bar"&&w.__lookup_operator_classes(F,"|"))){var gn=Ct,br=F,ir=w.__lookup_operator_classes(F,$.value);if(ir.indexOf("xf")>-1)return{value:new x.type.Term($.value,[bt.value]),len:++bt.len,type:p};if(ir.indexOf("xfx")>-1){var Ir=W(w,P,y+1,gn,z);return Ir.type===p?{value:new x.type.Term($.value,[bt.value,Ir.value]),len:Ir.len,type:p}:(Ir.derived=!0,Ir)}else if(ir.indexOf("xfy")>-1){var Ir=W(w,P,y+1,br,z);return Ir.type===p?{value:new x.type.Term($.value,[bt.value,Ir.value]),len:Ir.len,type:p}:(Ir.derived=!0,Ir)}else if(bt.type!==f)for(;;){y=bt.len;var $=P[y];if($&&$.name==="atom"&&w.__lookup_operator_classes(F,$.value)){var ir=w.__lookup_operator_classes(F,$.value);if(ir.indexOf("yf")>-1)bt={value:new x.type.Term($.value,[bt.value]),len:++y,type:p};else if(ir.indexOf("yfx")>-1){var Ir=W(w,P,++y,gn,z);if(Ir.type===f)return Ir.derived=!0,Ir;y=Ir.len,bt={value:new x.type.Term($.value,[bt.value,Ir.value]),len:y,type:p}}else break}else break}}else Z={type:f,value:x.error.syntax(P[bt.len-1],"operator expected")};return bt}return bt}function ee(w,P,y,F){if(!P[y]||P[y].name==="atom"&&P[y].raw==="."&&!F&&(P[y].space||!P[y+1]||P[y+1].name!=="l_paren"))return{type:f,derived:!1,value:x.error.syntax(P[y-1],"unfounded token")};var z=P[y],Z=[];if(P[y].name==="atom"&&P[y].raw!==","){if(y++,P[y-1].space)return{type:p,len:y,value:new x.type.Term(z.value,Z)};if(P[y]&&P[y].name==="l_paren"){if(P[y+1]&&P[y+1].name==="r_paren")return{type:f,derived:!0,value:x.error.syntax(P[y+1],"argument expected")};var $=W(w,P,++y,"999",!0);if($.type===f)return $.derived?$:{type:f,derived:!0,value:x.error.syntax(P[y]?P[y]:P[y-1],"argument expected",!P[y])};for(Z.push($.value),y=$.len;P[y]&&P[y].name==="atom"&&P[y].value===",";){if($=W(w,P,y+1,"999",!0),$.type===f)return $.derived?$:{type:f,derived:!0,value:x.error.syntax(P[y+1]?P[y+1]:P[y],"argument expected",!P[y+1])};Z.push($.value),y=$.len}if(P[y]&&P[y].name==="r_paren")y++;else return{type:f,derived:!0,value:x.error.syntax(P[y]?P[y]:P[y-1],", or ) expected",!P[y])}}return{type:p,len:y,value:new x.type.Term(z.value,Z)}}return{type:f,derived:!1,value:x.error.syntax(P[y],"term expected")}}function ie(w,P,y){if(!P[y])return{type:f,derived:!1,value:x.error.syntax(P[y-1],"[ expected")};if(P[y]&&P[y].name==="l_brace"){var F=W(w,P,++y,"999",!0),z=[F.value],Z=void 0;if(F.type===f)return P[y]&&P[y].name==="r_brace"?{type:p,len:y+1,value:new x.type.Term("[]",[])}:{type:f,derived:!0,value:x.error.syntax(P[y],"] expected")};for(y=F.len;P[y]&&P[y].name==="atom"&&P[y].value===",";){if(F=W(w,P,y+1,"999",!0),F.type===f)return F.derived?F:{type:f,derived:!0,value:x.error.syntax(P[y+1]?P[y+1]:P[y],"argument expected",!P[y+1])};z.push(F.value),y=F.len}var $=!1;if(P[y]&&P[y].name==="bar"){if($=!0,F=W(w,P,y+1,"999",!0),F.type===f)return F.derived?F:{type:f,derived:!0,value:x.error.syntax(P[y+1]?P[y+1]:P[y],"argument expected",!P[y+1])};Z=F.value,y=F.len}return P[y]&&P[y].name==="r_brace"?{type:p,len:y+1,value:g(z,Z)}:{type:f,derived:!0,value:x.error.syntax(P[y]?P[y]:P[y-1],$?"] expected":", or | or ] expected",!P[y])}}return{type:f,derived:!1,value:x.error.syntax(P[y],"list expected")}}function ue(w,P,y){var F=P[y].line,z=W(w,P,y,w.__get_max_priority(),!1),Z=null,$;if(z.type!==f)if(y=z.len,P[y]&&P[y].name==="atom"&&P[y].raw===".")if(y++,x.type.is_term(z.value)){if(z.value.indicator===":-/2"?(Z=new x.type.Rule(z.value.args[0],Ce(z.value.args[1])),$={value:Z,len:y,type:p}):z.value.indicator==="-->/2"?(Z=pe(new x.type.Rule(z.value.args[0],z.value.args[1]),w),Z.body=Ce(Z.body),$={value:Z,len:y,type:x.type.is_rule(Z)?p:f}):(Z=new x.type.Rule(z.value,null),$={value:Z,len:y,type:p}),Z){var oe=Z.singleton_variables();oe.length>0&&w.throw_warning(x.warning.singleton(oe,Z.head.indicator,F))}return $}else return{type:f,value:x.error.syntax(P[y],"callable expected")};else return{type:f,value:x.error.syntax(P[y]?P[y]:P[y-1],". or operator expected")};return z}function le(w,P,y){y=y||{},y.from=y.from?y.from:"$tau-js",y.reconsult=y.reconsult!==void 0?y.reconsult:!0;var F=new U(w),z={},Z;F.new_text(P);var $=0,oe=F.get_tokens($);do{if(oe===null||!oe[$])break;var xe=ue(w,oe,$);if(xe.type===f)return new j("throw",[xe.value]);if(xe.value.body===null&&xe.value.head.indicator==="?-/1"){var Re=new it(w.session);Re.add_goal(xe.value.head.args[0]),Re.answer(function(Ct){x.type.is_error(Ct)?w.throw_warning(Ct.args[0]):(Ct===!1||Ct===null)&&w.throw_warning(x.warning.failed_goal(xe.value.head.args[0],xe.len))}),$=xe.len;var lt=!0}else if(xe.value.body===null&&xe.value.head.indicator===":-/1"){var lt=w.run_directive(xe.value.head.args[0]);$=xe.len,xe.value.head.args[0].indicator==="char_conversion/2"&&(oe=F.get_tokens($),$=0)}else{Z=xe.value.head.indicator,y.reconsult!==!1&&z[Z]!==!0&&!w.is_multifile_predicate(Z)&&(w.session.rules[Z]=a(w.session.rules[Z]||[],function(qt){return qt.dynamic}),z[Z]=!0);var lt=w.add_rule(xe.value,y);$=xe.len}if(!lt)return lt}while(!0);return!0}function me(w,P){var y=new U(w);y.new_text(P);var F=0;do{var z=y.get_tokens(F);if(z===null)break;var Z=W(w,z,0,w.__get_max_priority(),!1);if(Z.type!==f){var $=Z.len,oe=$;if(z[$]&&z[$].name==="atom"&&z[$].raw===".")w.add_goal(Ce(Z.value));else{var xe=z[$];return new j("throw",[x.error.syntax(xe||z[$-1],". or operator expected",!xe)])}F=Z.len+1}else return new j("throw",[Z.value])}while(!0);return!0}function pe(w,P){w=w.rename(P);var y=P.next_free_variable(),F=Be(w.body,y,P);return F.error?F.value:(w.body=F.value,w.head.args=w.head.args.concat([y,F.variable]),w.head=new j(w.head.id,w.head.args),w)}function Be(w,P,y){var F;if(x.type.is_term(w)&&w.indicator==="!/0")return{value:w,variable:P,error:!1};if(x.type.is_term(w)&&w.indicator===",/2"){var z=Be(w.args[0],P,y);if(z.error)return z;var Z=Be(w.args[1],z.variable,y);return Z.error?Z:{value:new j(",",[z.value,Z.value]),variable:Z.variable,error:!1}}else{if(x.type.is_term(w)&&w.indicator==="{}/1")return{value:w.args[0],variable:P,error:!1};if(x.type.is_empty_list(w))return{value:new j("true",[]),variable:P,error:!1};if(x.type.is_list(w)){F=y.next_free_variable();for(var $=w,oe;$.indicator==="./2";)oe=$,$=$.args[1];return x.type.is_variable($)?{value:x.error.instantiation("DCG"),variable:P,error:!0}:x.type.is_empty_list($)?(oe.args[1]=F,{value:new j("=",[P,w]),variable:F,error:!1}):{value:x.error.type("list",w,"DCG"),variable:P,error:!0}}else return x.type.is_callable(w)?(F=y.next_free_variable(),w.args=w.args.concat([P,F]),w=new j(w.id,w.args),{value:w,variable:F,error:!1}):{value:x.error.type("callable",w,"DCG"),variable:P,error:!0}}}function Ce(w){return x.type.is_variable(w)?new j("call",[w]):x.type.is_term(w)&&[",/2",";/2","->/2"].indexOf(w.indicator)!==-1?new j(w.id,[Ce(w.args[0]),Ce(w.args[1])]):w}function g(w,P){for(var y=P||new x.type.Term("[]",[]),F=w.length-1;F>=0;F--)y=new x.type.Term(".",[w[F],y]);return y}function we(w,P){for(var y=w.length-1;y>=0;y--)w[y]===P&&w.splice(y,1)}function ye(w){for(var P={},y=[],F=0;F=0;P--)if(w.charAt(P)==="/")return new j("/",[new j(w.substring(0,P)),new Te(parseInt(w.substring(P+1)),!1)])}function De(w){this.id=w}function Te(w,P){this.is_float=P!==void 0?P:parseInt(w)!==w,this.value=this.is_float?w:parseInt(w)}var mt=0;function j(w,P,y){this.ref=y||++mt,this.id=w,this.args=P||[],this.indicator=w+"/"+this.args.length}var rt=0;function Fe(w,P,y,F,z,Z){this.id=rt++,this.stream=w,this.mode=P,this.alias=y,this.type=F!==void 0?F:"text",this.reposition=z!==void 0?z:!0,this.eof_action=Z!==void 0?Z:"eof_code",this.position=this.mode==="append"?"end_of_stream":0,this.output=this.mode==="write"||this.mode==="append",this.input=this.mode==="read"}function Ne(w){w=w||{},this.links=w}function be(w,P,y){P=P||new Ne,y=y||null,this.goal=w,this.substitution=P,this.parent=y}function Ve(w,P,y){this.head=w,this.body=P,this.dynamic=y||!1}function ke(w){w=w===void 0||w<=0?1e3:w,this.rules={},this.src_predicates={},this.rename=0,this.modules=[],this.thread=new it(this),this.total_threads=1,this.renamed_variables={},this.public_predicates={},this.multifile_predicates={},this.limit=w,this.streams={user_input:new Fe(typeof ec<"u"&&ec.exports?nodejs_user_input:tau_user_input,"read","user_input","text",!1,"reset"),user_output:new Fe(typeof ec<"u"&&ec.exports?nodejs_user_output:tau_user_output,"write","user_output","text",!1,"eof_code")},this.file_system=typeof ec<"u"&&ec.exports?nodejs_file_system:tau_file_system,this.standard_input=this.streams.user_input,this.standard_output=this.streams.user_output,this.current_input=this.streams.user_input,this.current_output=this.streams.user_output,this.format_success=function(P){return P.substitution},this.format_error=function(P){return P.goal},this.flag={bounded:x.flag.bounded.value,max_integer:x.flag.max_integer.value,min_integer:x.flag.min_integer.value,integer_rounding_function:x.flag.integer_rounding_function.value,char_conversion:x.flag.char_conversion.value,debug:x.flag.debug.value,max_arity:x.flag.max_arity.value,unknown:x.flag.unknown.value,double_quotes:x.flag.double_quotes.value,occurs_check:x.flag.occurs_check.value,dialect:x.flag.dialect.value,version_data:x.flag.version_data.value,nodejs:x.flag.nodejs.value},this.__loaded_modules=[],this.__char_conversion={},this.__operators={1200:{":-":["fx","xfx"],"-->":["xfx"],"?-":["fx"]},1100:{";":["xfy"]},1050:{"->":["xfy"]},1e3:{",":["xfy"]},900:{"\\+":["fy"]},700:{"=":["xfx"],"\\=":["xfx"],"==":["xfx"],"\\==":["xfx"],"@<":["xfx"],"@=<":["xfx"],"@>":["xfx"],"@>=":["xfx"],"=..":["xfx"],is:["xfx"],"=:=":["xfx"],"=\\=":["xfx"],"<":["xfx"],"=<":["xfx"],">":["xfx"],">=":["xfx"]},600:{":":["xfy"]},500:{"+":["yfx"],"-":["yfx"],"/\\":["yfx"],"\\/":["yfx"]},400:{"*":["yfx"],"/":["yfx"],"//":["yfx"],rem:["yfx"],mod:["yfx"],"<<":["yfx"],">>":["yfx"]},200:{"**":["xfx"],"^":["xfy"],"-":["fy"],"+":["fy"],"\\":["fy"]}}}function it(w){this.epoch=Date.now(),this.session=w,this.session.total_threads++,this.total_steps=0,this.cpu_time=0,this.cpu_time_last=0,this.points=[],this.debugger=!1,this.debugger_states=[],this.level="top_level/0",this.__calls=[],this.current_limit=this.session.limit,this.warnings=[]}function Ue(w,P,y){this.id=w,this.rules=P,this.exports=y,x.module[w]=this}Ue.prototype.exports_predicate=function(w){return this.exports.indexOf(w)!==-1},De.prototype.unify=function(w,P){if(P&&e(w.variables(),this.id)!==-1&&!x.type.is_variable(w))return null;var y={};return y[this.id]=w,new Ne(y)},Te.prototype.unify=function(w,P){return x.type.is_number(w)&&this.value===w.value&&this.is_float===w.is_float?new Ne:null},j.prototype.unify=function(w,P){if(x.type.is_term(w)&&this.indicator===w.indicator){for(var y=new Ne,F=0;F=0){var F=this.args[0].value,z=Math.floor(F/26),Z=F%26;return"ABCDEFGHIJKLMNOPQRSTUVWXYZ"[Z]+(z!==0?z:"")}switch(this.indicator){case"[]/0":case"{}/0":case"!/0":return this.id;case"{}/1":return"{"+this.args[0].toString(w)+"}";case"./2":for(var $="["+this.args[0].toString(w),oe=this.args[1];oe.indicator==="./2";)$+=", "+oe.args[0].toString(w),oe=oe.args[1];return oe.indicator!=="[]/0"&&($+="|"+oe.toString(w)),$+="]",$;case",/2":return"("+this.args[0].toString(w)+", "+this.args[1].toString(w)+")";default:var xe=this.id,Re=w.session?w.session.lookup_operator(this.id,this.args.length):null;if(w.session===void 0||w.ignore_ops||Re===null)return w.quoted&&!/^(!|,|;|[a-z][0-9a-zA-Z_]*)$/.test(xe)&&xe!=="{}"&&xe!=="[]"&&(xe="'"+b(xe)+"'"),xe+(this.args.length?"("+s(this.args,function(ir){return ir.toString(w)}).join(", ")+")":"");var lt=Re.priority>P.priority||Re.priority===P.priority&&(Re.class==="xfy"&&this.indicator!==P.indicator||Re.class==="yfx"&&this.indicator!==P.indicator||this.indicator===P.indicator&&Re.class==="yfx"&&y==="right"||this.indicator===P.indicator&&Re.class==="xfy"&&y==="left");Re.indicator=this.indicator;var Ct=lt?"(":"",qt=lt?")":"";return this.args.length===0?"("+this.id+")":["fy","fx"].indexOf(Re.class)!==-1?Ct+xe+" "+this.args[0].toString(w,Re)+qt:["yf","xf"].indexOf(Re.class)!==-1?Ct+this.args[0].toString(w,Re)+" "+xe+qt:Ct+this.args[0].toString(w,Re,"left")+" "+this.id+" "+this.args[1].toString(w,Re,"right")+qt}},Fe.prototype.toString=function(w){return"("+this.id+")"},Ne.prototype.toString=function(w){var P="{";for(var y in this.links)this.links.hasOwnProperty(y)&&(P!=="{"&&(P+=", "),P+=y+"/"+this.links[y].toString(w));return P+="}",P},be.prototype.toString=function(w){return this.goal===null?"<"+this.substitution.toString(w)+">":"<"+this.goal.toString(w)+", "+this.substitution.toString(w)+">"},Ve.prototype.toString=function(w){return this.body?this.head.toString(w)+" :- "+this.body.toString(w)+".":this.head.toString(w)+"."},ke.prototype.toString=function(w){for(var P="",y=0;y=0;z--)F=new j(".",[P[z],F]);return F}return new j(this.id,s(this.args,function(Z){return Z.apply(w)}),this.ref)},Fe.prototype.apply=function(w){return this},Ve.prototype.apply=function(w){return new Ve(this.head.apply(w),this.body!==null?this.body.apply(w):null)},Ne.prototype.apply=function(w){var P,y={};for(P in this.links)this.links.hasOwnProperty(P)&&(y[P]=this.links[P].apply(w));return new Ne(y)},j.prototype.select=function(){for(var w=this;w.indicator===",/2";)w=w.args[0];return w},j.prototype.replace=function(w){return this.indicator===",/2"?this.args[0].indicator===",/2"?new j(",",[this.args[0].replace(w),this.args[1]]):w===null?this.args[1]:new j(",",[w,this.args[1]]):w},j.prototype.search=function(w){if(x.type.is_term(w)&&w.ref!==void 0&&this.ref===w.ref)return!0;for(var P=0;PP&&F0&&(P=this.head_point().substitution.domain());e(P,x.format_variable(this.session.rename))!==-1;)this.session.rename++;if(w.id==="_")return new De(x.format_variable(this.session.rename));this.session.renamed_variables[w.id]=x.format_variable(this.session.rename)}return new De(this.session.renamed_variables[w.id])},ke.prototype.next_free_variable=function(){return this.thread.next_free_variable()},it.prototype.next_free_variable=function(){this.session.rename++;var w=[];for(this.points.length>0&&(w=this.head_point().substitution.domain());e(w,x.format_variable(this.session.rename))!==-1;)this.session.rename++;return new De(x.format_variable(this.session.rename))},ke.prototype.is_public_predicate=function(w){return!this.public_predicates.hasOwnProperty(w)||this.public_predicates[w]===!0},it.prototype.is_public_predicate=function(w){return this.session.is_public_predicate(w)},ke.prototype.is_multifile_predicate=function(w){return this.multifile_predicates.hasOwnProperty(w)&&this.multifile_predicates[w]===!0},it.prototype.is_multifile_predicate=function(w){return this.session.is_multifile_predicate(w)},ke.prototype.prepend=function(w){return this.thread.prepend(w)},it.prototype.prepend=function(w){for(var P=w.length-1;P>=0;P--)this.points.push(w[P])},ke.prototype.success=function(w,P){return this.thread.success(w,P)},it.prototype.success=function(w,y){var y=typeof y>"u"?w:y;this.prepend([new be(w.goal.replace(null),w.substitution,y)])},ke.prototype.throw_error=function(w){return this.thread.throw_error(w)},it.prototype.throw_error=function(w){this.prepend([new be(new j("throw",[w]),new Ne,null,null)])},ke.prototype.step_rule=function(w,P){return this.thread.step_rule(w,P)},it.prototype.step_rule=function(w,P){var y=P.indicator;if(w==="user"&&(w=null),w===null&&this.session.rules.hasOwnProperty(y))return this.session.rules[y];for(var F=w===null?this.session.modules:e(this.session.modules,w)===-1?[]:[w],z=0;z1)&&this.again()},ke.prototype.answers=function(w,P,y){return this.thread.answers(w,P,y)},it.prototype.answers=function(w,P,y){var F=P||1e3,z=this;if(P<=0){y&&y();return}this.answer(function(Z){w(Z),Z!==!1?setTimeout(function(){z.answers(w,P-1,y)},1):y&&y()})},ke.prototype.again=function(w){return this.thread.again(w)},it.prototype.again=function(w){for(var P,y=Date.now();this.__calls.length>0;){for(this.warnings=[],w!==!1&&(this.current_limit=this.session.limit);this.current_limit>0&&this.points.length>0&&this.head_point().goal!==null&&!x.type.is_error(this.head_point().goal);)if(this.current_limit--,this.step()===!0)return;var F=Date.now();this.cpu_time_last=F-y,this.cpu_time+=this.cpu_time_last;var z=this.__calls.shift();this.current_limit<=0?z(null):this.points.length===0?z(!1):x.type.is_error(this.head_point().goal)?(P=this.session.format_error(this.points.pop()),this.points=[],z(P)):(this.debugger&&this.debugger_states.push(this.head_point()),P=this.session.format_success(this.points.pop()),z(P))}},ke.prototype.unfold=function(w){if(w.body===null)return!1;var P=w.head,y=w.body,F=y.select(),z=new it(this),Z=[];z.add_goal(F),z.step();for(var $=z.points.length-1;$>=0;$--){var oe=z.points[$],xe=P.apply(oe.substitution),Re=y.replace(oe.goal);Re!==null&&(Re=Re.apply(oe.substitution)),Z.push(new Ve(xe,Re))}var lt=this.rules[P.indicator],Ct=e(lt,w);return Z.length>0&&Ct!==-1?(lt.splice.apply(lt,[Ct,1].concat(Z)),!0):!1},it.prototype.unfold=function(w){return this.session.unfold(w)},De.prototype.interpret=function(w){return x.error.instantiation(w.level)},Te.prototype.interpret=function(w){return this},j.prototype.interpret=function(w){return x.type.is_unitary_list(this)?this.args[0].interpret(w):x.operate(w,this)},De.prototype.compare=function(w){return this.idw.id?1:0},Te.prototype.compare=function(w){if(this.value===w.value&&this.is_float===w.is_float)return 0;if(this.valuew.value)return 1},j.prototype.compare=function(w){if(this.args.lengthw.args.length||this.args.length===w.args.length&&this.id>w.id)return 1;for(var P=0;PF)return 1;if(w.constructor===Te){if(w.is_float&&P.is_float)return 0;if(w.is_float)return-1;if(P.is_float)return 1}return 0},is_substitution:function(w){return w instanceof Ne},is_state:function(w){return w instanceof be},is_rule:function(w){return w instanceof Ve},is_variable:function(w){return w instanceof De},is_stream:function(w){return w instanceof Fe},is_anonymous_var:function(w){return w instanceof De&&w.id==="_"},is_callable:function(w){return w instanceof j},is_number:function(w){return w instanceof Te},is_integer:function(w){return w instanceof Te&&!w.is_float},is_float:function(w){return w instanceof Te&&w.is_float},is_term:function(w){return w instanceof j},is_atom:function(w){return w instanceof j&&w.args.length===0},is_ground:function(w){if(w instanceof De)return!1;if(w instanceof j){for(var P=0;P0},is_list:function(w){return w instanceof j&&(w.indicator==="[]/0"||w.indicator==="./2")},is_empty_list:function(w){return w instanceof j&&w.indicator==="[]/0"},is_non_empty_list:function(w){return w instanceof j&&w.indicator==="./2"},is_fully_list:function(w){for(;w instanceof j&&w.indicator==="./2";)w=w.args[1];return w instanceof De||w instanceof j&&w.indicator==="[]/0"},is_instantiated_list:function(w){for(;w instanceof j&&w.indicator==="./2";)w=w.args[1];return w instanceof j&&w.indicator==="[]/0"},is_unitary_list:function(w){return w instanceof j&&w.indicator==="./2"&&w.args[1]instanceof j&&w.args[1].indicator==="[]/0"},is_character:function(w){return w instanceof j&&(w.id.length===1||w.id.length>0&&w.id.length<=2&&n(w.id,0)>=65536)},is_character_code:function(w){return w instanceof Te&&!w.is_float&&w.value>=0&&w.value<=1114111},is_byte:function(w){return w instanceof Te&&!w.is_float&&w.value>=0&&w.value<=255},is_operator:function(w){return w instanceof j&&x.arithmetic.evaluation[w.indicator]},is_directive:function(w){return w instanceof j&&x.directive[w.indicator]!==void 0},is_builtin:function(w){return w instanceof j&&x.predicate[w.indicator]!==void 0},is_error:function(w){return w instanceof j&&w.indicator==="throw/1"},is_predicate_indicator:function(w){return w instanceof j&&w.indicator==="//2"&&w.args[0]instanceof j&&w.args[0].args.length===0&&w.args[1]instanceof Te&&w.args[1].is_float===!1},is_flag:function(w){return w instanceof j&&w.args.length===0&&x.flag[w.id]!==void 0},is_value_flag:function(w,P){if(!x.type.is_flag(w))return!1;for(var y in x.flag[w.id].allowed)if(x.flag[w.id].allowed.hasOwnProperty(y)&&x.flag[w.id].allowed[y].equals(P))return!0;return!1},is_io_mode:function(w){return x.type.is_atom(w)&&["read","write","append"].indexOf(w.id)!==-1},is_stream_option:function(w){return x.type.is_term(w)&&(w.indicator==="alias/1"&&x.type.is_atom(w.args[0])||w.indicator==="reposition/1"&&x.type.is_atom(w.args[0])&&(w.args[0].id==="true"||w.args[0].id==="false")||w.indicator==="type/1"&&x.type.is_atom(w.args[0])&&(w.args[0].id==="text"||w.args[0].id==="binary")||w.indicator==="eof_action/1"&&x.type.is_atom(w.args[0])&&(w.args[0].id==="error"||w.args[0].id==="eof_code"||w.args[0].id==="reset"))},is_stream_position:function(w){return x.type.is_integer(w)&&w.value>=0||x.type.is_atom(w)&&(w.id==="end_of_stream"||w.id==="past_end_of_stream")},is_stream_property:function(w){return x.type.is_term(w)&&(w.indicator==="input/0"||w.indicator==="output/0"||w.indicator==="alias/1"&&(x.type.is_variable(w.args[0])||x.type.is_atom(w.args[0]))||w.indicator==="file_name/1"&&(x.type.is_variable(w.args[0])||x.type.is_atom(w.args[0]))||w.indicator==="position/1"&&(x.type.is_variable(w.args[0])||x.type.is_stream_position(w.args[0]))||w.indicator==="reposition/1"&&(x.type.is_variable(w.args[0])||x.type.is_atom(w.args[0])&&(w.args[0].id==="true"||w.args[0].id==="false"))||w.indicator==="type/1"&&(x.type.is_variable(w.args[0])||x.type.is_atom(w.args[0])&&(w.args[0].id==="text"||w.args[0].id==="binary"))||w.indicator==="mode/1"&&(x.type.is_variable(w.args[0])||x.type.is_atom(w.args[0])&&(w.args[0].id==="read"||w.args[0].id==="write"||w.args[0].id==="append"))||w.indicator==="eof_action/1"&&(x.type.is_variable(w.args[0])||x.type.is_atom(w.args[0])&&(w.args[0].id==="error"||w.args[0].id==="eof_code"||w.args[0].id==="reset"))||w.indicator==="end_of_stream/1"&&(x.type.is_variable(w.args[0])||x.type.is_atom(w.args[0])&&(w.args[0].id==="at"||w.args[0].id==="past"||w.args[0].id==="not")))},is_streamable:function(w){return w.__proto__.stream!==void 0},is_read_option:function(w){return x.type.is_term(w)&&["variables/1","variable_names/1","singletons/1"].indexOf(w.indicator)!==-1},is_write_option:function(w){return x.type.is_term(w)&&(w.indicator==="quoted/1"&&x.type.is_atom(w.args[0])&&(w.args[0].id==="true"||w.args[0].id==="false")||w.indicator==="ignore_ops/1"&&x.type.is_atom(w.args[0])&&(w.args[0].id==="true"||w.args[0].id==="false")||w.indicator==="numbervars/1"&&x.type.is_atom(w.args[0])&&(w.args[0].id==="true"||w.args[0].id==="false"))},is_close_option:function(w){return x.type.is_term(w)&&w.indicator==="force/1"&&x.type.is_atom(w.args[0])&&(w.args[0].id==="true"||w.args[0].id==="false")},is_modifiable_flag:function(w){return x.type.is_flag(w)&&x.flag[w.id].changeable},is_module:function(w){return w instanceof j&&w.indicator==="library/1"&&w.args[0]instanceof j&&w.args[0].args.length===0&&x.module[w.args[0].id]!==void 0}},arithmetic:{evaluation:{"e/0":{type_args:null,type_result:!0,fn:function(w){return Math.E}},"pi/0":{type_args:null,type_result:!0,fn:function(w){return Math.PI}},"tau/0":{type_args:null,type_result:!0,fn:function(w){return 2*Math.PI}},"epsilon/0":{type_args:null,type_result:!0,fn:function(w){return Number.EPSILON}},"+/1":{type_args:null,type_result:null,fn:function(w,P){return w}},"-/1":{type_args:null,type_result:null,fn:function(w,P){return-w}},"\\/1":{type_args:!1,type_result:!1,fn:function(w,P){return~w}},"abs/1":{type_args:null,type_result:null,fn:function(w,P){return Math.abs(w)}},"sign/1":{type_args:null,type_result:null,fn:function(w,P){return Math.sign(w)}},"float_integer_part/1":{type_args:!0,type_result:!1,fn:function(w,P){return parseInt(w)}},"float_fractional_part/1":{type_args:!0,type_result:!0,fn:function(w,P){return w-parseInt(w)}},"float/1":{type_args:null,type_result:!0,fn:function(w,P){return parseFloat(w)}},"floor/1":{type_args:!0,type_result:!1,fn:function(w,P){return Math.floor(w)}},"truncate/1":{type_args:!0,type_result:!1,fn:function(w,P){return parseInt(w)}},"round/1":{type_args:!0,type_result:!1,fn:function(w,P){return Math.round(w)}},"ceiling/1":{type_args:!0,type_result:!1,fn:function(w,P){return Math.ceil(w)}},"sin/1":{type_args:null,type_result:!0,fn:function(w,P){return Math.sin(w)}},"cos/1":{type_args:null,type_result:!0,fn:function(w,P){return Math.cos(w)}},"tan/1":{type_args:null,type_result:!0,fn:function(w,P){return Math.tan(w)}},"asin/1":{type_args:null,type_result:!0,fn:function(w,P){return Math.asin(w)}},"acos/1":{type_args:null,type_result:!0,fn:function(w,P){return Math.acos(w)}},"atan/1":{type_args:null,type_result:!0,fn:function(w,P){return Math.atan(w)}},"atan2/2":{type_args:null,type_result:!0,fn:function(w,P,y){return Math.atan2(w,P)}},"exp/1":{type_args:null,type_result:!0,fn:function(w,P){return Math.exp(w)}},"sqrt/1":{type_args:null,type_result:!0,fn:function(w,P){return Math.sqrt(w)}},"log/1":{type_args:null,type_result:!0,fn:function(w,P){return w>0?Math.log(w):x.error.evaluation("undefined",P.__call_indicator)}},"+/2":{type_args:null,type_result:null,fn:function(w,P,y){return w+P}},"-/2":{type_args:null,type_result:null,fn:function(w,P,y){return w-P}},"*/2":{type_args:null,type_result:null,fn:function(w,P,y){return w*P}},"//2":{type_args:null,type_result:!0,fn:function(w,P,y){return P?w/P:x.error.evaluation("zero_division",y.__call_indicator)}},"///2":{type_args:!1,type_result:!1,fn:function(w,P,y){return P?parseInt(w/P):x.error.evaluation("zero_division",y.__call_indicator)}},"**/2":{type_args:null,type_result:!0,fn:function(w,P,y){return Math.pow(w,P)}},"^/2":{type_args:null,type_result:null,fn:function(w,P,y){return Math.pow(w,P)}},"<>/2":{type_args:!1,type_result:!1,fn:function(w,P,y){return w>>P}},"/\\/2":{type_args:!1,type_result:!1,fn:function(w,P,y){return w&P}},"\\//2":{type_args:!1,type_result:!1,fn:function(w,P,y){return w|P}},"xor/2":{type_args:!1,type_result:!1,fn:function(w,P,y){return w^P}},"rem/2":{type_args:!1,type_result:!1,fn:function(w,P,y){return P?w%P:x.error.evaluation("zero_division",y.__call_indicator)}},"mod/2":{type_args:!1,type_result:!1,fn:function(w,P,y){return P?w-parseInt(w/P)*P:x.error.evaluation("zero_division",y.__call_indicator)}},"max/2":{type_args:null,type_result:null,fn:function(w,P,y){return Math.max(w,P)}},"min/2":{type_args:null,type_result:null,fn:function(w,P,y){return Math.min(w,P)}}}},directive:{"dynamic/1":function(w,P){var y=P.args[0];if(x.type.is_variable(y))w.throw_error(x.error.instantiation(P.indicator));else if(!x.type.is_compound(y)||y.indicator!=="//2")w.throw_error(x.error.type("predicate_indicator",y,P.indicator));else if(x.type.is_variable(y.args[0])||x.type.is_variable(y.args[1]))w.throw_error(x.error.instantiation(P.indicator));else if(!x.type.is_atom(y.args[0]))w.throw_error(x.error.type("atom",y.args[0],P.indicator));else if(!x.type.is_integer(y.args[1]))w.throw_error(x.error.type("integer",y.args[1],P.indicator));else{var F=P.args[0].args[0].id+"/"+P.args[0].args[1].value;w.session.public_predicates[F]=!0,w.session.rules[F]||(w.session.rules[F]=[])}},"multifile/1":function(w,P){var y=P.args[0];x.type.is_variable(y)?w.throw_error(x.error.instantiation(P.indicator)):!x.type.is_compound(y)||y.indicator!=="//2"?w.throw_error(x.error.type("predicate_indicator",y,P.indicator)):x.type.is_variable(y.args[0])||x.type.is_variable(y.args[1])?w.throw_error(x.error.instantiation(P.indicator)):x.type.is_atom(y.args[0])?x.type.is_integer(y.args[1])?w.session.multifile_predicates[P.args[0].args[0].id+"/"+P.args[0].args[1].value]=!0:w.throw_error(x.error.type("integer",y.args[1],P.indicator)):w.throw_error(x.error.type("atom",y.args[0],P.indicator))},"set_prolog_flag/2":function(w,P){var y=P.args[0],F=P.args[1];x.type.is_variable(y)||x.type.is_variable(F)?w.throw_error(x.error.instantiation(P.indicator)):x.type.is_atom(y)?x.type.is_flag(y)?x.type.is_value_flag(y,F)?x.type.is_modifiable_flag(y)?w.session.flag[y.id]=F:w.throw_error(x.error.permission("modify","flag",y)):w.throw_error(x.error.domain("flag_value",new j("+",[y,F]),P.indicator)):w.throw_error(x.error.domain("prolog_flag",y,P.indicator)):w.throw_error(x.error.type("atom",y,P.indicator))},"use_module/1":function(w,P){var y=P.args[0];if(x.type.is_variable(y))w.throw_error(x.error.instantiation(P.indicator));else if(!x.type.is_term(y))w.throw_error(x.error.type("term",y,P.indicator));else if(x.type.is_module(y)){var F=y.args[0].id;e(w.session.modules,F)===-1&&w.session.modules.push(F)}},"char_conversion/2":function(w,P){var y=P.args[0],F=P.args[1];x.type.is_variable(y)||x.type.is_variable(F)?w.throw_error(x.error.instantiation(P.indicator)):x.type.is_character(y)?x.type.is_character(F)?y.id===F.id?delete w.session.__char_conversion[y.id]:w.session.__char_conversion[y.id]=F.id:w.throw_error(x.error.type("character",F,P.indicator)):w.throw_error(x.error.type("character",y,P.indicator))},"op/3":function(w,P){var y=P.args[0],F=P.args[1],z=P.args[2];if(x.type.is_variable(y)||x.type.is_variable(F)||x.type.is_variable(z))w.throw_error(x.error.instantiation(P.indicator));else if(!x.type.is_integer(y))w.throw_error(x.error.type("integer",y,P.indicator));else if(!x.type.is_atom(F))w.throw_error(x.error.type("atom",F,P.indicator));else if(!x.type.is_atom(z))w.throw_error(x.error.type("atom",z,P.indicator));else if(y.value<0||y.value>1200)w.throw_error(x.error.domain("operator_priority",y,P.indicator));else if(z.id===",")w.throw_error(x.error.permission("modify","operator",z,P.indicator));else if(z.id==="|"&&(y.value<1001||F.id.length!==3))w.throw_error(x.error.permission("modify","operator",z,P.indicator));else if(["fy","fx","yf","xf","xfx","yfx","xfy"].indexOf(F.id)===-1)w.throw_error(x.error.domain("operator_specifier",F,P.indicator));else{var Z={prefix:null,infix:null,postfix:null};for(var $ in w.session.__operators)if(w.session.__operators.hasOwnProperty($)){var oe=w.session.__operators[$][z.id];oe&&(e(oe,"fx")!==-1&&(Z.prefix={priority:$,type:"fx"}),e(oe,"fy")!==-1&&(Z.prefix={priority:$,type:"fy"}),e(oe,"xf")!==-1&&(Z.postfix={priority:$,type:"xf"}),e(oe,"yf")!==-1&&(Z.postfix={priority:$,type:"yf"}),e(oe,"xfx")!==-1&&(Z.infix={priority:$,type:"xfx"}),e(oe,"xfy")!==-1&&(Z.infix={priority:$,type:"xfy"}),e(oe,"yfx")!==-1&&(Z.infix={priority:$,type:"yfx"}))}var xe;switch(F.id){case"fy":case"fx":xe="prefix";break;case"yf":case"xf":xe="postfix";break;default:xe="infix";break}if(((Z.prefix&&xe==="prefix"||Z.postfix&&xe==="postfix"||Z.infix&&xe==="infix")&&Z[xe].type!==F.id||Z.infix&&xe==="postfix"||Z.postfix&&xe==="infix")&&y.value!==0)w.throw_error(x.error.permission("create","operator",z,P.indicator));else return Z[xe]&&(we(w.session.__operators[Z[xe].priority][z.id],F.id),w.session.__operators[Z[xe].priority][z.id].length===0&&delete w.session.__operators[Z[xe].priority][z.id]),y.value>0&&(w.session.__operators[y.value]||(w.session.__operators[y.value.toString()]={}),w.session.__operators[y.value][z.id]||(w.session.__operators[y.value][z.id]=[]),w.session.__operators[y.value][z.id].push(F.id)),!0}}},predicate:{"op/3":function(w,P,y){x.directive["op/3"](w,y)&&w.success(P)},"current_op/3":function(w,P,y){var F=y.args[0],z=y.args[1],Z=y.args[2],$=[];for(var oe in w.session.__operators)for(var xe in w.session.__operators[oe])for(var Re=0;Re/2"){var F=w.points,z=w.session.format_success,Z=w.session.format_error;w.session.format_success=function(Re){return Re.substitution},w.session.format_error=function(Re){return Re.goal},w.points=[new be(y.args[0].args[0],P.substitution,P)];var $=function(Re){w.points=F,w.session.format_success=z,w.session.format_error=Z,Re===!1?w.prepend([new be(P.goal.replace(y.args[1]),P.substitution,P)]):x.type.is_error(Re)?w.throw_error(Re.args[0]):Re===null?(w.prepend([P]),w.__calls.shift()(null)):w.prepend([new be(P.goal.replace(y.args[0].args[1]).apply(Re),P.substitution.apply(Re),P)])};w.__calls.unshift($)}else{var oe=new be(P.goal.replace(y.args[0]),P.substitution,P),xe=new be(P.goal.replace(y.args[1]),P.substitution,P);w.prepend([oe,xe])}},"!/0":function(w,P,y){var F,z,Z=[];for(F=P,z=null;F.parent!==null&&F.parent.goal.search(y);)if(z=F,F=F.parent,F.goal!==null){var $=F.goal.select();if($&&$.id==="call"&&$.search(y)){F=z;break}}for(var oe=w.points.length-1;oe>=0;oe--){for(var xe=w.points[oe],Re=xe.parent;Re!==null&&Re!==F.parent;)Re=Re.parent;Re===null&&Re!==F.parent&&Z.push(xe)}w.points=Z.reverse(),w.success(P)},"\\+/1":function(w,P,y){var F=y.args[0];x.type.is_variable(F)?w.throw_error(x.error.instantiation(w.level)):x.type.is_callable(F)?w.prepend([new be(P.goal.replace(new j(",",[new j(",",[new j("call",[F]),new j("!",[])]),new j("fail",[])])),P.substitution,P),new be(P.goal.replace(null),P.substitution,P)]):w.throw_error(x.error.type("callable",F,w.level))},"->/2":function(w,P,y){var F=P.goal.replace(new j(",",[y.args[0],new j(",",[new j("!"),y.args[1]])]));w.prepend([new be(F,P.substitution,P)])},"fail/0":function(w,P,y){},"false/0":function(w,P,y){},"true/0":function(w,P,y){w.success(P)},"call/1":se(1),"call/2":se(2),"call/3":se(3),"call/4":se(4),"call/5":se(5),"call/6":se(6),"call/7":se(7),"call/8":se(8),"once/1":function(w,P,y){var F=y.args[0];w.prepend([new be(P.goal.replace(new j(",",[new j("call",[F]),new j("!",[])])),P.substitution,P)])},"forall/2":function(w,P,y){var F=y.args[0],z=y.args[1];w.prepend([new be(P.goal.replace(new j("\\+",[new j(",",[new j("call",[F]),new j("\\+",[new j("call",[z])])])])),P.substitution,P)])},"repeat/0":function(w,P,y){w.prepend([new be(P.goal.replace(null),P.substitution,P),P])},"throw/1":function(w,P,y){x.type.is_variable(y.args[0])?w.throw_error(x.error.instantiation(w.level)):w.throw_error(y.args[0])},"catch/3":function(w,P,y){var F=w.points;w.points=[],w.prepend([new be(y.args[0],P.substitution,P)]);var z=w.session.format_success,Z=w.session.format_error;w.session.format_success=function(oe){return oe.substitution},w.session.format_error=function(oe){return oe.goal};var $=function(oe){var xe=w.points;if(w.points=F,w.session.format_success=z,w.session.format_error=Z,x.type.is_error(oe)){for(var Re=[],lt=w.points.length-1;lt>=0;lt--){for(var ir=w.points[lt],Ct=ir.parent;Ct!==null&&Ct!==P.parent;)Ct=Ct.parent;Ct===null&&Ct!==P.parent&&Re.push(ir)}w.points=Re;var qt=w.get_flag("occurs_check").indicator==="true/0",ir=new be,bt=x.unify(oe.args[0],y.args[1],qt);bt!==null?(ir.substitution=P.substitution.apply(bt),ir.goal=P.goal.replace(y.args[2]).apply(bt),ir.parent=P,w.prepend([ir])):w.throw_error(oe.args[0])}else if(oe!==!1){for(var gn=oe===null?[]:[new be(P.goal.apply(oe).replace(null),P.substitution.apply(oe),P)],br=[],lt=xe.length-1;lt>=0;lt--){br.push(xe[lt]);var Ir=xe[lt].goal!==null?xe[lt].goal.select():null;if(x.type.is_term(Ir)&&Ir.indicator==="!/0")break}var Or=s(br,function(nn){return nn.goal===null&&(nn.goal=new j("true",[])),nn=new be(P.goal.replace(new j("catch",[nn.goal,y.args[1],y.args[2]])),P.substitution.apply(nn.substitution),nn.parent),nn.exclude=y.args[0].variables(),nn}).reverse();w.prepend(Or),w.prepend(gn),oe===null&&(this.current_limit=0,w.__calls.shift()(null))}};w.__calls.unshift($)},"=/2":function(w,P,y){var F=w.get_flag("occurs_check").indicator==="true/0",z=new be,Z=x.unify(y.args[0],y.args[1],F);Z!==null&&(z.goal=P.goal.apply(Z).replace(null),z.substitution=P.substitution.apply(Z),z.parent=P,w.prepend([z]))},"unify_with_occurs_check/2":function(w,P,y){var F=new be,z=x.unify(y.args[0],y.args[1],!0);z!==null&&(F.goal=P.goal.apply(z).replace(null),F.substitution=P.substitution.apply(z),F.parent=P,w.prepend([F]))},"\\=/2":function(w,P,y){var F=w.get_flag("occurs_check").indicator==="true/0",z=x.unify(y.args[0],y.args[1],F);z===null&&w.success(P)},"subsumes_term/2":function(w,P,y){var F=w.get_flag("occurs_check").indicator==="true/0",z=x.unify(y.args[1],y.args[0],F);z!==null&&y.args[1].apply(z).equals(y.args[1])&&w.success(P)},"findall/3":function(w,P,y){var F=y.args[0],z=y.args[1],Z=y.args[2];if(x.type.is_variable(z))w.throw_error(x.error.instantiation(y.indicator));else if(!x.type.is_callable(z))w.throw_error(x.error.type("callable",z,y.indicator));else if(!x.type.is_variable(Z)&&!x.type.is_list(Z))w.throw_error(x.error.type("list",Z,y.indicator));else{var $=w.next_free_variable(),oe=new j(",",[z,new j("=",[$,F])]),xe=w.points,Re=w.session.limit,lt=w.session.format_success;w.session.format_success=function(ir){return ir.substitution},w.add_goal(oe,!0,P);var Ct=[],qt=function(ir){if(ir!==!1&&ir!==null&&!x.type.is_error(ir))w.__calls.unshift(qt),Ct.push(ir.links[$.id]),w.session.limit=w.current_limit;else if(w.points=xe,w.session.limit=Re,w.session.format_success=lt,x.type.is_error(ir))w.throw_error(ir.args[0]);else if(w.current_limit>0){for(var bt=new j("[]"),gn=Ct.length-1;gn>=0;gn--)bt=new j(".",[Ct[gn],bt]);w.prepend([new be(P.goal.replace(new j("=",[Z,bt])),P.substitution,P)])}};w.__calls.unshift(qt)}},"bagof/3":function(w,P,y){var F,z=y.args[0],Z=y.args[1],$=y.args[2];if(x.type.is_variable(Z))w.throw_error(x.error.instantiation(y.indicator));else if(!x.type.is_callable(Z))w.throw_error(x.error.type("callable",Z,y.indicator));else if(!x.type.is_variable($)&&!x.type.is_list($))w.throw_error(x.error.type("list",$,y.indicator));else{var oe=w.next_free_variable(),xe;Z.indicator==="^/2"?(xe=Z.args[0].variables(),Z=Z.args[1]):xe=[],xe=xe.concat(z.variables());for(var Re=Z.variables().filter(function(Or){return e(xe,Or)===-1}),lt=new j("[]"),Ct=Re.length-1;Ct>=0;Ct--)lt=new j(".",[new De(Re[Ct]),lt]);var qt=new j(",",[Z,new j("=",[oe,new j(",",[lt,z])])]),ir=w.points,bt=w.session.limit,gn=w.session.format_success;w.session.format_success=function(Or){return Or.substitution},w.add_goal(qt,!0,P);var br=[],Ir=function(Or){if(Or!==!1&&Or!==null&&!x.type.is_error(Or)){w.__calls.unshift(Ir);var nn=!1,ai=Or.links[oe.id].args[0],Io=Or.links[oe.id].args[1];for(var ts in br)if(br.hasOwnProperty(ts)){var $s=br[ts];if($s.variables.equals(ai)){$s.answers.push(Io),nn=!0;break}}nn||br.push({variables:ai,answers:[Io]}),w.session.limit=w.current_limit}else if(w.points=ir,w.session.limit=bt,w.session.format_success=gn,x.type.is_error(Or))w.throw_error(Or.args[0]);else if(w.current_limit>0){for(var Co=[],Hi=0;Hi=0;wo--)eo=new j(".",[Or[wo],eo]);Co.push(new be(P.goal.replace(new j(",",[new j("=",[lt,br[Hi].variables]),new j("=",[$,eo])])),P.substitution,P))}w.prepend(Co)}};w.__calls.unshift(Ir)}},"setof/3":function(w,P,y){var F,z=y.args[0],Z=y.args[1],$=y.args[2];if(x.type.is_variable(Z))w.throw_error(x.error.instantiation(y.indicator));else if(!x.type.is_callable(Z))w.throw_error(x.error.type("callable",Z,y.indicator));else if(!x.type.is_variable($)&&!x.type.is_list($))w.throw_error(x.error.type("list",$,y.indicator));else{var oe=w.next_free_variable(),xe;Z.indicator==="^/2"?(xe=Z.args[0].variables(),Z=Z.args[1]):xe=[],xe=xe.concat(z.variables());for(var Re=Z.variables().filter(function(Or){return e(xe,Or)===-1}),lt=new j("[]"),Ct=Re.length-1;Ct>=0;Ct--)lt=new j(".",[new De(Re[Ct]),lt]);var qt=new j(",",[Z,new j("=",[oe,new j(",",[lt,z])])]),ir=w.points,bt=w.session.limit,gn=w.session.format_success;w.session.format_success=function(Or){return Or.substitution},w.add_goal(qt,!0,P);var br=[],Ir=function(Or){if(Or!==!1&&Or!==null&&!x.type.is_error(Or)){w.__calls.unshift(Ir);var nn=!1,ai=Or.links[oe.id].args[0],Io=Or.links[oe.id].args[1];for(var ts in br)if(br.hasOwnProperty(ts)){var $s=br[ts];if($s.variables.equals(ai)){$s.answers.push(Io),nn=!0;break}}nn||br.push({variables:ai,answers:[Io]}),w.session.limit=w.current_limit}else if(w.points=ir,w.session.limit=bt,w.session.format_success=gn,x.type.is_error(Or))w.throw_error(Or.args[0]);else if(w.current_limit>0){for(var Co=[],Hi=0;Hi=0;wo--)eo=new j(".",[Or[wo],eo]);Co.push(new be(P.goal.replace(new j(",",[new j("=",[lt,br[Hi].variables]),new j("=",[$,eo])])),P.substitution,P))}w.prepend(Co)}};w.__calls.unshift(Ir)}},"functor/3":function(w,P,y){var F,z=y.args[0],Z=y.args[1],$=y.args[2];if(x.type.is_variable(z)&&(x.type.is_variable(Z)||x.type.is_variable($)))w.throw_error(x.error.instantiation("functor/3"));else if(!x.type.is_variable($)&&!x.type.is_integer($))w.throw_error(x.error.type("integer",y.args[2],"functor/3"));else if(!x.type.is_variable(Z)&&!x.type.is_atomic(Z))w.throw_error(x.error.type("atomic",y.args[1],"functor/3"));else if(x.type.is_integer(Z)&&x.type.is_integer($)&&$.value!==0)w.throw_error(x.error.type("atom",y.args[1],"functor/3"));else if(x.type.is_variable(z)){if(y.args[2].value>=0){for(var oe=[],xe=0;xe<$.value;xe++)oe.push(w.next_free_variable());var Re=x.type.is_integer(Z)?Z:new j(Z.id,oe);w.prepend([new be(P.goal.replace(new j("=",[z,Re])),P.substitution,P)])}}else{var lt=x.type.is_integer(z)?z:new j(z.id,[]),Ct=x.type.is_integer(z)?new Te(0,!1):new Te(z.args.length,!1),qt=new j(",",[new j("=",[lt,Z]),new j("=",[Ct,$])]);w.prepend([new be(P.goal.replace(qt),P.substitution,P)])}},"arg/3":function(w,P,y){if(x.type.is_variable(y.args[0])||x.type.is_variable(y.args[1]))w.throw_error(x.error.instantiation(y.indicator));else if(y.args[0].value<0)w.throw_error(x.error.domain("not_less_than_zero",y.args[0],y.indicator));else if(!x.type.is_compound(y.args[1]))w.throw_error(x.error.type("compound",y.args[1],y.indicator));else{var F=y.args[0].value;if(F>0&&F<=y.args[1].args.length){var z=new j("=",[y.args[1].args[F-1],y.args[2]]);w.prepend([new be(P.goal.replace(z),P.substitution,P)])}}},"=../2":function(w,P,y){var F;if(x.type.is_variable(y.args[0])&&(x.type.is_variable(y.args[1])||x.type.is_non_empty_list(y.args[1])&&x.type.is_variable(y.args[1].args[0])))w.throw_error(x.error.instantiation(y.indicator));else if(!x.type.is_fully_list(y.args[1]))w.throw_error(x.error.type("list",y.args[1],y.indicator));else if(x.type.is_variable(y.args[0])){if(!x.type.is_variable(y.args[1])){var Z=[];for(F=y.args[1].args[1];F.indicator==="./2";)Z.push(F.args[0]),F=F.args[1];x.type.is_variable(y.args[0])&&x.type.is_variable(F)?w.throw_error(x.error.instantiation(y.indicator)):Z.length===0&&x.type.is_compound(y.args[1].args[0])?w.throw_error(x.error.type("atomic",y.args[1].args[0],y.indicator)):Z.length>0&&(x.type.is_compound(y.args[1].args[0])||x.type.is_number(y.args[1].args[0]))?w.throw_error(x.error.type("atom",y.args[1].args[0],y.indicator)):Z.length===0?w.prepend([new be(P.goal.replace(new j("=",[y.args[1].args[0],y.args[0]],P)),P.substitution,P)]):w.prepend([new be(P.goal.replace(new j("=",[new j(y.args[1].args[0].id,Z),y.args[0]])),P.substitution,P)])}}else{if(x.type.is_atomic(y.args[0]))F=new j(".",[y.args[0],new j("[]")]);else{F=new j("[]");for(var z=y.args[0].args.length-1;z>=0;z--)F=new j(".",[y.args[0].args[z],F]);F=new j(".",[new j(y.args[0].id),F])}w.prepend([new be(P.goal.replace(new j("=",[F,y.args[1]])),P.substitution,P)])}},"copy_term/2":function(w,P,y){var F=y.args[0].rename(w);w.prepend([new be(P.goal.replace(new j("=",[F,y.args[1]])),P.substitution,P.parent)])},"term_variables/2":function(w,P,y){var F=y.args[0],z=y.args[1];if(!x.type.is_fully_list(z))w.throw_error(x.error.type("list",z,y.indicator));else{var Z=g(s(ye(F.variables()),function($){return new De($)}));w.prepend([new be(P.goal.replace(new j("=",[z,Z])),P.substitution,P)])}},"clause/2":function(w,P,y){if(x.type.is_variable(y.args[0]))w.throw_error(x.error.instantiation(y.indicator));else if(!x.type.is_callable(y.args[0]))w.throw_error(x.error.type("callable",y.args[0],y.indicator));else if(!x.type.is_variable(y.args[1])&&!x.type.is_callable(y.args[1]))w.throw_error(x.error.type("callable",y.args[1],y.indicator));else if(w.session.rules[y.args[0].indicator]!==void 0)if(w.is_public_predicate(y.args[0].indicator)){var F=[];for(var z in w.session.rules[y.args[0].indicator])if(w.session.rules[y.args[0].indicator].hasOwnProperty(z)){var Z=w.session.rules[y.args[0].indicator][z];w.session.renamed_variables={},Z=Z.rename(w),Z.body===null&&(Z.body=new j("true"));var $=new j(",",[new j("=",[Z.head,y.args[0]]),new j("=",[Z.body,y.args[1]])]);F.push(new be(P.goal.replace($),P.substitution,P))}w.prepend(F)}else w.throw_error(x.error.permission("access","private_procedure",y.args[0].indicator,y.indicator))},"current_predicate/1":function(w,P,y){var F=y.args[0];if(!x.type.is_variable(F)&&(!x.type.is_compound(F)||F.indicator!=="//2"))w.throw_error(x.error.type("predicate_indicator",F,y.indicator));else if(!x.type.is_variable(F)&&!x.type.is_variable(F.args[0])&&!x.type.is_atom(F.args[0]))w.throw_error(x.error.type("atom",F.args[0],y.indicator));else if(!x.type.is_variable(F)&&!x.type.is_variable(F.args[1])&&!x.type.is_integer(F.args[1]))w.throw_error(x.error.type("integer",F.args[1],y.indicator));else{var z=[];for(var Z in w.session.rules)if(w.session.rules.hasOwnProperty(Z)){var $=Z.lastIndexOf("/"),oe=Z.substr(0,$),xe=parseInt(Z.substr($+1,Z.length-($+1))),Re=new j("/",[new j(oe),new Te(xe,!1)]),lt=new j("=",[Re,F]);z.push(new be(P.goal.replace(lt),P.substitution,P))}w.prepend(z)}},"asserta/1":function(w,P,y){if(x.type.is_variable(y.args[0]))w.throw_error(x.error.instantiation(y.indicator));else if(!x.type.is_callable(y.args[0]))w.throw_error(x.error.type("callable",y.args[0],y.indicator));else{var F,z;y.args[0].indicator===":-/2"?(F=y.args[0].args[0],z=Ce(y.args[0].args[1])):(F=y.args[0],z=null),x.type.is_callable(F)?z!==null&&!x.type.is_callable(z)?w.throw_error(x.error.type("callable",z,y.indicator)):w.is_public_predicate(F.indicator)?(w.session.rules[F.indicator]===void 0&&(w.session.rules[F.indicator]=[]),w.session.public_predicates[F.indicator]=!0,w.session.rules[F.indicator]=[new Ve(F,z,!0)].concat(w.session.rules[F.indicator]),w.success(P)):w.throw_error(x.error.permission("modify","static_procedure",F.indicator,y.indicator)):w.throw_error(x.error.type("callable",F,y.indicator))}},"assertz/1":function(w,P,y){if(x.type.is_variable(y.args[0]))w.throw_error(x.error.instantiation(y.indicator));else if(!x.type.is_callable(y.args[0]))w.throw_error(x.error.type("callable",y.args[0],y.indicator));else{var F,z;y.args[0].indicator===":-/2"?(F=y.args[0].args[0],z=Ce(y.args[0].args[1])):(F=y.args[0],z=null),x.type.is_callable(F)?z!==null&&!x.type.is_callable(z)?w.throw_error(x.error.type("callable",z,y.indicator)):w.is_public_predicate(F.indicator)?(w.session.rules[F.indicator]===void 0&&(w.session.rules[F.indicator]=[]),w.session.public_predicates[F.indicator]=!0,w.session.rules[F.indicator].push(new Ve(F,z,!0)),w.success(P)):w.throw_error(x.error.permission("modify","static_procedure",F.indicator,y.indicator)):w.throw_error(x.error.type("callable",F,y.indicator))}},"retract/1":function(w,P,y){if(x.type.is_variable(y.args[0]))w.throw_error(x.error.instantiation(y.indicator));else if(!x.type.is_callable(y.args[0]))w.throw_error(x.error.type("callable",y.args[0],y.indicator));else{var F,z;if(y.args[0].indicator===":-/2"?(F=y.args[0].args[0],z=y.args[0].args[1]):(F=y.args[0],z=new j("true")),typeof P.retract>"u")if(w.is_public_predicate(F.indicator)){if(w.session.rules[F.indicator]!==void 0){for(var Z=[],$=0;$w.get_flag("max_arity").value)w.throw_error(x.error.representation("max_arity",y.indicator));else{var F=y.args[0].args[0].id+"/"+y.args[0].args[1].value;w.is_public_predicate(F)?(delete w.session.rules[F],w.success(P)):w.throw_error(x.error.permission("modify","static_procedure",F,y.indicator))}},"atom_length/2":function(w,P,y){if(x.type.is_variable(y.args[0]))w.throw_error(x.error.instantiation(y.indicator));else if(!x.type.is_atom(y.args[0]))w.throw_error(x.error.type("atom",y.args[0],y.indicator));else if(!x.type.is_variable(y.args[1])&&!x.type.is_integer(y.args[1]))w.throw_error(x.error.type("integer",y.args[1],y.indicator));else if(x.type.is_integer(y.args[1])&&y.args[1].value<0)w.throw_error(x.error.domain("not_less_than_zero",y.args[1],y.indicator));else{var F=new Te(y.args[0].id.length,!1);w.prepend([new be(P.goal.replace(new j("=",[F,y.args[1]])),P.substitution,P)])}},"atom_concat/3":function(w,P,y){var F,z,Z=y.args[0],$=y.args[1],oe=y.args[2];if(x.type.is_variable(oe)&&(x.type.is_variable(Z)||x.type.is_variable($)))w.throw_error(x.error.instantiation(y.indicator));else if(!x.type.is_variable(Z)&&!x.type.is_atom(Z))w.throw_error(x.error.type("atom",Z,y.indicator));else if(!x.type.is_variable($)&&!x.type.is_atom($))w.throw_error(x.error.type("atom",$,y.indicator));else if(!x.type.is_variable(oe)&&!x.type.is_atom(oe))w.throw_error(x.error.type("atom",oe,y.indicator));else{var xe=x.type.is_variable(Z),Re=x.type.is_variable($);if(!xe&&!Re)z=new j("=",[oe,new j(Z.id+$.id)]),w.prepend([new be(P.goal.replace(z),P.substitution,P)]);else if(xe&&!Re)F=oe.id.substr(0,oe.id.length-$.id.length),F+$.id===oe.id&&(z=new j("=",[Z,new j(F)]),w.prepend([new be(P.goal.replace(z),P.substitution,P)]));else if(Re&&!xe)F=oe.id.substr(Z.id.length),Z.id+F===oe.id&&(z=new j("=",[$,new j(F)]),w.prepend([new be(P.goal.replace(z),P.substitution,P)]));else{for(var lt=[],Ct=0;Ct<=oe.id.length;Ct++){var qt=new j(oe.id.substr(0,Ct)),ir=new j(oe.id.substr(Ct));z=new j(",",[new j("=",[qt,Z]),new j("=",[ir,$])]),lt.push(new be(P.goal.replace(z),P.substitution,P))}w.prepend(lt)}}},"sub_atom/5":function(w,P,y){var F,z=y.args[0],Z=y.args[1],$=y.args[2],oe=y.args[3],xe=y.args[4];if(x.type.is_variable(z))w.throw_error(x.error.instantiation(y.indicator));else if(!x.type.is_variable(Z)&&!x.type.is_integer(Z))w.throw_error(x.error.type("integer",Z,y.indicator));else if(!x.type.is_variable($)&&!x.type.is_integer($))w.throw_error(x.error.type("integer",$,y.indicator));else if(!x.type.is_variable(oe)&&!x.type.is_integer(oe))w.throw_error(x.error.type("integer",oe,y.indicator));else if(x.type.is_integer(Z)&&Z.value<0)w.throw_error(x.error.domain("not_less_than_zero",Z,y.indicator));else if(x.type.is_integer($)&&$.value<0)w.throw_error(x.error.domain("not_less_than_zero",$,y.indicator));else if(x.type.is_integer(oe)&&oe.value<0)w.throw_error(x.error.domain("not_less_than_zero",oe,y.indicator));else{var Re=[],lt=[],Ct=[];if(x.type.is_variable(Z))for(F=0;F<=z.id.length;F++)Re.push(F);else Re.push(Z.value);if(x.type.is_variable($))for(F=0;F<=z.id.length;F++)lt.push(F);else lt.push($.value);if(x.type.is_variable(oe))for(F=0;F<=z.id.length;F++)Ct.push(F);else Ct.push(oe.value);var qt=[];for(var ir in Re)if(Re.hasOwnProperty(ir)){F=Re[ir];for(var bt in lt)if(lt.hasOwnProperty(bt)){var gn=lt[bt],br=z.id.length-F-gn;if(e(Ct,br)!==-1&&F+gn+br===z.id.length){var Ir=z.id.substr(F,gn);if(z.id===z.id.substr(0,F)+Ir+z.id.substr(F+gn,br)){var Or=new j("=",[new j(Ir),xe]),nn=new j("=",[Z,new Te(F)]),ai=new j("=",[$,new Te(gn)]),Io=new j("=",[oe,new Te(br)]),ts=new j(",",[new j(",",[new j(",",[nn,ai]),Io]),Or]);qt.push(new be(P.goal.replace(ts),P.substitution,P))}}}}w.prepend(qt)}},"atom_chars/2":function(w,P,y){var F=y.args[0],z=y.args[1];if(x.type.is_variable(F)&&x.type.is_variable(z))w.throw_error(x.error.instantiation(y.indicator));else if(!x.type.is_variable(F)&&!x.type.is_atom(F))w.throw_error(x.error.type("atom",F,y.indicator));else if(x.type.is_variable(F)){for(var oe=z,xe=x.type.is_variable(F),Re="";oe.indicator==="./2";){if(x.type.is_character(oe.args[0]))Re+=oe.args[0].id;else if(x.type.is_variable(oe.args[0])&&xe){w.throw_error(x.error.instantiation(y.indicator));return}else if(!x.type.is_variable(oe.args[0])){w.throw_error(x.error.type("character",oe.args[0],y.indicator));return}oe=oe.args[1]}x.type.is_variable(oe)&&xe?w.throw_error(x.error.instantiation(y.indicator)):!x.type.is_empty_list(oe)&&!x.type.is_variable(oe)?w.throw_error(x.error.type("list",z,y.indicator)):w.prepend([new be(P.goal.replace(new j("=",[new j(Re),F])),P.substitution,P)])}else{for(var Z=new j("[]"),$=F.id.length-1;$>=0;$--)Z=new j(".",[new j(F.id.charAt($)),Z]);w.prepend([new be(P.goal.replace(new j("=",[z,Z])),P.substitution,P)])}},"atom_codes/2":function(w,P,y){var F=y.args[0],z=y.args[1];if(x.type.is_variable(F)&&x.type.is_variable(z))w.throw_error(x.error.instantiation(y.indicator));else if(!x.type.is_variable(F)&&!x.type.is_atom(F))w.throw_error(x.error.type("atom",F,y.indicator));else if(x.type.is_variable(F)){for(var oe=z,xe=x.type.is_variable(F),Re="";oe.indicator==="./2";){if(x.type.is_character_code(oe.args[0]))Re+=c(oe.args[0].value);else if(x.type.is_variable(oe.args[0])&&xe){w.throw_error(x.error.instantiation(y.indicator));return}else if(!x.type.is_variable(oe.args[0])){w.throw_error(x.error.representation("character_code",y.indicator));return}oe=oe.args[1]}x.type.is_variable(oe)&&xe?w.throw_error(x.error.instantiation(y.indicator)):!x.type.is_empty_list(oe)&&!x.type.is_variable(oe)?w.throw_error(x.error.type("list",z,y.indicator)):w.prepend([new be(P.goal.replace(new j("=",[new j(Re),F])),P.substitution,P)])}else{for(var Z=new j("[]"),$=F.id.length-1;$>=0;$--)Z=new j(".",[new Te(n(F.id,$),!1),Z]);w.prepend([new be(P.goal.replace(new j("=",[z,Z])),P.substitution,P)])}},"char_code/2":function(w,P,y){var F=y.args[0],z=y.args[1];if(x.type.is_variable(F)&&x.type.is_variable(z))w.throw_error(x.error.instantiation(y.indicator));else if(!x.type.is_variable(F)&&!x.type.is_character(F))w.throw_error(x.error.type("character",F,y.indicator));else if(!x.type.is_variable(z)&&!x.type.is_integer(z))w.throw_error(x.error.type("integer",z,y.indicator));else if(!x.type.is_variable(z)&&!x.type.is_character_code(z))w.throw_error(x.error.representation("character_code",y.indicator));else if(x.type.is_variable(z)){var Z=new Te(n(F.id,0),!1);w.prepend([new be(P.goal.replace(new j("=",[Z,z])),P.substitution,P)])}else{var $=new j(c(z.value));w.prepend([new be(P.goal.replace(new j("=",[$,F])),P.substitution,P)])}},"number_chars/2":function(w,P,y){var F,z=y.args[0],Z=y.args[1];if(x.type.is_variable(z)&&x.type.is_variable(Z))w.throw_error(x.error.instantiation(y.indicator));else if(!x.type.is_variable(z)&&!x.type.is_number(z))w.throw_error(x.error.type("number",z,y.indicator));else if(!x.type.is_variable(Z)&&!x.type.is_list(Z))w.throw_error(x.error.type("list",Z,y.indicator));else{var $=x.type.is_variable(z);if(!x.type.is_variable(Z)){var oe=Z,xe=!0;for(F="";oe.indicator==="./2";){if(x.type.is_character(oe.args[0]))F+=oe.args[0].id;else if(x.type.is_variable(oe.args[0]))xe=!1;else if(!x.type.is_variable(oe.args[0])){w.throw_error(x.error.type("character",oe.args[0],y.indicator));return}oe=oe.args[1]}if(xe=xe&&x.type.is_empty_list(oe),!x.type.is_empty_list(oe)&&!x.type.is_variable(oe)){w.throw_error(x.error.type("list",Z,y.indicator));return}if(!xe&&$){w.throw_error(x.error.instantiation(y.indicator));return}else if(xe)if(x.type.is_variable(oe)&&$){w.throw_error(x.error.instantiation(y.indicator));return}else{var Re=w.parse(F),lt=Re.value;!x.type.is_number(lt)||Re.tokens[Re.tokens.length-1].space?w.throw_error(x.error.syntax_by_predicate("parseable_number",y.indicator)):w.prepend([new be(P.goal.replace(new j("=",[z,lt])),P.substitution,P)]);return}}if(!$){F=z.toString();for(var Ct=new j("[]"),qt=F.length-1;qt>=0;qt--)Ct=new j(".",[new j(F.charAt(qt)),Ct]);w.prepend([new be(P.goal.replace(new j("=",[Z,Ct])),P.substitution,P)])}}},"number_codes/2":function(w,P,y){var F,z=y.args[0],Z=y.args[1];if(x.type.is_variable(z)&&x.type.is_variable(Z))w.throw_error(x.error.instantiation(y.indicator));else if(!x.type.is_variable(z)&&!x.type.is_number(z))w.throw_error(x.error.type("number",z,y.indicator));else if(!x.type.is_variable(Z)&&!x.type.is_list(Z))w.throw_error(x.error.type("list",Z,y.indicator));else{var $=x.type.is_variable(z);if(!x.type.is_variable(Z)){var oe=Z,xe=!0;for(F="";oe.indicator==="./2";){if(x.type.is_character_code(oe.args[0]))F+=c(oe.args[0].value);else if(x.type.is_variable(oe.args[0]))xe=!1;else if(!x.type.is_variable(oe.args[0])){w.throw_error(x.error.type("character_code",oe.args[0],y.indicator));return}oe=oe.args[1]}if(xe=xe&&x.type.is_empty_list(oe),!x.type.is_empty_list(oe)&&!x.type.is_variable(oe)){w.throw_error(x.error.type("list",Z,y.indicator));return}if(!xe&&$){w.throw_error(x.error.instantiation(y.indicator));return}else if(xe)if(x.type.is_variable(oe)&&$){w.throw_error(x.error.instantiation(y.indicator));return}else{var Re=w.parse(F),lt=Re.value;!x.type.is_number(lt)||Re.tokens[Re.tokens.length-1].space?w.throw_error(x.error.syntax_by_predicate("parseable_number",y.indicator)):w.prepend([new be(P.goal.replace(new j("=",[z,lt])),P.substitution,P)]);return}}if(!$){F=z.toString();for(var Ct=new j("[]"),qt=F.length-1;qt>=0;qt--)Ct=new j(".",[new Te(n(F,qt),!1),Ct]);w.prepend([new be(P.goal.replace(new j("=",[Z,Ct])),P.substitution,P)])}}},"upcase_atom/2":function(w,P,y){var F=y.args[0],z=y.args[1];x.type.is_variable(F)?w.throw_error(x.error.instantiation(y.indicator)):x.type.is_atom(F)?!x.type.is_variable(z)&&!x.type.is_atom(z)?w.throw_error(x.error.type("atom",z,y.indicator)):w.prepend([new be(P.goal.replace(new j("=",[z,new j(F.id.toUpperCase(),[])])),P.substitution,P)]):w.throw_error(x.error.type("atom",F,y.indicator))},"downcase_atom/2":function(w,P,y){var F=y.args[0],z=y.args[1];x.type.is_variable(F)?w.throw_error(x.error.instantiation(y.indicator)):x.type.is_atom(F)?!x.type.is_variable(z)&&!x.type.is_atom(z)?w.throw_error(x.error.type("atom",z,y.indicator)):w.prepend([new be(P.goal.replace(new j("=",[z,new j(F.id.toLowerCase(),[])])),P.substitution,P)]):w.throw_error(x.error.type("atom",F,y.indicator))},"atomic_list_concat/2":function(w,P,y){var F=y.args[0],z=y.args[1];w.prepend([new be(P.goal.replace(new j("atomic_list_concat",[F,new j("",[]),z])),P.substitution,P)])},"atomic_list_concat/3":function(w,P,y){var F=y.args[0],z=y.args[1],Z=y.args[2];if(x.type.is_variable(z)||x.type.is_variable(F)&&x.type.is_variable(Z))w.throw_error(x.error.instantiation(y.indicator));else if(!x.type.is_variable(F)&&!x.type.is_list(F))w.throw_error(x.error.type("list",F,y.indicator));else if(!x.type.is_variable(Z)&&!x.type.is_atom(Z))w.throw_error(x.error.type("atom",Z,y.indicator));else if(x.type.is_variable(Z)){for(var oe="",xe=F;x.type.is_term(xe)&&xe.indicator==="./2";){if(!x.type.is_atom(xe.args[0])&&!x.type.is_number(xe.args[0])){w.throw_error(x.error.type("atomic",xe.args[0],y.indicator));return}oe!==""&&(oe+=z.id),x.type.is_atom(xe.args[0])?oe+=xe.args[0].id:oe+=""+xe.args[0].value,xe=xe.args[1]}oe=new j(oe,[]),x.type.is_variable(xe)?w.throw_error(x.error.instantiation(y.indicator)):!x.type.is_term(xe)||xe.indicator!=="[]/0"?w.throw_error(x.error.type("list",F,y.indicator)):w.prepend([new be(P.goal.replace(new j("=",[oe,Z])),P.substitution,P)])}else{var $=g(s(Z.id.split(z.id),function(Re){return new j(Re,[])}));w.prepend([new be(P.goal.replace(new j("=",[$,F])),P.substitution,P)])}},"@=/2":function(w,P,y){x.compare(y.args[0],y.args[1])>0&&w.success(P)},"@>=/2":function(w,P,y){x.compare(y.args[0],y.args[1])>=0&&w.success(P)},"compare/3":function(w,P,y){var F=y.args[0],z=y.args[1],Z=y.args[2];if(!x.type.is_variable(F)&&!x.type.is_atom(F))w.throw_error(x.error.type("atom",F,y.indicator));else if(x.type.is_atom(F)&&["<",">","="].indexOf(F.id)===-1)w.throw_error(x.type.domain("order",F,y.indicator));else{var $=x.compare(z,Z);$=$===0?"=":$===-1?"<":">",w.prepend([new be(P.goal.replace(new j("=",[F,new j($,[])])),P.substitution,P)])}},"is/2":function(w,P,y){var F=y.args[1].interpret(w);x.type.is_number(F)?w.prepend([new be(P.goal.replace(new j("=",[y.args[0],F],w.level)),P.substitution,P)]):w.throw_error(F)},"between/3":function(w,P,y){var F=y.args[0],z=y.args[1],Z=y.args[2];if(x.type.is_variable(F)||x.type.is_variable(z))w.throw_error(x.error.instantiation(y.indicator));else if(!x.type.is_integer(F))w.throw_error(x.error.type("integer",F,y.indicator));else if(!x.type.is_integer(z))w.throw_error(x.error.type("integer",z,y.indicator));else if(!x.type.is_variable(Z)&&!x.type.is_integer(Z))w.throw_error(x.error.type("integer",Z,y.indicator));else if(x.type.is_variable(Z)){var $=[new be(P.goal.replace(new j("=",[Z,F])),P.substitution,P)];F.value=Z.value&&w.success(P)},"succ/2":function(w,P,y){var F=y.args[0],z=y.args[1];x.type.is_variable(F)&&x.type.is_variable(z)?w.throw_error(x.error.instantiation(y.indicator)):!x.type.is_variable(F)&&!x.type.is_integer(F)?w.throw_error(x.error.type("integer",F,y.indicator)):!x.type.is_variable(z)&&!x.type.is_integer(z)?w.throw_error(x.error.type("integer",z,y.indicator)):!x.type.is_variable(F)&&F.value<0?w.throw_error(x.error.domain("not_less_than_zero",F,y.indicator)):!x.type.is_variable(z)&&z.value<0?w.throw_error(x.error.domain("not_less_than_zero",z,y.indicator)):(x.type.is_variable(z)||z.value>0)&&(x.type.is_variable(F)?w.prepend([new be(P.goal.replace(new j("=",[F,new Te(z.value-1,!1)])),P.substitution,P)]):w.prepend([new be(P.goal.replace(new j("=",[z,new Te(F.value+1,!1)])),P.substitution,P)]))},"=:=/2":function(w,P,y){var F=x.arithmetic_compare(w,y.args[0],y.args[1]);x.type.is_term(F)?w.throw_error(F):F===0&&w.success(P)},"=\\=/2":function(w,P,y){var F=x.arithmetic_compare(w,y.args[0],y.args[1]);x.type.is_term(F)?w.throw_error(F):F!==0&&w.success(P)},"/2":function(w,P,y){var F=x.arithmetic_compare(w,y.args[0],y.args[1]);x.type.is_term(F)?w.throw_error(F):F>0&&w.success(P)},">=/2":function(w,P,y){var F=x.arithmetic_compare(w,y.args[0],y.args[1]);x.type.is_term(F)?w.throw_error(F):F>=0&&w.success(P)},"var/1":function(w,P,y){x.type.is_variable(y.args[0])&&w.success(P)},"atom/1":function(w,P,y){x.type.is_atom(y.args[0])&&w.success(P)},"atomic/1":function(w,P,y){x.type.is_atomic(y.args[0])&&w.success(P)},"compound/1":function(w,P,y){x.type.is_compound(y.args[0])&&w.success(P)},"integer/1":function(w,P,y){x.type.is_integer(y.args[0])&&w.success(P)},"float/1":function(w,P,y){x.type.is_float(y.args[0])&&w.success(P)},"number/1":function(w,P,y){x.type.is_number(y.args[0])&&w.success(P)},"nonvar/1":function(w,P,y){x.type.is_variable(y.args[0])||w.success(P)},"ground/1":function(w,P,y){y.variables().length===0&&w.success(P)},"acyclic_term/1":function(w,P,y){for(var F=P.substitution.apply(P.substitution),z=y.args[0].variables(),Z=0;Z0?bt[bt.length-1]:null,bt!==null&&(qt=W(w,bt,0,w.__get_max_priority(),!1))}if(qt.type===p&&qt.len===bt.length-1&&gn.value==="."){qt=qt.value.rename(w);var br=new j("=",[z,qt]);if(oe.variables){var Ir=g(s(ye(qt.variables()),function(Or){return new De(Or)}));br=new j(",",[br,new j("=",[oe.variables,Ir])])}if(oe.variable_names){var Ir=g(s(ye(qt.variables()),function(nn){var ai;for(ai in w.session.renamed_variables)if(w.session.renamed_variables.hasOwnProperty(ai)&&w.session.renamed_variables[ai]===nn)break;return new j("=",[new j(ai,[]),new De(nn)])}));br=new j(",",[br,new j("=",[oe.variable_names,Ir])])}if(oe.singletons){var Ir=g(s(new Ve(qt,null).singleton_variables(),function(nn){var ai;for(ai in w.session.renamed_variables)if(w.session.renamed_variables.hasOwnProperty(ai)&&w.session.renamed_variables[ai]===nn)break;return new j("=",[new j(ai,[]),new De(nn)])}));br=new j(",",[br,new j("=",[oe.singletons,Ir])])}w.prepend([new be(P.goal.replace(br),P.substitution,P)])}else qt.type===p?w.throw_error(x.error.syntax(bt[qt.len],"unexpected token",!1)):w.throw_error(qt.value)}}},"write/1":function(w,P,y){var F=y.args[0];w.prepend([new be(P.goal.replace(new j(",",[new j("current_output",[new De("S")]),new j("write",[new De("S"),F])])),P.substitution,P)])},"write/2":function(w,P,y){var F=y.args[0],z=y.args[1];w.prepend([new be(P.goal.replace(new j("write_term",[F,z,new j(".",[new j("quoted",[new j("false",[])]),new j(".",[new j("ignore_ops",[new j("false")]),new j(".",[new j("numbervars",[new j("true")]),new j("[]",[])])])])])),P.substitution,P)])},"writeq/1":function(w,P,y){var F=y.args[0];w.prepend([new be(P.goal.replace(new j(",",[new j("current_output",[new De("S")]),new j("writeq",[new De("S"),F])])),P.substitution,P)])},"writeq/2":function(w,P,y){var F=y.args[0],z=y.args[1];w.prepend([new be(P.goal.replace(new j("write_term",[F,z,new j(".",[new j("quoted",[new j("true",[])]),new j(".",[new j("ignore_ops",[new j("false")]),new j(".",[new j("numbervars",[new j("true")]),new j("[]",[])])])])])),P.substitution,P)])},"write_canonical/1":function(w,P,y){var F=y.args[0];w.prepend([new be(P.goal.replace(new j(",",[new j("current_output",[new De("S")]),new j("write_canonical",[new De("S"),F])])),P.substitution,P)])},"write_canonical/2":function(w,P,y){var F=y.args[0],z=y.args[1];w.prepend([new be(P.goal.replace(new j("write_term",[F,z,new j(".",[new j("quoted",[new j("true",[])]),new j(".",[new j("ignore_ops",[new j("true")]),new j(".",[new j("numbervars",[new j("false")]),new j("[]",[])])])])])),P.substitution,P)])},"write_term/2":function(w,P,y){var F=y.args[0],z=y.args[1];w.prepend([new be(P.goal.replace(new j(",",[new j("current_output",[new De("S")]),new j("write_term",[new De("S"),F,z])])),P.substitution,P)])},"write_term/3":function(w,P,y){var F=y.args[0],z=y.args[1],Z=y.args[2],$=x.type.is_stream(F)?F:w.get_stream_by_alias(F.id);if(x.type.is_variable(F)||x.type.is_variable(Z))w.throw_error(x.error.instantiation(y.indicator));else if(!x.type.is_list(Z))w.throw_error(x.error.type("list",Z,y.indicator));else if(!x.type.is_stream(F)&&!x.type.is_atom(F))w.throw_error(x.error.domain("stream_or_alias",F,y.indicator));else if(!x.type.is_stream($)||$.stream===null)w.throw_error(x.error.existence("stream",F,y.indicator));else if($.input)w.throw_error(x.error.permission("output","stream",F,y.indicator));else if($.type==="binary")w.throw_error(x.error.permission("output","binary_stream",F,y.indicator));else if($.position==="past_end_of_stream"&&$.eof_action==="error")w.throw_error(x.error.permission("output","past_end_of_stream",F,y.indicator));else{for(var oe={},xe=Z,Re;x.type.is_term(xe)&&xe.indicator==="./2";){if(Re=xe.args[0],x.type.is_variable(Re)){w.throw_error(x.error.instantiation(y.indicator));return}else if(!x.type.is_write_option(Re)){w.throw_error(x.error.domain("write_option",Re,y.indicator));return}oe[Re.id]=Re.args[0].id==="true",xe=xe.args[1]}if(xe.indicator!=="[]/0"){x.type.is_variable(xe)?w.throw_error(x.error.instantiation(y.indicator)):w.throw_error(x.error.type("list",Z,y.indicator));return}else{oe.session=w.session;var lt=z.toString(oe);$.stream.put(lt,$.position),typeof $.position=="number"&&($.position+=lt.length),w.success(P)}}},"halt/0":function(w,P,y){w.points=[]},"halt/1":function(w,P,y){var F=y.args[0];x.type.is_variable(F)?w.throw_error(x.error.instantiation(y.indicator)):x.type.is_integer(F)?w.points=[]:w.throw_error(x.error.type("integer",F,y.indicator))},"current_prolog_flag/2":function(w,P,y){var F=y.args[0],z=y.args[1];if(!x.type.is_variable(F)&&!x.type.is_atom(F))w.throw_error(x.error.type("atom",F,y.indicator));else if(!x.type.is_variable(F)&&!x.type.is_flag(F))w.throw_error(x.error.domain("prolog_flag",F,y.indicator));else{var Z=[];for(var $ in x.flag)if(x.flag.hasOwnProperty($)){var oe=new j(",",[new j("=",[new j($),F]),new j("=",[w.get_flag($),z])]);Z.push(new be(P.goal.replace(oe),P.substitution,P))}w.prepend(Z)}},"set_prolog_flag/2":function(w,P,y){var F=y.args[0],z=y.args[1];x.type.is_variable(F)||x.type.is_variable(z)?w.throw_error(x.error.instantiation(y.indicator)):x.type.is_atom(F)?x.type.is_flag(F)?x.type.is_value_flag(F,z)?x.type.is_modifiable_flag(F)?(w.session.flag[F.id]=z,w.success(P)):w.throw_error(x.error.permission("modify","flag",F)):w.throw_error(x.error.domain("flag_value",new j("+",[F,z]),y.indicator)):w.throw_error(x.error.domain("prolog_flag",F,y.indicator)):w.throw_error(x.error.type("atom",F,y.indicator))}},flag:{bounded:{allowed:[new j("true"),new j("false")],value:new j("true"),changeable:!1},max_integer:{allowed:[new Te(Number.MAX_SAFE_INTEGER)],value:new Te(Number.MAX_SAFE_INTEGER),changeable:!1},min_integer:{allowed:[new Te(Number.MIN_SAFE_INTEGER)],value:new Te(Number.MIN_SAFE_INTEGER),changeable:!1},integer_rounding_function:{allowed:[new j("down"),new j("toward_zero")],value:new j("toward_zero"),changeable:!1},char_conversion:{allowed:[new j("on"),new j("off")],value:new j("on"),changeable:!0},debug:{allowed:[new j("on"),new j("off")],value:new j("off"),changeable:!0},max_arity:{allowed:[new j("unbounded")],value:new j("unbounded"),changeable:!1},unknown:{allowed:[new j("error"),new j("fail"),new j("warning")],value:new j("error"),changeable:!0},double_quotes:{allowed:[new j("chars"),new j("codes"),new j("atom")],value:new j("codes"),changeable:!0},occurs_check:{allowed:[new j("false"),new j("true")],value:new j("false"),changeable:!0},dialect:{allowed:[new j("tau")],value:new j("tau"),changeable:!1},version_data:{allowed:[new j("tau",[new Te(t.major,!1),new Te(t.minor,!1),new Te(t.patch,!1),new j(t.status)])],value:new j("tau",[new Te(t.major,!1),new Te(t.minor,!1),new Te(t.patch,!1),new j(t.status)]),changeable:!1},nodejs:{allowed:[new j("yes"),new j("no")],value:new j(typeof ec<"u"&&ec.exports?"yes":"no"),changeable:!1}},unify:function(w,P,y){y=y===void 0?!1:y;for(var F=[{left:w,right:P}],z={};F.length!==0;){var Z=F.pop();if(w=Z.left,P=Z.right,x.type.is_term(w)&&x.type.is_term(P)){if(w.indicator!==P.indicator)return null;for(var $=0;$z.value?1:0:z}else return F},operate:function(w,P){if(x.type.is_operator(P)){for(var y=x.type.is_operator(P),F=[],z,Z=!1,$=0;$w.get_flag("max_integer").value||z0?w.start+w.matches[0].length:w.start,z=y?new j("token_not_found"):new j("found",[new j(w.value.toString())]),Z=new j(".",[new j("line",[new Te(w.line+1)]),new j(".",[new j("column",[new Te(F+1)]),new j(".",[z,new j("[]",[])])])]);return new j("error",[new j("syntax_error",[new j(P)]),Z])},syntax_by_predicate:function(w,P){return new j("error",[new j("syntax_error",[new j(w)]),X(P)])}},warning:{singleton:function(w,P,y){for(var F=new j("[]"),z=w.length-1;z>=0;z--)F=new j(".",[new De(w[z]),F]);return new j("warning",[new j("singleton_variables",[F,X(P)]),new j(".",[new j("line",[new Te(y,!1)]),new j("[]")])])},failed_goal:function(w,P){return new j("warning",[new j("failed_goal",[w]),new j(".",[new j("line",[new Te(P,!1)]),new j("[]")])])}},format_variable:function(w){return"_"+w},format_answer:function(w,P,F){P instanceof ke&&(P=P.thread);var F=F||{};if(F.session=P?P.session:void 0,x.type.is_error(w))return"uncaught exception: "+w.args[0].toString();if(w===!1)return"false.";if(w===null)return"limit exceeded ;";var z=0,Z="";if(x.type.is_substitution(w)){var $=w.domain(!0);w=w.filter(function(Re,lt){return!x.type.is_variable(lt)||$.indexOf(lt.id)!==-1&&Re!==lt.id})}for(var oe in w.links)w.links.hasOwnProperty(oe)&&(z++,Z!==""&&(Z+=", "),Z+=oe.toString(F)+" = "+w.links[oe].toString(F));var xe=typeof P>"u"||P.points.length>0?" ;":".";return z===0?"true"+xe:Z+xe},flatten_error:function(w){if(!x.type.is_error(w))return null;w=w.args[0];var P={};return P.type=w.args[0].id,P.thrown=P.type==="syntax_error"?null:w.args[1].id,P.expected=null,P.found=null,P.representation=null,P.existence=null,P.existence_type=null,P.line=null,P.column=null,P.permission_operation=null,P.permission_type=null,P.evaluation_type=null,P.type==="type_error"||P.type==="domain_error"?(P.expected=w.args[0].args[0].id,P.found=w.args[0].args[1].toString()):P.type==="syntax_error"?w.args[1].indicator==="./2"?(P.expected=w.args[0].args[0].id,P.found=w.args[1].args[1].args[1].args[0],P.found=P.found.id==="token_not_found"?P.found.id:P.found.args[0].id,P.line=w.args[1].args[0].args[0].value,P.column=w.args[1].args[1].args[0].args[0].value):P.thrown=w.args[1].id:P.type==="permission_error"?(P.found=w.args[0].args[2].toString(),P.permission_operation=w.args[0].args[0].id,P.permission_type=w.args[0].args[1].id):P.type==="evaluation_error"?P.evaluation_type=w.args[0].args[0].id:P.type==="representation_error"?P.representation=w.args[0].args[0].id:P.type==="existence_error"&&(P.existence=w.args[0].args[1].toString(),P.existence_type=w.args[0].args[0].id),P},create:function(w){return new x.type.Session(w)}};typeof ec<"u"?ec.exports=x:window.pl=x})()});function hEe(t,e,r){t.prepend(r.map(s=>new hl.default.type.State(e.goal.replace(s),e.substitution,e)))}function k5(t){let e=dEe.get(t.session);if(e==null)throw new Error("Assertion failed: A project should have been registered for the active session");return e}function mEe(t,e){dEe.set(t,e),t.consult(`:- use_module(library(${qct.id})).`)}var hl,gEe,J0,jct,Gct,dEe,qct,yEe=Ze(()=>{Ge();ql();hl=ut(x5()),gEe=ut(Ie("vm")),{is_atom:J0,is_variable:jct,is_instantiated_list:Gct}=hl.default.type;dEe=new WeakMap;qct=new hl.default.type.Module("constraints",{"project_workspaces_by_descriptor/3":(t,e,r)=>{let[s,a,n]=r.args;if(!J0(s)||!J0(a)){t.throw_error(hl.default.error.instantiation(r.indicator));return}let c=G.parseIdent(s.id),f=G.makeDescriptor(c,a.id),h=k5(t).tryWorkspaceByDescriptor(f);jct(n)&&h!==null&&hEe(t,e,[new hl.default.type.Term("=",[n,new hl.default.type.Term(String(h.relativeCwd))])]),J0(n)&&h!==null&&h.relativeCwd===n.id&&t.success(e)},"workspace_field/3":(t,e,r)=>{let[s,a,n]=r.args;if(!J0(s)||!J0(a)){t.throw_error(hl.default.error.instantiation(r.indicator));return}let f=k5(t).tryWorkspaceByCwd(s.id);if(f==null)return;let p=va(f.manifest.raw,a.id);typeof p>"u"||hEe(t,e,[new hl.default.type.Term("=",[n,new hl.default.type.Term(typeof p=="object"?JSON.stringify(p):p)])])},"workspace_field_test/3":(t,e,r)=>{let[s,a,n]=r.args;t.prepend([new hl.default.type.State(e.goal.replace(new hl.default.type.Term("workspace_field_test",[s,a,n,new hl.default.type.Term("[]",[])])),e.substitution,e)])},"workspace_field_test/4":(t,e,r)=>{let[s,a,n,c]=r.args;if(!J0(s)||!J0(a)||!J0(n)||!Gct(c)){t.throw_error(hl.default.error.instantiation(r.indicator));return}let p=k5(t).tryWorkspaceByCwd(s.id);if(p==null)return;let h=va(p.manifest.raw,a.id);if(typeof h>"u")return;let E={$$:h};for(let[S,b]of c.toJavaScript().entries())E[`$${S}`]=b;gEe.default.runInNewContext(n.id,E)&&t.success(e)}},["project_workspaces_by_descriptor/3","workspace_field/3","workspace_field_test/3","workspace_field_test/4"])});var aS={};Vt(aS,{Constraints:()=>R5,DependencyType:()=>wEe});function go(t){if(t instanceof KC.default.type.Num)return t.value;if(t instanceof KC.default.type.Term)switch(t.indicator){case"throw/1":return go(t.args[0]);case"error/1":return go(t.args[0]);case"error/2":if(t.args[0]instanceof KC.default.type.Term&&t.args[0].indicator==="syntax_error/1")return Object.assign(go(t.args[0]),...go(t.args[1]));{let e=go(t.args[0]);return e.message+=` (in ${go(t.args[1])})`,e}case"syntax_error/1":return new jt(43,`Syntax error: ${go(t.args[0])}`);case"existence_error/2":return new jt(44,`Existence error: ${go(t.args[0])} ${go(t.args[1])} not found`);case"instantiation_error/0":return new jt(75,"Instantiation error: an argument is variable when an instantiated argument was expected");case"line/1":return{line:go(t.args[0])};case"column/1":return{column:go(t.args[0])};case"found/1":return{found:go(t.args[0])};case"./2":return[go(t.args[0])].concat(go(t.args[1]));case"//2":return`${go(t.args[0])}/${go(t.args[1])}`;default:return t.id}throw`couldn't pretty print because of unsupported node ${t}`}function IEe(t){let e;try{e=go(t)}catch(r){throw typeof r=="string"?new jt(42,`Unknown error: ${t} (note: ${r})`):r}return typeof e.line<"u"&&typeof e.column<"u"&&(e.message+=` at line ${e.line}, column ${e.column}`),e}function bm(t){return t.id==="null"?null:`${t.toJavaScript()}`}function Wct(t){if(t.id==="null")return null;{let e=t.toJavaScript();if(typeof e!="string")return JSON.stringify(e);try{return JSON.stringify(JSON.parse(e))}catch{return JSON.stringify(e)}}}function K0(t){return typeof t=="string"?`'${t}'`:"[]"}var CEe,KC,wEe,EEe,Q5,R5,lS=Ze(()=>{Ge();Ge();Dt();CEe=ut(Xye()),KC=ut(x5());iS();yEe();(0,CEe.default)(KC.default);wEe=(s=>(s.Dependencies="dependencies",s.DevDependencies="devDependencies",s.PeerDependencies="peerDependencies",s))(wEe||{}),EEe=["dependencies","devDependencies","peerDependencies"];Q5=class{constructor(e,r){let s=1e3*e.workspaces.length;this.session=KC.default.create(s),mEe(this.session,e),this.session.consult(":- use_module(library(lists))."),this.session.consult(r)}fetchNextAnswer(){return new Promise(e=>{this.session.answer(r=>{e(r)})})}async*makeQuery(e){let r=this.session.query(e);if(r!==!0)throw IEe(r);for(;;){let s=await this.fetchNextAnswer();if(s===null)throw new jt(79,"Resolution limit exceeded");if(!s)break;if(s.id==="throw")throw IEe(s);yield s}}};R5=class t{constructor(e){this.source="";this.project=e;let r=e.configuration.get("constraintsPath");ce.existsSync(r)&&(this.source=ce.readFileSync(r,"utf8"))}static async find(e){return new t(e)}getProjectDatabase(){let e="";for(let r of EEe)e+=`dependency_type(${r}). `;for(let r of this.project.workspacesByCwd.values()){let s=r.relativeCwd;e+=`workspace(${K0(s)}). `,e+=`workspace_ident(${K0(s)}, ${K0(G.stringifyIdent(r.anchoredLocator))}). `,e+=`workspace_version(${K0(s)}, ${K0(r.manifest.version)}). `;for(let a of EEe)for(let n of r.manifest[a].values())e+=`workspace_has_dependency(${K0(s)}, ${K0(G.stringifyIdent(n))}, ${K0(n.range)}, ${a}). `}return e+=`workspace(_) :- false. `,e+=`workspace_ident(_, _) :- false. `,e+=`workspace_version(_, _) :- false. `,e+=`workspace_has_dependency(_, _, _, _) :- false. `,e}getDeclarations(){let e="";return e+=`gen_enforced_dependency(_, _, _, _) :- false. `,e+=`gen_enforced_field(_, _, _) :- false. `,e}get fullSource(){return`${this.getProjectDatabase()} ${this.source} ${this.getDeclarations()}`}createSession(){return new Q5(this.project,this.fullSource)}async processClassic(){let e=this.createSession();return{enforcedDependencies:await this.genEnforcedDependencies(e),enforcedFields:await this.genEnforcedFields(e)}}async process(){let{enforcedDependencies:e,enforcedFields:r}=await this.processClassic(),s=new Map;for(let{workspace:a,dependencyIdent:n,dependencyRange:c,dependencyType:f}of e){let p=nS([f,G.stringifyIdent(n)]),h=je.getMapWithDefault(s,a.cwd);je.getMapWithDefault(h,p).set(c??void 0,new Set)}for(let{workspace:a,fieldPath:n,fieldValue:c}of r){let f=nS(n),p=je.getMapWithDefault(s,a.cwd);je.getMapWithDefault(p,f).set(JSON.parse(c)??void 0,new Set)}return{manifestUpdates:s,reportedErrors:new Map}}async genEnforcedDependencies(e){let r=[];for await(let s of e.makeQuery("workspace(WorkspaceCwd), dependency_type(DependencyType), gen_enforced_dependency(WorkspaceCwd, DependencyIdent, DependencyRange, DependencyType).")){let a=J.resolve(this.project.cwd,bm(s.links.WorkspaceCwd)),n=bm(s.links.DependencyIdent),c=bm(s.links.DependencyRange),f=bm(s.links.DependencyType);if(a===null||n===null)throw new Error("Invalid rule");let p=this.project.getWorkspaceByCwd(a),h=G.parseIdent(n);r.push({workspace:p,dependencyIdent:h,dependencyRange:c,dependencyType:f})}return je.sortMap(r,[({dependencyRange:s})=>s!==null?"0":"1",({workspace:s})=>G.stringifyIdent(s.anchoredLocator),({dependencyIdent:s})=>G.stringifyIdent(s)])}async genEnforcedFields(e){let r=[];for await(let s of e.makeQuery("workspace(WorkspaceCwd), gen_enforced_field(WorkspaceCwd, FieldPath, FieldValue).")){let a=J.resolve(this.project.cwd,bm(s.links.WorkspaceCwd)),n=bm(s.links.FieldPath),c=Wct(s.links.FieldValue);if(a===null||n===null)throw new Error("Invalid rule");let f=this.project.getWorkspaceByCwd(a);r.push({workspace:f,fieldPath:n,fieldValue:c})}return je.sortMap(r,[({workspace:s})=>G.stringifyIdent(s.anchoredLocator),({fieldPath:s})=>s])}async*query(e){let r=this.createSession();for await(let s of r.makeQuery(e)){let a={};for(let[n,c]of Object.entries(s.links))n!=="_"&&(a[n]=bm(c));yield a}}}});var QEe=_(uF=>{"use strict";Object.defineProperty(uF,"__esModule",{value:!0});function BS(t){let e=[...t.caches],r=e.shift();return r===void 0?kEe():{get(s,a,n={miss:()=>Promise.resolve()}){return r.get(s,a,n).catch(()=>BS({caches:e}).get(s,a,n))},set(s,a){return r.set(s,a).catch(()=>BS({caches:e}).set(s,a))},delete(s){return r.delete(s).catch(()=>BS({caches:e}).delete(s))},clear(){return r.clear().catch(()=>BS({caches:e}).clear())}}}function kEe(){return{get(t,e,r={miss:()=>Promise.resolve()}){return e().then(a=>Promise.all([a,r.miss(a)])).then(([a])=>a)},set(t,e){return Promise.resolve(e)},delete(t){return Promise.resolve()},clear(){return Promise.resolve()}}}uF.createFallbackableCache=BS;uF.createNullCache=kEe});var TEe=_((iJt,REe)=>{REe.exports=QEe()});var FEe=_(Y5=>{"use strict";Object.defineProperty(Y5,"__esModule",{value:!0});function uut(t={serializable:!0}){let e={};return{get(r,s,a={miss:()=>Promise.resolve()}){let n=JSON.stringify(r);if(n in e)return Promise.resolve(t.serializable?JSON.parse(e[n]):e[n]);let c=s(),f=a&&a.miss||(()=>Promise.resolve());return c.then(p=>f(p)).then(()=>c)},set(r,s){return e[JSON.stringify(r)]=t.serializable?JSON.stringify(s):s,Promise.resolve(s)},delete(r){return delete e[JSON.stringify(r)],Promise.resolve()},clear(){return e={},Promise.resolve()}}}Y5.createInMemoryCache=uut});var OEe=_((oJt,NEe)=>{NEe.exports=FEe()});var MEe=_($u=>{"use strict";Object.defineProperty($u,"__esModule",{value:!0});function fut(t,e,r){let s={"x-algolia-api-key":r,"x-algolia-application-id":e};return{headers(){return t===V5.WithinHeaders?s:{}},queryParameters(){return t===V5.WithinQueryParameters?s:{}}}}function Aut(t){let e=0,r=()=>(e++,new Promise(s=>{setTimeout(()=>{s(t(r))},Math.min(100*e,1e3))}));return t(r)}function LEe(t,e=(r,s)=>Promise.resolve()){return Object.assign(t,{wait(r){return LEe(t.then(s=>Promise.all([e(s,r),s])).then(s=>s[1]))}})}function put(t){let e=t.length-1;for(e;e>0;e--){let r=Math.floor(Math.random()*(e+1)),s=t[e];t[e]=t[r],t[r]=s}return t}function hut(t,e){return e&&Object.keys(e).forEach(r=>{t[r]=e[r](t)}),t}function gut(t,...e){let r=0;return t.replace(/%s/g,()=>encodeURIComponent(e[r++]))}var dut="4.22.1",mut=t=>()=>t.transporter.requester.destroy(),V5={WithinQueryParameters:0,WithinHeaders:1};$u.AuthMode=V5;$u.addMethods=hut;$u.createAuth=fut;$u.createRetryablePromise=Aut;$u.createWaitablePromise=LEe;$u.destroy=mut;$u.encode=gut;$u.shuffle=put;$u.version=dut});var vS=_((lJt,UEe)=>{UEe.exports=MEe()});var _Ee=_(J5=>{"use strict";Object.defineProperty(J5,"__esModule",{value:!0});var yut={Delete:"DELETE",Get:"GET",Post:"POST",Put:"PUT"};J5.MethodEnum=yut});var SS=_((uJt,HEe)=>{HEe.exports=_Ee()});var rIe=_(Wi=>{"use strict";Object.defineProperty(Wi,"__esModule",{value:!0});var GEe=SS();function K5(t,e){let r=t||{},s=r.data||{};return Object.keys(r).forEach(a=>{["timeout","headers","queryParameters","data","cacheable"].indexOf(a)===-1&&(s[a]=r[a])}),{data:Object.entries(s).length>0?s:void 0,timeout:r.timeout||e,headers:r.headers||{},queryParameters:r.queryParameters||{},cacheable:r.cacheable}}var DS={Read:1,Write:2,Any:3},sw={Up:1,Down:2,Timeouted:3},qEe=2*60*1e3;function Z5(t,e=sw.Up){return{...t,status:e,lastUpdate:Date.now()}}function WEe(t){return t.status===sw.Up||Date.now()-t.lastUpdate>qEe}function YEe(t){return t.status===sw.Timeouted&&Date.now()-t.lastUpdate<=qEe}function X5(t){return typeof t=="string"?{protocol:"https",url:t,accept:DS.Any}:{protocol:t.protocol||"https",url:t.url,accept:t.accept||DS.Any}}function Eut(t,e){return Promise.all(e.map(r=>t.get(r,()=>Promise.resolve(Z5(r))))).then(r=>{let s=r.filter(f=>WEe(f)),a=r.filter(f=>YEe(f)),n=[...s,...a],c=n.length>0?n.map(f=>X5(f)):e;return{getTimeout(f,p){return(a.length===0&&f===0?1:a.length+3+f)*p},statelessHosts:c}})}var Iut=({isTimedOut:t,status:e})=>!t&&~~e===0,Cut=t=>{let e=t.status;return t.isTimedOut||Iut(t)||~~(e/100)!==2&&~~(e/100)!==4},wut=({status:t})=>~~(t/100)===2,But=(t,e)=>Cut(t)?e.onRetry(t):wut(t)?e.onSuccess(t):e.onFail(t);function jEe(t,e,r,s){let a=[],n=ZEe(r,s),c=XEe(t,s),f=r.method,p=r.method!==GEe.MethodEnum.Get?{}:{...r.data,...s.data},h={"x-algolia-agent":t.userAgent.value,...t.queryParameters,...p,...s.queryParameters},E=0,C=(S,b)=>{let I=S.pop();if(I===void 0)throw tIe(z5(a));let T={data:n,headers:c,method:f,url:KEe(I,r.path,h),connectTimeout:b(E,t.timeouts.connect),responseTimeout:b(E,s.timeout)},N=W=>{let ee={request:T,response:W,host:I,triesLeft:S.length};return a.push(ee),ee},U={onSuccess:W=>VEe(W),onRetry(W){let ee=N(W);return W.isTimedOut&&E++,Promise.all([t.logger.info("Retryable failure",$5(ee)),t.hostsCache.set(I,Z5(I,W.isTimedOut?sw.Timeouted:sw.Down))]).then(()=>C(S,b))},onFail(W){throw N(W),JEe(W,z5(a))}};return t.requester.send(T).then(W=>But(W,U))};return Eut(t.hostsCache,e).then(S=>C([...S.statelessHosts].reverse(),S.getTimeout))}function vut(t){let{hostsCache:e,logger:r,requester:s,requestsCache:a,responsesCache:n,timeouts:c,userAgent:f,hosts:p,queryParameters:h,headers:E}=t,C={hostsCache:e,logger:r,requester:s,requestsCache:a,responsesCache:n,timeouts:c,userAgent:f,headers:E,queryParameters:h,hosts:p.map(S=>X5(S)),read(S,b){let I=K5(b,C.timeouts.read),T=()=>jEe(C,C.hosts.filter(W=>(W.accept&DS.Read)!==0),S,I);if((I.cacheable!==void 0?I.cacheable:S.cacheable)!==!0)return T();let U={request:S,mappedRequestOptions:I,transporter:{queryParameters:C.queryParameters,headers:C.headers}};return C.responsesCache.get(U,()=>C.requestsCache.get(U,()=>C.requestsCache.set(U,T()).then(W=>Promise.all([C.requestsCache.delete(U),W]),W=>Promise.all([C.requestsCache.delete(U),Promise.reject(W)])).then(([W,ee])=>ee)),{miss:W=>C.responsesCache.set(U,W)})},write(S,b){return jEe(C,C.hosts.filter(I=>(I.accept&DS.Write)!==0),S,K5(b,C.timeouts.write))}};return C}function Sut(t){let e={value:`Algolia for JavaScript (${t})`,add(r){let s=`; ${r.segment}${r.version!==void 0?` (${r.version})`:""}`;return e.value.indexOf(s)===-1&&(e.value=`${e.value}${s}`),e}};return e}function VEe(t){try{return JSON.parse(t.content)}catch(e){throw eIe(e.message,t)}}function JEe({content:t,status:e},r){let s=t;try{s=JSON.parse(t).message}catch{}return $Ee(s,e,r)}function Dut(t,...e){let r=0;return t.replace(/%s/g,()=>encodeURIComponent(e[r++]))}function KEe(t,e,r){let s=zEe(r),a=`${t.protocol}://${t.url}/${e.charAt(0)==="/"?e.substr(1):e}`;return s.length&&(a+=`?${s}`),a}function zEe(t){let e=r=>Object.prototype.toString.call(r)==="[object Object]"||Object.prototype.toString.call(r)==="[object Array]";return Object.keys(t).map(r=>Dut("%s=%s",r,e(t[r])?JSON.stringify(t[r]):t[r])).join("&")}function ZEe(t,e){if(t.method===GEe.MethodEnum.Get||t.data===void 0&&e.data===void 0)return;let r=Array.isArray(t.data)?t.data:{...t.data,...e.data};return JSON.stringify(r)}function XEe(t,e){let r={...t.headers,...e.headers},s={};return Object.keys(r).forEach(a=>{let n=r[a];s[a.toLowerCase()]=n}),s}function z5(t){return t.map(e=>$5(e))}function $5(t){let e=t.request.headers["x-algolia-api-key"]?{"x-algolia-api-key":"*****"}:{};return{...t,request:{...t.request,headers:{...t.request.headers,...e}}}}function $Ee(t,e,r){return{name:"ApiError",message:t,status:e,transporterStackTrace:r}}function eIe(t,e){return{name:"DeserializationError",message:t,response:e}}function tIe(t){return{name:"RetryError",message:"Unreachable hosts - your application id may be incorrect. If the error persists, contact support@algolia.com.",transporterStackTrace:t}}Wi.CallEnum=DS;Wi.HostStatusEnum=sw;Wi.createApiError=$Ee;Wi.createDeserializationError=eIe;Wi.createMappedRequestOptions=K5;Wi.createRetryError=tIe;Wi.createStatefulHost=Z5;Wi.createStatelessHost=X5;Wi.createTransporter=vut;Wi.createUserAgent=Sut;Wi.deserializeFailure=JEe;Wi.deserializeSuccess=VEe;Wi.isStatefulHostTimeouted=YEe;Wi.isStatefulHostUp=WEe;Wi.serializeData=ZEe;Wi.serializeHeaders=XEe;Wi.serializeQueryParameters=zEe;Wi.serializeUrl=KEe;Wi.stackFrameWithoutCredentials=$5;Wi.stackTraceWithoutCredentials=z5});var PS=_((AJt,nIe)=>{nIe.exports=rIe()});var iIe=_(Z0=>{"use strict";Object.defineProperty(Z0,"__esModule",{value:!0});var ow=vS(),Put=PS(),bS=SS(),but=t=>{let e=t.region||"us",r=ow.createAuth(ow.AuthMode.WithinHeaders,t.appId,t.apiKey),s=Put.createTransporter({hosts:[{url:`analytics.${e}.algolia.com`}],...t,headers:{...r.headers(),"content-type":"application/json",...t.headers},queryParameters:{...r.queryParameters(),...t.queryParameters}}),a=t.appId;return ow.addMethods({appId:a,transporter:s},t.methods)},xut=t=>(e,r)=>t.transporter.write({method:bS.MethodEnum.Post,path:"2/abtests",data:e},r),kut=t=>(e,r)=>t.transporter.write({method:bS.MethodEnum.Delete,path:ow.encode("2/abtests/%s",e)},r),Qut=t=>(e,r)=>t.transporter.read({method:bS.MethodEnum.Get,path:ow.encode("2/abtests/%s",e)},r),Rut=t=>e=>t.transporter.read({method:bS.MethodEnum.Get,path:"2/abtests"},e),Tut=t=>(e,r)=>t.transporter.write({method:bS.MethodEnum.Post,path:ow.encode("2/abtests/%s/stop",e)},r);Z0.addABTest=xut;Z0.createAnalyticsClient=but;Z0.deleteABTest=kut;Z0.getABTest=Qut;Z0.getABTests=Rut;Z0.stopABTest=Tut});var oIe=_((hJt,sIe)=>{sIe.exports=iIe()});var lIe=_(xS=>{"use strict";Object.defineProperty(xS,"__esModule",{value:!0});var e9=vS(),Fut=PS(),aIe=SS(),Nut=t=>{let e=t.region||"us",r=e9.createAuth(e9.AuthMode.WithinHeaders,t.appId,t.apiKey),s=Fut.createTransporter({hosts:[{url:`personalization.${e}.algolia.com`}],...t,headers:{...r.headers(),"content-type":"application/json",...t.headers},queryParameters:{...r.queryParameters(),...t.queryParameters}});return e9.addMethods({appId:t.appId,transporter:s},t.methods)},Out=t=>e=>t.transporter.read({method:aIe.MethodEnum.Get,path:"1/strategies/personalization"},e),Lut=t=>(e,r)=>t.transporter.write({method:aIe.MethodEnum.Post,path:"1/strategies/personalization",data:e},r);xS.createPersonalizationClient=Nut;xS.getPersonalizationStrategy=Out;xS.setPersonalizationStrategy=Lut});var uIe=_((dJt,cIe)=>{cIe.exports=lIe()});var vIe=_(Ft=>{"use strict";Object.defineProperty(Ft,"__esModule",{value:!0});var Jt=vS(),gl=PS(),Pr=SS(),Mut=Ie("crypto");function fF(t){let e=r=>t.request(r).then(s=>{if(t.batch!==void 0&&t.batch(s.hits),!t.shouldStop(s))return s.cursor?e({cursor:s.cursor}):e({page:(r.page||0)+1})});return e({})}var Uut=t=>{let e=t.appId,r=Jt.createAuth(t.authMode!==void 0?t.authMode:Jt.AuthMode.WithinHeaders,e,t.apiKey),s=gl.createTransporter({hosts:[{url:`${e}-dsn.algolia.net`,accept:gl.CallEnum.Read},{url:`${e}.algolia.net`,accept:gl.CallEnum.Write}].concat(Jt.shuffle([{url:`${e}-1.algolianet.com`},{url:`${e}-2.algolianet.com`},{url:`${e}-3.algolianet.com`}])),...t,headers:{...r.headers(),"content-type":"application/x-www-form-urlencoded",...t.headers},queryParameters:{...r.queryParameters(),...t.queryParameters}}),a={transporter:s,appId:e,addAlgoliaAgent(n,c){s.userAgent.add({segment:n,version:c})},clearCache(){return Promise.all([s.requestsCache.clear(),s.responsesCache.clear()]).then(()=>{})}};return Jt.addMethods(a,t.methods)};function fIe(){return{name:"MissingObjectIDError",message:"All objects must have an unique objectID (like a primary key) to be valid. Algolia is also able to generate objectIDs automatically but *it's not recommended*. To do it, use the `{'autoGenerateObjectIDIfNotExist': true}` option."}}function AIe(){return{name:"ObjectNotFoundError",message:"Object not found."}}function pIe(){return{name:"ValidUntilNotFoundError",message:"ValidUntil not found in given secured api key."}}var _ut=t=>(e,r)=>{let{queryParameters:s,...a}=r||{},n={acl:e,...s!==void 0?{queryParameters:s}:{}},c=(f,p)=>Jt.createRetryablePromise(h=>kS(t)(f.key,p).catch(E=>{if(E.status!==404)throw E;return h()}));return Jt.createWaitablePromise(t.transporter.write({method:Pr.MethodEnum.Post,path:"1/keys",data:n},a),c)},Hut=t=>(e,r,s)=>{let a=gl.createMappedRequestOptions(s);return a.queryParameters["X-Algolia-User-ID"]=e,t.transporter.write({method:Pr.MethodEnum.Post,path:"1/clusters/mapping",data:{cluster:r}},a)},jut=t=>(e,r,s)=>t.transporter.write({method:Pr.MethodEnum.Post,path:"1/clusters/mapping/batch",data:{users:e,cluster:r}},s),Gut=t=>(e,r)=>Jt.createWaitablePromise(t.transporter.write({method:Pr.MethodEnum.Post,path:Jt.encode("/1/dictionaries/%s/batch",e),data:{clearExistingDictionaryEntries:!0,requests:{action:"addEntry",body:[]}}},r),(s,a)=>aw(t)(s.taskID,a)),AF=t=>(e,r,s)=>{let a=(n,c)=>QS(t)(e,{methods:{waitTask:hs}}).waitTask(n.taskID,c);return Jt.createWaitablePromise(t.transporter.write({method:Pr.MethodEnum.Post,path:Jt.encode("1/indexes/%s/operation",e),data:{operation:"copy",destination:r}},s),a)},qut=t=>(e,r,s)=>AF(t)(e,r,{...s,scope:[hF.Rules]}),Wut=t=>(e,r,s)=>AF(t)(e,r,{...s,scope:[hF.Settings]}),Yut=t=>(e,r,s)=>AF(t)(e,r,{...s,scope:[hF.Synonyms]}),Vut=t=>(e,r)=>e.method===Pr.MethodEnum.Get?t.transporter.read(e,r):t.transporter.write(e,r),Jut=t=>(e,r)=>{let s=(a,n)=>Jt.createRetryablePromise(c=>kS(t)(e,n).then(c).catch(f=>{if(f.status!==404)throw f}));return Jt.createWaitablePromise(t.transporter.write({method:Pr.MethodEnum.Delete,path:Jt.encode("1/keys/%s",e)},r),s)},Kut=t=>(e,r,s)=>{let a=r.map(n=>({action:"deleteEntry",body:{objectID:n}}));return Jt.createWaitablePromise(t.transporter.write({method:Pr.MethodEnum.Post,path:Jt.encode("/1/dictionaries/%s/batch",e),data:{clearExistingDictionaryEntries:!1,requests:a}},s),(n,c)=>aw(t)(n.taskID,c))},zut=()=>(t,e)=>{let r=gl.serializeQueryParameters(e),s=Mut.createHmac("sha256",t).update(r).digest("hex");return Buffer.from(s+r).toString("base64")},kS=t=>(e,r)=>t.transporter.read({method:Pr.MethodEnum.Get,path:Jt.encode("1/keys/%s",e)},r),hIe=t=>(e,r)=>t.transporter.read({method:Pr.MethodEnum.Get,path:Jt.encode("1/task/%s",e.toString())},r),Zut=t=>e=>t.transporter.read({method:Pr.MethodEnum.Get,path:"/1/dictionaries/*/settings"},e),Xut=t=>e=>t.transporter.read({method:Pr.MethodEnum.Get,path:"1/logs"},e),$ut=()=>t=>{let e=Buffer.from(t,"base64").toString("ascii"),r=/validUntil=(\d+)/,s=e.match(r);if(s===null)throw pIe();return parseInt(s[1],10)-Math.round(new Date().getTime()/1e3)},eft=t=>e=>t.transporter.read({method:Pr.MethodEnum.Get,path:"1/clusters/mapping/top"},e),tft=t=>(e,r)=>t.transporter.read({method:Pr.MethodEnum.Get,path:Jt.encode("1/clusters/mapping/%s",e)},r),rft=t=>e=>{let{retrieveMappings:r,...s}=e||{};return r===!0&&(s.getClusters=!0),t.transporter.read({method:Pr.MethodEnum.Get,path:"1/clusters/mapping/pending"},s)},QS=t=>(e,r={})=>{let s={transporter:t.transporter,appId:t.appId,indexName:e};return Jt.addMethods(s,r.methods)},nft=t=>e=>t.transporter.read({method:Pr.MethodEnum.Get,path:"1/keys"},e),ift=t=>e=>t.transporter.read({method:Pr.MethodEnum.Get,path:"1/clusters"},e),sft=t=>e=>t.transporter.read({method:Pr.MethodEnum.Get,path:"1/indexes"},e),oft=t=>e=>t.transporter.read({method:Pr.MethodEnum.Get,path:"1/clusters/mapping"},e),aft=t=>(e,r,s)=>{let a=(n,c)=>QS(t)(e,{methods:{waitTask:hs}}).waitTask(n.taskID,c);return Jt.createWaitablePromise(t.transporter.write({method:Pr.MethodEnum.Post,path:Jt.encode("1/indexes/%s/operation",e),data:{operation:"move",destination:r}},s),a)},lft=t=>(e,r)=>{let s=(a,n)=>Promise.all(Object.keys(a.taskID).map(c=>QS(t)(c,{methods:{waitTask:hs}}).waitTask(a.taskID[c],n)));return Jt.createWaitablePromise(t.transporter.write({method:Pr.MethodEnum.Post,path:"1/indexes/*/batch",data:{requests:e}},r),s)},cft=t=>(e,r)=>t.transporter.read({method:Pr.MethodEnum.Post,path:"1/indexes/*/objects",data:{requests:e}},r),uft=t=>(e,r)=>{let s=e.map(a=>({...a,params:gl.serializeQueryParameters(a.params||{})}));return t.transporter.read({method:Pr.MethodEnum.Post,path:"1/indexes/*/queries",data:{requests:s},cacheable:!0},r)},fft=t=>(e,r)=>Promise.all(e.map(s=>{let{facetName:a,facetQuery:n,...c}=s.params;return QS(t)(s.indexName,{methods:{searchForFacetValues:CIe}}).searchForFacetValues(a,n,{...r,...c})})),Aft=t=>(e,r)=>{let s=gl.createMappedRequestOptions(r);return s.queryParameters["X-Algolia-User-ID"]=e,t.transporter.write({method:Pr.MethodEnum.Delete,path:"1/clusters/mapping"},s)},pft=t=>(e,r,s)=>{let a=r.map(n=>({action:"addEntry",body:n}));return Jt.createWaitablePromise(t.transporter.write({method:Pr.MethodEnum.Post,path:Jt.encode("/1/dictionaries/%s/batch",e),data:{clearExistingDictionaryEntries:!0,requests:a}},s),(n,c)=>aw(t)(n.taskID,c))},hft=t=>(e,r)=>{let s=(a,n)=>Jt.createRetryablePromise(c=>kS(t)(e,n).catch(f=>{if(f.status!==404)throw f;return c()}));return Jt.createWaitablePromise(t.transporter.write({method:Pr.MethodEnum.Post,path:Jt.encode("1/keys/%s/restore",e)},r),s)},gft=t=>(e,r,s)=>{let a=r.map(n=>({action:"addEntry",body:n}));return Jt.createWaitablePromise(t.transporter.write({method:Pr.MethodEnum.Post,path:Jt.encode("/1/dictionaries/%s/batch",e),data:{clearExistingDictionaryEntries:!1,requests:a}},s),(n,c)=>aw(t)(n.taskID,c))},dft=t=>(e,r,s)=>t.transporter.read({method:Pr.MethodEnum.Post,path:Jt.encode("/1/dictionaries/%s/search",e),data:{query:r},cacheable:!0},s),mft=t=>(e,r)=>t.transporter.read({method:Pr.MethodEnum.Post,path:"1/clusters/mapping/search",data:{query:e}},r),yft=t=>(e,r)=>Jt.createWaitablePromise(t.transporter.write({method:Pr.MethodEnum.Put,path:"/1/dictionaries/*/settings",data:e},r),(s,a)=>aw(t)(s.taskID,a)),Eft=t=>(e,r)=>{let s=Object.assign({},r),{queryParameters:a,...n}=r||{},c=a?{queryParameters:a}:{},f=["acl","indexes","referers","restrictSources","queryParameters","description","maxQueriesPerIPPerHour","maxHitsPerQuery"],p=E=>Object.keys(s).filter(C=>f.indexOf(C)!==-1).every(C=>{if(Array.isArray(E[C])&&Array.isArray(s[C])){let S=E[C];return S.length===s[C].length&&S.every((b,I)=>b===s[C][I])}else return E[C]===s[C]}),h=(E,C)=>Jt.createRetryablePromise(S=>kS(t)(e,C).then(b=>p(b)?Promise.resolve():S()));return Jt.createWaitablePromise(t.transporter.write({method:Pr.MethodEnum.Put,path:Jt.encode("1/keys/%s",e),data:c},n),h)},aw=t=>(e,r)=>Jt.createRetryablePromise(s=>hIe(t)(e,r).then(a=>a.status!=="published"?s():void 0)),gIe=t=>(e,r)=>{let s=(a,n)=>hs(t)(a.taskID,n);return Jt.createWaitablePromise(t.transporter.write({method:Pr.MethodEnum.Post,path:Jt.encode("1/indexes/%s/batch",t.indexName),data:{requests:e}},r),s)},Ift=t=>e=>fF({shouldStop:r=>r.cursor===void 0,...e,request:r=>t.transporter.read({method:Pr.MethodEnum.Post,path:Jt.encode("1/indexes/%s/browse",t.indexName),data:r},e)}),Cft=t=>e=>{let r={hitsPerPage:1e3,...e};return fF({shouldStop:s=>s.hits.length({...a,hits:a.hits.map(n=>(delete n._highlightResult,n))}))}})},wft=t=>e=>{let r={hitsPerPage:1e3,...e};return fF({shouldStop:s=>s.hits.length({...a,hits:a.hits.map(n=>(delete n._highlightResult,n))}))}})},pF=t=>(e,r,s)=>{let{batchSize:a,...n}=s||{},c={taskIDs:[],objectIDs:[]},f=(p=0)=>{let h=[],E;for(E=p;E({action:r,body:C})),n).then(C=>(c.objectIDs=c.objectIDs.concat(C.objectIDs),c.taskIDs.push(C.taskID),E++,f(E)))};return Jt.createWaitablePromise(f(),(p,h)=>Promise.all(p.taskIDs.map(E=>hs(t)(E,h))))},Bft=t=>e=>Jt.createWaitablePromise(t.transporter.write({method:Pr.MethodEnum.Post,path:Jt.encode("1/indexes/%s/clear",t.indexName)},e),(r,s)=>hs(t)(r.taskID,s)),vft=t=>e=>{let{forwardToReplicas:r,...s}=e||{},a=gl.createMappedRequestOptions(s);return r&&(a.queryParameters.forwardToReplicas=1),Jt.createWaitablePromise(t.transporter.write({method:Pr.MethodEnum.Post,path:Jt.encode("1/indexes/%s/rules/clear",t.indexName)},a),(n,c)=>hs(t)(n.taskID,c))},Sft=t=>e=>{let{forwardToReplicas:r,...s}=e||{},a=gl.createMappedRequestOptions(s);return r&&(a.queryParameters.forwardToReplicas=1),Jt.createWaitablePromise(t.transporter.write({method:Pr.MethodEnum.Post,path:Jt.encode("1/indexes/%s/synonyms/clear",t.indexName)},a),(n,c)=>hs(t)(n.taskID,c))},Dft=t=>(e,r)=>Jt.createWaitablePromise(t.transporter.write({method:Pr.MethodEnum.Post,path:Jt.encode("1/indexes/%s/deleteByQuery",t.indexName),data:e},r),(s,a)=>hs(t)(s.taskID,a)),Pft=t=>e=>Jt.createWaitablePromise(t.transporter.write({method:Pr.MethodEnum.Delete,path:Jt.encode("1/indexes/%s",t.indexName)},e),(r,s)=>hs(t)(r.taskID,s)),bft=t=>(e,r)=>Jt.createWaitablePromise(dIe(t)([e],r).then(s=>({taskID:s.taskIDs[0]})),(s,a)=>hs(t)(s.taskID,a)),dIe=t=>(e,r)=>{let s=e.map(a=>({objectID:a}));return pF(t)(s,km.DeleteObject,r)},xft=t=>(e,r)=>{let{forwardToReplicas:s,...a}=r||{},n=gl.createMappedRequestOptions(a);return s&&(n.queryParameters.forwardToReplicas=1),Jt.createWaitablePromise(t.transporter.write({method:Pr.MethodEnum.Delete,path:Jt.encode("1/indexes/%s/rules/%s",t.indexName,e)},n),(c,f)=>hs(t)(c.taskID,f))},kft=t=>(e,r)=>{let{forwardToReplicas:s,...a}=r||{},n=gl.createMappedRequestOptions(a);return s&&(n.queryParameters.forwardToReplicas=1),Jt.createWaitablePromise(t.transporter.write({method:Pr.MethodEnum.Delete,path:Jt.encode("1/indexes/%s/synonyms/%s",t.indexName,e)},n),(c,f)=>hs(t)(c.taskID,f))},Qft=t=>e=>mIe(t)(e).then(()=>!0).catch(r=>{if(r.status!==404)throw r;return!1}),Rft=t=>(e,r,s)=>t.transporter.read({method:Pr.MethodEnum.Post,path:Jt.encode("1/answers/%s/prediction",t.indexName),data:{query:e,queryLanguages:r},cacheable:!0},s),Tft=t=>(e,r)=>{let{query:s,paginate:a,...n}=r||{},c=0,f=()=>IIe(t)(s||"",{...n,page:c}).then(p=>{for(let[h,E]of Object.entries(p.hits))if(e(E))return{object:E,position:parseInt(h,10),page:c};if(c++,a===!1||c>=p.nbPages)throw AIe();return f()});return f()},Fft=t=>(e,r)=>t.transporter.read({method:Pr.MethodEnum.Get,path:Jt.encode("1/indexes/%s/%s",t.indexName,e)},r),Nft=()=>(t,e)=>{for(let[r,s]of Object.entries(t.hits))if(s.objectID===e)return parseInt(r,10);return-1},Oft=t=>(e,r)=>{let{attributesToRetrieve:s,...a}=r||{},n=e.map(c=>({indexName:t.indexName,objectID:c,...s?{attributesToRetrieve:s}:{}}));return t.transporter.read({method:Pr.MethodEnum.Post,path:"1/indexes/*/objects",data:{requests:n}},a)},Lft=t=>(e,r)=>t.transporter.read({method:Pr.MethodEnum.Get,path:Jt.encode("1/indexes/%s/rules/%s",t.indexName,e)},r),mIe=t=>e=>t.transporter.read({method:Pr.MethodEnum.Get,path:Jt.encode("1/indexes/%s/settings",t.indexName),data:{getVersion:2}},e),Mft=t=>(e,r)=>t.transporter.read({method:Pr.MethodEnum.Get,path:Jt.encode("1/indexes/%s/synonyms/%s",t.indexName,e)},r),yIe=t=>(e,r)=>t.transporter.read({method:Pr.MethodEnum.Get,path:Jt.encode("1/indexes/%s/task/%s",t.indexName,e.toString())},r),Uft=t=>(e,r)=>Jt.createWaitablePromise(EIe(t)([e],r).then(s=>({objectID:s.objectIDs[0],taskID:s.taskIDs[0]})),(s,a)=>hs(t)(s.taskID,a)),EIe=t=>(e,r)=>{let{createIfNotExists:s,...a}=r||{},n=s?km.PartialUpdateObject:km.PartialUpdateObjectNoCreate;return pF(t)(e,n,a)},_ft=t=>(e,r)=>{let{safe:s,autoGenerateObjectIDIfNotExist:a,batchSize:n,...c}=r||{},f=(I,T,N,U)=>Jt.createWaitablePromise(t.transporter.write({method:Pr.MethodEnum.Post,path:Jt.encode("1/indexes/%s/operation",I),data:{operation:N,destination:T}},U),(W,ee)=>hs(t)(W.taskID,ee)),p=Math.random().toString(36).substring(7),h=`${t.indexName}_tmp_${p}`,E=t9({appId:t.appId,transporter:t.transporter,indexName:h}),C=[],S=f(t.indexName,h,"copy",{...c,scope:["settings","synonyms","rules"]});C.push(S);let b=(s?S.wait(c):S).then(()=>{let I=E(e,{...c,autoGenerateObjectIDIfNotExist:a,batchSize:n});return C.push(I),s?I.wait(c):I}).then(()=>{let I=f(h,t.indexName,"move",c);return C.push(I),s?I.wait(c):I}).then(()=>Promise.all(C)).then(([I,T,N])=>({objectIDs:T.objectIDs,taskIDs:[I.taskID,...T.taskIDs,N.taskID]}));return Jt.createWaitablePromise(b,(I,T)=>Promise.all(C.map(N=>N.wait(T))))},Hft=t=>(e,r)=>r9(t)(e,{...r,clearExistingRules:!0}),jft=t=>(e,r)=>n9(t)(e,{...r,clearExistingSynonyms:!0}),Gft=t=>(e,r)=>Jt.createWaitablePromise(t9(t)([e],r).then(s=>({objectID:s.objectIDs[0],taskID:s.taskIDs[0]})),(s,a)=>hs(t)(s.taskID,a)),t9=t=>(e,r)=>{let{autoGenerateObjectIDIfNotExist:s,...a}=r||{},n=s?km.AddObject:km.UpdateObject;if(n===km.UpdateObject){for(let c of e)if(c.objectID===void 0)return Jt.createWaitablePromise(Promise.reject(fIe()))}return pF(t)(e,n,a)},qft=t=>(e,r)=>r9(t)([e],r),r9=t=>(e,r)=>{let{forwardToReplicas:s,clearExistingRules:a,...n}=r||{},c=gl.createMappedRequestOptions(n);return s&&(c.queryParameters.forwardToReplicas=1),a&&(c.queryParameters.clearExistingRules=1),Jt.createWaitablePromise(t.transporter.write({method:Pr.MethodEnum.Post,path:Jt.encode("1/indexes/%s/rules/batch",t.indexName),data:e},c),(f,p)=>hs(t)(f.taskID,p))},Wft=t=>(e,r)=>n9(t)([e],r),n9=t=>(e,r)=>{let{forwardToReplicas:s,clearExistingSynonyms:a,replaceExistingSynonyms:n,...c}=r||{},f=gl.createMappedRequestOptions(c);return s&&(f.queryParameters.forwardToReplicas=1),(n||a)&&(f.queryParameters.replaceExistingSynonyms=1),Jt.createWaitablePromise(t.transporter.write({method:Pr.MethodEnum.Post,path:Jt.encode("1/indexes/%s/synonyms/batch",t.indexName),data:e},f),(p,h)=>hs(t)(p.taskID,h))},IIe=t=>(e,r)=>t.transporter.read({method:Pr.MethodEnum.Post,path:Jt.encode("1/indexes/%s/query",t.indexName),data:{query:e},cacheable:!0},r),CIe=t=>(e,r,s)=>t.transporter.read({method:Pr.MethodEnum.Post,path:Jt.encode("1/indexes/%s/facets/%s/query",t.indexName,e),data:{facetQuery:r},cacheable:!0},s),wIe=t=>(e,r)=>t.transporter.read({method:Pr.MethodEnum.Post,path:Jt.encode("1/indexes/%s/rules/search",t.indexName),data:{query:e}},r),BIe=t=>(e,r)=>t.transporter.read({method:Pr.MethodEnum.Post,path:Jt.encode("1/indexes/%s/synonyms/search",t.indexName),data:{query:e}},r),Yft=t=>(e,r)=>{let{forwardToReplicas:s,...a}=r||{},n=gl.createMappedRequestOptions(a);return s&&(n.queryParameters.forwardToReplicas=1),Jt.createWaitablePromise(t.transporter.write({method:Pr.MethodEnum.Put,path:Jt.encode("1/indexes/%s/settings",t.indexName),data:e},n),(c,f)=>hs(t)(c.taskID,f))},hs=t=>(e,r)=>Jt.createRetryablePromise(s=>yIe(t)(e,r).then(a=>a.status!=="published"?s():void 0)),Vft={AddObject:"addObject",Analytics:"analytics",Browser:"browse",DeleteIndex:"deleteIndex",DeleteObject:"deleteObject",EditSettings:"editSettings",Inference:"inference",ListIndexes:"listIndexes",Logs:"logs",Personalization:"personalization",Recommendation:"recommendation",Search:"search",SeeUnretrievableAttributes:"seeUnretrievableAttributes",Settings:"settings",Usage:"usage"},km={AddObject:"addObject",UpdateObject:"updateObject",PartialUpdateObject:"partialUpdateObject",PartialUpdateObjectNoCreate:"partialUpdateObjectNoCreate",DeleteObject:"deleteObject",DeleteIndex:"delete",ClearIndex:"clear"},hF={Settings:"settings",Synonyms:"synonyms",Rules:"rules"},Jft={None:"none",StopIfEnoughMatches:"stopIfEnoughMatches"},Kft={Synonym:"synonym",OneWaySynonym:"oneWaySynonym",AltCorrection1:"altCorrection1",AltCorrection2:"altCorrection2",Placeholder:"placeholder"};Ft.ApiKeyACLEnum=Vft;Ft.BatchActionEnum=km;Ft.ScopeEnum=hF;Ft.StrategyEnum=Jft;Ft.SynonymEnum=Kft;Ft.addApiKey=_ut;Ft.assignUserID=Hut;Ft.assignUserIDs=jut;Ft.batch=gIe;Ft.browseObjects=Ift;Ft.browseRules=Cft;Ft.browseSynonyms=wft;Ft.chunkedBatch=pF;Ft.clearDictionaryEntries=Gut;Ft.clearObjects=Bft;Ft.clearRules=vft;Ft.clearSynonyms=Sft;Ft.copyIndex=AF;Ft.copyRules=qut;Ft.copySettings=Wut;Ft.copySynonyms=Yut;Ft.createBrowsablePromise=fF;Ft.createMissingObjectIDError=fIe;Ft.createObjectNotFoundError=AIe;Ft.createSearchClient=Uut;Ft.createValidUntilNotFoundError=pIe;Ft.customRequest=Vut;Ft.deleteApiKey=Jut;Ft.deleteBy=Dft;Ft.deleteDictionaryEntries=Kut;Ft.deleteIndex=Pft;Ft.deleteObject=bft;Ft.deleteObjects=dIe;Ft.deleteRule=xft;Ft.deleteSynonym=kft;Ft.exists=Qft;Ft.findAnswers=Rft;Ft.findObject=Tft;Ft.generateSecuredApiKey=zut;Ft.getApiKey=kS;Ft.getAppTask=hIe;Ft.getDictionarySettings=Zut;Ft.getLogs=Xut;Ft.getObject=Fft;Ft.getObjectPosition=Nft;Ft.getObjects=Oft;Ft.getRule=Lft;Ft.getSecuredApiKeyRemainingValidity=$ut;Ft.getSettings=mIe;Ft.getSynonym=Mft;Ft.getTask=yIe;Ft.getTopUserIDs=eft;Ft.getUserID=tft;Ft.hasPendingMappings=rft;Ft.initIndex=QS;Ft.listApiKeys=nft;Ft.listClusters=ift;Ft.listIndices=sft;Ft.listUserIDs=oft;Ft.moveIndex=aft;Ft.multipleBatch=lft;Ft.multipleGetObjects=cft;Ft.multipleQueries=uft;Ft.multipleSearchForFacetValues=fft;Ft.partialUpdateObject=Uft;Ft.partialUpdateObjects=EIe;Ft.removeUserID=Aft;Ft.replaceAllObjects=_ft;Ft.replaceAllRules=Hft;Ft.replaceAllSynonyms=jft;Ft.replaceDictionaryEntries=pft;Ft.restoreApiKey=hft;Ft.saveDictionaryEntries=gft;Ft.saveObject=Gft;Ft.saveObjects=t9;Ft.saveRule=qft;Ft.saveRules=r9;Ft.saveSynonym=Wft;Ft.saveSynonyms=n9;Ft.search=IIe;Ft.searchDictionaryEntries=dft;Ft.searchForFacetValues=CIe;Ft.searchRules=wIe;Ft.searchSynonyms=BIe;Ft.searchUserIDs=mft;Ft.setDictionarySettings=yft;Ft.setSettings=Yft;Ft.updateApiKey=Eft;Ft.waitAppTask=aw;Ft.waitTask=hs});var DIe=_((yJt,SIe)=>{SIe.exports=vIe()});var PIe=_(gF=>{"use strict";Object.defineProperty(gF,"__esModule",{value:!0});function zft(){return{debug(t,e){return Promise.resolve()},info(t,e){return Promise.resolve()},error(t,e){return Promise.resolve()}}}var Zft={Debug:1,Info:2,Error:3};gF.LogLevelEnum=Zft;gF.createNullLogger=zft});var xIe=_((IJt,bIe)=>{bIe.exports=PIe()});var TIe=_(i9=>{"use strict";Object.defineProperty(i9,"__esModule",{value:!0});var kIe=Ie("http"),QIe=Ie("https"),Xft=Ie("url"),RIe={keepAlive:!0},$ft=new kIe.Agent(RIe),eAt=new QIe.Agent(RIe);function tAt({agent:t,httpAgent:e,httpsAgent:r,requesterOptions:s={}}={}){let a=e||t||$ft,n=r||t||eAt;return{send(c){return new Promise(f=>{let p=Xft.parse(c.url),h=p.query===null?p.pathname:`${p.pathname}?${p.query}`,E={...s,agent:p.protocol==="https:"?n:a,hostname:p.hostname,path:h,method:c.method,headers:{...s&&s.headers?s.headers:{},...c.headers},...p.port!==void 0?{port:p.port||""}:{}},C=(p.protocol==="https:"?QIe:kIe).request(E,T=>{let N=[];T.on("data",U=>{N=N.concat(U)}),T.on("end",()=>{clearTimeout(b),clearTimeout(I),f({status:T.statusCode||0,content:Buffer.concat(N).toString(),isTimedOut:!1})})}),S=(T,N)=>setTimeout(()=>{C.abort(),f({status:0,content:N,isTimedOut:!0})},T*1e3),b=S(c.connectTimeout,"Connection timeout"),I;C.on("error",T=>{clearTimeout(b),clearTimeout(I),f({status:0,content:T.message,isTimedOut:!1})}),C.once("response",()=>{clearTimeout(b),I=S(c.responseTimeout,"Socket timeout")}),c.data!==void 0&&C.write(c.data),C.end()})},destroy(){return a.destroy(),n.destroy(),Promise.resolve()}}}i9.createNodeHttpRequester=tAt});var NIe=_((wJt,FIe)=>{FIe.exports=TIe()});var UIe=_((BJt,MIe)=>{"use strict";var OIe=TEe(),rAt=OEe(),lw=oIe(),o9=vS(),s9=uIe(),Gt=DIe(),nAt=xIe(),iAt=NIe(),sAt=PS();function LIe(t,e,r){let s={appId:t,apiKey:e,timeouts:{connect:2,read:5,write:30},requester:iAt.createNodeHttpRequester(),logger:nAt.createNullLogger(),responsesCache:OIe.createNullCache(),requestsCache:OIe.createNullCache(),hostsCache:rAt.createInMemoryCache(),userAgent:sAt.createUserAgent(o9.version).add({segment:"Node.js",version:process.versions.node})},a={...s,...r},n=()=>c=>s9.createPersonalizationClient({...s,...c,methods:{getPersonalizationStrategy:s9.getPersonalizationStrategy,setPersonalizationStrategy:s9.setPersonalizationStrategy}});return Gt.createSearchClient({...a,methods:{search:Gt.multipleQueries,searchForFacetValues:Gt.multipleSearchForFacetValues,multipleBatch:Gt.multipleBatch,multipleGetObjects:Gt.multipleGetObjects,multipleQueries:Gt.multipleQueries,copyIndex:Gt.copyIndex,copySettings:Gt.copySettings,copyRules:Gt.copyRules,copySynonyms:Gt.copySynonyms,moveIndex:Gt.moveIndex,listIndices:Gt.listIndices,getLogs:Gt.getLogs,listClusters:Gt.listClusters,multipleSearchForFacetValues:Gt.multipleSearchForFacetValues,getApiKey:Gt.getApiKey,addApiKey:Gt.addApiKey,listApiKeys:Gt.listApiKeys,updateApiKey:Gt.updateApiKey,deleteApiKey:Gt.deleteApiKey,restoreApiKey:Gt.restoreApiKey,assignUserID:Gt.assignUserID,assignUserIDs:Gt.assignUserIDs,getUserID:Gt.getUserID,searchUserIDs:Gt.searchUserIDs,listUserIDs:Gt.listUserIDs,getTopUserIDs:Gt.getTopUserIDs,removeUserID:Gt.removeUserID,hasPendingMappings:Gt.hasPendingMappings,generateSecuredApiKey:Gt.generateSecuredApiKey,getSecuredApiKeyRemainingValidity:Gt.getSecuredApiKeyRemainingValidity,destroy:o9.destroy,clearDictionaryEntries:Gt.clearDictionaryEntries,deleteDictionaryEntries:Gt.deleteDictionaryEntries,getDictionarySettings:Gt.getDictionarySettings,getAppTask:Gt.getAppTask,replaceDictionaryEntries:Gt.replaceDictionaryEntries,saveDictionaryEntries:Gt.saveDictionaryEntries,searchDictionaryEntries:Gt.searchDictionaryEntries,setDictionarySettings:Gt.setDictionarySettings,waitAppTask:Gt.waitAppTask,customRequest:Gt.customRequest,initIndex:c=>f=>Gt.initIndex(c)(f,{methods:{batch:Gt.batch,delete:Gt.deleteIndex,findAnswers:Gt.findAnswers,getObject:Gt.getObject,getObjects:Gt.getObjects,saveObject:Gt.saveObject,saveObjects:Gt.saveObjects,search:Gt.search,searchForFacetValues:Gt.searchForFacetValues,waitTask:Gt.waitTask,setSettings:Gt.setSettings,getSettings:Gt.getSettings,partialUpdateObject:Gt.partialUpdateObject,partialUpdateObjects:Gt.partialUpdateObjects,deleteObject:Gt.deleteObject,deleteObjects:Gt.deleteObjects,deleteBy:Gt.deleteBy,clearObjects:Gt.clearObjects,browseObjects:Gt.browseObjects,getObjectPosition:Gt.getObjectPosition,findObject:Gt.findObject,exists:Gt.exists,saveSynonym:Gt.saveSynonym,saveSynonyms:Gt.saveSynonyms,getSynonym:Gt.getSynonym,searchSynonyms:Gt.searchSynonyms,browseSynonyms:Gt.browseSynonyms,deleteSynonym:Gt.deleteSynonym,clearSynonyms:Gt.clearSynonyms,replaceAllObjects:Gt.replaceAllObjects,replaceAllSynonyms:Gt.replaceAllSynonyms,searchRules:Gt.searchRules,getRule:Gt.getRule,deleteRule:Gt.deleteRule,saveRule:Gt.saveRule,saveRules:Gt.saveRules,replaceAllRules:Gt.replaceAllRules,browseRules:Gt.browseRules,clearRules:Gt.clearRules}}),initAnalytics:()=>c=>lw.createAnalyticsClient({...s,...c,methods:{addABTest:lw.addABTest,getABTest:lw.getABTest,getABTests:lw.getABTests,stopABTest:lw.stopABTest,deleteABTest:lw.deleteABTest}}),initPersonalization:n,initRecommendation:()=>c=>(a.logger.info("The `initRecommendation` method is deprecated. Use `initPersonalization` instead."),n()(c))}})}LIe.version=o9.version;MIe.exports=LIe});var l9=_((vJt,a9)=>{var _Ie=UIe();a9.exports=_Ie;a9.exports.default=_Ie});var f9=_((DJt,GIe)=>{"use strict";var jIe=Object.getOwnPropertySymbols,aAt=Object.prototype.hasOwnProperty,lAt=Object.prototype.propertyIsEnumerable;function cAt(t){if(t==null)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(t)}function uAt(){try{if(!Object.assign)return!1;var t=new String("abc");if(t[5]="de",Object.getOwnPropertyNames(t)[0]==="5")return!1;for(var e={},r=0;r<10;r++)e["_"+String.fromCharCode(r)]=r;var s=Object.getOwnPropertyNames(e).map(function(n){return e[n]});if(s.join("")!=="0123456789")return!1;var a={};return"abcdefghijklmnopqrst".split("").forEach(function(n){a[n]=n}),Object.keys(Object.assign({},a)).join("")==="abcdefghijklmnopqrst"}catch{return!1}}GIe.exports=uAt()?Object.assign:function(t,e){for(var r,s=cAt(t),a,n=1;n{"use strict";var p9=f9(),cw=60103,YIe=60106;Dn.Fragment=60107;Dn.StrictMode=60108;Dn.Profiler=60114;var VIe=60109,JIe=60110,KIe=60112;Dn.Suspense=60113;var zIe=60115,ZIe=60116;typeof Symbol=="function"&&Symbol.for&&(Gc=Symbol.for,cw=Gc("react.element"),YIe=Gc("react.portal"),Dn.Fragment=Gc("react.fragment"),Dn.StrictMode=Gc("react.strict_mode"),Dn.Profiler=Gc("react.profiler"),VIe=Gc("react.provider"),JIe=Gc("react.context"),KIe=Gc("react.forward_ref"),Dn.Suspense=Gc("react.suspense"),zIe=Gc("react.memo"),ZIe=Gc("react.lazy"));var Gc,qIe=typeof Symbol=="function"&&Symbol.iterator;function fAt(t){return t===null||typeof t!="object"?null:(t=qIe&&t[qIe]||t["@@iterator"],typeof t=="function"?t:null)}function RS(t){for(var e="https://reactjs.org/docs/error-decoder.html?invariant="+t,r=1;r{"use strict";oCe.exports=sCe()});var yF=_((xJt,aCe)=>{function dAt(t){var e=typeof t;return t!=null&&(e=="object"||e=="function")}aCe.exports=dAt});var cCe=_((kJt,lCe)=>{var mAt=typeof global=="object"&&global&&global.Object===Object&&global;lCe.exports=mAt});var y9=_((QJt,uCe)=>{var yAt=cCe(),EAt=typeof self=="object"&&self&&self.Object===Object&&self,IAt=yAt||EAt||Function("return this")();uCe.exports=IAt});var ACe=_((RJt,fCe)=>{var CAt=y9(),wAt=function(){return CAt.Date.now()};fCe.exports=wAt});var hCe=_((TJt,pCe)=>{var BAt=/\s/;function vAt(t){for(var e=t.length;e--&&BAt.test(t.charAt(e)););return e}pCe.exports=vAt});var dCe=_((FJt,gCe)=>{var SAt=hCe(),DAt=/^\s+/;function PAt(t){return t&&t.slice(0,SAt(t)+1).replace(DAt,"")}gCe.exports=PAt});var E9=_((NJt,mCe)=>{var bAt=y9(),xAt=bAt.Symbol;mCe.exports=xAt});var CCe=_((OJt,ICe)=>{var yCe=E9(),ECe=Object.prototype,kAt=ECe.hasOwnProperty,QAt=ECe.toString,TS=yCe?yCe.toStringTag:void 0;function RAt(t){var e=kAt.call(t,TS),r=t[TS];try{t[TS]=void 0;var s=!0}catch{}var a=QAt.call(t);return s&&(e?t[TS]=r:delete t[TS]),a}ICe.exports=RAt});var BCe=_((LJt,wCe)=>{var TAt=Object.prototype,FAt=TAt.toString;function NAt(t){return FAt.call(t)}wCe.exports=NAt});var PCe=_((MJt,DCe)=>{var vCe=E9(),OAt=CCe(),LAt=BCe(),MAt="[object Null]",UAt="[object Undefined]",SCe=vCe?vCe.toStringTag:void 0;function _At(t){return t==null?t===void 0?UAt:MAt:SCe&&SCe in Object(t)?OAt(t):LAt(t)}DCe.exports=_At});var xCe=_((UJt,bCe)=>{function HAt(t){return t!=null&&typeof t=="object"}bCe.exports=HAt});var QCe=_((_Jt,kCe)=>{var jAt=PCe(),GAt=xCe(),qAt="[object Symbol]";function WAt(t){return typeof t=="symbol"||GAt(t)&&jAt(t)==qAt}kCe.exports=WAt});var NCe=_((HJt,FCe)=>{var YAt=dCe(),RCe=yF(),VAt=QCe(),TCe=NaN,JAt=/^[-+]0x[0-9a-f]+$/i,KAt=/^0b[01]+$/i,zAt=/^0o[0-7]+$/i,ZAt=parseInt;function XAt(t){if(typeof t=="number")return t;if(VAt(t))return TCe;if(RCe(t)){var e=typeof t.valueOf=="function"?t.valueOf():t;t=RCe(e)?e+"":e}if(typeof t!="string")return t===0?t:+t;t=YAt(t);var r=KAt.test(t);return r||zAt.test(t)?ZAt(t.slice(2),r?2:8):JAt.test(t)?TCe:+t}FCe.exports=XAt});var MCe=_((jJt,LCe)=>{var $At=yF(),I9=ACe(),OCe=NCe(),ept="Expected a function",tpt=Math.max,rpt=Math.min;function npt(t,e,r){var s,a,n,c,f,p,h=0,E=!1,C=!1,S=!0;if(typeof t!="function")throw new TypeError(ept);e=OCe(e)||0,$At(r)&&(E=!!r.leading,C="maxWait"in r,n=C?tpt(OCe(r.maxWait)||0,e):n,S="trailing"in r?!!r.trailing:S);function b(le){var me=s,pe=a;return s=a=void 0,h=le,c=t.apply(pe,me),c}function I(le){return h=le,f=setTimeout(U,e),E?b(le):c}function T(le){var me=le-p,pe=le-h,Be=e-me;return C?rpt(Be,n-pe):Be}function N(le){var me=le-p,pe=le-h;return p===void 0||me>=e||me<0||C&&pe>=n}function U(){var le=I9();if(N(le))return W(le);f=setTimeout(U,T(le))}function W(le){return f=void 0,S&&s?b(le):(s=a=void 0,c)}function ee(){f!==void 0&&clearTimeout(f),h=0,s=p=a=f=void 0}function ie(){return f===void 0?c:W(I9())}function ue(){var le=I9(),me=N(le);if(s=arguments,a=this,p=le,me){if(f===void 0)return I(p);if(C)return clearTimeout(f),f=setTimeout(U,e),b(p)}return f===void 0&&(f=setTimeout(U,e)),c}return ue.cancel=ee,ue.flush=ie,ue}LCe.exports=npt});var _Ce=_((GJt,UCe)=>{var ipt=MCe(),spt=yF(),opt="Expected a function";function apt(t,e,r){var s=!0,a=!0;if(typeof t!="function")throw new TypeError(opt);return spt(r)&&(s="leading"in r?!!r.leading:s,a="trailing"in r?!!r.trailing:a),ipt(t,e,{leading:s,maxWait:e,trailing:a})}UCe.exports=apt});var w9=_((qJt,C9)=>{"use strict";var Cn=C9.exports;C9.exports.default=Cn;var Zn="\x1B[",NS="\x1B]",fw="\x07",EF=";",HCe=process.env.TERM_PROGRAM==="Apple_Terminal";Cn.cursorTo=(t,e)=>{if(typeof t!="number")throw new TypeError("The `x` argument is required");return typeof e!="number"?Zn+(t+1)+"G":Zn+(e+1)+";"+(t+1)+"H"};Cn.cursorMove=(t,e)=>{if(typeof t!="number")throw new TypeError("The `x` argument is required");let r="";return t<0?r+=Zn+-t+"D":t>0&&(r+=Zn+t+"C"),e<0?r+=Zn+-e+"A":e>0&&(r+=Zn+e+"B"),r};Cn.cursorUp=(t=1)=>Zn+t+"A";Cn.cursorDown=(t=1)=>Zn+t+"B";Cn.cursorForward=(t=1)=>Zn+t+"C";Cn.cursorBackward=(t=1)=>Zn+t+"D";Cn.cursorLeft=Zn+"G";Cn.cursorSavePosition=HCe?"\x1B7":Zn+"s";Cn.cursorRestorePosition=HCe?"\x1B8":Zn+"u";Cn.cursorGetPosition=Zn+"6n";Cn.cursorNextLine=Zn+"E";Cn.cursorPrevLine=Zn+"F";Cn.cursorHide=Zn+"?25l";Cn.cursorShow=Zn+"?25h";Cn.eraseLines=t=>{let e="";for(let r=0;r[NS,"8",EF,EF,e,fw,t,NS,"8",EF,EF,fw].join("");Cn.image=(t,e={})=>{let r=`${NS}1337;File=inline=1`;return e.width&&(r+=`;width=${e.width}`),e.height&&(r+=`;height=${e.height}`),e.preserveAspectRatio===!1&&(r+=";preserveAspectRatio=0"),r+":"+t.toString("base64")+fw};Cn.iTerm={setCwd:(t=process.cwd())=>`${NS}50;CurrentDir=${t}${fw}`,annotation:(t,e={})=>{let r=`${NS}1337;`,s=typeof e.x<"u",a=typeof e.y<"u";if((s||a)&&!(s&&a&&typeof e.length<"u"))throw new Error("`x`, `y` and `length` must be defined when `x` or `y` is defined");return t=t.replace(/\|/g,""),r+=e.isHidden?"AddHiddenAnnotation=":"AddAnnotation=",e.length>0?r+=(s?[t,e.length,e.x,e.y]:[e.length,t]).join("|"):r+=t,r+fw}}});var GCe=_((WJt,B9)=>{"use strict";var jCe=(t,e)=>{for(let r of Reflect.ownKeys(e))Object.defineProperty(t,r,Object.getOwnPropertyDescriptor(e,r));return t};B9.exports=jCe;B9.exports.default=jCe});var WCe=_((YJt,CF)=>{"use strict";var lpt=GCe(),IF=new WeakMap,qCe=(t,e={})=>{if(typeof t!="function")throw new TypeError("Expected a function");let r,s=0,a=t.displayName||t.name||"",n=function(...c){if(IF.set(n,++s),s===1)r=t.apply(this,c),t=null;else if(e.throw===!0)throw new Error(`Function \`${a}\` can only be called once`);return r};return lpt(n,t),IF.set(n,s),n};CF.exports=qCe;CF.exports.default=qCe;CF.exports.callCount=t=>{if(!IF.has(t))throw new Error(`The given function \`${t.name}\` is not wrapped by the \`onetime\` package`);return IF.get(t)}});var YCe=_((VJt,wF)=>{wF.exports=["SIGABRT","SIGALRM","SIGHUP","SIGINT","SIGTERM"];process.platform!=="win32"&&wF.exports.push("SIGVTALRM","SIGXCPU","SIGXFSZ","SIGUSR2","SIGTRAP","SIGSYS","SIGQUIT","SIGIOT");process.platform==="linux"&&wF.exports.push("SIGIO","SIGPOLL","SIGPWR","SIGSTKFLT","SIGUNUSED")});var D9=_((JJt,hw)=>{var Qi=global.process,Qm=function(t){return t&&typeof t=="object"&&typeof t.removeListener=="function"&&typeof t.emit=="function"&&typeof t.reallyExit=="function"&&typeof t.listeners=="function"&&typeof t.kill=="function"&&typeof t.pid=="number"&&typeof t.on=="function"};Qm(Qi)?(VCe=Ie("assert"),Aw=YCe(),JCe=/^win/i.test(Qi.platform),OS=Ie("events"),typeof OS!="function"&&(OS=OS.EventEmitter),Qi.__signal_exit_emitter__?Js=Qi.__signal_exit_emitter__:(Js=Qi.__signal_exit_emitter__=new OS,Js.count=0,Js.emitted={}),Js.infinite||(Js.setMaxListeners(1/0),Js.infinite=!0),hw.exports=function(t,e){if(!Qm(global.process))return function(){};VCe.equal(typeof t,"function","a callback must be provided for exit handler"),pw===!1&&v9();var r="exit";e&&e.alwaysLast&&(r="afterexit");var s=function(){Js.removeListener(r,t),Js.listeners("exit").length===0&&Js.listeners("afterexit").length===0&&BF()};return Js.on(r,t),s},BF=function(){!pw||!Qm(global.process)||(pw=!1,Aw.forEach(function(e){try{Qi.removeListener(e,vF[e])}catch{}}),Qi.emit=SF,Qi.reallyExit=S9,Js.count-=1)},hw.exports.unload=BF,Rm=function(e,r,s){Js.emitted[e]||(Js.emitted[e]=!0,Js.emit(e,r,s))},vF={},Aw.forEach(function(t){vF[t]=function(){if(Qm(global.process)){var r=Qi.listeners(t);r.length===Js.count&&(BF(),Rm("exit",null,t),Rm("afterexit",null,t),JCe&&t==="SIGHUP"&&(t="SIGINT"),Qi.kill(Qi.pid,t))}}}),hw.exports.signals=function(){return Aw},pw=!1,v9=function(){pw||!Qm(global.process)||(pw=!0,Js.count+=1,Aw=Aw.filter(function(e){try{return Qi.on(e,vF[e]),!0}catch{return!1}}),Qi.emit=zCe,Qi.reallyExit=KCe)},hw.exports.load=v9,S9=Qi.reallyExit,KCe=function(e){Qm(global.process)&&(Qi.exitCode=e||0,Rm("exit",Qi.exitCode,null),Rm("afterexit",Qi.exitCode,null),S9.call(Qi,Qi.exitCode))},SF=Qi.emit,zCe=function(e,r){if(e==="exit"&&Qm(global.process)){r!==void 0&&(Qi.exitCode=r);var s=SF.apply(this,arguments);return Rm("exit",Qi.exitCode,null),Rm("afterexit",Qi.exitCode,null),s}else return SF.apply(this,arguments)}):hw.exports=function(){return function(){}};var VCe,Aw,JCe,OS,Js,BF,Rm,vF,pw,v9,S9,KCe,SF,zCe});var XCe=_((KJt,ZCe)=>{"use strict";var cpt=WCe(),upt=D9();ZCe.exports=cpt(()=>{upt(()=>{process.stderr.write("\x1B[?25h")},{alwaysLast:!0})})});var P9=_(gw=>{"use strict";var fpt=XCe(),DF=!1;gw.show=(t=process.stderr)=>{t.isTTY&&(DF=!1,t.write("\x1B[?25h"))};gw.hide=(t=process.stderr)=>{t.isTTY&&(fpt(),DF=!0,t.write("\x1B[?25l"))};gw.toggle=(t,e)=>{t!==void 0&&(DF=t),DF?gw.show(e):gw.hide(e)}});var rwe=_(LS=>{"use strict";var twe=LS&&LS.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(LS,"__esModule",{value:!0});var $Ce=twe(w9()),ewe=twe(P9()),Apt=(t,{showCursor:e=!1}={})=>{let r=0,s="",a=!1,n=c=>{!e&&!a&&(ewe.default.hide(),a=!0);let f=c+` `;f!==s&&(s=f,t.write($Ce.default.eraseLines(r)+f),r=f.split(` `).length)};return n.clear=()=>{t.write($Ce.default.eraseLines(r)),s="",r=0},n.done=()=>{s="",r=0,e||(ewe.default.show(),a=!1)},n};LS.default={create:Apt}});var nwe=_((XJt,ppt)=>{ppt.exports=[{name:"AppVeyor",constant:"APPVEYOR",env:"APPVEYOR",pr:"APPVEYOR_PULL_REQUEST_NUMBER"},{name:"Azure Pipelines",constant:"AZURE_PIPELINES",env:"SYSTEM_TEAMFOUNDATIONCOLLECTIONURI",pr:"SYSTEM_PULLREQUEST_PULLREQUESTID"},{name:"Bamboo",constant:"BAMBOO",env:"bamboo_planKey"},{name:"Bitbucket Pipelines",constant:"BITBUCKET",env:"BITBUCKET_COMMIT",pr:"BITBUCKET_PR_ID"},{name:"Bitrise",constant:"BITRISE",env:"BITRISE_IO",pr:"BITRISE_PULL_REQUEST"},{name:"Buddy",constant:"BUDDY",env:"BUDDY_WORKSPACE_ID",pr:"BUDDY_EXECUTION_PULL_REQUEST_ID"},{name:"Buildkite",constant:"BUILDKITE",env:"BUILDKITE",pr:{env:"BUILDKITE_PULL_REQUEST",ne:"false"}},{name:"CircleCI",constant:"CIRCLE",env:"CIRCLECI",pr:"CIRCLE_PULL_REQUEST"},{name:"Cirrus CI",constant:"CIRRUS",env:"CIRRUS_CI",pr:"CIRRUS_PR"},{name:"AWS CodeBuild",constant:"CODEBUILD",env:"CODEBUILD_BUILD_ARN"},{name:"Codeship",constant:"CODESHIP",env:{CI_NAME:"codeship"}},{name:"Drone",constant:"DRONE",env:"DRONE",pr:{DRONE_BUILD_EVENT:"pull_request"}},{name:"dsari",constant:"DSARI",env:"DSARI"},{name:"GitLab CI",constant:"GITLAB",env:"GITLAB_CI"},{name:"GoCD",constant:"GOCD",env:"GO_PIPELINE_LABEL"},{name:"Hudson",constant:"HUDSON",env:"HUDSON_URL"},{name:"Jenkins",constant:"JENKINS",env:["JENKINS_URL","BUILD_ID"],pr:{any:["ghprbPullId","CHANGE_ID"]}},{name:"Magnum CI",constant:"MAGNUM",env:"MAGNUM"},{name:"Netlify CI",constant:"NETLIFY",env:"NETLIFY_BUILD_BASE",pr:{env:"PULL_REQUEST",ne:"false"}},{name:"Sail CI",constant:"SAIL",env:"SAILCI",pr:"SAIL_PULL_REQUEST_NUMBER"},{name:"Semaphore",constant:"SEMAPHORE",env:"SEMAPHORE",pr:"PULL_REQUEST_NUMBER"},{name:"Shippable",constant:"SHIPPABLE",env:"SHIPPABLE",pr:{IS_PULL_REQUEST:"true"}},{name:"Solano CI",constant:"SOLANO",env:"TDDIUM",pr:"TDDIUM_PR_ID"},{name:"Strider CD",constant:"STRIDER",env:"STRIDER"},{name:"TaskCluster",constant:"TASKCLUSTER",env:["TASK_ID","RUN_ID"]},{name:"TeamCity",constant:"TEAMCITY",env:"TEAMCITY_VERSION"},{name:"Travis CI",constant:"TRAVIS",env:"TRAVIS",pr:{env:"TRAVIS_PULL_REQUEST",ne:"false"}}]});var owe=_(tc=>{"use strict";var swe=nwe(),uA=process.env;Object.defineProperty(tc,"_vendors",{value:swe.map(function(t){return t.constant})});tc.name=null;tc.isPR=null;swe.forEach(function(t){var e=Array.isArray(t.env)?t.env:[t.env],r=e.every(function(s){return iwe(s)});if(tc[t.constant]=r,r)switch(tc.name=t.name,typeof t.pr){case"string":tc.isPR=!!uA[t.pr];break;case"object":"env"in t.pr?tc.isPR=t.pr.env in uA&&uA[t.pr.env]!==t.pr.ne:"any"in t.pr?tc.isPR=t.pr.any.some(function(s){return!!uA[s]}):tc.isPR=iwe(t.pr);break;default:tc.isPR=null}});tc.isCI=!!(uA.CI||uA.CONTINUOUS_INTEGRATION||uA.BUILD_NUMBER||uA.RUN_ID||tc.name);function iwe(t){return typeof t=="string"?!!uA[t]:Object.keys(t).every(function(e){return uA[e]===t[e]})}});var lwe=_((eKt,awe)=>{"use strict";awe.exports=owe().isCI});var uwe=_((tKt,cwe)=>{"use strict";var hpt=t=>{let e=new Set;do for(let r of Reflect.ownKeys(t))e.add([t,r]);while((t=Reflect.getPrototypeOf(t))&&t!==Object.prototype);return e};cwe.exports=(t,{include:e,exclude:r}={})=>{let s=a=>{let n=c=>typeof c=="string"?a===c:c.test(a);return e?e.some(n):r?!r.some(n):!0};for(let[a,n]of hpt(t.constructor.prototype)){if(n==="constructor"||!s(n))continue;let c=Reflect.getOwnPropertyDescriptor(a,n);c&&typeof c.value=="function"&&(t[n]=t[n].bind(t))}return t}});var dwe=_(Vn=>{"use strict";var mw,_S,kF,F9;typeof performance=="object"&&typeof performance.now=="function"?(fwe=performance,Vn.unstable_now=function(){return fwe.now()}):(b9=Date,Awe=b9.now(),Vn.unstable_now=function(){return b9.now()-Awe});var fwe,b9,Awe;typeof window>"u"||typeof MessageChannel!="function"?(dw=null,x9=null,k9=function(){if(dw!==null)try{var t=Vn.unstable_now();dw(!0,t),dw=null}catch(e){throw setTimeout(k9,0),e}},mw=function(t){dw!==null?setTimeout(mw,0,t):(dw=t,setTimeout(k9,0))},_S=function(t,e){x9=setTimeout(t,e)},kF=function(){clearTimeout(x9)},Vn.unstable_shouldYield=function(){return!1},F9=Vn.unstable_forceFrameRate=function(){}):(pwe=window.setTimeout,hwe=window.clearTimeout,typeof console<"u"&&(gwe=window.cancelAnimationFrame,typeof window.requestAnimationFrame!="function"&&console.error("This browser doesn't support requestAnimationFrame. Make sure that you load a polyfill in older browsers. https://reactjs.org/link/react-polyfills"),typeof gwe!="function"&&console.error("This browser doesn't support cancelAnimationFrame. Make sure that you load a polyfill in older browsers. https://reactjs.org/link/react-polyfills")),MS=!1,US=null,PF=-1,Q9=5,R9=0,Vn.unstable_shouldYield=function(){return Vn.unstable_now()>=R9},F9=function(){},Vn.unstable_forceFrameRate=function(t){0>t||125>>1,a=t[s];if(a!==void 0&&0xF(c,r))p!==void 0&&0>xF(p,c)?(t[s]=p,t[f]=r,s=f):(t[s]=c,t[n]=r,s=n);else if(p!==void 0&&0>xF(p,r))t[s]=p,t[f]=r,s=f;else break e}}return e}return null}function xF(t,e){var r=t.sortIndex-e.sortIndex;return r!==0?r:t.id-e.id}var fA=[],X0=[],gpt=1,qc=null,$o=3,RF=!1,Tm=!1,HS=!1;function O9(t){for(var e=ef(X0);e!==null;){if(e.callback===null)QF(X0);else if(e.startTime<=t)QF(X0),e.sortIndex=e.expirationTime,N9(fA,e);else break;e=ef(X0)}}function L9(t){if(HS=!1,O9(t),!Tm)if(ef(fA)!==null)Tm=!0,mw(M9);else{var e=ef(X0);e!==null&&_S(L9,e.startTime-t)}}function M9(t,e){Tm=!1,HS&&(HS=!1,kF()),RF=!0;var r=$o;try{for(O9(e),qc=ef(fA);qc!==null&&(!(qc.expirationTime>e)||t&&!Vn.unstable_shouldYield());){var s=qc.callback;if(typeof s=="function"){qc.callback=null,$o=qc.priorityLevel;var a=s(qc.expirationTime<=e);e=Vn.unstable_now(),typeof a=="function"?qc.callback=a:qc===ef(fA)&&QF(fA),O9(e)}else QF(fA);qc=ef(fA)}if(qc!==null)var n=!0;else{var c=ef(X0);c!==null&&_S(L9,c.startTime-e),n=!1}return n}finally{qc=null,$o=r,RF=!1}}var dpt=F9;Vn.unstable_IdlePriority=5;Vn.unstable_ImmediatePriority=1;Vn.unstable_LowPriority=4;Vn.unstable_NormalPriority=3;Vn.unstable_Profiling=null;Vn.unstable_UserBlockingPriority=2;Vn.unstable_cancelCallback=function(t){t.callback=null};Vn.unstable_continueExecution=function(){Tm||RF||(Tm=!0,mw(M9))};Vn.unstable_getCurrentPriorityLevel=function(){return $o};Vn.unstable_getFirstCallbackNode=function(){return ef(fA)};Vn.unstable_next=function(t){switch($o){case 1:case 2:case 3:var e=3;break;default:e=$o}var r=$o;$o=e;try{return t()}finally{$o=r}};Vn.unstable_pauseExecution=function(){};Vn.unstable_requestPaint=dpt;Vn.unstable_runWithPriority=function(t,e){switch(t){case 1:case 2:case 3:case 4:case 5:break;default:t=3}var r=$o;$o=t;try{return e()}finally{$o=r}};Vn.unstable_scheduleCallback=function(t,e,r){var s=Vn.unstable_now();switch(typeof r=="object"&&r!==null?(r=r.delay,r=typeof r=="number"&&0s?(t.sortIndex=r,N9(X0,t),ef(fA)===null&&t===ef(X0)&&(HS?kF():HS=!0,_S(L9,r-s))):(t.sortIndex=a,N9(fA,t),Tm||RF||(Tm=!0,mw(M9))),t};Vn.unstable_wrapCallback=function(t){var e=$o;return function(){var r=$o;$o=e;try{return t.apply(this,arguments)}finally{$o=r}}}});var U9=_((nKt,mwe)=>{"use strict";mwe.exports=dwe()});var ywe=_((iKt,jS)=>{jS.exports=function(e){var r={},s=f9(),a=hn(),n=U9();function c(v){for(var D="https://reactjs.org/docs/error-decoder.html?invariant="+v,Q=1;Q_e||V[Se]!==ne[_e])return` `+V[Se].replace(" at new "," at ");while(1<=Se&&0<=_e);break}}}finally{ve=!1,Error.prepareStackTrace=Q}return(v=v?v.displayName||v.name:"")?oc(v):""}var ac=[],Oi=-1;function no(v){return{current:v}}function Tt(v){0>Oi||(v.current=ac[Oi],ac[Oi]=null,Oi--)}function xn(v,D){Oi++,ac[Oi]=v.current,v.current=D}var la={},ji=no(la),Li=no(!1),Na=la;function dn(v,D){var Q=v.type.contextTypes;if(!Q)return la;var H=v.stateNode;if(H&&H.__reactInternalMemoizedUnmaskedChildContext===D)return H.__reactInternalMemoizedMaskedChildContext;var V={},ne;for(ne in Q)V[ne]=D[ne];return H&&(v=v.stateNode,v.__reactInternalMemoizedUnmaskedChildContext=D,v.__reactInternalMemoizedMaskedChildContext=V),V}function Kn(v){return v=v.childContextTypes,v!=null}function Au(){Tt(Li),Tt(ji)}function yh(v,D,Q){if(ji.current!==la)throw Error(c(168));xn(ji,D),xn(Li,Q)}function Oa(v,D,Q){var H=v.stateNode;if(v=D.childContextTypes,typeof H.getChildContext!="function")return Q;H=H.getChildContext();for(var V in H)if(!(V in v))throw Error(c(108,g(D)||"Unknown",V));return s({},Q,H)}function La(v){return v=(v=v.stateNode)&&v.__reactInternalMemoizedMergedChildContext||la,Na=ji.current,xn(ji,v),xn(Li,Li.current),!0}function Ma(v,D,Q){var H=v.stateNode;if(!H)throw Error(c(169));Q?(v=Oa(v,D,Na),H.__reactInternalMemoizedMergedChildContext=v,Tt(Li),Tt(ji),xn(ji,v)):Tt(Li),xn(Li,Q)}var $e=null,Ua=null,hf=n.unstable_now;hf();var lc=0,wn=8;function ca(v){if(1&v)return wn=15,1;if(2&v)return wn=14,2;if(4&v)return wn=13,4;var D=24&v;return D!==0?(wn=12,D):v&32?(wn=11,32):(D=192&v,D!==0?(wn=10,D):v&256?(wn=9,256):(D=3584&v,D!==0?(wn=8,D):v&4096?(wn=7,4096):(D=4186112&v,D!==0?(wn=6,D):(D=62914560&v,D!==0?(wn=5,D):v&67108864?(wn=4,67108864):v&134217728?(wn=3,134217728):(D=805306368&v,D!==0?(wn=2,D):1073741824&v?(wn=1,1073741824):(wn=8,v))))))}function LA(v){switch(v){case 99:return 15;case 98:return 10;case 97:case 96:return 8;case 95:return 2;default:return 0}}function MA(v){switch(v){case 15:case 14:return 99;case 13:case 12:case 11:case 10:return 98;case 9:case 8:case 7:case 6:case 4:case 5:return 97;case 3:case 2:case 1:return 95;case 0:return 90;default:throw Error(c(358,v))}}function ua(v,D){var Q=v.pendingLanes;if(Q===0)return wn=0;var H=0,V=0,ne=v.expiredLanes,Se=v.suspendedLanes,_e=v.pingedLanes;if(ne!==0)H=ne,V=wn=15;else if(ne=Q&134217727,ne!==0){var pt=ne&~Se;pt!==0?(H=ca(pt),V=wn):(_e&=ne,_e!==0&&(H=ca(_e),V=wn))}else ne=Q&~Se,ne!==0?(H=ca(ne),V=wn):_e!==0&&(H=ca(_e),V=wn);if(H===0)return 0;if(H=31-rs(H),H=Q&((0>H?0:1<Q;Q++)D.push(v);return D}function Ha(v,D,Q){v.pendingLanes|=D;var H=D-1;v.suspendedLanes&=H,v.pingedLanes&=H,v=v.eventTimes,D=31-rs(D),v[D]=Q}var rs=Math.clz32?Math.clz32:uc,cc=Math.log,pu=Math.LN2;function uc(v){return v===0?32:31-(cc(v)/pu|0)|0}var ja=n.unstable_runWithPriority,Mi=n.unstable_scheduleCallback,Is=n.unstable_cancelCallback,vl=n.unstable_shouldYield,gf=n.unstable_requestPaint,fc=n.unstable_now,wi=n.unstable_getCurrentPriorityLevel,Qn=n.unstable_ImmediatePriority,Ac=n.unstable_UserBlockingPriority,Ke=n.unstable_NormalPriority,st=n.unstable_LowPriority,St=n.unstable_IdlePriority,lr={},te=gf!==void 0?gf:function(){},Ee=null,Oe=null,dt=!1,Et=fc(),Pt=1e4>Et?fc:function(){return fc()-Et};function tr(){switch(wi()){case Qn:return 99;case Ac:return 98;case Ke:return 97;case st:return 96;case St:return 95;default:throw Error(c(332))}}function An(v){switch(v){case 99:return Qn;case 98:return Ac;case 97:return Ke;case 96:return st;case 95:return St;default:throw Error(c(332))}}function li(v,D){return v=An(v),ja(v,D)}function Gi(v,D,Q){return v=An(v),Mi(v,D,Q)}function Rn(){if(Oe!==null){var v=Oe;Oe=null,Is(v)}Ga()}function Ga(){if(!dt&&Ee!==null){dt=!0;var v=0;try{var D=Ee;li(99,function(){for(;vTn?(_n=kr,kr=null):_n=kr.sibling;var zr=Xt(et,kr,gt[Tn],Zt);if(zr===null){kr===null&&(kr=_n);break}v&&kr&&zr.alternate===null&&D(et,kr),qe=ne(zr,qe,Tn),Xn===null?Dr=zr:Xn.sibling=zr,Xn=zr,kr=_n}if(Tn===gt.length)return Q(et,kr),Dr;if(kr===null){for(;TnTn?(_n=kr,kr=null):_n=kr.sibling;var ci=Xt(et,kr,zr.value,Zt);if(ci===null){kr===null&&(kr=_n);break}v&&kr&&ci.alternate===null&&D(et,kr),qe=ne(ci,qe,Tn),Xn===null?Dr=ci:Xn.sibling=ci,Xn=ci,kr=_n}if(zr.done)return Q(et,kr),Dr;if(kr===null){for(;!zr.done;Tn++,zr=gt.next())zr=Lr(et,zr.value,Zt),zr!==null&&(qe=ne(zr,qe,Tn),Xn===null?Dr=zr:Xn.sibling=zr,Xn=zr);return Dr}for(kr=H(et,kr);!zr.done;Tn++,zr=gt.next())zr=zn(kr,et,Tn,zr.value,Zt),zr!==null&&(v&&zr.alternate!==null&&kr.delete(zr.key===null?Tn:zr.key),qe=ne(zr,qe,Tn),Xn===null?Dr=zr:Xn.sibling=zr,Xn=zr);return v&&kr.forEach(function(Du){return D(et,Du)}),Dr}return function(et,qe,gt,Zt){var Dr=typeof gt=="object"&>!==null&>.type===E&>.key===null;Dr&&(gt=gt.props.children);var Xn=typeof gt=="object"&>!==null;if(Xn)switch(gt.$$typeof){case p:e:{for(Xn=gt.key,Dr=qe;Dr!==null;){if(Dr.key===Xn){switch(Dr.tag){case 7:if(gt.type===E){Q(et,Dr.sibling),qe=V(Dr,gt.props.children),qe.return=et,et=qe;break e}break;default:if(Dr.elementType===gt.type){Q(et,Dr.sibling),qe=V(Dr,gt.props),qe.ref=yt(et,Dr,gt),qe.return=et,et=qe;break e}}Q(et,Dr);break}else D(et,Dr);Dr=Dr.sibling}gt.type===E?(qe=kf(gt.props.children,et.mode,Zt,gt.key),qe.return=et,et=qe):(Zt=sd(gt.type,gt.key,gt.props,null,et.mode,Zt),Zt.ref=yt(et,qe,gt),Zt.return=et,et=Zt)}return Se(et);case h:e:{for(Dr=gt.key;qe!==null;){if(qe.key===Dr)if(qe.tag===4&&qe.stateNode.containerInfo===gt.containerInfo&&qe.stateNode.implementation===gt.implementation){Q(et,qe.sibling),qe=V(qe,gt.children||[]),qe.return=et,et=qe;break e}else{Q(et,qe);break}else D(et,qe);qe=qe.sibling}qe=Qo(gt,et.mode,Zt),qe.return=et,et=qe}return Se(et)}if(typeof gt=="string"||typeof gt=="number")return gt=""+gt,qe!==null&&qe.tag===6?(Q(et,qe.sibling),qe=V(qe,gt),qe.return=et,et=qe):(Q(et,qe),qe=P2(gt,et.mode,Zt),qe.return=et,et=qe),Se(et);if(mf(gt))return yi(et,qe,gt,Zt);if(Ce(gt))return za(et,qe,gt,Zt);if(Xn&&gu(et,gt),typeof gt>"u"&&!Dr)switch(et.tag){case 1:case 22:case 0:case 11:case 15:throw Error(c(152,g(et.type)||"Component"))}return Q(et,qe)}}var Mg=By(!0),e2=By(!1),vh={},ur=no(vh),Ki=no(vh),yf=no(vh);function qa(v){if(v===vh)throw Error(c(174));return v}function Ug(v,D){xn(yf,D),xn(Ki,v),xn(ur,vh),v=mt(D),Tt(ur),xn(ur,v)}function du(){Tt(ur),Tt(Ki),Tt(yf)}function Ef(v){var D=qa(yf.current),Q=qa(ur.current);D=j(Q,v.type,D),Q!==D&&(xn(Ki,v),xn(ur,D))}function wt(v){Ki.current===v&&(Tt(ur),Tt(Ki))}var di=no(0);function GA(v){for(var D=v;D!==null;){if(D.tag===13){var Q=D.memoizedState;if(Q!==null&&(Q=Q.dehydrated,Q===null||gr(Q)||Bo(Q)))return D}else if(D.tag===19&&D.memoizedProps.revealOrder!==void 0){if(D.flags&64)return D}else if(D.child!==null){D.child.return=D,D=D.child;continue}if(D===v)break;for(;D.sibling===null;){if(D.return===null||D.return===v)return null;D=D.return}D.sibling.return=D.return,D=D.sibling}return null}var Wa=null,Aa=null,Ya=!1;function _g(v,D){var Q=Ka(5,null,null,0);Q.elementType="DELETED",Q.type="DELETED",Q.stateNode=D,Q.return=v,Q.flags=8,v.lastEffect!==null?(v.lastEffect.nextEffect=Q,v.lastEffect=Q):v.firstEffect=v.lastEffect=Q}function Sh(v,D){switch(v.tag){case 5:return D=aa(D,v.type,v.pendingProps),D!==null?(v.stateNode=D,!0):!1;case 6:return D=FA(D,v.pendingProps),D!==null?(v.stateNode=D,!0):!1;case 13:return!1;default:return!1}}function Hg(v){if(Ya){var D=Aa;if(D){var Q=D;if(!Sh(v,D)){if(D=Me(Q),!D||!Sh(v,D)){v.flags=v.flags&-1025|2,Ya=!1,Wa=v;return}_g(Wa,Q)}Wa=v,Aa=cu(D)}else v.flags=v.flags&-1025|2,Ya=!1,Wa=v}}function vy(v){for(v=v.return;v!==null&&v.tag!==5&&v.tag!==3&&v.tag!==13;)v=v.return;Wa=v}function qA(v){if(!Z||v!==Wa)return!1;if(!Ya)return vy(v),Ya=!0,!1;var D=v.type;if(v.tag!==5||D!=="head"&&D!=="body"&&!it(D,v.memoizedProps))for(D=Aa;D;)_g(v,D),D=Me(D);if(vy(v),v.tag===13){if(!Z)throw Error(c(316));if(v=v.memoizedState,v=v!==null?v.dehydrated:null,!v)throw Error(c(317));Aa=NA(v)}else Aa=Wa?Me(v.stateNode):null;return!0}function jg(){Z&&(Aa=Wa=null,Ya=!1)}var mu=[];function yu(){for(var v=0;vne))throw Error(c(301));ne+=1,bi=ns=null,D.updateQueue=null,If.current=re,v=Q(H,V)}while(Cf)}if(If.current=kt,D=ns!==null&&ns.next!==null,Eu=0,bi=ns=Gn=null,WA=!1,D)throw Error(c(300));return v}function is(){var v={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};return bi===null?Gn.memoizedState=bi=v:bi=bi.next=v,bi}function bl(){if(ns===null){var v=Gn.alternate;v=v!==null?v.memoizedState:null}else v=ns.next;var D=bi===null?Gn.memoizedState:bi.next;if(D!==null)bi=D,ns=v;else{if(v===null)throw Error(c(310));ns=v,v={memoizedState:ns.memoizedState,baseState:ns.baseState,baseQueue:ns.baseQueue,queue:ns.queue,next:null},bi===null?Gn.memoizedState=bi=v:bi=bi.next=v}return bi}function bo(v,D){return typeof D=="function"?D(v):D}function wf(v){var D=bl(),Q=D.queue;if(Q===null)throw Error(c(311));Q.lastRenderedReducer=v;var H=ns,V=H.baseQueue,ne=Q.pending;if(ne!==null){if(V!==null){var Se=V.next;V.next=ne.next,ne.next=Se}H.baseQueue=V=ne,Q.pending=null}if(V!==null){V=V.next,H=H.baseState;var _e=Se=ne=null,pt=V;do{var Wt=pt.lane;if((Eu&Wt)===Wt)_e!==null&&(_e=_e.next={lane:0,action:pt.action,eagerReducer:pt.eagerReducer,eagerState:pt.eagerState,next:null}),H=pt.eagerReducer===v?pt.eagerState:v(H,pt.action);else{var Sr={lane:Wt,action:pt.action,eagerReducer:pt.eagerReducer,eagerState:pt.eagerState,next:null};_e===null?(Se=_e=Sr,ne=H):_e=_e.next=Sr,Gn.lanes|=Wt,Xg|=Wt}pt=pt.next}while(pt!==null&&pt!==V);_e===null?ne=H:_e.next=Se,vo(H,D.memoizedState)||(Je=!0),D.memoizedState=H,D.baseState=ne,D.baseQueue=_e,Q.lastRenderedState=H}return[D.memoizedState,Q.dispatch]}function Bf(v){var D=bl(),Q=D.queue;if(Q===null)throw Error(c(311));Q.lastRenderedReducer=v;var H=Q.dispatch,V=Q.pending,ne=D.memoizedState;if(V!==null){Q.pending=null;var Se=V=V.next;do ne=v(ne,Se.action),Se=Se.next;while(Se!==V);vo(ne,D.memoizedState)||(Je=!0),D.memoizedState=ne,D.baseQueue===null&&(D.baseState=ne),Q.lastRenderedState=ne}return[ne,H]}function xl(v,D,Q){var H=D._getVersion;H=H(D._source);var V=y?D._workInProgressVersionPrimary:D._workInProgressVersionSecondary;if(V!==null?v=V===H:(v=v.mutableReadLanes,(v=(Eu&v)===v)&&(y?D._workInProgressVersionPrimary=H:D._workInProgressVersionSecondary=H,mu.push(D))),v)return Q(D._source);throw mu.push(D),Error(c(350))}function yn(v,D,Q,H){var V=so;if(V===null)throw Error(c(349));var ne=D._getVersion,Se=ne(D._source),_e=If.current,pt=_e.useState(function(){return xl(V,D,Q)}),Wt=pt[1],Sr=pt[0];pt=bi;var Lr=v.memoizedState,Xt=Lr.refs,zn=Xt.getSnapshot,yi=Lr.source;Lr=Lr.subscribe;var za=Gn;return v.memoizedState={refs:Xt,source:D,subscribe:H},_e.useEffect(function(){Xt.getSnapshot=Q,Xt.setSnapshot=Wt;var et=ne(D._source);if(!vo(Se,et)){et=Q(D._source),vo(Sr,et)||(Wt(et),et=Bs(za),V.mutableReadLanes|=et&V.pendingLanes),et=V.mutableReadLanes,V.entangledLanes|=et;for(var qe=V.entanglements,gt=et;0Q?98:Q,function(){v(!0)}),li(97m2&&(D.flags|=64,V=!0,ZA(H,!1),D.lanes=33554432)}else{if(!V)if(v=GA(ne),v!==null){if(D.flags|=64,V=!0,v=v.updateQueue,v!==null&&(D.updateQueue=v,D.flags|=4),ZA(H,!0),H.tail===null&&H.tailMode==="hidden"&&!ne.alternate&&!Ya)return D=D.lastEffect=H.lastEffect,D!==null&&(D.nextEffect=null),null}else 2*Pt()-H.renderingStartTime>m2&&Q!==1073741824&&(D.flags|=64,V=!0,ZA(H,!1),D.lanes=33554432);H.isBackwards?(ne.sibling=D.child,D.child=ne):(v=H.last,v!==null?v.sibling=ne:D.child=ne,H.last=ne)}return H.tail!==null?(v=H.tail,H.rendering=v,H.tail=v.sibling,H.lastEffect=D.lastEffect,H.renderingStartTime=Pt(),v.sibling=null,D=di.current,xn(di,V?D&1|2:D&1),v):null;case 23:case 24:return B2(),v!==null&&v.memoizedState!==null!=(D.memoizedState!==null)&&H.mode!=="unstable-defer-without-hiding"&&(D.flags|=4),null}throw Error(c(156,D.tag))}function jL(v){switch(v.tag){case 1:Kn(v.type)&&Au();var D=v.flags;return D&4096?(v.flags=D&-4097|64,v):null;case 3:if(du(),Tt(Li),Tt(ji),yu(),D=v.flags,D&64)throw Error(c(285));return v.flags=D&-4097|64,v;case 5:return wt(v),null;case 13:return Tt(di),D=v.flags,D&4096?(v.flags=D&-4097|64,v):null;case 19:return Tt(di),null;case 4:return du(),null;case 10:return Og(v),null;case 23:case 24:return B2(),null;default:return null}}function Yg(v,D){try{var Q="",H=D;do Q+=$1(H),H=H.return;while(H);var V=Q}catch(ne){V=` Error generating stack: `+ne.message+` `+ne.stack}return{value:v,source:D,stack:V}}function Vg(v,D){try{console.error(D.value)}catch(Q){setTimeout(function(){throw Q})}}var qL=typeof WeakMap=="function"?WeakMap:Map;function i2(v,D,Q){Q=Dl(-1,Q),Q.tag=3,Q.payload={element:null};var H=D.value;return Q.callback=function(){_y||(_y=!0,y2=H),Vg(v,D)},Q}function Jg(v,D,Q){Q=Dl(-1,Q),Q.tag=3;var H=v.type.getDerivedStateFromError;if(typeof H=="function"){var V=D.value;Q.payload=function(){return Vg(v,D),H(V)}}var ne=v.stateNode;return ne!==null&&typeof ne.componentDidCatch=="function"&&(Q.callback=function(){typeof H!="function"&&(hc===null?hc=new Set([this]):hc.add(this),Vg(v,D));var Se=D.stack;this.componentDidCatch(D.value,{componentStack:Se!==null?Se:""})}),Q}var WL=typeof WeakSet=="function"?WeakSet:Set;function s2(v){var D=v.ref;if(D!==null)if(typeof D=="function")try{D(null)}catch(Q){xf(v,Q)}else D.current=null}function xy(v,D){switch(D.tag){case 0:case 11:case 15:case 22:return;case 1:if(D.flags&256&&v!==null){var Q=v.memoizedProps,H=v.memoizedState;v=D.stateNode,D=v.getSnapshotBeforeUpdate(D.elementType===D.type?Q:So(D.type,Q),H),v.__reactInternalSnapshotBeforeUpdate=D}return;case 3:F&&D.flags&256&&Rs(D.stateNode.containerInfo);return;case 5:case 6:case 4:case 17:return}throw Error(c(163))}function Rh(v,D){if(D=D.updateQueue,D=D!==null?D.lastEffect:null,D!==null){var Q=D=D.next;do{if((Q.tag&v)===v){var H=Q.destroy;Q.destroy=void 0,H!==void 0&&H()}Q=Q.next}while(Q!==D)}}function ub(v,D,Q){switch(Q.tag){case 0:case 11:case 15:case 22:if(D=Q.updateQueue,D=D!==null?D.lastEffect:null,D!==null){v=D=D.next;do{if((v.tag&3)===3){var H=v.create;v.destroy=H()}v=v.next}while(v!==D)}if(D=Q.updateQueue,D=D!==null?D.lastEffect:null,D!==null){v=D=D.next;do{var V=v;H=V.next,V=V.tag,V&4&&V&1&&(vb(Q,v),eM(Q,v)),v=H}while(v!==D)}return;case 1:v=Q.stateNode,Q.flags&4&&(D===null?v.componentDidMount():(H=Q.elementType===Q.type?D.memoizedProps:So(Q.type,D.memoizedProps),v.componentDidUpdate(H,D.memoizedState,v.__reactInternalSnapshotBeforeUpdate))),D=Q.updateQueue,D!==null&&Cy(Q,D,v);return;case 3:if(D=Q.updateQueue,D!==null){if(v=null,Q.child!==null)switch(Q.child.tag){case 5:v=Te(Q.child.stateNode);break;case 1:v=Q.child.stateNode}Cy(Q,D,v)}return;case 5:v=Q.stateNode,D===null&&Q.flags&4&&$s(v,Q.type,Q.memoizedProps,Q);return;case 6:return;case 4:return;case 12:return;case 13:Z&&Q.memoizedState===null&&(Q=Q.alternate,Q!==null&&(Q=Q.memoizedState,Q!==null&&(Q=Q.dehydrated,Q!==null&&uu(Q))));return;case 19:case 17:case 20:case 21:case 23:case 24:return}throw Error(c(163))}function fb(v,D){if(F)for(var Q=v;;){if(Q.tag===5){var H=Q.stateNode;D?dh(H):to(Q.stateNode,Q.memoizedProps)}else if(Q.tag===6)H=Q.stateNode,D?mh(H):jn(H,Q.memoizedProps);else if((Q.tag!==23&&Q.tag!==24||Q.memoizedState===null||Q===v)&&Q.child!==null){Q.child.return=Q,Q=Q.child;continue}if(Q===v)break;for(;Q.sibling===null;){if(Q.return===null||Q.return===v)return;Q=Q.return}Q.sibling.return=Q.return,Q=Q.sibling}}function ky(v,D){if(Ua&&typeof Ua.onCommitFiberUnmount=="function")try{Ua.onCommitFiberUnmount($e,D)}catch{}switch(D.tag){case 0:case 11:case 14:case 15:case 22:if(v=D.updateQueue,v!==null&&(v=v.lastEffect,v!==null)){var Q=v=v.next;do{var H=Q,V=H.destroy;if(H=H.tag,V!==void 0)if(H&4)vb(D,Q);else{H=D;try{V()}catch(ne){xf(H,ne)}}Q=Q.next}while(Q!==v)}break;case 1:if(s2(D),v=D.stateNode,typeof v.componentWillUnmount=="function")try{v.props=D.memoizedProps,v.state=D.memoizedState,v.componentWillUnmount()}catch(ne){xf(D,ne)}break;case 5:s2(D);break;case 4:F?gb(v,D):z&&z&&(D=D.stateNode.containerInfo,v=ou(D),RA(D,v))}}function Ab(v,D){for(var Q=D;;)if(ky(v,Q),Q.child===null||F&&Q.tag===4){if(Q===D)break;for(;Q.sibling===null;){if(Q.return===null||Q.return===D)return;Q=Q.return}Q.sibling.return=Q.return,Q=Q.sibling}else Q.child.return=Q,Q=Q.child}function Qy(v){v.alternate=null,v.child=null,v.dependencies=null,v.firstEffect=null,v.lastEffect=null,v.memoizedProps=null,v.memoizedState=null,v.pendingProps=null,v.return=null,v.updateQueue=null}function pb(v){return v.tag===5||v.tag===3||v.tag===4}function hb(v){if(F){e:{for(var D=v.return;D!==null;){if(pb(D))break e;D=D.return}throw Error(c(160))}var Q=D;switch(D=Q.stateNode,Q.tag){case 5:var H=!1;break;case 3:D=D.containerInfo,H=!0;break;case 4:D=D.containerInfo,H=!0;break;default:throw Error(c(161))}Q.flags&16&&(Af(D),Q.flags&=-17);e:t:for(Q=v;;){for(;Q.sibling===null;){if(Q.return===null||pb(Q.return)){Q=null;break e}Q=Q.return}for(Q.sibling.return=Q.return,Q=Q.sibling;Q.tag!==5&&Q.tag!==6&&Q.tag!==18;){if(Q.flags&2||Q.child===null||Q.tag===4)continue t;Q.child.return=Q,Q=Q.child}if(!(Q.flags&2)){Q=Q.stateNode;break e}}H?o2(v,Q,D):a2(v,Q,D)}}function o2(v,D,Q){var H=v.tag,V=H===5||H===6;if(V)v=V?v.stateNode:v.stateNode.instance,D?eo(Q,v,D):Io(Q,v);else if(H!==4&&(v=v.child,v!==null))for(o2(v,D,Q),v=v.sibling;v!==null;)o2(v,D,Q),v=v.sibling}function a2(v,D,Q){var H=v.tag,V=H===5||H===6;if(V)v=V?v.stateNode:v.stateNode.instance,D?Hi(Q,v,D):ai(Q,v);else if(H!==4&&(v=v.child,v!==null))for(a2(v,D,Q),v=v.sibling;v!==null;)a2(v,D,Q),v=v.sibling}function gb(v,D){for(var Q=D,H=!1,V,ne;;){if(!H){H=Q.return;e:for(;;){if(H===null)throw Error(c(160));switch(V=H.stateNode,H.tag){case 5:ne=!1;break e;case 3:V=V.containerInfo,ne=!0;break e;case 4:V=V.containerInfo,ne=!0;break e}H=H.return}H=!0}if(Q.tag===5||Q.tag===6)Ab(v,Q),ne?QA(V,Q.stateNode):wo(V,Q.stateNode);else if(Q.tag===4){if(Q.child!==null){V=Q.stateNode.containerInfo,ne=!0,Q.child.return=Q,Q=Q.child;continue}}else if(ky(v,Q),Q.child!==null){Q.child.return=Q,Q=Q.child;continue}if(Q===D)break;for(;Q.sibling===null;){if(Q.return===null||Q.return===D)return;Q=Q.return,Q.tag===4&&(H=!1)}Q.sibling.return=Q.return,Q=Q.sibling}}function l2(v,D){if(F){switch(D.tag){case 0:case 11:case 14:case 15:case 22:Rh(3,D);return;case 1:return;case 5:var Q=D.stateNode;if(Q!=null){var H=D.memoizedProps;v=v!==null?v.memoizedProps:H;var V=D.type,ne=D.updateQueue;D.updateQueue=null,ne!==null&&Co(Q,ne,V,v,H,D)}return;case 6:if(D.stateNode===null)throw Error(c(162));Q=D.memoizedProps,ts(D.stateNode,v!==null?v.memoizedProps:Q,Q);return;case 3:Z&&(D=D.stateNode,D.hydrate&&(D.hydrate=!1,OA(D.containerInfo)));return;case 12:return;case 13:db(D),Kg(D);return;case 19:Kg(D);return;case 17:return;case 23:case 24:fb(D,D.memoizedState!==null);return}throw Error(c(163))}switch(D.tag){case 0:case 11:case 14:case 15:case 22:Rh(3,D);return;case 12:return;case 13:db(D),Kg(D);return;case 19:Kg(D);return;case 3:Z&&(Q=D.stateNode,Q.hydrate&&(Q.hydrate=!1,OA(Q.containerInfo)));break;case 23:case 24:return}e:if(z){switch(D.tag){case 1:case 5:case 6:case 20:break e;case 3:case 4:D=D.stateNode,RA(D.containerInfo,D.pendingChildren);break e}throw Error(c(163))}}function db(v){v.memoizedState!==null&&(d2=Pt(),F&&fb(v.child,!0))}function Kg(v){var D=v.updateQueue;if(D!==null){v.updateQueue=null;var Q=v.stateNode;Q===null&&(Q=v.stateNode=new WL),D.forEach(function(H){var V=rM.bind(null,v,H);Q.has(H)||(Q.add(H),H.then(V,V))})}}function YL(v,D){return v!==null&&(v=v.memoizedState,v===null||v.dehydrated!==null)?(D=D.memoizedState,D!==null&&D.dehydrated===null):!1}var Ry=0,Ty=1,Fy=2,zg=3,Ny=4;if(typeof Symbol=="function"&&Symbol.for){var Zg=Symbol.for;Ry=Zg("selector.component"),Ty=Zg("selector.has_pseudo_class"),Fy=Zg("selector.role"),zg=Zg("selector.test_id"),Ny=Zg("selector.text")}function Oy(v){var D=$(v);if(D!=null){if(typeof D.memoizedProps["data-testname"]!="string")throw Error(c(364));return D}if(v=ir(v),v===null)throw Error(c(362));return v.stateNode.current}function Sf(v,D){switch(D.$$typeof){case Ry:if(v.type===D.value)return!0;break;case Ty:e:{D=D.value,v=[v,0];for(var Q=0;Q";case Ty:return":has("+(Df(v)||"")+")";case Fy:return'[role="'+v.value+'"]';case Ny:return'"'+v.value+'"';case zg:return'[data-testname="'+v.value+'"]';default:throw Error(c(365,v))}}function c2(v,D){var Q=[];v=[v,0];for(var H=0;HV&&(V=Se),Q&=~ne}if(Q=V,Q=Pt()-Q,Q=(120>Q?120:480>Q?480:1080>Q?1080:1920>Q?1920:3e3>Q?3e3:4320>Q?4320:1960*JL(Q/1960))-Q,10 component higher in the tree to provide a loading indicator or placeholder to display.`)}ws!==5&&(ws=2),pt=Yg(pt,_e),Xt=Se;do{switch(Xt.tag){case 3:ne=pt,Xt.flags|=4096,D&=-D,Xt.lanes|=D;var Xn=i2(Xt,ne,D);Iy(Xt,Xn);break e;case 1:ne=pt;var kr=Xt.type,Tn=Xt.stateNode;if(!(Xt.flags&64)&&(typeof kr.getDerivedStateFromError=="function"||Tn!==null&&typeof Tn.componentDidCatch=="function"&&(hc===null||!hc.has(Tn)))){Xt.flags|=4096,D&=-D,Xt.lanes|=D;var _n=Jg(Xt,ne,D);Iy(Xt,_n);break e}}Xt=Xt.return}while(Xt!==null)}Bb(Q)}catch(zr){D=zr,zi===Q&&Q!==null&&(zi=Q=Q.return);continue}break}while(!0)}function Cb(){var v=My.current;return My.current=kt,v===null?kt:v}function id(v,D){var Q=xr;xr|=16;var H=Cb();so===v&&Ns===D||Oh(v,D);do try{zL();break}catch(V){Ib(v,V)}while(!0);if(Fg(),xr=Q,My.current=H,zi!==null)throw Error(c(261));return so=null,Ns=0,ws}function zL(){for(;zi!==null;)wb(zi)}function ZL(){for(;zi!==null&&!vl();)wb(zi)}function wb(v){var D=Pb(v.alternate,v,XA);v.memoizedProps=v.pendingProps,D===null?Bb(v):zi=D,f2.current=null}function Bb(v){var D=v;do{var Q=D.alternate;if(v=D.return,D.flags&2048){if(Q=jL(D),Q!==null){Q.flags&=2047,zi=Q;return}v!==null&&(v.firstEffect=v.lastEffect=null,v.flags|=2048)}else{if(Q=HL(Q,D,XA),Q!==null){zi=Q;return}if(Q=D,Q.tag!==24&&Q.tag!==23||Q.memoizedState===null||XA&1073741824||!(Q.mode&4)){for(var H=0,V=Q.child;V!==null;)H|=V.lanes|V.childLanes,V=V.sibling;Q.childLanes=H}v!==null&&!(v.flags&2048)&&(v.firstEffect===null&&(v.firstEffect=D.firstEffect),D.lastEffect!==null&&(v.lastEffect!==null&&(v.lastEffect.nextEffect=D.firstEffect),v.lastEffect=D.lastEffect),1Pt()-d2?Oh(v,0):h2|=Q),ga(v,D)}function rM(v,D){var Q=v.stateNode;Q!==null&&Q.delete(D),D=0,D===0&&(D=v.mode,D&2?D&4?(Bu===0&&(Bu=Th),D=kn(62914560&~Bu),D===0&&(D=4194304)):D=tr()===99?1:2:D=1),Q=ko(),v=Gy(v,D),v!==null&&(Ha(v,D,Q),ga(v,Q))}var Pb;Pb=function(v,D,Q){var H=D.lanes;if(v!==null)if(v.memoizedProps!==D.pendingProps||Li.current)Je=!0;else if(Q&H)Je=!!(v.flags&16384);else{switch(Je=!1,D.tag){case 3:Py(D),jg();break;case 5:Ef(D);break;case 1:Kn(D.type)&&La(D);break;case 4:Ug(D,D.stateNode.containerInfo);break;case 10:Ng(D,D.memoizedProps.value);break;case 13:if(D.memoizedState!==null)return Q&D.child.childLanes?r2(v,D,Q):(xn(di,di.current&1),D=qn(v,D,Q),D!==null?D.sibling:null);xn(di,di.current&1);break;case 19:if(H=(Q&D.childLanes)!==0,v.flags&64){if(H)return lb(v,D,Q);D.flags|=64}var V=D.memoizedState;if(V!==null&&(V.rendering=null,V.tail=null,V.lastEffect=null),xn(di,di.current),H)break;return null;case 23:case 24:return D.lanes=0,mi(v,D,Q)}return qn(v,D,Q)}else Je=!1;switch(D.lanes=0,D.tag){case 2:if(H=D.type,v!==null&&(v.alternate=null,D.alternate=null,D.flags|=2),v=D.pendingProps,V=dn(D,ji.current),df(D,Q),V=qg(null,D,H,v,V,Q),D.flags|=1,typeof V=="object"&&V!==null&&typeof V.render=="function"&&V.$$typeof===void 0){if(D.tag=1,D.memoizedState=null,D.updateQueue=null,Kn(H)){var ne=!0;La(D)}else ne=!1;D.memoizedState=V.state!==null&&V.state!==void 0?V.state:null,Bh(D);var Se=H.getDerivedStateFromProps;typeof Se=="function"&&_A(D,H,Se,v),V.updater=HA,D.stateNode=V,V._reactInternals=D,Po(D,H,v,Q),D=t2(null,D,H,!0,ne,Q)}else D.tag=0,At(null,D,V,Q),D=D.child;return D;case 16:V=D.elementType;e:{switch(v!==null&&(v.alternate=null,D.alternate=null,D.flags|=2),v=D.pendingProps,ne=V._init,V=ne(V._payload),D.type=V,ne=D.tag=iM(V),v=So(V,v),ne){case 0:D=JA(null,D,V,v,Q);break e;case 1:D=ab(null,D,V,v,Q);break e;case 11:D=dr(null,D,V,v,Q);break e;case 14:D=vr(null,D,V,So(V.type,v),H,Q);break e}throw Error(c(306,V,""))}return D;case 0:return H=D.type,V=D.pendingProps,V=D.elementType===H?V:So(H,V),JA(v,D,H,V,Q);case 1:return H=D.type,V=D.pendingProps,V=D.elementType===H?V:So(H,V),ab(v,D,H,V,Q);case 3:if(Py(D),H=D.updateQueue,v===null||H===null)throw Error(c(282));if(H=D.pendingProps,V=D.memoizedState,V=V!==null?V.element:null,Lg(v,D),UA(D,H,null,Q),H=D.memoizedState.element,H===V)jg(),D=qn(v,D,Q);else{if(V=D.stateNode,(ne=V.hydrate)&&(Z?(Aa=cu(D.stateNode.containerInfo),Wa=D,ne=Ya=!0):ne=!1),ne){if(Z&&(v=V.mutableSourceEagerHydrationData,v!=null))for(V=0;V=Wt&&ne>=Lr&&V<=Sr&&Se<=Xt){v.splice(D,1);break}else if(H!==Wt||Q.width!==pt.width||XtSe){if(!(ne!==Lr||Q.height!==pt.height||SrV)){Wt>H&&(pt.width+=Wt-H,pt.x=H),Srne&&(pt.height+=Lr-ne,pt.y=ne),XtQ&&(Q=Se)),Se ")+` No matching component was found for: `)+v.join(" > ")}return null},r.getPublicRootInstance=function(v){if(v=v.current,!v.child)return null;switch(v.child.tag){case 5:return Te(v.child.stateNode);default:return v.child.stateNode}},r.injectIntoDevTools=function(v){if(v={bundleType:v.bundleType,version:v.version,rendererPackageName:v.rendererPackageName,rendererConfig:v.rendererConfig,overrideHookState:null,overrideHookStateDeletePath:null,overrideHookStateRenamePath:null,overrideProps:null,overridePropsDeletePath:null,overridePropsRenamePath:null,setSuspenseHandler:null,scheduleUpdate:null,currentDispatcherRef:f.ReactCurrentDispatcher,findHostInstanceByFiber:oM,findFiberByHostInstance:v.findFiberByHostInstance||aM,findHostInstancesForRefresh:null,scheduleRefresh:null,scheduleRoot:null,setRefreshHandler:null,getCurrentFiber:null},typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>"u")v=!1;else{var D=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(!D.isDisabled&&D.supportsFiber)try{$e=D.inject(v),Ua=D}catch{}v=!0}return v},r.observeVisibleRects=function(v,D,Q,H){if(!qt)throw Error(c(363));v=u2(v,D);var V=nn(v,Q,H).disconnect;return{disconnect:function(){V()}}},r.registerMutableSourceForHydration=function(v,D){var Q=D._getVersion;Q=Q(D._source),v.mutableSourceEagerHydrationData==null?v.mutableSourceEagerHydrationData=[D,Q]:v.mutableSourceEagerHydrationData.push(D,Q)},r.runWithPriority=function(v,D){var Q=lc;try{return lc=v,D()}finally{lc=Q}},r.shouldSuspend=function(){return!1},r.unbatchedUpdates=function(v,D){var Q=xr;xr&=-2,xr|=8;try{return v(D)}finally{xr=Q,xr===0&&(Pf(),Rn())}},r.updateContainer=function(v,D,Q,H){var V=D.current,ne=ko(),Se=Bs(V);e:if(Q){Q=Q._reactInternals;t:{if(we(Q)!==Q||Q.tag!==1)throw Error(c(170));var _e=Q;do{switch(_e.tag){case 3:_e=_e.stateNode.context;break t;case 1:if(Kn(_e.type)){_e=_e.stateNode.__reactInternalMemoizedMergedChildContext;break t}}_e=_e.return}while(_e!==null);throw Error(c(171))}if(Q.tag===1){var pt=Q.type;if(Kn(pt)){Q=Oa(Q,pt,_e);break e}}Q=_e}else Q=la;return D.context===null?D.context=Q:D.pendingContext=Q,D=Dl(ne,Se),D.payload={element:v},H=H===void 0?null:H,H!==null&&(D.callback=H),Pl(V,D),Rl(V,Se,ne),Se},r}});var Iwe=_((sKt,Ewe)=>{"use strict";Ewe.exports=ywe()});var wwe=_((oKt,Cwe)=>{"use strict";var mpt={ALIGN_COUNT:8,ALIGN_AUTO:0,ALIGN_FLEX_START:1,ALIGN_CENTER:2,ALIGN_FLEX_END:3,ALIGN_STRETCH:4,ALIGN_BASELINE:5,ALIGN_SPACE_BETWEEN:6,ALIGN_SPACE_AROUND:7,DIMENSION_COUNT:2,DIMENSION_WIDTH:0,DIMENSION_HEIGHT:1,DIRECTION_COUNT:3,DIRECTION_INHERIT:0,DIRECTION_LTR:1,DIRECTION_RTL:2,DISPLAY_COUNT:2,DISPLAY_FLEX:0,DISPLAY_NONE:1,EDGE_COUNT:9,EDGE_LEFT:0,EDGE_TOP:1,EDGE_RIGHT:2,EDGE_BOTTOM:3,EDGE_START:4,EDGE_END:5,EDGE_HORIZONTAL:6,EDGE_VERTICAL:7,EDGE_ALL:8,EXPERIMENTAL_FEATURE_COUNT:1,EXPERIMENTAL_FEATURE_WEB_FLEX_BASIS:0,FLEX_DIRECTION_COUNT:4,FLEX_DIRECTION_COLUMN:0,FLEX_DIRECTION_COLUMN_REVERSE:1,FLEX_DIRECTION_ROW:2,FLEX_DIRECTION_ROW_REVERSE:3,JUSTIFY_COUNT:6,JUSTIFY_FLEX_START:0,JUSTIFY_CENTER:1,JUSTIFY_FLEX_END:2,JUSTIFY_SPACE_BETWEEN:3,JUSTIFY_SPACE_AROUND:4,JUSTIFY_SPACE_EVENLY:5,LOG_LEVEL_COUNT:6,LOG_LEVEL_ERROR:0,LOG_LEVEL_WARN:1,LOG_LEVEL_INFO:2,LOG_LEVEL_DEBUG:3,LOG_LEVEL_VERBOSE:4,LOG_LEVEL_FATAL:5,MEASURE_MODE_COUNT:3,MEASURE_MODE_UNDEFINED:0,MEASURE_MODE_EXACTLY:1,MEASURE_MODE_AT_MOST:2,NODE_TYPE_COUNT:2,NODE_TYPE_DEFAULT:0,NODE_TYPE_TEXT:1,OVERFLOW_COUNT:3,OVERFLOW_VISIBLE:0,OVERFLOW_HIDDEN:1,OVERFLOW_SCROLL:2,POSITION_TYPE_COUNT:2,POSITION_TYPE_RELATIVE:0,POSITION_TYPE_ABSOLUTE:1,PRINT_OPTIONS_COUNT:3,PRINT_OPTIONS_LAYOUT:1,PRINT_OPTIONS_STYLE:2,PRINT_OPTIONS_CHILDREN:4,UNIT_COUNT:4,UNIT_UNDEFINED:0,UNIT_POINT:1,UNIT_PERCENT:2,UNIT_AUTO:3,WRAP_COUNT:3,WRAP_NO_WRAP:0,WRAP_WRAP:1,WRAP_WRAP_REVERSE:2};Cwe.exports=mpt});var Dwe=_((aKt,Swe)=>{"use strict";var ypt=Object.assign||function(t){for(var e=1;e"}}]),t}(),Bwe=function(){TF(t,null,[{key:"fromJS",value:function(r){var s=r.width,a=r.height;return new t(s,a)}}]);function t(e,r){H9(this,t),this.width=e,this.height=r}return TF(t,[{key:"fromJS",value:function(r){r(this.width,this.height)}},{key:"toString",value:function(){return""}}]),t}(),vwe=function(){function t(e,r){H9(this,t),this.unit=e,this.value=r}return TF(t,[{key:"fromJS",value:function(r){r(this.unit,this.value)}},{key:"toString",value:function(){switch(this.unit){case tf.UNIT_POINT:return String(this.value);case tf.UNIT_PERCENT:return this.value+"%";case tf.UNIT_AUTO:return"auto";default:return this.value+"?"}}},{key:"valueOf",value:function(){return this.value}}]),t}();Swe.exports=function(t,e){function r(c,f,p){var h=c[f];c[f]=function(){for(var E=arguments.length,C=Array(E),S=0;S1?C-1:0),b=1;b1&&arguments[1]!==void 0?arguments[1]:NaN,p=arguments.length>2&&arguments[2]!==void 0?arguments[2]:NaN,h=arguments.length>3&&arguments[3]!==void 0?arguments[3]:tf.DIRECTION_LTR;return c.call(this,f,p,h)}),ypt({Config:e.Config,Node:e.Node,Layout:t("Layout",Ept),Size:t("Size",Bwe),Value:t("Value",vwe),getInstanceCount:function(){return e.getInstanceCount.apply(e,arguments)}},tf)}});var Pwe=_((exports,module)=>{(function(t,e){typeof define=="function"&&define.amd?define([],function(){return e}):typeof module=="object"&&module.exports?module.exports=e:(t.nbind=t.nbind||{}).init=e})(exports,function(Module,cb){typeof Module=="function"&&(cb=Module,Module={}),Module.onRuntimeInitialized=function(t,e){return function(){t&&t.apply(this,arguments);try{Module.ccall("nbind_init")}catch(r){e(r);return}e(null,{bind:Module._nbind_value,reflect:Module.NBind.reflect,queryType:Module.NBind.queryType,toggleLightGC:Module.toggleLightGC,lib:Module})}}(Module.onRuntimeInitialized,cb);var Module;Module||(Module=(typeof Module<"u"?Module:null)||{});var moduleOverrides={};for(var key in Module)Module.hasOwnProperty(key)&&(moduleOverrides[key]=Module[key]);var ENVIRONMENT_IS_WEB=!1,ENVIRONMENT_IS_WORKER=!1,ENVIRONMENT_IS_NODE=!1,ENVIRONMENT_IS_SHELL=!1;if(Module.ENVIRONMENT)if(Module.ENVIRONMENT==="WEB")ENVIRONMENT_IS_WEB=!0;else if(Module.ENVIRONMENT==="WORKER")ENVIRONMENT_IS_WORKER=!0;else if(Module.ENVIRONMENT==="NODE")ENVIRONMENT_IS_NODE=!0;else if(Module.ENVIRONMENT==="SHELL")ENVIRONMENT_IS_SHELL=!0;else throw new Error("The provided Module['ENVIRONMENT'] value is not valid. It must be one of: WEB|WORKER|NODE|SHELL.");else ENVIRONMENT_IS_WEB=typeof window=="object",ENVIRONMENT_IS_WORKER=typeof importScripts=="function",ENVIRONMENT_IS_NODE=typeof process=="object"&&typeof Ie=="function"&&!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_WORKER,ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER;if(ENVIRONMENT_IS_NODE){Module.print||(Module.print=console.log),Module.printErr||(Module.printErr=console.warn);var nodeFS,nodePath;Module.read=function(e,r){nodeFS||(nodeFS={}("")),nodePath||(nodePath={}("")),e=nodePath.normalize(e);var s=nodeFS.readFileSync(e);return r?s:s.toString()},Module.readBinary=function(e){var r=Module.read(e,!0);return r.buffer||(r=new Uint8Array(r)),assert(r.buffer),r},Module.load=function(e){globalEval(read(e))},Module.thisProgram||(process.argv.length>1?Module.thisProgram=process.argv[1].replace(/\\/g,"/"):Module.thisProgram="unknown-program"),Module.arguments=process.argv.slice(2),typeof module<"u"&&(module.exports=Module),Module.inspect=function(){return"[Emscripten Module object]"}}else if(ENVIRONMENT_IS_SHELL)Module.print||(Module.print=print),typeof printErr<"u"&&(Module.printErr=printErr),typeof read<"u"?Module.read=read:Module.read=function(){throw"no read() available"},Module.readBinary=function(e){if(typeof readbuffer=="function")return new Uint8Array(readbuffer(e));var r=read(e,"binary");return assert(typeof r=="object"),r},typeof scriptArgs<"u"?Module.arguments=scriptArgs:typeof arguments<"u"&&(Module.arguments=arguments),typeof quit=="function"&&(Module.quit=function(t,e){quit(t)});else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(Module.read=function(e){var r=new XMLHttpRequest;return r.open("GET",e,!1),r.send(null),r.responseText},ENVIRONMENT_IS_WORKER&&(Module.readBinary=function(e){var r=new XMLHttpRequest;return r.open("GET",e,!1),r.responseType="arraybuffer",r.send(null),new Uint8Array(r.response)}),Module.readAsync=function(e,r,s){var a=new XMLHttpRequest;a.open("GET",e,!0),a.responseType="arraybuffer",a.onload=function(){a.status==200||a.status==0&&a.response?r(a.response):s()},a.onerror=s,a.send(null)},typeof arguments<"u"&&(Module.arguments=arguments),typeof console<"u")Module.print||(Module.print=function(e){console.log(e)}),Module.printErr||(Module.printErr=function(e){console.warn(e)});else{var TRY_USE_DUMP=!1;Module.print||(Module.print=TRY_USE_DUMP&&typeof dump<"u"?function(t){dump(t)}:function(t){})}ENVIRONMENT_IS_WORKER&&(Module.load=importScripts),typeof Module.setWindowTitle>"u"&&(Module.setWindowTitle=function(t){document.title=t})}else throw"Unknown runtime environment. Where are we?";function globalEval(t){eval.call(null,t)}!Module.load&&Module.read&&(Module.load=function(e){globalEval(Module.read(e))}),Module.print||(Module.print=function(){}),Module.printErr||(Module.printErr=Module.print),Module.arguments||(Module.arguments=[]),Module.thisProgram||(Module.thisProgram="./this.program"),Module.quit||(Module.quit=function(t,e){throw e}),Module.print=Module.print,Module.printErr=Module.printErr,Module.preRun=[],Module.postRun=[];for(var key in moduleOverrides)moduleOverrides.hasOwnProperty(key)&&(Module[key]=moduleOverrides[key]);moduleOverrides=void 0;var Runtime={setTempRet0:function(t){return tempRet0=t,t},getTempRet0:function(){return tempRet0},stackSave:function(){return STACKTOP},stackRestore:function(t){STACKTOP=t},getNativeTypeSize:function(t){switch(t){case"i1":case"i8":return 1;case"i16":return 2;case"i32":return 4;case"i64":return 8;case"float":return 4;case"double":return 8;default:{if(t[t.length-1]==="*")return Runtime.QUANTUM_SIZE;if(t[0]==="i"){var e=parseInt(t.substr(1));return assert(e%8===0),e/8}else return 0}}},getNativeFieldSize:function(t){return Math.max(Runtime.getNativeTypeSize(t),Runtime.QUANTUM_SIZE)},STACK_ALIGN:16,prepVararg:function(t,e){return e==="double"||e==="i64"?t&7&&(assert((t&7)===4),t+=4):assert((t&3)===0),t},getAlignSize:function(t,e,r){return!r&&(t=="i64"||t=="double")?8:t?Math.min(e||(t?Runtime.getNativeFieldSize(t):0),Runtime.QUANTUM_SIZE):Math.min(e,8)},dynCall:function(t,e,r){return r&&r.length?Module["dynCall_"+t].apply(null,[e].concat(r)):Module["dynCall_"+t].call(null,e)},functionPointers:[],addFunction:function(t){for(var e=0;e>2],r=(e+t+15|0)&-16;if(HEAP32[DYNAMICTOP_PTR>>2]=r,r>=TOTAL_MEMORY){var s=enlargeMemory();if(!s)return HEAP32[DYNAMICTOP_PTR>>2]=e,0}return e},alignMemory:function(t,e){var r=t=Math.ceil(t/(e||16))*(e||16);return r},makeBigInt:function(t,e,r){var s=r?+(t>>>0)+ +(e>>>0)*4294967296:+(t>>>0)+ +(e|0)*4294967296;return s},GLOBAL_BASE:8,QUANTUM_SIZE:4,__dummy__:0};Module.Runtime=Runtime;var ABORT=0,EXITSTATUS=0;function assert(t,e){t||abort("Assertion failed: "+e)}function getCFunc(ident){var func=Module["_"+ident];if(!func)try{func=eval("_"+ident)}catch(t){}return assert(func,"Cannot call unknown function "+ident+" (perhaps LLVM optimizations or closure removed it?)"),func}var cwrap,ccall;(function(){var JSfuncs={stackSave:function(){Runtime.stackSave()},stackRestore:function(){Runtime.stackRestore()},arrayToC:function(t){var e=Runtime.stackAlloc(t.length);return writeArrayToMemory(t,e),e},stringToC:function(t){var e=0;if(t!=null&&t!==0){var r=(t.length<<2)+1;e=Runtime.stackAlloc(r),stringToUTF8(t,e,r)}return e}},toC={string:JSfuncs.stringToC,array:JSfuncs.arrayToC};ccall=function(e,r,s,a,n){var c=getCFunc(e),f=[],p=0;if(a)for(var h=0;h>0]=e;break;case"i8":HEAP8[t>>0]=e;break;case"i16":HEAP16[t>>1]=e;break;case"i32":HEAP32[t>>2]=e;break;case"i64":tempI64=[e>>>0,(tempDouble=e,+Math_abs(tempDouble)>=1?tempDouble>0?(Math_min(+Math_floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math_ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[t>>2]=tempI64[0],HEAP32[t+4>>2]=tempI64[1];break;case"float":HEAPF32[t>>2]=e;break;case"double":HEAPF64[t>>3]=e;break;default:abort("invalid type for setValue: "+r)}}Module.setValue=setValue;function getValue(t,e,r){switch(e=e||"i8",e.charAt(e.length-1)==="*"&&(e="i32"),e){case"i1":return HEAP8[t>>0];case"i8":return HEAP8[t>>0];case"i16":return HEAP16[t>>1];case"i32":return HEAP32[t>>2];case"i64":return HEAP32[t>>2];case"float":return HEAPF32[t>>2];case"double":return HEAPF64[t>>3];default:abort("invalid type for setValue: "+e)}return null}Module.getValue=getValue;var ALLOC_NORMAL=0,ALLOC_STACK=1,ALLOC_STATIC=2,ALLOC_DYNAMIC=3,ALLOC_NONE=4;Module.ALLOC_NORMAL=ALLOC_NORMAL,Module.ALLOC_STACK=ALLOC_STACK,Module.ALLOC_STATIC=ALLOC_STATIC,Module.ALLOC_DYNAMIC=ALLOC_DYNAMIC,Module.ALLOC_NONE=ALLOC_NONE;function allocate(t,e,r,s){var a,n;typeof t=="number"?(a=!0,n=t):(a=!1,n=t.length);var c=typeof e=="string"?e:null,f;if(r==ALLOC_NONE?f=s:f=[typeof _malloc=="function"?_malloc:Runtime.staticAlloc,Runtime.stackAlloc,Runtime.staticAlloc,Runtime.dynamicAlloc][r===void 0?ALLOC_STATIC:r](Math.max(n,c?1:e.length)),a){var s=f,p;for(assert((f&3)==0),p=f+(n&-4);s>2]=0;for(p=f+n;s>0]=0;return f}if(c==="i8")return t.subarray||t.slice?HEAPU8.set(t,f):HEAPU8.set(new Uint8Array(t),f),f;for(var h=0,E,C,S;h>0],r|=s,!(s==0&&!e||(a++,e&&a==e)););e||(e=a);var n="";if(r<128){for(var c=1024,f;e>0;)f=String.fromCharCode.apply(String,HEAPU8.subarray(t,t+Math.min(e,c))),n=n?n+f:f,t+=c,e-=c;return n}return Module.UTF8ToString(t)}Module.Pointer_stringify=Pointer_stringify;function AsciiToString(t){for(var e="";;){var r=HEAP8[t++>>0];if(!r)return e;e+=String.fromCharCode(r)}}Module.AsciiToString=AsciiToString;function stringToAscii(t,e){return writeAsciiToMemory(t,e,!1)}Module.stringToAscii=stringToAscii;var UTF8Decoder=typeof TextDecoder<"u"?new TextDecoder("utf8"):void 0;function UTF8ArrayToString(t,e){for(var r=e;t[r];)++r;if(r-e>16&&t.subarray&&UTF8Decoder)return UTF8Decoder.decode(t.subarray(e,r));for(var s,a,n,c,f,p,h="";;){if(s=t[e++],!s)return h;if(!(s&128)){h+=String.fromCharCode(s);continue}if(a=t[e++]&63,(s&224)==192){h+=String.fromCharCode((s&31)<<6|a);continue}if(n=t[e++]&63,(s&240)==224?s=(s&15)<<12|a<<6|n:(c=t[e++]&63,(s&248)==240?s=(s&7)<<18|a<<12|n<<6|c:(f=t[e++]&63,(s&252)==248?s=(s&3)<<24|a<<18|n<<12|c<<6|f:(p=t[e++]&63,s=(s&1)<<30|a<<24|n<<18|c<<12|f<<6|p))),s<65536)h+=String.fromCharCode(s);else{var E=s-65536;h+=String.fromCharCode(55296|E>>10,56320|E&1023)}}}Module.UTF8ArrayToString=UTF8ArrayToString;function UTF8ToString(t){return UTF8ArrayToString(HEAPU8,t)}Module.UTF8ToString=UTF8ToString;function stringToUTF8Array(t,e,r,s){if(!(s>0))return 0;for(var a=r,n=r+s-1,c=0;c=55296&&f<=57343&&(f=65536+((f&1023)<<10)|t.charCodeAt(++c)&1023),f<=127){if(r>=n)break;e[r++]=f}else if(f<=2047){if(r+1>=n)break;e[r++]=192|f>>6,e[r++]=128|f&63}else if(f<=65535){if(r+2>=n)break;e[r++]=224|f>>12,e[r++]=128|f>>6&63,e[r++]=128|f&63}else if(f<=2097151){if(r+3>=n)break;e[r++]=240|f>>18,e[r++]=128|f>>12&63,e[r++]=128|f>>6&63,e[r++]=128|f&63}else if(f<=67108863){if(r+4>=n)break;e[r++]=248|f>>24,e[r++]=128|f>>18&63,e[r++]=128|f>>12&63,e[r++]=128|f>>6&63,e[r++]=128|f&63}else{if(r+5>=n)break;e[r++]=252|f>>30,e[r++]=128|f>>24&63,e[r++]=128|f>>18&63,e[r++]=128|f>>12&63,e[r++]=128|f>>6&63,e[r++]=128|f&63}}return e[r]=0,r-a}Module.stringToUTF8Array=stringToUTF8Array;function stringToUTF8(t,e,r){return stringToUTF8Array(t,HEAPU8,e,r)}Module.stringToUTF8=stringToUTF8;function lengthBytesUTF8(t){for(var e=0,r=0;r=55296&&s<=57343&&(s=65536+((s&1023)<<10)|t.charCodeAt(++r)&1023),s<=127?++e:s<=2047?e+=2:s<=65535?e+=3:s<=2097151?e+=4:s<=67108863?e+=5:e+=6}return e}Module.lengthBytesUTF8=lengthBytesUTF8;var UTF16Decoder=typeof TextDecoder<"u"?new TextDecoder("utf-16le"):void 0;function demangle(t){var e=Module.___cxa_demangle||Module.__cxa_demangle;if(e){try{var r=t.substr(1),s=lengthBytesUTF8(r)+1,a=_malloc(s);stringToUTF8(r,a,s);var n=_malloc(4),c=e(a,0,0,n);if(getValue(n,"i32")===0&&c)return Pointer_stringify(c)}catch{}finally{a&&_free(a),n&&_free(n),c&&_free(c)}return t}return Runtime.warnOnce("warning: build with -s DEMANGLE_SUPPORT=1 to link in libcxxabi demangling"),t}function demangleAll(t){var e=/__Z[\w\d_]+/g;return t.replace(e,function(r){var s=demangle(r);return r===s?r:r+" ["+s+"]"})}function jsStackTrace(){var t=new Error;if(!t.stack){try{throw new Error(0)}catch(e){t=e}if(!t.stack)return"(no stack trace available)"}return t.stack.toString()}function stackTrace(){var t=jsStackTrace();return Module.extraStackTrace&&(t+=` `+Module.extraStackTrace()),demangleAll(t)}Module.stackTrace=stackTrace;var HEAP,buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferViews(){Module.HEAP8=HEAP8=new Int8Array(buffer),Module.HEAP16=HEAP16=new Int16Array(buffer),Module.HEAP32=HEAP32=new Int32Array(buffer),Module.HEAPU8=HEAPU8=new Uint8Array(buffer),Module.HEAPU16=HEAPU16=new Uint16Array(buffer),Module.HEAPU32=HEAPU32=new Uint32Array(buffer),Module.HEAPF32=HEAPF32=new Float32Array(buffer),Module.HEAPF64=HEAPF64=new Float64Array(buffer)}var STATIC_BASE,STATICTOP,staticSealed,STACK_BASE,STACKTOP,STACK_MAX,DYNAMIC_BASE,DYNAMICTOP_PTR;STATIC_BASE=STATICTOP=STACK_BASE=STACKTOP=STACK_MAX=DYNAMIC_BASE=DYNAMICTOP_PTR=0,staticSealed=!1;function abortOnCannotGrowMemory(){abort("Cannot enlarge memory arrays. Either (1) compile with -s TOTAL_MEMORY=X with X higher than the current value "+TOTAL_MEMORY+", (2) compile with -s ALLOW_MEMORY_GROWTH=1 which allows increasing the size at runtime but prevents some optimizations, (3) set Module.TOTAL_MEMORY to a higher value before the program runs, or (4) if you want malloc to return NULL (0) instead of this abort, compile with -s ABORTING_MALLOC=0 ")}function enlargeMemory(){abortOnCannotGrowMemory()}var TOTAL_STACK=Module.TOTAL_STACK||5242880,TOTAL_MEMORY=Module.TOTAL_MEMORY||134217728;TOTAL_MEMORY0;){var e=t.shift();if(typeof e=="function"){e();continue}var r=e.func;typeof r=="number"?e.arg===void 0?Module.dynCall_v(r):Module.dynCall_vi(r,e.arg):r(e.arg===void 0?null:e.arg)}}var __ATPRERUN__=[],__ATINIT__=[],__ATMAIN__=[],__ATEXIT__=[],__ATPOSTRUN__=[],runtimeInitialized=!1,runtimeExited=!1;function preRun(){if(Module.preRun)for(typeof Module.preRun=="function"&&(Module.preRun=[Module.preRun]);Module.preRun.length;)addOnPreRun(Module.preRun.shift());callRuntimeCallbacks(__ATPRERUN__)}function ensureInitRuntime(){runtimeInitialized||(runtimeInitialized=!0,callRuntimeCallbacks(__ATINIT__))}function preMain(){callRuntimeCallbacks(__ATMAIN__)}function exitRuntime(){callRuntimeCallbacks(__ATEXIT__),runtimeExited=!0}function postRun(){if(Module.postRun)for(typeof Module.postRun=="function"&&(Module.postRun=[Module.postRun]);Module.postRun.length;)addOnPostRun(Module.postRun.shift());callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(t){__ATPRERUN__.unshift(t)}Module.addOnPreRun=addOnPreRun;function addOnInit(t){__ATINIT__.unshift(t)}Module.addOnInit=addOnInit;function addOnPreMain(t){__ATMAIN__.unshift(t)}Module.addOnPreMain=addOnPreMain;function addOnExit(t){__ATEXIT__.unshift(t)}Module.addOnExit=addOnExit;function addOnPostRun(t){__ATPOSTRUN__.unshift(t)}Module.addOnPostRun=addOnPostRun;function intArrayFromString(t,e,r){var s=r>0?r:lengthBytesUTF8(t)+1,a=new Array(s),n=stringToUTF8Array(t,a,0,a.length);return e&&(a.length=n),a}Module.intArrayFromString=intArrayFromString;function intArrayToString(t){for(var e=[],r=0;r255&&(s&=255),e.push(String.fromCharCode(s))}return e.join("")}Module.intArrayToString=intArrayToString;function writeStringToMemory(t,e,r){Runtime.warnOnce("writeStringToMemory is deprecated and should not be called! Use stringToUTF8() instead!");var s,a;r&&(a=e+lengthBytesUTF8(t),s=HEAP8[a]),stringToUTF8(t,e,1/0),r&&(HEAP8[a]=s)}Module.writeStringToMemory=writeStringToMemory;function writeArrayToMemory(t,e){HEAP8.set(t,e)}Module.writeArrayToMemory=writeArrayToMemory;function writeAsciiToMemory(t,e,r){for(var s=0;s>0]=t.charCodeAt(s);r||(HEAP8[e>>0]=0)}if(Module.writeAsciiToMemory=writeAsciiToMemory,(!Math.imul||Math.imul(4294967295,5)!==-5)&&(Math.imul=function t(e,r){var s=e>>>16,a=e&65535,n=r>>>16,c=r&65535;return a*c+(s*c+a*n<<16)|0}),Math.imul=Math.imul,!Math.fround){var froundBuffer=new Float32Array(1);Math.fround=function(t){return froundBuffer[0]=t,froundBuffer[0]}}Math.fround=Math.fround,Math.clz32||(Math.clz32=function(t){t=t>>>0;for(var e=0;e<32;e++)if(t&1<<31-e)return e;return 32}),Math.clz32=Math.clz32,Math.trunc||(Math.trunc=function(t){return t<0?Math.ceil(t):Math.floor(t)}),Math.trunc=Math.trunc;var Math_abs=Math.abs,Math_cos=Math.cos,Math_sin=Math.sin,Math_tan=Math.tan,Math_acos=Math.acos,Math_asin=Math.asin,Math_atan=Math.atan,Math_atan2=Math.atan2,Math_exp=Math.exp,Math_log=Math.log,Math_sqrt=Math.sqrt,Math_ceil=Math.ceil,Math_floor=Math.floor,Math_pow=Math.pow,Math_imul=Math.imul,Math_fround=Math.fround,Math_round=Math.round,Math_min=Math.min,Math_clz32=Math.clz32,Math_trunc=Math.trunc,runDependencies=0,runDependencyWatcher=null,dependenciesFulfilled=null;function getUniqueRunDependency(t){return t}function addRunDependency(t){runDependencies++,Module.monitorRunDependencies&&Module.monitorRunDependencies(runDependencies)}Module.addRunDependency=addRunDependency;function removeRunDependency(t){if(runDependencies--,Module.monitorRunDependencies&&Module.monitorRunDependencies(runDependencies),runDependencies==0&&(runDependencyWatcher!==null&&(clearInterval(runDependencyWatcher),runDependencyWatcher=null),dependenciesFulfilled)){var e=dependenciesFulfilled;dependenciesFulfilled=null,e()}}Module.removeRunDependency=removeRunDependency,Module.preloadedImages={},Module.preloadedAudios={};var ASM_CONSTS=[function(t,e,r,s,a,n,c,f){return _nbind.callbackSignatureList[t].apply(this,arguments)}];function _emscripten_asm_const_iiiiiiii(t,e,r,s,a,n,c,f){return ASM_CONSTS[t](e,r,s,a,n,c,f)}function _emscripten_asm_const_iiiii(t,e,r,s,a){return ASM_CONSTS[t](e,r,s,a)}function _emscripten_asm_const_iiidddddd(t,e,r,s,a,n,c,f,p){return ASM_CONSTS[t](e,r,s,a,n,c,f,p)}function _emscripten_asm_const_iiididi(t,e,r,s,a,n,c){return ASM_CONSTS[t](e,r,s,a,n,c)}function _emscripten_asm_const_iiii(t,e,r,s){return ASM_CONSTS[t](e,r,s)}function _emscripten_asm_const_iiiid(t,e,r,s,a){return ASM_CONSTS[t](e,r,s,a)}function _emscripten_asm_const_iiiiii(t,e,r,s,a,n){return ASM_CONSTS[t](e,r,s,a,n)}STATIC_BASE=Runtime.GLOBAL_BASE,STATICTOP=STATIC_BASE+12800,__ATINIT__.push({func:function(){__GLOBAL__sub_I_Yoga_cpp()}},{func:function(){__GLOBAL__sub_I_nbind_cc()}},{func:function(){__GLOBAL__sub_I_common_cc()}},{func:function(){__GLOBAL__sub_I_Binding_cc()}}),allocate([0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,127,0,0,192,127,0,0,192,127,0,0,192,127,3,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,3,0,0,0,0,0,192,127,3,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,127,0,0,192,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,127,0,0,0,0,0,0,0,0,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,127,0,0,192,127,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,0,0,128,191,0,0,128,191,0,0,192,127,0,0,0,0,0,0,0,0,0,0,128,63,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,3,0,0,0,1,0,0,0,2,0,0,0,0,0,0,0,190,12,0,0,200,12,0,0,208,12,0,0,216,12,0,0,230,12,0,0,242,12,0,0,1,0,0,0,3,0,0,0,0,0,0,0,2,0,0,0,0,0,192,127,3,0,0,0,180,45,0,0,181,45,0,0,182,45,0,0,181,45,0,0,182,45,0,0,0,0,0,0,0,0,0,0,1,0,0,0,2,0,0,0,3,0,0,0,1,0,0,0,4,0,0,0,183,45,0,0,181,45,0,0,181,45,0,0,181,45,0,0,181,45,0,0,181,45,0,0,181,45,0,0,184,45,0,0,185,45,0,0,181,45,0,0,181,45,0,0,182,45,0,0,186,45,0,0,185,45,0,0,148,4,0,0,3,0,0,0,187,45,0,0,164,4,0,0,188,45,0,0,2,0,0,0,189,45,0,0,164,4,0,0,188,45,0,0,185,45,0,0,164,4,0,0,185,45,0,0,164,4,0,0,188,45,0,0,181,45,0,0,182,45,0,0,181,45,0,0,0,0,0,0,0,0,0,0,1,0,0,0,5,0,0,0,6,0,0,0,1,0,0,0,7,0,0,0,183,45,0,0,182,45,0,0,181,45,0,0,190,45,0,0,190,45,0,0,182,45,0,0,182,45,0,0,185,45,0,0,181,45,0,0,185,45,0,0,182,45,0,0,181,45,0,0,185,45,0,0,182,45,0,0,185,45,0,0,48,5,0,0,3,0,0,0,56,5,0,0,1,0,0,0,189,45,0,0,185,45,0,0,164,4,0,0,76,5,0,0,2,0,0,0,191,45,0,0,186,45,0,0,182,45,0,0,185,45,0,0,192,45,0,0,185,45,0,0,182,45,0,0,186,45,0,0,185,45,0,0,76,5,0,0,76,5,0,0,136,5,0,0,182,45,0,0,181,45,0,0,2,0,0,0,190,45,0,0,136,5,0,0,56,19,0,0,156,5,0,0,2,0,0,0,184,45,0,0,0,0,0,0,0,0,0,0,1,0,0,0,8,0,0,0,9,0,0,0,1,0,0,0,10,0,0,0,204,5,0,0,181,45,0,0,181,45,0,0,2,0,0,0,180,45,0,0,204,5,0,0,2,0,0,0,195,45,0,0,236,5,0,0,97,19,0,0,198,45,0,0,211,45,0,0,212,45,0,0,213,45,0,0,214,45,0,0,215,45,0,0,188,45,0,0,182,45,0,0,216,45,0,0,217,45,0,0,218,45,0,0,219,45,0,0,192,45,0,0,181,45,0,0,0,0,0,0,185,45,0,0,110,19,0,0,186,45,0,0,115,19,0,0,221,45,0,0,120,19,0,0,148,4,0,0,132,19,0,0,96,6,0,0,145,19,0,0,222,45,0,0,164,19,0,0,223,45,0,0,173,19,0,0,0,0,0,0,3,0,0,0,104,6,0,0,1,0,0,0,187,45,0,0,0,0,0,0,0,0,0,0,1,0,0,0,11,0,0,0,12,0,0,0,1,0,0,0,13,0,0,0,185,45,0,0,224,45,0,0,164,6,0,0,188,45,0,0,172,6,0,0,180,6,0,0,2,0,0,0,188,6,0,0,7,0,0,0,224,45,0,0,7,0,0,0,164,6,0,0,1,0,0,0,213,45,0,0,185,45,0,0,224,45,0,0,172,6,0,0,185,45,0,0,224,45,0,0,164,6,0,0,185,45,0,0,224,45,0,0,211,45,0,0,211,45,0,0,222,45,0,0,211,45,0,0,224,45,0,0,222,45,0,0,211,45,0,0,224,45,0,0,172,6,0,0,222,45,0,0,211,45,0,0,224,45,0,0,188,45,0,0,222,45,0,0,211,45,0,0,40,7,0,0,188,45,0,0,2,0,0,0,224,45,0,0,185,45,0,0,188,45,0,0,188,45,0,0,188,45,0,0,188,45,0,0,222,45,0,0,224,45,0,0,148,4,0,0,185,45,0,0,148,4,0,0,148,4,0,0,148,4,0,0,148,4,0,0,148,4,0,0,185,45,0,0,164,6,0,0,148,4,0,0,0,0,0,0,0,0,0,0,1,0,0,0,14,0,0,0,15,0,0,0,1,0,0,0,16,0,0,0,148,7,0,0,2,0,0,0,225,45,0,0,183,45,0,0,188,45,0,0,168,7,0,0,5,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,2,0,0,0,234,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,9,0,0,5,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,2,0,0,0,242,45,0,0,0,4,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,111,117,108,100,32,110,111,116,32,97,108,108,111,99,97,116,101,32,109,101,109,111,114,121,32,102,111,114,32,110,111,100,101,0,67,97,110,110,111,116,32,114,101,115,101,116,32,97,32,110,111,100,101,32,119,104,105,99,104,32,115,116,105,108,108,32,104,97,115,32,99,104,105,108,100,114,101,110,32,97,116,116,97,99,104,101,100,0,67,97,110,110,111,116,32,114,101,115,101,116,32,97,32,110,111,100,101,32,115,116,105,108,108,32,97,116,116,97,99,104,101,100,32,116,111,32,97,32,112,97,114,101,110,116,0,67,111,117,108,100,32,110,111,116,32,97,108,108,111,99,97,116,101,32,109,101,109,111,114,121,32,102,111,114,32,99,111,110,102,105,103,0,67,97,110,110,111,116,32,115,101,116,32,109,101,97,115,117,114,101,32,102,117,110,99,116,105,111,110,58,32,78,111,100,101,115,32,119,105,116,104,32,109,101,97,115,117,114,101,32,102,117,110,99,116,105,111,110,115,32,99,97,110,110,111,116,32,104,97,118,101,32,99,104,105,108,100,114,101,110,46,0,67,104,105,108,100,32,97,108,114,101,97,100,121,32,104,97,115,32,97,32,112,97,114,101,110,116,44,32,105,116,32,109,117,115,116,32,98,101,32,114,101,109,111,118,101,100,32,102,105,114,115,116,46,0,67,97,110,110,111,116,32,97,100,100,32,99,104,105,108,100,58,32,78,111,100,101,115,32,119,105,116,104,32,109,101,97,115,117,114,101,32,102,117,110,99,116,105,111,110,115,32,99,97,110,110,111,116,32,104,97,118,101,32,99,104,105,108,100,114,101,110,46,0,79,110,108,121,32,108,101,97,102,32,110,111,100,101,115,32,119,105,116,104,32,99,117,115,116,111,109,32,109,101,97,115,117,114,101,32,102,117,110,99,116,105,111,110,115,115,104,111,117,108,100,32,109,97,110,117,97,108,108,121,32,109,97,114,107,32,116,104,101,109,115,101,108,118,101,115,32,97,115,32,100,105,114,116,121,0,67,97,110,110,111,116,32,103,101,116,32,108,97,121,111,117,116,32,112,114,111,112,101,114,116,105,101,115,32,111,102,32,109,117,108,116,105,45,101,100,103,101,32,115,104,111,114,116,104,97,110,100,115,0,37,115,37,100,46,123,91,115,107,105,112,112,101,100,93,32,0,119,109,58,32,37,115,44,32,104,109,58,32,37,115,44,32,97,119,58,32,37,102,32,97,104,58,32,37,102,32,61,62,32,100,58,32,40,37,102,44,32,37,102,41,32,37,115,10,0,37,115,37,100,46,123,37,115,0,42,0,119,109,58,32,37,115,44,32,104,109,58,32,37,115,44,32,97,119,58,32,37,102,32,97,104,58,32,37,102,32,37,115,10,0,37,115,37,100,46,125,37,115,0,119,109,58,32,37,115,44,32,104,109,58,32,37,115,44,32,100,58,32,40,37,102,44,32,37,102,41,32,37,115,10,0,79,117,116,32,111,102,32,99,97,99,104,101,32,101,110,116,114,105,101,115,33,10,0,83,99,97,108,101,32,102,97,99,116,111,114,32,115,104,111,117,108,100,32,110,111,116,32,98,101,32,108,101,115,115,32,116,104,97,110,32,122,101,114,111,0,105,110,105,116,105,97,108,0,37,115,10,0,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,0,85,78,68,69,70,73,78,69,68,0,69,88,65,67,84,76,89,0,65,84,95,77,79,83,84,0,76,65,89,95,85,78,68,69,70,73,78,69,68,0,76,65,89,95,69,88,65,67,84,76,89,0,76,65,89,95,65,84,95,77,79,83,84,0,97,118,97,105,108,97,98,108,101,87,105,100,116,104,32,105,115,32,105,110,100,101,102,105,110,105,116,101,32,115,111,32,119,105,100,116,104,77,101,97,115,117,114,101,77,111,100,101,32,109,117,115,116,32,98,101,32,89,71,77,101,97,115,117,114,101,77,111,100,101,85,110,100,101,102,105,110,101,100,0,97,118,97,105,108,97,98,108,101,72,101,105,103,104,116,32,105,115,32,105,110,100,101,102,105,110,105,116,101,32,115,111,32,104,101,105,103,104,116,77,101,97,115,117,114,101,77,111,100,101,32,109,117,115,116,32,98,101,32,89,71,77,101,97,115,117,114,101,77,111,100,101,85,110,100,101,102,105,110,101,100,0,102,108,101,120,0,115,116,114,101,116,99,104,0,109,117,108,116,105,108,105,110,101,45,115,116,114,101,116,99,104,0,69,120,112,101,99,116,101,100,32,110,111,100,101,32,116,111,32,104,97,118,101,32,99,117,115,116,111,109,32,109,101,97,115,117,114,101,32,102,117,110,99,116,105,111,110,0,109,101,97,115,117,114,101,0,69,120,112,101,99,116,32,99,117,115,116,111,109,32,98,97,115,101,108,105,110,101,32,102,117,110,99,116,105,111,110,32,116,111,32,110,111,116,32,114,101,116,117,114,110,32,78,97,78,0,97,98,115,45,109,101,97,115,117,114,101,0,97,98,115,45,108,97,121,111,117,116,0,78,111,100,101,0,99,114,101,97,116,101,68,101,102,97,117,108,116,0,99,114,101,97,116,101,87,105,116,104,67,111,110,102,105,103,0,100,101,115,116,114,111,121,0,114,101,115,101,116,0,99,111,112,121,83,116,121,108,101,0,115,101,116,80,111,115,105,116,105,111,110,84,121,112,101,0,115,101,116,80,111,115,105,116,105,111,110,0,115,101,116,80,111,115,105,116,105,111,110,80,101,114,99,101,110,116,0,115,101,116,65,108,105,103,110,67,111,110,116,101,110,116,0,115,101,116,65,108,105,103,110,73,116,101,109,115,0,115,101,116,65,108,105,103,110,83,101,108,102,0,115,101,116,70,108,101,120,68,105,114,101,99,116,105,111,110,0,115,101,116,70,108,101,120,87,114,97,112,0,115,101,116,74,117,115,116,105,102,121,67,111,110,116,101,110,116,0,115,101,116,77,97,114,103,105,110,0,115,101,116,77,97,114,103,105,110,80,101,114,99,101,110,116,0,115,101,116,77,97,114,103,105,110,65,117,116,111,0,115,101,116,79,118,101,114,102,108,111,119,0,115,101,116,68,105,115,112,108,97,121,0,115,101,116,70,108,101,120,0,115,101,116,70,108,101,120,66,97,115,105,115,0,115,101,116,70,108,101,120,66,97,115,105,115,80,101,114,99,101,110,116,0,115,101,116,70,108,101,120,71,114,111,119,0,115,101,116,70,108,101,120,83,104,114,105,110,107,0,115,101,116,87,105,100,116,104,0,115,101,116,87,105,100,116,104,80,101,114,99,101,110,116,0,115,101,116,87,105,100,116,104,65,117,116,111,0,115,101,116,72,101,105,103,104,116,0,115,101,116,72,101,105,103,104,116,80,101,114,99,101,110,116,0,115,101,116,72,101,105,103,104,116,65,117,116,111,0,115,101,116,77,105,110,87,105,100,116,104,0,115,101,116,77,105,110,87,105,100,116,104,80,101,114,99,101,110,116,0,115,101,116,77,105,110,72,101,105,103,104,116,0,115,101,116,77,105,110,72,101,105,103,104,116,80,101,114,99,101,110,116,0,115,101,116,77,97,120,87,105,100,116,104,0,115,101,116,77,97,120,87,105,100,116,104,80,101,114,99,101,110,116,0,115,101,116,77,97,120,72,101,105,103,104,116,0,115,101,116,77,97,120,72,101,105,103,104,116,80,101,114,99,101,110,116,0,115,101,116,65,115,112,101,99,116,82,97,116,105,111,0,115,101,116,66,111,114,100,101,114,0,115,101,116,80,97,100,100,105,110,103,0,115,101,116,80,97,100,100,105,110,103,80,101,114,99,101,110,116,0,103,101,116,80,111,115,105,116,105,111,110,84,121,112,101,0,103,101,116,80,111,115,105,116,105,111,110,0,103,101,116,65,108,105,103,110,67,111,110,116,101,110,116,0,103,101,116,65,108,105,103,110,73,116,101,109,115,0,103,101,116,65,108,105,103,110,83,101,108,102,0,103,101,116,70,108,101,120,68,105,114,101,99,116,105,111,110,0,103,101,116,70,108,101,120,87,114,97,112,0,103,101,116,74,117,115,116,105,102,121,67,111,110,116,101,110,116,0,103,101,116,77,97,114,103,105,110,0,103,101,116,70,108,101,120,66,97,115,105,115,0,103,101,116,70,108,101,120,71,114,111,119,0,103,101,116,70,108,101,120,83,104,114,105,110,107,0,103,101,116,87,105,100,116,104,0,103,101,116,72,101,105,103,104,116,0,103,101,116,77,105,110,87,105,100,116,104,0,103,101,116,77,105,110,72,101,105,103,104,116,0,103,101,116,77,97,120,87,105,100,116,104,0,103,101,116,77,97,120,72,101,105,103,104,116,0,103,101,116,65,115,112,101,99,116,82,97,116,105,111,0,103,101,116,66,111,114,100,101,114,0,103,101,116,79,118,101,114,102,108,111,119,0,103,101,116,68,105,115,112,108,97,121,0,103,101,116,80,97,100,100,105,110,103,0,105,110,115,101,114,116,67,104,105,108,100,0,114,101,109,111,118,101,67,104,105,108,100,0,103,101,116,67,104,105,108,100,67,111,117,110,116,0,103,101,116,80,97,114,101,110,116,0,103,101,116,67,104,105,108,100,0,115,101,116,77,101,97,115,117,114,101,70,117,110,99,0,117,110,115,101,116,77,101,97,115,117,114,101,70,117,110,99,0,109,97,114,107,68,105,114,116,121,0,105,115,68,105,114,116,121,0,99,97,108,99,117,108,97,116,101,76,97,121,111,117,116,0,103,101,116,67,111,109,112,117,116,101,100,76,101,102,116,0,103,101,116,67,111,109,112,117,116,101,100,82,105,103,104,116,0,103,101,116,67,111,109,112,117,116,101,100,84,111,112,0,103,101,116,67,111,109,112,117,116,101,100,66,111,116,116,111,109,0,103,101,116,67,111,109,112,117,116,101,100,87,105,100,116,104,0,103,101,116,67,111,109,112,117,116,101,100,72,101,105,103,104,116,0,103,101,116,67,111,109,112,117,116,101,100,76,97,121,111,117,116,0,103,101,116,67,111,109,112,117,116,101,100,77,97,114,103,105,110,0,103,101,116,67,111,109,112,117,116,101,100,66,111,114,100,101,114,0,103,101,116,67,111,109,112,117,116,101,100,80,97,100,100,105,110,103,0,67,111,110,102,105,103,0,99,114,101,97,116,101,0,115,101,116,69,120,112,101,114,105,109,101,110,116,97,108,70,101,97,116,117,114,101,69,110,97,98,108,101,100,0,115,101,116,80,111,105,110,116,83,99,97,108,101,70,97,99,116,111,114,0,105,115,69,120,112,101,114,105,109,101,110,116,97,108,70,101,97,116,117,114,101,69,110,97,98,108,101,100,0,86,97,108,117,101,0,76,97,121,111,117,116,0,83,105,122,101,0,103,101,116,73,110,115,116,97,110,99,101,67,111,117,110,116,0,73,110,116,54,52,0,1,1,1,2,2,4,4,4,4,8,8,4,8,118,111,105,100,0,98,111,111,108,0,115,116,100,58,58,115,116,114,105,110,103,0,99,98,70,117,110,99,116,105,111,110,32,38,0,99,111,110,115,116,32,99,98,70,117,110,99,116,105,111,110,32,38,0,69,120,116,101,114,110,97,108,0,66,117,102,102,101,114,0,78,66,105,110,100,73,68,0,78,66,105,110,100,0,98,105,110,100,95,118,97,108,117,101,0,114,101,102,108,101,99,116,0,113,117,101,114,121,84,121,112,101,0,108,97,108,108,111,99,0,108,114,101,115,101,116,0,123,114,101,116,117,114,110,40,95,110,98,105,110,100,46,99,97,108,108,98,97,99,107,83,105,103,110,97,116,117,114,101,76,105,115,116,91,36,48,93,46,97,112,112,108,121,40,116,104,105,115,44,97,114,103,117,109,101,110,116,115,41,41,59,125,0,95,110,98,105,110,100,95,110,101,119,0,17,0,10,0,17,17,17,0,0,0,0,5,0,0,0,0,0,0,9,0,0,0,0,11,0,0,0,0,0,0,0,0,17,0,15,10,17,17,17,3,10,7,0,1,19,9,11,11,0,0,9,6,11,0,0,11,0,6,17,0,0,0,17,17,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,0,17,0,10,10,17,17,17,0,10,0,0,2,0,9,11,0,0,0,9,0,11,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,12,0,0,0,0,9,12,0,0,0,0,0,12,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,0,0,0,0,0,0,0,0,0,0,13,0,0,0,4,13,0,0,0,0,9,14,0,0,0,0,0,14,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,0,15,0,0,0,0,9,16,0,0,0,0,0,16,0,0,16,0,0,18,0,0,0,18,18,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,18,18,18,0,0,0,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,0,0,0,0,10,0,0,0,0,10,0,0,0,0,9,11,0,0,0,0,0,11,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,12,0,0,0,0,9,12,0,0,0,0,0,12,0,0,12,0,0,45,43,32,32,32,48,88,48,120,0,40,110,117,108,108,41,0,45,48,88,43,48,88,32,48,88,45,48,120,43,48,120,32,48,120,0,105,110,102,0,73,78,70,0,110,97,110,0,78,65,78,0,48,49,50,51,52,53,54,55,56,57,65,66,67,68,69,70,46,0,84,33,34,25,13,1,2,3,17,75,28,12,16,4,11,29,18,30,39,104,110,111,112,113,98,32,5,6,15,19,20,21,26,8,22,7,40,36,23,24,9,10,14,27,31,37,35,131,130,125,38,42,43,60,61,62,63,67,71,74,77,88,89,90,91,92,93,94,95,96,97,99,100,101,102,103,105,106,107,108,114,115,116,121,122,123,124,0,73,108,108,101,103,97,108,32,98,121,116,101,32,115,101,113,117,101,110,99,101,0,68,111,109,97,105,110,32,101,114,114,111,114,0,82,101,115,117,108,116,32,110,111,116,32,114,101,112,114,101,115,101,110,116,97,98,108,101,0,78,111,116,32,97,32,116,116,121,0,80,101,114,109,105,115,115,105,111,110,32,100,101,110,105,101,100,0,79,112,101,114,97,116,105,111,110,32,110,111,116,32,112,101,114,109,105,116,116,101,100,0,78,111,32,115,117,99,104,32,102,105,108,101,32,111,114,32,100,105,114,101,99,116,111,114,121,0,78,111,32,115,117,99,104,32,112,114,111,99,101,115,115,0,70,105,108,101,32,101,120,105,115,116,115,0,86,97,108,117,101,32,116,111,111,32,108,97,114,103,101,32,102,111,114,32,100,97,116,97,32,116,121,112,101,0,78,111,32,115,112,97,99,101,32,108,101,102,116,32,111,110,32,100,101,118,105,99,101,0,79,117,116,32,111,102,32,109,101,109,111,114,121,0,82,101,115,111,117,114,99,101,32,98,117,115,121,0,73,110,116,101,114,114,117,112,116,101,100,32,115,121,115,116,101,109,32,99,97,108,108,0,82,101,115,111,117,114,99,101,32,116,101,109,112,111,114,97,114,105,108,121,32,117,110,97,118,97,105,108,97,98,108,101,0,73,110,118,97,108,105,100,32,115,101,101,107,0,67,114,111,115,115,45,100,101,118,105,99,101,32,108,105,110,107,0,82,101,97,100,45,111,110,108,121,32,102,105,108,101,32,115,121,115,116,101,109,0,68,105,114,101,99,116,111,114,121,32,110,111,116,32,101,109,112,116,121,0,67,111,110,110,101,99,116,105,111,110,32,114,101,115,101,116,32,98,121,32,112,101,101,114,0,79,112,101,114,97,116,105,111,110,32,116,105,109,101,100,32,111,117,116,0,67,111,110,110,101,99,116,105,111,110,32,114,101,102,117,115,101,100,0,72,111,115,116,32,105,115,32,100,111,119,110,0,72,111,115,116,32,105,115,32,117,110,114,101,97,99,104,97,98,108,101,0,65,100,100,114,101,115,115,32,105,110,32,117,115,101,0,66,114,111,107,101,110,32,112,105,112,101,0,73,47,79,32,101,114,114,111,114,0,78,111,32,115,117,99,104,32,100,101,118,105,99,101,32,111,114,32,97,100,100,114,101,115,115,0,66,108,111,99,107,32,100,101,118,105,99,101,32,114,101,113,117,105,114,101,100,0,78,111,32,115,117,99,104,32,100,101,118,105,99,101,0,78,111,116,32,97,32,100,105,114,101,99,116,111,114,121,0,73,115,32,97,32,100,105,114,101,99,116,111,114,121,0,84,101,120,116,32,102,105,108,101,32,98,117,115,121,0,69,120,101,99,32,102,111,114,109,97,116,32,101,114,114,111,114,0,73,110,118,97,108,105,100,32,97,114,103,117,109,101,110,116,0,65,114,103,117,109,101,110,116,32,108,105,115,116,32,116,111,111,32,108,111,110,103,0,83,121,109,98,111,108,105,99,32,108,105,110,107,32,108,111,111,112,0,70,105,108,101,110,97,109,101,32,116,111,111,32,108,111,110,103,0,84,111,111,32,109,97,110,121,32,111,112,101,110,32,102,105,108,101,115,32,105,110,32,115,121,115,116,101,109,0,78,111,32,102,105,108,101,32,100,101,115,99,114,105,112,116,111,114,115,32,97,118,97,105,108,97,98,108,101,0,66,97,100,32,102,105,108,101,32,100,101,115,99,114,105,112,116,111,114,0,78,111,32,99,104,105,108,100,32,112,114,111,99,101,115,115,0,66,97,100,32,97,100,100,114,101,115,115,0,70,105,108,101,32,116,111,111,32,108,97,114,103,101,0,84,111,111,32,109,97,110,121,32,108,105,110,107,115,0,78,111,32,108,111,99,107,115,32,97,118,97,105,108,97,98,108,101,0,82,101,115,111,117,114,99,101,32,100,101,97,100,108,111,99,107,32,119,111,117,108,100,32,111,99,99,117,114,0,83,116,97,116,101,32,110,111,116,32,114,101,99,111,118,101,114,97,98,108,101,0,80,114,101,118,105,111,117,115,32,111,119,110,101,114,32,100,105,101,100,0,79,112,101,114,97,116,105,111,110,32,99,97,110,99,101,108,101,100,0,70,117,110,99,116,105,111,110,32,110,111,116,32,105,109,112,108,101,109,101,110,116,101,100,0,78,111,32,109,101,115,115,97,103,101,32,111,102,32,100,101,115,105,114,101,100,32,116,121,112,101,0,73,100,101,110,116,105,102,105,101,114,32,114,101,109,111,118,101,100,0,68,101,118,105,99,101,32,110,111,116,32,97,32,115,116,114,101,97,109,0,78,111,32,100,97,116,97,32,97,118,97,105,108,97,98,108,101,0,68,101,118,105,99,101,32,116,105,109,101,111,117,116,0,79,117,116,32,111,102,32,115,116,114,101,97,109,115,32,114,101,115,111,117,114,99,101,115,0,76,105,110,107,32,104,97,115,32,98,101,101,110,32,115,101,118,101,114,101,100,0,80,114,111,116,111,99,111,108,32,101,114,114,111,114,0,66,97,100,32,109,101,115,115,97,103,101,0,70,105,108,101,32,100,101,115,99,114,105,112,116,111,114,32,105,110,32,98,97,100,32,115,116,97,116,101,0,78,111,116,32,97,32,115,111,99,107,101,116,0,68,101,115,116,105,110,97,116,105,111,110,32,97,100,100,114,101,115,115,32,114,101,113,117,105,114,101,100,0,77,101,115,115,97,103,101,32,116,111,111,32,108,97,114,103,101,0,80,114,111,116,111,99,111,108,32,119,114,111,110,103,32,116,121,112,101,32,102,111,114,32,115,111,99,107,101,116,0,80,114,111,116,111,99,111,108,32,110,111,116,32,97,118,97,105,108,97,98,108,101,0,80,114,111,116,111,99,111,108,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,83,111,99,107,101,116,32,116,121,112,101,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,78,111,116,32,115,117,112,112,111,114,116,101,100,0,80,114,111,116,111,99,111,108,32,102,97,109,105,108,121,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,65,100,100,114,101,115,115,32,102,97,109,105,108,121,32,110,111,116,32,115,117,112,112,111,114,116,101,100,32,98,121,32,112,114,111,116,111,99,111,108,0,65,100,100,114,101,115,115,32,110,111,116,32,97,118,97,105,108,97,98,108,101,0,78,101,116,119,111,114,107,32,105,115,32,100,111,119,110,0,78,101,116,119,111,114,107,32,117,110,114,101,97,99,104,97,98,108,101,0,67,111,110,110,101,99,116,105,111,110,32,114,101,115,101,116,32,98,121,32,110,101,116,119,111,114,107,0,67,111,110,110,101,99,116,105,111,110,32,97,98,111,114,116,101,100,0,78,111,32,98,117,102,102,101,114,32,115,112,97,99,101,32,97,118,97,105,108,97,98,108,101,0,83,111,99,107,101,116,32,105,115,32,99,111,110,110,101,99,116,101,100,0,83,111,99,107,101,116,32,110,111,116,32,99,111,110,110,101,99,116,101,100,0,67,97,110,110,111,116,32,115,101,110,100,32,97,102,116,101,114,32,115,111,99,107,101,116,32,115,104,117,116,100,111,119,110,0,79,112,101,114,97,116,105,111,110,32,97,108,114,101,97,100,121,32,105,110,32,112,114,111,103,114,101,115,115,0,79,112,101,114,97,116,105,111,110,32,105,110,32,112,114,111,103,114,101,115,115,0,83,116,97,108,101,32,102,105,108,101,32,104,97,110,100,108,101,0,82,101,109,111,116,101,32,73,47,79,32,101,114,114,111,114,0,81,117,111,116,97,32,101,120,99,101,101,100,101,100,0,78,111,32,109,101,100,105,117,109,32,102,111,117,110,100,0,87,114,111,110,103,32,109,101,100,105,117,109,32,116,121,112,101,0,78,111,32,101,114,114,111,114,32,105,110,102,111,114,109,97,116,105,111,110,0,0],"i8",ALLOC_NONE,Runtime.GLOBAL_BASE);var tempDoublePtr=STATICTOP;STATICTOP+=16;function _atexit(t,e){__ATEXIT__.unshift({func:t,arg:e})}function ___cxa_atexit(){return _atexit.apply(null,arguments)}function _abort(){Module.abort()}function __ZN8facebook4yoga14YGNodeToStringEPNSt3__212basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEEP6YGNode14YGPrintOptionsj(){Module.printErr("missing function: _ZN8facebook4yoga14YGNodeToStringEPNSt3__212basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEEP6YGNode14YGPrintOptionsj"),abort(-1)}function __decorate(t,e,r,s){var a=arguments.length,n=a<3?e:s===null?s=Object.getOwnPropertyDescriptor(e,r):s,c;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")n=Reflect.decorate(t,e,r,s);else for(var f=t.length-1;f>=0;f--)(c=t[f])&&(n=(a<3?c(n):a>3?c(e,r,n):c(e,r))||n);return a>3&&n&&Object.defineProperty(e,r,n),n}function _defineHidden(t){return function(e,r){Object.defineProperty(e,r,{configurable:!1,enumerable:!1,value:t,writable:!0})}}var _nbind={};function __nbind_free_external(t){_nbind.externalList[t].dereference(t)}function __nbind_reference_external(t){_nbind.externalList[t].reference()}function _llvm_stackrestore(t){var e=_llvm_stacksave,r=e.LLVM_SAVEDSTACKS[t];e.LLVM_SAVEDSTACKS.splice(t,1),Runtime.stackRestore(r)}function __nbind_register_pool(t,e,r,s){_nbind.Pool.pageSize=t,_nbind.Pool.usedPtr=e/4,_nbind.Pool.rootPtr=r,_nbind.Pool.pagePtr=s/4,HEAP32[e/4]=16909060,HEAP8[e]==1&&(_nbind.bigEndian=!0),HEAP32[e/4]=0,_nbind.makeTypeKindTbl=(n={},n[1024]=_nbind.PrimitiveType,n[64]=_nbind.Int64Type,n[2048]=_nbind.BindClass,n[3072]=_nbind.BindClassPtr,n[4096]=_nbind.SharedClassPtr,n[5120]=_nbind.ArrayType,n[6144]=_nbind.ArrayType,n[7168]=_nbind.CStringType,n[9216]=_nbind.CallbackType,n[10240]=_nbind.BindType,n),_nbind.makeTypeNameTbl={Buffer:_nbind.BufferType,External:_nbind.ExternalType,Int64:_nbind.Int64Type,_nbind_new:_nbind.CreateValueType,bool:_nbind.BooleanType,"cbFunction &":_nbind.CallbackType,"const cbFunction &":_nbind.CallbackType,"const std::string &":_nbind.StringType,"std::string":_nbind.StringType},Module.toggleLightGC=_nbind.toggleLightGC,_nbind.callUpcast=Module.dynCall_ii;var a=_nbind.makeType(_nbind.constructType,{flags:2048,id:0,name:""});a.proto=Module,_nbind.BindClass.list.push(a);var n}function _emscripten_set_main_loop_timing(t,e){if(Browser.mainLoop.timingMode=t,Browser.mainLoop.timingValue=e,!Browser.mainLoop.func)return 1;if(t==0)Browser.mainLoop.scheduler=function(){var c=Math.max(0,Browser.mainLoop.tickStartTime+e-_emscripten_get_now())|0;setTimeout(Browser.mainLoop.runner,c)},Browser.mainLoop.method="timeout";else if(t==1)Browser.mainLoop.scheduler=function(){Browser.requestAnimationFrame(Browser.mainLoop.runner)},Browser.mainLoop.method="rAF";else if(t==2){if(!window.setImmediate){let n=function(c){c.source===window&&c.data===s&&(c.stopPropagation(),r.shift()())};var a=n,r=[],s="setimmediate";window.addEventListener("message",n,!0),window.setImmediate=function(f){r.push(f),ENVIRONMENT_IS_WORKER?(Module.setImmediates===void 0&&(Module.setImmediates=[]),Module.setImmediates.push(f),window.postMessage({target:s})):window.postMessage(s,"*")}}Browser.mainLoop.scheduler=function(){window.setImmediate(Browser.mainLoop.runner)},Browser.mainLoop.method="immediate"}return 0}function _emscripten_get_now(){abort()}function _emscripten_set_main_loop(t,e,r,s,a){Module.noExitRuntime=!0,assert(!Browser.mainLoop.func,"emscripten_set_main_loop: there can only be one main loop function at once: call emscripten_cancel_main_loop to cancel the previous one before setting a new one with different parameters."),Browser.mainLoop.func=t,Browser.mainLoop.arg=s;var n;typeof s<"u"?n=function(){Module.dynCall_vi(t,s)}:n=function(){Module.dynCall_v(t)};var c=Browser.mainLoop.currentlyRunningMainloop;if(Browser.mainLoop.runner=function(){if(!ABORT){if(Browser.mainLoop.queue.length>0){var p=Date.now(),h=Browser.mainLoop.queue.shift();if(h.func(h.arg),Browser.mainLoop.remainingBlockers){var E=Browser.mainLoop.remainingBlockers,C=E%1==0?E-1:Math.floor(E);h.counted?Browser.mainLoop.remainingBlockers=C:(C=C+.5,Browser.mainLoop.remainingBlockers=(8*E+C)/9)}if(console.log('main loop blocker "'+h.name+'" took '+(Date.now()-p)+" ms"),Browser.mainLoop.updateStatus(),c1&&Browser.mainLoop.currentFrameNumber%Browser.mainLoop.timingValue!=0){Browser.mainLoop.scheduler();return}else Browser.mainLoop.timingMode==0&&(Browser.mainLoop.tickStartTime=_emscripten_get_now());Browser.mainLoop.method==="timeout"&&Module.ctx&&(Module.printErr("Looks like you are rendering without using requestAnimationFrame for the main loop. You should use 0 for the frame rate in emscripten_set_main_loop in order to use requestAnimationFrame, as that can greatly improve your frame rates!"),Browser.mainLoop.method=""),Browser.mainLoop.runIter(n),!(c0?_emscripten_set_main_loop_timing(0,1e3/e):_emscripten_set_main_loop_timing(1,1),Browser.mainLoop.scheduler()),r)throw"SimulateInfiniteLoop"}var Browser={mainLoop:{scheduler:null,method:"",currentlyRunningMainloop:0,func:null,arg:0,timingMode:0,timingValue:0,currentFrameNumber:0,queue:[],pause:function(){Browser.mainLoop.scheduler=null,Browser.mainLoop.currentlyRunningMainloop++},resume:function(){Browser.mainLoop.currentlyRunningMainloop++;var t=Browser.mainLoop.timingMode,e=Browser.mainLoop.timingValue,r=Browser.mainLoop.func;Browser.mainLoop.func=null,_emscripten_set_main_loop(r,0,!1,Browser.mainLoop.arg,!0),_emscripten_set_main_loop_timing(t,e),Browser.mainLoop.scheduler()},updateStatus:function(){if(Module.setStatus){var t=Module.statusMessage||"Please wait...",e=Browser.mainLoop.remainingBlockers,r=Browser.mainLoop.expectedBlockers;e?e"u"&&(console.log("warning: Browser does not support creating object URLs. Built-in browser image decoding will not be available."),Module.noImageDecoding=!0);var t={};t.canHandle=function(n){return!Module.noImageDecoding&&/\.(jpg|jpeg|png|bmp)$/i.test(n)},t.handle=function(n,c,f,p){var h=null;if(Browser.hasBlobConstructor)try{h=new Blob([n],{type:Browser.getMimetype(c)}),h.size!==n.length&&(h=new Blob([new Uint8Array(n).buffer],{type:Browser.getMimetype(c)}))}catch(b){Runtime.warnOnce("Blob constructor present but fails: "+b+"; falling back to blob builder")}if(!h){var E=new Browser.BlobBuilder;E.append(new Uint8Array(n).buffer),h=E.getBlob()}var C=Browser.URLObject.createObjectURL(h),S=new Image;S.onload=function(){assert(S.complete,"Image "+c+" could not be decoded");var I=document.createElement("canvas");I.width=S.width,I.height=S.height;var T=I.getContext("2d");T.drawImage(S,0,0),Module.preloadedImages[c]=I,Browser.URLObject.revokeObjectURL(C),f&&f(n)},S.onerror=function(I){console.log("Image "+C+" could not be decoded"),p&&p()},S.src=C},Module.preloadPlugins.push(t);var e={};e.canHandle=function(n){return!Module.noAudioDecoding&&n.substr(-4)in{".ogg":1,".wav":1,".mp3":1}},e.handle=function(n,c,f,p){var h=!1;function E(T){h||(h=!0,Module.preloadedAudios[c]=T,f&&f(n))}function C(){h||(h=!0,Module.preloadedAudios[c]=new Audio,p&&p())}if(Browser.hasBlobConstructor){try{var S=new Blob([n],{type:Browser.getMimetype(c)})}catch{return C()}var b=Browser.URLObject.createObjectURL(S),I=new Audio;I.addEventListener("canplaythrough",function(){E(I)},!1),I.onerror=function(N){if(h)return;console.log("warning: browser could not fully decode audio "+c+", trying slower base64 approach");function U(W){for(var ee="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",ie="=",ue="",le=0,me=0,pe=0;pe=6;){var Be=le>>me-6&63;me-=6,ue+=ee[Be]}return me==2?(ue+=ee[(le&3)<<4],ue+=ie+ie):me==4&&(ue+=ee[(le&15)<<2],ue+=ie),ue}I.src="data:audio/x-"+c.substr(-3)+";base64,"+U(n),E(I)},I.src=b,Browser.safeSetTimeout(function(){E(I)},1e4)}else return C()},Module.preloadPlugins.push(e);function r(){Browser.pointerLock=document.pointerLockElement===Module.canvas||document.mozPointerLockElement===Module.canvas||document.webkitPointerLockElement===Module.canvas||document.msPointerLockElement===Module.canvas}var s=Module.canvas;s&&(s.requestPointerLock=s.requestPointerLock||s.mozRequestPointerLock||s.webkitRequestPointerLock||s.msRequestPointerLock||function(){},s.exitPointerLock=document.exitPointerLock||document.mozExitPointerLock||document.webkitExitPointerLock||document.msExitPointerLock||function(){},s.exitPointerLock=s.exitPointerLock.bind(document),document.addEventListener("pointerlockchange",r,!1),document.addEventListener("mozpointerlockchange",r,!1),document.addEventListener("webkitpointerlockchange",r,!1),document.addEventListener("mspointerlockchange",r,!1),Module.elementPointerLock&&s.addEventListener("click",function(a){!Browser.pointerLock&&Module.canvas.requestPointerLock&&(Module.canvas.requestPointerLock(),a.preventDefault())},!1))},createContext:function(t,e,r,s){if(e&&Module.ctx&&t==Module.canvas)return Module.ctx;var a,n;if(e){var c={antialias:!1,alpha:!1};if(s)for(var f in s)c[f]=s[f];n=GL.createContext(t,c),n&&(a=GL.getContext(n).GLctx)}else a=t.getContext("2d");return a?(r&&(e||assert(typeof GLctx>"u","cannot set in module if GLctx is used, but we are a non-GL context that would replace it"),Module.ctx=a,e&&GL.makeContextCurrent(n),Module.useWebGL=e,Browser.moduleContextCreatedCallbacks.forEach(function(p){p()}),Browser.init()),a):null},destroyContext:function(t,e,r){},fullscreenHandlersInstalled:!1,lockPointer:void 0,resizeCanvas:void 0,requestFullscreen:function(t,e,r){Browser.lockPointer=t,Browser.resizeCanvas=e,Browser.vrDevice=r,typeof Browser.lockPointer>"u"&&(Browser.lockPointer=!0),typeof Browser.resizeCanvas>"u"&&(Browser.resizeCanvas=!1),typeof Browser.vrDevice>"u"&&(Browser.vrDevice=null);var s=Module.canvas;function a(){Browser.isFullscreen=!1;var c=s.parentNode;(document.fullscreenElement||document.mozFullScreenElement||document.msFullscreenElement||document.webkitFullscreenElement||document.webkitCurrentFullScreenElement)===c?(s.exitFullscreen=document.exitFullscreen||document.cancelFullScreen||document.mozCancelFullScreen||document.msExitFullscreen||document.webkitCancelFullScreen||function(){},s.exitFullscreen=s.exitFullscreen.bind(document),Browser.lockPointer&&s.requestPointerLock(),Browser.isFullscreen=!0,Browser.resizeCanvas&&Browser.setFullscreenCanvasSize()):(c.parentNode.insertBefore(s,c),c.parentNode.removeChild(c),Browser.resizeCanvas&&Browser.setWindowedCanvasSize()),Module.onFullScreen&&Module.onFullScreen(Browser.isFullscreen),Module.onFullscreen&&Module.onFullscreen(Browser.isFullscreen),Browser.updateCanvasDimensions(s)}Browser.fullscreenHandlersInstalled||(Browser.fullscreenHandlersInstalled=!0,document.addEventListener("fullscreenchange",a,!1),document.addEventListener("mozfullscreenchange",a,!1),document.addEventListener("webkitfullscreenchange",a,!1),document.addEventListener("MSFullscreenChange",a,!1));var n=document.createElement("div");s.parentNode.insertBefore(n,s),n.appendChild(s),n.requestFullscreen=n.requestFullscreen||n.mozRequestFullScreen||n.msRequestFullscreen||(n.webkitRequestFullscreen?function(){n.webkitRequestFullscreen(Element.ALLOW_KEYBOARD_INPUT)}:null)||(n.webkitRequestFullScreen?function(){n.webkitRequestFullScreen(Element.ALLOW_KEYBOARD_INPUT)}:null),r?n.requestFullscreen({vrDisplay:r}):n.requestFullscreen()},requestFullScreen:function(t,e,r){return Module.printErr("Browser.requestFullScreen() is deprecated. Please call Browser.requestFullscreen instead."),Browser.requestFullScreen=function(s,a,n){return Browser.requestFullscreen(s,a,n)},Browser.requestFullscreen(t,e,r)},nextRAF:0,fakeRequestAnimationFrame:function(t){var e=Date.now();if(Browser.nextRAF===0)Browser.nextRAF=e+1e3/60;else for(;e+2>=Browser.nextRAF;)Browser.nextRAF+=1e3/60;var r=Math.max(Browser.nextRAF-e,0);setTimeout(t,r)},requestAnimationFrame:function t(e){typeof window>"u"?Browser.fakeRequestAnimationFrame(e):(window.requestAnimationFrame||(window.requestAnimationFrame=window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||window.msRequestAnimationFrame||window.oRequestAnimationFrame||Browser.fakeRequestAnimationFrame),window.requestAnimationFrame(e))},safeCallback:function(t){return function(){if(!ABORT)return t.apply(null,arguments)}},allowAsyncCallbacks:!0,queuedAsyncCallbacks:[],pauseAsyncCallbacks:function(){Browser.allowAsyncCallbacks=!1},resumeAsyncCallbacks:function(){if(Browser.allowAsyncCallbacks=!0,Browser.queuedAsyncCallbacks.length>0){var t=Browser.queuedAsyncCallbacks;Browser.queuedAsyncCallbacks=[],t.forEach(function(e){e()})}},safeRequestAnimationFrame:function(t){return Browser.requestAnimationFrame(function(){ABORT||(Browser.allowAsyncCallbacks?t():Browser.queuedAsyncCallbacks.push(t))})},safeSetTimeout:function(t,e){return Module.noExitRuntime=!0,setTimeout(function(){ABORT||(Browser.allowAsyncCallbacks?t():Browser.queuedAsyncCallbacks.push(t))},e)},safeSetInterval:function(t,e){return Module.noExitRuntime=!0,setInterval(function(){ABORT||Browser.allowAsyncCallbacks&&t()},e)},getMimetype:function(t){return{jpg:"image/jpeg",jpeg:"image/jpeg",png:"image/png",bmp:"image/bmp",ogg:"audio/ogg",wav:"audio/wav",mp3:"audio/mpeg"}[t.substr(t.lastIndexOf(".")+1)]},getUserMedia:function(t){window.getUserMedia||(window.getUserMedia=navigator.getUserMedia||navigator.mozGetUserMedia),window.getUserMedia(t)},getMovementX:function(t){return t.movementX||t.mozMovementX||t.webkitMovementX||0},getMovementY:function(t){return t.movementY||t.mozMovementY||t.webkitMovementY||0},getMouseWheelDelta:function(t){var e=0;switch(t.type){case"DOMMouseScroll":e=t.detail;break;case"mousewheel":e=t.wheelDelta;break;case"wheel":e=t.deltaY;break;default:throw"unrecognized mouse wheel event: "+t.type}return e},mouseX:0,mouseY:0,mouseMovementX:0,mouseMovementY:0,touches:{},lastTouches:{},calculateMouseEvent:function(t){if(Browser.pointerLock)t.type!="mousemove"&&"mozMovementX"in t?Browser.mouseMovementX=Browser.mouseMovementY=0:(Browser.mouseMovementX=Browser.getMovementX(t),Browser.mouseMovementY=Browser.getMovementY(t)),typeof SDL<"u"?(Browser.mouseX=SDL.mouseX+Browser.mouseMovementX,Browser.mouseY=SDL.mouseY+Browser.mouseMovementY):(Browser.mouseX+=Browser.mouseMovementX,Browser.mouseY+=Browser.mouseMovementY);else{var e=Module.canvas.getBoundingClientRect(),r=Module.canvas.width,s=Module.canvas.height,a=typeof window.scrollX<"u"?window.scrollX:window.pageXOffset,n=typeof window.scrollY<"u"?window.scrollY:window.pageYOffset;if(t.type==="touchstart"||t.type==="touchend"||t.type==="touchmove"){var c=t.touch;if(c===void 0)return;var f=c.pageX-(a+e.left),p=c.pageY-(n+e.top);f=f*(r/e.width),p=p*(s/e.height);var h={x:f,y:p};if(t.type==="touchstart")Browser.lastTouches[c.identifier]=h,Browser.touches[c.identifier]=h;else if(t.type==="touchend"||t.type==="touchmove"){var E=Browser.touches[c.identifier];E||(E=h),Browser.lastTouches[c.identifier]=E,Browser.touches[c.identifier]=h}return}var C=t.pageX-(a+e.left),S=t.pageY-(n+e.top);C=C*(r/e.width),S=S*(s/e.height),Browser.mouseMovementX=C-Browser.mouseX,Browser.mouseMovementY=S-Browser.mouseY,Browser.mouseX=C,Browser.mouseY=S}},asyncLoad:function(t,e,r,s){var a=s?"":"al "+t;Module.readAsync(t,function(n){assert(n,'Loading data file "'+t+'" failed (no arrayBuffer).'),e(new Uint8Array(n)),a&&removeRunDependency(a)},function(n){if(r)r();else throw'Loading data file "'+t+'" failed.'}),a&&addRunDependency(a)},resizeListeners:[],updateResizeListeners:function(){var t=Module.canvas;Browser.resizeListeners.forEach(function(e){e(t.width,t.height)})},setCanvasSize:function(t,e,r){var s=Module.canvas;Browser.updateCanvasDimensions(s,t,e),r||Browser.updateResizeListeners()},windowedWidth:0,windowedHeight:0,setFullscreenCanvasSize:function(){if(typeof SDL<"u"){var t=HEAPU32[SDL.screen+Runtime.QUANTUM_SIZE*0>>2];t=t|8388608,HEAP32[SDL.screen+Runtime.QUANTUM_SIZE*0>>2]=t}Browser.updateResizeListeners()},setWindowedCanvasSize:function(){if(typeof SDL<"u"){var t=HEAPU32[SDL.screen+Runtime.QUANTUM_SIZE*0>>2];t=t&-8388609,HEAP32[SDL.screen+Runtime.QUANTUM_SIZE*0>>2]=t}Browser.updateResizeListeners()},updateCanvasDimensions:function(t,e,r){e&&r?(t.widthNative=e,t.heightNative=r):(e=t.widthNative,r=t.heightNative);var s=e,a=r;if(Module.forcedAspectRatio&&Module.forcedAspectRatio>0&&(s/a>2];return e},getStr:function(){var t=Pointer_stringify(SYSCALLS.get());return t},get64:function(){var t=SYSCALLS.get(),e=SYSCALLS.get();return t>=0?assert(e===0):assert(e===-1),t},getZero:function(){assert(SYSCALLS.get()===0)}};function ___syscall6(t,e){SYSCALLS.varargs=e;try{var r=SYSCALLS.getStreamFromFD();return FS.close(r),0}catch(s){return(typeof FS>"u"||!(s instanceof FS.ErrnoError))&&abort(s),-s.errno}}function ___syscall54(t,e){SYSCALLS.varargs=e;try{return 0}catch(r){return(typeof FS>"u"||!(r instanceof FS.ErrnoError))&&abort(r),-r.errno}}function _typeModule(t){var e=[[0,1,"X"],[1,1,"const X"],[128,1,"X *"],[256,1,"X &"],[384,1,"X &&"],[512,1,"std::shared_ptr"],[640,1,"std::unique_ptr"],[5120,1,"std::vector"],[6144,2,"std::array"],[9216,-1,"std::function"]];function r(p,h,E,C,S,b){if(h==1){var I=C&896;(I==128||I==256||I==384)&&(p="X const")}var T;return b?T=E.replace("X",p).replace("Y",S):T=p.replace("X",E).replace("Y",S),T.replace(/([*&]) (?=[*&])/g,"$1")}function s(p,h,E,C,S){throw new Error(p+" type "+E.replace("X",h+"?")+(C?" with flag "+C:"")+" in "+S)}function a(p,h,E,C,S,b,I,T){b===void 0&&(b="X"),T===void 0&&(T=1);var N=E(p);if(N)return N;var U=C(p),W=U.placeholderFlag,ee=e[W];I&&ee&&(b=r(I[2],I[0],b,ee[0],"?",!0));var ie;W==0&&(ie="Unbound"),W>=10&&(ie="Corrupt"),T>20&&(ie="Deeply nested"),ie&&s(ie,p,b,W,S||"?");var ue=U.paramList[0],le=a(ue,h,E,C,S,b,ee,T+1),me,pe={flags:ee[0],id:p,name:"",paramList:[le]},Be=[],Ce="?";switch(U.placeholderFlag){case 1:me=le.spec;break;case 2:if((le.flags&15360)==1024&&le.spec.ptrSize==1){pe.flags=7168;break}case 3:case 6:case 5:me=le.spec,le.flags&15360;break;case 8:Ce=""+U.paramList[1],pe.paramList.push(U.paramList[1]);break;case 9:for(var g=0,we=U.paramList[1];g>2]=t),t}function _llvm_stacksave(){var t=_llvm_stacksave;return t.LLVM_SAVEDSTACKS||(t.LLVM_SAVEDSTACKS=[]),t.LLVM_SAVEDSTACKS.push(Runtime.stackSave()),t.LLVM_SAVEDSTACKS.length-1}function ___syscall140(t,e){SYSCALLS.varargs=e;try{var r=SYSCALLS.getStreamFromFD(),s=SYSCALLS.get(),a=SYSCALLS.get(),n=SYSCALLS.get(),c=SYSCALLS.get(),f=a;return FS.llseek(r,f,c),HEAP32[n>>2]=r.position,r.getdents&&f===0&&c===0&&(r.getdents=null),0}catch(p){return(typeof FS>"u"||!(p instanceof FS.ErrnoError))&&abort(p),-p.errno}}function ___syscall146(t,e){SYSCALLS.varargs=e;try{var r=SYSCALLS.get(),s=SYSCALLS.get(),a=SYSCALLS.get(),n=0;___syscall146.buffer||(___syscall146.buffers=[null,[],[]],___syscall146.printChar=function(E,C){var S=___syscall146.buffers[E];assert(S),C===0||C===10?((E===1?Module.print:Module.printErr)(UTF8ArrayToString(S,0)),S.length=0):S.push(C)});for(var c=0;c>2],p=HEAP32[s+(c*8+4)>>2],h=0;h"u"||!(E instanceof FS.ErrnoError))&&abort(E),-E.errno}}function __nbind_finish(){for(var t=0,e=_nbind.BindClass.list;tt.pageSize/2||e>t.pageSize-r){var s=_nbind.typeNameTbl.NBind.proto;return s.lalloc(e)}else return HEAPU32[t.usedPtr]=r+e,t.rootPtr+r},t.lreset=function(e,r){var s=HEAPU32[t.pagePtr];if(s){var a=_nbind.typeNameTbl.NBind.proto;a.lreset(e,r)}else HEAPU32[t.usedPtr]=e},t}();_nbind.Pool=Pool;function constructType(t,e){var r=t==10240?_nbind.makeTypeNameTbl[e.name]||_nbind.BindType:_nbind.makeTypeKindTbl[t],s=new r(e);return typeIdTbl[e.id]=s,_nbind.typeNameTbl[e.name]=s,s}_nbind.constructType=constructType;function getType(t){return typeIdTbl[t]}_nbind.getType=getType;function queryType(t){var e=HEAPU8[t],r=_nbind.structureList[e][1];t/=4,r<0&&(++t,r=HEAPU32[t]+1);var s=Array.prototype.slice.call(HEAPU32.subarray(t+1,t+1+r));return e==9&&(s=[s[0],s.slice(1)]),{paramList:s,placeholderFlag:e}}_nbind.queryType=queryType;function getTypes(t,e){return t.map(function(r){return typeof r=="number"?_nbind.getComplexType(r,constructType,getType,queryType,e):_nbind.typeNameTbl[r]})}_nbind.getTypes=getTypes;function readTypeIdList(t,e){return Array.prototype.slice.call(HEAPU32,t/4,t/4+e)}_nbind.readTypeIdList=readTypeIdList;function readAsciiString(t){for(var e=t;HEAPU8[e++];);return String.fromCharCode.apply("",HEAPU8.subarray(t,e-1))}_nbind.readAsciiString=readAsciiString;function readPolicyList(t){var e={};if(t)for(;;){var r=HEAPU32[t/4];if(!r)break;e[readAsciiString(r)]=!0,t+=4}return e}_nbind.readPolicyList=readPolicyList;function getDynCall(t,e){var r={float32_t:"d",float64_t:"d",int64_t:"d",uint64_t:"d",void:"v"},s=t.map(function(n){return r[n.name]||"i"}).join(""),a=Module["dynCall_"+s];if(!a)throw new Error("dynCall_"+s+" not found for "+e+"("+t.map(function(n){return n.name}).join(", ")+")");return a}_nbind.getDynCall=getDynCall;function addMethod(t,e,r,s){var a=t[e];t.hasOwnProperty(e)&&a?((a.arity||a.arity===0)&&(a=_nbind.makeOverloader(a,a.arity),t[e]=a),a.addMethod(r,s)):(r.arity=s,t[e]=r)}_nbind.addMethod=addMethod;function throwError(t){throw new Error(t)}_nbind.throwError=throwError,_nbind.bigEndian=!1,_a=_typeModule(_typeModule),_nbind.Type=_a.Type,_nbind.makeType=_a.makeType,_nbind.getComplexType=_a.getComplexType,_nbind.structureList=_a.structureList;var BindType=function(t){__extends(e,t);function e(){var r=t!==null&&t.apply(this,arguments)||this;return r.heap=HEAPU32,r.ptrSize=4,r}return e.prototype.needsWireRead=function(r){return!!this.wireRead||!!this.makeWireRead},e.prototype.needsWireWrite=function(r){return!!this.wireWrite||!!this.makeWireWrite},e}(_nbind.Type);_nbind.BindType=BindType;var PrimitiveType=function(t){__extends(e,t);function e(r){var s=t.call(this,r)||this,a=r.flags&32?{32:HEAPF32,64:HEAPF64}:r.flags&8?{8:HEAPU8,16:HEAPU16,32:HEAPU32}:{8:HEAP8,16:HEAP16,32:HEAP32};return s.heap=a[r.ptrSize*8],s.ptrSize=r.ptrSize,s}return e.prototype.needsWireWrite=function(r){return!!r&&!!r.Strict},e.prototype.makeWireWrite=function(r,s){return s&&s.Strict&&function(a){if(typeof a=="number")return a;throw new Error("Type mismatch")}},e}(BindType);_nbind.PrimitiveType=PrimitiveType;function pushCString(t,e){if(t==null){if(e&&e.Nullable)return 0;throw new Error("Type mismatch")}if(e&&e.Strict){if(typeof t!="string")throw new Error("Type mismatch")}else t=t.toString();var r=Module.lengthBytesUTF8(t)+1,s=_nbind.Pool.lalloc(r);return Module.stringToUTF8Array(t,HEAPU8,s,r),s}_nbind.pushCString=pushCString;function popCString(t){return t===0?null:Module.Pointer_stringify(t)}_nbind.popCString=popCString;var CStringType=function(t){__extends(e,t);function e(){var r=t!==null&&t.apply(this,arguments)||this;return r.wireRead=popCString,r.wireWrite=pushCString,r.readResources=[_nbind.resources.pool],r.writeResources=[_nbind.resources.pool],r}return e.prototype.makeWireWrite=function(r,s){return function(a){return pushCString(a,s)}},e}(BindType);_nbind.CStringType=CStringType;var BooleanType=function(t){__extends(e,t);function e(){var r=t!==null&&t.apply(this,arguments)||this;return r.wireRead=function(s){return!!s},r}return e.prototype.needsWireWrite=function(r){return!!r&&!!r.Strict},e.prototype.makeWireRead=function(r){return"!!("+r+")"},e.prototype.makeWireWrite=function(r,s){return s&&s.Strict&&function(a){if(typeof a=="boolean")return a;throw new Error("Type mismatch")}||r},e}(BindType);_nbind.BooleanType=BooleanType;var Wrapper=function(){function t(){}return t.prototype.persist=function(){this.__nbindState|=1},t}();_nbind.Wrapper=Wrapper;function makeBound(t,e){var r=function(s){__extends(a,s);function a(n,c,f,p){var h=s.call(this)||this;if(!(h instanceof a))return new(Function.prototype.bind.apply(a,Array.prototype.concat.apply([null],arguments)));var E=c,C=f,S=p;if(n!==_nbind.ptrMarker){var b=h.__nbindConstructor.apply(h,arguments);E=4608,S=HEAPU32[b/4],C=HEAPU32[b/4+1]}var I={configurable:!0,enumerable:!1,value:null,writable:!1},T={__nbindFlags:E,__nbindPtr:C};S&&(T.__nbindShared=S,_nbind.mark(h));for(var N=0,U=Object.keys(T);N>=1;var r=_nbind.valueList[t];return _nbind.valueList[t]=firstFreeValue,firstFreeValue=t,r}else{if(e)return _nbind.popShared(t,e);throw new Error("Invalid value slot "+t)}}_nbind.popValue=popValue;var valueBase=18446744073709552e3;function push64(t){return typeof t=="number"?t:pushValue(t)*4096+valueBase}function pop64(t){return t=3?c=Buffer.from(n):c=new Buffer(n),c.copy(s)}else getBuffer(s).set(n)}}_nbind.commitBuffer=commitBuffer;var dirtyList=[],gcTimer=0;function sweep(){for(var t=0,e=dirtyList;t>2]=DYNAMIC_BASE,staticSealed=!0;function invoke_viiiii(t,e,r,s,a,n){try{Module.dynCall_viiiii(t,e,r,s,a,n)}catch(c){if(typeof c!="number"&&c!=="longjmp")throw c;Module.setThrew(1,0)}}function invoke_vif(t,e,r){try{Module.dynCall_vif(t,e,r)}catch(s){if(typeof s!="number"&&s!=="longjmp")throw s;Module.setThrew(1,0)}}function invoke_vid(t,e,r){try{Module.dynCall_vid(t,e,r)}catch(s){if(typeof s!="number"&&s!=="longjmp")throw s;Module.setThrew(1,0)}}function invoke_fiff(t,e,r,s){try{return Module.dynCall_fiff(t,e,r,s)}catch(a){if(typeof a!="number"&&a!=="longjmp")throw a;Module.setThrew(1,0)}}function invoke_vi(t,e){try{Module.dynCall_vi(t,e)}catch(r){if(typeof r!="number"&&r!=="longjmp")throw r;Module.setThrew(1,0)}}function invoke_vii(t,e,r){try{Module.dynCall_vii(t,e,r)}catch(s){if(typeof s!="number"&&s!=="longjmp")throw s;Module.setThrew(1,0)}}function invoke_ii(t,e){try{return Module.dynCall_ii(t,e)}catch(r){if(typeof r!="number"&&r!=="longjmp")throw r;Module.setThrew(1,0)}}function invoke_viddi(t,e,r,s,a){try{Module.dynCall_viddi(t,e,r,s,a)}catch(n){if(typeof n!="number"&&n!=="longjmp")throw n;Module.setThrew(1,0)}}function invoke_vidd(t,e,r,s){try{Module.dynCall_vidd(t,e,r,s)}catch(a){if(typeof a!="number"&&a!=="longjmp")throw a;Module.setThrew(1,0)}}function invoke_iiii(t,e,r,s){try{return Module.dynCall_iiii(t,e,r,s)}catch(a){if(typeof a!="number"&&a!=="longjmp")throw a;Module.setThrew(1,0)}}function invoke_diii(t,e,r,s){try{return Module.dynCall_diii(t,e,r,s)}catch(a){if(typeof a!="number"&&a!=="longjmp")throw a;Module.setThrew(1,0)}}function invoke_di(t,e){try{return Module.dynCall_di(t,e)}catch(r){if(typeof r!="number"&&r!=="longjmp")throw r;Module.setThrew(1,0)}}function invoke_iid(t,e,r){try{return Module.dynCall_iid(t,e,r)}catch(s){if(typeof s!="number"&&s!=="longjmp")throw s;Module.setThrew(1,0)}}function invoke_iii(t,e,r){try{return Module.dynCall_iii(t,e,r)}catch(s){if(typeof s!="number"&&s!=="longjmp")throw s;Module.setThrew(1,0)}}function invoke_viiddi(t,e,r,s,a,n){try{Module.dynCall_viiddi(t,e,r,s,a,n)}catch(c){if(typeof c!="number"&&c!=="longjmp")throw c;Module.setThrew(1,0)}}function invoke_viiiiii(t,e,r,s,a,n,c){try{Module.dynCall_viiiiii(t,e,r,s,a,n,c)}catch(f){if(typeof f!="number"&&f!=="longjmp")throw f;Module.setThrew(1,0)}}function invoke_dii(t,e,r){try{return Module.dynCall_dii(t,e,r)}catch(s){if(typeof s!="number"&&s!=="longjmp")throw s;Module.setThrew(1,0)}}function invoke_i(t){try{return Module.dynCall_i(t)}catch(e){if(typeof e!="number"&&e!=="longjmp")throw e;Module.setThrew(1,0)}}function invoke_iiiiii(t,e,r,s,a,n){try{return Module.dynCall_iiiiii(t,e,r,s,a,n)}catch(c){if(typeof c!="number"&&c!=="longjmp")throw c;Module.setThrew(1,0)}}function invoke_viiid(t,e,r,s,a){try{Module.dynCall_viiid(t,e,r,s,a)}catch(n){if(typeof n!="number"&&n!=="longjmp")throw n;Module.setThrew(1,0)}}function invoke_viififi(t,e,r,s,a,n,c){try{Module.dynCall_viififi(t,e,r,s,a,n,c)}catch(f){if(typeof f!="number"&&f!=="longjmp")throw f;Module.setThrew(1,0)}}function invoke_viii(t,e,r,s){try{Module.dynCall_viii(t,e,r,s)}catch(a){if(typeof a!="number"&&a!=="longjmp")throw a;Module.setThrew(1,0)}}function invoke_v(t){try{Module.dynCall_v(t)}catch(e){if(typeof e!="number"&&e!=="longjmp")throw e;Module.setThrew(1,0)}}function invoke_viid(t,e,r,s){try{Module.dynCall_viid(t,e,r,s)}catch(a){if(typeof a!="number"&&a!=="longjmp")throw a;Module.setThrew(1,0)}}function invoke_idd(t,e,r){try{return Module.dynCall_idd(t,e,r)}catch(s){if(typeof s!="number"&&s!=="longjmp")throw s;Module.setThrew(1,0)}}function invoke_viiii(t,e,r,s,a){try{Module.dynCall_viiii(t,e,r,s,a)}catch(n){if(typeof n!="number"&&n!=="longjmp")throw n;Module.setThrew(1,0)}}Module.asmGlobalArg={Math,Int8Array,Int16Array,Int32Array,Uint8Array,Uint16Array,Uint32Array,Float32Array,Float64Array,NaN:NaN,Infinity:1/0},Module.asmLibraryArg={abort,assert,enlargeMemory,getTotalMemory,abortOnCannotGrowMemory,invoke_viiiii,invoke_vif,invoke_vid,invoke_fiff,invoke_vi,invoke_vii,invoke_ii,invoke_viddi,invoke_vidd,invoke_iiii,invoke_diii,invoke_di,invoke_iid,invoke_iii,invoke_viiddi,invoke_viiiiii,invoke_dii,invoke_i,invoke_iiiiii,invoke_viiid,invoke_viififi,invoke_viii,invoke_v,invoke_viid,invoke_idd,invoke_viiii,_emscripten_asm_const_iiiii,_emscripten_asm_const_iiidddddd,_emscripten_asm_const_iiiid,__nbind_reference_external,_emscripten_asm_const_iiiiiiii,_removeAccessorPrefix,_typeModule,__nbind_register_pool,__decorate,_llvm_stackrestore,___cxa_atexit,__extends,__nbind_get_value_object,__ZN8facebook4yoga14YGNodeToStringEPNSt3__212basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEEP6YGNode14YGPrintOptionsj,_emscripten_set_main_loop_timing,__nbind_register_primitive,__nbind_register_type,_emscripten_memcpy_big,__nbind_register_function,___setErrNo,__nbind_register_class,__nbind_finish,_abort,_nbind_value,_llvm_stacksave,___syscall54,_defineHidden,_emscripten_set_main_loop,_emscripten_get_now,__nbind_register_callback_signature,_emscripten_asm_const_iiiiii,__nbind_free_external,_emscripten_asm_const_iiii,_emscripten_asm_const_iiididi,___syscall6,_atexit,___syscall140,___syscall146,DYNAMICTOP_PTR,tempDoublePtr,ABORT,STACKTOP,STACK_MAX,cttz_i8,___dso_handle};var asm=function(t,e,r){var s=new t.Int8Array(r),a=new t.Int16Array(r),n=new t.Int32Array(r),c=new t.Uint8Array(r),f=new t.Uint16Array(r),p=new t.Uint32Array(r),h=new t.Float32Array(r),E=new t.Float64Array(r),C=e.DYNAMICTOP_PTR|0,S=e.tempDoublePtr|0,b=e.ABORT|0,I=e.STACKTOP|0,T=e.STACK_MAX|0,N=e.cttz_i8|0,U=e.___dso_handle|0,W=0,ee=0,ie=0,ue=0,le=t.NaN,me=t.Infinity,pe=0,Be=0,Ce=0,g=0,we=0,ye=0,Ae=t.Math.floor,se=t.Math.abs,X=t.Math.sqrt,De=t.Math.pow,Te=t.Math.cos,mt=t.Math.sin,j=t.Math.tan,rt=t.Math.acos,Fe=t.Math.asin,Ne=t.Math.atan,be=t.Math.atan2,Ve=t.Math.exp,ke=t.Math.log,it=t.Math.ceil,Ue=t.Math.imul,x=t.Math.min,w=t.Math.max,P=t.Math.clz32,y=t.Math.fround,F=e.abort,z=e.assert,Z=e.enlargeMemory,$=e.getTotalMemory,oe=e.abortOnCannotGrowMemory,xe=e.invoke_viiiii,Re=e.invoke_vif,lt=e.invoke_vid,Ct=e.invoke_fiff,qt=e.invoke_vi,ir=e.invoke_vii,bt=e.invoke_ii,gn=e.invoke_viddi,br=e.invoke_vidd,Ir=e.invoke_iiii,Or=e.invoke_diii,nn=e.invoke_di,ai=e.invoke_iid,Io=e.invoke_iii,ts=e.invoke_viiddi,$s=e.invoke_viiiiii,Co=e.invoke_dii,Hi=e.invoke_i,eo=e.invoke_iiiiii,wo=e.invoke_viiid,QA=e.invoke_viififi,Af=e.invoke_viii,dh=e.invoke_v,mh=e.invoke_viid,to=e.invoke_idd,jn=e.invoke_viiii,Rs=e._emscripten_asm_const_iiiii,ro=e._emscripten_asm_const_iiidddddd,ou=e._emscripten_asm_const_iiiid,au=e.__nbind_reference_external,lu=e._emscripten_asm_const_iiiiiiii,RA=e._removeAccessorPrefix,TA=e._typeModule,oa=e.__nbind_register_pool,aa=e.__decorate,FA=e._llvm_stackrestore,gr=e.___cxa_atexit,Bo=e.__extends,Me=e.__nbind_get_value_object,cu=e.__ZN8facebook4yoga14YGNodeToStringEPNSt3__212basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEEP6YGNode14YGPrintOptionsj,Cr=e._emscripten_set_main_loop_timing,pf=e.__nbind_register_primitive,NA=e.__nbind_register_type,OA=e._emscripten_memcpy_big,uu=e.__nbind_register_function,fu=e.___setErrNo,oc=e.__nbind_register_class,ve=e.__nbind_finish,Nt=e._abort,ac=e._nbind_value,Oi=e._llvm_stacksave,no=e.___syscall54,Tt=e._defineHidden,xn=e._emscripten_set_main_loop,la=e._emscripten_get_now,ji=e.__nbind_register_callback_signature,Li=e._emscripten_asm_const_iiiiii,Na=e.__nbind_free_external,dn=e._emscripten_asm_const_iiii,Kn=e._emscripten_asm_const_iiididi,Au=e.___syscall6,yh=e._atexit,Oa=e.___syscall140,La=e.___syscall146,Ma=y(0);let $e=y(0);function Ua(o){o=o|0;var l=0;return l=I,I=I+o|0,I=I+15&-16,l|0}function hf(){return I|0}function lc(o){o=o|0,I=o}function wn(o,l){o=o|0,l=l|0,I=o,T=l}function ca(o,l){o=o|0,l=l|0,W||(W=o,ee=l)}function LA(o){o=o|0,ye=o}function MA(){return ye|0}function ua(){var o=0,l=0;Qr(8104,8,400)|0,Qr(8504,408,540)|0,o=9044,l=o+44|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));s[9088]=0,s[9089]=1,n[2273]=0,n[2274]=948,n[2275]=948,gr(17,8104,U|0)|0}function Bl(o){o=o|0,dt(o+948|0)}function Mt(o){return o=y(o),((fb(o)|0)&2147483647)>>>0>2139095040|0}function kn(o,l,u){o=o|0,l=l|0,u=u|0;e:do if(n[o+(l<<3)+4>>2]|0)o=o+(l<<3)|0;else{if((l|2|0)==3&&n[o+60>>2]|0){o=o+56|0;break}switch(l|0){case 0:case 2:case 4:case 5:{if(n[o+52>>2]|0){o=o+48|0;break e}break}default:}if(n[o+68>>2]|0){o=o+64|0;break}else{o=(l|1|0)==5?948:u;break}}while(!1);return o|0}function fa(o){o=o|0;var l=0;return l=_b(1e3)|0,Ha(o,(l|0)!=0,2456),n[2276]=(n[2276]|0)+1,Qr(l|0,8104,1e3)|0,s[o+2>>0]|0&&(n[l+4>>2]=2,n[l+12>>2]=4),n[l+976>>2]=o,l|0}function Ha(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0;d=I,I=I+16|0,A=d,l||(n[A>>2]=u,Wg(o,5,3197,A)),I=d}function rs(){return fa(956)|0}function cc(o){o=o|0;var l=0;return l=Kt(1e3)|0,pu(l,o),Ha(n[o+976>>2]|0,1,2456),n[2276]=(n[2276]|0)+1,n[l+944>>2]=0,l|0}function pu(o,l){o=o|0,l=l|0;var u=0;Qr(o|0,l|0,948)|0,Dy(o+948|0,l+948|0),u=o+960|0,o=l+960|0,l=u+40|0;do n[u>>2]=n[o>>2],u=u+4|0,o=o+4|0;while((u|0)<(l|0))}function uc(o){o=o|0;var l=0,u=0,A=0,d=0;if(l=o+944|0,u=n[l>>2]|0,u|0&&(ja(u+948|0,o)|0,n[l>>2]=0),u=Mi(o)|0,u|0){l=0;do n[(Is(o,l)|0)+944>>2]=0,l=l+1|0;while((l|0)!=(u|0))}u=o+948|0,A=n[u>>2]|0,d=o+952|0,l=n[d>>2]|0,(l|0)!=(A|0)&&(n[d>>2]=l+(~((l+-4-A|0)>>>2)<<2)),vl(u),Hb(o),n[2276]=(n[2276]|0)+-1}function ja(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0;A=n[o>>2]|0,k=o+4|0,u=n[k>>2]|0,m=u;e:do if((A|0)==(u|0))d=A,B=4;else for(o=A;;){if((n[o>>2]|0)==(l|0)){d=o,B=4;break e}if(o=o+4|0,(o|0)==(u|0)){o=0;break}}while(!1);return(B|0)==4&&((d|0)!=(u|0)?(A=d+4|0,o=m-A|0,l=o>>2,l&&(Q2(d|0,A|0,o|0)|0,u=n[k>>2]|0),o=d+(l<<2)|0,(u|0)==(o|0)||(n[k>>2]=u+(~((u+-4-o|0)>>>2)<<2)),o=1):o=0),o|0}function Mi(o){return o=o|0,(n[o+952>>2]|0)-(n[o+948>>2]|0)>>2|0}function Is(o,l){o=o|0,l=l|0;var u=0;return u=n[o+948>>2]|0,(n[o+952>>2]|0)-u>>2>>>0>l>>>0?o=n[u+(l<<2)>>2]|0:o=0,o|0}function vl(o){o=o|0;var l=0,u=0,A=0,d=0;A=I,I=I+32|0,l=A,d=n[o>>2]|0,u=(n[o+4>>2]|0)-d|0,((n[o+8>>2]|0)-d|0)>>>0>u>>>0&&(d=u>>2,ky(l,d,d,o+8|0),Ab(o,l),Qy(l)),I=A}function gf(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,R=0,M=0;M=Mi(o)|0;do if(M|0){if((n[(Is(o,0)|0)+944>>2]|0)==(o|0)){if(!(ja(o+948|0,l)|0))break;Qr(l+400|0,8504,540)|0,n[l+944>>2]=0,Oe(o);break}B=n[(n[o+976>>2]|0)+12>>2]|0,k=o+948|0,R=(B|0)==0,u=0,m=0;do A=n[(n[k>>2]|0)+(m<<2)>>2]|0,(A|0)==(l|0)?Oe(o):(d=cc(A)|0,n[(n[k>>2]|0)+(u<<2)>>2]=d,n[d+944>>2]=o,R||gU[B&15](A,d,o,u),u=u+1|0),m=m+1|0;while((m|0)!=(M|0));if(u>>>0>>0){R=o+948|0,k=o+952|0,B=u,u=n[k>>2]|0;do m=(n[R>>2]|0)+(B<<2)|0,A=m+4|0,d=u-A|0,l=d>>2,l&&(Q2(m|0,A|0,d|0)|0,u=n[k>>2]|0),d=u,A=m+(l<<2)|0,(d|0)!=(A|0)&&(u=d+(~((d+-4-A|0)>>>2)<<2)|0,n[k>>2]=u),B=B+1|0;while((B|0)!=(M|0))}}while(!1)}function fc(o){o=o|0;var l=0,u=0,A=0,d=0;wi(o,(Mi(o)|0)==0,2491),wi(o,(n[o+944>>2]|0)==0,2545),l=o+948|0,u=n[l>>2]|0,A=o+952|0,d=n[A>>2]|0,(d|0)!=(u|0)&&(n[A>>2]=d+(~((d+-4-u|0)>>>2)<<2)),vl(l),l=o+976|0,u=n[l>>2]|0,Qr(o|0,8104,1e3)|0,s[u+2>>0]|0&&(n[o+4>>2]=2,n[o+12>>2]=4),n[l>>2]=u}function wi(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0;d=I,I=I+16|0,A=d,l||(n[A>>2]=u,xo(o,5,3197,A)),I=d}function Qn(){return n[2276]|0}function Ac(){var o=0;return o=_b(20)|0,Ke((o|0)!=0,2592),n[2277]=(n[2277]|0)+1,n[o>>2]=n[239],n[o+4>>2]=n[240],n[o+8>>2]=n[241],n[o+12>>2]=n[242],n[o+16>>2]=n[243],o|0}function Ke(o,l){o=o|0,l=l|0;var u=0,A=0;A=I,I=I+16|0,u=A,o||(n[u>>2]=l,xo(0,5,3197,u)),I=A}function st(o){o=o|0,Hb(o),n[2277]=(n[2277]|0)+-1}function St(o,l){o=o|0,l=l|0;var u=0;l?(wi(o,(Mi(o)|0)==0,2629),u=1):(u=0,l=0),n[o+964>>2]=l,n[o+988>>2]=u}function lr(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;A=I,I=I+16|0,m=A+8|0,d=A+4|0,B=A,n[d>>2]=l,wi(o,(n[l+944>>2]|0)==0,2709),wi(o,(n[o+964>>2]|0)==0,2763),te(o),l=o+948|0,n[B>>2]=(n[l>>2]|0)+(u<<2),n[m>>2]=n[B>>2],Ee(l,m,d)|0,n[(n[d>>2]|0)+944>>2]=o,Oe(o),I=A}function te(o){o=o|0;var l=0,u=0,A=0,d=0,m=0,B=0,k=0;if(u=Mi(o)|0,u|0&&(n[(Is(o,0)|0)+944>>2]|0)!=(o|0)){A=n[(n[o+976>>2]|0)+12>>2]|0,d=o+948|0,m=(A|0)==0,l=0;do B=n[(n[d>>2]|0)+(l<<2)>>2]|0,k=cc(B)|0,n[(n[d>>2]|0)+(l<<2)>>2]=k,n[k+944>>2]=o,m||gU[A&15](B,k,o,l),l=l+1|0;while((l|0)!=(u|0))}}function Ee(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,R=0,M=0,L=0,q=0,ae=0,Ye=0,Le=0,Qe=0,tt=0,Xe=0;tt=I,I=I+64|0,q=tt+52|0,k=tt+48|0,ae=tt+28|0,Ye=tt+24|0,Le=tt+20|0,Qe=tt,A=n[o>>2]|0,m=A,l=A+((n[l>>2]|0)-m>>2<<2)|0,A=o+4|0,d=n[A>>2]|0,B=o+8|0;do if(d>>>0<(n[B>>2]|0)>>>0){if((l|0)==(d|0)){n[l>>2]=n[u>>2],n[A>>2]=(n[A>>2]|0)+4;break}pb(o,l,d,l+4|0),l>>>0<=u>>>0&&(u=(n[A>>2]|0)>>>0>u>>>0?u+4|0:u),n[l>>2]=n[u>>2]}else{A=(d-m>>2)+1|0,d=O(o)|0,d>>>0>>0&&sn(o),L=n[o>>2]|0,M=(n[B>>2]|0)-L|0,m=M>>1,ky(Qe,M>>2>>>0>>1>>>0?m>>>0>>0?A:m:d,l-L>>2,o+8|0),L=Qe+8|0,A=n[L>>2]|0,m=Qe+12|0,M=n[m>>2]|0,B=M,R=A;do if((A|0)==(M|0)){if(M=Qe+4|0,A=n[M>>2]|0,Xe=n[Qe>>2]|0,d=Xe,A>>>0<=Xe>>>0){A=B-d>>1,A=A|0?A:1,ky(ae,A,A>>>2,n[Qe+16>>2]|0),n[Ye>>2]=n[M>>2],n[Le>>2]=n[L>>2],n[k>>2]=n[Ye>>2],n[q>>2]=n[Le>>2],o2(ae,k,q),A=n[Qe>>2]|0,n[Qe>>2]=n[ae>>2],n[ae>>2]=A,A=ae+4|0,Xe=n[M>>2]|0,n[M>>2]=n[A>>2],n[A>>2]=Xe,A=ae+8|0,Xe=n[L>>2]|0,n[L>>2]=n[A>>2],n[A>>2]=Xe,A=ae+12|0,Xe=n[m>>2]|0,n[m>>2]=n[A>>2],n[A>>2]=Xe,Qy(ae),A=n[L>>2]|0;break}m=A,B=((m-d>>2)+1|0)/-2|0,k=A+(B<<2)|0,d=R-m|0,m=d>>2,m&&(Q2(k|0,A|0,d|0)|0,A=n[M>>2]|0),Xe=k+(m<<2)|0,n[L>>2]=Xe,n[M>>2]=A+(B<<2),A=Xe}while(!1);n[A>>2]=n[u>>2],n[L>>2]=(n[L>>2]|0)+4,l=hb(o,Qe,l)|0,Qy(Qe)}while(!1);return I=tt,l|0}function Oe(o){o=o|0;var l=0;do{if(l=o+984|0,s[l>>0]|0)break;s[l>>0]=1,h[o+504>>2]=y(le),o=n[o+944>>2]|0}while(o|0)}function dt(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~((l+-4-A|0)>>>2)<<2)),It(u))}function Et(o){return o=o|0,n[o+944>>2]|0}function Pt(o){o=o|0,wi(o,(n[o+964>>2]|0)!=0,2832),Oe(o)}function tr(o){return o=o|0,(s[o+984>>0]|0)!=0|0}function An(o,l){o=o|0,l=l|0,s6e(o,l,400)|0&&(Qr(o|0,l|0,400)|0,Oe(o))}function li(o){o=o|0;var l=$e;return l=y(h[o+44>>2]),o=Mt(l)|0,y(o?y(0):l)}function Gi(o){o=o|0;var l=$e;return l=y(h[o+48>>2]),Mt(l)|0&&(l=s[(n[o+976>>2]|0)+2>>0]|0?y(1):y(0)),y(l)}function Rn(o,l){o=o|0,l=l|0,n[o+980>>2]=l}function Ga(o){return o=o|0,n[o+980>>2]|0}function my(o,l){o=o|0,l=l|0;var u=0;u=o+4|0,(n[u>>2]|0)!=(l|0)&&(n[u>>2]=l,Oe(o))}function X1(o){return o=o|0,n[o+4>>2]|0}function vo(o,l){o=o|0,l=l|0;var u=0;u=o+8|0,(n[u>>2]|0)!=(l|0)&&(n[u>>2]=l,Oe(o))}function yy(o){return o=o|0,n[o+8>>2]|0}function Eh(o,l){o=o|0,l=l|0;var u=0;u=o+12|0,(n[u>>2]|0)!=(l|0)&&(n[u>>2]=l,Oe(o))}function $1(o){return o=o|0,n[o+12>>2]|0}function So(o,l){o=o|0,l=l|0;var u=0;u=o+16|0,(n[u>>2]|0)!=(l|0)&&(n[u>>2]=l,Oe(o))}function Ih(o){return o=o|0,n[o+16>>2]|0}function Ch(o,l){o=o|0,l=l|0;var u=0;u=o+20|0,(n[u>>2]|0)!=(l|0)&&(n[u>>2]=l,Oe(o))}function hu(o){return o=o|0,n[o+20>>2]|0}function wh(o,l){o=o|0,l=l|0;var u=0;u=o+24|0,(n[u>>2]|0)!=(l|0)&&(n[u>>2]=l,Oe(o))}function Fg(o){return o=o|0,n[o+24>>2]|0}function Ng(o,l){o=o|0,l=l|0;var u=0;u=o+28|0,(n[u>>2]|0)!=(l|0)&&(n[u>>2]=l,Oe(o))}function Og(o){return o=o|0,n[o+28>>2]|0}function Ey(o,l){o=o|0,l=l|0;var u=0;u=o+32|0,(n[u>>2]|0)!=(l|0)&&(n[u>>2]=l,Oe(o))}function df(o){return o=o|0,n[o+32>>2]|0}function Do(o,l){o=o|0,l=l|0;var u=0;u=o+36|0,(n[u>>2]|0)!=(l|0)&&(n[u>>2]=l,Oe(o))}function Sl(o){return o=o|0,n[o+36>>2]|0}function Bh(o,l){o=o|0,l=y(l);var u=0;u=o+40|0,y(h[u>>2])!=l&&(h[u>>2]=l,Oe(o))}function Lg(o,l){o=o|0,l=y(l);var u=0;u=o+44|0,y(h[u>>2])!=l&&(h[u>>2]=l,Oe(o))}function Dl(o,l){o=o|0,l=y(l);var u=0;u=o+48|0,y(h[u>>2])!=l&&(h[u>>2]=l,Oe(o))}function Pl(o,l){o=o|0,l=y(l);var u=0,A=0,d=0,m=0;m=Mt(l)|0,u=(m^1)&1,A=o+52|0,d=o+56|0,m|y(h[A>>2])==l&&(n[d>>2]|0)==(u|0)||(h[A>>2]=l,n[d>>2]=u,Oe(o))}function Iy(o,l){o=o|0,l=y(l);var u=0,A=0;A=o+52|0,u=o+56|0,y(h[A>>2])==l&&(n[u>>2]|0)==2||(h[A>>2]=l,A=Mt(l)|0,n[u>>2]=A?3:2,Oe(o))}function UA(o,l){o=o|0,l=l|0;var u=0,A=0;A=l+52|0,u=n[A+4>>2]|0,l=o,n[l>>2]=n[A>>2],n[l+4>>2]=u}function Cy(o,l,u){o=o|0,l=l|0,u=y(u);var A=0,d=0,m=0;m=Mt(u)|0,A=(m^1)&1,d=o+132+(l<<3)|0,l=o+132+(l<<3)+4|0,m|y(h[d>>2])==u&&(n[l>>2]|0)==(A|0)||(h[d>>2]=u,n[l>>2]=A,Oe(o))}function wy(o,l,u){o=o|0,l=l|0,u=y(u);var A=0,d=0,m=0;m=Mt(u)|0,A=m?0:2,d=o+132+(l<<3)|0,l=o+132+(l<<3)+4|0,m|y(h[d>>2])==u&&(n[l>>2]|0)==(A|0)||(h[d>>2]=u,n[l>>2]=A,Oe(o))}function _A(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=l+132+(u<<3)|0,l=n[A+4>>2]|0,u=o,n[u>>2]=n[A>>2],n[u+4>>2]=l}function HA(o,l,u){o=o|0,l=l|0,u=y(u);var A=0,d=0,m=0;m=Mt(u)|0,A=(m^1)&1,d=o+60+(l<<3)|0,l=o+60+(l<<3)+4|0,m|y(h[d>>2])==u&&(n[l>>2]|0)==(A|0)||(h[d>>2]=u,n[l>>2]=A,Oe(o))}function Y(o,l,u){o=o|0,l=l|0,u=y(u);var A=0,d=0,m=0;m=Mt(u)|0,A=m?0:2,d=o+60+(l<<3)|0,l=o+60+(l<<3)+4|0,m|y(h[d>>2])==u&&(n[l>>2]|0)==(A|0)||(h[d>>2]=u,n[l>>2]=A,Oe(o))}function xt(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=l+60+(u<<3)|0,l=n[A+4>>2]|0,u=o,n[u>>2]=n[A>>2],n[u+4>>2]=l}function jA(o,l){o=o|0,l=l|0;var u=0;u=o+60+(l<<3)+4|0,(n[u>>2]|0)!=3&&(h[o+60+(l<<3)>>2]=y(le),n[u>>2]=3,Oe(o))}function Po(o,l,u){o=o|0,l=l|0,u=y(u);var A=0,d=0,m=0;m=Mt(u)|0,A=(m^1)&1,d=o+204+(l<<3)|0,l=o+204+(l<<3)+4|0,m|y(h[d>>2])==u&&(n[l>>2]|0)==(A|0)||(h[d>>2]=u,n[l>>2]=A,Oe(o))}function mf(o,l,u){o=o|0,l=l|0,u=y(u);var A=0,d=0,m=0;m=Mt(u)|0,A=m?0:2,d=o+204+(l<<3)|0,l=o+204+(l<<3)+4|0,m|y(h[d>>2])==u&&(n[l>>2]|0)==(A|0)||(h[d>>2]=u,n[l>>2]=A,Oe(o))}function yt(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=l+204+(u<<3)|0,l=n[A+4>>2]|0,u=o,n[u>>2]=n[A>>2],n[u+4>>2]=l}function gu(o,l,u){o=o|0,l=l|0,u=y(u);var A=0,d=0,m=0;m=Mt(u)|0,A=(m^1)&1,d=o+276+(l<<3)|0,l=o+276+(l<<3)+4|0,m|y(h[d>>2])==u&&(n[l>>2]|0)==(A|0)||(h[d>>2]=u,n[l>>2]=A,Oe(o))}function By(o,l){return o=o|0,l=l|0,y(h[o+276+(l<<3)>>2])}function Mg(o,l){o=o|0,l=y(l);var u=0,A=0,d=0,m=0;m=Mt(l)|0,u=(m^1)&1,A=o+348|0,d=o+352|0,m|y(h[A>>2])==l&&(n[d>>2]|0)==(u|0)||(h[A>>2]=l,n[d>>2]=u,Oe(o))}function e2(o,l){o=o|0,l=y(l);var u=0,A=0;A=o+348|0,u=o+352|0,y(h[A>>2])==l&&(n[u>>2]|0)==2||(h[A>>2]=l,A=Mt(l)|0,n[u>>2]=A?3:2,Oe(o))}function vh(o){o=o|0;var l=0;l=o+352|0,(n[l>>2]|0)!=3&&(h[o+348>>2]=y(le),n[l>>2]=3,Oe(o))}function ur(o,l){o=o|0,l=l|0;var u=0,A=0;A=l+348|0,u=n[A+4>>2]|0,l=o,n[l>>2]=n[A>>2],n[l+4>>2]=u}function Ki(o,l){o=o|0,l=y(l);var u=0,A=0,d=0,m=0;m=Mt(l)|0,u=(m^1)&1,A=o+356|0,d=o+360|0,m|y(h[A>>2])==l&&(n[d>>2]|0)==(u|0)||(h[A>>2]=l,n[d>>2]=u,Oe(o))}function yf(o,l){o=o|0,l=y(l);var u=0,A=0;A=o+356|0,u=o+360|0,y(h[A>>2])==l&&(n[u>>2]|0)==2||(h[A>>2]=l,A=Mt(l)|0,n[u>>2]=A?3:2,Oe(o))}function qa(o){o=o|0;var l=0;l=o+360|0,(n[l>>2]|0)!=3&&(h[o+356>>2]=y(le),n[l>>2]=3,Oe(o))}function Ug(o,l){o=o|0,l=l|0;var u=0,A=0;A=l+356|0,u=n[A+4>>2]|0,l=o,n[l>>2]=n[A>>2],n[l+4>>2]=u}function du(o,l){o=o|0,l=y(l);var u=0,A=0,d=0,m=0;m=Mt(l)|0,u=(m^1)&1,A=o+364|0,d=o+368|0,m|y(h[A>>2])==l&&(n[d>>2]|0)==(u|0)||(h[A>>2]=l,n[d>>2]=u,Oe(o))}function Ef(o,l){o=o|0,l=y(l);var u=0,A=0,d=0,m=0;m=Mt(l)|0,u=m?0:2,A=o+364|0,d=o+368|0,m|y(h[A>>2])==l&&(n[d>>2]|0)==(u|0)||(h[A>>2]=l,n[d>>2]=u,Oe(o))}function wt(o,l){o=o|0,l=l|0;var u=0,A=0;A=l+364|0,u=n[A+4>>2]|0,l=o,n[l>>2]=n[A>>2],n[l+4>>2]=u}function di(o,l){o=o|0,l=y(l);var u=0,A=0,d=0,m=0;m=Mt(l)|0,u=(m^1)&1,A=o+372|0,d=o+376|0,m|y(h[A>>2])==l&&(n[d>>2]|0)==(u|0)||(h[A>>2]=l,n[d>>2]=u,Oe(o))}function GA(o,l){o=o|0,l=y(l);var u=0,A=0,d=0,m=0;m=Mt(l)|0,u=m?0:2,A=o+372|0,d=o+376|0,m|y(h[A>>2])==l&&(n[d>>2]|0)==(u|0)||(h[A>>2]=l,n[d>>2]=u,Oe(o))}function Wa(o,l){o=o|0,l=l|0;var u=0,A=0;A=l+372|0,u=n[A+4>>2]|0,l=o,n[l>>2]=n[A>>2],n[l+4>>2]=u}function Aa(o,l){o=o|0,l=y(l);var u=0,A=0,d=0,m=0;m=Mt(l)|0,u=(m^1)&1,A=o+380|0,d=o+384|0,m|y(h[A>>2])==l&&(n[d>>2]|0)==(u|0)||(h[A>>2]=l,n[d>>2]=u,Oe(o))}function Ya(o,l){o=o|0,l=y(l);var u=0,A=0,d=0,m=0;m=Mt(l)|0,u=m?0:2,A=o+380|0,d=o+384|0,m|y(h[A>>2])==l&&(n[d>>2]|0)==(u|0)||(h[A>>2]=l,n[d>>2]=u,Oe(o))}function _g(o,l){o=o|0,l=l|0;var u=0,A=0;A=l+380|0,u=n[A+4>>2]|0,l=o,n[l>>2]=n[A>>2],n[l+4>>2]=u}function Sh(o,l){o=o|0,l=y(l);var u=0,A=0,d=0,m=0;m=Mt(l)|0,u=(m^1)&1,A=o+388|0,d=o+392|0,m|y(h[A>>2])==l&&(n[d>>2]|0)==(u|0)||(h[A>>2]=l,n[d>>2]=u,Oe(o))}function Hg(o,l){o=o|0,l=y(l);var u=0,A=0,d=0,m=0;m=Mt(l)|0,u=m?0:2,A=o+388|0,d=o+392|0,m|y(h[A>>2])==l&&(n[d>>2]|0)==(u|0)||(h[A>>2]=l,n[d>>2]=u,Oe(o))}function vy(o,l){o=o|0,l=l|0;var u=0,A=0;A=l+388|0,u=n[A+4>>2]|0,l=o,n[l>>2]=n[A>>2],n[l+4>>2]=u}function qA(o,l){o=o|0,l=y(l);var u=0;u=o+396|0,y(h[u>>2])!=l&&(h[u>>2]=l,Oe(o))}function jg(o){return o=o|0,y(h[o+396>>2])}function mu(o){return o=o|0,y(h[o+400>>2])}function yu(o){return o=o|0,y(h[o+404>>2])}function If(o){return o=o|0,y(h[o+408>>2])}function Ts(o){return o=o|0,y(h[o+412>>2])}function Eu(o){return o=o|0,y(h[o+416>>2])}function Gn(o){return o=o|0,y(h[o+420>>2])}function ns(o,l){switch(o=o|0,l=l|0,wi(o,(l|0)<6,2918),l|0){case 0:{l=(n[o+496>>2]|0)==2?5:4;break}case 2:{l=(n[o+496>>2]|0)==2?4:5;break}default:}return y(h[o+424+(l<<2)>>2])}function bi(o,l){switch(o=o|0,l=l|0,wi(o,(l|0)<6,2918),l|0){case 0:{l=(n[o+496>>2]|0)==2?5:4;break}case 2:{l=(n[o+496>>2]|0)==2?4:5;break}default:}return y(h[o+448+(l<<2)>>2])}function WA(o,l){switch(o=o|0,l=l|0,wi(o,(l|0)<6,2918),l|0){case 0:{l=(n[o+496>>2]|0)==2?5:4;break}case 2:{l=(n[o+496>>2]|0)==2?4:5;break}default:}return y(h[o+472+(l<<2)>>2])}function Cf(o,l){o=o|0,l=l|0;var u=0,A=$e;return u=n[o+4>>2]|0,(u|0)==(n[l+4>>2]|0)?u?(A=y(h[o>>2]),o=y(se(y(A-y(h[l>>2]))))>2]=0,n[A+4>>2]=0,n[A+8>>2]=0,cu(A|0,o|0,l|0,0),xo(o,3,(s[A+11>>0]|0)<0?n[A>>2]|0:A,u),b6e(A),I=u}function is(o,l,u,A){o=y(o),l=y(l),u=u|0,A=A|0;var d=$e;o=y(o*l),d=y(cU(o,y(1)));do if(mn(d,y(0))|0)o=y(o-d);else{if(o=y(o-d),mn(d,y(1))|0){o=y(o+y(1));break}if(u){o=y(o+y(1));break}A||(d>y(.5)?d=y(1):(A=mn(d,y(.5))|0,d=y(A?1:0)),o=y(o+d))}while(!1);return y(o/l)}function bl(o,l,u,A,d,m,B,k,R,M,L,q,ae){o=o|0,l=y(l),u=u|0,A=y(A),d=d|0,m=y(m),B=B|0,k=y(k),R=y(R),M=y(M),L=y(L),q=y(q),ae=ae|0;var Ye=0,Le=$e,Qe=$e,tt=$e,Xe=$e,ct=$e,He=$e;return R>2]),Le!=y(0))?(tt=y(is(l,Le,0,0)),Xe=y(is(A,Le,0,0)),Qe=y(is(m,Le,0,0)),Le=y(is(k,Le,0,0))):(Qe=m,tt=l,Le=k,Xe=A),(d|0)==(o|0)?Ye=mn(Qe,tt)|0:Ye=0,(B|0)==(u|0)?ae=mn(Le,Xe)|0:ae=0,!Ye&&(ct=y(l-L),!(bo(o,ct,R)|0))&&!(wf(o,ct,d,R)|0)?Ye=Bf(o,ct,d,m,R)|0:Ye=1,!ae&&(He=y(A-q),!(bo(u,He,M)|0))&&!(wf(u,He,B,M)|0)?ae=Bf(u,He,B,k,M)|0:ae=1,ae=Ye&ae),ae|0}function bo(o,l,u){return o=o|0,l=y(l),u=y(u),(o|0)==1?o=mn(l,u)|0:o=0,o|0}function wf(o,l,u,A){return o=o|0,l=y(l),u=u|0,A=y(A),(o|0)==2&(u|0)==0?l>=A?o=1:o=mn(l,A)|0:o=0,o|0}function Bf(o,l,u,A,d){return o=o|0,l=y(l),u=u|0,A=y(A),d=y(d),(o|0)==2&(u|0)==2&A>l?d<=l?o=1:o=mn(l,d)|0:o=0,o|0}function xl(o,l,u,A,d,m,B,k,R,M,L){o=o|0,l=y(l),u=y(u),A=A|0,d=d|0,m=m|0,B=y(B),k=y(k),R=R|0,M=M|0,L=L|0;var q=0,ae=0,Ye=0,Le=0,Qe=$e,tt=$e,Xe=0,ct=0,He=0,We=0,Lt=0,Gr=0,fr=0,$t=0,Rr=0,Hr=0,cr=0,Hn=$e,Ro=$e,To=$e,Fo=0,Xa=0;cr=I,I=I+160|0,$t=cr+152|0,fr=cr+120|0,Gr=cr+104|0,He=cr+72|0,Le=cr+56|0,Lt=cr+8|0,ct=cr,We=(n[2279]|0)+1|0,n[2279]=We,Rr=o+984|0,s[Rr>>0]|0&&(n[o+512>>2]|0)!=(n[2278]|0)?Xe=4:(n[o+516>>2]|0)==(A|0)?Hr=0:Xe=4,(Xe|0)==4&&(n[o+520>>2]=0,n[o+924>>2]=-1,n[o+928>>2]=-1,h[o+932>>2]=y(-1),h[o+936>>2]=y(-1),Hr=1);e:do if(n[o+964>>2]|0)if(Qe=y(yn(o,2,B)),tt=y(yn(o,0,B)),q=o+916|0,To=y(h[q>>2]),Ro=y(h[o+920>>2]),Hn=y(h[o+932>>2]),bl(d,l,m,u,n[o+924>>2]|0,To,n[o+928>>2]|0,Ro,Hn,y(h[o+936>>2]),Qe,tt,L)|0)Xe=22;else if(Ye=n[o+520>>2]|0,!Ye)Xe=21;else for(ae=0;;){if(q=o+524+(ae*24|0)|0,Hn=y(h[q>>2]),Ro=y(h[o+524+(ae*24|0)+4>>2]),To=y(h[o+524+(ae*24|0)+16>>2]),bl(d,l,m,u,n[o+524+(ae*24|0)+8>>2]|0,Hn,n[o+524+(ae*24|0)+12>>2]|0,Ro,To,y(h[o+524+(ae*24|0)+20>>2]),Qe,tt,L)|0){Xe=22;break e}if(ae=ae+1|0,ae>>>0>=Ye>>>0){Xe=21;break}}else{if(R){if(q=o+916|0,!(mn(y(h[q>>2]),l)|0)){Xe=21;break}if(!(mn(y(h[o+920>>2]),u)|0)){Xe=21;break}if((n[o+924>>2]|0)!=(d|0)){Xe=21;break}q=(n[o+928>>2]|0)==(m|0)?q:0,Xe=22;break}if(Ye=n[o+520>>2]|0,!Ye)Xe=21;else for(ae=0;;){if(q=o+524+(ae*24|0)|0,mn(y(h[q>>2]),l)|0&&mn(y(h[o+524+(ae*24|0)+4>>2]),u)|0&&(n[o+524+(ae*24|0)+8>>2]|0)==(d|0)&&(n[o+524+(ae*24|0)+12>>2]|0)==(m|0)){Xe=22;break e}if(ae=ae+1|0,ae>>>0>=Ye>>>0){Xe=21;break}}}while(!1);do if((Xe|0)==21)s[11697]|0?(q=0,Xe=28):(q=0,Xe=31);else if((Xe|0)==22){if(ae=(s[11697]|0)!=0,!((q|0)!=0&(Hr^1)))if(ae){Xe=28;break}else{Xe=31;break}Le=q+16|0,n[o+908>>2]=n[Le>>2],Ye=q+20|0,n[o+912>>2]=n[Ye>>2],(s[11698]|0)==0|ae^1||(n[ct>>2]=Iu(We)|0,n[ct+4>>2]=We,xo(o,4,2972,ct),ae=n[o+972>>2]|0,ae|0&&ip[ae&127](o),d=pa(d,R)|0,m=pa(m,R)|0,Xa=+y(h[Le>>2]),Fo=+y(h[Ye>>2]),n[Lt>>2]=d,n[Lt+4>>2]=m,E[Lt+8>>3]=+l,E[Lt+16>>3]=+u,E[Lt+24>>3]=Xa,E[Lt+32>>3]=Fo,n[Lt+40>>2]=M,xo(o,4,2989,Lt))}while(!1);return(Xe|0)==28&&(ae=Iu(We)|0,n[Le>>2]=ae,n[Le+4>>2]=We,n[Le+8>>2]=Hr?3047:11699,xo(o,4,3038,Le),ae=n[o+972>>2]|0,ae|0&&ip[ae&127](o),Lt=pa(d,R)|0,Xe=pa(m,R)|0,n[He>>2]=Lt,n[He+4>>2]=Xe,E[He+8>>3]=+l,E[He+16>>3]=+u,n[He+24>>2]=M,xo(o,4,3049,He),Xe=31),(Xe|0)==31&&(Fs(o,l,u,A,d,m,B,k,R,L),s[11697]|0&&(ae=n[2279]|0,Lt=Iu(ae)|0,n[Gr>>2]=Lt,n[Gr+4>>2]=ae,n[Gr+8>>2]=Hr?3047:11699,xo(o,4,3083,Gr),ae=n[o+972>>2]|0,ae|0&&ip[ae&127](o),Lt=pa(d,R)|0,Gr=pa(m,R)|0,Fo=+y(h[o+908>>2]),Xa=+y(h[o+912>>2]),n[fr>>2]=Lt,n[fr+4>>2]=Gr,E[fr+8>>3]=Fo,E[fr+16>>3]=Xa,n[fr+24>>2]=M,xo(o,4,3092,fr)),n[o+516>>2]=A,q||(ae=o+520|0,q=n[ae>>2]|0,(q|0)==16&&(s[11697]|0&&xo(o,4,3124,$t),n[ae>>2]=0,q=0),R?q=o+916|0:(n[ae>>2]=q+1,q=o+524+(q*24|0)|0),h[q>>2]=l,h[q+4>>2]=u,n[q+8>>2]=d,n[q+12>>2]=m,n[q+16>>2]=n[o+908>>2],n[q+20>>2]=n[o+912>>2],q=0)),R&&(n[o+416>>2]=n[o+908>>2],n[o+420>>2]=n[o+912>>2],s[o+985>>0]=1,s[Rr>>0]=0),n[2279]=(n[2279]|0)+-1,n[o+512>>2]=n[2278],I=cr,Hr|(q|0)==0|0}function yn(o,l,u){o=o|0,l=l|0,u=y(u);var A=$e;return A=y(K(o,l,u)),y(A+y(re(o,l,u)))}function xo(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0;m=I,I=I+16|0,d=m,n[d>>2]=A,o?A=n[o+976>>2]|0:A=0,bh(A,o,l,u,d),I=m}function Iu(o){return o=o|0,(o>>>0>60?3201:3201+(60-o)|0)|0}function pa(o,l){o=o|0,l=l|0;var u=0,A=0,d=0;return d=I,I=I+32|0,u=d+12|0,A=d,n[u>>2]=n[254],n[u+4>>2]=n[255],n[u+8>>2]=n[256],n[A>>2]=n[257],n[A+4>>2]=n[258],n[A+8>>2]=n[259],(o|0)>2?o=11699:o=n[(l?A:u)+(o<<2)>>2]|0,I=d,o|0}function Fs(o,l,u,A,d,m,B,k,R,M){o=o|0,l=y(l),u=y(u),A=A|0,d=d|0,m=m|0,B=y(B),k=y(k),R=R|0,M=M|0;var L=0,q=0,ae=0,Ye=0,Le=$e,Qe=$e,tt=$e,Xe=$e,ct=$e,He=$e,We=$e,Lt=0,Gr=0,fr=0,$t=$e,Rr=$e,Hr=0,cr=$e,Hn=0,Ro=0,To=0,Fo=0,Xa=0,Wh=0,Yh=0,gc=0,Vh=0,Tf=0,Ff=0,Jh=0,Kh=0,zh=0,on=0,dc=0,Zh=0,bu=0,Xh=$e,$h=$e,Nf=$e,Of=$e,xu=$e,oo=0,Ll=0,ma=0,mc=0,op=0,ap=$e,Lf=$e,lp=$e,cp=$e,ao=$e,Ms=$e,yc=0,Wn=$e,up=$e,No=$e,ku=$e,Oo=$e,Qu=$e,fp=0,Ap=0,Ru=$e,lo=$e,Ec=0,pp=0,hp=0,gp=0,Nr=$e,ui=0,Us=0,Lo=0,co=0,Mr=0,Ar=0,Ic=0,zt=$e,dp=0,Bi=0;Ic=I,I=I+16|0,oo=Ic+12|0,Ll=Ic+8|0,ma=Ic+4|0,mc=Ic,wi(o,(d|0)==0|(Mt(l)|0)^1,3326),wi(o,(m|0)==0|(Mt(u)|0)^1,3406),Us=At(o,A)|0,n[o+496>>2]=Us,Mr=dr(2,Us)|0,Ar=dr(0,Us)|0,h[o+440>>2]=y(K(o,Mr,B)),h[o+444>>2]=y(re(o,Mr,B)),h[o+428>>2]=y(K(o,Ar,B)),h[o+436>>2]=y(re(o,Ar,B)),h[o+464>>2]=y(vr(o,Mr)),h[o+468>>2]=y(Un(o,Mr)),h[o+452>>2]=y(vr(o,Ar)),h[o+460>>2]=y(Un(o,Ar)),h[o+488>>2]=y(mi(o,Mr,B)),h[o+492>>2]=y(Cs(o,Mr,B)),h[o+476>>2]=y(mi(o,Ar,B)),h[o+484>>2]=y(Cs(o,Ar,B));do if(n[o+964>>2]|0)JA(o,l,u,d,m,B,k);else{if(Lo=o+948|0,co=(n[o+952>>2]|0)-(n[Lo>>2]|0)>>2,!co){ab(o,l,u,d,m,B,k);break}if(!R&&t2(o,l,u,d,m,B,k)|0)break;te(o),dc=o+508|0,s[dc>>0]=0,Mr=dr(n[o+4>>2]|0,Us)|0,Ar=Py(Mr,Us)|0,ui=de(Mr)|0,Zh=n[o+8>>2]|0,pp=o+28|0,bu=(n[pp>>2]|0)!=0,Oo=ui?B:k,Ru=ui?k:B,Xh=y(kh(o,Mr,B)),$h=y(r2(o,Mr,B)),Le=y(kh(o,Ar,B)),Qu=y(Va(o,Mr,B)),lo=y(Va(o,Ar,B)),fr=ui?d:m,Ec=ui?m:d,Nr=ui?Qu:lo,ct=ui?lo:Qu,ku=y(yn(o,2,B)),Xe=y(yn(o,0,B)),Qe=y(y(Xr(o+364|0,B))-Nr),tt=y(y(Xr(o+380|0,B))-Nr),He=y(y(Xr(o+372|0,k))-ct),We=y(y(Xr(o+388|0,k))-ct),Nf=ui?Qe:He,Of=ui?tt:We,ku=y(l-ku),l=y(ku-Nr),Mt(l)|0?Nr=l:Nr=y($n(y(pd(l,tt)),Qe)),up=y(u-Xe),l=y(up-ct),Mt(l)|0?No=l:No=y($n(y(pd(l,We)),He)),Qe=ui?Nr:No,Wn=ui?No:Nr;e:do if((fr|0)==1)for(A=0,q=0;;){if(L=Is(o,q)|0,!A)y(KA(L))>y(0)&&y(Qh(L))>y(0)?A=L:A=0;else if(n2(L)|0){Ye=0;break e}if(q=q+1|0,q>>>0>=co>>>0){Ye=A;break}}else Ye=0;while(!1);Lt=Ye+500|0,Gr=Ye+504|0,A=0,L=0,l=y(0),ae=0;do{if(q=n[(n[Lo>>2]|0)+(ae<<2)>>2]|0,(n[q+36>>2]|0)==1)by(q),s[q+985>>0]=1,s[q+984>>0]=0;else{vf(q),R&&Ph(q,At(q,Us)|0,Qe,Wn,Nr);do if((n[q+24>>2]|0)!=1)if((q|0)==(Ye|0)){n[Lt>>2]=n[2278],h[Gr>>2]=y(0);break}else{lb(o,q,Nr,d,No,Nr,No,m,Us,M);break}else L|0&&(n[L+960>>2]=q),n[q+960>>2]=0,L=q,A=A|0?A:q;while(!1);Ms=y(h[q+504>>2]),l=y(l+y(Ms+y(yn(q,Mr,Nr))))}ae=ae+1|0}while((ae|0)!=(co|0));for(To=l>Qe,yc=bu&((fr|0)==2&To)?1:fr,Hn=(Ec|0)==1,Xa=Hn&(R^1),Wh=(yc|0)==1,Yh=(yc|0)==2,gc=976+(Mr<<2)|0,Vh=(Ec|2|0)==2,zh=Hn&(bu^1),Tf=1040+(Ar<<2)|0,Ff=1040+(Mr<<2)|0,Jh=976+(Ar<<2)|0,Kh=(Ec|0)!=1,To=bu&((fr|0)!=0&To),Ro=o+976|0,Hn=Hn^1,l=Qe,Hr=0,Fo=0,Ms=y(0),xu=y(0);;){e:do if(Hr>>>0>>0)for(Gr=n[Lo>>2]|0,ae=0,We=y(0),He=y(0),tt=y(0),Qe=y(0),q=0,L=0,Ye=Hr;;){if(Lt=n[Gr+(Ye<<2)>>2]|0,(n[Lt+36>>2]|0)!=1&&(n[Lt+940>>2]=Fo,(n[Lt+24>>2]|0)!=1)){if(Xe=y(yn(Lt,Mr,Nr)),on=n[gc>>2]|0,u=y(Xr(Lt+380+(on<<3)|0,Oo)),ct=y(h[Lt+504>>2]),u=y(pd(u,ct)),u=y($n(y(Xr(Lt+364+(on<<3)|0,Oo)),u)),bu&(ae|0)!=0&y(Xe+y(He+u))>l){m=ae,Xe=We,fr=Ye;break e}Xe=y(Xe+u),u=y(He+Xe),Xe=y(We+Xe),n2(Lt)|0&&(tt=y(tt+y(KA(Lt))),Qe=y(Qe-y(ct*y(Qh(Lt))))),L|0&&(n[L+960>>2]=Lt),n[Lt+960>>2]=0,ae=ae+1|0,L=Lt,q=q|0?q:Lt}else Xe=We,u=He;if(Ye=Ye+1|0,Ye>>>0>>0)We=Xe,He=u;else{m=ae,fr=Ye;break}}else m=0,Xe=y(0),tt=y(0),Qe=y(0),q=0,fr=Hr;while(!1);on=tt>y(0)&tty(0)&QeOf&((Mt(Of)|0)^1))l=Of,on=51;else if(s[(n[Ro>>2]|0)+3>>0]|0)on=51;else{if($t!=y(0)&&y(KA(o))!=y(0)){on=53;break}l=Xe,on=53}while(!1);if((on|0)==51&&(on=0,Mt(l)|0?on=53:(Rr=y(l-Xe),cr=l)),(on|0)==53&&(on=0,Xe>2]|0,Ye=Rry(0),He=y(Rr/$t),tt=y(0),Xe=y(0),l=y(0),L=q;do u=y(Xr(L+380+(ae<<3)|0,Oo)),Qe=y(Xr(L+364+(ae<<3)|0,Oo)),Qe=y(pd(u,y($n(Qe,y(h[L+504>>2]))))),Ye?(u=y(Qe*y(Qh(L))),u!=y(-0)&&(zt=y(Qe-y(ct*u)),ap=y(qn(L,Mr,zt,cr,Nr)),zt!=ap)&&(tt=y(tt-y(ap-Qe)),l=y(l+u))):Lt&&(Lf=y(KA(L)),Lf!=y(0))&&(zt=y(Qe+y(He*Lf)),lp=y(qn(L,Mr,zt,cr,Nr)),zt!=lp)&&(tt=y(tt-y(lp-Qe)),Xe=y(Xe-Lf)),L=n[L+960>>2]|0;while(L|0);if(l=y(We+l),Qe=y(Rr+tt),op)l=y(0);else{ct=y($t+Xe),Ye=n[gc>>2]|0,Lt=Qey(0),ct=y(Qe/ct),l=y(0);do{zt=y(Xr(q+380+(Ye<<3)|0,Oo)),tt=y(Xr(q+364+(Ye<<3)|0,Oo)),tt=y(pd(zt,y($n(tt,y(h[q+504>>2]))))),Lt?(zt=y(tt*y(Qh(q))),Qe=y(-zt),zt!=y(-0)?(zt=y(He*Qe),Qe=y(qn(q,Mr,y(tt+(Gr?Qe:zt)),cr,Nr))):Qe=tt):ae&&(cp=y(KA(q)),cp!=y(0))?Qe=y(qn(q,Mr,y(tt+y(ct*cp)),cr,Nr)):Qe=tt,l=y(l-y(Qe-tt)),Xe=y(yn(q,Mr,Nr)),u=y(yn(q,Ar,Nr)),Qe=y(Qe+Xe),h[Ll>>2]=Qe,n[mc>>2]=1,tt=y(h[q+396>>2]);e:do if(Mt(tt)|0){L=Mt(Wn)|0;do if(!L){if(To|(io(q,Ar,Wn)|0|Hn)||(ss(o,q)|0)!=4||(n[(kl(q,Ar)|0)+4>>2]|0)==3||(n[(Ql(q,Ar)|0)+4>>2]|0)==3)break;h[oo>>2]=Wn,n[ma>>2]=1;break e}while(!1);if(io(q,Ar,Wn)|0){L=n[q+992+(n[Jh>>2]<<2)>>2]|0,zt=y(u+y(Xr(L,Wn))),h[oo>>2]=zt,L=Kh&(n[L+4>>2]|0)==2,n[ma>>2]=((Mt(zt)|0|L)^1)&1;break}else{h[oo>>2]=Wn,n[ma>>2]=L?0:2;break}}else zt=y(Qe-Xe),$t=y(zt/tt),zt=y(tt*zt),n[ma>>2]=1,h[oo>>2]=y(u+(ui?$t:zt));while(!1);Cu(q,Mr,cr,Nr,mc,Ll),Cu(q,Ar,Wn,Nr,ma,oo);do if(!(io(q,Ar,Wn)|0)&&(ss(o,q)|0)==4){if((n[(kl(q,Ar)|0)+4>>2]|0)==3){L=0;break}L=(n[(Ql(q,Ar)|0)+4>>2]|0)!=3}else L=0;while(!1);zt=y(h[Ll>>2]),$t=y(h[oo>>2]),dp=n[mc>>2]|0,Bi=n[ma>>2]|0,xl(q,ui?zt:$t,ui?$t:zt,Us,ui?dp:Bi,ui?Bi:dp,Nr,No,R&(L^1),3488,M)|0,s[dc>>0]=s[dc>>0]|s[q+508>>0],q=n[q+960>>2]|0}while(q|0)}}else l=y(0);if(l=y(Rr+l),Bi=l>0]=Bi|c[dc>>0],Yh&l>y(0)?(L=n[gc>>2]|0,n[o+364+(L<<3)+4>>2]|0&&(ao=y(Xr(o+364+(L<<3)|0,Oo)),ao>=y(0))?Qe=y($n(y(0),y(ao-y(cr-l)))):Qe=y(0)):Qe=l,Lt=Hr>>>0>>0,Lt){Ye=n[Lo>>2]|0,ae=Hr,L=0;do q=n[Ye+(ae<<2)>>2]|0,n[q+24>>2]|0||(L=((n[(kl(q,Mr)|0)+4>>2]|0)==3&1)+L|0,L=L+((n[(Ql(q,Mr)|0)+4>>2]|0)==3&1)|0),ae=ae+1|0;while((ae|0)!=(fr|0));L?(Xe=y(0),u=y(0)):on=101}else on=101;e:do if((on|0)==101)switch(on=0,Zh|0){case 1:{L=0,Xe=y(Qe*y(.5)),u=y(0);break e}case 2:{L=0,Xe=Qe,u=y(0);break e}case 3:{if(m>>>0<=1){L=0,Xe=y(0),u=y(0);break e}u=y((m+-1|0)>>>0),L=0,Xe=y(0),u=y(y($n(Qe,y(0)))/u);break e}case 5:{u=y(Qe/y((m+1|0)>>>0)),L=0,Xe=u;break e}case 4:{u=y(Qe/y(m>>>0)),L=0,Xe=y(u*y(.5));break e}default:{L=0,Xe=y(0),u=y(0);break e}}while(!1);if(l=y(Xh+Xe),Lt){tt=y(Qe/y(L|0)),ae=n[Lo>>2]|0,q=Hr,Qe=y(0);do{L=n[ae+(q<<2)>>2]|0;e:do if((n[L+36>>2]|0)!=1){switch(n[L+24>>2]|0){case 1:{if(ha(L,Mr)|0){if(!R)break e;zt=y(zA(L,Mr,cr)),zt=y(zt+y(vr(o,Mr))),zt=y(zt+y(K(L,Mr,Nr))),h[L+400+(n[Ff>>2]<<2)>>2]=zt;break e}break}case 0:if(Bi=(n[(kl(L,Mr)|0)+4>>2]|0)==3,zt=y(tt+l),l=Bi?zt:l,R&&(Bi=L+400+(n[Ff>>2]<<2)|0,h[Bi>>2]=y(l+y(h[Bi>>2]))),Bi=(n[(Ql(L,Mr)|0)+4>>2]|0)==3,zt=y(tt+l),l=Bi?zt:l,Xa){zt=y(u+y(yn(L,Mr,Nr))),Qe=Wn,l=y(l+y(zt+y(h[L+504>>2])));break e}else{l=y(l+y(u+y(ZA(L,Mr,Nr)))),Qe=y($n(Qe,y(ZA(L,Ar,Nr))));break e}default:}R&&(zt=y(Xe+y(vr(o,Mr))),Bi=L+400+(n[Ff>>2]<<2)|0,h[Bi>>2]=y(zt+y(h[Bi>>2])))}while(!1);q=q+1|0}while((q|0)!=(fr|0))}else Qe=y(0);if(u=y($h+l),Vh?Xe=y(y(qn(o,Ar,y(lo+Qe),Ru,B))-lo):Xe=Wn,tt=y(y(qn(o,Ar,y(lo+(zh?Wn:Qe)),Ru,B))-lo),Lt&R){q=Hr;do{ae=n[(n[Lo>>2]|0)+(q<<2)>>2]|0;do if((n[ae+36>>2]|0)!=1){if((n[ae+24>>2]|0)==1){if(ha(ae,Ar)|0){if(zt=y(zA(ae,Ar,Wn)),zt=y(zt+y(vr(o,Ar))),zt=y(zt+y(K(ae,Ar,Nr))),L=n[Tf>>2]|0,h[ae+400+(L<<2)>>2]=zt,!(Mt(zt)|0))break}else L=n[Tf>>2]|0;zt=y(vr(o,Ar)),h[ae+400+(L<<2)>>2]=y(zt+y(K(ae,Ar,Nr)));break}L=ss(o,ae)|0;do if((L|0)==4){if((n[(kl(ae,Ar)|0)+4>>2]|0)==3){on=139;break}if((n[(Ql(ae,Ar)|0)+4>>2]|0)==3){on=139;break}if(io(ae,Ar,Wn)|0){l=Le;break}dp=n[ae+908+(n[gc>>2]<<2)>>2]|0,n[oo>>2]=dp,l=y(h[ae+396>>2]),Bi=Mt(l)|0,Qe=(n[S>>2]=dp,y(h[S>>2])),Bi?l=tt:(Rr=y(yn(ae,Ar,Nr)),zt=y(Qe/l),l=y(l*Qe),l=y(Rr+(ui?zt:l))),h[Ll>>2]=l,h[oo>>2]=y(y(yn(ae,Mr,Nr))+Qe),n[ma>>2]=1,n[mc>>2]=1,Cu(ae,Mr,cr,Nr,ma,oo),Cu(ae,Ar,Wn,Nr,mc,Ll),l=y(h[oo>>2]),Rr=y(h[Ll>>2]),zt=ui?l:Rr,l=ui?Rr:l,Bi=((Mt(zt)|0)^1)&1,xl(ae,zt,l,Us,Bi,((Mt(l)|0)^1)&1,Nr,No,1,3493,M)|0,l=Le}else on=139;while(!1);e:do if((on|0)==139){on=0,l=y(Xe-y(ZA(ae,Ar,Nr)));do if((n[(kl(ae,Ar)|0)+4>>2]|0)==3){if((n[(Ql(ae,Ar)|0)+4>>2]|0)!=3)break;l=y(Le+y($n(y(0),y(l*y(.5)))));break e}while(!1);if((n[(Ql(ae,Ar)|0)+4>>2]|0)==3){l=Le;break}if((n[(kl(ae,Ar)|0)+4>>2]|0)==3){l=y(Le+y($n(y(0),l)));break}switch(L|0){case 1:{l=Le;break e}case 2:{l=y(Le+y(l*y(.5)));break e}default:{l=y(Le+l);break e}}}while(!1);zt=y(Ms+l),Bi=ae+400+(n[Tf>>2]<<2)|0,h[Bi>>2]=y(zt+y(h[Bi>>2]))}while(!1);q=q+1|0}while((q|0)!=(fr|0))}if(Ms=y(Ms+tt),xu=y($n(xu,u)),m=Fo+1|0,fr>>>0>=co>>>0)break;l=cr,Hr=fr,Fo=m}do if(R){if(L=m>>>0>1,!L&&!(HL(o)|0))break;if(!(Mt(Wn)|0)){l=y(Wn-Ms);e:do switch(n[o+12>>2]|0){case 3:{Le=y(Le+l),He=y(0);break}case 2:{Le=y(Le+y(l*y(.5))),He=y(0);break}case 4:{Wn>Ms?He=y(l/y(m>>>0)):He=y(0);break}case 7:if(Wn>Ms){Le=y(Le+y(l/y(m<<1>>>0))),He=y(l/y(m>>>0)),He=L?He:y(0);break e}else{Le=y(Le+y(l*y(.5))),He=y(0);break e}case 6:{He=y(l/y(Fo>>>0)),He=Wn>Ms&L?He:y(0);break}default:He=y(0)}while(!1);if(m|0)for(Lt=1040+(Ar<<2)|0,Gr=976+(Ar<<2)|0,Ye=0,q=0;;){e:do if(q>>>0>>0)for(Qe=y(0),tt=y(0),l=y(0),ae=q;;){L=n[(n[Lo>>2]|0)+(ae<<2)>>2]|0;do if((n[L+36>>2]|0)!=1&&!(n[L+24>>2]|0)){if((n[L+940>>2]|0)!=(Ye|0))break e;if(jL(L,Ar)|0&&(zt=y(h[L+908+(n[Gr>>2]<<2)>>2]),l=y($n(l,y(zt+y(yn(L,Ar,Nr)))))),(ss(o,L)|0)!=5)break;ao=y(Yg(L)),ao=y(ao+y(K(L,0,Nr))),zt=y(h[L+912>>2]),zt=y(y(zt+y(yn(L,0,Nr)))-ao),ao=y($n(tt,ao)),zt=y($n(Qe,zt)),Qe=zt,tt=ao,l=y($n(l,y(ao+zt)))}while(!1);if(L=ae+1|0,L>>>0>>0)ae=L;else{ae=L;break}}else tt=y(0),l=y(0),ae=q;while(!1);if(ct=y(He+l),u=Le,Le=y(Le+ct),q>>>0>>0){Xe=y(u+tt),L=q;do{q=n[(n[Lo>>2]|0)+(L<<2)>>2]|0;e:do if((n[q+36>>2]|0)!=1&&!(n[q+24>>2]|0))switch(ss(o,q)|0){case 1:{zt=y(u+y(K(q,Ar,Nr))),h[q+400+(n[Lt>>2]<<2)>>2]=zt;break e}case 3:{zt=y(y(Le-y(re(q,Ar,Nr)))-y(h[q+908+(n[Gr>>2]<<2)>>2])),h[q+400+(n[Lt>>2]<<2)>>2]=zt;break e}case 2:{zt=y(u+y(y(ct-y(h[q+908+(n[Gr>>2]<<2)>>2]))*y(.5))),h[q+400+(n[Lt>>2]<<2)>>2]=zt;break e}case 4:{if(zt=y(u+y(K(q,Ar,Nr))),h[q+400+(n[Lt>>2]<<2)>>2]=zt,io(q,Ar,Wn)|0||(ui?(Qe=y(h[q+908>>2]),l=y(Qe+y(yn(q,Mr,Nr))),tt=ct):(tt=y(h[q+912>>2]),tt=y(tt+y(yn(q,Ar,Nr))),l=ct,Qe=y(h[q+908>>2])),mn(l,Qe)|0&&mn(tt,y(h[q+912>>2]))|0))break e;xl(q,l,tt,Us,1,1,Nr,No,1,3501,M)|0;break e}case 5:{h[q+404>>2]=y(y(Xe-y(Yg(q)))+y(zA(q,0,Wn)));break e}default:break e}while(!1);L=L+1|0}while((L|0)!=(ae|0))}if(Ye=Ye+1|0,(Ye|0)==(m|0))break;q=ae}}}while(!1);if(h[o+908>>2]=y(qn(o,2,ku,B,B)),h[o+912>>2]=y(qn(o,0,up,k,B)),yc|0&&(fp=n[o+32>>2]|0,Ap=(yc|0)==2,!(Ap&(fp|0)!=2))?Ap&(fp|0)==2&&(l=y(Qu+cr),l=y($n(y(pd(l,y(Vg(o,Mr,xu,Oo)))),Qu)),on=198):(l=y(qn(o,Mr,xu,Oo,B)),on=198),(on|0)==198&&(h[o+908+(n[976+(Mr<<2)>>2]<<2)>>2]=l),Ec|0&&(hp=n[o+32>>2]|0,gp=(Ec|0)==2,!(gp&(hp|0)!=2))?gp&(hp|0)==2&&(l=y(lo+Wn),l=y($n(y(pd(l,y(Vg(o,Ar,y(lo+Ms),Ru)))),lo)),on=204):(l=y(qn(o,Ar,y(lo+Ms),Ru,B)),on=204),(on|0)==204&&(h[o+908+(n[976+(Ar<<2)>>2]<<2)>>2]=l),R){if((n[pp>>2]|0)==2){q=976+(Ar<<2)|0,ae=1040+(Ar<<2)|0,L=0;do Ye=Is(o,L)|0,n[Ye+24>>2]|0||(dp=n[q>>2]|0,zt=y(h[o+908+(dp<<2)>>2]),Bi=Ye+400+(n[ae>>2]<<2)|0,zt=y(zt-y(h[Bi>>2])),h[Bi>>2]=y(zt-y(h[Ye+908+(dp<<2)>>2]))),L=L+1|0;while((L|0)!=(co|0))}if(A|0){L=ui?yc:d;do qL(o,A,Nr,L,No,Us,M),A=n[A+960>>2]|0;while(A|0)}if(L=(Mr|2|0)==3,q=(Ar|2|0)==3,L|q){A=0;do ae=n[(n[Lo>>2]|0)+(A<<2)>>2]|0,(n[ae+36>>2]|0)!=1&&(L&&i2(o,ae,Mr),q&&i2(o,ae,Ar)),A=A+1|0;while((A|0)!=(co|0))}}}while(!1);I=Ic}function Dh(o,l){o=o|0,l=y(l);var u=0;Ha(o,l>=y(0),3147),u=l==y(0),h[o+4>>2]=u?y(0):l}function YA(o,l,u,A){o=o|0,l=y(l),u=y(u),A=A|0;var d=$e,m=$e,B=0,k=0,R=0;n[2278]=(n[2278]|0)+1,vf(o),io(o,2,l)|0?(d=y(Xr(n[o+992>>2]|0,l)),R=1,d=y(d+y(yn(o,2,l)))):(d=y(Xr(o+380|0,l)),d>=y(0)?R=2:(R=((Mt(l)|0)^1)&1,d=l)),io(o,0,u)|0?(m=y(Xr(n[o+996>>2]|0,u)),k=1,m=y(m+y(yn(o,0,l)))):(m=y(Xr(o+388|0,u)),m>=y(0)?k=2:(k=((Mt(u)|0)^1)&1,m=u)),B=o+976|0,xl(o,d,m,A,R,k,l,u,1,3189,n[B>>2]|0)|0&&(Ph(o,n[o+496>>2]|0,l,u,l),VA(o,y(h[(n[B>>2]|0)+4>>2]),y(0),y(0)),s[11696]|0)&&Gg(o,7)}function vf(o){o=o|0;var l=0,u=0,A=0,d=0,m=0,B=0,k=0,R=0,M=0,L=0;k=I,I=I+32|0,B=k+24|0,m=k+16|0,A=k+8|0,d=k,u=0;do l=o+380+(u<<3)|0,n[o+380+(u<<3)+4>>2]|0&&(R=l,M=n[R+4>>2]|0,L=A,n[L>>2]=n[R>>2],n[L+4>>2]=M,L=o+364+(u<<3)|0,M=n[L+4>>2]|0,R=d,n[R>>2]=n[L>>2],n[R+4>>2]=M,n[m>>2]=n[A>>2],n[m+4>>2]=n[A+4>>2],n[B>>2]=n[d>>2],n[B+4>>2]=n[d+4>>2],Cf(m,B)|0)||(l=o+348+(u<<3)|0),n[o+992+(u<<2)>>2]=l,u=u+1|0;while((u|0)!=2);I=k}function io(o,l,u){o=o|0,l=l|0,u=y(u);var A=0;switch(o=n[o+992+(n[976+(l<<2)>>2]<<2)>>2]|0,n[o+4>>2]|0){case 0:case 3:{o=0;break}case 1:{y(h[o>>2])>2])>2]|0){case 2:{l=y(y(y(h[o>>2])*l)/y(100));break}case 1:{l=y(h[o>>2]);break}default:l=y(le)}return y(l)}function Ph(o,l,u,A,d){o=o|0,l=l|0,u=y(u),A=y(A),d=y(d);var m=0,B=$e;l=n[o+944>>2]|0?l:1,m=dr(n[o+4>>2]|0,l)|0,l=Py(m,l)|0,u=y(ub(o,m,u)),A=y(ub(o,l,A)),B=y(u+y(K(o,m,d))),h[o+400+(n[1040+(m<<2)>>2]<<2)>>2]=B,u=y(u+y(re(o,m,d))),h[o+400+(n[1e3+(m<<2)>>2]<<2)>>2]=u,u=y(A+y(K(o,l,d))),h[o+400+(n[1040+(l<<2)>>2]<<2)>>2]=u,d=y(A+y(re(o,l,d))),h[o+400+(n[1e3+(l<<2)>>2]<<2)>>2]=d}function VA(o,l,u,A){o=o|0,l=y(l),u=y(u),A=y(A);var d=0,m=0,B=$e,k=$e,R=0,M=0,L=$e,q=0,ae=$e,Ye=$e,Le=$e,Qe=$e;if(l!=y(0)&&(d=o+400|0,Qe=y(h[d>>2]),m=o+404|0,Le=y(h[m>>2]),q=o+416|0,Ye=y(h[q>>2]),M=o+420|0,B=y(h[M>>2]),ae=y(Qe+u),L=y(Le+A),A=y(ae+Ye),k=y(L+B),R=(n[o+988>>2]|0)==1,h[d>>2]=y(is(Qe,l,0,R)),h[m>>2]=y(is(Le,l,0,R)),u=y(cU(y(Ye*l),y(1))),mn(u,y(0))|0?m=0:m=(mn(u,y(1))|0)^1,u=y(cU(y(B*l),y(1))),mn(u,y(0))|0?d=0:d=(mn(u,y(1))|0)^1,Qe=y(is(A,l,R&m,R&(m^1))),h[q>>2]=y(Qe-y(is(ae,l,0,R))),Qe=y(is(k,l,R&d,R&(d^1))),h[M>>2]=y(Qe-y(is(L,l,0,R))),m=(n[o+952>>2]|0)-(n[o+948>>2]|0)>>2,m|0)){d=0;do VA(Is(o,d)|0,l,ae,L),d=d+1|0;while((d|0)!=(m|0))}}function Sy(o,l,u,A,d){switch(o=o|0,l=l|0,u=u|0,A=A|0,d=d|0,u|0){case 5:case 0:{o=dX(n[489]|0,A,d)|0;break}default:o=v6e(A,d)|0}return o|0}function Wg(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0;d=I,I=I+16|0,m=d,n[m>>2]=A,bh(o,0,l,u,m),I=d}function bh(o,l,u,A,d){if(o=o|0,l=l|0,u=u|0,A=A|0,d=d|0,o=o|0?o:956,LX[n[o+8>>2]&1](o,l,u,A,d)|0,(u|0)==5)Nt();else return}function pc(o,l,u){o=o|0,l=l|0,u=u|0,s[o+l>>0]=u&1}function Dy(o,l){o=o|0,l=l|0;var u=0,A=0;n[o>>2]=0,n[o+4>>2]=0,n[o+8>>2]=0,u=l+4|0,A=(n[u>>2]|0)-(n[l>>2]|0)>>2,A|0&&(xh(o,A),kt(o,n[l>>2]|0,n[u>>2]|0,A))}function xh(o,l){o=o|0,l=l|0;var u=0;if((O(o)|0)>>>0>>0&&sn(o),l>>>0>1073741823)Nt();else{u=Kt(l<<2)|0,n[o+4>>2]=u,n[o>>2]=u,n[o+8>>2]=u+(l<<2);return}}function kt(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0,A=o+4|0,o=u-l|0,(o|0)>0&&(Qr(n[A>>2]|0,l|0,o|0)|0,n[A>>2]=(n[A>>2]|0)+(o>>>2<<2))}function O(o){return o=o|0,1073741823}function K(o,l,u){return o=o|0,l=l|0,u=y(u),de(l)|0&&n[o+96>>2]|0?o=o+92|0:o=kn(o+60|0,n[1040+(l<<2)>>2]|0,992)|0,y(Je(o,u))}function re(o,l,u){return o=o|0,l=l|0,u=y(u),de(l)|0&&n[o+104>>2]|0?o=o+100|0:o=kn(o+60|0,n[1e3+(l<<2)>>2]|0,992)|0,y(Je(o,u))}function de(o){return o=o|0,(o|1|0)==3|0}function Je(o,l){return o=o|0,l=y(l),(n[o+4>>2]|0)==3?l=y(0):l=y(Xr(o,l)),y(l)}function At(o,l){return o=o|0,l=l|0,o=n[o>>2]|0,(o|0?o:(l|0)>1?l:1)|0}function dr(o,l){o=o|0,l=l|0;var u=0;e:do if((l|0)==2){switch(o|0){case 2:{o=3;break e}case 3:break;default:{u=4;break e}}o=2}else u=4;while(!1);return o|0}function vr(o,l){o=o|0,l=l|0;var u=$e;return de(l)|0&&n[o+312>>2]|0&&(u=y(h[o+308>>2]),u>=y(0))||(u=y($n(y(h[(kn(o+276|0,n[1040+(l<<2)>>2]|0,992)|0)>>2]),y(0)))),y(u)}function Un(o,l){o=o|0,l=l|0;var u=$e;return de(l)|0&&n[o+320>>2]|0&&(u=y(h[o+316>>2]),u>=y(0))||(u=y($n(y(h[(kn(o+276|0,n[1e3+(l<<2)>>2]|0,992)|0)>>2]),y(0)))),y(u)}function mi(o,l,u){o=o|0,l=l|0,u=y(u);var A=$e;return de(l)|0&&n[o+240>>2]|0&&(A=y(Xr(o+236|0,u)),A>=y(0))||(A=y($n(y(Xr(kn(o+204|0,n[1040+(l<<2)>>2]|0,992)|0,u)),y(0)))),y(A)}function Cs(o,l,u){o=o|0,l=l|0,u=y(u);var A=$e;return de(l)|0&&n[o+248>>2]|0&&(A=y(Xr(o+244|0,u)),A>=y(0))||(A=y($n(y(Xr(kn(o+204|0,n[1e3+(l<<2)>>2]|0,992)|0,u)),y(0)))),y(A)}function JA(o,l,u,A,d,m,B){o=o|0,l=y(l),u=y(u),A=A|0,d=d|0,m=y(m),B=y(B);var k=$e,R=$e,M=$e,L=$e,q=$e,ae=$e,Ye=0,Le=0,Qe=0;Qe=I,I=I+16|0,Ye=Qe,Le=o+964|0,wi(o,(n[Le>>2]|0)!=0,3519),k=y(Va(o,2,l)),R=y(Va(o,0,l)),M=y(yn(o,2,l)),L=y(yn(o,0,l)),Mt(l)|0?q=l:q=y($n(y(0),y(y(l-M)-k))),Mt(u)|0?ae=u:ae=y($n(y(0),y(y(u-L)-R))),(A|0)==1&(d|0)==1?(h[o+908>>2]=y(qn(o,2,y(l-M),m,m)),l=y(qn(o,0,y(u-L),B,m))):(MX[n[Le>>2]&1](Ye,o,q,A,ae,d),q=y(k+y(h[Ye>>2])),ae=y(l-M),h[o+908>>2]=y(qn(o,2,(A|2|0)==2?q:ae,m,m)),ae=y(R+y(h[Ye+4>>2])),l=y(u-L),l=y(qn(o,0,(d|2|0)==2?ae:l,B,m))),h[o+912>>2]=l,I=Qe}function ab(o,l,u,A,d,m,B){o=o|0,l=y(l),u=y(u),A=A|0,d=d|0,m=y(m),B=y(B);var k=$e,R=$e,M=$e,L=$e;M=y(Va(o,2,m)),k=y(Va(o,0,m)),L=y(yn(o,2,m)),R=y(yn(o,0,m)),l=y(l-L),h[o+908>>2]=y(qn(o,2,(A|2|0)==2?M:l,m,m)),u=y(u-R),h[o+912>>2]=y(qn(o,0,(d|2|0)==2?k:u,B,m))}function t2(o,l,u,A,d,m,B){o=o|0,l=y(l),u=y(u),A=A|0,d=d|0,m=y(m),B=y(B);var k=0,R=$e,M=$e;return k=(A|0)==2,!(l<=y(0)&k)&&!(u<=y(0)&(d|0)==2)&&!((A|0)==1&(d|0)==1)?o=0:(R=y(yn(o,0,m)),M=y(yn(o,2,m)),k=l>2]=y(qn(o,2,k?y(0):l,m,m)),l=y(u-R),k=u>2]=y(qn(o,0,k?y(0):l,B,m)),o=1),o|0}function Py(o,l){return o=o|0,l=l|0,Jg(o)|0?o=dr(2,l)|0:o=0,o|0}function kh(o,l,u){return o=o|0,l=l|0,u=y(u),u=y(mi(o,l,u)),y(u+y(vr(o,l)))}function r2(o,l,u){return o=o|0,l=l|0,u=y(u),u=y(Cs(o,l,u)),y(u+y(Un(o,l)))}function Va(o,l,u){o=o|0,l=l|0,u=y(u);var A=$e;return A=y(kh(o,l,u)),y(A+y(r2(o,l,u)))}function n2(o){return o=o|0,n[o+24>>2]|0?o=0:y(KA(o))!=y(0)?o=1:o=y(Qh(o))!=y(0),o|0}function KA(o){o=o|0;var l=$e;if(n[o+944>>2]|0){if(l=y(h[o+44>>2]),Mt(l)|0)return l=y(h[o+40>>2]),o=l>y(0)&((Mt(l)|0)^1),y(o?l:y(0))}else l=y(0);return y(l)}function Qh(o){o=o|0;var l=$e,u=0,A=$e;do if(n[o+944>>2]|0){if(l=y(h[o+48>>2]),Mt(l)|0){if(u=s[(n[o+976>>2]|0)+2>>0]|0,!(u<<24>>24)&&(A=y(h[o+40>>2]),A>24?y(1):y(0)}}else l=y(0);while(!1);return y(l)}function by(o){o=o|0;var l=0,u=0;if(eE(o+400|0,0,540)|0,s[o+985>>0]=1,te(o),u=Mi(o)|0,u|0){l=o+948|0,o=0;do by(n[(n[l>>2]|0)+(o<<2)>>2]|0),o=o+1|0;while((o|0)!=(u|0))}}function lb(o,l,u,A,d,m,B,k,R,M){o=o|0,l=l|0,u=y(u),A=A|0,d=y(d),m=y(m),B=y(B),k=k|0,R=R|0,M=M|0;var L=0,q=$e,ae=0,Ye=0,Le=$e,Qe=$e,tt=0,Xe=$e,ct=0,He=$e,We=0,Lt=0,Gr=0,fr=0,$t=0,Rr=0,Hr=0,cr=0,Hn=0,Ro=0;Hn=I,I=I+16|0,Gr=Hn+12|0,fr=Hn+8|0,$t=Hn+4|0,Rr=Hn,cr=dr(n[o+4>>2]|0,R)|0,We=de(cr)|0,q=y(Xr(WL(l)|0,We?m:B)),Lt=io(l,2,m)|0,Hr=io(l,0,B)|0;do if(!(Mt(q)|0)&&!(Mt(We?u:d)|0)){if(L=l+504|0,!(Mt(y(h[L>>2]))|0)&&(!(s2(n[l+976>>2]|0,0)|0)||(n[l+500>>2]|0)==(n[2278]|0)))break;h[L>>2]=y($n(q,y(Va(l,cr,m))))}else ae=7;while(!1);do if((ae|0)==7){if(ct=We^1,!(ct|Lt^1)){B=y(Xr(n[l+992>>2]|0,m)),h[l+504>>2]=y($n(B,y(Va(l,2,m))));break}if(!(We|Hr^1)){B=y(Xr(n[l+996>>2]|0,B)),h[l+504>>2]=y($n(B,y(Va(l,0,m))));break}h[Gr>>2]=y(le),h[fr>>2]=y(le),n[$t>>2]=0,n[Rr>>2]=0,Xe=y(yn(l,2,m)),He=y(yn(l,0,m)),Lt?(Le=y(Xe+y(Xr(n[l+992>>2]|0,m))),h[Gr>>2]=Le,n[$t>>2]=1,Ye=1):(Ye=0,Le=y(le)),Hr?(q=y(He+y(Xr(n[l+996>>2]|0,B))),h[fr>>2]=q,n[Rr>>2]=1,L=1):(L=0,q=y(le)),ae=n[o+32>>2]|0,We&(ae|0)==2?ae=2:Mt(Le)|0&&!(Mt(u)|0)&&(h[Gr>>2]=u,n[$t>>2]=2,Ye=2,Le=u),!((ae|0)==2&ct)&&Mt(q)|0&&!(Mt(d)|0)&&(h[fr>>2]=d,n[Rr>>2]=2,L=2,q=d),Qe=y(h[l+396>>2]),tt=Mt(Qe)|0;do if(tt)ae=Ye;else{if((Ye|0)==1&ct){h[fr>>2]=y(y(Le-Xe)/Qe),n[Rr>>2]=1,L=1,ae=1;break}We&(L|0)==1?(h[Gr>>2]=y(Qe*y(q-He)),n[$t>>2]=1,L=1,ae=1):ae=Ye}while(!1);Ro=Mt(u)|0,Ye=(ss(o,l)|0)!=4,!(We|Lt|((A|0)!=1|Ro)|(Ye|(ae|0)==1))&&(h[Gr>>2]=u,n[$t>>2]=1,!tt)&&(h[fr>>2]=y(y(u-Xe)/Qe),n[Rr>>2]=1,L=1),!(Hr|ct|((k|0)!=1|(Mt(d)|0))|(Ye|(L|0)==1))&&(h[fr>>2]=d,n[Rr>>2]=1,!tt)&&(h[Gr>>2]=y(Qe*y(d-He)),n[$t>>2]=1),Cu(l,2,m,m,$t,Gr),Cu(l,0,B,m,Rr,fr),u=y(h[Gr>>2]),d=y(h[fr>>2]),xl(l,u,d,R,n[$t>>2]|0,n[Rr>>2]|0,m,B,0,3565,M)|0,B=y(h[l+908+(n[976+(cr<<2)>>2]<<2)>>2]),h[l+504>>2]=y($n(B,y(Va(l,cr,m))))}while(!1);n[l+500>>2]=n[2278],I=Hn}function qn(o,l,u,A,d){return o=o|0,l=l|0,u=y(u),A=y(A),d=y(d),A=y(Vg(o,l,u,A)),y($n(A,y(Va(o,l,d))))}function ss(o,l){return o=o|0,l=l|0,l=l+20|0,l=n[(n[l>>2]|0?l:o+16|0)>>2]|0,(l|0)==5&&Jg(n[o+4>>2]|0)|0&&(l=1),l|0}function kl(o,l){return o=o|0,l=l|0,de(l)|0&&n[o+96>>2]|0?l=4:l=n[1040+(l<<2)>>2]|0,o+60+(l<<3)|0}function Ql(o,l){return o=o|0,l=l|0,de(l)|0&&n[o+104>>2]|0?l=5:l=n[1e3+(l<<2)>>2]|0,o+60+(l<<3)|0}function Cu(o,l,u,A,d,m){switch(o=o|0,l=l|0,u=y(u),A=y(A),d=d|0,m=m|0,u=y(Xr(o+380+(n[976+(l<<2)>>2]<<3)|0,u)),u=y(u+y(yn(o,l,A))),n[d>>2]|0){case 2:case 1:{d=Mt(u)|0,A=y(h[m>>2]),h[m>>2]=d|A>2]=2,h[m>>2]=u);break}default:}}function ha(o,l){return o=o|0,l=l|0,o=o+132|0,de(l)|0&&n[(kn(o,4,948)|0)+4>>2]|0?o=1:o=(n[(kn(o,n[1040+(l<<2)>>2]|0,948)|0)+4>>2]|0)!=0,o|0}function zA(o,l,u){o=o|0,l=l|0,u=y(u);var A=0,d=0;return o=o+132|0,de(l)|0&&(A=kn(o,4,948)|0,(n[A+4>>2]|0)!=0)?d=4:(A=kn(o,n[1040+(l<<2)>>2]|0,948)|0,n[A+4>>2]|0?d=4:u=y(0)),(d|0)==4&&(u=y(Xr(A,u))),y(u)}function ZA(o,l,u){o=o|0,l=l|0,u=y(u);var A=$e;return A=y(h[o+908+(n[976+(l<<2)>>2]<<2)>>2]),A=y(A+y(K(o,l,u))),y(A+y(re(o,l,u)))}function HL(o){o=o|0;var l=0,u=0,A=0;e:do if(Jg(n[o+4>>2]|0)|0)l=0;else if((n[o+16>>2]|0)!=5)if(u=Mi(o)|0,!u)l=0;else for(l=0;;){if(A=Is(o,l)|0,!(n[A+24>>2]|0)&&(n[A+20>>2]|0)==5){l=1;break e}if(l=l+1|0,l>>>0>=u>>>0){l=0;break}}else l=1;while(!1);return l|0}function jL(o,l){o=o|0,l=l|0;var u=$e;return u=y(h[o+908+(n[976+(l<<2)>>2]<<2)>>2]),u>=y(0)&((Mt(u)|0)^1)|0}function Yg(o){o=o|0;var l=$e,u=0,A=0,d=0,m=0,B=0,k=0,R=$e;if(u=n[o+968>>2]|0,u)R=y(h[o+908>>2]),l=y(h[o+912>>2]),l=y(TX[u&0](o,R,l)),wi(o,(Mt(l)|0)^1,3573);else{m=Mi(o)|0;do if(m|0){for(u=0,d=0;;){if(A=Is(o,d)|0,n[A+940>>2]|0){B=8;break}if((n[A+24>>2]|0)!=1)if(k=(ss(o,A)|0)==5,k){u=A;break}else u=u|0?u:A;if(d=d+1|0,d>>>0>=m>>>0){B=8;break}}if((B|0)==8&&!u)break;return l=y(Yg(u)),y(l+y(h[u+404>>2]))}while(!1);l=y(h[o+912>>2])}return y(l)}function Vg(o,l,u,A){o=o|0,l=l|0,u=y(u),A=y(A);var d=$e,m=0;return Jg(l)|0?(l=1,m=3):de(l)|0?(l=0,m=3):(A=y(le),d=y(le)),(m|0)==3&&(d=y(Xr(o+364+(l<<3)|0,A)),A=y(Xr(o+380+(l<<3)|0,A))),m=A=y(0)&((Mt(A)|0)^1)),u=m?A:u,m=d>=y(0)&((Mt(d)|0)^1)&u>2]|0,m)|0,Le=Py(tt,m)|0,Qe=de(tt)|0,q=y(yn(l,2,u)),ae=y(yn(l,0,u)),io(l,2,u)|0?k=y(q+y(Xr(n[l+992>>2]|0,u))):ha(l,2)|0&&xy(l,2)|0?(k=y(h[o+908>>2]),R=y(vr(o,2)),R=y(k-y(R+y(Un(o,2)))),k=y(zA(l,2,u)),k=y(qn(l,2,y(R-y(k+y(Rh(l,2,u)))),u,u))):k=y(le),io(l,0,d)|0?R=y(ae+y(Xr(n[l+996>>2]|0,d))):ha(l,0)|0&&xy(l,0)|0?(R=y(h[o+912>>2]),ct=y(vr(o,0)),ct=y(R-y(ct+y(Un(o,0)))),R=y(zA(l,0,d)),R=y(qn(l,0,y(ct-y(R+y(Rh(l,0,d)))),d,u))):R=y(le),M=Mt(k)|0,L=Mt(R)|0;do if(M^L&&(Ye=y(h[l+396>>2]),!(Mt(Ye)|0)))if(M){k=y(q+y(y(R-ae)*Ye));break}else{ct=y(ae+y(y(k-q)/Ye)),R=L?ct:R;break}while(!1);L=Mt(k)|0,M=Mt(R)|0,L|M&&(He=(L^1)&1,A=u>y(0)&((A|0)!=0&L),k=Qe?k:A?u:k,xl(l,k,R,m,Qe?He:A?2:He,L&(M^1)&1,k,R,0,3623,B)|0,k=y(h[l+908>>2]),k=y(k+y(yn(l,2,u))),R=y(h[l+912>>2]),R=y(R+y(yn(l,0,u)))),xl(l,k,R,m,1,1,k,R,1,3635,B)|0,xy(l,tt)|0&&!(ha(l,tt)|0)?(He=n[976+(tt<<2)>>2]|0,ct=y(h[o+908+(He<<2)>>2]),ct=y(ct-y(h[l+908+(He<<2)>>2])),ct=y(ct-y(Un(o,tt))),ct=y(ct-y(re(l,tt,u))),ct=y(ct-y(Rh(l,tt,Qe?u:d))),h[l+400+(n[1040+(tt<<2)>>2]<<2)>>2]=ct):Xe=21;do if((Xe|0)==21){if(!(ha(l,tt)|0)&&(n[o+8>>2]|0)==1){He=n[976+(tt<<2)>>2]|0,ct=y(h[o+908+(He<<2)>>2]),ct=y(y(ct-y(h[l+908+(He<<2)>>2]))*y(.5)),h[l+400+(n[1040+(tt<<2)>>2]<<2)>>2]=ct;break}!(ha(l,tt)|0)&&(n[o+8>>2]|0)==2&&(He=n[976+(tt<<2)>>2]|0,ct=y(h[o+908+(He<<2)>>2]),ct=y(ct-y(h[l+908+(He<<2)>>2])),h[l+400+(n[1040+(tt<<2)>>2]<<2)>>2]=ct)}while(!1);xy(l,Le)|0&&!(ha(l,Le)|0)?(He=n[976+(Le<<2)>>2]|0,ct=y(h[o+908+(He<<2)>>2]),ct=y(ct-y(h[l+908+(He<<2)>>2])),ct=y(ct-y(Un(o,Le))),ct=y(ct-y(re(l,Le,u))),ct=y(ct-y(Rh(l,Le,Qe?d:u))),h[l+400+(n[1040+(Le<<2)>>2]<<2)>>2]=ct):Xe=30;do if((Xe|0)==30&&!(ha(l,Le)|0)){if((ss(o,l)|0)==2){He=n[976+(Le<<2)>>2]|0,ct=y(h[o+908+(He<<2)>>2]),ct=y(y(ct-y(h[l+908+(He<<2)>>2]))*y(.5)),h[l+400+(n[1040+(Le<<2)>>2]<<2)>>2]=ct;break}He=(ss(o,l)|0)==3,He^(n[o+28>>2]|0)==2&&(He=n[976+(Le<<2)>>2]|0,ct=y(h[o+908+(He<<2)>>2]),ct=y(ct-y(h[l+908+(He<<2)>>2])),h[l+400+(n[1040+(Le<<2)>>2]<<2)>>2]=ct)}while(!1)}function i2(o,l,u){o=o|0,l=l|0,u=u|0;var A=$e,d=0;d=n[976+(u<<2)>>2]|0,A=y(h[l+908+(d<<2)>>2]),A=y(y(h[o+908+(d<<2)>>2])-A),A=y(A-y(h[l+400+(n[1040+(u<<2)>>2]<<2)>>2])),h[l+400+(n[1e3+(u<<2)>>2]<<2)>>2]=A}function Jg(o){return o=o|0,(o|1|0)==1|0}function WL(o){o=o|0;var l=$e;switch(n[o+56>>2]|0){case 0:case 3:{l=y(h[o+40>>2]),l>y(0)&((Mt(l)|0)^1)?o=s[(n[o+976>>2]|0)+2>>0]|0?1056:992:o=1056;break}default:o=o+52|0}return o|0}function s2(o,l){return o=o|0,l=l|0,(s[o+l>>0]|0)!=0|0}function xy(o,l){return o=o|0,l=l|0,o=o+132|0,de(l)|0&&n[(kn(o,5,948)|0)+4>>2]|0?o=1:o=(n[(kn(o,n[1e3+(l<<2)>>2]|0,948)|0)+4>>2]|0)!=0,o|0}function Rh(o,l,u){o=o|0,l=l|0,u=y(u);var A=0,d=0;return o=o+132|0,de(l)|0&&(A=kn(o,5,948)|0,(n[A+4>>2]|0)!=0)?d=4:(A=kn(o,n[1e3+(l<<2)>>2]|0,948)|0,n[A+4>>2]|0?d=4:u=y(0)),(d|0)==4&&(u=y(Xr(A,u))),y(u)}function ub(o,l,u){return o=o|0,l=l|0,u=y(u),ha(o,l)|0?u=y(zA(o,l,u)):u=y(-y(Rh(o,l,u))),y(u)}function fb(o){return o=y(o),h[S>>2]=o,n[S>>2]|0|0}function ky(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>1073741823)Nt();else{d=Kt(l<<2)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u<<2)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l<<2)}function Ab(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(0-(d>>2)<<2)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function Qy(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~((A+-4-l|0)>>>2)<<2)),o=n[o>>2]|0,o|0&&It(o)}function pb(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0;if(B=o+4|0,k=n[B>>2]|0,d=k-A|0,m=d>>2,o=l+(m<<2)|0,o>>>0>>0){A=k;do n[A>>2]=n[o>>2],o=o+4|0,A=(n[B>>2]|0)+4|0,n[B>>2]=A;while(o>>>0>>0)}m|0&&Q2(k+(0-m<<2)|0,l|0,d|0)|0}function hb(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,R=0;return k=l+4|0,R=n[k>>2]|0,d=n[o>>2]|0,B=u,m=B-d|0,A=R+(0-(m>>2)<<2)|0,n[k>>2]=A,(m|0)>0&&Qr(A|0,d|0,m|0)|0,d=o+4|0,m=l+8|0,A=(n[d>>2]|0)-B|0,(A|0)>0&&(Qr(n[m>>2]|0,u|0,A|0)|0,n[m>>2]=(n[m>>2]|0)+(A>>>2<<2)),B=n[o>>2]|0,n[o>>2]=n[k>>2],n[k>>2]=B,B=n[d>>2]|0,n[d>>2]=n[m>>2],n[m>>2]=B,B=o+8|0,u=l+12|0,o=n[B>>2]|0,n[B>>2]=n[u>>2],n[u>>2]=o,n[l>>2]=n[k>>2],R|0}function o2(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;if(B=n[l>>2]|0,m=n[u>>2]|0,(B|0)!=(m|0)){d=o+8|0,u=((m+-4-B|0)>>>2)+1|0,o=B,A=n[d>>2]|0;do n[A>>2]=n[o>>2],A=(n[d>>2]|0)+4|0,n[d>>2]=A,o=o+4|0;while((o|0)!=(m|0));n[l>>2]=B+(u<<2)}}function a2(){ua()}function gb(){var o=0;return o=Kt(4)|0,l2(o),o|0}function l2(o){o=o|0,n[o>>2]=Ac()|0}function db(o){o=o|0,o|0&&(Kg(o),It(o))}function Kg(o){o=o|0,st(n[o>>2]|0)}function YL(o,l,u){o=o|0,l=l|0,u=u|0,pc(n[o>>2]|0,l,u)}function Ry(o,l){o=o|0,l=y(l),Dh(n[o>>2]|0,l)}function Ty(o,l){return o=o|0,l=l|0,s2(n[o>>2]|0,l)|0}function Fy(){var o=0;return o=Kt(8)|0,zg(o,0),o|0}function zg(o,l){o=o|0,l=l|0,l?l=fa(n[l>>2]|0)|0:l=rs()|0,n[o>>2]=l,n[o+4>>2]=0,Rn(l,o)}function Ny(o){o=o|0;var l=0;return l=Kt(8)|0,zg(l,o),l|0}function Zg(o){o=o|0,o|0&&(Oy(o),It(o))}function Oy(o){o=o|0;var l=0;uc(n[o>>2]|0),l=o+4|0,o=n[l>>2]|0,n[l>>2]=0,o|0&&(Sf(o),It(o))}function Sf(o){o=o|0,Df(o)}function Df(o){o=o|0,o=n[o>>2]|0,o|0&&Na(o|0)}function c2(o){return o=o|0,Ga(o)|0}function u2(o){o=o|0;var l=0,u=0;u=o+4|0,l=n[u>>2]|0,n[u>>2]=0,l|0&&(Sf(l),It(l)),fc(n[o>>2]|0)}function Ly(o,l){o=o|0,l=l|0,An(n[o>>2]|0,n[l>>2]|0)}function VL(o,l){o=o|0,l=l|0,wh(n[o>>2]|0,l)}function JL(o,l,u){o=o|0,l=l|0,u=+u,Cy(n[o>>2]|0,l,y(u))}function My(o,l,u){o=o|0,l=l|0,u=+u,wy(n[o>>2]|0,l,y(u))}function f2(o,l){o=o|0,l=l|0,Eh(n[o>>2]|0,l)}function A2(o,l){o=o|0,l=l|0,So(n[o>>2]|0,l)}function xr(o,l){o=o|0,l=l|0,Ch(n[o>>2]|0,l)}function so(o,l){o=o|0,l=l|0,my(n[o>>2]|0,l)}function zi(o,l){o=o|0,l=l|0,Ng(n[o>>2]|0,l)}function Ns(o,l){o=o|0,l=l|0,vo(n[o>>2]|0,l)}function XA(o,l,u){o=o|0,l=l|0,u=+u,HA(n[o>>2]|0,l,y(u))}function p2(o,l,u){o=o|0,l=l|0,u=+u,Y(n[o>>2]|0,l,y(u))}function ws(o,l){o=o|0,l=l|0,jA(n[o>>2]|0,l)}function Uy(o,l){o=o|0,l=l|0,Ey(n[o>>2]|0,l)}function Th(o,l){o=o|0,l=l|0,Do(n[o>>2]|0,l)}function Xg(o,l){o=o|0,l=+l,Bh(n[o>>2]|0,y(l))}function Fh(o,l){o=o|0,l=+l,Pl(n[o>>2]|0,y(l))}function h2(o,l){o=o|0,l=+l,Iy(n[o>>2]|0,y(l))}function g2(o,l){o=o|0,l=+l,Lg(n[o>>2]|0,y(l))}function d2(o,l){o=o|0,l=+l,Dl(n[o>>2]|0,y(l))}function m2(o,l){o=o|0,l=+l,Mg(n[o>>2]|0,y(l))}function Pf(o,l){o=o|0,l=+l,e2(n[o>>2]|0,y(l))}function sr(o){o=o|0,vh(n[o>>2]|0)}function _y(o,l){o=o|0,l=+l,Ki(n[o>>2]|0,y(l))}function y2(o,l){o=o|0,l=+l,yf(n[o>>2]|0,y(l))}function hc(o){o=o|0,qa(n[o>>2]|0)}function bf(o,l){o=o|0,l=+l,du(n[o>>2]|0,y(l))}function $g(o,l){o=o|0,l=+l,Ef(n[o>>2]|0,y(l))}function ed(o,l){o=o|0,l=+l,di(n[o>>2]|0,y(l))}function E2(o,l){o=o|0,l=+l,GA(n[o>>2]|0,y(l))}function I2(o,l){o=o|0,l=+l,Aa(n[o>>2]|0,y(l))}function wu(o,l){o=o|0,l=+l,Ya(n[o>>2]|0,y(l))}function td(o,l){o=o|0,l=+l,Sh(n[o>>2]|0,y(l))}function C2(o,l){o=o|0,l=+l,Hg(n[o>>2]|0,y(l))}function Hy(o,l){o=o|0,l=+l,qA(n[o>>2]|0,y(l))}function Bu(o,l,u){o=o|0,l=l|0,u=+u,gu(n[o>>2]|0,l,y(u))}function jy(o,l,u){o=o|0,l=l|0,u=+u,Po(n[o>>2]|0,l,y(u))}function rd(o,l,u){o=o|0,l=l|0,u=+u,mf(n[o>>2]|0,l,y(u))}function nd(o){return o=o|0,Fg(n[o>>2]|0)|0}function ko(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0;A=I,I=I+16|0,d=A,_A(d,n[l>>2]|0,u),Bs(o,d),I=A}function Bs(o,l){o=o|0,l=l|0,Rl(o,n[l+4>>2]|0,+y(h[l>>2]))}function Rl(o,l,u){o=o|0,l=l|0,u=+u,n[o>>2]=l,E[o+8>>3]=u}function Gy(o){return o=o|0,$1(n[o>>2]|0)|0}function ga(o){return o=o|0,Ih(n[o>>2]|0)|0}function mb(o){return o=o|0,hu(n[o>>2]|0)|0}function Nh(o){return o=o|0,X1(n[o>>2]|0)|0}function w2(o){return o=o|0,Og(n[o>>2]|0)|0}function KL(o){return o=o|0,yy(n[o>>2]|0)|0}function yb(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0;A=I,I=I+16|0,d=A,xt(d,n[l>>2]|0,u),Bs(o,d),I=A}function Eb(o){return o=o|0,df(n[o>>2]|0)|0}function qy(o){return o=o|0,Sl(n[o>>2]|0)|0}function B2(o,l){o=o|0,l=l|0;var u=0,A=0;u=I,I=I+16|0,A=u,UA(A,n[l>>2]|0),Bs(o,A),I=u}function Oh(o){return o=o|0,+ +y(li(n[o>>2]|0))}function Ib(o){return o=o|0,+ +y(Gi(n[o>>2]|0))}function Cb(o,l){o=o|0,l=l|0;var u=0,A=0;u=I,I=I+16|0,A=u,ur(A,n[l>>2]|0),Bs(o,A),I=u}function id(o,l){o=o|0,l=l|0;var u=0,A=0;u=I,I=I+16|0,A=u,Ug(A,n[l>>2]|0),Bs(o,A),I=u}function zL(o,l){o=o|0,l=l|0;var u=0,A=0;u=I,I=I+16|0,A=u,wt(A,n[l>>2]|0),Bs(o,A),I=u}function ZL(o,l){o=o|0,l=l|0;var u=0,A=0;u=I,I=I+16|0,A=u,Wa(A,n[l>>2]|0),Bs(o,A),I=u}function wb(o,l){o=o|0,l=l|0;var u=0,A=0;u=I,I=I+16|0,A=u,_g(A,n[l>>2]|0),Bs(o,A),I=u}function Bb(o,l){o=o|0,l=l|0;var u=0,A=0;u=I,I=I+16|0,A=u,vy(A,n[l>>2]|0),Bs(o,A),I=u}function $A(o){return o=o|0,+ +y(jg(n[o>>2]|0))}function XL(o,l){return o=o|0,l=l|0,+ +y(By(n[o>>2]|0,l))}function $L(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0;A=I,I=I+16|0,d=A,yt(d,n[l>>2]|0,u),Bs(o,d),I=A}function vu(o,l,u){o=o|0,l=l|0,u=u|0,lr(n[o>>2]|0,n[l>>2]|0,u)}function eM(o,l){o=o|0,l=l|0,gf(n[o>>2]|0,n[l>>2]|0)}function vb(o){return o=o|0,Mi(n[o>>2]|0)|0}function tM(o){return o=o|0,o=Et(n[o>>2]|0)|0,o?o=c2(o)|0:o=0,o|0}function Sb(o,l){return o=o|0,l=l|0,o=Is(n[o>>2]|0,l)|0,o?o=c2(o)|0:o=0,o|0}function xf(o,l){o=o|0,l=l|0;var u=0,A=0;A=Kt(4)|0,Db(A,l),u=o+4|0,l=n[u>>2]|0,n[u>>2]=A,l|0&&(Sf(l),It(l)),St(n[o>>2]|0,1)}function Db(o,l){o=o|0,l=l|0,sM(o,l)}function rM(o,l,u,A,d,m){o=o|0,l=l|0,u=y(u),A=A|0,d=y(d),m=m|0;var B=0,k=0;B=I,I=I+16|0,k=B,Pb(k,Ga(l)|0,+u,A,+d,m),h[o>>2]=y(+E[k>>3]),h[o+4>>2]=y(+E[k+8>>3]),I=B}function Pb(o,l,u,A,d,m){o=o|0,l=l|0,u=+u,A=A|0,d=+d,m=m|0;var B=0,k=0,R=0,M=0,L=0;B=I,I=I+32|0,L=B+8|0,M=B+20|0,R=B,k=B+16|0,E[L>>3]=u,n[M>>2]=A,E[R>>3]=d,n[k>>2]=m,Wy(o,n[l+4>>2]|0,L,M,R,k),I=B}function Wy(o,l,u,A,d,m){o=o|0,l=l|0,u=u|0,A=A|0,d=d|0,m=m|0;var B=0,k=0;B=I,I=I+16|0,k=B,Fl(k),l=Os(l)|0,bb(o,l,+E[u>>3],n[A>>2]|0,+E[d>>3],n[m>>2]|0),Nl(k),I=B}function Os(o){return o=o|0,n[o>>2]|0}function bb(o,l,u,A,d,m){o=o|0,l=l|0,u=+u,A=A|0,d=+d,m=m|0;var B=0;B=da(v2()|0)|0,u=+Ja(u),A=Yy(A)|0,d=+Ja(d),nM(o,Kn(0,B|0,l|0,+u,A|0,+d,Yy(m)|0)|0)}function v2(){var o=0;return s[7608]|0||(D2(9120),o=7608,n[o>>2]=1,n[o+4>>2]=0),9120}function da(o){return o=o|0,n[o+8>>2]|0}function Ja(o){return o=+o,+ +kf(o)}function Yy(o){return o=o|0,sd(o)|0}function nM(o,l){o=o|0,l=l|0;var u=0,A=0,d=0;d=I,I=I+32|0,u=d,A=l,A&1?(Ka(u,0),Me(A|0,u|0)|0,S2(o,u),iM(u)):(n[o>>2]=n[l>>2],n[o+4>>2]=n[l+4>>2],n[o+8>>2]=n[l+8>>2],n[o+12>>2]=n[l+12>>2]),I=d}function Ka(o,l){o=o|0,l=l|0,Su(o,l),n[o+8>>2]=0,s[o+24>>0]=0}function S2(o,l){o=o|0,l=l|0,l=l+8|0,n[o>>2]=n[l>>2],n[o+4>>2]=n[l+4>>2],n[o+8>>2]=n[l+8>>2],n[o+12>>2]=n[l+12>>2]}function iM(o){o=o|0,s[o+24>>0]=0}function Su(o,l){o=o|0,l=l|0,n[o>>2]=l}function sd(o){return o=o|0,o|0}function kf(o){return o=+o,+o}function D2(o){o=o|0,Qo(o,P2()|0,4)}function P2(){return 1064}function Qo(o,l,u){o=o|0,l=l|0,u=u|0,n[o>>2]=l,n[o+4>>2]=u,n[o+8>>2]=ji(l|0,u+1|0)|0}function sM(o,l){o=o|0,l=l|0,l=n[l>>2]|0,n[o>>2]=l,au(l|0)}function xb(o){o=o|0;var l=0,u=0;u=o+4|0,l=n[u>>2]|0,n[u>>2]=0,l|0&&(Sf(l),It(l)),St(n[o>>2]|0,0)}function kb(o){o=o|0,Pt(n[o>>2]|0)}function Vy(o){return o=o|0,tr(n[o>>2]|0)|0}function oM(o,l,u,A){o=o|0,l=+l,u=+u,A=A|0,YA(n[o>>2]|0,y(l),y(u),A)}function aM(o){return o=o|0,+ +y(mu(n[o>>2]|0))}function v(o){return o=o|0,+ +y(If(n[o>>2]|0))}function D(o){return o=o|0,+ +y(yu(n[o>>2]|0))}function Q(o){return o=o|0,+ +y(Ts(n[o>>2]|0))}function H(o){return o=o|0,+ +y(Eu(n[o>>2]|0))}function V(o){return o=o|0,+ +y(Gn(n[o>>2]|0))}function ne(o,l){o=o|0,l=l|0,E[o>>3]=+y(mu(n[l>>2]|0)),E[o+8>>3]=+y(If(n[l>>2]|0)),E[o+16>>3]=+y(yu(n[l>>2]|0)),E[o+24>>3]=+y(Ts(n[l>>2]|0)),E[o+32>>3]=+y(Eu(n[l>>2]|0)),E[o+40>>3]=+y(Gn(n[l>>2]|0))}function Se(o,l){return o=o|0,l=l|0,+ +y(ns(n[o>>2]|0,l))}function _e(o,l){return o=o|0,l=l|0,+ +y(bi(n[o>>2]|0,l))}function pt(o,l){return o=o|0,l=l|0,+ +y(WA(n[o>>2]|0,l))}function Wt(){return Qn()|0}function Sr(){Lr(),Xt(),zn(),yi(),za(),et()}function Lr(){u4e(11713,4938,1)}function Xt(){x_e(10448)}function zn(){u_e(10408)}function yi(){TUe(10324)}function za(){HLe(10096)}function et(){qe(9132)}function qe(o){o=o|0;var l=0,u=0,A=0,d=0,m=0,B=0,k=0,R=0,M=0,L=0,q=0,ae=0,Ye=0,Le=0,Qe=0,tt=0,Xe=0,ct=0,He=0,We=0,Lt=0,Gr=0,fr=0,$t=0,Rr=0,Hr=0,cr=0,Hn=0,Ro=0,To=0,Fo=0,Xa=0,Wh=0,Yh=0,gc=0,Vh=0,Tf=0,Ff=0,Jh=0,Kh=0,zh=0,on=0,dc=0,Zh=0,bu=0,Xh=0,$h=0,Nf=0,Of=0,xu=0,oo=0,Ll=0,ma=0,mc=0,op=0,ap=0,Lf=0,lp=0,cp=0,ao=0,Ms=0,yc=0,Wn=0,up=0,No=0,ku=0,Oo=0,Qu=0,fp=0,Ap=0,Ru=0,lo=0,Ec=0,pp=0,hp=0,gp=0,Nr=0,ui=0,Us=0,Lo=0,co=0,Mr=0,Ar=0,Ic=0;l=I,I=I+672|0,u=l+656|0,Ic=l+648|0,Ar=l+640|0,Mr=l+632|0,co=l+624|0,Lo=l+616|0,Us=l+608|0,ui=l+600|0,Nr=l+592|0,gp=l+584|0,hp=l+576|0,pp=l+568|0,Ec=l+560|0,lo=l+552|0,Ru=l+544|0,Ap=l+536|0,fp=l+528|0,Qu=l+520|0,Oo=l+512|0,ku=l+504|0,No=l+496|0,up=l+488|0,Wn=l+480|0,yc=l+472|0,Ms=l+464|0,ao=l+456|0,cp=l+448|0,lp=l+440|0,Lf=l+432|0,ap=l+424|0,op=l+416|0,mc=l+408|0,ma=l+400|0,Ll=l+392|0,oo=l+384|0,xu=l+376|0,Of=l+368|0,Nf=l+360|0,$h=l+352|0,Xh=l+344|0,bu=l+336|0,Zh=l+328|0,dc=l+320|0,on=l+312|0,zh=l+304|0,Kh=l+296|0,Jh=l+288|0,Ff=l+280|0,Tf=l+272|0,Vh=l+264|0,gc=l+256|0,Yh=l+248|0,Wh=l+240|0,Xa=l+232|0,Fo=l+224|0,To=l+216|0,Ro=l+208|0,Hn=l+200|0,cr=l+192|0,Hr=l+184|0,Rr=l+176|0,$t=l+168|0,fr=l+160|0,Gr=l+152|0,Lt=l+144|0,We=l+136|0,He=l+128|0,ct=l+120|0,Xe=l+112|0,tt=l+104|0,Qe=l+96|0,Le=l+88|0,Ye=l+80|0,ae=l+72|0,q=l+64|0,L=l+56|0,M=l+48|0,R=l+40|0,k=l+32|0,B=l+24|0,m=l+16|0,d=l+8|0,A=l,gt(o,3646),Zt(o,3651,2)|0,Dr(o,3665,2)|0,Xn(o,3682,18)|0,n[Ic>>2]=19,n[Ic+4>>2]=0,n[u>>2]=n[Ic>>2],n[u+4>>2]=n[Ic+4>>2],kr(o,3690,u)|0,n[Ar>>2]=1,n[Ar+4>>2]=0,n[u>>2]=n[Ar>>2],n[u+4>>2]=n[Ar+4>>2],Tn(o,3696,u)|0,n[Mr>>2]=2,n[Mr+4>>2]=0,n[u>>2]=n[Mr>>2],n[u+4>>2]=n[Mr+4>>2],_n(o,3706,u)|0,n[co>>2]=1,n[co+4>>2]=0,n[u>>2]=n[co>>2],n[u+4>>2]=n[co+4>>2],zr(o,3722,u)|0,n[Lo>>2]=2,n[Lo+4>>2]=0,n[u>>2]=n[Lo>>2],n[u+4>>2]=n[Lo+4>>2],zr(o,3734,u)|0,n[Us>>2]=3,n[Us+4>>2]=0,n[u>>2]=n[Us>>2],n[u+4>>2]=n[Us+4>>2],_n(o,3753,u)|0,n[ui>>2]=4,n[ui+4>>2]=0,n[u>>2]=n[ui>>2],n[u+4>>2]=n[ui+4>>2],_n(o,3769,u)|0,n[Nr>>2]=5,n[Nr+4>>2]=0,n[u>>2]=n[Nr>>2],n[u+4>>2]=n[Nr+4>>2],_n(o,3783,u)|0,n[gp>>2]=6,n[gp+4>>2]=0,n[u>>2]=n[gp>>2],n[u+4>>2]=n[gp+4>>2],_n(o,3796,u)|0,n[hp>>2]=7,n[hp+4>>2]=0,n[u>>2]=n[hp>>2],n[u+4>>2]=n[hp+4>>2],_n(o,3813,u)|0,n[pp>>2]=8,n[pp+4>>2]=0,n[u>>2]=n[pp>>2],n[u+4>>2]=n[pp+4>>2],_n(o,3825,u)|0,n[Ec>>2]=3,n[Ec+4>>2]=0,n[u>>2]=n[Ec>>2],n[u+4>>2]=n[Ec+4>>2],zr(o,3843,u)|0,n[lo>>2]=4,n[lo+4>>2]=0,n[u>>2]=n[lo>>2],n[u+4>>2]=n[lo+4>>2],zr(o,3853,u)|0,n[Ru>>2]=9,n[Ru+4>>2]=0,n[u>>2]=n[Ru>>2],n[u+4>>2]=n[Ru+4>>2],_n(o,3870,u)|0,n[Ap>>2]=10,n[Ap+4>>2]=0,n[u>>2]=n[Ap>>2],n[u+4>>2]=n[Ap+4>>2],_n(o,3884,u)|0,n[fp>>2]=11,n[fp+4>>2]=0,n[u>>2]=n[fp>>2],n[u+4>>2]=n[fp+4>>2],_n(o,3896,u)|0,n[Qu>>2]=1,n[Qu+4>>2]=0,n[u>>2]=n[Qu>>2],n[u+4>>2]=n[Qu+4>>2],ci(o,3907,u)|0,n[Oo>>2]=2,n[Oo+4>>2]=0,n[u>>2]=n[Oo>>2],n[u+4>>2]=n[Oo+4>>2],ci(o,3915,u)|0,n[ku>>2]=3,n[ku+4>>2]=0,n[u>>2]=n[ku>>2],n[u+4>>2]=n[ku+4>>2],ci(o,3928,u)|0,n[No>>2]=4,n[No+4>>2]=0,n[u>>2]=n[No>>2],n[u+4>>2]=n[No+4>>2],ci(o,3948,u)|0,n[up>>2]=5,n[up+4>>2]=0,n[u>>2]=n[up>>2],n[u+4>>2]=n[up+4>>2],ci(o,3960,u)|0,n[Wn>>2]=6,n[Wn+4>>2]=0,n[u>>2]=n[Wn>>2],n[u+4>>2]=n[Wn+4>>2],ci(o,3974,u)|0,n[yc>>2]=7,n[yc+4>>2]=0,n[u>>2]=n[yc>>2],n[u+4>>2]=n[yc+4>>2],ci(o,3983,u)|0,n[Ms>>2]=20,n[Ms+4>>2]=0,n[u>>2]=n[Ms>>2],n[u+4>>2]=n[Ms+4>>2],kr(o,3999,u)|0,n[ao>>2]=8,n[ao+4>>2]=0,n[u>>2]=n[ao>>2],n[u+4>>2]=n[ao+4>>2],ci(o,4012,u)|0,n[cp>>2]=9,n[cp+4>>2]=0,n[u>>2]=n[cp>>2],n[u+4>>2]=n[cp+4>>2],ci(o,4022,u)|0,n[lp>>2]=21,n[lp+4>>2]=0,n[u>>2]=n[lp>>2],n[u+4>>2]=n[lp+4>>2],kr(o,4039,u)|0,n[Lf>>2]=10,n[Lf+4>>2]=0,n[u>>2]=n[Lf>>2],n[u+4>>2]=n[Lf+4>>2],ci(o,4053,u)|0,n[ap>>2]=11,n[ap+4>>2]=0,n[u>>2]=n[ap>>2],n[u+4>>2]=n[ap+4>>2],ci(o,4065,u)|0,n[op>>2]=12,n[op+4>>2]=0,n[u>>2]=n[op>>2],n[u+4>>2]=n[op+4>>2],ci(o,4084,u)|0,n[mc>>2]=13,n[mc+4>>2]=0,n[u>>2]=n[mc>>2],n[u+4>>2]=n[mc+4>>2],ci(o,4097,u)|0,n[ma>>2]=14,n[ma+4>>2]=0,n[u>>2]=n[ma>>2],n[u+4>>2]=n[ma+4>>2],ci(o,4117,u)|0,n[Ll>>2]=15,n[Ll+4>>2]=0,n[u>>2]=n[Ll>>2],n[u+4>>2]=n[Ll+4>>2],ci(o,4129,u)|0,n[oo>>2]=16,n[oo+4>>2]=0,n[u>>2]=n[oo>>2],n[u+4>>2]=n[oo+4>>2],ci(o,4148,u)|0,n[xu>>2]=17,n[xu+4>>2]=0,n[u>>2]=n[xu>>2],n[u+4>>2]=n[xu+4>>2],ci(o,4161,u)|0,n[Of>>2]=18,n[Of+4>>2]=0,n[u>>2]=n[Of>>2],n[u+4>>2]=n[Of+4>>2],ci(o,4181,u)|0,n[Nf>>2]=5,n[Nf+4>>2]=0,n[u>>2]=n[Nf>>2],n[u+4>>2]=n[Nf+4>>2],zr(o,4196,u)|0,n[$h>>2]=6,n[$h+4>>2]=0,n[u>>2]=n[$h>>2],n[u+4>>2]=n[$h+4>>2],zr(o,4206,u)|0,n[Xh>>2]=7,n[Xh+4>>2]=0,n[u>>2]=n[Xh>>2],n[u+4>>2]=n[Xh+4>>2],zr(o,4217,u)|0,n[bu>>2]=3,n[bu+4>>2]=0,n[u>>2]=n[bu>>2],n[u+4>>2]=n[bu+4>>2],Du(o,4235,u)|0,n[Zh>>2]=1,n[Zh+4>>2]=0,n[u>>2]=n[Zh>>2],n[u+4>>2]=n[Zh+4>>2],lM(o,4251,u)|0,n[dc>>2]=4,n[dc+4>>2]=0,n[u>>2]=n[dc>>2],n[u+4>>2]=n[dc+4>>2],Du(o,4263,u)|0,n[on>>2]=5,n[on+4>>2]=0,n[u>>2]=n[on>>2],n[u+4>>2]=n[on+4>>2],Du(o,4279,u)|0,n[zh>>2]=6,n[zh+4>>2]=0,n[u>>2]=n[zh>>2],n[u+4>>2]=n[zh+4>>2],Du(o,4293,u)|0,n[Kh>>2]=7,n[Kh+4>>2]=0,n[u>>2]=n[Kh>>2],n[u+4>>2]=n[Kh+4>>2],Du(o,4306,u)|0,n[Jh>>2]=8,n[Jh+4>>2]=0,n[u>>2]=n[Jh>>2],n[u+4>>2]=n[Jh+4>>2],Du(o,4323,u)|0,n[Ff>>2]=9,n[Ff+4>>2]=0,n[u>>2]=n[Ff>>2],n[u+4>>2]=n[Ff+4>>2],Du(o,4335,u)|0,n[Tf>>2]=2,n[Tf+4>>2]=0,n[u>>2]=n[Tf>>2],n[u+4>>2]=n[Tf+4>>2],lM(o,4353,u)|0,n[Vh>>2]=12,n[Vh+4>>2]=0,n[u>>2]=n[Vh>>2],n[u+4>>2]=n[Vh+4>>2],od(o,4363,u)|0,n[gc>>2]=1,n[gc+4>>2]=0,n[u>>2]=n[gc>>2],n[u+4>>2]=n[gc+4>>2],ep(o,4376,u)|0,n[Yh>>2]=2,n[Yh+4>>2]=0,n[u>>2]=n[Yh>>2],n[u+4>>2]=n[Yh+4>>2],ep(o,4388,u)|0,n[Wh>>2]=13,n[Wh+4>>2]=0,n[u>>2]=n[Wh>>2],n[u+4>>2]=n[Wh+4>>2],od(o,4402,u)|0,n[Xa>>2]=14,n[Xa+4>>2]=0,n[u>>2]=n[Xa>>2],n[u+4>>2]=n[Xa+4>>2],od(o,4411,u)|0,n[Fo>>2]=15,n[Fo+4>>2]=0,n[u>>2]=n[Fo>>2],n[u+4>>2]=n[Fo+4>>2],od(o,4421,u)|0,n[To>>2]=16,n[To+4>>2]=0,n[u>>2]=n[To>>2],n[u+4>>2]=n[To+4>>2],od(o,4433,u)|0,n[Ro>>2]=17,n[Ro+4>>2]=0,n[u>>2]=n[Ro>>2],n[u+4>>2]=n[Ro+4>>2],od(o,4446,u)|0,n[Hn>>2]=18,n[Hn+4>>2]=0,n[u>>2]=n[Hn>>2],n[u+4>>2]=n[Hn+4>>2],od(o,4458,u)|0,n[cr>>2]=3,n[cr+4>>2]=0,n[u>>2]=n[cr>>2],n[u+4>>2]=n[cr+4>>2],ep(o,4471,u)|0,n[Hr>>2]=1,n[Hr+4>>2]=0,n[u>>2]=n[Hr>>2],n[u+4>>2]=n[Hr+4>>2],Qb(o,4486,u)|0,n[Rr>>2]=10,n[Rr+4>>2]=0,n[u>>2]=n[Rr>>2],n[u+4>>2]=n[Rr+4>>2],Du(o,4496,u)|0,n[$t>>2]=11,n[$t+4>>2]=0,n[u>>2]=n[$t>>2],n[u+4>>2]=n[$t+4>>2],Du(o,4508,u)|0,n[fr>>2]=3,n[fr+4>>2]=0,n[u>>2]=n[fr>>2],n[u+4>>2]=n[fr+4>>2],lM(o,4519,u)|0,n[Gr>>2]=4,n[Gr+4>>2]=0,n[u>>2]=n[Gr>>2],n[u+4>>2]=n[Gr+4>>2],yke(o,4530,u)|0,n[Lt>>2]=19,n[Lt+4>>2]=0,n[u>>2]=n[Lt>>2],n[u+4>>2]=n[Lt+4>>2],Eke(o,4542,u)|0,n[We>>2]=12,n[We+4>>2]=0,n[u>>2]=n[We>>2],n[u+4>>2]=n[We+4>>2],Ike(o,4554,u)|0,n[He>>2]=13,n[He+4>>2]=0,n[u>>2]=n[He>>2],n[u+4>>2]=n[He+4>>2],Cke(o,4568,u)|0,n[ct>>2]=2,n[ct+4>>2]=0,n[u>>2]=n[ct>>2],n[u+4>>2]=n[ct+4>>2],wke(o,4578,u)|0,n[Xe>>2]=20,n[Xe+4>>2]=0,n[u>>2]=n[Xe>>2],n[u+4>>2]=n[Xe+4>>2],Bke(o,4587,u)|0,n[tt>>2]=22,n[tt+4>>2]=0,n[u>>2]=n[tt>>2],n[u+4>>2]=n[tt+4>>2],kr(o,4602,u)|0,n[Qe>>2]=23,n[Qe+4>>2]=0,n[u>>2]=n[Qe>>2],n[u+4>>2]=n[Qe+4>>2],kr(o,4619,u)|0,n[Le>>2]=14,n[Le+4>>2]=0,n[u>>2]=n[Le>>2],n[u+4>>2]=n[Le+4>>2],vke(o,4629,u)|0,n[Ye>>2]=1,n[Ye+4>>2]=0,n[u>>2]=n[Ye>>2],n[u+4>>2]=n[Ye+4>>2],Ske(o,4637,u)|0,n[ae>>2]=4,n[ae+4>>2]=0,n[u>>2]=n[ae>>2],n[u+4>>2]=n[ae+4>>2],ep(o,4653,u)|0,n[q>>2]=5,n[q+4>>2]=0,n[u>>2]=n[q>>2],n[u+4>>2]=n[q+4>>2],ep(o,4669,u)|0,n[L>>2]=6,n[L+4>>2]=0,n[u>>2]=n[L>>2],n[u+4>>2]=n[L+4>>2],ep(o,4686,u)|0,n[M>>2]=7,n[M+4>>2]=0,n[u>>2]=n[M>>2],n[u+4>>2]=n[M+4>>2],ep(o,4701,u)|0,n[R>>2]=8,n[R+4>>2]=0,n[u>>2]=n[R>>2],n[u+4>>2]=n[R+4>>2],ep(o,4719,u)|0,n[k>>2]=9,n[k+4>>2]=0,n[u>>2]=n[k>>2],n[u+4>>2]=n[k+4>>2],ep(o,4736,u)|0,n[B>>2]=21,n[B+4>>2]=0,n[u>>2]=n[B>>2],n[u+4>>2]=n[B+4>>2],Dke(o,4754,u)|0,n[m>>2]=2,n[m+4>>2]=0,n[u>>2]=n[m>>2],n[u+4>>2]=n[m+4>>2],Qb(o,4772,u)|0,n[d>>2]=3,n[d+4>>2]=0,n[u>>2]=n[d>>2],n[u+4>>2]=n[d+4>>2],Qb(o,4790,u)|0,n[A>>2]=4,n[A+4>>2]=0,n[u>>2]=n[A>>2],n[u+4>>2]=n[A+4>>2],Qb(o,4808,u)|0,I=l}function gt(o,l){o=o|0,l=l|0;var u=0;u=RLe()|0,n[o>>2]=u,TLe(u,l),jh(n[o>>2]|0)}function Zt(o,l,u){return o=o|0,l=l|0,u=u|0,yLe(o,Bn(l)|0,u,0),o|0}function Dr(o,l,u){return o=o|0,l=l|0,u=u|0,rLe(o,Bn(l)|0,u,0),o|0}function Xn(o,l,u){return o=o|0,l=l|0,u=u|0,jOe(o,Bn(l)|0,u,0),o|0}function kr(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;return A=I,I=I+16|0,d=A+8|0,m=A,B=n[u+4>>2]|0,n[m>>2]=n[u>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],DOe(o,l,d),I=A,o|0}function Tn(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;return A=I,I=I+16|0,d=A+8|0,m=A,B=n[u+4>>2]|0,n[m>>2]=n[u>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],aOe(o,l,d),I=A,o|0}function _n(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;return A=I,I=I+16|0,d=A+8|0,m=A,B=n[u+4>>2]|0,n[m>>2]=n[u>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],WNe(o,l,d),I=A,o|0}function zr(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;return A=I,I=I+16|0,d=A+8|0,m=A,B=n[u+4>>2]|0,n[m>>2]=n[u>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],xNe(o,l,d),I=A,o|0}function ci(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;return A=I,I=I+16|0,d=A+8|0,m=A,B=n[u+4>>2]|0,n[m>>2]=n[u>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],pNe(o,l,d),I=A,o|0}function Du(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;return A=I,I=I+16|0,d=A+8|0,m=A,B=n[u+4>>2]|0,n[m>>2]=n[u>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],ZFe(o,l,d),I=A,o|0}function lM(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;return A=I,I=I+16|0,d=A+8|0,m=A,B=n[u+4>>2]|0,n[m>>2]=n[u>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],NFe(o,l,d),I=A,o|0}function od(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;return A=I,I=I+16|0,d=A+8|0,m=A,B=n[u+4>>2]|0,n[m>>2]=n[u>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],aFe(o,l,d),I=A,o|0}function ep(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;return A=I,I=I+16|0,d=A+8|0,m=A,B=n[u+4>>2]|0,n[m>>2]=n[u>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],WTe(o,l,d),I=A,o|0}function Qb(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;return A=I,I=I+16|0,d=A+8|0,m=A,B=n[u+4>>2]|0,n[m>>2]=n[u>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],xTe(o,l,d),I=A,o|0}function yke(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;return A=I,I=I+16|0,d=A+8|0,m=A,B=n[u+4>>2]|0,n[m>>2]=n[u>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],pTe(o,l,d),I=A,o|0}function Eke(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;return A=I,I=I+16|0,d=A+8|0,m=A,B=n[u+4>>2]|0,n[m>>2]=n[u>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],ZRe(o,l,d),I=A,o|0}function Ike(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;return A=I,I=I+16|0,d=A+8|0,m=A,B=n[u+4>>2]|0,n[m>>2]=n[u>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],ORe(o,l,d),I=A,o|0}function Cke(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;return A=I,I=I+16|0,d=A+8|0,m=A,B=n[u+4>>2]|0,n[m>>2]=n[u>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],CRe(o,l,d),I=A,o|0}function wke(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;return A=I,I=I+16|0,d=A+8|0,m=A,B=n[u+4>>2]|0,n[m>>2]=n[u>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],iRe(o,l,d),I=A,o|0}function Bke(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;return A=I,I=I+16|0,d=A+8|0,m=A,B=n[u+4>>2]|0,n[m>>2]=n[u>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],HQe(o,l,d),I=A,o|0}function vke(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;return A=I,I=I+16|0,d=A+8|0,m=A,B=n[u+4>>2]|0,n[m>>2]=n[u>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],SQe(o,l,d),I=A,o|0}function Ske(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;return A=I,I=I+16|0,d=A+8|0,m=A,B=n[u+4>>2]|0,n[m>>2]=n[u>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],aQe(o,l,d),I=A,o|0}function Dke(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;return A=I,I=I+16|0,d=A+8|0,m=A,B=n[u+4>>2]|0,n[m>>2]=n[u>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],Pke(o,l,d),I=A,o|0}function Pke(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0;A=I,I=I+16|0,d=A+8|0,m=A,k=n[u>>2]|0,B=n[u+4>>2]|0,u=Bn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],bke(o,u,d,1),I=A}function Bn(o){return o=o|0,o|0}function bke(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0,R=0,M=0,L=0;d=I,I=I+32|0,m=d+16|0,L=d+8|0,k=d,M=n[u>>2]|0,R=n[u+4>>2]|0,B=n[o>>2]|0,o=cM()|0,n[L>>2]=M,n[L+4>>2]=R,n[m>>2]=n[L>>2],n[m+4>>2]=n[L+4>>2],u=xke(m)|0,n[k>>2]=M,n[k+4>>2]=R,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],vn(B,l,o,u,kke(m,A)|0,A),I=d}function cM(){var o=0,l=0;if(s[7616]|0||(pz(9136),gr(24,9136,U|0)|0,l=7616,n[l>>2]=1,n[l+4>>2]=0),!(_r(9136)|0)){o=9136,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));pz(9136)}return 9136}function xke(o){return o=o|0,0}function kke(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,R=0,M=0,L=0,q=0;return L=I,I=I+32|0,d=L+24|0,B=L+16|0,k=L,R=L+8|0,m=n[o>>2]|0,A=n[o+4>>2]|0,n[k>>2]=m,n[k+4>>2]=A,q=cM()|0,M=q+24|0,o=yr(l,4)|0,n[R>>2]=o,l=q+28|0,u=n[l>>2]|0,u>>>0<(n[q+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=A,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],Az(u,d,o),o=(n[l>>2]|0)+12|0,n[l>>2]=o):(Tke(M,k,R),o=n[l>>2]|0),I=L,((o-(n[M>>2]|0)|0)/12|0)+-1|0}function vn(o,l,u,A,d,m){o=o|0,l=l|0,u=u|0,A=A|0,d=d|0,m=m|0;var B=0,k=0,R=0,M=0,L=0,q=0,ae=0,Ye=0;B=I,I=I+32|0,ae=B+24|0,q=B+20|0,R=B+16|0,L=B+12|0,M=B+8|0,k=B+4|0,Ye=B,n[q>>2]=l,n[R>>2]=u,n[L>>2]=A,n[M>>2]=d,n[k>>2]=m,m=o+28|0,n[Ye>>2]=n[m>>2],n[ae>>2]=n[Ye>>2],Qke(o+24|0,ae,q,L,M,R,k)|0,n[m>>2]=n[n[m>>2]>>2],I=B}function Qke(o,l,u,A,d,m,B){return o=o|0,l=l|0,u=u|0,A=A|0,d=d|0,m=m|0,B=B|0,o=Rke(l)|0,l=Kt(24)|0,fz(l+4|0,n[u>>2]|0,n[A>>2]|0,n[d>>2]|0,n[m>>2]|0,n[B>>2]|0),n[l>>2]=n[o>>2],n[o>>2]=l,l|0}function Rke(o){return o=o|0,n[o>>2]|0}function fz(o,l,u,A,d,m){o=o|0,l=l|0,u=u|0,A=A|0,d=d|0,m=m|0,n[o>>2]=l,n[o+4>>2]=u,n[o+8>>2]=A,n[o+12>>2]=d,n[o+16>>2]=m}function yr(o,l){return o=o|0,l=l|0,l|o|0}function Az(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=n[l+4>>2]|0,n[o>>2]=n[l>>2],n[o+4>>2]=A,n[o+8>>2]=u}function Tke(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,R=0,M=0,L=0,q=0,ae=0;if(M=I,I=I+48|0,A=M+32|0,B=M+24|0,k=M,R=o+4|0,d=(((n[R>>2]|0)-(n[o>>2]|0)|0)/12|0)+1|0,m=Fke(o)|0,m>>>0>>0)sn(o);else{L=n[o>>2]|0,ae=((n[o+8>>2]|0)-L|0)/12|0,q=ae<<1,Nke(k,ae>>>0>>1>>>0?q>>>0>>0?d:q:m,((n[R>>2]|0)-L|0)/12|0,o+8|0),R=k+8|0,m=n[R>>2]|0,d=n[l+4>>2]|0,u=n[u>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[A>>2]=n[B>>2],n[A+4>>2]=n[B+4>>2],Az(m,A,u),n[R>>2]=(n[R>>2]|0)+12,Oke(o,k),Lke(k),I=M;return}}function Fke(o){return o=o|0,357913941}function Nke(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>357913941)Nt();else{d=Kt(l*12|0)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u*12|0)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l*12|0)}function Oke(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function Lke(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~(((A+-12-l|0)>>>0)/12|0)*12|0)),o=n[o>>2]|0,o|0&&It(o)}function pz(o){o=o|0,_ke(o)}function Mke(o){o=o|0,Uke(o+24|0)}function _r(o){return o=o|0,n[o>>2]|0}function Uke(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~(((l+-12-A|0)>>>0)/12|0)*12|0)),It(u))}function _ke(o){o=o|0;var l=0;l=en()|0,tn(o,2,3,l,Hke()|0,0),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function en(){return 9228}function Hke(){return 1140}function jke(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0;return u=I,I=I+16|0,A=u+8|0,d=u,m=Gke(o)|0,o=n[m+4>>2]|0,n[d>>2]=n[m>>2],n[d+4>>2]=o,n[A>>2]=n[d>>2],n[A+4>>2]=n[d+4>>2],l=qke(l,A)|0,I=u,l|0}function tn(o,l,u,A,d,m){o=o|0,l=l|0,u=u|0,A=A|0,d=d|0,m=m|0,n[o>>2]=l,n[o+4>>2]=u,n[o+8>>2]=A,n[o+12>>2]=d,n[o+16>>2]=m}function Gke(o){return o=o|0,(n[(cM()|0)+24>>2]|0)+(o*12|0)|0}function qke(o,l){o=o|0,l=l|0;var u=0,A=0,d=0;return d=I,I=I+48|0,A=d,u=n[l>>2]|0,l=n[l+4>>2]|0,o=o+(l>>1)|0,l&1&&(u=n[(n[o>>2]|0)+u>>2]|0),sp[u&31](A,o),A=Wke(A)|0,I=d,A|0}function Wke(o){o=o|0;var l=0,u=0,A=0,d=0;return d=I,I=I+32|0,l=d+12|0,u=d,A=uM(hz()|0)|0,A?(fM(l,A),AM(u,l),Yke(o,u),o=pM(l)|0):o=Vke(o)|0,I=d,o|0}function hz(){var o=0;return s[7632]|0||(nQe(9184),gr(25,9184,U|0)|0,o=7632,n[o>>2]=1,n[o+4>>2]=0),9184}function uM(o){return o=o|0,n[o+36>>2]|0}function fM(o,l){o=o|0,l=l|0,n[o>>2]=l,n[o+4>>2]=o,n[o+8>>2]=0}function AM(o,l){o=o|0,l=l|0,n[o>>2]=n[l>>2],n[o+4>>2]=n[l+4>>2],n[o+8>>2]=0}function Yke(o,l){o=o|0,l=l|0,Zke(l,o,o+8|0,o+16|0,o+24|0,o+32|0,o+40|0)|0}function pM(o){return o=o|0,n[(n[o+4>>2]|0)+8>>2]|0}function Vke(o){o=o|0;var l=0,u=0,A=0,d=0,m=0,B=0,k=0,R=0;R=I,I=I+16|0,u=R+4|0,A=R,d=Tl(8)|0,m=d,B=Kt(48)|0,k=B,l=k+48|0;do n[k>>2]=n[o>>2],k=k+4|0,o=o+4|0;while((k|0)<(l|0));return l=m+4|0,n[l>>2]=B,k=Kt(8)|0,B=n[l>>2]|0,n[A>>2]=0,n[u>>2]=n[A>>2],gz(k,B,u),n[d>>2]=k,I=R,m|0}function gz(o,l,u){o=o|0,l=l|0,u=u|0,n[o>>2]=l,u=Kt(16)|0,n[u+4>>2]=0,n[u+8>>2]=0,n[u>>2]=1092,n[u+12>>2]=l,n[o+4>>2]=u}function Jke(o){o=o|0,$y(o),It(o)}function Kke(o){o=o|0,o=n[o+12>>2]|0,o|0&&It(o)}function zke(o){o=o|0,It(o)}function Zke(o,l,u,A,d,m,B){return o=o|0,l=l|0,u=u|0,A=A|0,d=d|0,m=m|0,B=B|0,m=Xke(n[o>>2]|0,l,u,A,d,m,B)|0,B=o+4|0,n[(n[B>>2]|0)+8>>2]=m,n[(n[B>>2]|0)+8>>2]|0}function Xke(o,l,u,A,d,m,B){o=o|0,l=l|0,u=u|0,A=A|0,d=d|0,m=m|0,B=B|0;var k=0,R=0;return k=I,I=I+16|0,R=k,Fl(R),o=Os(o)|0,B=$ke(o,+E[l>>3],+E[u>>3],+E[A>>3],+E[d>>3],+E[m>>3],+E[B>>3])|0,Nl(R),I=k,B|0}function $ke(o,l,u,A,d,m,B){o=o|0,l=+l,u=+u,A=+A,d=+d,m=+m,B=+B;var k=0;return k=da(eQe()|0)|0,l=+Ja(l),u=+Ja(u),A=+Ja(A),d=+Ja(d),m=+Ja(m),ro(0,k|0,o|0,+l,+u,+A,+d,+m,+ +Ja(B))|0}function eQe(){var o=0;return s[7624]|0||(tQe(9172),o=7624,n[o>>2]=1,n[o+4>>2]=0),9172}function tQe(o){o=o|0,Qo(o,rQe()|0,6)}function rQe(){return 1112}function nQe(o){o=o|0,Lh(o)}function iQe(o){o=o|0,dz(o+24|0),mz(o+16|0)}function dz(o){o=o|0,oQe(o)}function mz(o){o=o|0,sQe(o)}function sQe(o){o=o|0;var l=0,u=0;if(l=n[o>>2]|0,l|0)do u=l,l=n[l>>2]|0,It(u);while(l|0);n[o>>2]=0}function oQe(o){o=o|0;var l=0,u=0;if(l=n[o>>2]|0,l|0)do u=l,l=n[l>>2]|0,It(u);while(l|0);n[o>>2]=0}function Lh(o){o=o|0;var l=0;n[o+16>>2]=0,n[o+20>>2]=0,l=o+24|0,n[l>>2]=0,n[o+28>>2]=l,n[o+36>>2]=0,s[o+40>>0]=0,s[o+41>>0]=0}function aQe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0;A=I,I=I+16|0,d=A+8|0,m=A,k=n[u>>2]|0,B=n[u+4>>2]|0,u=Bn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],lQe(o,u,d,0),I=A}function lQe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0,R=0,M=0,L=0;d=I,I=I+32|0,m=d+16|0,L=d+8|0,k=d,M=n[u>>2]|0,R=n[u+4>>2]|0,B=n[o>>2]|0,o=hM()|0,n[L>>2]=M,n[L+4>>2]=R,n[m>>2]=n[L>>2],n[m+4>>2]=n[L+4>>2],u=cQe(m)|0,n[k>>2]=M,n[k+4>>2]=R,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],vn(B,l,o,u,uQe(m,A)|0,A),I=d}function hM(){var o=0,l=0;if(s[7640]|0||(Ez(9232),gr(26,9232,U|0)|0,l=7640,n[l>>2]=1,n[l+4>>2]=0),!(_r(9232)|0)){o=9232,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));Ez(9232)}return 9232}function cQe(o){return o=o|0,0}function uQe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,R=0,M=0,L=0,q=0;return L=I,I=I+32|0,d=L+24|0,B=L+16|0,k=L,R=L+8|0,m=n[o>>2]|0,A=n[o+4>>2]|0,n[k>>2]=m,n[k+4>>2]=A,q=hM()|0,M=q+24|0,o=yr(l,4)|0,n[R>>2]=o,l=q+28|0,u=n[l>>2]|0,u>>>0<(n[q+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=A,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],yz(u,d,o),o=(n[l>>2]|0)+12|0,n[l>>2]=o):(fQe(M,k,R),o=n[l>>2]|0),I=L,((o-(n[M>>2]|0)|0)/12|0)+-1|0}function yz(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=n[l+4>>2]|0,n[o>>2]=n[l>>2],n[o+4>>2]=A,n[o+8>>2]=u}function fQe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,R=0,M=0,L=0,q=0,ae=0;if(M=I,I=I+48|0,A=M+32|0,B=M+24|0,k=M,R=o+4|0,d=(((n[R>>2]|0)-(n[o>>2]|0)|0)/12|0)+1|0,m=AQe(o)|0,m>>>0>>0)sn(o);else{L=n[o>>2]|0,ae=((n[o+8>>2]|0)-L|0)/12|0,q=ae<<1,pQe(k,ae>>>0>>1>>>0?q>>>0>>0?d:q:m,((n[R>>2]|0)-L|0)/12|0,o+8|0),R=k+8|0,m=n[R>>2]|0,d=n[l+4>>2]|0,u=n[u>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[A>>2]=n[B>>2],n[A+4>>2]=n[B+4>>2],yz(m,A,u),n[R>>2]=(n[R>>2]|0)+12,hQe(o,k),gQe(k),I=M;return}}function AQe(o){return o=o|0,357913941}function pQe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>357913941)Nt();else{d=Kt(l*12|0)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u*12|0)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l*12|0)}function hQe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function gQe(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~(((A+-12-l|0)>>>0)/12|0)*12|0)),o=n[o>>2]|0,o|0&&It(o)}function Ez(o){o=o|0,yQe(o)}function dQe(o){o=o|0,mQe(o+24|0)}function mQe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~(((l+-12-A|0)>>>0)/12|0)*12|0)),It(u))}function yQe(o){o=o|0;var l=0;l=en()|0,tn(o,2,1,l,EQe()|0,3),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function EQe(){return 1144}function IQe(o,l,u,A,d){o=o|0,l=l|0,u=+u,A=+A,d=d|0;var m=0,B=0,k=0,R=0;m=I,I=I+16|0,B=m+8|0,k=m,R=CQe(o)|0,o=n[R+4>>2]|0,n[k>>2]=n[R>>2],n[k+4>>2]=o,n[B>>2]=n[k>>2],n[B+4>>2]=n[k+4>>2],wQe(l,B,u,A,d),I=m}function CQe(o){return o=o|0,(n[(hM()|0)+24>>2]|0)+(o*12|0)|0}function wQe(o,l,u,A,d){o=o|0,l=l|0,u=+u,A=+A,d=d|0;var m=0,B=0,k=0,R=0,M=0;M=I,I=I+16|0,B=M+2|0,k=M+1|0,R=M,m=n[l>>2]|0,l=n[l+4>>2]|0,o=o+(l>>1)|0,l&1&&(m=n[(n[o>>2]|0)+m>>2]|0),Qf(B,u),u=+Rf(B,u),Qf(k,A),A=+Rf(k,A),tp(R,d),R=rp(R,d)|0,FX[m&1](o,u,A,R),I=M}function Qf(o,l){o=o|0,l=+l}function Rf(o,l){return o=o|0,l=+l,+ +vQe(l)}function tp(o,l){o=o|0,l=l|0}function rp(o,l){return o=o|0,l=l|0,BQe(l)|0}function BQe(o){return o=o|0,o|0}function vQe(o){return o=+o,+o}function SQe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0;A=I,I=I+16|0,d=A+8|0,m=A,k=n[u>>2]|0,B=n[u+4>>2]|0,u=Bn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],DQe(o,u,d,1),I=A}function DQe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0,R=0,M=0,L=0;d=I,I=I+32|0,m=d+16|0,L=d+8|0,k=d,M=n[u>>2]|0,R=n[u+4>>2]|0,B=n[o>>2]|0,o=gM()|0,n[L>>2]=M,n[L+4>>2]=R,n[m>>2]=n[L>>2],n[m+4>>2]=n[L+4>>2],u=PQe(m)|0,n[k>>2]=M,n[k+4>>2]=R,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],vn(B,l,o,u,bQe(m,A)|0,A),I=d}function gM(){var o=0,l=0;if(s[7648]|0||(Cz(9268),gr(27,9268,U|0)|0,l=7648,n[l>>2]=1,n[l+4>>2]=0),!(_r(9268)|0)){o=9268,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));Cz(9268)}return 9268}function PQe(o){return o=o|0,0}function bQe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,R=0,M=0,L=0,q=0;return L=I,I=I+32|0,d=L+24|0,B=L+16|0,k=L,R=L+8|0,m=n[o>>2]|0,A=n[o+4>>2]|0,n[k>>2]=m,n[k+4>>2]=A,q=gM()|0,M=q+24|0,o=yr(l,4)|0,n[R>>2]=o,l=q+28|0,u=n[l>>2]|0,u>>>0<(n[q+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=A,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],Iz(u,d,o),o=(n[l>>2]|0)+12|0,n[l>>2]=o):(xQe(M,k,R),o=n[l>>2]|0),I=L,((o-(n[M>>2]|0)|0)/12|0)+-1|0}function Iz(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=n[l+4>>2]|0,n[o>>2]=n[l>>2],n[o+4>>2]=A,n[o+8>>2]=u}function xQe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,R=0,M=0,L=0,q=0,ae=0;if(M=I,I=I+48|0,A=M+32|0,B=M+24|0,k=M,R=o+4|0,d=(((n[R>>2]|0)-(n[o>>2]|0)|0)/12|0)+1|0,m=kQe(o)|0,m>>>0>>0)sn(o);else{L=n[o>>2]|0,ae=((n[o+8>>2]|0)-L|0)/12|0,q=ae<<1,QQe(k,ae>>>0>>1>>>0?q>>>0>>0?d:q:m,((n[R>>2]|0)-L|0)/12|0,o+8|0),R=k+8|0,m=n[R>>2]|0,d=n[l+4>>2]|0,u=n[u>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[A>>2]=n[B>>2],n[A+4>>2]=n[B+4>>2],Iz(m,A,u),n[R>>2]=(n[R>>2]|0)+12,RQe(o,k),TQe(k),I=M;return}}function kQe(o){return o=o|0,357913941}function QQe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>357913941)Nt();else{d=Kt(l*12|0)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u*12|0)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l*12|0)}function RQe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function TQe(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~(((A+-12-l|0)>>>0)/12|0)*12|0)),o=n[o>>2]|0,o|0&&It(o)}function Cz(o){o=o|0,OQe(o)}function FQe(o){o=o|0,NQe(o+24|0)}function NQe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~(((l+-12-A|0)>>>0)/12|0)*12|0)),It(u))}function OQe(o){o=o|0;var l=0;l=en()|0,tn(o,2,4,l,LQe()|0,0),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function LQe(){return 1160}function MQe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0;return u=I,I=I+16|0,A=u+8|0,d=u,m=UQe(o)|0,o=n[m+4>>2]|0,n[d>>2]=n[m>>2],n[d+4>>2]=o,n[A>>2]=n[d>>2],n[A+4>>2]=n[d+4>>2],l=_Qe(l,A)|0,I=u,l|0}function UQe(o){return o=o|0,(n[(gM()|0)+24>>2]|0)+(o*12|0)|0}function _Qe(o,l){o=o|0,l=l|0;var u=0;return u=n[l>>2]|0,l=n[l+4>>2]|0,o=o+(l>>1)|0,l&1&&(u=n[(n[o>>2]|0)+u>>2]|0),wz(gd[u&31](o)|0)|0}function wz(o){return o=o|0,o&1|0}function HQe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0;A=I,I=I+16|0,d=A+8|0,m=A,k=n[u>>2]|0,B=n[u+4>>2]|0,u=Bn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],jQe(o,u,d,0),I=A}function jQe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0,R=0,M=0,L=0;d=I,I=I+32|0,m=d+16|0,L=d+8|0,k=d,M=n[u>>2]|0,R=n[u+4>>2]|0,B=n[o>>2]|0,o=dM()|0,n[L>>2]=M,n[L+4>>2]=R,n[m>>2]=n[L>>2],n[m+4>>2]=n[L+4>>2],u=GQe(m)|0,n[k>>2]=M,n[k+4>>2]=R,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],vn(B,l,o,u,qQe(m,A)|0,A),I=d}function dM(){var o=0,l=0;if(s[7656]|0||(vz(9304),gr(28,9304,U|0)|0,l=7656,n[l>>2]=1,n[l+4>>2]=0),!(_r(9304)|0)){o=9304,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));vz(9304)}return 9304}function GQe(o){return o=o|0,0}function qQe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,R=0,M=0,L=0,q=0;return L=I,I=I+32|0,d=L+24|0,B=L+16|0,k=L,R=L+8|0,m=n[o>>2]|0,A=n[o+4>>2]|0,n[k>>2]=m,n[k+4>>2]=A,q=dM()|0,M=q+24|0,o=yr(l,4)|0,n[R>>2]=o,l=q+28|0,u=n[l>>2]|0,u>>>0<(n[q+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=A,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],Bz(u,d,o),o=(n[l>>2]|0)+12|0,n[l>>2]=o):(WQe(M,k,R),o=n[l>>2]|0),I=L,((o-(n[M>>2]|0)|0)/12|0)+-1|0}function Bz(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=n[l+4>>2]|0,n[o>>2]=n[l>>2],n[o+4>>2]=A,n[o+8>>2]=u}function WQe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,R=0,M=0,L=0,q=0,ae=0;if(M=I,I=I+48|0,A=M+32|0,B=M+24|0,k=M,R=o+4|0,d=(((n[R>>2]|0)-(n[o>>2]|0)|0)/12|0)+1|0,m=YQe(o)|0,m>>>0>>0)sn(o);else{L=n[o>>2]|0,ae=((n[o+8>>2]|0)-L|0)/12|0,q=ae<<1,VQe(k,ae>>>0>>1>>>0?q>>>0>>0?d:q:m,((n[R>>2]|0)-L|0)/12|0,o+8|0),R=k+8|0,m=n[R>>2]|0,d=n[l+4>>2]|0,u=n[u>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[A>>2]=n[B>>2],n[A+4>>2]=n[B+4>>2],Bz(m,A,u),n[R>>2]=(n[R>>2]|0)+12,JQe(o,k),KQe(k),I=M;return}}function YQe(o){return o=o|0,357913941}function VQe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>357913941)Nt();else{d=Kt(l*12|0)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u*12|0)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l*12|0)}function JQe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function KQe(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~(((A+-12-l|0)>>>0)/12|0)*12|0)),o=n[o>>2]|0,o|0&&It(o)}function vz(o){o=o|0,XQe(o)}function zQe(o){o=o|0,ZQe(o+24|0)}function ZQe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~(((l+-12-A|0)>>>0)/12|0)*12|0)),It(u))}function XQe(o){o=o|0;var l=0;l=en()|0,tn(o,2,5,l,$Qe()|0,1),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function $Qe(){return 1164}function eRe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;A=I,I=I+16|0,d=A+8|0,m=A,B=tRe(o)|0,o=n[B+4>>2]|0,n[m>>2]=n[B>>2],n[m+4>>2]=o,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],rRe(l,d,u),I=A}function tRe(o){return o=o|0,(n[(dM()|0)+24>>2]|0)+(o*12|0)|0}function rRe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0;m=I,I=I+16|0,d=m,A=n[l>>2]|0,l=n[l+4>>2]|0,o=o+(l>>1)|0,l&1&&(A=n[(n[o>>2]|0)+A>>2]|0),Mh(d,u),u=Uh(d,u)|0,sp[A&31](o,u),_h(d),I=m}function Mh(o,l){o=o|0,l=l|0,nRe(o,l)}function Uh(o,l){return o=o|0,l=l|0,o|0}function _h(o){o=o|0,Sf(o)}function nRe(o,l){o=o|0,l=l|0,mM(o,l)}function mM(o,l){o=o|0,l=l|0,n[o>>2]=l}function iRe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0;A=I,I=I+16|0,d=A+8|0,m=A,k=n[u>>2]|0,B=n[u+4>>2]|0,u=Bn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],sRe(o,u,d,0),I=A}function sRe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0,R=0,M=0,L=0;d=I,I=I+32|0,m=d+16|0,L=d+8|0,k=d,M=n[u>>2]|0,R=n[u+4>>2]|0,B=n[o>>2]|0,o=yM()|0,n[L>>2]=M,n[L+4>>2]=R,n[m>>2]=n[L>>2],n[m+4>>2]=n[L+4>>2],u=oRe(m)|0,n[k>>2]=M,n[k+4>>2]=R,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],vn(B,l,o,u,aRe(m,A)|0,A),I=d}function yM(){var o=0,l=0;if(s[7664]|0||(Dz(9340),gr(29,9340,U|0)|0,l=7664,n[l>>2]=1,n[l+4>>2]=0),!(_r(9340)|0)){o=9340,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));Dz(9340)}return 9340}function oRe(o){return o=o|0,0}function aRe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,R=0,M=0,L=0,q=0;return L=I,I=I+32|0,d=L+24|0,B=L+16|0,k=L,R=L+8|0,m=n[o>>2]|0,A=n[o+4>>2]|0,n[k>>2]=m,n[k+4>>2]=A,q=yM()|0,M=q+24|0,o=yr(l,4)|0,n[R>>2]=o,l=q+28|0,u=n[l>>2]|0,u>>>0<(n[q+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=A,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],Sz(u,d,o),o=(n[l>>2]|0)+12|0,n[l>>2]=o):(lRe(M,k,R),o=n[l>>2]|0),I=L,((o-(n[M>>2]|0)|0)/12|0)+-1|0}function Sz(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=n[l+4>>2]|0,n[o>>2]=n[l>>2],n[o+4>>2]=A,n[o+8>>2]=u}function lRe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,R=0,M=0,L=0,q=0,ae=0;if(M=I,I=I+48|0,A=M+32|0,B=M+24|0,k=M,R=o+4|0,d=(((n[R>>2]|0)-(n[o>>2]|0)|0)/12|0)+1|0,m=cRe(o)|0,m>>>0>>0)sn(o);else{L=n[o>>2]|0,ae=((n[o+8>>2]|0)-L|0)/12|0,q=ae<<1,uRe(k,ae>>>0>>1>>>0?q>>>0>>0?d:q:m,((n[R>>2]|0)-L|0)/12|0,o+8|0),R=k+8|0,m=n[R>>2]|0,d=n[l+4>>2]|0,u=n[u>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[A>>2]=n[B>>2],n[A+4>>2]=n[B+4>>2],Sz(m,A,u),n[R>>2]=(n[R>>2]|0)+12,fRe(o,k),ARe(k),I=M;return}}function cRe(o){return o=o|0,357913941}function uRe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>357913941)Nt();else{d=Kt(l*12|0)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u*12|0)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l*12|0)}function fRe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function ARe(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~(((A+-12-l|0)>>>0)/12|0)*12|0)),o=n[o>>2]|0,o|0&&It(o)}function Dz(o){o=o|0,gRe(o)}function pRe(o){o=o|0,hRe(o+24|0)}function hRe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~(((l+-12-A|0)>>>0)/12|0)*12|0)),It(u))}function gRe(o){o=o|0;var l=0;l=en()|0,tn(o,2,4,l,dRe()|0,1),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function dRe(){return 1180}function mRe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;return A=I,I=I+16|0,d=A+8|0,m=A,B=yRe(o)|0,o=n[B+4>>2]|0,n[m>>2]=n[B>>2],n[m+4>>2]=o,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],u=ERe(l,d,u)|0,I=A,u|0}function yRe(o){return o=o|0,(n[(yM()|0)+24>>2]|0)+(o*12|0)|0}function ERe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0;return m=I,I=I+16|0,d=m,A=n[l>>2]|0,l=n[l+4>>2]|0,o=o+(l>>1)|0,l&1&&(A=n[(n[o>>2]|0)+A>>2]|0),ad(d,u),d=ld(d,u)|0,d=Rb(hU[A&15](o,d)|0)|0,I=m,d|0}function ad(o,l){o=o|0,l=l|0}function ld(o,l){return o=o|0,l=l|0,IRe(l)|0}function Rb(o){return o=o|0,o|0}function IRe(o){return o=o|0,o|0}function CRe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0;A=I,I=I+16|0,d=A+8|0,m=A,k=n[u>>2]|0,B=n[u+4>>2]|0,u=Bn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],wRe(o,u,d,0),I=A}function wRe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0,R=0,M=0,L=0;d=I,I=I+32|0,m=d+16|0,L=d+8|0,k=d,M=n[u>>2]|0,R=n[u+4>>2]|0,B=n[o>>2]|0,o=EM()|0,n[L>>2]=M,n[L+4>>2]=R,n[m>>2]=n[L>>2],n[m+4>>2]=n[L+4>>2],u=BRe(m)|0,n[k>>2]=M,n[k+4>>2]=R,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],vn(B,l,o,u,vRe(m,A)|0,A),I=d}function EM(){var o=0,l=0;if(s[7672]|0||(bz(9376),gr(30,9376,U|0)|0,l=7672,n[l>>2]=1,n[l+4>>2]=0),!(_r(9376)|0)){o=9376,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));bz(9376)}return 9376}function BRe(o){return o=o|0,0}function vRe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,R=0,M=0,L=0,q=0;return L=I,I=I+32|0,d=L+24|0,B=L+16|0,k=L,R=L+8|0,m=n[o>>2]|0,A=n[o+4>>2]|0,n[k>>2]=m,n[k+4>>2]=A,q=EM()|0,M=q+24|0,o=yr(l,4)|0,n[R>>2]=o,l=q+28|0,u=n[l>>2]|0,u>>>0<(n[q+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=A,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],Pz(u,d,o),o=(n[l>>2]|0)+12|0,n[l>>2]=o):(SRe(M,k,R),o=n[l>>2]|0),I=L,((o-(n[M>>2]|0)|0)/12|0)+-1|0}function Pz(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=n[l+4>>2]|0,n[o>>2]=n[l>>2],n[o+4>>2]=A,n[o+8>>2]=u}function SRe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,R=0,M=0,L=0,q=0,ae=0;if(M=I,I=I+48|0,A=M+32|0,B=M+24|0,k=M,R=o+4|0,d=(((n[R>>2]|0)-(n[o>>2]|0)|0)/12|0)+1|0,m=DRe(o)|0,m>>>0>>0)sn(o);else{L=n[o>>2]|0,ae=((n[o+8>>2]|0)-L|0)/12|0,q=ae<<1,PRe(k,ae>>>0>>1>>>0?q>>>0>>0?d:q:m,((n[R>>2]|0)-L|0)/12|0,o+8|0),R=k+8|0,m=n[R>>2]|0,d=n[l+4>>2]|0,u=n[u>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[A>>2]=n[B>>2],n[A+4>>2]=n[B+4>>2],Pz(m,A,u),n[R>>2]=(n[R>>2]|0)+12,bRe(o,k),xRe(k),I=M;return}}function DRe(o){return o=o|0,357913941}function PRe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>357913941)Nt();else{d=Kt(l*12|0)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u*12|0)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l*12|0)}function bRe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function xRe(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~(((A+-12-l|0)>>>0)/12|0)*12|0)),o=n[o>>2]|0,o|0&&It(o)}function bz(o){o=o|0,RRe(o)}function kRe(o){o=o|0,QRe(o+24|0)}function QRe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~(((l+-12-A|0)>>>0)/12|0)*12|0)),It(u))}function RRe(o){o=o|0;var l=0;l=en()|0,tn(o,2,5,l,xz()|0,0),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function xz(){return 1196}function TRe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0;return u=I,I=I+16|0,A=u+8|0,d=u,m=FRe(o)|0,o=n[m+4>>2]|0,n[d>>2]=n[m>>2],n[d+4>>2]=o,n[A>>2]=n[d>>2],n[A+4>>2]=n[d+4>>2],l=NRe(l,A)|0,I=u,l|0}function FRe(o){return o=o|0,(n[(EM()|0)+24>>2]|0)+(o*12|0)|0}function NRe(o,l){o=o|0,l=l|0;var u=0;return u=n[l>>2]|0,l=n[l+4>>2]|0,o=o+(l>>1)|0,l&1&&(u=n[(n[o>>2]|0)+u>>2]|0),Rb(gd[u&31](o)|0)|0}function ORe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0;A=I,I=I+16|0,d=A+8|0,m=A,k=n[u>>2]|0,B=n[u+4>>2]|0,u=Bn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],LRe(o,u,d,1),I=A}function LRe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0,R=0,M=0,L=0;d=I,I=I+32|0,m=d+16|0,L=d+8|0,k=d,M=n[u>>2]|0,R=n[u+4>>2]|0,B=n[o>>2]|0,o=IM()|0,n[L>>2]=M,n[L+4>>2]=R,n[m>>2]=n[L>>2],n[m+4>>2]=n[L+4>>2],u=MRe(m)|0,n[k>>2]=M,n[k+4>>2]=R,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],vn(B,l,o,u,URe(m,A)|0,A),I=d}function IM(){var o=0,l=0;if(s[7680]|0||(Qz(9412),gr(31,9412,U|0)|0,l=7680,n[l>>2]=1,n[l+4>>2]=0),!(_r(9412)|0)){o=9412,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));Qz(9412)}return 9412}function MRe(o){return o=o|0,0}function URe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,R=0,M=0,L=0,q=0;return L=I,I=I+32|0,d=L+24|0,B=L+16|0,k=L,R=L+8|0,m=n[o>>2]|0,A=n[o+4>>2]|0,n[k>>2]=m,n[k+4>>2]=A,q=IM()|0,M=q+24|0,o=yr(l,4)|0,n[R>>2]=o,l=q+28|0,u=n[l>>2]|0,u>>>0<(n[q+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=A,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],kz(u,d,o),o=(n[l>>2]|0)+12|0,n[l>>2]=o):(_Re(M,k,R),o=n[l>>2]|0),I=L,((o-(n[M>>2]|0)|0)/12|0)+-1|0}function kz(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=n[l+4>>2]|0,n[o>>2]=n[l>>2],n[o+4>>2]=A,n[o+8>>2]=u}function _Re(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,R=0,M=0,L=0,q=0,ae=0;if(M=I,I=I+48|0,A=M+32|0,B=M+24|0,k=M,R=o+4|0,d=(((n[R>>2]|0)-(n[o>>2]|0)|0)/12|0)+1|0,m=HRe(o)|0,m>>>0>>0)sn(o);else{L=n[o>>2]|0,ae=((n[o+8>>2]|0)-L|0)/12|0,q=ae<<1,jRe(k,ae>>>0>>1>>>0?q>>>0>>0?d:q:m,((n[R>>2]|0)-L|0)/12|0,o+8|0),R=k+8|0,m=n[R>>2]|0,d=n[l+4>>2]|0,u=n[u>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[A>>2]=n[B>>2],n[A+4>>2]=n[B+4>>2],kz(m,A,u),n[R>>2]=(n[R>>2]|0)+12,GRe(o,k),qRe(k),I=M;return}}function HRe(o){return o=o|0,357913941}function jRe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>357913941)Nt();else{d=Kt(l*12|0)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u*12|0)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l*12|0)}function GRe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function qRe(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~(((A+-12-l|0)>>>0)/12|0)*12|0)),o=n[o>>2]|0,o|0&&It(o)}function Qz(o){o=o|0,VRe(o)}function WRe(o){o=o|0,YRe(o+24|0)}function YRe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~(((l+-12-A|0)>>>0)/12|0)*12|0)),It(u))}function VRe(o){o=o|0;var l=0;l=en()|0,tn(o,2,6,l,Rz()|0,0),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function Rz(){return 1200}function JRe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0;return u=I,I=I+16|0,A=u+8|0,d=u,m=KRe(o)|0,o=n[m+4>>2]|0,n[d>>2]=n[m>>2],n[d+4>>2]=o,n[A>>2]=n[d>>2],n[A+4>>2]=n[d+4>>2],l=zRe(l,A)|0,I=u,l|0}function KRe(o){return o=o|0,(n[(IM()|0)+24>>2]|0)+(o*12|0)|0}function zRe(o,l){o=o|0,l=l|0;var u=0;return u=n[l>>2]|0,l=n[l+4>>2]|0,o=o+(l>>1)|0,l&1&&(u=n[(n[o>>2]|0)+u>>2]|0),Tb(gd[u&31](o)|0)|0}function Tb(o){return o=o|0,o|0}function ZRe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0;A=I,I=I+16|0,d=A+8|0,m=A,k=n[u>>2]|0,B=n[u+4>>2]|0,u=Bn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],XRe(o,u,d,0),I=A}function XRe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0,R=0,M=0,L=0;d=I,I=I+32|0,m=d+16|0,L=d+8|0,k=d,M=n[u>>2]|0,R=n[u+4>>2]|0,B=n[o>>2]|0,o=CM()|0,n[L>>2]=M,n[L+4>>2]=R,n[m>>2]=n[L>>2],n[m+4>>2]=n[L+4>>2],u=$Re(m)|0,n[k>>2]=M,n[k+4>>2]=R,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],vn(B,l,o,u,eTe(m,A)|0,A),I=d}function CM(){var o=0,l=0;if(s[7688]|0||(Fz(9448),gr(32,9448,U|0)|0,l=7688,n[l>>2]=1,n[l+4>>2]=0),!(_r(9448)|0)){o=9448,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));Fz(9448)}return 9448}function $Re(o){return o=o|0,0}function eTe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,R=0,M=0,L=0,q=0;return L=I,I=I+32|0,d=L+24|0,B=L+16|0,k=L,R=L+8|0,m=n[o>>2]|0,A=n[o+4>>2]|0,n[k>>2]=m,n[k+4>>2]=A,q=CM()|0,M=q+24|0,o=yr(l,4)|0,n[R>>2]=o,l=q+28|0,u=n[l>>2]|0,u>>>0<(n[q+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=A,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],Tz(u,d,o),o=(n[l>>2]|0)+12|0,n[l>>2]=o):(tTe(M,k,R),o=n[l>>2]|0),I=L,((o-(n[M>>2]|0)|0)/12|0)+-1|0}function Tz(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=n[l+4>>2]|0,n[o>>2]=n[l>>2],n[o+4>>2]=A,n[o+8>>2]=u}function tTe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,R=0,M=0,L=0,q=0,ae=0;if(M=I,I=I+48|0,A=M+32|0,B=M+24|0,k=M,R=o+4|0,d=(((n[R>>2]|0)-(n[o>>2]|0)|0)/12|0)+1|0,m=rTe(o)|0,m>>>0>>0)sn(o);else{L=n[o>>2]|0,ae=((n[o+8>>2]|0)-L|0)/12|0,q=ae<<1,nTe(k,ae>>>0>>1>>>0?q>>>0>>0?d:q:m,((n[R>>2]|0)-L|0)/12|0,o+8|0),R=k+8|0,m=n[R>>2]|0,d=n[l+4>>2]|0,u=n[u>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[A>>2]=n[B>>2],n[A+4>>2]=n[B+4>>2],Tz(m,A,u),n[R>>2]=(n[R>>2]|0)+12,iTe(o,k),sTe(k),I=M;return}}function rTe(o){return o=o|0,357913941}function nTe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>357913941)Nt();else{d=Kt(l*12|0)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u*12|0)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l*12|0)}function iTe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function sTe(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~(((A+-12-l|0)>>>0)/12|0)*12|0)),o=n[o>>2]|0,o|0&&It(o)}function Fz(o){o=o|0,lTe(o)}function oTe(o){o=o|0,aTe(o+24|0)}function aTe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~(((l+-12-A|0)>>>0)/12|0)*12|0)),It(u))}function lTe(o){o=o|0;var l=0;l=en()|0,tn(o,2,6,l,Nz()|0,1),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function Nz(){return 1204}function cTe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;A=I,I=I+16|0,d=A+8|0,m=A,B=uTe(o)|0,o=n[B+4>>2]|0,n[m>>2]=n[B>>2],n[m+4>>2]=o,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],fTe(l,d,u),I=A}function uTe(o){return o=o|0,(n[(CM()|0)+24>>2]|0)+(o*12|0)|0}function fTe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0;m=I,I=I+16|0,d=m,A=n[l>>2]|0,l=n[l+4>>2]|0,o=o+(l>>1)|0,l&1&&(A=n[(n[o>>2]|0)+A>>2]|0),wM(d,u),d=BM(d,u)|0,sp[A&31](o,d),I=m}function wM(o,l){o=o|0,l=l|0}function BM(o,l){return o=o|0,l=l|0,ATe(l)|0}function ATe(o){return o=o|0,o|0}function pTe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0;A=I,I=I+16|0,d=A+8|0,m=A,k=n[u>>2]|0,B=n[u+4>>2]|0,u=Bn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],hTe(o,u,d,0),I=A}function hTe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0,R=0,M=0,L=0;d=I,I=I+32|0,m=d+16|0,L=d+8|0,k=d,M=n[u>>2]|0,R=n[u+4>>2]|0,B=n[o>>2]|0,o=vM()|0,n[L>>2]=M,n[L+4>>2]=R,n[m>>2]=n[L>>2],n[m+4>>2]=n[L+4>>2],u=gTe(m)|0,n[k>>2]=M,n[k+4>>2]=R,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],vn(B,l,o,u,dTe(m,A)|0,A),I=d}function vM(){var o=0,l=0;if(s[7696]|0||(Lz(9484),gr(33,9484,U|0)|0,l=7696,n[l>>2]=1,n[l+4>>2]=0),!(_r(9484)|0)){o=9484,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));Lz(9484)}return 9484}function gTe(o){return o=o|0,0}function dTe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,R=0,M=0,L=0,q=0;return L=I,I=I+32|0,d=L+24|0,B=L+16|0,k=L,R=L+8|0,m=n[o>>2]|0,A=n[o+4>>2]|0,n[k>>2]=m,n[k+4>>2]=A,q=vM()|0,M=q+24|0,o=yr(l,4)|0,n[R>>2]=o,l=q+28|0,u=n[l>>2]|0,u>>>0<(n[q+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=A,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],Oz(u,d,o),o=(n[l>>2]|0)+12|0,n[l>>2]=o):(mTe(M,k,R),o=n[l>>2]|0),I=L,((o-(n[M>>2]|0)|0)/12|0)+-1|0}function Oz(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=n[l+4>>2]|0,n[o>>2]=n[l>>2],n[o+4>>2]=A,n[o+8>>2]=u}function mTe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,R=0,M=0,L=0,q=0,ae=0;if(M=I,I=I+48|0,A=M+32|0,B=M+24|0,k=M,R=o+4|0,d=(((n[R>>2]|0)-(n[o>>2]|0)|0)/12|0)+1|0,m=yTe(o)|0,m>>>0>>0)sn(o);else{L=n[o>>2]|0,ae=((n[o+8>>2]|0)-L|0)/12|0,q=ae<<1,ETe(k,ae>>>0>>1>>>0?q>>>0>>0?d:q:m,((n[R>>2]|0)-L|0)/12|0,o+8|0),R=k+8|0,m=n[R>>2]|0,d=n[l+4>>2]|0,u=n[u>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[A>>2]=n[B>>2],n[A+4>>2]=n[B+4>>2],Oz(m,A,u),n[R>>2]=(n[R>>2]|0)+12,ITe(o,k),CTe(k),I=M;return}}function yTe(o){return o=o|0,357913941}function ETe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>357913941)Nt();else{d=Kt(l*12|0)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u*12|0)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l*12|0)}function ITe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function CTe(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~(((A+-12-l|0)>>>0)/12|0)*12|0)),o=n[o>>2]|0,o|0&&It(o)}function Lz(o){o=o|0,vTe(o)}function wTe(o){o=o|0,BTe(o+24|0)}function BTe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~(((l+-12-A|0)>>>0)/12|0)*12|0)),It(u))}function vTe(o){o=o|0;var l=0;l=en()|0,tn(o,2,1,l,STe()|0,2),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function STe(){return 1212}function DTe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0;d=I,I=I+16|0,m=d+8|0,B=d,k=PTe(o)|0,o=n[k+4>>2]|0,n[B>>2]=n[k>>2],n[B+4>>2]=o,n[m>>2]=n[B>>2],n[m+4>>2]=n[B+4>>2],bTe(l,m,u,A),I=d}function PTe(o){return o=o|0,(n[(vM()|0)+24>>2]|0)+(o*12|0)|0}function bTe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0;k=I,I=I+16|0,m=k+1|0,B=k,d=n[l>>2]|0,l=n[l+4>>2]|0,o=o+(l>>1)|0,l&1&&(d=n[(n[o>>2]|0)+d>>2]|0),wM(m,u),m=BM(m,u)|0,ad(B,A),B=ld(B,A)|0,F2[d&15](o,m,B),I=k}function xTe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0;A=I,I=I+16|0,d=A+8|0,m=A,k=n[u>>2]|0,B=n[u+4>>2]|0,u=Bn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],kTe(o,u,d,1),I=A}function kTe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0,R=0,M=0,L=0;d=I,I=I+32|0,m=d+16|0,L=d+8|0,k=d,M=n[u>>2]|0,R=n[u+4>>2]|0,B=n[o>>2]|0,o=SM()|0,n[L>>2]=M,n[L+4>>2]=R,n[m>>2]=n[L>>2],n[m+4>>2]=n[L+4>>2],u=QTe(m)|0,n[k>>2]=M,n[k+4>>2]=R,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],vn(B,l,o,u,RTe(m,A)|0,A),I=d}function SM(){var o=0,l=0;if(s[7704]|0||(Uz(9520),gr(34,9520,U|0)|0,l=7704,n[l>>2]=1,n[l+4>>2]=0),!(_r(9520)|0)){o=9520,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));Uz(9520)}return 9520}function QTe(o){return o=o|0,0}function RTe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,R=0,M=0,L=0,q=0;return L=I,I=I+32|0,d=L+24|0,B=L+16|0,k=L,R=L+8|0,m=n[o>>2]|0,A=n[o+4>>2]|0,n[k>>2]=m,n[k+4>>2]=A,q=SM()|0,M=q+24|0,o=yr(l,4)|0,n[R>>2]=o,l=q+28|0,u=n[l>>2]|0,u>>>0<(n[q+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=A,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],Mz(u,d,o),o=(n[l>>2]|0)+12|0,n[l>>2]=o):(TTe(M,k,R),o=n[l>>2]|0),I=L,((o-(n[M>>2]|0)|0)/12|0)+-1|0}function Mz(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=n[l+4>>2]|0,n[o>>2]=n[l>>2],n[o+4>>2]=A,n[o+8>>2]=u}function TTe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,R=0,M=0,L=0,q=0,ae=0;if(M=I,I=I+48|0,A=M+32|0,B=M+24|0,k=M,R=o+4|0,d=(((n[R>>2]|0)-(n[o>>2]|0)|0)/12|0)+1|0,m=FTe(o)|0,m>>>0>>0)sn(o);else{L=n[o>>2]|0,ae=((n[o+8>>2]|0)-L|0)/12|0,q=ae<<1,NTe(k,ae>>>0>>1>>>0?q>>>0>>0?d:q:m,((n[R>>2]|0)-L|0)/12|0,o+8|0),R=k+8|0,m=n[R>>2]|0,d=n[l+4>>2]|0,u=n[u>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[A>>2]=n[B>>2],n[A+4>>2]=n[B+4>>2],Mz(m,A,u),n[R>>2]=(n[R>>2]|0)+12,OTe(o,k),LTe(k),I=M;return}}function FTe(o){return o=o|0,357913941}function NTe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>357913941)Nt();else{d=Kt(l*12|0)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u*12|0)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l*12|0)}function OTe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function LTe(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~(((A+-12-l|0)>>>0)/12|0)*12|0)),o=n[o>>2]|0,o|0&&It(o)}function Uz(o){o=o|0,_Te(o)}function MTe(o){o=o|0,UTe(o+24|0)}function UTe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~(((l+-12-A|0)>>>0)/12|0)*12|0)),It(u))}function _Te(o){o=o|0;var l=0;l=en()|0,tn(o,2,1,l,HTe()|0,1),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function HTe(){return 1224}function jTe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0;return d=I,I=I+16|0,m=d+8|0,B=d,k=GTe(o)|0,o=n[k+4>>2]|0,n[B>>2]=n[k>>2],n[B+4>>2]=o,n[m>>2]=n[B>>2],n[m+4>>2]=n[B+4>>2],A=+qTe(l,m,u),I=d,+A}function GTe(o){return o=o|0,(n[(SM()|0)+24>>2]|0)+(o*12|0)|0}function qTe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;return m=I,I=I+16|0,d=m,A=n[l>>2]|0,l=n[l+4>>2]|0,o=o+(l>>1)|0,l&1&&(A=n[(n[o>>2]|0)+A>>2]|0),tp(d,u),d=rp(d,u)|0,B=+kf(+OX[A&7](o,d)),I=m,+B}function WTe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0;A=I,I=I+16|0,d=A+8|0,m=A,k=n[u>>2]|0,B=n[u+4>>2]|0,u=Bn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],YTe(o,u,d,1),I=A}function YTe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0,R=0,M=0,L=0;d=I,I=I+32|0,m=d+16|0,L=d+8|0,k=d,M=n[u>>2]|0,R=n[u+4>>2]|0,B=n[o>>2]|0,o=DM()|0,n[L>>2]=M,n[L+4>>2]=R,n[m>>2]=n[L>>2],n[m+4>>2]=n[L+4>>2],u=VTe(m)|0,n[k>>2]=M,n[k+4>>2]=R,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],vn(B,l,o,u,JTe(m,A)|0,A),I=d}function DM(){var o=0,l=0;if(s[7712]|0||(Hz(9556),gr(35,9556,U|0)|0,l=7712,n[l>>2]=1,n[l+4>>2]=0),!(_r(9556)|0)){o=9556,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));Hz(9556)}return 9556}function VTe(o){return o=o|0,0}function JTe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,R=0,M=0,L=0,q=0;return L=I,I=I+32|0,d=L+24|0,B=L+16|0,k=L,R=L+8|0,m=n[o>>2]|0,A=n[o+4>>2]|0,n[k>>2]=m,n[k+4>>2]=A,q=DM()|0,M=q+24|0,o=yr(l,4)|0,n[R>>2]=o,l=q+28|0,u=n[l>>2]|0,u>>>0<(n[q+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=A,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],_z(u,d,o),o=(n[l>>2]|0)+12|0,n[l>>2]=o):(KTe(M,k,R),o=n[l>>2]|0),I=L,((o-(n[M>>2]|0)|0)/12|0)+-1|0}function _z(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=n[l+4>>2]|0,n[o>>2]=n[l>>2],n[o+4>>2]=A,n[o+8>>2]=u}function KTe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,R=0,M=0,L=0,q=0,ae=0;if(M=I,I=I+48|0,A=M+32|0,B=M+24|0,k=M,R=o+4|0,d=(((n[R>>2]|0)-(n[o>>2]|0)|0)/12|0)+1|0,m=zTe(o)|0,m>>>0>>0)sn(o);else{L=n[o>>2]|0,ae=((n[o+8>>2]|0)-L|0)/12|0,q=ae<<1,ZTe(k,ae>>>0>>1>>>0?q>>>0>>0?d:q:m,((n[R>>2]|0)-L|0)/12|0,o+8|0),R=k+8|0,m=n[R>>2]|0,d=n[l+4>>2]|0,u=n[u>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[A>>2]=n[B>>2],n[A+4>>2]=n[B+4>>2],_z(m,A,u),n[R>>2]=(n[R>>2]|0)+12,XTe(o,k),$Te(k),I=M;return}}function zTe(o){return o=o|0,357913941}function ZTe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>357913941)Nt();else{d=Kt(l*12|0)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u*12|0)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l*12|0)}function XTe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function $Te(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~(((A+-12-l|0)>>>0)/12|0)*12|0)),o=n[o>>2]|0,o|0&&It(o)}function Hz(o){o=o|0,rFe(o)}function eFe(o){o=o|0,tFe(o+24|0)}function tFe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~(((l+-12-A|0)>>>0)/12|0)*12|0)),It(u))}function rFe(o){o=o|0;var l=0;l=en()|0,tn(o,2,5,l,nFe()|0,0),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function nFe(){return 1232}function iFe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;return A=I,I=I+16|0,d=A+8|0,m=A,B=sFe(o)|0,o=n[B+4>>2]|0,n[m>>2]=n[B>>2],n[m+4>>2]=o,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],u=+oFe(l,d),I=A,+u}function sFe(o){return o=o|0,(n[(DM()|0)+24>>2]|0)+(o*12|0)|0}function oFe(o,l){o=o|0,l=l|0;var u=0;return u=n[l>>2]|0,l=n[l+4>>2]|0,o=o+(l>>1)|0,l&1&&(u=n[(n[o>>2]|0)+u>>2]|0),+ +kf(+NX[u&15](o))}function aFe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0;A=I,I=I+16|0,d=A+8|0,m=A,k=n[u>>2]|0,B=n[u+4>>2]|0,u=Bn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],lFe(o,u,d,1),I=A}function lFe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0,R=0,M=0,L=0;d=I,I=I+32|0,m=d+16|0,L=d+8|0,k=d,M=n[u>>2]|0,R=n[u+4>>2]|0,B=n[o>>2]|0,o=PM()|0,n[L>>2]=M,n[L+4>>2]=R,n[m>>2]=n[L>>2],n[m+4>>2]=n[L+4>>2],u=cFe(m)|0,n[k>>2]=M,n[k+4>>2]=R,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],vn(B,l,o,u,uFe(m,A)|0,A),I=d}function PM(){var o=0,l=0;if(s[7720]|0||(Gz(9592),gr(36,9592,U|0)|0,l=7720,n[l>>2]=1,n[l+4>>2]=0),!(_r(9592)|0)){o=9592,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));Gz(9592)}return 9592}function cFe(o){return o=o|0,0}function uFe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,R=0,M=0,L=0,q=0;return L=I,I=I+32|0,d=L+24|0,B=L+16|0,k=L,R=L+8|0,m=n[o>>2]|0,A=n[o+4>>2]|0,n[k>>2]=m,n[k+4>>2]=A,q=PM()|0,M=q+24|0,o=yr(l,4)|0,n[R>>2]=o,l=q+28|0,u=n[l>>2]|0,u>>>0<(n[q+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=A,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],jz(u,d,o),o=(n[l>>2]|0)+12|0,n[l>>2]=o):(fFe(M,k,R),o=n[l>>2]|0),I=L,((o-(n[M>>2]|0)|0)/12|0)+-1|0}function jz(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=n[l+4>>2]|0,n[o>>2]=n[l>>2],n[o+4>>2]=A,n[o+8>>2]=u}function fFe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,R=0,M=0,L=0,q=0,ae=0;if(M=I,I=I+48|0,A=M+32|0,B=M+24|0,k=M,R=o+4|0,d=(((n[R>>2]|0)-(n[o>>2]|0)|0)/12|0)+1|0,m=AFe(o)|0,m>>>0>>0)sn(o);else{L=n[o>>2]|0,ae=((n[o+8>>2]|0)-L|0)/12|0,q=ae<<1,pFe(k,ae>>>0>>1>>>0?q>>>0>>0?d:q:m,((n[R>>2]|0)-L|0)/12|0,o+8|0),R=k+8|0,m=n[R>>2]|0,d=n[l+4>>2]|0,u=n[u>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[A>>2]=n[B>>2],n[A+4>>2]=n[B+4>>2],jz(m,A,u),n[R>>2]=(n[R>>2]|0)+12,hFe(o,k),gFe(k),I=M;return}}function AFe(o){return o=o|0,357913941}function pFe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>357913941)Nt();else{d=Kt(l*12|0)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u*12|0)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l*12|0)}function hFe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function gFe(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~(((A+-12-l|0)>>>0)/12|0)*12|0)),o=n[o>>2]|0,o|0&&It(o)}function Gz(o){o=o|0,yFe(o)}function dFe(o){o=o|0,mFe(o+24|0)}function mFe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~(((l+-12-A|0)>>>0)/12|0)*12|0)),It(u))}function yFe(o){o=o|0;var l=0;l=en()|0,tn(o,2,7,l,EFe()|0,0),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function EFe(){return 1276}function IFe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0;return u=I,I=I+16|0,A=u+8|0,d=u,m=CFe(o)|0,o=n[m+4>>2]|0,n[d>>2]=n[m>>2],n[d+4>>2]=o,n[A>>2]=n[d>>2],n[A+4>>2]=n[d+4>>2],l=wFe(l,A)|0,I=u,l|0}function CFe(o){return o=o|0,(n[(PM()|0)+24>>2]|0)+(o*12|0)|0}function wFe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0;return d=I,I=I+16|0,A=d,u=n[l>>2]|0,l=n[l+4>>2]|0,o=o+(l>>1)|0,l&1&&(u=n[(n[o>>2]|0)+u>>2]|0),sp[u&31](A,o),A=qz(A)|0,I=d,A|0}function qz(o){o=o|0;var l=0,u=0,A=0,d=0;return d=I,I=I+32|0,l=d+12|0,u=d,A=uM(Wz()|0)|0,A?(fM(l,A),AM(u,l),BFe(o,u),o=pM(l)|0):o=vFe(o)|0,I=d,o|0}function Wz(){var o=0;return s[7736]|0||(FFe(9640),gr(25,9640,U|0)|0,o=7736,n[o>>2]=1,n[o+4>>2]=0),9640}function BFe(o,l){o=o|0,l=l|0,bFe(l,o,o+8|0)|0}function vFe(o){o=o|0;var l=0,u=0,A=0,d=0,m=0,B=0,k=0;return u=I,I=I+16|0,d=u+4|0,B=u,A=Tl(8)|0,l=A,k=Kt(16)|0,n[k>>2]=n[o>>2],n[k+4>>2]=n[o+4>>2],n[k+8>>2]=n[o+8>>2],n[k+12>>2]=n[o+12>>2],m=l+4|0,n[m>>2]=k,o=Kt(8)|0,m=n[m>>2]|0,n[B>>2]=0,n[d>>2]=n[B>>2],bM(o,m,d),n[A>>2]=o,I=u,l|0}function bM(o,l,u){o=o|0,l=l|0,u=u|0,n[o>>2]=l,u=Kt(16)|0,n[u+4>>2]=0,n[u+8>>2]=0,n[u>>2]=1244,n[u+12>>2]=l,n[o+4>>2]=u}function SFe(o){o=o|0,$y(o),It(o)}function DFe(o){o=o|0,o=n[o+12>>2]|0,o|0&&It(o)}function PFe(o){o=o|0,It(o)}function bFe(o,l,u){return o=o|0,l=l|0,u=u|0,l=xFe(n[o>>2]|0,l,u)|0,u=o+4|0,n[(n[u>>2]|0)+8>>2]=l,n[(n[u>>2]|0)+8>>2]|0}function xFe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0;return A=I,I=I+16|0,d=A,Fl(d),o=Os(o)|0,u=kFe(o,n[l>>2]|0,+E[u>>3])|0,Nl(d),I=A,u|0}function kFe(o,l,u){o=o|0,l=l|0,u=+u;var A=0;return A=da(QFe()|0)|0,l=Yy(l)|0,ou(0,A|0,o|0,l|0,+ +Ja(u))|0}function QFe(){var o=0;return s[7728]|0||(RFe(9628),o=7728,n[o>>2]=1,n[o+4>>2]=0),9628}function RFe(o){o=o|0,Qo(o,TFe()|0,2)}function TFe(){return 1264}function FFe(o){o=o|0,Lh(o)}function NFe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0;A=I,I=I+16|0,d=A+8|0,m=A,k=n[u>>2]|0,B=n[u+4>>2]|0,u=Bn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],OFe(o,u,d,1),I=A}function OFe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0,R=0,M=0,L=0;d=I,I=I+32|0,m=d+16|0,L=d+8|0,k=d,M=n[u>>2]|0,R=n[u+4>>2]|0,B=n[o>>2]|0,o=xM()|0,n[L>>2]=M,n[L+4>>2]=R,n[m>>2]=n[L>>2],n[m+4>>2]=n[L+4>>2],u=LFe(m)|0,n[k>>2]=M,n[k+4>>2]=R,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],vn(B,l,o,u,MFe(m,A)|0,A),I=d}function xM(){var o=0,l=0;if(s[7744]|0||(Vz(9684),gr(37,9684,U|0)|0,l=7744,n[l>>2]=1,n[l+4>>2]=0),!(_r(9684)|0)){o=9684,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));Vz(9684)}return 9684}function LFe(o){return o=o|0,0}function MFe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,R=0,M=0,L=0,q=0;return L=I,I=I+32|0,d=L+24|0,B=L+16|0,k=L,R=L+8|0,m=n[o>>2]|0,A=n[o+4>>2]|0,n[k>>2]=m,n[k+4>>2]=A,q=xM()|0,M=q+24|0,o=yr(l,4)|0,n[R>>2]=o,l=q+28|0,u=n[l>>2]|0,u>>>0<(n[q+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=A,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],Yz(u,d,o),o=(n[l>>2]|0)+12|0,n[l>>2]=o):(UFe(M,k,R),o=n[l>>2]|0),I=L,((o-(n[M>>2]|0)|0)/12|0)+-1|0}function Yz(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=n[l+4>>2]|0,n[o>>2]=n[l>>2],n[o+4>>2]=A,n[o+8>>2]=u}function UFe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,R=0,M=0,L=0,q=0,ae=0;if(M=I,I=I+48|0,A=M+32|0,B=M+24|0,k=M,R=o+4|0,d=(((n[R>>2]|0)-(n[o>>2]|0)|0)/12|0)+1|0,m=_Fe(o)|0,m>>>0>>0)sn(o);else{L=n[o>>2]|0,ae=((n[o+8>>2]|0)-L|0)/12|0,q=ae<<1,HFe(k,ae>>>0>>1>>>0?q>>>0>>0?d:q:m,((n[R>>2]|0)-L|0)/12|0,o+8|0),R=k+8|0,m=n[R>>2]|0,d=n[l+4>>2]|0,u=n[u>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[A>>2]=n[B>>2],n[A+4>>2]=n[B+4>>2],Yz(m,A,u),n[R>>2]=(n[R>>2]|0)+12,jFe(o,k),GFe(k),I=M;return}}function _Fe(o){return o=o|0,357913941}function HFe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>357913941)Nt();else{d=Kt(l*12|0)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u*12|0)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l*12|0)}function jFe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function GFe(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~(((A+-12-l|0)>>>0)/12|0)*12|0)),o=n[o>>2]|0,o|0&&It(o)}function Vz(o){o=o|0,YFe(o)}function qFe(o){o=o|0,WFe(o+24|0)}function WFe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~(((l+-12-A|0)>>>0)/12|0)*12|0)),It(u))}function YFe(o){o=o|0;var l=0;l=en()|0,tn(o,2,5,l,VFe()|0,1),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function VFe(){return 1280}function JFe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;return A=I,I=I+16|0,d=A+8|0,m=A,B=KFe(o)|0,o=n[B+4>>2]|0,n[m>>2]=n[B>>2],n[m+4>>2]=o,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],u=zFe(l,d,u)|0,I=A,u|0}function KFe(o){return o=o|0,(n[(xM()|0)+24>>2]|0)+(o*12|0)|0}function zFe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;return B=I,I=I+32|0,d=B,m=B+16|0,A=n[l>>2]|0,l=n[l+4>>2]|0,o=o+(l>>1)|0,l&1&&(A=n[(n[o>>2]|0)+A>>2]|0),tp(m,u),m=rp(m,u)|0,F2[A&15](d,o,m),m=qz(d)|0,I=B,m|0}function ZFe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0;A=I,I=I+16|0,d=A+8|0,m=A,k=n[u>>2]|0,B=n[u+4>>2]|0,u=Bn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],XFe(o,u,d,1),I=A}function XFe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0,R=0,M=0,L=0;d=I,I=I+32|0,m=d+16|0,L=d+8|0,k=d,M=n[u>>2]|0,R=n[u+4>>2]|0,B=n[o>>2]|0,o=kM()|0,n[L>>2]=M,n[L+4>>2]=R,n[m>>2]=n[L>>2],n[m+4>>2]=n[L+4>>2],u=$Fe(m)|0,n[k>>2]=M,n[k+4>>2]=R,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],vn(B,l,o,u,eNe(m,A)|0,A),I=d}function kM(){var o=0,l=0;if(s[7752]|0||(Kz(9720),gr(38,9720,U|0)|0,l=7752,n[l>>2]=1,n[l+4>>2]=0),!(_r(9720)|0)){o=9720,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));Kz(9720)}return 9720}function $Fe(o){return o=o|0,0}function eNe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,R=0,M=0,L=0,q=0;return L=I,I=I+32|0,d=L+24|0,B=L+16|0,k=L,R=L+8|0,m=n[o>>2]|0,A=n[o+4>>2]|0,n[k>>2]=m,n[k+4>>2]=A,q=kM()|0,M=q+24|0,o=yr(l,4)|0,n[R>>2]=o,l=q+28|0,u=n[l>>2]|0,u>>>0<(n[q+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=A,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],Jz(u,d,o),o=(n[l>>2]|0)+12|0,n[l>>2]=o):(tNe(M,k,R),o=n[l>>2]|0),I=L,((o-(n[M>>2]|0)|0)/12|0)+-1|0}function Jz(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=n[l+4>>2]|0,n[o>>2]=n[l>>2],n[o+4>>2]=A,n[o+8>>2]=u}function tNe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,R=0,M=0,L=0,q=0,ae=0;if(M=I,I=I+48|0,A=M+32|0,B=M+24|0,k=M,R=o+4|0,d=(((n[R>>2]|0)-(n[o>>2]|0)|0)/12|0)+1|0,m=rNe(o)|0,m>>>0>>0)sn(o);else{L=n[o>>2]|0,ae=((n[o+8>>2]|0)-L|0)/12|0,q=ae<<1,nNe(k,ae>>>0>>1>>>0?q>>>0>>0?d:q:m,((n[R>>2]|0)-L|0)/12|0,o+8|0),R=k+8|0,m=n[R>>2]|0,d=n[l+4>>2]|0,u=n[u>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[A>>2]=n[B>>2],n[A+4>>2]=n[B+4>>2],Jz(m,A,u),n[R>>2]=(n[R>>2]|0)+12,iNe(o,k),sNe(k),I=M;return}}function rNe(o){return o=o|0,357913941}function nNe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>357913941)Nt();else{d=Kt(l*12|0)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u*12|0)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l*12|0)}function iNe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function sNe(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~(((A+-12-l|0)>>>0)/12|0)*12|0)),o=n[o>>2]|0,o|0&&It(o)}function Kz(o){o=o|0,lNe(o)}function oNe(o){o=o|0,aNe(o+24|0)}function aNe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~(((l+-12-A|0)>>>0)/12|0)*12|0)),It(u))}function lNe(o){o=o|0;var l=0;l=en()|0,tn(o,2,8,l,cNe()|0,0),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function cNe(){return 1288}function uNe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0;return u=I,I=I+16|0,A=u+8|0,d=u,m=fNe(o)|0,o=n[m+4>>2]|0,n[d>>2]=n[m>>2],n[d+4>>2]=o,n[A>>2]=n[d>>2],n[A+4>>2]=n[d+4>>2],l=ANe(l,A)|0,I=u,l|0}function fNe(o){return o=o|0,(n[(kM()|0)+24>>2]|0)+(o*12|0)|0}function ANe(o,l){o=o|0,l=l|0;var u=0;return u=n[l>>2]|0,l=n[l+4>>2]|0,o=o+(l>>1)|0,l&1&&(u=n[(n[o>>2]|0)+u>>2]|0),sd(gd[u&31](o)|0)|0}function pNe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0;A=I,I=I+16|0,d=A+8|0,m=A,k=n[u>>2]|0,B=n[u+4>>2]|0,u=Bn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],hNe(o,u,d,0),I=A}function hNe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0,R=0,M=0,L=0;d=I,I=I+32|0,m=d+16|0,L=d+8|0,k=d,M=n[u>>2]|0,R=n[u+4>>2]|0,B=n[o>>2]|0,o=QM()|0,n[L>>2]=M,n[L+4>>2]=R,n[m>>2]=n[L>>2],n[m+4>>2]=n[L+4>>2],u=gNe(m)|0,n[k>>2]=M,n[k+4>>2]=R,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],vn(B,l,o,u,dNe(m,A)|0,A),I=d}function QM(){var o=0,l=0;if(s[7760]|0||(Zz(9756),gr(39,9756,U|0)|0,l=7760,n[l>>2]=1,n[l+4>>2]=0),!(_r(9756)|0)){o=9756,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));Zz(9756)}return 9756}function gNe(o){return o=o|0,0}function dNe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,R=0,M=0,L=0,q=0;return L=I,I=I+32|0,d=L+24|0,B=L+16|0,k=L,R=L+8|0,m=n[o>>2]|0,A=n[o+4>>2]|0,n[k>>2]=m,n[k+4>>2]=A,q=QM()|0,M=q+24|0,o=yr(l,4)|0,n[R>>2]=o,l=q+28|0,u=n[l>>2]|0,u>>>0<(n[q+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=A,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],zz(u,d,o),o=(n[l>>2]|0)+12|0,n[l>>2]=o):(mNe(M,k,R),o=n[l>>2]|0),I=L,((o-(n[M>>2]|0)|0)/12|0)+-1|0}function zz(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=n[l+4>>2]|0,n[o>>2]=n[l>>2],n[o+4>>2]=A,n[o+8>>2]=u}function mNe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,R=0,M=0,L=0,q=0,ae=0;if(M=I,I=I+48|0,A=M+32|0,B=M+24|0,k=M,R=o+4|0,d=(((n[R>>2]|0)-(n[o>>2]|0)|0)/12|0)+1|0,m=yNe(o)|0,m>>>0>>0)sn(o);else{L=n[o>>2]|0,ae=((n[o+8>>2]|0)-L|0)/12|0,q=ae<<1,ENe(k,ae>>>0>>1>>>0?q>>>0>>0?d:q:m,((n[R>>2]|0)-L|0)/12|0,o+8|0),R=k+8|0,m=n[R>>2]|0,d=n[l+4>>2]|0,u=n[u>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[A>>2]=n[B>>2],n[A+4>>2]=n[B+4>>2],zz(m,A,u),n[R>>2]=(n[R>>2]|0)+12,INe(o,k),CNe(k),I=M;return}}function yNe(o){return o=o|0,357913941}function ENe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>357913941)Nt();else{d=Kt(l*12|0)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u*12|0)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l*12|0)}function INe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function CNe(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~(((A+-12-l|0)>>>0)/12|0)*12|0)),o=n[o>>2]|0,o|0&&It(o)}function Zz(o){o=o|0,vNe(o)}function wNe(o){o=o|0,BNe(o+24|0)}function BNe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~(((l+-12-A|0)>>>0)/12|0)*12|0)),It(u))}function vNe(o){o=o|0;var l=0;l=en()|0,tn(o,2,8,l,SNe()|0,1),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function SNe(){return 1292}function DNe(o,l,u){o=o|0,l=l|0,u=+u;var A=0,d=0,m=0,B=0;A=I,I=I+16|0,d=A+8|0,m=A,B=PNe(o)|0,o=n[B+4>>2]|0,n[m>>2]=n[B>>2],n[m+4>>2]=o,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],bNe(l,d,u),I=A}function PNe(o){return o=o|0,(n[(QM()|0)+24>>2]|0)+(o*12|0)|0}function bNe(o,l,u){o=o|0,l=l|0,u=+u;var A=0,d=0,m=0;m=I,I=I+16|0,d=m,A=n[l>>2]|0,l=n[l+4>>2]|0,o=o+(l>>1)|0,l&1&&(A=n[(n[o>>2]|0)+A>>2]|0),Qf(d,u),u=+Rf(d,u),RX[A&31](o,u),I=m}function xNe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0;A=I,I=I+16|0,d=A+8|0,m=A,k=n[u>>2]|0,B=n[u+4>>2]|0,u=Bn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],kNe(o,u,d,0),I=A}function kNe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0,R=0,M=0,L=0;d=I,I=I+32|0,m=d+16|0,L=d+8|0,k=d,M=n[u>>2]|0,R=n[u+4>>2]|0,B=n[o>>2]|0,o=RM()|0,n[L>>2]=M,n[L+4>>2]=R,n[m>>2]=n[L>>2],n[m+4>>2]=n[L+4>>2],u=QNe(m)|0,n[k>>2]=M,n[k+4>>2]=R,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],vn(B,l,o,u,RNe(m,A)|0,A),I=d}function RM(){var o=0,l=0;if(s[7768]|0||($z(9792),gr(40,9792,U|0)|0,l=7768,n[l>>2]=1,n[l+4>>2]=0),!(_r(9792)|0)){o=9792,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));$z(9792)}return 9792}function QNe(o){return o=o|0,0}function RNe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,R=0,M=0,L=0,q=0;return L=I,I=I+32|0,d=L+24|0,B=L+16|0,k=L,R=L+8|0,m=n[o>>2]|0,A=n[o+4>>2]|0,n[k>>2]=m,n[k+4>>2]=A,q=RM()|0,M=q+24|0,o=yr(l,4)|0,n[R>>2]=o,l=q+28|0,u=n[l>>2]|0,u>>>0<(n[q+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=A,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],Xz(u,d,o),o=(n[l>>2]|0)+12|0,n[l>>2]=o):(TNe(M,k,R),o=n[l>>2]|0),I=L,((o-(n[M>>2]|0)|0)/12|0)+-1|0}function Xz(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=n[l+4>>2]|0,n[o>>2]=n[l>>2],n[o+4>>2]=A,n[o+8>>2]=u}function TNe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,R=0,M=0,L=0,q=0,ae=0;if(M=I,I=I+48|0,A=M+32|0,B=M+24|0,k=M,R=o+4|0,d=(((n[R>>2]|0)-(n[o>>2]|0)|0)/12|0)+1|0,m=FNe(o)|0,m>>>0>>0)sn(o);else{L=n[o>>2]|0,ae=((n[o+8>>2]|0)-L|0)/12|0,q=ae<<1,NNe(k,ae>>>0>>1>>>0?q>>>0>>0?d:q:m,((n[R>>2]|0)-L|0)/12|0,o+8|0),R=k+8|0,m=n[R>>2]|0,d=n[l+4>>2]|0,u=n[u>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[A>>2]=n[B>>2],n[A+4>>2]=n[B+4>>2],Xz(m,A,u),n[R>>2]=(n[R>>2]|0)+12,ONe(o,k),LNe(k),I=M;return}}function FNe(o){return o=o|0,357913941}function NNe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>357913941)Nt();else{d=Kt(l*12|0)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u*12|0)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l*12|0)}function ONe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function LNe(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~(((A+-12-l|0)>>>0)/12|0)*12|0)),o=n[o>>2]|0,o|0&&It(o)}function $z(o){o=o|0,_Ne(o)}function MNe(o){o=o|0,UNe(o+24|0)}function UNe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~(((l+-12-A|0)>>>0)/12|0)*12|0)),It(u))}function _Ne(o){o=o|0;var l=0;l=en()|0,tn(o,2,1,l,HNe()|0,2),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function HNe(){return 1300}function jNe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=+A;var d=0,m=0,B=0,k=0;d=I,I=I+16|0,m=d+8|0,B=d,k=GNe(o)|0,o=n[k+4>>2]|0,n[B>>2]=n[k>>2],n[B+4>>2]=o,n[m>>2]=n[B>>2],n[m+4>>2]=n[B+4>>2],qNe(l,m,u,A),I=d}function GNe(o){return o=o|0,(n[(RM()|0)+24>>2]|0)+(o*12|0)|0}function qNe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=+A;var d=0,m=0,B=0,k=0;k=I,I=I+16|0,m=k+1|0,B=k,d=n[l>>2]|0,l=n[l+4>>2]|0,o=o+(l>>1)|0,l&1&&(d=n[(n[o>>2]|0)+d>>2]|0),tp(m,u),m=rp(m,u)|0,Qf(B,A),A=+Rf(B,A),_X[d&15](o,m,A),I=k}function WNe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0;A=I,I=I+16|0,d=A+8|0,m=A,k=n[u>>2]|0,B=n[u+4>>2]|0,u=Bn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],YNe(o,u,d,0),I=A}function YNe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0,R=0,M=0,L=0;d=I,I=I+32|0,m=d+16|0,L=d+8|0,k=d,M=n[u>>2]|0,R=n[u+4>>2]|0,B=n[o>>2]|0,o=TM()|0,n[L>>2]=M,n[L+4>>2]=R,n[m>>2]=n[L>>2],n[m+4>>2]=n[L+4>>2],u=VNe(m)|0,n[k>>2]=M,n[k+4>>2]=R,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],vn(B,l,o,u,JNe(m,A)|0,A),I=d}function TM(){var o=0,l=0;if(s[7776]|0||(tZ(9828),gr(41,9828,U|0)|0,l=7776,n[l>>2]=1,n[l+4>>2]=0),!(_r(9828)|0)){o=9828,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));tZ(9828)}return 9828}function VNe(o){return o=o|0,0}function JNe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,R=0,M=0,L=0,q=0;return L=I,I=I+32|0,d=L+24|0,B=L+16|0,k=L,R=L+8|0,m=n[o>>2]|0,A=n[o+4>>2]|0,n[k>>2]=m,n[k+4>>2]=A,q=TM()|0,M=q+24|0,o=yr(l,4)|0,n[R>>2]=o,l=q+28|0,u=n[l>>2]|0,u>>>0<(n[q+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=A,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],eZ(u,d,o),o=(n[l>>2]|0)+12|0,n[l>>2]=o):(KNe(M,k,R),o=n[l>>2]|0),I=L,((o-(n[M>>2]|0)|0)/12|0)+-1|0}function eZ(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=n[l+4>>2]|0,n[o>>2]=n[l>>2],n[o+4>>2]=A,n[o+8>>2]=u}function KNe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,R=0,M=0,L=0,q=0,ae=0;if(M=I,I=I+48|0,A=M+32|0,B=M+24|0,k=M,R=o+4|0,d=(((n[R>>2]|0)-(n[o>>2]|0)|0)/12|0)+1|0,m=zNe(o)|0,m>>>0>>0)sn(o);else{L=n[o>>2]|0,ae=((n[o+8>>2]|0)-L|0)/12|0,q=ae<<1,ZNe(k,ae>>>0>>1>>>0?q>>>0>>0?d:q:m,((n[R>>2]|0)-L|0)/12|0,o+8|0),R=k+8|0,m=n[R>>2]|0,d=n[l+4>>2]|0,u=n[u>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[A>>2]=n[B>>2],n[A+4>>2]=n[B+4>>2],eZ(m,A,u),n[R>>2]=(n[R>>2]|0)+12,XNe(o,k),$Ne(k),I=M;return}}function zNe(o){return o=o|0,357913941}function ZNe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>357913941)Nt();else{d=Kt(l*12|0)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u*12|0)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l*12|0)}function XNe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function $Ne(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~(((A+-12-l|0)>>>0)/12|0)*12|0)),o=n[o>>2]|0,o|0&&It(o)}function tZ(o){o=o|0,rOe(o)}function eOe(o){o=o|0,tOe(o+24|0)}function tOe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~(((l+-12-A|0)>>>0)/12|0)*12|0)),It(u))}function rOe(o){o=o|0;var l=0;l=en()|0,tn(o,2,7,l,nOe()|0,1),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function nOe(){return 1312}function iOe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;A=I,I=I+16|0,d=A+8|0,m=A,B=sOe(o)|0,o=n[B+4>>2]|0,n[m>>2]=n[B>>2],n[m+4>>2]=o,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],oOe(l,d,u),I=A}function sOe(o){return o=o|0,(n[(TM()|0)+24>>2]|0)+(o*12|0)|0}function oOe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0;m=I,I=I+16|0,d=m,A=n[l>>2]|0,l=n[l+4>>2]|0,o=o+(l>>1)|0,l&1&&(A=n[(n[o>>2]|0)+A>>2]|0),tp(d,u),d=rp(d,u)|0,sp[A&31](o,d),I=m}function aOe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0;A=I,I=I+16|0,d=A+8|0,m=A,k=n[u>>2]|0,B=n[u+4>>2]|0,u=Bn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],lOe(o,u,d,0),I=A}function lOe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0,R=0,M=0,L=0;d=I,I=I+32|0,m=d+16|0,L=d+8|0,k=d,M=n[u>>2]|0,R=n[u+4>>2]|0,B=n[o>>2]|0,o=FM()|0,n[L>>2]=M,n[L+4>>2]=R,n[m>>2]=n[L>>2],n[m+4>>2]=n[L+4>>2],u=cOe(m)|0,n[k>>2]=M,n[k+4>>2]=R,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],vn(B,l,o,u,uOe(m,A)|0,A),I=d}function FM(){var o=0,l=0;if(s[7784]|0||(nZ(9864),gr(42,9864,U|0)|0,l=7784,n[l>>2]=1,n[l+4>>2]=0),!(_r(9864)|0)){o=9864,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));nZ(9864)}return 9864}function cOe(o){return o=o|0,0}function uOe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,R=0,M=0,L=0,q=0;return L=I,I=I+32|0,d=L+24|0,B=L+16|0,k=L,R=L+8|0,m=n[o>>2]|0,A=n[o+4>>2]|0,n[k>>2]=m,n[k+4>>2]=A,q=FM()|0,M=q+24|0,o=yr(l,4)|0,n[R>>2]=o,l=q+28|0,u=n[l>>2]|0,u>>>0<(n[q+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=A,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],rZ(u,d,o),o=(n[l>>2]|0)+12|0,n[l>>2]=o):(fOe(M,k,R),o=n[l>>2]|0),I=L,((o-(n[M>>2]|0)|0)/12|0)+-1|0}function rZ(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=n[l+4>>2]|0,n[o>>2]=n[l>>2],n[o+4>>2]=A,n[o+8>>2]=u}function fOe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,R=0,M=0,L=0,q=0,ae=0;if(M=I,I=I+48|0,A=M+32|0,B=M+24|0,k=M,R=o+4|0,d=(((n[R>>2]|0)-(n[o>>2]|0)|0)/12|0)+1|0,m=AOe(o)|0,m>>>0>>0)sn(o);else{L=n[o>>2]|0,ae=((n[o+8>>2]|0)-L|0)/12|0,q=ae<<1,pOe(k,ae>>>0>>1>>>0?q>>>0>>0?d:q:m,((n[R>>2]|0)-L|0)/12|0,o+8|0),R=k+8|0,m=n[R>>2]|0,d=n[l+4>>2]|0,u=n[u>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[A>>2]=n[B>>2],n[A+4>>2]=n[B+4>>2],rZ(m,A,u),n[R>>2]=(n[R>>2]|0)+12,hOe(o,k),gOe(k),I=M;return}}function AOe(o){return o=o|0,357913941}function pOe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>357913941)Nt();else{d=Kt(l*12|0)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u*12|0)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l*12|0)}function hOe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function gOe(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~(((A+-12-l|0)>>>0)/12|0)*12|0)),o=n[o>>2]|0,o|0&&It(o)}function nZ(o){o=o|0,yOe(o)}function dOe(o){o=o|0,mOe(o+24|0)}function mOe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~(((l+-12-A|0)>>>0)/12|0)*12|0)),It(u))}function yOe(o){o=o|0;var l=0;l=en()|0,tn(o,2,8,l,EOe()|0,1),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function EOe(){return 1320}function IOe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;A=I,I=I+16|0,d=A+8|0,m=A,B=COe(o)|0,o=n[B+4>>2]|0,n[m>>2]=n[B>>2],n[m+4>>2]=o,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],wOe(l,d,u),I=A}function COe(o){return o=o|0,(n[(FM()|0)+24>>2]|0)+(o*12|0)|0}function wOe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0;m=I,I=I+16|0,d=m,A=n[l>>2]|0,l=n[l+4>>2]|0,o=o+(l>>1)|0,l&1&&(A=n[(n[o>>2]|0)+A>>2]|0),BOe(d,u),d=vOe(d,u)|0,sp[A&31](o,d),I=m}function BOe(o,l){o=o|0,l=l|0}function vOe(o,l){return o=o|0,l=l|0,SOe(l)|0}function SOe(o){return o=o|0,o|0}function DOe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0;A=I,I=I+16|0,d=A+8|0,m=A,k=n[u>>2]|0,B=n[u+4>>2]|0,u=Bn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],POe(o,u,d,0),I=A}function POe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0,R=0,M=0,L=0;d=I,I=I+32|0,m=d+16|0,L=d+8|0,k=d,M=n[u>>2]|0,R=n[u+4>>2]|0,B=n[o>>2]|0,o=NM()|0,n[L>>2]=M,n[L+4>>2]=R,n[m>>2]=n[L>>2],n[m+4>>2]=n[L+4>>2],u=bOe(m)|0,n[k>>2]=M,n[k+4>>2]=R,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],vn(B,l,o,u,xOe(m,A)|0,A),I=d}function NM(){var o=0,l=0;if(s[7792]|0||(sZ(9900),gr(43,9900,U|0)|0,l=7792,n[l>>2]=1,n[l+4>>2]=0),!(_r(9900)|0)){o=9900,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));sZ(9900)}return 9900}function bOe(o){return o=o|0,0}function xOe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,R=0,M=0,L=0,q=0;return L=I,I=I+32|0,d=L+24|0,B=L+16|0,k=L,R=L+8|0,m=n[o>>2]|0,A=n[o+4>>2]|0,n[k>>2]=m,n[k+4>>2]=A,q=NM()|0,M=q+24|0,o=yr(l,4)|0,n[R>>2]=o,l=q+28|0,u=n[l>>2]|0,u>>>0<(n[q+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=A,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],iZ(u,d,o),o=(n[l>>2]|0)+12|0,n[l>>2]=o):(kOe(M,k,R),o=n[l>>2]|0),I=L,((o-(n[M>>2]|0)|0)/12|0)+-1|0}function iZ(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=n[l+4>>2]|0,n[o>>2]=n[l>>2],n[o+4>>2]=A,n[o+8>>2]=u}function kOe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,R=0,M=0,L=0,q=0,ae=0;if(M=I,I=I+48|0,A=M+32|0,B=M+24|0,k=M,R=o+4|0,d=(((n[R>>2]|0)-(n[o>>2]|0)|0)/12|0)+1|0,m=QOe(o)|0,m>>>0>>0)sn(o);else{L=n[o>>2]|0,ae=((n[o+8>>2]|0)-L|0)/12|0,q=ae<<1,ROe(k,ae>>>0>>1>>>0?q>>>0>>0?d:q:m,((n[R>>2]|0)-L|0)/12|0,o+8|0),R=k+8|0,m=n[R>>2]|0,d=n[l+4>>2]|0,u=n[u>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[A>>2]=n[B>>2],n[A+4>>2]=n[B+4>>2],iZ(m,A,u),n[R>>2]=(n[R>>2]|0)+12,TOe(o,k),FOe(k),I=M;return}}function QOe(o){return o=o|0,357913941}function ROe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>357913941)Nt();else{d=Kt(l*12|0)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u*12|0)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l*12|0)}function TOe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function FOe(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~(((A+-12-l|0)>>>0)/12|0)*12|0)),o=n[o>>2]|0,o|0&&It(o)}function sZ(o){o=o|0,LOe(o)}function NOe(o){o=o|0,OOe(o+24|0)}function OOe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~(((l+-12-A|0)>>>0)/12|0)*12|0)),It(u))}function LOe(o){o=o|0;var l=0;l=en()|0,tn(o,2,22,l,MOe()|0,0),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function MOe(){return 1344}function UOe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0;u=I,I=I+16|0,A=u+8|0,d=u,m=_Oe(o)|0,o=n[m+4>>2]|0,n[d>>2]=n[m>>2],n[d+4>>2]=o,n[A>>2]=n[d>>2],n[A+4>>2]=n[d+4>>2],HOe(l,A),I=u}function _Oe(o){return o=o|0,(n[(NM()|0)+24>>2]|0)+(o*12|0)|0}function HOe(o,l){o=o|0,l=l|0;var u=0;u=n[l>>2]|0,l=n[l+4>>2]|0,o=o+(l>>1)|0,l&1&&(u=n[(n[o>>2]|0)+u>>2]|0),ip[u&127](o)}function jOe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0;m=n[o>>2]|0,d=OM()|0,o=GOe(u)|0,vn(m,l,d,o,qOe(u,A)|0,A)}function OM(){var o=0,l=0;if(s[7800]|0||(aZ(9936),gr(44,9936,U|0)|0,l=7800,n[l>>2]=1,n[l+4>>2]=0),!(_r(9936)|0)){o=9936,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));aZ(9936)}return 9936}function GOe(o){return o=o|0,o|0}function qOe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,R=0;return k=I,I=I+16|0,d=k,m=k+4|0,n[d>>2]=o,R=OM()|0,B=R+24|0,l=yr(l,4)|0,n[m>>2]=l,u=R+28|0,A=n[u>>2]|0,A>>>0<(n[R+32>>2]|0)>>>0?(oZ(A,o,l),l=(n[u>>2]|0)+8|0,n[u>>2]=l):(WOe(B,d,m),l=n[u>>2]|0),I=k,(l-(n[B>>2]|0)>>3)+-1|0}function oZ(o,l,u){o=o|0,l=l|0,u=u|0,n[o>>2]=l,n[o+4>>2]=u}function WOe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,R=0,M=0,L=0;if(k=I,I=I+32|0,d=k,m=o+4|0,B=((n[m>>2]|0)-(n[o>>2]|0)>>3)+1|0,A=YOe(o)|0,A>>>0>>0)sn(o);else{R=n[o>>2]|0,L=(n[o+8>>2]|0)-R|0,M=L>>2,VOe(d,L>>3>>>0>>1>>>0?M>>>0>>0?B:M:A,(n[m>>2]|0)-R>>3,o+8|0),B=d+8|0,oZ(n[B>>2]|0,n[l>>2]|0,n[u>>2]|0),n[B>>2]=(n[B>>2]|0)+8,JOe(o,d),KOe(d),I=k;return}}function YOe(o){return o=o|0,536870911}function VOe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>536870911)Nt();else{d=Kt(l<<3)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u<<3)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l<<3)}function JOe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(0-(d>>3)<<3)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function KOe(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~((A+-8-l|0)>>>3)<<3)),o=n[o>>2]|0,o|0&&It(o)}function aZ(o){o=o|0,XOe(o)}function zOe(o){o=o|0,ZOe(o+24|0)}function ZOe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~((l+-8-A|0)>>>3)<<3)),It(u))}function XOe(o){o=o|0;var l=0;l=en()|0,tn(o,1,23,l,Nz()|0,1),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function $Oe(o,l){o=o|0,l=l|0,tLe(n[(eLe(o)|0)>>2]|0,l)}function eLe(o){return o=o|0,(n[(OM()|0)+24>>2]|0)+(o<<3)|0}function tLe(o,l){o=o|0,l=l|0;var u=0,A=0;u=I,I=I+16|0,A=u,wM(A,l),l=BM(A,l)|0,ip[o&127](l),I=u}function rLe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0;m=n[o>>2]|0,d=LM()|0,o=nLe(u)|0,vn(m,l,d,o,iLe(u,A)|0,A)}function LM(){var o=0,l=0;if(s[7808]|0||(cZ(9972),gr(45,9972,U|0)|0,l=7808,n[l>>2]=1,n[l+4>>2]=0),!(_r(9972)|0)){o=9972,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));cZ(9972)}return 9972}function nLe(o){return o=o|0,o|0}function iLe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,R=0;return k=I,I=I+16|0,d=k,m=k+4|0,n[d>>2]=o,R=LM()|0,B=R+24|0,l=yr(l,4)|0,n[m>>2]=l,u=R+28|0,A=n[u>>2]|0,A>>>0<(n[R+32>>2]|0)>>>0?(lZ(A,o,l),l=(n[u>>2]|0)+8|0,n[u>>2]=l):(sLe(B,d,m),l=n[u>>2]|0),I=k,(l-(n[B>>2]|0)>>3)+-1|0}function lZ(o,l,u){o=o|0,l=l|0,u=u|0,n[o>>2]=l,n[o+4>>2]=u}function sLe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,R=0,M=0,L=0;if(k=I,I=I+32|0,d=k,m=o+4|0,B=((n[m>>2]|0)-(n[o>>2]|0)>>3)+1|0,A=oLe(o)|0,A>>>0>>0)sn(o);else{R=n[o>>2]|0,L=(n[o+8>>2]|0)-R|0,M=L>>2,aLe(d,L>>3>>>0>>1>>>0?M>>>0>>0?B:M:A,(n[m>>2]|0)-R>>3,o+8|0),B=d+8|0,lZ(n[B>>2]|0,n[l>>2]|0,n[u>>2]|0),n[B>>2]=(n[B>>2]|0)+8,lLe(o,d),cLe(d),I=k;return}}function oLe(o){return o=o|0,536870911}function aLe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>536870911)Nt();else{d=Kt(l<<3)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u<<3)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l<<3)}function lLe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(0-(d>>3)<<3)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function cLe(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~((A+-8-l|0)>>>3)<<3)),o=n[o>>2]|0,o|0&&It(o)}function cZ(o){o=o|0,ALe(o)}function uLe(o){o=o|0,fLe(o+24|0)}function fLe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~((l+-8-A|0)>>>3)<<3)),It(u))}function ALe(o){o=o|0;var l=0;l=en()|0,tn(o,1,9,l,pLe()|0,1),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function pLe(){return 1348}function hLe(o,l){return o=o|0,l=l|0,dLe(n[(gLe(o)|0)>>2]|0,l)|0}function gLe(o){return o=o|0,(n[(LM()|0)+24>>2]|0)+(o<<3)|0}function dLe(o,l){o=o|0,l=l|0;var u=0,A=0;return u=I,I=I+16|0,A=u,uZ(A,l),l=fZ(A,l)|0,l=Rb(gd[o&31](l)|0)|0,I=u,l|0}function uZ(o,l){o=o|0,l=l|0}function fZ(o,l){return o=o|0,l=l|0,mLe(l)|0}function mLe(o){return o=o|0,o|0}function yLe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0;m=n[o>>2]|0,d=MM()|0,o=ELe(u)|0,vn(m,l,d,o,ILe(u,A)|0,A)}function MM(){var o=0,l=0;if(s[7816]|0||(pZ(10008),gr(46,10008,U|0)|0,l=7816,n[l>>2]=1,n[l+4>>2]=0),!(_r(10008)|0)){o=10008,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));pZ(10008)}return 10008}function ELe(o){return o=o|0,o|0}function ILe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,R=0;return k=I,I=I+16|0,d=k,m=k+4|0,n[d>>2]=o,R=MM()|0,B=R+24|0,l=yr(l,4)|0,n[m>>2]=l,u=R+28|0,A=n[u>>2]|0,A>>>0<(n[R+32>>2]|0)>>>0?(AZ(A,o,l),l=(n[u>>2]|0)+8|0,n[u>>2]=l):(CLe(B,d,m),l=n[u>>2]|0),I=k,(l-(n[B>>2]|0)>>3)+-1|0}function AZ(o,l,u){o=o|0,l=l|0,u=u|0,n[o>>2]=l,n[o+4>>2]=u}function CLe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,R=0,M=0,L=0;if(k=I,I=I+32|0,d=k,m=o+4|0,B=((n[m>>2]|0)-(n[o>>2]|0)>>3)+1|0,A=wLe(o)|0,A>>>0>>0)sn(o);else{R=n[o>>2]|0,L=(n[o+8>>2]|0)-R|0,M=L>>2,BLe(d,L>>3>>>0>>1>>>0?M>>>0>>0?B:M:A,(n[m>>2]|0)-R>>3,o+8|0),B=d+8|0,AZ(n[B>>2]|0,n[l>>2]|0,n[u>>2]|0),n[B>>2]=(n[B>>2]|0)+8,vLe(o,d),SLe(d),I=k;return}}function wLe(o){return o=o|0,536870911}function BLe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>536870911)Nt();else{d=Kt(l<<3)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u<<3)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l<<3)}function vLe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(0-(d>>3)<<3)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function SLe(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~((A+-8-l|0)>>>3)<<3)),o=n[o>>2]|0,o|0&&It(o)}function pZ(o){o=o|0,bLe(o)}function DLe(o){o=o|0,PLe(o+24|0)}function PLe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~((l+-8-A|0)>>>3)<<3)),It(u))}function bLe(o){o=o|0;var l=0;l=en()|0,tn(o,1,15,l,xz()|0,0),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function xLe(o){return o=o|0,QLe(n[(kLe(o)|0)>>2]|0)|0}function kLe(o){return o=o|0,(n[(MM()|0)+24>>2]|0)+(o<<3)|0}function QLe(o){return o=o|0,Rb(Vb[o&7]()|0)|0}function RLe(){var o=0;return s[7832]|0||(_Le(10052),gr(25,10052,U|0)|0,o=7832,n[o>>2]=1,n[o+4>>2]=0),10052}function TLe(o,l){o=o|0,l=l|0,n[o>>2]=FLe()|0,n[o+4>>2]=NLe()|0,n[o+12>>2]=l,n[o+8>>2]=OLe()|0,n[o+32>>2]=2}function FLe(){return 11709}function NLe(){return 1188}function OLe(){return Fb()|0}function LLe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0,(Hh(A,896)|0)==512?u|0&&(MLe(u),It(u)):l|0&&(Oy(l),It(l))}function Hh(o,l){return o=o|0,l=l|0,l&o|0}function MLe(o){o=o|0,o=n[o+4>>2]|0,o|0&&Gh(o)}function Fb(){var o=0;return s[7824]|0||(n[2511]=ULe()|0,n[2512]=0,o=7824,n[o>>2]=1,n[o+4>>2]=0),10044}function ULe(){return 0}function _Le(o){o=o|0,Lh(o)}function HLe(o){o=o|0;var l=0,u=0,A=0,d=0,m=0;l=I,I=I+32|0,u=l+24|0,m=l+16|0,d=l+8|0,A=l,jLe(o,4827),GLe(o,4834,3)|0,qLe(o,3682,47)|0,n[m>>2]=9,n[m+4>>2]=0,n[u>>2]=n[m>>2],n[u+4>>2]=n[m+4>>2],WLe(o,4841,u)|0,n[d>>2]=1,n[d+4>>2]=0,n[u>>2]=n[d>>2],n[u+4>>2]=n[d+4>>2],YLe(o,4871,u)|0,n[A>>2]=10,n[A+4>>2]=0,n[u>>2]=n[A>>2],n[u+4>>2]=n[A+4>>2],VLe(o,4891,u)|0,I=l}function jLe(o,l){o=o|0,l=l|0;var u=0;u=SUe()|0,n[o>>2]=u,DUe(u,l),jh(n[o>>2]|0)}function GLe(o,l,u){return o=o|0,l=l|0,u=u|0,cUe(o,Bn(l)|0,u,0),o|0}function qLe(o,l,u){return o=o|0,l=l|0,u=u|0,JMe(o,Bn(l)|0,u,0),o|0}function WLe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;return A=I,I=I+16|0,d=A+8|0,m=A,B=n[u+4>>2]|0,n[m>>2]=n[u>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],xMe(o,l,d),I=A,o|0}function YLe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;return A=I,I=I+16|0,d=A+8|0,m=A,B=n[u+4>>2]|0,n[m>>2]=n[u>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],uMe(o,l,d),I=A,o|0}function VLe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;return A=I,I=I+16|0,d=A+8|0,m=A,B=n[u+4>>2]|0,n[m>>2]=n[u>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],JLe(o,l,d),I=A,o|0}function JLe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0;A=I,I=I+16|0,d=A+8|0,m=A,k=n[u>>2]|0,B=n[u+4>>2]|0,u=Bn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],KLe(o,u,d,1),I=A}function KLe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0,R=0,M=0,L=0;d=I,I=I+32|0,m=d+16|0,L=d+8|0,k=d,M=n[u>>2]|0,R=n[u+4>>2]|0,B=n[o>>2]|0,o=UM()|0,n[L>>2]=M,n[L+4>>2]=R,n[m>>2]=n[L>>2],n[m+4>>2]=n[L+4>>2],u=zLe(m)|0,n[k>>2]=M,n[k+4>>2]=R,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],vn(B,l,o,u,ZLe(m,A)|0,A),I=d}function UM(){var o=0,l=0;if(s[7840]|0||(gZ(10100),gr(48,10100,U|0)|0,l=7840,n[l>>2]=1,n[l+4>>2]=0),!(_r(10100)|0)){o=10100,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));gZ(10100)}return 10100}function zLe(o){return o=o|0,0}function ZLe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,R=0,M=0,L=0,q=0;return L=I,I=I+32|0,d=L+24|0,B=L+16|0,k=L,R=L+8|0,m=n[o>>2]|0,A=n[o+4>>2]|0,n[k>>2]=m,n[k+4>>2]=A,q=UM()|0,M=q+24|0,o=yr(l,4)|0,n[R>>2]=o,l=q+28|0,u=n[l>>2]|0,u>>>0<(n[q+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=A,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],hZ(u,d,o),o=(n[l>>2]|0)+12|0,n[l>>2]=o):(XLe(M,k,R),o=n[l>>2]|0),I=L,((o-(n[M>>2]|0)|0)/12|0)+-1|0}function hZ(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=n[l+4>>2]|0,n[o>>2]=n[l>>2],n[o+4>>2]=A,n[o+8>>2]=u}function XLe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,R=0,M=0,L=0,q=0,ae=0;if(M=I,I=I+48|0,A=M+32|0,B=M+24|0,k=M,R=o+4|0,d=(((n[R>>2]|0)-(n[o>>2]|0)|0)/12|0)+1|0,m=$Le(o)|0,m>>>0>>0)sn(o);else{L=n[o>>2]|0,ae=((n[o+8>>2]|0)-L|0)/12|0,q=ae<<1,eMe(k,ae>>>0>>1>>>0?q>>>0>>0?d:q:m,((n[R>>2]|0)-L|0)/12|0,o+8|0),R=k+8|0,m=n[R>>2]|0,d=n[l+4>>2]|0,u=n[u>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[A>>2]=n[B>>2],n[A+4>>2]=n[B+4>>2],hZ(m,A,u),n[R>>2]=(n[R>>2]|0)+12,tMe(o,k),rMe(k),I=M;return}}function $Le(o){return o=o|0,357913941}function eMe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>357913941)Nt();else{d=Kt(l*12|0)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u*12|0)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l*12|0)}function tMe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function rMe(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~(((A+-12-l|0)>>>0)/12|0)*12|0)),o=n[o>>2]|0,o|0&&It(o)}function gZ(o){o=o|0,sMe(o)}function nMe(o){o=o|0,iMe(o+24|0)}function iMe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~(((l+-12-A|0)>>>0)/12|0)*12|0)),It(u))}function sMe(o){o=o|0;var l=0;l=en()|0,tn(o,2,6,l,oMe()|0,1),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function oMe(){return 1364}function aMe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;return A=I,I=I+16|0,d=A+8|0,m=A,B=lMe(o)|0,o=n[B+4>>2]|0,n[m>>2]=n[B>>2],n[m+4>>2]=o,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],u=cMe(l,d,u)|0,I=A,u|0}function lMe(o){return o=o|0,(n[(UM()|0)+24>>2]|0)+(o*12|0)|0}function cMe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0;return m=I,I=I+16|0,d=m,A=n[l>>2]|0,l=n[l+4>>2]|0,o=o+(l>>1)|0,l&1&&(A=n[(n[o>>2]|0)+A>>2]|0),tp(d,u),d=rp(d,u)|0,d=wz(hU[A&15](o,d)|0)|0,I=m,d|0}function uMe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0;A=I,I=I+16|0,d=A+8|0,m=A,k=n[u>>2]|0,B=n[u+4>>2]|0,u=Bn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],fMe(o,u,d,0),I=A}function fMe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0,R=0,M=0,L=0;d=I,I=I+32|0,m=d+16|0,L=d+8|0,k=d,M=n[u>>2]|0,R=n[u+4>>2]|0,B=n[o>>2]|0,o=_M()|0,n[L>>2]=M,n[L+4>>2]=R,n[m>>2]=n[L>>2],n[m+4>>2]=n[L+4>>2],u=AMe(m)|0,n[k>>2]=M,n[k+4>>2]=R,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],vn(B,l,o,u,pMe(m,A)|0,A),I=d}function _M(){var o=0,l=0;if(s[7848]|0||(mZ(10136),gr(49,10136,U|0)|0,l=7848,n[l>>2]=1,n[l+4>>2]=0),!(_r(10136)|0)){o=10136,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));mZ(10136)}return 10136}function AMe(o){return o=o|0,0}function pMe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,R=0,M=0,L=0,q=0;return L=I,I=I+32|0,d=L+24|0,B=L+16|0,k=L,R=L+8|0,m=n[o>>2]|0,A=n[o+4>>2]|0,n[k>>2]=m,n[k+4>>2]=A,q=_M()|0,M=q+24|0,o=yr(l,4)|0,n[R>>2]=o,l=q+28|0,u=n[l>>2]|0,u>>>0<(n[q+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=A,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],dZ(u,d,o),o=(n[l>>2]|0)+12|0,n[l>>2]=o):(hMe(M,k,R),o=n[l>>2]|0),I=L,((o-(n[M>>2]|0)|0)/12|0)+-1|0}function dZ(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=n[l+4>>2]|0,n[o>>2]=n[l>>2],n[o+4>>2]=A,n[o+8>>2]=u}function hMe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,R=0,M=0,L=0,q=0,ae=0;if(M=I,I=I+48|0,A=M+32|0,B=M+24|0,k=M,R=o+4|0,d=(((n[R>>2]|0)-(n[o>>2]|0)|0)/12|0)+1|0,m=gMe(o)|0,m>>>0>>0)sn(o);else{L=n[o>>2]|0,ae=((n[o+8>>2]|0)-L|0)/12|0,q=ae<<1,dMe(k,ae>>>0>>1>>>0?q>>>0>>0?d:q:m,((n[R>>2]|0)-L|0)/12|0,o+8|0),R=k+8|0,m=n[R>>2]|0,d=n[l+4>>2]|0,u=n[u>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[A>>2]=n[B>>2],n[A+4>>2]=n[B+4>>2],dZ(m,A,u),n[R>>2]=(n[R>>2]|0)+12,mMe(o,k),yMe(k),I=M;return}}function gMe(o){return o=o|0,357913941}function dMe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>357913941)Nt();else{d=Kt(l*12|0)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u*12|0)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l*12|0)}function mMe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function yMe(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~(((A+-12-l|0)>>>0)/12|0)*12|0)),o=n[o>>2]|0,o|0&&It(o)}function mZ(o){o=o|0,CMe(o)}function EMe(o){o=o|0,IMe(o+24|0)}function IMe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~(((l+-12-A|0)>>>0)/12|0)*12|0)),It(u))}function CMe(o){o=o|0;var l=0;l=en()|0,tn(o,2,9,l,wMe()|0,1),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function wMe(){return 1372}function BMe(o,l,u){o=o|0,l=l|0,u=+u;var A=0,d=0,m=0,B=0;A=I,I=I+16|0,d=A+8|0,m=A,B=vMe(o)|0,o=n[B+4>>2]|0,n[m>>2]=n[B>>2],n[m+4>>2]=o,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],SMe(l,d,u),I=A}function vMe(o){return o=o|0,(n[(_M()|0)+24>>2]|0)+(o*12|0)|0}function SMe(o,l,u){o=o|0,l=l|0,u=+u;var A=0,d=0,m=0,B=$e;m=I,I=I+16|0,d=m,A=n[l>>2]|0,l=n[l+4>>2]|0,o=o+(l>>1)|0,l&1&&(A=n[(n[o>>2]|0)+A>>2]|0),DMe(d,u),B=y(PMe(d,u)),QX[A&1](o,B),I=m}function DMe(o,l){o=o|0,l=+l}function PMe(o,l){return o=o|0,l=+l,y(bMe(l))}function bMe(o){return o=+o,y(o)}function xMe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0;A=I,I=I+16|0,d=A+8|0,m=A,k=n[u>>2]|0,B=n[u+4>>2]|0,u=Bn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],kMe(o,u,d,0),I=A}function kMe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0,R=0,M=0,L=0;d=I,I=I+32|0,m=d+16|0,L=d+8|0,k=d,M=n[u>>2]|0,R=n[u+4>>2]|0,B=n[o>>2]|0,o=HM()|0,n[L>>2]=M,n[L+4>>2]=R,n[m>>2]=n[L>>2],n[m+4>>2]=n[L+4>>2],u=QMe(m)|0,n[k>>2]=M,n[k+4>>2]=R,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],vn(B,l,o,u,RMe(m,A)|0,A),I=d}function HM(){var o=0,l=0;if(s[7856]|0||(EZ(10172),gr(50,10172,U|0)|0,l=7856,n[l>>2]=1,n[l+4>>2]=0),!(_r(10172)|0)){o=10172,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));EZ(10172)}return 10172}function QMe(o){return o=o|0,0}function RMe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,R=0,M=0,L=0,q=0;return L=I,I=I+32|0,d=L+24|0,B=L+16|0,k=L,R=L+8|0,m=n[o>>2]|0,A=n[o+4>>2]|0,n[k>>2]=m,n[k+4>>2]=A,q=HM()|0,M=q+24|0,o=yr(l,4)|0,n[R>>2]=o,l=q+28|0,u=n[l>>2]|0,u>>>0<(n[q+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=A,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],yZ(u,d,o),o=(n[l>>2]|0)+12|0,n[l>>2]=o):(TMe(M,k,R),o=n[l>>2]|0),I=L,((o-(n[M>>2]|0)|0)/12|0)+-1|0}function yZ(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=n[l+4>>2]|0,n[o>>2]=n[l>>2],n[o+4>>2]=A,n[o+8>>2]=u}function TMe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,R=0,M=0,L=0,q=0,ae=0;if(M=I,I=I+48|0,A=M+32|0,B=M+24|0,k=M,R=o+4|0,d=(((n[R>>2]|0)-(n[o>>2]|0)|0)/12|0)+1|0,m=FMe(o)|0,m>>>0>>0)sn(o);else{L=n[o>>2]|0,ae=((n[o+8>>2]|0)-L|0)/12|0,q=ae<<1,NMe(k,ae>>>0>>1>>>0?q>>>0>>0?d:q:m,((n[R>>2]|0)-L|0)/12|0,o+8|0),R=k+8|0,m=n[R>>2]|0,d=n[l+4>>2]|0,u=n[u>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[A>>2]=n[B>>2],n[A+4>>2]=n[B+4>>2],yZ(m,A,u),n[R>>2]=(n[R>>2]|0)+12,OMe(o,k),LMe(k),I=M;return}}function FMe(o){return o=o|0,357913941}function NMe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>357913941)Nt();else{d=Kt(l*12|0)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u*12|0)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l*12|0)}function OMe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function LMe(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~(((A+-12-l|0)>>>0)/12|0)*12|0)),o=n[o>>2]|0,o|0&&It(o)}function EZ(o){o=o|0,_Me(o)}function MMe(o){o=o|0,UMe(o+24|0)}function UMe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~(((l+-12-A|0)>>>0)/12|0)*12|0)),It(u))}function _Me(o){o=o|0;var l=0;l=en()|0,tn(o,2,3,l,HMe()|0,2),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function HMe(){return 1380}function jMe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0;d=I,I=I+16|0,m=d+8|0,B=d,k=GMe(o)|0,o=n[k+4>>2]|0,n[B>>2]=n[k>>2],n[B+4>>2]=o,n[m>>2]=n[B>>2],n[m+4>>2]=n[B+4>>2],qMe(l,m,u,A),I=d}function GMe(o){return o=o|0,(n[(HM()|0)+24>>2]|0)+(o*12|0)|0}function qMe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0;k=I,I=I+16|0,m=k+1|0,B=k,d=n[l>>2]|0,l=n[l+4>>2]|0,o=o+(l>>1)|0,l&1&&(d=n[(n[o>>2]|0)+d>>2]|0),tp(m,u),m=rp(m,u)|0,WMe(B,A),B=YMe(B,A)|0,F2[d&15](o,m,B),I=k}function WMe(o,l){o=o|0,l=l|0}function YMe(o,l){return o=o|0,l=l|0,VMe(l)|0}function VMe(o){return o=o|0,(o|0)!=0|0}function JMe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0;m=n[o>>2]|0,d=jM()|0,o=KMe(u)|0,vn(m,l,d,o,zMe(u,A)|0,A)}function jM(){var o=0,l=0;if(s[7864]|0||(CZ(10208),gr(51,10208,U|0)|0,l=7864,n[l>>2]=1,n[l+4>>2]=0),!(_r(10208)|0)){o=10208,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));CZ(10208)}return 10208}function KMe(o){return o=o|0,o|0}function zMe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,R=0;return k=I,I=I+16|0,d=k,m=k+4|0,n[d>>2]=o,R=jM()|0,B=R+24|0,l=yr(l,4)|0,n[m>>2]=l,u=R+28|0,A=n[u>>2]|0,A>>>0<(n[R+32>>2]|0)>>>0?(IZ(A,o,l),l=(n[u>>2]|0)+8|0,n[u>>2]=l):(ZMe(B,d,m),l=n[u>>2]|0),I=k,(l-(n[B>>2]|0)>>3)+-1|0}function IZ(o,l,u){o=o|0,l=l|0,u=u|0,n[o>>2]=l,n[o+4>>2]=u}function ZMe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,R=0,M=0,L=0;if(k=I,I=I+32|0,d=k,m=o+4|0,B=((n[m>>2]|0)-(n[o>>2]|0)>>3)+1|0,A=XMe(o)|0,A>>>0>>0)sn(o);else{R=n[o>>2]|0,L=(n[o+8>>2]|0)-R|0,M=L>>2,$Me(d,L>>3>>>0>>1>>>0?M>>>0>>0?B:M:A,(n[m>>2]|0)-R>>3,o+8|0),B=d+8|0,IZ(n[B>>2]|0,n[l>>2]|0,n[u>>2]|0),n[B>>2]=(n[B>>2]|0)+8,eUe(o,d),tUe(d),I=k;return}}function XMe(o){return o=o|0,536870911}function $Me(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>536870911)Nt();else{d=Kt(l<<3)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u<<3)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l<<3)}function eUe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(0-(d>>3)<<3)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function tUe(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~((A+-8-l|0)>>>3)<<3)),o=n[o>>2]|0,o|0&&It(o)}function CZ(o){o=o|0,iUe(o)}function rUe(o){o=o|0,nUe(o+24|0)}function nUe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~((l+-8-A|0)>>>3)<<3)),It(u))}function iUe(o){o=o|0;var l=0;l=en()|0,tn(o,1,24,l,sUe()|0,1),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function sUe(){return 1392}function oUe(o,l){o=o|0,l=l|0,lUe(n[(aUe(o)|0)>>2]|0,l)}function aUe(o){return o=o|0,(n[(jM()|0)+24>>2]|0)+(o<<3)|0}function lUe(o,l){o=o|0,l=l|0;var u=0,A=0;u=I,I=I+16|0,A=u,uZ(A,l),l=fZ(A,l)|0,ip[o&127](l),I=u}function cUe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0;m=n[o>>2]|0,d=GM()|0,o=uUe(u)|0,vn(m,l,d,o,fUe(u,A)|0,A)}function GM(){var o=0,l=0;if(s[7872]|0||(BZ(10244),gr(52,10244,U|0)|0,l=7872,n[l>>2]=1,n[l+4>>2]=0),!(_r(10244)|0)){o=10244,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));BZ(10244)}return 10244}function uUe(o){return o=o|0,o|0}function fUe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,R=0;return k=I,I=I+16|0,d=k,m=k+4|0,n[d>>2]=o,R=GM()|0,B=R+24|0,l=yr(l,4)|0,n[m>>2]=l,u=R+28|0,A=n[u>>2]|0,A>>>0<(n[R+32>>2]|0)>>>0?(wZ(A,o,l),l=(n[u>>2]|0)+8|0,n[u>>2]=l):(AUe(B,d,m),l=n[u>>2]|0),I=k,(l-(n[B>>2]|0)>>3)+-1|0}function wZ(o,l,u){o=o|0,l=l|0,u=u|0,n[o>>2]=l,n[o+4>>2]=u}function AUe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,R=0,M=0,L=0;if(k=I,I=I+32|0,d=k,m=o+4|0,B=((n[m>>2]|0)-(n[o>>2]|0)>>3)+1|0,A=pUe(o)|0,A>>>0>>0)sn(o);else{R=n[o>>2]|0,L=(n[o+8>>2]|0)-R|0,M=L>>2,hUe(d,L>>3>>>0>>1>>>0?M>>>0>>0?B:M:A,(n[m>>2]|0)-R>>3,o+8|0),B=d+8|0,wZ(n[B>>2]|0,n[l>>2]|0,n[u>>2]|0),n[B>>2]=(n[B>>2]|0)+8,gUe(o,d),dUe(d),I=k;return}}function pUe(o){return o=o|0,536870911}function hUe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>536870911)Nt();else{d=Kt(l<<3)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u<<3)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l<<3)}function gUe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(0-(d>>3)<<3)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function dUe(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~((A+-8-l|0)>>>3)<<3)),o=n[o>>2]|0,o|0&&It(o)}function BZ(o){o=o|0,EUe(o)}function mUe(o){o=o|0,yUe(o+24|0)}function yUe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~((l+-8-A|0)>>>3)<<3)),It(u))}function EUe(o){o=o|0;var l=0;l=en()|0,tn(o,1,16,l,IUe()|0,0),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function IUe(){return 1400}function CUe(o){return o=o|0,BUe(n[(wUe(o)|0)>>2]|0)|0}function wUe(o){return o=o|0,(n[(GM()|0)+24>>2]|0)+(o<<3)|0}function BUe(o){return o=o|0,vUe(Vb[o&7]()|0)|0}function vUe(o){return o=o|0,o|0}function SUe(){var o=0;return s[7880]|0||(RUe(10280),gr(25,10280,U|0)|0,o=7880,n[o>>2]=1,n[o+4>>2]=0),10280}function DUe(o,l){o=o|0,l=l|0,n[o>>2]=PUe()|0,n[o+4>>2]=bUe()|0,n[o+12>>2]=l,n[o+8>>2]=xUe()|0,n[o+32>>2]=4}function PUe(){return 11711}function bUe(){return 1356}function xUe(){return Fb()|0}function kUe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0,(Hh(A,896)|0)==512?u|0&&(QUe(u),It(u)):l|0&&(Kg(l),It(l))}function QUe(o){o=o|0,o=n[o+4>>2]|0,o|0&&Gh(o)}function RUe(o){o=o|0,Lh(o)}function TUe(o){o=o|0,FUe(o,4920),NUe(o)|0,OUe(o)|0}function FUe(o,l){o=o|0,l=l|0;var u=0;u=Wz()|0,n[o>>2]=u,n_e(u,l),jh(n[o>>2]|0)}function NUe(o){o=o|0;var l=0;return l=n[o>>2]|0,cd(l,VUe()|0),o|0}function OUe(o){o=o|0;var l=0;return l=n[o>>2]|0,cd(l,LUe()|0),o|0}function LUe(){var o=0;return s[7888]|0||(vZ(10328),gr(53,10328,U|0)|0,o=7888,n[o>>2]=1,n[o+4>>2]=0),_r(10328)|0||vZ(10328),10328}function cd(o,l){o=o|0,l=l|0,vn(o,0,l,0,0,0)}function vZ(o){o=o|0,_Ue(o),ud(o,10)}function MUe(o){o=o|0,UUe(o+24|0)}function UUe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~((l+-8-A|0)>>>3)<<3)),It(u))}function _Ue(o){o=o|0;var l=0;l=en()|0,tn(o,5,1,l,qUe()|0,2),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function HUe(o,l,u){o=o|0,l=l|0,u=+u,jUe(o,l,u)}function ud(o,l){o=o|0,l=l|0,n[o+20>>2]=l}function jUe(o,l,u){o=o|0,l=l|0,u=+u;var A=0,d=0,m=0,B=0,k=0;A=I,I=I+16|0,m=A+8|0,k=A+13|0,d=A,B=A+12|0,tp(k,l),n[m>>2]=rp(k,l)|0,Qf(B,u),E[d>>3]=+Rf(B,u),GUe(o,m,d),I=A}function GUe(o,l,u){o=o|0,l=l|0,u=u|0,Rl(o+8|0,n[l>>2]|0,+E[u>>3]),s[o+24>>0]=1}function qUe(){return 1404}function WUe(o,l){return o=o|0,l=+l,YUe(o,l)|0}function YUe(o,l){o=o|0,l=+l;var u=0,A=0,d=0,m=0,B=0,k=0,R=0;return A=I,I=I+16|0,m=A+4|0,B=A+8|0,k=A,d=Tl(8)|0,u=d,R=Kt(16)|0,tp(m,o),o=rp(m,o)|0,Qf(B,l),Rl(R,o,+Rf(B,l)),B=u+4|0,n[B>>2]=R,o=Kt(8)|0,B=n[B>>2]|0,n[k>>2]=0,n[m>>2]=n[k>>2],bM(o,B,m),n[d>>2]=o,I=A,u|0}function VUe(){var o=0;return s[7896]|0||(SZ(10364),gr(54,10364,U|0)|0,o=7896,n[o>>2]=1,n[o+4>>2]=0),_r(10364)|0||SZ(10364),10364}function SZ(o){o=o|0,zUe(o),ud(o,55)}function JUe(o){o=o|0,KUe(o+24|0)}function KUe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~((l+-8-A|0)>>>3)<<3)),It(u))}function zUe(o){o=o|0;var l=0;l=en()|0,tn(o,5,4,l,e_e()|0,0),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function ZUe(o){o=o|0,XUe(o)}function XUe(o){o=o|0,$Ue(o)}function $Ue(o){o=o|0,DZ(o+8|0),s[o+24>>0]=1}function DZ(o){o=o|0,n[o>>2]=0,E[o+8>>3]=0}function e_e(){return 1424}function t_e(){return r_e()|0}function r_e(){var o=0,l=0,u=0,A=0,d=0,m=0,B=0;return l=I,I=I+16|0,d=l+4|0,B=l,u=Tl(8)|0,o=u,A=Kt(16)|0,DZ(A),m=o+4|0,n[m>>2]=A,A=Kt(8)|0,m=n[m>>2]|0,n[B>>2]=0,n[d>>2]=n[B>>2],bM(A,m,d),n[u>>2]=A,I=l,o|0}function n_e(o,l){o=o|0,l=l|0,n[o>>2]=i_e()|0,n[o+4>>2]=s_e()|0,n[o+12>>2]=l,n[o+8>>2]=o_e()|0,n[o+32>>2]=5}function i_e(){return 11710}function s_e(){return 1416}function o_e(){return Nb()|0}function a_e(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0,(Hh(A,896)|0)==512?u|0&&(l_e(u),It(u)):l|0&&It(l)}function l_e(o){o=o|0,o=n[o+4>>2]|0,o|0&&Gh(o)}function Nb(){var o=0;return s[7904]|0||(n[2600]=c_e()|0,n[2601]=0,o=7904,n[o>>2]=1,n[o+4>>2]=0),10400}function c_e(){return n[357]|0}function u_e(o){o=o|0,f_e(o,4926),A_e(o)|0}function f_e(o,l){o=o|0,l=l|0;var u=0;u=hz()|0,n[o>>2]=u,B_e(u,l),jh(n[o>>2]|0)}function A_e(o){o=o|0;var l=0;return l=n[o>>2]|0,cd(l,p_e()|0),o|0}function p_e(){var o=0;return s[7912]|0||(PZ(10412),gr(56,10412,U|0)|0,o=7912,n[o>>2]=1,n[o+4>>2]=0),_r(10412)|0||PZ(10412),10412}function PZ(o){o=o|0,d_e(o),ud(o,57)}function h_e(o){o=o|0,g_e(o+24|0)}function g_e(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~((l+-8-A|0)>>>3)<<3)),It(u))}function d_e(o){o=o|0;var l=0;l=en()|0,tn(o,5,5,l,I_e()|0,0),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function m_e(o){o=o|0,y_e(o)}function y_e(o){o=o|0,E_e(o)}function E_e(o){o=o|0;var l=0,u=0;l=o+8|0,u=l+48|0;do n[l>>2]=0,l=l+4|0;while((l|0)<(u|0));s[o+56>>0]=1}function I_e(){return 1432}function C_e(){return w_e()|0}function w_e(){var o=0,l=0,u=0,A=0,d=0,m=0,B=0,k=0;B=I,I=I+16|0,o=B+4|0,l=B,u=Tl(8)|0,A=u,d=Kt(48)|0,m=d,k=m+48|0;do n[m>>2]=0,m=m+4|0;while((m|0)<(k|0));return m=A+4|0,n[m>>2]=d,k=Kt(8)|0,m=n[m>>2]|0,n[l>>2]=0,n[o>>2]=n[l>>2],gz(k,m,o),n[u>>2]=k,I=B,A|0}function B_e(o,l){o=o|0,l=l|0,n[o>>2]=v_e()|0,n[o+4>>2]=S_e()|0,n[o+12>>2]=l,n[o+8>>2]=D_e()|0,n[o+32>>2]=6}function v_e(){return 11704}function S_e(){return 1436}function D_e(){return Nb()|0}function P_e(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0,(Hh(A,896)|0)==512?u|0&&(b_e(u),It(u)):l|0&&It(l)}function b_e(o){o=o|0,o=n[o+4>>2]|0,o|0&&Gh(o)}function x_e(o){o=o|0,k_e(o,4933),Q_e(o)|0,R_e(o)|0}function k_e(o,l){o=o|0,l=l|0;var u=0;u=r4e()|0,n[o>>2]=u,n4e(u,l),jh(n[o>>2]|0)}function Q_e(o){o=o|0;var l=0;return l=n[o>>2]|0,cd(l,Y_e()|0),o|0}function R_e(o){o=o|0;var l=0;return l=n[o>>2]|0,cd(l,T_e()|0),o|0}function T_e(){var o=0;return s[7920]|0||(bZ(10452),gr(58,10452,U|0)|0,o=7920,n[o>>2]=1,n[o+4>>2]=0),_r(10452)|0||bZ(10452),10452}function bZ(o){o=o|0,O_e(o),ud(o,1)}function F_e(o){o=o|0,N_e(o+24|0)}function N_e(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~((l+-8-A|0)>>>3)<<3)),It(u))}function O_e(o){o=o|0;var l=0;l=en()|0,tn(o,5,1,l,__e()|0,2),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function L_e(o,l,u){o=o|0,l=+l,u=+u,M_e(o,l,u)}function M_e(o,l,u){o=o|0,l=+l,u=+u;var A=0,d=0,m=0,B=0,k=0;A=I,I=I+32|0,m=A+8|0,k=A+17|0,d=A,B=A+16|0,Qf(k,l),E[m>>3]=+Rf(k,l),Qf(B,u),E[d>>3]=+Rf(B,u),U_e(o,m,d),I=A}function U_e(o,l,u){o=o|0,l=l|0,u=u|0,xZ(o+8|0,+E[l>>3],+E[u>>3]),s[o+24>>0]=1}function xZ(o,l,u){o=o|0,l=+l,u=+u,E[o>>3]=l,E[o+8>>3]=u}function __e(){return 1472}function H_e(o,l){return o=+o,l=+l,j_e(o,l)|0}function j_e(o,l){o=+o,l=+l;var u=0,A=0,d=0,m=0,B=0,k=0,R=0;return A=I,I=I+16|0,B=A+4|0,k=A+8|0,R=A,d=Tl(8)|0,u=d,m=Kt(16)|0,Qf(B,o),o=+Rf(B,o),Qf(k,l),xZ(m,o,+Rf(k,l)),k=u+4|0,n[k>>2]=m,m=Kt(8)|0,k=n[k>>2]|0,n[R>>2]=0,n[B>>2]=n[R>>2],kZ(m,k,B),n[d>>2]=m,I=A,u|0}function kZ(o,l,u){o=o|0,l=l|0,u=u|0,n[o>>2]=l,u=Kt(16)|0,n[u+4>>2]=0,n[u+8>>2]=0,n[u>>2]=1452,n[u+12>>2]=l,n[o+4>>2]=u}function G_e(o){o=o|0,$y(o),It(o)}function q_e(o){o=o|0,o=n[o+12>>2]|0,o|0&&It(o)}function W_e(o){o=o|0,It(o)}function Y_e(){var o=0;return s[7928]|0||(QZ(10488),gr(59,10488,U|0)|0,o=7928,n[o>>2]=1,n[o+4>>2]=0),_r(10488)|0||QZ(10488),10488}function QZ(o){o=o|0,K_e(o),ud(o,60)}function V_e(o){o=o|0,J_e(o+24|0)}function J_e(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~((l+-8-A|0)>>>3)<<3)),It(u))}function K_e(o){o=o|0;var l=0;l=en()|0,tn(o,5,6,l,$_e()|0,0),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function z_e(o){o=o|0,Z_e(o)}function Z_e(o){o=o|0,X_e(o)}function X_e(o){o=o|0,RZ(o+8|0),s[o+24>>0]=1}function RZ(o){o=o|0,n[o>>2]=0,n[o+4>>2]=0,n[o+8>>2]=0,n[o+12>>2]=0}function $_e(){return 1492}function e4e(){return t4e()|0}function t4e(){var o=0,l=0,u=0,A=0,d=0,m=0,B=0;return l=I,I=I+16|0,d=l+4|0,B=l,u=Tl(8)|0,o=u,A=Kt(16)|0,RZ(A),m=o+4|0,n[m>>2]=A,A=Kt(8)|0,m=n[m>>2]|0,n[B>>2]=0,n[d>>2]=n[B>>2],kZ(A,m,d),n[u>>2]=A,I=l,o|0}function r4e(){var o=0;return s[7936]|0||(c4e(10524),gr(25,10524,U|0)|0,o=7936,n[o>>2]=1,n[o+4>>2]=0),10524}function n4e(o,l){o=o|0,l=l|0,n[o>>2]=i4e()|0,n[o+4>>2]=s4e()|0,n[o+12>>2]=l,n[o+8>>2]=o4e()|0,n[o+32>>2]=7}function i4e(){return 11700}function s4e(){return 1484}function o4e(){return Nb()|0}function a4e(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0,(Hh(A,896)|0)==512?u|0&&(l4e(u),It(u)):l|0&&It(l)}function l4e(o){o=o|0,o=n[o+4>>2]|0,o|0&&Gh(o)}function c4e(o){o=o|0,Lh(o)}function u4e(o,l,u){o=o|0,l=l|0,u=u|0,o=Bn(l)|0,l=f4e(u)|0,u=A4e(u,0)|0,j4e(o,l,u,qM()|0,0)}function f4e(o){return o=o|0,o|0}function A4e(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,R=0;return k=I,I=I+16|0,d=k,m=k+4|0,n[d>>2]=o,R=qM()|0,B=R+24|0,l=yr(l,4)|0,n[m>>2]=l,u=R+28|0,A=n[u>>2]|0,A>>>0<(n[R+32>>2]|0)>>>0?(FZ(A,o,l),l=(n[u>>2]|0)+8|0,n[u>>2]=l):(E4e(B,d,m),l=n[u>>2]|0),I=k,(l-(n[B>>2]|0)>>3)+-1|0}function qM(){var o=0,l=0;if(s[7944]|0||(TZ(10568),gr(61,10568,U|0)|0,l=7944,n[l>>2]=1,n[l+4>>2]=0),!(_r(10568)|0)){o=10568,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));TZ(10568)}return 10568}function TZ(o){o=o|0,g4e(o)}function p4e(o){o=o|0,h4e(o+24|0)}function h4e(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~((l+-8-A|0)>>>3)<<3)),It(u))}function g4e(o){o=o|0;var l=0;l=en()|0,tn(o,1,17,l,Rz()|0,0),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function d4e(o){return o=o|0,y4e(n[(m4e(o)|0)>>2]|0)|0}function m4e(o){return o=o|0,(n[(qM()|0)+24>>2]|0)+(o<<3)|0}function y4e(o){return o=o|0,Tb(Vb[o&7]()|0)|0}function FZ(o,l,u){o=o|0,l=l|0,u=u|0,n[o>>2]=l,n[o+4>>2]=u}function E4e(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,R=0,M=0,L=0;if(k=I,I=I+32|0,d=k,m=o+4|0,B=((n[m>>2]|0)-(n[o>>2]|0)>>3)+1|0,A=I4e(o)|0,A>>>0>>0)sn(o);else{R=n[o>>2]|0,L=(n[o+8>>2]|0)-R|0,M=L>>2,C4e(d,L>>3>>>0>>1>>>0?M>>>0>>0?B:M:A,(n[m>>2]|0)-R>>3,o+8|0),B=d+8|0,FZ(n[B>>2]|0,n[l>>2]|0,n[u>>2]|0),n[B>>2]=(n[B>>2]|0)+8,w4e(o,d),B4e(d),I=k;return}}function I4e(o){return o=o|0,536870911}function C4e(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>536870911)Nt();else{d=Kt(l<<3)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u<<3)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l<<3)}function w4e(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(0-(d>>3)<<3)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function B4e(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~((A+-8-l|0)>>>3)<<3)),o=n[o>>2]|0,o|0&&It(o)}function v4e(){S4e()}function S4e(){D4e(10604)}function D4e(o){o=o|0,P4e(o,4955)}function P4e(o,l){o=o|0,l=l|0;var u=0;u=b4e()|0,n[o>>2]=u,x4e(u,l),jh(n[o>>2]|0)}function b4e(){var o=0;return s[7952]|0||(M4e(10612),gr(25,10612,U|0)|0,o=7952,n[o>>2]=1,n[o+4>>2]=0),10612}function x4e(o,l){o=o|0,l=l|0,n[o>>2]=T4e()|0,n[o+4>>2]=F4e()|0,n[o+12>>2]=l,n[o+8>>2]=N4e()|0,n[o+32>>2]=8}function jh(o){o=o|0;var l=0,u=0;l=I,I=I+16|0,u=l,Jy()|0,n[u>>2]=o,k4e(10608,u),I=l}function Jy(){return s[11714]|0||(n[2652]=0,gr(62,10608,U|0)|0,s[11714]=1),10608}function k4e(o,l){o=o|0,l=l|0;var u=0;u=Kt(8)|0,n[u+4>>2]=n[l>>2],n[u>>2]=n[o>>2],n[o>>2]=u}function Q4e(o){o=o|0,R4e(o)}function R4e(o){o=o|0;var l=0,u=0;if(l=n[o>>2]|0,l|0)do u=l,l=n[l>>2]|0,It(u);while(l|0);n[o>>2]=0}function T4e(){return 11715}function F4e(){return 1496}function N4e(){return Fb()|0}function O4e(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0,(Hh(A,896)|0)==512?u|0&&(L4e(u),It(u)):l|0&&It(l)}function L4e(o){o=o|0,o=n[o+4>>2]|0,o|0&&Gh(o)}function M4e(o){o=o|0,Lh(o)}function U4e(o,l){o=o|0,l=l|0;var u=0,A=0;Jy()|0,u=n[2652]|0;e:do if(u|0){for(;A=n[u+4>>2]|0,!(A|0&&!(gX(WM(A)|0,o)|0));)if(u=n[u>>2]|0,!u)break e;_4e(A,l)}while(!1)}function WM(o){return o=o|0,n[o+12>>2]|0}function _4e(o,l){o=o|0,l=l|0;var u=0;o=o+36|0,u=n[o>>2]|0,u|0&&(Sf(u),It(u)),u=Kt(4)|0,Db(u,l),n[o>>2]=u}function YM(){return s[11716]|0||(n[2664]=0,gr(63,10656,U|0)|0,s[11716]=1),10656}function NZ(){var o=0;return s[11717]|0?o=n[2665]|0:(H4e(),n[2665]=1504,s[11717]=1,o=1504),o|0}function H4e(){s[11740]|0||(s[11718]=yr(yr(8,0)|0,0)|0,s[11719]=yr(yr(0,0)|0,0)|0,s[11720]=yr(yr(0,16)|0,0)|0,s[11721]=yr(yr(8,0)|0,0)|0,s[11722]=yr(yr(0,0)|0,0)|0,s[11723]=yr(yr(8,0)|0,0)|0,s[11724]=yr(yr(0,0)|0,0)|0,s[11725]=yr(yr(8,0)|0,0)|0,s[11726]=yr(yr(0,0)|0,0)|0,s[11727]=yr(yr(8,0)|0,0)|0,s[11728]=yr(yr(0,0)|0,0)|0,s[11729]=yr(yr(0,0)|0,32)|0,s[11730]=yr(yr(0,0)|0,32)|0,s[11740]=1)}function OZ(){return 1572}function j4e(o,l,u,A,d){o=o|0,l=l|0,u=u|0,A=A|0,d=d|0;var m=0,B=0,k=0,R=0,M=0,L=0;m=I,I=I+32|0,L=m+16|0,M=m+12|0,R=m+8|0,k=m+4|0,B=m,n[L>>2]=o,n[M>>2]=l,n[R>>2]=u,n[k>>2]=A,n[B>>2]=d,YM()|0,G4e(10656,L,M,R,k,B),I=m}function G4e(o,l,u,A,d,m){o=o|0,l=l|0,u=u|0,A=A|0,d=d|0,m=m|0;var B=0;B=Kt(24)|0,fz(B+4|0,n[l>>2]|0,n[u>>2]|0,n[A>>2]|0,n[d>>2]|0,n[m>>2]|0),n[B>>2]=n[o>>2],n[o>>2]=B}function LZ(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,R=0,M=0,L=0,q=0,ae=0,Ye=0,Le=0,Qe=0,tt=0,Xe=0,ct=0;if(ct=I,I=I+32|0,Le=ct+20|0,Qe=ct+8|0,tt=ct+4|0,Xe=ct,l=n[l>>2]|0,l|0){Ye=Le+4|0,R=Le+8|0,M=Qe+4|0,L=Qe+8|0,q=Qe+8|0,ae=Le+8|0;do{if(B=l+4|0,k=VM(B)|0,k|0){if(d=b2(k)|0,n[Le>>2]=0,n[Ye>>2]=0,n[R>>2]=0,A=(x2(k)|0)+1|0,q4e(Le,A),A|0)for(;A=A+-1|0,Pu(Qe,n[d>>2]|0),m=n[Ye>>2]|0,m>>>0<(n[ae>>2]|0)>>>0?(n[m>>2]=n[Qe>>2],n[Ye>>2]=(n[Ye>>2]|0)+4):JM(Le,Qe),A;)d=d+4|0;A=k2(k)|0,n[Qe>>2]=0,n[M>>2]=0,n[L>>2]=0;e:do if(n[A>>2]|0)for(d=0,m=0;;){if((d|0)==(m|0)?W4e(Qe,A):(n[d>>2]=n[A>>2],n[M>>2]=(n[M>>2]|0)+4),A=A+4|0,!(n[A>>2]|0))break e;d=n[M>>2]|0,m=n[q>>2]|0}while(!1);n[tt>>2]=Ob(B)|0,n[Xe>>2]=_r(k)|0,Y4e(u,o,tt,Xe,Le,Qe),KM(Qe),np(Le)}l=n[l>>2]|0}while(l|0)}I=ct}function VM(o){return o=o|0,n[o+12>>2]|0}function b2(o){return o=o|0,n[o+12>>2]|0}function x2(o){return o=o|0,n[o+16>>2]|0}function q4e(o,l){o=o|0,l=l|0;var u=0,A=0,d=0;d=I,I=I+32|0,u=d,A=n[o>>2]|0,(n[o+8>>2]|0)-A>>2>>>0>>0&&(WZ(u,l,(n[o+4>>2]|0)-A>>2,o+8|0),YZ(o,u),VZ(u)),I=d}function JM(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,R=0,M=0;if(B=I,I=I+32|0,u=B,A=o+4|0,d=((n[A>>2]|0)-(n[o>>2]|0)>>2)+1|0,m=qZ(o)|0,m>>>0>>0)sn(o);else{k=n[o>>2]|0,M=(n[o+8>>2]|0)-k|0,R=M>>1,WZ(u,M>>2>>>0>>1>>>0?R>>>0>>0?d:R:m,(n[A>>2]|0)-k>>2,o+8|0),m=u+8|0,n[n[m>>2]>>2]=n[l>>2],n[m>>2]=(n[m>>2]|0)+4,YZ(o,u),VZ(u),I=B;return}}function k2(o){return o=o|0,n[o+8>>2]|0}function W4e(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,R=0,M=0;if(B=I,I=I+32|0,u=B,A=o+4|0,d=((n[A>>2]|0)-(n[o>>2]|0)>>2)+1|0,m=GZ(o)|0,m>>>0>>0)sn(o);else{k=n[o>>2]|0,M=(n[o+8>>2]|0)-k|0,R=M>>1,f3e(u,M>>2>>>0>>1>>>0?R>>>0>>0?d:R:m,(n[A>>2]|0)-k>>2,o+8|0),m=u+8|0,n[n[m>>2]>>2]=n[l>>2],n[m>>2]=(n[m>>2]|0)+4,A3e(o,u),p3e(u),I=B;return}}function Ob(o){return o=o|0,n[o>>2]|0}function Y4e(o,l,u,A,d,m){o=o|0,l=l|0,u=u|0,A=A|0,d=d|0,m=m|0,V4e(o,l,u,A,d,m)}function KM(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~((l+-4-A|0)>>>2)<<2)),It(u))}function np(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~((l+-4-A|0)>>>2)<<2)),It(u))}function V4e(o,l,u,A,d,m){o=o|0,l=l|0,u=u|0,A=A|0,d=d|0,m=m|0;var B=0,k=0,R=0,M=0,L=0,q=0;B=I,I=I+48|0,L=B+40|0,k=B+32|0,q=B+24|0,R=B+12|0,M=B,Fl(k),o=Os(o)|0,n[q>>2]=n[l>>2],u=n[u>>2]|0,A=n[A>>2]|0,zM(R,d),J4e(M,m),n[L>>2]=n[q>>2],K4e(o,L,u,A,R,M),KM(M),np(R),Nl(k),I=B}function zM(o,l){o=o|0,l=l|0;var u=0,A=0;n[o>>2]=0,n[o+4>>2]=0,n[o+8>>2]=0,u=l+4|0,A=(n[u>>2]|0)-(n[l>>2]|0)>>2,A|0&&(c3e(o,A),u3e(o,n[l>>2]|0,n[u>>2]|0,A))}function J4e(o,l){o=o|0,l=l|0;var u=0,A=0;n[o>>2]=0,n[o+4>>2]=0,n[o+8>>2]=0,u=l+4|0,A=(n[u>>2]|0)-(n[l>>2]|0)>>2,A|0&&(a3e(o,A),l3e(o,n[l>>2]|0,n[u>>2]|0,A))}function K4e(o,l,u,A,d,m){o=o|0,l=l|0,u=u|0,A=A|0,d=d|0,m=m|0;var B=0,k=0,R=0,M=0,L=0,q=0;B=I,I=I+32|0,L=B+28|0,q=B+24|0,k=B+12|0,R=B,M=da(z4e()|0)|0,n[q>>2]=n[l>>2],n[L>>2]=n[q>>2],l=fd(L)|0,u=MZ(u)|0,A=ZM(A)|0,n[k>>2]=n[d>>2],L=d+4|0,n[k+4>>2]=n[L>>2],q=d+8|0,n[k+8>>2]=n[q>>2],n[q>>2]=0,n[L>>2]=0,n[d>>2]=0,d=XM(k)|0,n[R>>2]=n[m>>2],L=m+4|0,n[R+4>>2]=n[L>>2],q=m+8|0,n[R+8>>2]=n[q>>2],n[q>>2]=0,n[L>>2]=0,n[m>>2]=0,lu(0,M|0,o|0,l|0,u|0,A|0,d|0,Z4e(R)|0)|0,KM(R),np(k),I=B}function z4e(){var o=0;return s[7968]|0||(s3e(10708),o=7968,n[o>>2]=1,n[o+4>>2]=0),10708}function fd(o){return o=o|0,_Z(o)|0}function MZ(o){return o=o|0,UZ(o)|0}function ZM(o){return o=o|0,Tb(o)|0}function XM(o){return o=o|0,$4e(o)|0}function Z4e(o){return o=o|0,X4e(o)|0}function X4e(o){o=o|0;var l=0,u=0,A=0;if(A=(n[o+4>>2]|0)-(n[o>>2]|0)|0,u=A>>2,A=Tl(A+4|0)|0,n[A>>2]=u,u|0){l=0;do n[A+4+(l<<2)>>2]=UZ(n[(n[o>>2]|0)+(l<<2)>>2]|0)|0,l=l+1|0;while((l|0)!=(u|0))}return A|0}function UZ(o){return o=o|0,o|0}function $4e(o){o=o|0;var l=0,u=0,A=0;if(A=(n[o+4>>2]|0)-(n[o>>2]|0)|0,u=A>>2,A=Tl(A+4|0)|0,n[A>>2]=u,u|0){l=0;do n[A+4+(l<<2)>>2]=_Z((n[o>>2]|0)+(l<<2)|0)|0,l=l+1|0;while((l|0)!=(u|0))}return A|0}function _Z(o){o=o|0;var l=0,u=0,A=0,d=0;return d=I,I=I+32|0,l=d+12|0,u=d,A=uM(HZ()|0)|0,A?(fM(l,A),AM(u,l),Nje(o,u),o=pM(l)|0):o=e3e(o)|0,I=d,o|0}function HZ(){var o=0;return s[7960]|0||(i3e(10664),gr(25,10664,U|0)|0,o=7960,n[o>>2]=1,n[o+4>>2]=0),10664}function e3e(o){o=o|0;var l=0,u=0,A=0,d=0,m=0,B=0,k=0;return u=I,I=I+16|0,d=u+4|0,B=u,A=Tl(8)|0,l=A,k=Kt(4)|0,n[k>>2]=n[o>>2],m=l+4|0,n[m>>2]=k,o=Kt(8)|0,m=n[m>>2]|0,n[B>>2]=0,n[d>>2]=n[B>>2],jZ(o,m,d),n[A>>2]=o,I=u,l|0}function jZ(o,l,u){o=o|0,l=l|0,u=u|0,n[o>>2]=l,u=Kt(16)|0,n[u+4>>2]=0,n[u+8>>2]=0,n[u>>2]=1656,n[u+12>>2]=l,n[o+4>>2]=u}function t3e(o){o=o|0,$y(o),It(o)}function r3e(o){o=o|0,o=n[o+12>>2]|0,o|0&&It(o)}function n3e(o){o=o|0,It(o)}function i3e(o){o=o|0,Lh(o)}function s3e(o){o=o|0,Qo(o,o3e()|0,5)}function o3e(){return 1676}function a3e(o,l){o=o|0,l=l|0;var u=0;if((GZ(o)|0)>>>0>>0&&sn(o),l>>>0>1073741823)Nt();else{u=Kt(l<<2)|0,n[o+4>>2]=u,n[o>>2]=u,n[o+8>>2]=u+(l<<2);return}}function l3e(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0,A=o+4|0,o=u-l|0,(o|0)>0&&(Qr(n[A>>2]|0,l|0,o|0)|0,n[A>>2]=(n[A>>2]|0)+(o>>>2<<2))}function GZ(o){return o=o|0,1073741823}function c3e(o,l){o=o|0,l=l|0;var u=0;if((qZ(o)|0)>>>0>>0&&sn(o),l>>>0>1073741823)Nt();else{u=Kt(l<<2)|0,n[o+4>>2]=u,n[o>>2]=u,n[o+8>>2]=u+(l<<2);return}}function u3e(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0,A=o+4|0,o=u-l|0,(o|0)>0&&(Qr(n[A>>2]|0,l|0,o|0)|0,n[A>>2]=(n[A>>2]|0)+(o>>>2<<2))}function qZ(o){return o=o|0,1073741823}function f3e(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>1073741823)Nt();else{d=Kt(l<<2)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u<<2)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l<<2)}function A3e(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(0-(d>>2)<<2)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function p3e(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~((A+-4-l|0)>>>2)<<2)),o=n[o>>2]|0,o|0&&It(o)}function WZ(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>1073741823)Nt();else{d=Kt(l<<2)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u<<2)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l<<2)}function YZ(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(0-(d>>2)<<2)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function VZ(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~((A+-4-l|0)>>>2)<<2)),o=n[o>>2]|0,o|0&&It(o)}function h3e(o,l,u,A,d){o=o|0,l=l|0,u=u|0,A=A|0,d=d|0;var m=0,B=0,k=0,R=0,M=0,L=0,q=0,ae=0,Ye=0,Le=0,Qe=0;if(Qe=I,I=I+32|0,L=Qe+20|0,q=Qe+12|0,M=Qe+16|0,ae=Qe+4|0,Ye=Qe,Le=Qe+8|0,k=NZ()|0,m=n[k>>2]|0,B=n[m>>2]|0,B|0)for(R=n[k+8>>2]|0,k=n[k+4>>2]|0;Pu(L,B),g3e(o,L,k,R),m=m+4|0,B=n[m>>2]|0,B;)R=R+1|0,k=k+1|0;if(m=OZ()|0,B=n[m>>2]|0,B|0)do Pu(L,B),n[q>>2]=n[m+4>>2],d3e(l,L,q),m=m+8|0,B=n[m>>2]|0;while(B|0);if(m=n[(Jy()|0)>>2]|0,m|0)do l=n[m+4>>2]|0,Pu(L,n[(Ky(l)|0)>>2]|0),n[q>>2]=WM(l)|0,m3e(u,L,q),m=n[m>>2]|0;while(m|0);if(Pu(M,0),m=YM()|0,n[L>>2]=n[M>>2],LZ(L,m,d),m=n[(Jy()|0)>>2]|0,m|0){o=L+4|0,l=L+8|0,u=L+8|0;do{if(R=n[m+4>>2]|0,Pu(q,n[(Ky(R)|0)>>2]|0),y3e(ae,JZ(R)|0),B=n[ae>>2]|0,B|0){n[L>>2]=0,n[o>>2]=0,n[l>>2]=0;do Pu(Ye,n[(Ky(n[B+4>>2]|0)|0)>>2]|0),k=n[o>>2]|0,k>>>0<(n[u>>2]|0)>>>0?(n[k>>2]=n[Ye>>2],n[o>>2]=(n[o>>2]|0)+4):JM(L,Ye),B=n[B>>2]|0;while(B|0);E3e(A,q,L),np(L)}n[Le>>2]=n[q>>2],M=KZ(R)|0,n[L>>2]=n[Le>>2],LZ(L,M,d),mz(ae),m=n[m>>2]|0}while(m|0)}I=Qe}function g3e(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0,Q3e(o,l,u,A)}function d3e(o,l,u){o=o|0,l=l|0,u=u|0,k3e(o,l,u)}function Ky(o){return o=o|0,o|0}function m3e(o,l,u){o=o|0,l=l|0,u=u|0,D3e(o,l,u)}function JZ(o){return o=o|0,o+16|0}function y3e(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,R=0;if(m=I,I=I+16|0,d=m+8|0,u=m,n[o>>2]=0,A=n[l>>2]|0,n[d>>2]=A,n[u>>2]=o,u=S3e(u)|0,A|0){if(A=Kt(12)|0,B=(zZ(d)|0)+4|0,o=n[B+4>>2]|0,l=A+4|0,n[l>>2]=n[B>>2],n[l+4>>2]=o,l=n[n[d>>2]>>2]|0,n[d>>2]=l,!l)o=A;else for(l=A;o=Kt(12)|0,R=(zZ(d)|0)+4|0,k=n[R+4>>2]|0,B=o+4|0,n[B>>2]=n[R>>2],n[B+4>>2]=k,n[l>>2]=o,B=n[n[d>>2]>>2]|0,n[d>>2]=B,B;)l=o;n[o>>2]=n[u>>2],n[u>>2]=A}I=m}function E3e(o,l,u){o=o|0,l=l|0,u=u|0,I3e(o,l,u)}function KZ(o){return o=o|0,o+24|0}function I3e(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0;A=I,I=I+32|0,B=A+24|0,d=A+16|0,k=A+12|0,m=A,Fl(d),o=Os(o)|0,n[k>>2]=n[l>>2],zM(m,u),n[B>>2]=n[k>>2],C3e(o,B,m),np(m),Nl(d),I=A}function C3e(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0;A=I,I=I+32|0,B=A+16|0,k=A+12|0,d=A,m=da(w3e()|0)|0,n[k>>2]=n[l>>2],n[B>>2]=n[k>>2],l=fd(B)|0,n[d>>2]=n[u>>2],B=u+4|0,n[d+4>>2]=n[B>>2],k=u+8|0,n[d+8>>2]=n[k>>2],n[k>>2]=0,n[B>>2]=0,n[u>>2]=0,Rs(0,m|0,o|0,l|0,XM(d)|0)|0,np(d),I=A}function w3e(){var o=0;return s[7976]|0||(B3e(10720),o=7976,n[o>>2]=1,n[o+4>>2]=0),10720}function B3e(o){o=o|0,Qo(o,v3e()|0,2)}function v3e(){return 1732}function S3e(o){return o=o|0,n[o>>2]|0}function zZ(o){return o=o|0,n[o>>2]|0}function D3e(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;A=I,I=I+32|0,m=A+16|0,d=A+8|0,B=A,Fl(d),o=Os(o)|0,n[B>>2]=n[l>>2],u=n[u>>2]|0,n[m>>2]=n[B>>2],ZZ(o,m,u),Nl(d),I=A}function ZZ(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;A=I,I=I+16|0,m=A+4|0,B=A,d=da(P3e()|0)|0,n[B>>2]=n[l>>2],n[m>>2]=n[B>>2],l=fd(m)|0,Rs(0,d|0,o|0,l|0,MZ(u)|0)|0,I=A}function P3e(){var o=0;return s[7984]|0||(b3e(10732),o=7984,n[o>>2]=1,n[o+4>>2]=0),10732}function b3e(o){o=o|0,Qo(o,x3e()|0,2)}function x3e(){return 1744}function k3e(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;A=I,I=I+32|0,m=A+16|0,d=A+8|0,B=A,Fl(d),o=Os(o)|0,n[B>>2]=n[l>>2],u=n[u>>2]|0,n[m>>2]=n[B>>2],ZZ(o,m,u),Nl(d),I=A}function Q3e(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0;d=I,I=I+32|0,B=d+16|0,m=d+8|0,k=d,Fl(m),o=Os(o)|0,n[k>>2]=n[l>>2],u=s[u>>0]|0,A=s[A>>0]|0,n[B>>2]=n[k>>2],R3e(o,B,u,A),Nl(m),I=d}function R3e(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0;d=I,I=I+16|0,B=d+4|0,k=d,m=da(T3e()|0)|0,n[k>>2]=n[l>>2],n[B>>2]=n[k>>2],l=fd(B)|0,u=zy(u)|0,Li(0,m|0,o|0,l|0,u|0,zy(A)|0)|0,I=d}function T3e(){var o=0;return s[7992]|0||(N3e(10744),o=7992,n[o>>2]=1,n[o+4>>2]=0),10744}function zy(o){return o=o|0,F3e(o)|0}function F3e(o){return o=o|0,o&255|0}function N3e(o){o=o|0,Qo(o,O3e()|0,3)}function O3e(){return 1756}function L3e(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,R=0,M=0,L=0,q=0,ae=0;switch(ae=I,I=I+32|0,k=ae+8|0,R=ae+4|0,M=ae+20|0,L=ae,mM(o,0),A=Fje(l)|0,n[k>>2]=0,q=k+4|0,n[q>>2]=0,n[k+8>>2]=0,A<<24>>24){case 0:{s[M>>0]=0,M3e(R,u,M),Lb(o,R)|0,Df(R);break}case 8:{q=iU(l)|0,s[M>>0]=8,Pu(L,n[q+4>>2]|0),U3e(R,u,M,L,q+8|0),Lb(o,R)|0,Df(R);break}case 9:{if(m=iU(l)|0,l=n[m+4>>2]|0,l|0)for(B=k+8|0,d=m+12|0;l=l+-1|0,Pu(R,n[d>>2]|0),A=n[q>>2]|0,A>>>0<(n[B>>2]|0)>>>0?(n[A>>2]=n[R>>2],n[q>>2]=(n[q>>2]|0)+4):JM(k,R),l;)d=d+4|0;s[M>>0]=9,Pu(L,n[m+8>>2]|0),_3e(R,u,M,L,k),Lb(o,R)|0,Df(R);break}default:q=iU(l)|0,s[M>>0]=A,Pu(L,n[q+4>>2]|0),H3e(R,u,M,L),Lb(o,R)|0,Df(R)}np(k),I=ae}function M3e(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0;A=I,I=I+16|0,d=A,Fl(d),l=Os(l)|0,e8e(o,l,s[u>>0]|0),Nl(d),I=A}function Lb(o,l){o=o|0,l=l|0;var u=0;return u=n[o>>2]|0,u|0&&Na(u|0),n[o>>2]=n[l>>2],n[l>>2]=0,o|0}function U3e(o,l,u,A,d){o=o|0,l=l|0,u=u|0,A=A|0,d=d|0;var m=0,B=0,k=0,R=0;m=I,I=I+32|0,k=m+16|0,B=m+8|0,R=m,Fl(B),l=Os(l)|0,u=s[u>>0]|0,n[R>>2]=n[A>>2],d=n[d>>2]|0,n[k>>2]=n[R>>2],z3e(o,l,u,k,d),Nl(B),I=m}function _3e(o,l,u,A,d){o=o|0,l=l|0,u=u|0,A=A|0,d=d|0;var m=0,B=0,k=0,R=0,M=0;m=I,I=I+32|0,R=m+24|0,B=m+16|0,M=m+12|0,k=m,Fl(B),l=Os(l)|0,u=s[u>>0]|0,n[M>>2]=n[A>>2],zM(k,d),n[R>>2]=n[M>>2],Y3e(o,l,u,R,k),np(k),Nl(B),I=m}function H3e(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0;d=I,I=I+32|0,B=d+16|0,m=d+8|0,k=d,Fl(m),l=Os(l)|0,u=s[u>>0]|0,n[k>>2]=n[A>>2],n[B>>2]=n[k>>2],j3e(o,l,u,B),Nl(m),I=d}function j3e(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0;d=I,I=I+16|0,m=d+4|0,k=d,B=da(G3e()|0)|0,u=zy(u)|0,n[k>>2]=n[A>>2],n[m>>2]=n[k>>2],Mb(o,Rs(0,B|0,l|0,u|0,fd(m)|0)|0),I=d}function G3e(){var o=0;return s[8e3]|0||(q3e(10756),o=8e3,n[o>>2]=1,n[o+4>>2]=0),10756}function Mb(o,l){o=o|0,l=l|0,mM(o,l)}function q3e(o){o=o|0,Qo(o,W3e()|0,2)}function W3e(){return 1772}function Y3e(o,l,u,A,d){o=o|0,l=l|0,u=u|0,A=A|0,d=d|0;var m=0,B=0,k=0,R=0,M=0;m=I,I=I+32|0,R=m+16|0,M=m+12|0,B=m,k=da(V3e()|0)|0,u=zy(u)|0,n[M>>2]=n[A>>2],n[R>>2]=n[M>>2],A=fd(R)|0,n[B>>2]=n[d>>2],R=d+4|0,n[B+4>>2]=n[R>>2],M=d+8|0,n[B+8>>2]=n[M>>2],n[M>>2]=0,n[R>>2]=0,n[d>>2]=0,Mb(o,Li(0,k|0,l|0,u|0,A|0,XM(B)|0)|0),np(B),I=m}function V3e(){var o=0;return s[8008]|0||(J3e(10768),o=8008,n[o>>2]=1,n[o+4>>2]=0),10768}function J3e(o){o=o|0,Qo(o,K3e()|0,3)}function K3e(){return 1784}function z3e(o,l,u,A,d){o=o|0,l=l|0,u=u|0,A=A|0,d=d|0;var m=0,B=0,k=0,R=0;m=I,I=I+16|0,k=m+4|0,R=m,B=da(Z3e()|0)|0,u=zy(u)|0,n[R>>2]=n[A>>2],n[k>>2]=n[R>>2],A=fd(k)|0,Mb(o,Li(0,B|0,l|0,u|0,A|0,ZM(d)|0)|0),I=m}function Z3e(){var o=0;return s[8016]|0||(X3e(10780),o=8016,n[o>>2]=1,n[o+4>>2]=0),10780}function X3e(o){o=o|0,Qo(o,$3e()|0,3)}function $3e(){return 1800}function e8e(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=da(t8e()|0)|0,Mb(o,dn(0,A|0,l|0,zy(u)|0)|0)}function t8e(){var o=0;return s[8024]|0||(r8e(10792),o=8024,n[o>>2]=1,n[o+4>>2]=0),10792}function r8e(o){o=o|0,Qo(o,n8e()|0,1)}function n8e(){return 1816}function i8e(){s8e(),o8e(),a8e()}function s8e(){n[2702]=SX(65536)|0}function o8e(){P8e(10856)}function a8e(){l8e(10816)}function l8e(o){o=o|0,c8e(o,5044),u8e(o)|0}function c8e(o,l){o=o|0,l=l|0;var u=0;u=HZ()|0,n[o>>2]=u,C8e(u,l),jh(n[o>>2]|0)}function u8e(o){o=o|0;var l=0;return l=n[o>>2]|0,cd(l,f8e()|0),o|0}function f8e(){var o=0;return s[8032]|0||(XZ(10820),gr(64,10820,U|0)|0,o=8032,n[o>>2]=1,n[o+4>>2]=0),_r(10820)|0||XZ(10820),10820}function XZ(o){o=o|0,h8e(o),ud(o,25)}function A8e(o){o=o|0,p8e(o+24|0)}function p8e(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~((l+-8-A|0)>>>3)<<3)),It(u))}function h8e(o){o=o|0;var l=0;l=en()|0,tn(o,5,18,l,y8e()|0,1),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function g8e(o,l){o=o|0,l=l|0,d8e(o,l)}function d8e(o,l){o=o|0,l=l|0;var u=0,A=0,d=0;u=I,I=I+16|0,A=u,d=u+4|0,ad(d,l),n[A>>2]=ld(d,l)|0,m8e(o,A),I=u}function m8e(o,l){o=o|0,l=l|0,$Z(o+4|0,n[l>>2]|0),s[o+8>>0]=1}function $Z(o,l){o=o|0,l=l|0,n[o>>2]=l}function y8e(){return 1824}function E8e(o){return o=o|0,I8e(o)|0}function I8e(o){o=o|0;var l=0,u=0,A=0,d=0,m=0,B=0,k=0;return u=I,I=I+16|0,d=u+4|0,B=u,A=Tl(8)|0,l=A,k=Kt(4)|0,ad(d,o),$Z(k,ld(d,o)|0),m=l+4|0,n[m>>2]=k,o=Kt(8)|0,m=n[m>>2]|0,n[B>>2]=0,n[d>>2]=n[B>>2],jZ(o,m,d),n[A>>2]=o,I=u,l|0}function Tl(o){o=o|0;var l=0,u=0;return o=o+7&-8,o>>>0<=32768&&(l=n[2701]|0,o>>>0<=(65536-l|0)>>>0)?(u=(n[2702]|0)+l|0,n[2701]=l+o,o=u):(o=SX(o+8|0)|0,n[o>>2]=n[2703],n[2703]=o,o=o+8|0),o|0}function C8e(o,l){o=o|0,l=l|0,n[o>>2]=w8e()|0,n[o+4>>2]=B8e()|0,n[o+12>>2]=l,n[o+8>>2]=v8e()|0,n[o+32>>2]=9}function w8e(){return 11744}function B8e(){return 1832}function v8e(){return Nb()|0}function S8e(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0,(Hh(A,896)|0)==512?u|0&&(D8e(u),It(u)):l|0&&It(l)}function D8e(o){o=o|0,o=n[o+4>>2]|0,o|0&&Gh(o)}function P8e(o){o=o|0,b8e(o,5052),x8e(o)|0,k8e(o,5058,26)|0,Q8e(o,5069,1)|0,R8e(o,5077,10)|0,T8e(o,5087,19)|0,F8e(o,5094,27)|0}function b8e(o,l){o=o|0,l=l|0;var u=0;u=Dje()|0,n[o>>2]=u,Pje(u,l),jh(n[o>>2]|0)}function x8e(o){o=o|0;var l=0;return l=n[o>>2]|0,cd(l,Aje()|0),o|0}function k8e(o,l,u){return o=o|0,l=l|0,u=u|0,JHe(o,Bn(l)|0,u,0),o|0}function Q8e(o,l,u){return o=o|0,l=l|0,u=u|0,THe(o,Bn(l)|0,u,0),o|0}function R8e(o,l,u){return o=o|0,l=l|0,u=u|0,fHe(o,Bn(l)|0,u,0),o|0}function T8e(o,l,u){return o=o|0,l=l|0,u=u|0,z8e(o,Bn(l)|0,u,0),o|0}function eX(o,l){o=o|0,l=l|0;var u=0,A=0;e:for(;;){for(u=n[2703]|0;;){if((u|0)==(l|0))break e;if(A=n[u>>2]|0,n[2703]=A,!u)u=A;else break}It(u)}n[2701]=o}function F8e(o,l,u){return o=o|0,l=l|0,u=u|0,N8e(o,Bn(l)|0,u,0),o|0}function N8e(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0;m=n[o>>2]|0,d=$M()|0,o=O8e(u)|0,vn(m,l,d,o,L8e(u,A)|0,A)}function $M(){var o=0,l=0;if(s[8040]|0||(rX(10860),gr(65,10860,U|0)|0,l=8040,n[l>>2]=1,n[l+4>>2]=0),!(_r(10860)|0)){o=10860,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));rX(10860)}return 10860}function O8e(o){return o=o|0,o|0}function L8e(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,R=0;return k=I,I=I+16|0,d=k,m=k+4|0,n[d>>2]=o,R=$M()|0,B=R+24|0,l=yr(l,4)|0,n[m>>2]=l,u=R+28|0,A=n[u>>2]|0,A>>>0<(n[R+32>>2]|0)>>>0?(tX(A,o,l),l=(n[u>>2]|0)+8|0,n[u>>2]=l):(M8e(B,d,m),l=n[u>>2]|0),I=k,(l-(n[B>>2]|0)>>3)+-1|0}function tX(o,l,u){o=o|0,l=l|0,u=u|0,n[o>>2]=l,n[o+4>>2]=u}function M8e(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,R=0,M=0,L=0;if(k=I,I=I+32|0,d=k,m=o+4|0,B=((n[m>>2]|0)-(n[o>>2]|0)>>3)+1|0,A=U8e(o)|0,A>>>0>>0)sn(o);else{R=n[o>>2]|0,L=(n[o+8>>2]|0)-R|0,M=L>>2,_8e(d,L>>3>>>0>>1>>>0?M>>>0>>0?B:M:A,(n[m>>2]|0)-R>>3,o+8|0),B=d+8|0,tX(n[B>>2]|0,n[l>>2]|0,n[u>>2]|0),n[B>>2]=(n[B>>2]|0)+8,H8e(o,d),j8e(d),I=k;return}}function U8e(o){return o=o|0,536870911}function _8e(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>536870911)Nt();else{d=Kt(l<<3)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u<<3)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l<<3)}function H8e(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(0-(d>>3)<<3)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function j8e(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~((A+-8-l|0)>>>3)<<3)),o=n[o>>2]|0,o|0&&It(o)}function rX(o){o=o|0,W8e(o)}function G8e(o){o=o|0,q8e(o+24|0)}function q8e(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~((l+-8-A|0)>>>3)<<3)),It(u))}function W8e(o){o=o|0;var l=0;l=en()|0,tn(o,1,11,l,Y8e()|0,2),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function Y8e(){return 1840}function V8e(o,l,u){o=o|0,l=l|0,u=u|0,K8e(n[(J8e(o)|0)>>2]|0,l,u)}function J8e(o){return o=o|0,(n[($M()|0)+24>>2]|0)+(o<<3)|0}function K8e(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0;A=I,I=I+16|0,m=A+1|0,d=A,ad(m,l),l=ld(m,l)|0,ad(d,u),u=ld(d,u)|0,sp[o&31](l,u),I=A}function z8e(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0;m=n[o>>2]|0,d=eU()|0,o=Z8e(u)|0,vn(m,l,d,o,X8e(u,A)|0,A)}function eU(){var o=0,l=0;if(s[8048]|0||(iX(10896),gr(66,10896,U|0)|0,l=8048,n[l>>2]=1,n[l+4>>2]=0),!(_r(10896)|0)){o=10896,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));iX(10896)}return 10896}function Z8e(o){return o=o|0,o|0}function X8e(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,R=0;return k=I,I=I+16|0,d=k,m=k+4|0,n[d>>2]=o,R=eU()|0,B=R+24|0,l=yr(l,4)|0,n[m>>2]=l,u=R+28|0,A=n[u>>2]|0,A>>>0<(n[R+32>>2]|0)>>>0?(nX(A,o,l),l=(n[u>>2]|0)+8|0,n[u>>2]=l):($8e(B,d,m),l=n[u>>2]|0),I=k,(l-(n[B>>2]|0)>>3)+-1|0}function nX(o,l,u){o=o|0,l=l|0,u=u|0,n[o>>2]=l,n[o+4>>2]=u}function $8e(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,R=0,M=0,L=0;if(k=I,I=I+32|0,d=k,m=o+4|0,B=((n[m>>2]|0)-(n[o>>2]|0)>>3)+1|0,A=eHe(o)|0,A>>>0>>0)sn(o);else{R=n[o>>2]|0,L=(n[o+8>>2]|0)-R|0,M=L>>2,tHe(d,L>>3>>>0>>1>>>0?M>>>0>>0?B:M:A,(n[m>>2]|0)-R>>3,o+8|0),B=d+8|0,nX(n[B>>2]|0,n[l>>2]|0,n[u>>2]|0),n[B>>2]=(n[B>>2]|0)+8,rHe(o,d),nHe(d),I=k;return}}function eHe(o){return o=o|0,536870911}function tHe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>536870911)Nt();else{d=Kt(l<<3)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u<<3)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l<<3)}function rHe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(0-(d>>3)<<3)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function nHe(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~((A+-8-l|0)>>>3)<<3)),o=n[o>>2]|0,o|0&&It(o)}function iX(o){o=o|0,oHe(o)}function iHe(o){o=o|0,sHe(o+24|0)}function sHe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~((l+-8-A|0)>>>3)<<3)),It(u))}function oHe(o){o=o|0;var l=0;l=en()|0,tn(o,1,11,l,aHe()|0,1),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function aHe(){return 1852}function lHe(o,l){return o=o|0,l=l|0,uHe(n[(cHe(o)|0)>>2]|0,l)|0}function cHe(o){return o=o|0,(n[(eU()|0)+24>>2]|0)+(o<<3)|0}function uHe(o,l){o=o|0,l=l|0;var u=0,A=0;return u=I,I=I+16|0,A=u,ad(A,l),l=ld(A,l)|0,l=Tb(gd[o&31](l)|0)|0,I=u,l|0}function fHe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0;m=n[o>>2]|0,d=tU()|0,o=AHe(u)|0,vn(m,l,d,o,pHe(u,A)|0,A)}function tU(){var o=0,l=0;if(s[8056]|0||(oX(10932),gr(67,10932,U|0)|0,l=8056,n[l>>2]=1,n[l+4>>2]=0),!(_r(10932)|0)){o=10932,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));oX(10932)}return 10932}function AHe(o){return o=o|0,o|0}function pHe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,R=0;return k=I,I=I+16|0,d=k,m=k+4|0,n[d>>2]=o,R=tU()|0,B=R+24|0,l=yr(l,4)|0,n[m>>2]=l,u=R+28|0,A=n[u>>2]|0,A>>>0<(n[R+32>>2]|0)>>>0?(sX(A,o,l),l=(n[u>>2]|0)+8|0,n[u>>2]=l):(hHe(B,d,m),l=n[u>>2]|0),I=k,(l-(n[B>>2]|0)>>3)+-1|0}function sX(o,l,u){o=o|0,l=l|0,u=u|0,n[o>>2]=l,n[o+4>>2]=u}function hHe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,R=0,M=0,L=0;if(k=I,I=I+32|0,d=k,m=o+4|0,B=((n[m>>2]|0)-(n[o>>2]|0)>>3)+1|0,A=gHe(o)|0,A>>>0>>0)sn(o);else{R=n[o>>2]|0,L=(n[o+8>>2]|0)-R|0,M=L>>2,dHe(d,L>>3>>>0>>1>>>0?M>>>0>>0?B:M:A,(n[m>>2]|0)-R>>3,o+8|0),B=d+8|0,sX(n[B>>2]|0,n[l>>2]|0,n[u>>2]|0),n[B>>2]=(n[B>>2]|0)+8,mHe(o,d),yHe(d),I=k;return}}function gHe(o){return o=o|0,536870911}function dHe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>536870911)Nt();else{d=Kt(l<<3)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u<<3)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l<<3)}function mHe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(0-(d>>3)<<3)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function yHe(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~((A+-8-l|0)>>>3)<<3)),o=n[o>>2]|0,o|0&&It(o)}function oX(o){o=o|0,CHe(o)}function EHe(o){o=o|0,IHe(o+24|0)}function IHe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~((l+-8-A|0)>>>3)<<3)),It(u))}function CHe(o){o=o|0;var l=0;l=en()|0,tn(o,1,7,l,wHe()|0,2),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function wHe(){return 1860}function BHe(o,l,u){return o=o|0,l=l|0,u=u|0,SHe(n[(vHe(o)|0)>>2]|0,l,u)|0}function vHe(o){return o=o|0,(n[(tU()|0)+24>>2]|0)+(o<<3)|0}function SHe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,R=0;return A=I,I=I+32|0,B=A+12|0,m=A+8|0,k=A,R=A+16|0,d=A+4|0,DHe(R,l),PHe(k,R,l),Mh(d,u),u=Uh(d,u)|0,n[B>>2]=n[k>>2],F2[o&15](m,B,u),u=bHe(m)|0,Df(m),_h(d),I=A,u|0}function DHe(o,l){o=o|0,l=l|0}function PHe(o,l,u){o=o|0,l=l|0,u=u|0,xHe(o,u)}function bHe(o){return o=o|0,Os(o)|0}function xHe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0;d=I,I=I+16|0,u=d,A=l,A&1?(kHe(u,0),Me(A|0,u|0)|0,QHe(o,u),RHe(u)):n[o>>2]=n[l>>2],I=d}function kHe(o,l){o=o|0,l=l|0,Su(o,l),n[o+4>>2]=0,s[o+8>>0]=0}function QHe(o,l){o=o|0,l=l|0,n[o>>2]=n[l+4>>2]}function RHe(o){o=o|0,s[o+8>>0]=0}function THe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0;m=n[o>>2]|0,d=rU()|0,o=FHe(u)|0,vn(m,l,d,o,NHe(u,A)|0,A)}function rU(){var o=0,l=0;if(s[8064]|0||(lX(10968),gr(68,10968,U|0)|0,l=8064,n[l>>2]=1,n[l+4>>2]=0),!(_r(10968)|0)){o=10968,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));lX(10968)}return 10968}function FHe(o){return o=o|0,o|0}function NHe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,R=0;return k=I,I=I+16|0,d=k,m=k+4|0,n[d>>2]=o,R=rU()|0,B=R+24|0,l=yr(l,4)|0,n[m>>2]=l,u=R+28|0,A=n[u>>2]|0,A>>>0<(n[R+32>>2]|0)>>>0?(aX(A,o,l),l=(n[u>>2]|0)+8|0,n[u>>2]=l):(OHe(B,d,m),l=n[u>>2]|0),I=k,(l-(n[B>>2]|0)>>3)+-1|0}function aX(o,l,u){o=o|0,l=l|0,u=u|0,n[o>>2]=l,n[o+4>>2]=u}function OHe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,R=0,M=0,L=0;if(k=I,I=I+32|0,d=k,m=o+4|0,B=((n[m>>2]|0)-(n[o>>2]|0)>>3)+1|0,A=LHe(o)|0,A>>>0>>0)sn(o);else{R=n[o>>2]|0,L=(n[o+8>>2]|0)-R|0,M=L>>2,MHe(d,L>>3>>>0>>1>>>0?M>>>0>>0?B:M:A,(n[m>>2]|0)-R>>3,o+8|0),B=d+8|0,aX(n[B>>2]|0,n[l>>2]|0,n[u>>2]|0),n[B>>2]=(n[B>>2]|0)+8,UHe(o,d),_He(d),I=k;return}}function LHe(o){return o=o|0,536870911}function MHe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>536870911)Nt();else{d=Kt(l<<3)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u<<3)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l<<3)}function UHe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(0-(d>>3)<<3)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function _He(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~((A+-8-l|0)>>>3)<<3)),o=n[o>>2]|0,o|0&&It(o)}function lX(o){o=o|0,GHe(o)}function HHe(o){o=o|0,jHe(o+24|0)}function jHe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~((l+-8-A|0)>>>3)<<3)),It(u))}function GHe(o){o=o|0;var l=0;l=en()|0,tn(o,1,1,l,qHe()|0,5),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function qHe(){return 1872}function WHe(o,l,u,A,d,m){o=o|0,l=l|0,u=u|0,A=A|0,d=d|0,m=m|0,VHe(n[(YHe(o)|0)>>2]|0,l,u,A,d,m)}function YHe(o){return o=o|0,(n[(rU()|0)+24>>2]|0)+(o<<3)|0}function VHe(o,l,u,A,d,m){o=o|0,l=l|0,u=u|0,A=A|0,d=d|0,m=m|0;var B=0,k=0,R=0,M=0,L=0,q=0;B=I,I=I+32|0,k=B+16|0,R=B+12|0,M=B+8|0,L=B+4|0,q=B,Mh(k,l),l=Uh(k,l)|0,Mh(R,u),u=Uh(R,u)|0,Mh(M,A),A=Uh(M,A)|0,Mh(L,d),d=Uh(L,d)|0,Mh(q,m),m=Uh(q,m)|0,kX[o&1](l,u,A,d,m),_h(q),_h(L),_h(M),_h(R),_h(k),I=B}function JHe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0;m=n[o>>2]|0,d=nU()|0,o=KHe(u)|0,vn(m,l,d,o,zHe(u,A)|0,A)}function nU(){var o=0,l=0;if(s[8072]|0||(uX(11004),gr(69,11004,U|0)|0,l=8072,n[l>>2]=1,n[l+4>>2]=0),!(_r(11004)|0)){o=11004,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));uX(11004)}return 11004}function KHe(o){return o=o|0,o|0}function zHe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,R=0;return k=I,I=I+16|0,d=k,m=k+4|0,n[d>>2]=o,R=nU()|0,B=R+24|0,l=yr(l,4)|0,n[m>>2]=l,u=R+28|0,A=n[u>>2]|0,A>>>0<(n[R+32>>2]|0)>>>0?(cX(A,o,l),l=(n[u>>2]|0)+8|0,n[u>>2]=l):(ZHe(B,d,m),l=n[u>>2]|0),I=k,(l-(n[B>>2]|0)>>3)+-1|0}function cX(o,l,u){o=o|0,l=l|0,u=u|0,n[o>>2]=l,n[o+4>>2]=u}function ZHe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,R=0,M=0,L=0;if(k=I,I=I+32|0,d=k,m=o+4|0,B=((n[m>>2]|0)-(n[o>>2]|0)>>3)+1|0,A=XHe(o)|0,A>>>0>>0)sn(o);else{R=n[o>>2]|0,L=(n[o+8>>2]|0)-R|0,M=L>>2,$He(d,L>>3>>>0>>1>>>0?M>>>0>>0?B:M:A,(n[m>>2]|0)-R>>3,o+8|0),B=d+8|0,cX(n[B>>2]|0,n[l>>2]|0,n[u>>2]|0),n[B>>2]=(n[B>>2]|0)+8,eje(o,d),tje(d),I=k;return}}function XHe(o){return o=o|0,536870911}function $He(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>536870911)Nt();else{d=Kt(l<<3)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u<<3)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l<<3)}function eje(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(0-(d>>3)<<3)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function tje(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~((A+-8-l|0)>>>3)<<3)),o=n[o>>2]|0,o|0&&It(o)}function uX(o){o=o|0,ije(o)}function rje(o){o=o|0,nje(o+24|0)}function nje(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~((l+-8-A|0)>>>3)<<3)),It(u))}function ije(o){o=o|0;var l=0;l=en()|0,tn(o,1,12,l,sje()|0,2),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function sje(){return 1896}function oje(o,l,u){o=o|0,l=l|0,u=u|0,lje(n[(aje(o)|0)>>2]|0,l,u)}function aje(o){return o=o|0,(n[(nU()|0)+24>>2]|0)+(o<<3)|0}function lje(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0;A=I,I=I+16|0,m=A+4|0,d=A,cje(m,l),l=uje(m,l)|0,Mh(d,u),u=Uh(d,u)|0,sp[o&31](l,u),_h(d),I=A}function cje(o,l){o=o|0,l=l|0}function uje(o,l){return o=o|0,l=l|0,fje(l)|0}function fje(o){return o=o|0,o|0}function Aje(){var o=0;return s[8080]|0||(fX(11040),gr(70,11040,U|0)|0,o=8080,n[o>>2]=1,n[o+4>>2]=0),_r(11040)|0||fX(11040),11040}function fX(o){o=o|0,gje(o),ud(o,71)}function pje(o){o=o|0,hje(o+24|0)}function hje(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~((l+-8-A|0)>>>3)<<3)),It(u))}function gje(o){o=o|0;var l=0;l=en()|0,tn(o,5,7,l,Eje()|0,0),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function dje(o){o=o|0,mje(o)}function mje(o){o=o|0,yje(o)}function yje(o){o=o|0,s[o+8>>0]=1}function Eje(){return 1936}function Ije(){return Cje()|0}function Cje(){var o=0,l=0,u=0,A=0,d=0,m=0,B=0;return l=I,I=I+16|0,d=l+4|0,B=l,u=Tl(8)|0,o=u,m=o+4|0,n[m>>2]=Kt(1)|0,A=Kt(8)|0,m=n[m>>2]|0,n[B>>2]=0,n[d>>2]=n[B>>2],wje(A,m,d),n[u>>2]=A,I=l,o|0}function wje(o,l,u){o=o|0,l=l|0,u=u|0,n[o>>2]=l,u=Kt(16)|0,n[u+4>>2]=0,n[u+8>>2]=0,n[u>>2]=1916,n[u+12>>2]=l,n[o+4>>2]=u}function Bje(o){o=o|0,$y(o),It(o)}function vje(o){o=o|0,o=n[o+12>>2]|0,o|0&&It(o)}function Sje(o){o=o|0,It(o)}function Dje(){var o=0;return s[8088]|0||(Tje(11076),gr(25,11076,U|0)|0,o=8088,n[o>>2]=1,n[o+4>>2]=0),11076}function Pje(o,l){o=o|0,l=l|0,n[o>>2]=bje()|0,n[o+4>>2]=xje()|0,n[o+12>>2]=l,n[o+8>>2]=kje()|0,n[o+32>>2]=10}function bje(){return 11745}function xje(){return 1940}function kje(){return Fb()|0}function Qje(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0,(Hh(A,896)|0)==512?u|0&&(Rje(u),It(u)):l|0&&It(l)}function Rje(o){o=o|0,o=n[o+4>>2]|0,o|0&&Gh(o)}function Tje(o){o=o|0,Lh(o)}function Pu(o,l){o=o|0,l=l|0,n[o>>2]=l}function iU(o){return o=o|0,n[o>>2]|0}function Fje(o){return o=o|0,s[n[o>>2]>>0]|0}function Nje(o,l){o=o|0,l=l|0;var u=0,A=0;u=I,I=I+16|0,A=u,n[A>>2]=n[o>>2],Oje(l,A)|0,I=u}function Oje(o,l){o=o|0,l=l|0;var u=0;return u=Lje(n[o>>2]|0,l)|0,l=o+4|0,n[(n[l>>2]|0)+8>>2]=u,n[(n[l>>2]|0)+8>>2]|0}function Lje(o,l){o=o|0,l=l|0;var u=0,A=0;return u=I,I=I+16|0,A=u,Fl(A),o=Os(o)|0,l=Mje(o,n[l>>2]|0)|0,Nl(A),I=u,l|0}function Fl(o){o=o|0,n[o>>2]=n[2701],n[o+4>>2]=n[2703]}function Mje(o,l){o=o|0,l=l|0;var u=0;return u=da(Uje()|0)|0,dn(0,u|0,o|0,ZM(l)|0)|0}function Nl(o){o=o|0,eX(n[o>>2]|0,n[o+4>>2]|0)}function Uje(){var o=0;return s[8096]|0||(_je(11120),o=8096,n[o>>2]=1,n[o+4>>2]=0),11120}function _je(o){o=o|0,Qo(o,Hje()|0,1)}function Hje(){return 1948}function jje(){Gje()}function Gje(){var o=0,l=0,u=0,A=0,d=0,m=0,B=0,k=0,R=0,M=0,L=0,q=0,ae=0,Ye=0,Le=0,Qe=0;if(Le=I,I=I+16|0,L=Le+4|0,q=Le,oa(65536,10804,n[2702]|0,10812),u=NZ()|0,l=n[u>>2]|0,o=n[l>>2]|0,o|0)for(A=n[u+8>>2]|0,u=n[u+4>>2]|0;pf(o|0,c[u>>0]|0|0,s[A>>0]|0),l=l+4|0,o=n[l>>2]|0,o;)A=A+1|0,u=u+1|0;if(o=OZ()|0,l=n[o>>2]|0,l|0)do NA(l|0,n[o+4>>2]|0),o=o+8|0,l=n[o>>2]|0;while(l|0);NA(qje()|0,5167),M=Jy()|0,o=n[M>>2]|0;e:do if(o|0){do Wje(n[o+4>>2]|0),o=n[o>>2]|0;while(o|0);if(o=n[M>>2]|0,o|0){R=M;do{for(;d=o,o=n[o>>2]|0,d=n[d+4>>2]|0,!!(Yje(d)|0);)if(n[q>>2]=R,n[L>>2]=n[q>>2],Vje(M,L)|0,!o)break e;if(Jje(d),R=n[R>>2]|0,l=AX(d)|0,m=Oi()|0,B=I,I=I+((1*(l<<2)|0)+15&-16)|0,k=I,I=I+((1*(l<<2)|0)+15&-16)|0,l=n[(JZ(d)|0)>>2]|0,l|0)for(u=B,A=k;n[u>>2]=n[(Ky(n[l+4>>2]|0)|0)>>2],n[A>>2]=n[l+8>>2],l=n[l>>2]|0,l;)u=u+4|0,A=A+4|0;Qe=Ky(d)|0,l=Kje(d)|0,u=AX(d)|0,A=zje(d)|0,oc(Qe|0,l|0,B|0,k|0,u|0,A|0,WM(d)|0),FA(m|0)}while(o|0)}}while(!1);if(o=n[(YM()|0)>>2]|0,o|0)do Qe=o+4|0,M=VM(Qe)|0,d=k2(M)|0,m=b2(M)|0,B=(x2(M)|0)+1|0,k=Ub(M)|0,R=pX(Qe)|0,M=_r(M)|0,L=Ob(Qe)|0,q=sU(Qe)|0,uu(0,d|0,m|0,B|0,k|0,R|0,M|0,L|0,q|0,oU(Qe)|0),o=n[o>>2]|0;while(o|0);o=n[(Jy()|0)>>2]|0;e:do if(o|0){t:for(;;){if(l=n[o+4>>2]|0,l|0&&(ae=n[(Ky(l)|0)>>2]|0,Ye=n[(KZ(l)|0)>>2]|0,Ye|0)){u=Ye;do{l=u+4|0,A=VM(l)|0;r:do if(A|0)switch(_r(A)|0){case 0:break t;case 4:case 3:case 2:{k=k2(A)|0,R=b2(A)|0,M=(x2(A)|0)+1|0,L=Ub(A)|0,q=_r(A)|0,Qe=Ob(l)|0,uu(ae|0,k|0,R|0,M|0,L|0,0,q|0,Qe|0,sU(l)|0,oU(l)|0);break r}case 1:{B=k2(A)|0,k=b2(A)|0,R=(x2(A)|0)+1|0,M=Ub(A)|0,L=pX(l)|0,q=_r(A)|0,Qe=Ob(l)|0,uu(ae|0,B|0,k|0,R|0,M|0,L|0,q|0,Qe|0,sU(l)|0,oU(l)|0);break r}case 5:{M=k2(A)|0,L=b2(A)|0,q=(x2(A)|0)+1|0,Qe=Ub(A)|0,uu(ae|0,M|0,L|0,q|0,Qe|0,Zje(A)|0,_r(A)|0,0,0,0);break r}default:break r}while(!1);u=n[u>>2]|0}while(u|0)}if(o=n[o>>2]|0,!o)break e}Nt()}while(!1);ve(),I=Le}function qje(){return 11703}function Wje(o){o=o|0,s[o+40>>0]=0}function Yje(o){return o=o|0,(s[o+40>>0]|0)!=0|0}function Vje(o,l){return o=o|0,l=l|0,l=Xje(l)|0,o=n[l>>2]|0,n[l>>2]=n[o>>2],It(o),n[l>>2]|0}function Jje(o){o=o|0,s[o+40>>0]=1}function AX(o){return o=o|0,n[o+20>>2]|0}function Kje(o){return o=o|0,n[o+8>>2]|0}function zje(o){return o=o|0,n[o+32>>2]|0}function Ub(o){return o=o|0,n[o+4>>2]|0}function pX(o){return o=o|0,n[o+4>>2]|0}function sU(o){return o=o|0,n[o+8>>2]|0}function oU(o){return o=o|0,n[o+16>>2]|0}function Zje(o){return o=o|0,n[o+20>>2]|0}function Xje(o){return o=o|0,n[o>>2]|0}function _b(o){o=o|0;var l=0,u=0,A=0,d=0,m=0,B=0,k=0,R=0,M=0,L=0,q=0,ae=0,Ye=0,Le=0,Qe=0,tt=0,Xe=0,ct=0,He=0,We=0,Lt=0;Lt=I,I=I+16|0,ae=Lt;do if(o>>>0<245){if(M=o>>>0<11?16:o+11&-8,o=M>>>3,q=n[2783]|0,u=q>>>o,u&3|0)return l=(u&1^1)+o|0,o=11172+(l<<1<<2)|0,u=o+8|0,A=n[u>>2]|0,d=A+8|0,m=n[d>>2]|0,(o|0)==(m|0)?n[2783]=q&~(1<>2]=o,n[u>>2]=m),We=l<<3,n[A+4>>2]=We|3,We=A+We+4|0,n[We>>2]=n[We>>2]|1,We=d,I=Lt,We|0;if(L=n[2785]|0,M>>>0>L>>>0){if(u|0)return l=2<>>12&16,l=l>>>B,u=l>>>5&8,l=l>>>u,d=l>>>2&4,l=l>>>d,o=l>>>1&2,l=l>>>o,A=l>>>1&1,A=(u|B|d|o|A)+(l>>>A)|0,l=11172+(A<<1<<2)|0,o=l+8|0,d=n[o>>2]|0,B=d+8|0,u=n[B>>2]|0,(l|0)==(u|0)?(o=q&~(1<>2]=l,n[o>>2]=u,o=q),m=(A<<3)-M|0,n[d+4>>2]=M|3,A=d+M|0,n[A+4>>2]=m|1,n[A+m>>2]=m,L|0&&(d=n[2788]|0,l=L>>>3,u=11172+(l<<1<<2)|0,l=1<>2]|0):(n[2783]=o|l,l=u,o=u+8|0),n[o>>2]=d,n[l+12>>2]=d,n[d+8>>2]=l,n[d+12>>2]=u),n[2785]=m,n[2788]=A,We=B,I=Lt,We|0;if(k=n[2784]|0,k){if(u=(k&0-k)+-1|0,B=u>>>12&16,u=u>>>B,m=u>>>5&8,u=u>>>m,R=u>>>2&4,u=u>>>R,A=u>>>1&2,u=u>>>A,o=u>>>1&1,o=n[11436+((m|B|R|A|o)+(u>>>o)<<2)>>2]|0,u=(n[o+4>>2]&-8)-M|0,A=n[o+16+(((n[o+16>>2]|0)==0&1)<<2)>>2]|0,!A)R=o,m=u;else{do B=(n[A+4>>2]&-8)-M|0,R=B>>>0>>0,u=R?B:u,o=R?A:o,A=n[A+16+(((n[A+16>>2]|0)==0&1)<<2)>>2]|0;while(A|0);R=o,m=u}if(B=R+M|0,R>>>0>>0){d=n[R+24>>2]|0,l=n[R+12>>2]|0;do if((l|0)==(R|0)){if(o=R+20|0,l=n[o>>2]|0,!l&&(o=R+16|0,l=n[o>>2]|0,!l)){u=0;break}for(;;){if(u=l+20|0,A=n[u>>2]|0,A|0){l=A,o=u;continue}if(u=l+16|0,A=n[u>>2]|0,A)l=A,o=u;else break}n[o>>2]=0,u=l}else u=n[R+8>>2]|0,n[u+12>>2]=l,n[l+8>>2]=u,u=l;while(!1);do if(d|0){if(l=n[R+28>>2]|0,o=11436+(l<<2)|0,(R|0)==(n[o>>2]|0)){if(n[o>>2]=u,!u){n[2784]=k&~(1<>2]|0)!=(R|0)&1)<<2)>>2]=u,!u)break;n[u+24>>2]=d,l=n[R+16>>2]|0,l|0&&(n[u+16>>2]=l,n[l+24>>2]=u),l=n[R+20>>2]|0,l|0&&(n[u+20>>2]=l,n[l+24>>2]=u)}while(!1);return m>>>0<16?(We=m+M|0,n[R+4>>2]=We|3,We=R+We+4|0,n[We>>2]=n[We>>2]|1):(n[R+4>>2]=M|3,n[B+4>>2]=m|1,n[B+m>>2]=m,L|0&&(A=n[2788]|0,l=L>>>3,u=11172+(l<<1<<2)|0,l=1<>2]|0):(n[2783]=q|l,l=u,o=u+8|0),n[o>>2]=A,n[l+12>>2]=A,n[A+8>>2]=l,n[A+12>>2]=u),n[2785]=m,n[2788]=B),We=R+8|0,I=Lt,We|0}else q=M}else q=M}else q=M}else if(o>>>0<=4294967231)if(o=o+11|0,M=o&-8,R=n[2784]|0,R){A=0-M|0,o=o>>>8,o?M>>>0>16777215?k=31:(q=(o+1048320|0)>>>16&8,He=o<>>16&4,He=He<>>16&2,k=14-(L|q|k)+(He<>>15)|0,k=M>>>(k+7|0)&1|k<<1):k=0,u=n[11436+(k<<2)>>2]|0;e:do if(!u)u=0,o=0,He=57;else for(o=0,B=M<<((k|0)==31?0:25-(k>>>1)|0),m=0;;){if(d=(n[u+4>>2]&-8)-M|0,d>>>0>>0)if(d)o=u,A=d;else{o=u,A=0,d=u,He=61;break e}if(d=n[u+20>>2]|0,u=n[u+16+(B>>>31<<2)>>2]|0,m=(d|0)==0|(d|0)==(u|0)?m:d,d=(u|0)==0,d){u=m,He=57;break}else B=B<<((d^1)&1)}while(!1);if((He|0)==57){if((u|0)==0&(o|0)==0){if(o=2<>>12&16,q=q>>>B,m=q>>>5&8,q=q>>>m,k=q>>>2&4,q=q>>>k,L=q>>>1&2,q=q>>>L,u=q>>>1&1,o=0,u=n[11436+((m|B|k|L|u)+(q>>>u)<<2)>>2]|0}u?(d=u,He=61):(k=o,B=A)}if((He|0)==61)for(;;)if(He=0,u=(n[d+4>>2]&-8)-M|0,q=u>>>0>>0,u=q?u:A,o=q?d:o,d=n[d+16+(((n[d+16>>2]|0)==0&1)<<2)>>2]|0,d)A=u,He=61;else{k=o,B=u;break}if(k|0&&B>>>0<((n[2785]|0)-M|0)>>>0){if(m=k+M|0,k>>>0>=m>>>0)return We=0,I=Lt,We|0;d=n[k+24>>2]|0,l=n[k+12>>2]|0;do if((l|0)==(k|0)){if(o=k+20|0,l=n[o>>2]|0,!l&&(o=k+16|0,l=n[o>>2]|0,!l)){l=0;break}for(;;){if(u=l+20|0,A=n[u>>2]|0,A|0){l=A,o=u;continue}if(u=l+16|0,A=n[u>>2]|0,A)l=A,o=u;else break}n[o>>2]=0}else We=n[k+8>>2]|0,n[We+12>>2]=l,n[l+8>>2]=We;while(!1);do if(d){if(o=n[k+28>>2]|0,u=11436+(o<<2)|0,(k|0)==(n[u>>2]|0)){if(n[u>>2]=l,!l){A=R&~(1<>2]|0)!=(k|0)&1)<<2)>>2]=l,!l){A=R;break}n[l+24>>2]=d,o=n[k+16>>2]|0,o|0&&(n[l+16>>2]=o,n[o+24>>2]=l),o=n[k+20>>2]|0,o&&(n[l+20>>2]=o,n[o+24>>2]=l),A=R}else A=R;while(!1);do if(B>>>0>=16){if(n[k+4>>2]=M|3,n[m+4>>2]=B|1,n[m+B>>2]=B,l=B>>>3,B>>>0<256){u=11172+(l<<1<<2)|0,o=n[2783]|0,l=1<>2]|0):(n[2783]=o|l,l=u,o=u+8|0),n[o>>2]=m,n[l+12>>2]=m,n[m+8>>2]=l,n[m+12>>2]=u;break}if(l=B>>>8,l?B>>>0>16777215?l=31:(He=(l+1048320|0)>>>16&8,We=l<>>16&4,We=We<>>16&2,l=14-(ct|He|l)+(We<>>15)|0,l=B>>>(l+7|0)&1|l<<1):l=0,u=11436+(l<<2)|0,n[m+28>>2]=l,o=m+16|0,n[o+4>>2]=0,n[o>>2]=0,o=1<>2]=m,n[m+24>>2]=u,n[m+12>>2]=m,n[m+8>>2]=m;break}for(o=B<<((l|0)==31?0:25-(l>>>1)|0),u=n[u>>2]|0;;){if((n[u+4>>2]&-8|0)==(B|0)){He=97;break}if(A=u+16+(o>>>31<<2)|0,l=n[A>>2]|0,l)o=o<<1,u=l;else{He=96;break}}if((He|0)==96){n[A>>2]=m,n[m+24>>2]=u,n[m+12>>2]=m,n[m+8>>2]=m;break}else if((He|0)==97){He=u+8|0,We=n[He>>2]|0,n[We+12>>2]=m,n[He>>2]=m,n[m+8>>2]=We,n[m+12>>2]=u,n[m+24>>2]=0;break}}else We=B+M|0,n[k+4>>2]=We|3,We=k+We+4|0,n[We>>2]=n[We>>2]|1;while(!1);return We=k+8|0,I=Lt,We|0}else q=M}else q=M;else q=-1;while(!1);if(u=n[2785]|0,u>>>0>=q>>>0)return l=u-q|0,o=n[2788]|0,l>>>0>15?(We=o+q|0,n[2788]=We,n[2785]=l,n[We+4>>2]=l|1,n[We+l>>2]=l,n[o+4>>2]=q|3):(n[2785]=0,n[2788]=0,n[o+4>>2]=u|3,We=o+u+4|0,n[We>>2]=n[We>>2]|1),We=o+8|0,I=Lt,We|0;if(B=n[2786]|0,B>>>0>q>>>0)return ct=B-q|0,n[2786]=ct,We=n[2789]|0,He=We+q|0,n[2789]=He,n[He+4>>2]=ct|1,n[We+4>>2]=q|3,We=We+8|0,I=Lt,We|0;if(n[2901]|0?o=n[2903]|0:(n[2903]=4096,n[2902]=4096,n[2904]=-1,n[2905]=-1,n[2906]=0,n[2894]=0,o=ae&-16^1431655768,n[ae>>2]=o,n[2901]=o,o=4096),k=q+48|0,R=q+47|0,m=o+R|0,d=0-o|0,M=m&d,M>>>0<=q>>>0||(o=n[2893]|0,o|0&&(L=n[2891]|0,ae=L+M|0,ae>>>0<=L>>>0|ae>>>0>o>>>0)))return We=0,I=Lt,We|0;e:do if(n[2894]&4)l=0,He=133;else{u=n[2789]|0;t:do if(u){for(A=11580;o=n[A>>2]|0,!(o>>>0<=u>>>0&&(Qe=A+4|0,(o+(n[Qe>>2]|0)|0)>>>0>u>>>0));)if(o=n[A+8>>2]|0,o)A=o;else{He=118;break t}if(l=m-B&d,l>>>0<2147483647)if(o=qh(l|0)|0,(o|0)==((n[A>>2]|0)+(n[Qe>>2]|0)|0)){if((o|0)!=-1){B=l,m=o,He=135;break e}}else A=o,He=126;else l=0}else He=118;while(!1);do if((He|0)==118)if(u=qh(0)|0,(u|0)!=-1&&(l=u,Ye=n[2902]|0,Le=Ye+-1|0,l=(Le&l|0?(Le+l&0-Ye)-l|0:0)+M|0,Ye=n[2891]|0,Le=l+Ye|0,l>>>0>q>>>0&l>>>0<2147483647)){if(Qe=n[2893]|0,Qe|0&&Le>>>0<=Ye>>>0|Le>>>0>Qe>>>0){l=0;break}if(o=qh(l|0)|0,(o|0)==(u|0)){B=l,m=u,He=135;break e}else A=o,He=126}else l=0;while(!1);do if((He|0)==126){if(u=0-l|0,!(k>>>0>l>>>0&(l>>>0<2147483647&(A|0)!=-1)))if((A|0)==-1){l=0;break}else{B=l,m=A,He=135;break e}if(o=n[2903]|0,o=R-l+o&0-o,o>>>0>=2147483647){B=l,m=A,He=135;break e}if((qh(o|0)|0)==-1){qh(u|0)|0,l=0;break}else{B=o+l|0,m=A,He=135;break e}}while(!1);n[2894]=n[2894]|4,He=133}while(!1);if((He|0)==133&&M>>>0<2147483647&&(ct=qh(M|0)|0,Qe=qh(0)|0,tt=Qe-ct|0,Xe=tt>>>0>(q+40|0)>>>0,!((ct|0)==-1|Xe^1|ct>>>0>>0&((ct|0)!=-1&(Qe|0)!=-1)^1))&&(B=Xe?tt:l,m=ct,He=135),(He|0)==135){l=(n[2891]|0)+B|0,n[2891]=l,l>>>0>(n[2892]|0)>>>0&&(n[2892]=l),R=n[2789]|0;do if(R){for(l=11580;;){if(o=n[l>>2]|0,u=l+4|0,A=n[u>>2]|0,(m|0)==(o+A|0)){He=145;break}if(d=n[l+8>>2]|0,d)l=d;else break}if((He|0)==145&&!(n[l+12>>2]&8|0)&&R>>>0>>0&R>>>0>=o>>>0){n[u>>2]=A+B,We=R+8|0,We=We&7|0?0-We&7:0,He=R+We|0,We=(n[2786]|0)+(B-We)|0,n[2789]=He,n[2786]=We,n[He+4>>2]=We|1,n[He+We+4>>2]=40,n[2790]=n[2905];break}for(m>>>0<(n[2787]|0)>>>0&&(n[2787]=m),u=m+B|0,l=11580;;){if((n[l>>2]|0)==(u|0)){He=153;break}if(o=n[l+8>>2]|0,o)l=o;else break}if((He|0)==153&&!(n[l+12>>2]&8|0)){n[l>>2]=m,L=l+4|0,n[L>>2]=(n[L>>2]|0)+B,L=m+8|0,L=m+(L&7|0?0-L&7:0)|0,l=u+8|0,l=u+(l&7|0?0-l&7:0)|0,M=L+q|0,k=l-L-q|0,n[L+4>>2]=q|3;do if((l|0)!=(R|0)){if((l|0)==(n[2788]|0)){We=(n[2785]|0)+k|0,n[2785]=We,n[2788]=M,n[M+4>>2]=We|1,n[M+We>>2]=We;break}if(o=n[l+4>>2]|0,(o&3|0)==1){B=o&-8,A=o>>>3;e:do if(o>>>0<256)if(o=n[l+8>>2]|0,u=n[l+12>>2]|0,(u|0)==(o|0)){n[2783]=n[2783]&~(1<>2]=u,n[u+8>>2]=o;break}else{m=n[l+24>>2]|0,o=n[l+12>>2]|0;do if((o|0)==(l|0)){if(A=l+16|0,u=A+4|0,o=n[u>>2]|0,!o)if(o=n[A>>2]|0,o)u=A;else{o=0;break}for(;;){if(A=o+20|0,d=n[A>>2]|0,d|0){o=d,u=A;continue}if(A=o+16|0,d=n[A>>2]|0,d)o=d,u=A;else break}n[u>>2]=0}else We=n[l+8>>2]|0,n[We+12>>2]=o,n[o+8>>2]=We;while(!1);if(!m)break;u=n[l+28>>2]|0,A=11436+(u<<2)|0;do if((l|0)!=(n[A>>2]|0)){if(n[m+16+(((n[m+16>>2]|0)!=(l|0)&1)<<2)>>2]=o,!o)break e}else{if(n[A>>2]=o,o|0)break;n[2784]=n[2784]&~(1<>2]=m,u=l+16|0,A=n[u>>2]|0,A|0&&(n[o+16>>2]=A,n[A+24>>2]=o),u=n[u+4>>2]|0,!u)break;n[o+20>>2]=u,n[u+24>>2]=o}while(!1);l=l+B|0,d=B+k|0}else d=k;if(l=l+4|0,n[l>>2]=n[l>>2]&-2,n[M+4>>2]=d|1,n[M+d>>2]=d,l=d>>>3,d>>>0<256){u=11172+(l<<1<<2)|0,o=n[2783]|0,l=1<>2]|0):(n[2783]=o|l,l=u,o=u+8|0),n[o>>2]=M,n[l+12>>2]=M,n[M+8>>2]=l,n[M+12>>2]=u;break}l=d>>>8;do if(!l)l=0;else{if(d>>>0>16777215){l=31;break}He=(l+1048320|0)>>>16&8,We=l<>>16&4,We=We<>>16&2,l=14-(ct|He|l)+(We<>>15)|0,l=d>>>(l+7|0)&1|l<<1}while(!1);if(A=11436+(l<<2)|0,n[M+28>>2]=l,o=M+16|0,n[o+4>>2]=0,n[o>>2]=0,o=n[2784]|0,u=1<>2]=M,n[M+24>>2]=A,n[M+12>>2]=M,n[M+8>>2]=M;break}for(o=d<<((l|0)==31?0:25-(l>>>1)|0),u=n[A>>2]|0;;){if((n[u+4>>2]&-8|0)==(d|0)){He=194;break}if(A=u+16+(o>>>31<<2)|0,l=n[A>>2]|0,l)o=o<<1,u=l;else{He=193;break}}if((He|0)==193){n[A>>2]=M,n[M+24>>2]=u,n[M+12>>2]=M,n[M+8>>2]=M;break}else if((He|0)==194){He=u+8|0,We=n[He>>2]|0,n[We+12>>2]=M,n[He>>2]=M,n[M+8>>2]=We,n[M+12>>2]=u,n[M+24>>2]=0;break}}else We=(n[2786]|0)+k|0,n[2786]=We,n[2789]=M,n[M+4>>2]=We|1;while(!1);return We=L+8|0,I=Lt,We|0}for(l=11580;o=n[l>>2]|0,!(o>>>0<=R>>>0&&(We=o+(n[l+4>>2]|0)|0,We>>>0>R>>>0));)l=n[l+8>>2]|0;d=We+-47|0,o=d+8|0,o=d+(o&7|0?0-o&7:0)|0,d=R+16|0,o=o>>>0>>0?R:o,l=o+8|0,u=m+8|0,u=u&7|0?0-u&7:0,He=m+u|0,u=B+-40-u|0,n[2789]=He,n[2786]=u,n[He+4>>2]=u|1,n[He+u+4>>2]=40,n[2790]=n[2905],u=o+4|0,n[u>>2]=27,n[l>>2]=n[2895],n[l+4>>2]=n[2896],n[l+8>>2]=n[2897],n[l+12>>2]=n[2898],n[2895]=m,n[2896]=B,n[2898]=0,n[2897]=l,l=o+24|0;do He=l,l=l+4|0,n[l>>2]=7;while((He+8|0)>>>0>>0);if((o|0)!=(R|0)){if(m=o-R|0,n[u>>2]=n[u>>2]&-2,n[R+4>>2]=m|1,n[o>>2]=m,l=m>>>3,m>>>0<256){u=11172+(l<<1<<2)|0,o=n[2783]|0,l=1<>2]|0):(n[2783]=o|l,l=u,o=u+8|0),n[o>>2]=R,n[l+12>>2]=R,n[R+8>>2]=l,n[R+12>>2]=u;break}if(l=m>>>8,l?m>>>0>16777215?u=31:(He=(l+1048320|0)>>>16&8,We=l<>>16&4,We=We<>>16&2,u=14-(ct|He|u)+(We<>>15)|0,u=m>>>(u+7|0)&1|u<<1):u=0,A=11436+(u<<2)|0,n[R+28>>2]=u,n[R+20>>2]=0,n[d>>2]=0,l=n[2784]|0,o=1<>2]=R,n[R+24>>2]=A,n[R+12>>2]=R,n[R+8>>2]=R;break}for(o=m<<((u|0)==31?0:25-(u>>>1)|0),u=n[A>>2]|0;;){if((n[u+4>>2]&-8|0)==(m|0)){He=216;break}if(A=u+16+(o>>>31<<2)|0,l=n[A>>2]|0,l)o=o<<1,u=l;else{He=215;break}}if((He|0)==215){n[A>>2]=R,n[R+24>>2]=u,n[R+12>>2]=R,n[R+8>>2]=R;break}else if((He|0)==216){He=u+8|0,We=n[He>>2]|0,n[We+12>>2]=R,n[He>>2]=R,n[R+8>>2]=We,n[R+12>>2]=u,n[R+24>>2]=0;break}}}else{We=n[2787]|0,(We|0)==0|m>>>0>>0&&(n[2787]=m),n[2895]=m,n[2896]=B,n[2898]=0,n[2792]=n[2901],n[2791]=-1,l=0;do We=11172+(l<<1<<2)|0,n[We+12>>2]=We,n[We+8>>2]=We,l=l+1|0;while((l|0)!=32);We=m+8|0,We=We&7|0?0-We&7:0,He=m+We|0,We=B+-40-We|0,n[2789]=He,n[2786]=We,n[He+4>>2]=We|1,n[He+We+4>>2]=40,n[2790]=n[2905]}while(!1);if(l=n[2786]|0,l>>>0>q>>>0)return ct=l-q|0,n[2786]=ct,We=n[2789]|0,He=We+q|0,n[2789]=He,n[He+4>>2]=ct|1,n[We+4>>2]=q|3,We=We+8|0,I=Lt,We|0}return n[(Zy()|0)>>2]=12,We=0,I=Lt,We|0}function Hb(o){o=o|0;var l=0,u=0,A=0,d=0,m=0,B=0,k=0,R=0;if(o){u=o+-8|0,d=n[2787]|0,o=n[o+-4>>2]|0,l=o&-8,R=u+l|0;do if(o&1)k=u,B=u;else{if(A=n[u>>2]|0,!(o&3)||(B=u+(0-A)|0,m=A+l|0,B>>>0>>0))return;if((B|0)==(n[2788]|0)){if(o=R+4|0,l=n[o>>2]|0,(l&3|0)!=3){k=B,l=m;break}n[2785]=m,n[o>>2]=l&-2,n[B+4>>2]=m|1,n[B+m>>2]=m;return}if(u=A>>>3,A>>>0<256)if(o=n[B+8>>2]|0,l=n[B+12>>2]|0,(l|0)==(o|0)){n[2783]=n[2783]&~(1<>2]=l,n[l+8>>2]=o,k=B,l=m;break}d=n[B+24>>2]|0,o=n[B+12>>2]|0;do if((o|0)==(B|0)){if(u=B+16|0,l=u+4|0,o=n[l>>2]|0,!o)if(o=n[u>>2]|0,o)l=u;else{o=0;break}for(;;){if(u=o+20|0,A=n[u>>2]|0,A|0){o=A,l=u;continue}if(u=o+16|0,A=n[u>>2]|0,A)o=A,l=u;else break}n[l>>2]=0}else k=n[B+8>>2]|0,n[k+12>>2]=o,n[o+8>>2]=k;while(!1);if(d){if(l=n[B+28>>2]|0,u=11436+(l<<2)|0,(B|0)==(n[u>>2]|0)){if(n[u>>2]=o,!o){n[2784]=n[2784]&~(1<>2]|0)!=(B|0)&1)<<2)>>2]=o,!o){k=B,l=m;break}n[o+24>>2]=d,l=B+16|0,u=n[l>>2]|0,u|0&&(n[o+16>>2]=u,n[u+24>>2]=o),l=n[l+4>>2]|0,l?(n[o+20>>2]=l,n[l+24>>2]=o,k=B,l=m):(k=B,l=m)}else k=B,l=m}while(!1);if(!(B>>>0>=R>>>0)&&(o=R+4|0,A=n[o>>2]|0,!!(A&1))){if(A&2)n[o>>2]=A&-2,n[k+4>>2]=l|1,n[B+l>>2]=l,d=l;else{if(o=n[2788]|0,(R|0)==(n[2789]|0)){if(R=(n[2786]|0)+l|0,n[2786]=R,n[2789]=k,n[k+4>>2]=R|1,(k|0)!=(o|0))return;n[2788]=0,n[2785]=0;return}if((R|0)==(o|0)){R=(n[2785]|0)+l|0,n[2785]=R,n[2788]=B,n[k+4>>2]=R|1,n[B+R>>2]=R;return}d=(A&-8)+l|0,u=A>>>3;do if(A>>>0<256)if(l=n[R+8>>2]|0,o=n[R+12>>2]|0,(o|0)==(l|0)){n[2783]=n[2783]&~(1<>2]=o,n[o+8>>2]=l;break}else{m=n[R+24>>2]|0,o=n[R+12>>2]|0;do if((o|0)==(R|0)){if(u=R+16|0,l=u+4|0,o=n[l>>2]|0,!o)if(o=n[u>>2]|0,o)l=u;else{u=0;break}for(;;){if(u=o+20|0,A=n[u>>2]|0,A|0){o=A,l=u;continue}if(u=o+16|0,A=n[u>>2]|0,A)o=A,l=u;else break}n[l>>2]=0,u=o}else u=n[R+8>>2]|0,n[u+12>>2]=o,n[o+8>>2]=u,u=o;while(!1);if(m|0){if(o=n[R+28>>2]|0,l=11436+(o<<2)|0,(R|0)==(n[l>>2]|0)){if(n[l>>2]=u,!u){n[2784]=n[2784]&~(1<>2]|0)!=(R|0)&1)<<2)>>2]=u,!u)break;n[u+24>>2]=m,o=R+16|0,l=n[o>>2]|0,l|0&&(n[u+16>>2]=l,n[l+24>>2]=u),o=n[o+4>>2]|0,o|0&&(n[u+20>>2]=o,n[o+24>>2]=u)}}while(!1);if(n[k+4>>2]=d|1,n[B+d>>2]=d,(k|0)==(n[2788]|0)){n[2785]=d;return}}if(o=d>>>3,d>>>0<256){u=11172+(o<<1<<2)|0,l=n[2783]|0,o=1<>2]|0):(n[2783]=l|o,o=u,l=u+8|0),n[l>>2]=k,n[o+12>>2]=k,n[k+8>>2]=o,n[k+12>>2]=u;return}o=d>>>8,o?d>>>0>16777215?o=31:(B=(o+1048320|0)>>>16&8,R=o<>>16&4,R=R<>>16&2,o=14-(m|B|o)+(R<>>15)|0,o=d>>>(o+7|0)&1|o<<1):o=0,A=11436+(o<<2)|0,n[k+28>>2]=o,n[k+20>>2]=0,n[k+16>>2]=0,l=n[2784]|0,u=1<>>1)|0),u=n[A>>2]|0;;){if((n[u+4>>2]&-8|0)==(d|0)){o=73;break}if(A=u+16+(l>>>31<<2)|0,o=n[A>>2]|0,o)l=l<<1,u=o;else{o=72;break}}if((o|0)==72){n[A>>2]=k,n[k+24>>2]=u,n[k+12>>2]=k,n[k+8>>2]=k;break}else if((o|0)==73){B=u+8|0,R=n[B>>2]|0,n[R+12>>2]=k,n[B>>2]=k,n[k+8>>2]=R,n[k+12>>2]=u,n[k+24>>2]=0;break}}else n[2784]=l|u,n[A>>2]=k,n[k+24>>2]=A,n[k+12>>2]=k,n[k+8>>2]=k;while(!1);if(R=(n[2791]|0)+-1|0,n[2791]=R,!R)o=11588;else return;for(;o=n[o>>2]|0,o;)o=o+8|0;n[2791]=-1}}}function $je(){return 11628}function e6e(o){o=o|0;var l=0,u=0;return l=I,I=I+16|0,u=l,n[u>>2]=n6e(n[o+60>>2]|0)|0,o=jb(Au(6,u|0)|0)|0,I=l,o|0}function hX(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,R=0,M=0,L=0,q=0,ae=0,Ye=0;q=I,I=I+48|0,M=q+16|0,m=q,d=q+32|0,k=o+28|0,A=n[k>>2]|0,n[d>>2]=A,R=o+20|0,A=(n[R>>2]|0)-A|0,n[d+4>>2]=A,n[d+8>>2]=l,n[d+12>>2]=u,A=A+u|0,B=o+60|0,n[m>>2]=n[B>>2],n[m+4>>2]=d,n[m+8>>2]=2,m=jb(La(146,m|0)|0)|0;e:do if((A|0)!=(m|0)){for(l=2;!((m|0)<0);)if(A=A-m|0,Ye=n[d+4>>2]|0,ae=m>>>0>Ye>>>0,d=ae?d+8|0:d,l=(ae<<31>>31)+l|0,Ye=m-(ae?Ye:0)|0,n[d>>2]=(n[d>>2]|0)+Ye,ae=d+4|0,n[ae>>2]=(n[ae>>2]|0)-Ye,n[M>>2]=n[B>>2],n[M+4>>2]=d,n[M+8>>2]=l,m=jb(La(146,M|0)|0)|0,(A|0)==(m|0)){L=3;break e}n[o+16>>2]=0,n[k>>2]=0,n[R>>2]=0,n[o>>2]=n[o>>2]|32,(l|0)==2?u=0:u=u-(n[d+4>>2]|0)|0}else L=3;while(!1);return(L|0)==3&&(Ye=n[o+44>>2]|0,n[o+16>>2]=Ye+(n[o+48>>2]|0),n[k>>2]=Ye,n[R>>2]=Ye),I=q,u|0}function t6e(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0;return d=I,I=I+32|0,m=d,A=d+20|0,n[m>>2]=n[o+60>>2],n[m+4>>2]=0,n[m+8>>2]=l,n[m+12>>2]=A,n[m+16>>2]=u,(jb(Oa(140,m|0)|0)|0)<0?(n[A>>2]=-1,o=-1):o=n[A>>2]|0,I=d,o|0}function jb(o){return o=o|0,o>>>0>4294963200&&(n[(Zy()|0)>>2]=0-o,o=-1),o|0}function Zy(){return(r6e()|0)+64|0}function r6e(){return aU()|0}function aU(){return 2084}function n6e(o){return o=o|0,o|0}function i6e(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0;return d=I,I=I+32|0,A=d,n[o+36>>2]=1,!(n[o>>2]&64|0)&&(n[A>>2]=n[o+60>>2],n[A+4>>2]=21523,n[A+8>>2]=d+16,no(54,A|0)|0)&&(s[o+75>>0]=-1),A=hX(o,l,u)|0,I=d,A|0}function gX(o,l){o=o|0,l=l|0;var u=0,A=0;if(u=s[o>>0]|0,A=s[l>>0]|0,!(u<<24>>24)||u<<24>>24!=A<<24>>24)o=A;else{do o=o+1|0,l=l+1|0,u=s[o>>0]|0,A=s[l>>0]|0;while(!(!(u<<24>>24)||u<<24>>24!=A<<24>>24));o=A}return(u&255)-(o&255)|0}function s6e(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0;e:do if(!u)o=0;else{for(;A=s[o>>0]|0,d=s[l>>0]|0,A<<24>>24==d<<24>>24;)if(u=u+-1|0,u)o=o+1|0,l=l+1|0;else{o=0;break e}o=(A&255)-(d&255)|0}while(!1);return o|0}function dX(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,R=0,M=0,L=0,q=0,ae=0,Ye=0,Le=0,Qe=0;Qe=I,I=I+224|0,L=Qe+120|0,q=Qe+80|0,Ye=Qe,Le=Qe+136|0,A=q,d=A+40|0;do n[A>>2]=0,A=A+4|0;while((A|0)<(d|0));return n[L>>2]=n[u>>2],(lU(0,l,L,Ye,q)|0)<0?u=-1:((n[o+76>>2]|0)>-1?ae=o6e(o)|0:ae=0,u=n[o>>2]|0,M=u&32,(s[o+74>>0]|0)<1&&(n[o>>2]=u&-33),A=o+48|0,n[A>>2]|0?u=lU(o,l,L,Ye,q)|0:(d=o+44|0,m=n[d>>2]|0,n[d>>2]=Le,B=o+28|0,n[B>>2]=Le,k=o+20|0,n[k>>2]=Le,n[A>>2]=80,R=o+16|0,n[R>>2]=Le+80,u=lU(o,l,L,Ye,q)|0,m&&(Yb[n[o+36>>2]&7](o,0,0)|0,u=n[k>>2]|0?u:-1,n[d>>2]=m,n[A>>2]=0,n[R>>2]=0,n[B>>2]=0,n[k>>2]=0)),A=n[o>>2]|0,n[o>>2]=A|M,ae|0&&a6e(o),u=A&32|0?-1:u),I=Qe,u|0}function lU(o,l,u,A,d){o=o|0,l=l|0,u=u|0,A=A|0,d=d|0;var m=0,B=0,k=0,R=0,M=0,L=0,q=0,ae=0,Ye=0,Le=0,Qe=0,tt=0,Xe=0,ct=0,He=0,We=0,Lt=0,Gr=0,fr=0,$t=0,Rr=0,Hr=0,cr=0;cr=I,I=I+64|0,fr=cr+16|0,$t=cr,Lt=cr+24|0,Rr=cr+8|0,Hr=cr+20|0,n[fr>>2]=l,ct=(o|0)!=0,He=Lt+40|0,We=He,Lt=Lt+39|0,Gr=Rr+4|0,B=0,m=0,L=0;e:for(;;){do if((m|0)>-1)if((B|0)>(2147483647-m|0)){n[(Zy()|0)>>2]=75,m=-1;break}else{m=B+m|0;break}while(!1);if(B=s[l>>0]|0,B<<24>>24)k=l;else{Xe=87;break}t:for(;;){switch(B<<24>>24){case 37:{B=k,Xe=9;break t}case 0:{B=k;break t}default:}tt=k+1|0,n[fr>>2]=tt,B=s[tt>>0]|0,k=tt}t:do if((Xe|0)==9)for(;;){if(Xe=0,(s[k+1>>0]|0)!=37)break t;if(B=B+1|0,k=k+2|0,n[fr>>2]=k,(s[k>>0]|0)==37)Xe=9;else break}while(!1);if(B=B-l|0,ct&&vs(o,l,B),B|0){l=k;continue}R=k+1|0,B=(s[R>>0]|0)+-48|0,B>>>0<10?(tt=(s[k+2>>0]|0)==36,Qe=tt?B:-1,L=tt?1:L,R=tt?k+3|0:R):Qe=-1,n[fr>>2]=R,B=s[R>>0]|0,k=(B<<24>>24)+-32|0;t:do if(k>>>0<32)for(M=0,q=B;;){if(B=1<>2]=R,B=s[R>>0]|0,k=(B<<24>>24)+-32|0,k>>>0>=32)break;q=B}else M=0;while(!1);if(B<<24>>24==42){if(k=R+1|0,B=(s[k>>0]|0)+-48|0,B>>>0<10&&(s[R+2>>0]|0)==36)n[d+(B<<2)>>2]=10,B=n[A+((s[k>>0]|0)+-48<<3)>>2]|0,L=1,R=R+3|0;else{if(L|0){m=-1;break}ct?(L=(n[u>>2]|0)+3&-4,B=n[L>>2]|0,n[u>>2]=L+4,L=0,R=k):(B=0,L=0,R=k)}n[fr>>2]=R,tt=(B|0)<0,B=tt?0-B|0:B,M=tt?M|8192:M}else{if(B=mX(fr)|0,(B|0)<0){m=-1;break}R=n[fr>>2]|0}do if((s[R>>0]|0)==46){if((s[R+1>>0]|0)!=42){n[fr>>2]=R+1,k=mX(fr)|0,R=n[fr>>2]|0;break}if(q=R+2|0,k=(s[q>>0]|0)+-48|0,k>>>0<10&&(s[R+3>>0]|0)==36){n[d+(k<<2)>>2]=10,k=n[A+((s[q>>0]|0)+-48<<3)>>2]|0,R=R+4|0,n[fr>>2]=R;break}if(L|0){m=-1;break e}ct?(tt=(n[u>>2]|0)+3&-4,k=n[tt>>2]|0,n[u>>2]=tt+4):k=0,n[fr>>2]=q,R=q}else k=-1;while(!1);for(Le=0;;){if(((s[R>>0]|0)+-65|0)>>>0>57){m=-1;break e}if(tt=R+1|0,n[fr>>2]=tt,q=s[(s[R>>0]|0)+-65+(5178+(Le*58|0))>>0]|0,ae=q&255,(ae+-1|0)>>>0<8)Le=ae,R=tt;else break}if(!(q<<24>>24)){m=-1;break}Ye=(Qe|0)>-1;do if(q<<24>>24==19)if(Ye){m=-1;break e}else Xe=49;else{if(Ye){n[d+(Qe<<2)>>2]=ae,Ye=A+(Qe<<3)|0,Qe=n[Ye+4>>2]|0,Xe=$t,n[Xe>>2]=n[Ye>>2],n[Xe+4>>2]=Qe,Xe=49;break}if(!ct){m=0;break e}yX($t,ae,u)}while(!1);if((Xe|0)==49&&(Xe=0,!ct)){B=0,l=tt;continue}R=s[R>>0]|0,R=(Le|0)!=0&(R&15|0)==3?R&-33:R,Ye=M&-65537,Qe=M&8192|0?Ye:M;t:do switch(R|0){case 110:switch((Le&255)<<24>>24){case 0:{n[n[$t>>2]>>2]=m,B=0,l=tt;continue e}case 1:{n[n[$t>>2]>>2]=m,B=0,l=tt;continue e}case 2:{B=n[$t>>2]|0,n[B>>2]=m,n[B+4>>2]=((m|0)<0)<<31>>31,B=0,l=tt;continue e}case 3:{a[n[$t>>2]>>1]=m,B=0,l=tt;continue e}case 4:{s[n[$t>>2]>>0]=m,B=0,l=tt;continue e}case 6:{n[n[$t>>2]>>2]=m,B=0,l=tt;continue e}case 7:{B=n[$t>>2]|0,n[B>>2]=m,n[B+4>>2]=((m|0)<0)<<31>>31,B=0,l=tt;continue e}default:{B=0,l=tt;continue e}}case 112:{R=120,k=k>>>0>8?k:8,l=Qe|8,Xe=61;break}case 88:case 120:{l=Qe,Xe=61;break}case 111:{R=$t,l=n[R>>2]|0,R=n[R+4>>2]|0,ae=c6e(l,R,He)|0,Ye=We-ae|0,M=0,q=5642,k=(Qe&8|0)==0|(k|0)>(Ye|0)?k:Ye+1|0,Ye=Qe,Xe=67;break}case 105:case 100:if(R=$t,l=n[R>>2]|0,R=n[R+4>>2]|0,(R|0)<0){l=Gb(0,0,l|0,R|0)|0,R=ye,M=$t,n[M>>2]=l,n[M+4>>2]=R,M=1,q=5642,Xe=66;break t}else{M=(Qe&2049|0)!=0&1,q=Qe&2048|0?5643:Qe&1|0?5644:5642,Xe=66;break t}case 117:{R=$t,M=0,q=5642,l=n[R>>2]|0,R=n[R+4>>2]|0,Xe=66;break}case 99:{s[Lt>>0]=n[$t>>2],l=Lt,M=0,q=5642,ae=He,R=1,k=Ye;break}case 109:{R=u6e(n[(Zy()|0)>>2]|0)|0,Xe=71;break}case 115:{R=n[$t>>2]|0,R=R|0?R:5652,Xe=71;break}case 67:{n[Rr>>2]=n[$t>>2],n[Gr>>2]=0,n[$t>>2]=Rr,ae=-1,R=Rr,Xe=75;break}case 83:{l=n[$t>>2]|0,k?(ae=k,R=l,Xe=75):(Ls(o,32,B,0,Qe),l=0,Xe=84);break}case 65:case 71:case 70:case 69:case 97:case 103:case 102:case 101:{B=A6e(o,+E[$t>>3],B,k,Qe,R)|0,l=tt;continue e}default:M=0,q=5642,ae=He,R=k,k=Qe}while(!1);t:do if((Xe|0)==61)Qe=$t,Le=n[Qe>>2]|0,Qe=n[Qe+4>>2]|0,ae=l6e(Le,Qe,He,R&32)|0,q=(l&8|0)==0|(Le|0)==0&(Qe|0)==0,M=q?0:2,q=q?5642:5642+(R>>4)|0,Ye=l,l=Le,R=Qe,Xe=67;else if((Xe|0)==66)ae=Xy(l,R,He)|0,Ye=Qe,Xe=67;else if((Xe|0)==71)Xe=0,Qe=f6e(R,0,k)|0,Le=(Qe|0)==0,l=R,M=0,q=5642,ae=Le?R+k|0:Qe,R=Le?k:Qe-R|0,k=Ye;else if((Xe|0)==75){for(Xe=0,q=R,l=0,k=0;M=n[q>>2]|0,!(!M||(k=EX(Hr,M)|0,(k|0)<0|k>>>0>(ae-l|0)>>>0));)if(l=k+l|0,ae>>>0>l>>>0)q=q+4|0;else break;if((k|0)<0){m=-1;break e}if(Ls(o,32,B,l,Qe),!l)l=0,Xe=84;else for(M=0;;){if(k=n[R>>2]|0,!k){Xe=84;break t}if(k=EX(Hr,k)|0,M=k+M|0,(M|0)>(l|0)){Xe=84;break t}if(vs(o,Hr,k),M>>>0>=l>>>0){Xe=84;break}else R=R+4|0}}while(!1);if((Xe|0)==67)Xe=0,R=(l|0)!=0|(R|0)!=0,Qe=(k|0)!=0|R,R=((R^1)&1)+(We-ae)|0,l=Qe?ae:He,ae=He,R=Qe?(k|0)>(R|0)?k:R:k,k=(k|0)>-1?Ye&-65537:Ye;else if((Xe|0)==84){Xe=0,Ls(o,32,B,l,Qe^8192),B=(B|0)>(l|0)?B:l,l=tt;continue}Le=ae-l|0,Ye=(R|0)<(Le|0)?Le:R,Qe=Ye+M|0,B=(B|0)<(Qe|0)?Qe:B,Ls(o,32,B,Qe,k),vs(o,q,M),Ls(o,48,B,Qe,k^65536),Ls(o,48,Ye,Le,0),vs(o,l,Le),Ls(o,32,B,Qe,k^8192),l=tt}e:do if((Xe|0)==87&&!o)if(!L)m=0;else{for(m=1;l=n[d+(m<<2)>>2]|0,!!l;)if(yX(A+(m<<3)|0,l,u),m=m+1|0,(m|0)>=10){m=1;break e}for(;;){if(n[d+(m<<2)>>2]|0){m=-1;break e}if(m=m+1|0,(m|0)>=10){m=1;break}}}while(!1);return I=cr,m|0}function o6e(o){return o=o|0,0}function a6e(o){o=o|0}function vs(o,l,u){o=o|0,l=l|0,u=u|0,n[o>>2]&32||C6e(l,u,o)|0}function mX(o){o=o|0;var l=0,u=0,A=0;if(u=n[o>>2]|0,A=(s[u>>0]|0)+-48|0,A>>>0<10){l=0;do l=A+(l*10|0)|0,u=u+1|0,n[o>>2]=u,A=(s[u>>0]|0)+-48|0;while(A>>>0<10)}else l=0;return l|0}function yX(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0;e:do if(l>>>0<=20)do switch(l|0){case 9:{A=(n[u>>2]|0)+3&-4,l=n[A>>2]|0,n[u>>2]=A+4,n[o>>2]=l;break e}case 10:{A=(n[u>>2]|0)+3&-4,l=n[A>>2]|0,n[u>>2]=A+4,A=o,n[A>>2]=l,n[A+4>>2]=((l|0)<0)<<31>>31;break e}case 11:{A=(n[u>>2]|0)+3&-4,l=n[A>>2]|0,n[u>>2]=A+4,A=o,n[A>>2]=l,n[A+4>>2]=0;break e}case 12:{A=(n[u>>2]|0)+7&-8,l=A,d=n[l>>2]|0,l=n[l+4>>2]|0,n[u>>2]=A+8,A=o,n[A>>2]=d,n[A+4>>2]=l;break e}case 13:{d=(n[u>>2]|0)+3&-4,A=n[d>>2]|0,n[u>>2]=d+4,A=(A&65535)<<16>>16,d=o,n[d>>2]=A,n[d+4>>2]=((A|0)<0)<<31>>31;break e}case 14:{d=(n[u>>2]|0)+3&-4,A=n[d>>2]|0,n[u>>2]=d+4,d=o,n[d>>2]=A&65535,n[d+4>>2]=0;break e}case 15:{d=(n[u>>2]|0)+3&-4,A=n[d>>2]|0,n[u>>2]=d+4,A=(A&255)<<24>>24,d=o,n[d>>2]=A,n[d+4>>2]=((A|0)<0)<<31>>31;break e}case 16:{d=(n[u>>2]|0)+3&-4,A=n[d>>2]|0,n[u>>2]=d+4,d=o,n[d>>2]=A&255,n[d+4>>2]=0;break e}case 17:{d=(n[u>>2]|0)+7&-8,m=+E[d>>3],n[u>>2]=d+8,E[o>>3]=m;break e}case 18:{d=(n[u>>2]|0)+7&-8,m=+E[d>>3],n[u>>2]=d+8,E[o>>3]=m;break e}default:break e}while(!1);while(!1)}function l6e(o,l,u,A){if(o=o|0,l=l|0,u=u|0,A=A|0,!((o|0)==0&(l|0)==0))do u=u+-1|0,s[u>>0]=c[5694+(o&15)>>0]|0|A,o=qb(o|0,l|0,4)|0,l=ye;while(!((o|0)==0&(l|0)==0));return u|0}function c6e(o,l,u){if(o=o|0,l=l|0,u=u|0,!((o|0)==0&(l|0)==0))do u=u+-1|0,s[u>>0]=o&7|48,o=qb(o|0,l|0,3)|0,l=ye;while(!((o|0)==0&(l|0)==0));return u|0}function Xy(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;if(l>>>0>0|(l|0)==0&o>>>0>4294967295){for(;A=AU(o|0,l|0,10,0)|0,u=u+-1|0,s[u>>0]=A&255|48,A=o,o=fU(o|0,l|0,10,0)|0,l>>>0>9|(l|0)==9&A>>>0>4294967295;)l=ye;l=o}else l=o;if(l)for(;u=u+-1|0,s[u>>0]=(l>>>0)%10|0|48,!(l>>>0<10);)l=(l>>>0)/10|0;return u|0}function u6e(o){return o=o|0,m6e(o,n[(d6e()|0)+188>>2]|0)|0}function f6e(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;m=l&255,A=(u|0)!=0;e:do if(A&(o&3|0)!=0)for(d=l&255;;){if((s[o>>0]|0)==d<<24>>24){B=6;break e}if(o=o+1|0,u=u+-1|0,A=(u|0)!=0,!(A&(o&3|0)!=0)){B=5;break}}else B=5;while(!1);(B|0)==5&&(A?B=6:u=0);e:do if((B|0)==6&&(d=l&255,(s[o>>0]|0)!=d<<24>>24)){A=Ue(m,16843009)|0;t:do if(u>>>0>3){for(;m=n[o>>2]^A,!((m&-2139062144^-2139062144)&m+-16843009|0);)if(o=o+4|0,u=u+-4|0,u>>>0<=3){B=11;break t}}else B=11;while(!1);if((B|0)==11&&!u){u=0;break}for(;;){if((s[o>>0]|0)==d<<24>>24)break e;if(o=o+1|0,u=u+-1|0,!u){u=0;break}}}while(!1);return(u|0?o:0)|0}function Ls(o,l,u,A,d){o=o|0,l=l|0,u=u|0,A=A|0,d=d|0;var m=0,B=0;if(B=I,I=I+256|0,m=B,(u|0)>(A|0)&(d&73728|0)==0){if(d=u-A|0,eE(m|0,l|0,(d>>>0<256?d:256)|0)|0,d>>>0>255){l=u-A|0;do vs(o,m,256),d=d+-256|0;while(d>>>0>255);d=l&255}vs(o,m,d)}I=B}function EX(o,l){return o=o|0,l=l|0,o?o=h6e(o,l,0)|0:o=0,o|0}function A6e(o,l,u,A,d,m){o=o|0,l=+l,u=u|0,A=A|0,d=d|0,m=m|0;var B=0,k=0,R=0,M=0,L=0,q=0,ae=0,Ye=0,Le=0,Qe=0,tt=0,Xe=0,ct=0,He=0,We=0,Lt=0,Gr=0,fr=0,$t=0,Rr=0,Hr=0,cr=0,Hn=0;Hn=I,I=I+560|0,R=Hn+8|0,tt=Hn,cr=Hn+524|0,Hr=cr,M=Hn+512|0,n[tt>>2]=0,Rr=M+12|0,IX(l)|0,(ye|0)<0?(l=-l,fr=1,Gr=5659):(fr=(d&2049|0)!=0&1,Gr=d&2048|0?5662:d&1|0?5665:5660),IX(l)|0,$t=ye&2146435072;do if($t>>>0<2146435072|($t|0)==2146435072&!1){if(Ye=+p6e(l,tt)*2,B=Ye!=0,B&&(n[tt>>2]=(n[tt>>2]|0)+-1),ct=m|32,(ct|0)==97){Le=m&32,ae=Le|0?Gr+9|0:Gr,q=fr|2,B=12-A|0;do if(A>>>0>11|(B|0)==0)l=Ye;else{l=8;do B=B+-1|0,l=l*16;while(B|0);if((s[ae>>0]|0)==45){l=-(l+(-Ye-l));break}else{l=Ye+l-l;break}}while(!1);k=n[tt>>2]|0,B=(k|0)<0?0-k|0:k,B=Xy(B,((B|0)<0)<<31>>31,Rr)|0,(B|0)==(Rr|0)&&(B=M+11|0,s[B>>0]=48),s[B+-1>>0]=(k>>31&2)+43,L=B+-2|0,s[L>>0]=m+15,M=(A|0)<1,R=(d&8|0)==0,B=cr;do $t=~~l,k=B+1|0,s[B>>0]=c[5694+$t>>0]|Le,l=(l-+($t|0))*16,(k-Hr|0)==1&&!(R&(M&l==0))?(s[k>>0]=46,B=B+2|0):B=k;while(l!=0);$t=B-Hr|0,Hr=Rr-L|0,Rr=(A|0)!=0&($t+-2|0)<(A|0)?A+2|0:$t,B=Hr+q+Rr|0,Ls(o,32,u,B,d),vs(o,ae,q),Ls(o,48,u,B,d^65536),vs(o,cr,$t),Ls(o,48,Rr-$t|0,0,0),vs(o,L,Hr),Ls(o,32,u,B,d^8192);break}k=(A|0)<0?6:A,B?(B=(n[tt>>2]|0)+-28|0,n[tt>>2]=B,l=Ye*268435456):(l=Ye,B=n[tt>>2]|0),$t=(B|0)<0?R:R+288|0,R=$t;do We=~~l>>>0,n[R>>2]=We,R=R+4|0,l=(l-+(We>>>0))*1e9;while(l!=0);if((B|0)>0)for(M=$t,q=R;;){if(L=(B|0)<29?B:29,B=q+-4|0,B>>>0>=M>>>0){R=0;do He=DX(n[B>>2]|0,0,L|0)|0,He=uU(He|0,ye|0,R|0,0)|0,We=ye,Xe=AU(He|0,We|0,1e9,0)|0,n[B>>2]=Xe,R=fU(He|0,We|0,1e9,0)|0,B=B+-4|0;while(B>>>0>=M>>>0);R&&(M=M+-4|0,n[M>>2]=R)}for(R=q;!(R>>>0<=M>>>0);)if(B=R+-4|0,!(n[B>>2]|0))R=B;else break;if(B=(n[tt>>2]|0)-L|0,n[tt>>2]=B,(B|0)>0)q=R;else break}else M=$t;if((B|0)<0){A=((k+25|0)/9|0)+1|0,Qe=(ct|0)==102;do{if(Le=0-B|0,Le=(Le|0)<9?Le:9,M>>>0>>0){L=(1<>>Le,ae=0,B=M;do We=n[B>>2]|0,n[B>>2]=(We>>>Le)+ae,ae=Ue(We&L,q)|0,B=B+4|0;while(B>>>0>>0);B=n[M>>2]|0?M:M+4|0,ae?(n[R>>2]=ae,M=B,B=R+4|0):(M=B,B=R)}else M=n[M>>2]|0?M:M+4|0,B=R;R=Qe?$t:M,R=(B-R>>2|0)>(A|0)?R+(A<<2)|0:B,B=(n[tt>>2]|0)+Le|0,n[tt>>2]=B}while((B|0)<0);B=M,A=R}else B=M,A=R;if(We=$t,B>>>0>>0){if(R=(We-B>>2)*9|0,L=n[B>>2]|0,L>>>0>=10){M=10;do M=M*10|0,R=R+1|0;while(L>>>0>=M>>>0)}}else R=0;if(Qe=(ct|0)==103,Xe=(k|0)!=0,M=k-((ct|0)!=102?R:0)+((Xe&Qe)<<31>>31)|0,(M|0)<(((A-We>>2)*9|0)+-9|0)){if(M=M+9216|0,Le=$t+4+(((M|0)/9|0)+-1024<<2)|0,M=((M|0)%9|0)+1|0,(M|0)<9){L=10;do L=L*10|0,M=M+1|0;while((M|0)!=9)}else L=10;if(q=n[Le>>2]|0,ae=(q>>>0)%(L>>>0)|0,M=(Le+4|0)==(A|0),M&(ae|0)==0)M=Le;else if(Ye=((q>>>0)/(L>>>0)|0)&1|0?9007199254740994:9007199254740992,He=(L|0)/2|0,l=ae>>>0>>0?.5:M&(ae|0)==(He|0)?1:1.5,fr&&(He=(s[Gr>>0]|0)==45,l=He?-l:l,Ye=He?-Ye:Ye),M=q-ae|0,n[Le>>2]=M,Ye+l!=Ye){if(He=M+L|0,n[Le>>2]=He,He>>>0>999999999)for(R=Le;M=R+-4|0,n[R>>2]=0,M>>>0>>0&&(B=B+-4|0,n[B>>2]=0),He=(n[M>>2]|0)+1|0,n[M>>2]=He,He>>>0>999999999;)R=M;else M=Le;if(R=(We-B>>2)*9|0,q=n[B>>2]|0,q>>>0>=10){L=10;do L=L*10|0,R=R+1|0;while(q>>>0>=L>>>0)}}else M=Le;M=M+4|0,M=A>>>0>M>>>0?M:A,He=B}else M=A,He=B;for(ct=M;;){if(ct>>>0<=He>>>0){tt=0;break}if(B=ct+-4|0,!(n[B>>2]|0))ct=B;else{tt=1;break}}A=0-R|0;do if(Qe)if(B=((Xe^1)&1)+k|0,(B|0)>(R|0)&(R|0)>-5?(L=m+-1|0,k=B+-1-R|0):(L=m+-2|0,k=B+-1|0),B=d&8,B)Le=B;else{if(tt&&(Lt=n[ct+-4>>2]|0,(Lt|0)!=0))if((Lt>>>0)%10|0)M=0;else{M=0,B=10;do B=B*10|0,M=M+1|0;while(!((Lt>>>0)%(B>>>0)|0|0))}else M=9;if(B=((ct-We>>2)*9|0)+-9|0,(L|32|0)==102){Le=B-M|0,Le=(Le|0)>0?Le:0,k=(k|0)<(Le|0)?k:Le,Le=0;break}else{Le=B+R-M|0,Le=(Le|0)>0?Le:0,k=(k|0)<(Le|0)?k:Le,Le=0;break}}else L=m,Le=d&8;while(!1);if(Qe=k|Le,q=(Qe|0)!=0&1,ae=(L|32|0)==102,ae)Xe=0,B=(R|0)>0?R:0;else{if(B=(R|0)<0?A:R,B=Xy(B,((B|0)<0)<<31>>31,Rr)|0,M=Rr,(M-B|0)<2)do B=B+-1|0,s[B>>0]=48;while((M-B|0)<2);s[B+-1>>0]=(R>>31&2)+43,B=B+-2|0,s[B>>0]=L,Xe=B,B=M-B|0}if(B=fr+1+k+q+B|0,Ls(o,32,u,B,d),vs(o,Gr,fr),Ls(o,48,u,B,d^65536),ae){L=He>>>0>$t>>>0?$t:He,Le=cr+9|0,q=Le,ae=cr+8|0,M=L;do{if(R=Xy(n[M>>2]|0,0,Le)|0,(M|0)==(L|0))(R|0)==(Le|0)&&(s[ae>>0]=48,R=ae);else if(R>>>0>cr>>>0){eE(cr|0,48,R-Hr|0)|0;do R=R+-1|0;while(R>>>0>cr>>>0)}vs(o,R,q-R|0),M=M+4|0}while(M>>>0<=$t>>>0);if(Qe|0&&vs(o,5710,1),M>>>0>>0&(k|0)>0)for(;;){if(R=Xy(n[M>>2]|0,0,Le)|0,R>>>0>cr>>>0){eE(cr|0,48,R-Hr|0)|0;do R=R+-1|0;while(R>>>0>cr>>>0)}if(vs(o,R,(k|0)<9?k:9),M=M+4|0,R=k+-9|0,M>>>0>>0&(k|0)>9)k=R;else{k=R;break}}Ls(o,48,k+9|0,9,0)}else{if(Qe=tt?ct:He+4|0,(k|0)>-1){tt=cr+9|0,Le=(Le|0)==0,A=tt,q=0-Hr|0,ae=cr+8|0,L=He;do{R=Xy(n[L>>2]|0,0,tt)|0,(R|0)==(tt|0)&&(s[ae>>0]=48,R=ae);do if((L|0)==(He|0)){if(M=R+1|0,vs(o,R,1),Le&(k|0)<1){R=M;break}vs(o,5710,1),R=M}else{if(R>>>0<=cr>>>0)break;eE(cr|0,48,R+q|0)|0;do R=R+-1|0;while(R>>>0>cr>>>0)}while(!1);Hr=A-R|0,vs(o,R,(k|0)>(Hr|0)?Hr:k),k=k-Hr|0,L=L+4|0}while(L>>>0>>0&(k|0)>-1)}Ls(o,48,k+18|0,18,0),vs(o,Xe,Rr-Xe|0)}Ls(o,32,u,B,d^8192)}else cr=(m&32|0)!=0,B=fr+3|0,Ls(o,32,u,B,d&-65537),vs(o,Gr,fr),vs(o,l!=l|!1?cr?5686:5690:cr?5678:5682,3),Ls(o,32,u,B,d^8192);while(!1);return I=Hn,((B|0)<(u|0)?u:B)|0}function IX(o){o=+o;var l=0;return E[S>>3]=o,l=n[S>>2]|0,ye=n[S+4>>2]|0,l|0}function p6e(o,l){return o=+o,l=l|0,+ +CX(o,l)}function CX(o,l){o=+o,l=l|0;var u=0,A=0,d=0;switch(E[S>>3]=o,u=n[S>>2]|0,A=n[S+4>>2]|0,d=qb(u|0,A|0,52)|0,d&2047){case 0:{o!=0?(o=+CX(o*18446744073709552e3,l),u=(n[l>>2]|0)+-64|0):u=0,n[l>>2]=u;break}case 2047:break;default:n[l>>2]=(d&2047)+-1022,n[S>>2]=u,n[S+4>>2]=A&-2146435073|1071644672,o=+E[S>>3]}return+o}function h6e(o,l,u){o=o|0,l=l|0,u=u|0;do if(o){if(l>>>0<128){s[o>>0]=l,o=1;break}if(!(n[n[(g6e()|0)+188>>2]>>2]|0))if((l&-128|0)==57216){s[o>>0]=l,o=1;break}else{n[(Zy()|0)>>2]=84,o=-1;break}if(l>>>0<2048){s[o>>0]=l>>>6|192,s[o+1>>0]=l&63|128,o=2;break}if(l>>>0<55296|(l&-8192|0)==57344){s[o>>0]=l>>>12|224,s[o+1>>0]=l>>>6&63|128,s[o+2>>0]=l&63|128,o=3;break}if((l+-65536|0)>>>0<1048576){s[o>>0]=l>>>18|240,s[o+1>>0]=l>>>12&63|128,s[o+2>>0]=l>>>6&63|128,s[o+3>>0]=l&63|128,o=4;break}else{n[(Zy()|0)>>2]=84,o=-1;break}}else o=1;while(!1);return o|0}function g6e(){return aU()|0}function d6e(){return aU()|0}function m6e(o,l){o=o|0,l=l|0;var u=0,A=0;for(A=0;;){if((c[5712+A>>0]|0)==(o|0)){o=2;break}if(u=A+1|0,(u|0)==87){u=5800,A=87,o=5;break}else A=u}if((o|0)==2&&(A?(u=5800,o=5):u=5800),(o|0)==5)for(;;){do o=u,u=u+1|0;while(s[o>>0]|0);if(A=A+-1|0,A)o=5;else break}return y6e(u,n[l+20>>2]|0)|0}function y6e(o,l){return o=o|0,l=l|0,E6e(o,l)|0}function E6e(o,l){return o=o|0,l=l|0,l?l=I6e(n[l>>2]|0,n[l+4>>2]|0,o)|0:l=0,(l|0?l:o)|0}function I6e(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,R=0,M=0,L=0,q=0,ae=0;ae=(n[o>>2]|0)+1794895138|0,m=Ad(n[o+8>>2]|0,ae)|0,A=Ad(n[o+12>>2]|0,ae)|0,d=Ad(n[o+16>>2]|0,ae)|0;e:do if(m>>>0>>2>>>0&&(q=l-(m<<2)|0,A>>>0>>0&d>>>0>>0)&&!((d|A)&3|0)){for(q=A>>>2,L=d>>>2,M=0;;){if(k=m>>>1,R=M+k|0,B=R<<1,d=B+q|0,A=Ad(n[o+(d<<2)>>2]|0,ae)|0,d=Ad(n[o+(d+1<<2)>>2]|0,ae)|0,!(d>>>0>>0&A>>>0<(l-d|0)>>>0)){A=0;break e}if(s[o+(d+A)>>0]|0){A=0;break e}if(A=gX(u,o+d|0)|0,!A)break;if(A=(A|0)<0,(m|0)==1){A=0;break e}else M=A?M:R,m=A?k:m-k|0}A=B+L|0,d=Ad(n[o+(A<<2)>>2]|0,ae)|0,A=Ad(n[o+(A+1<<2)>>2]|0,ae)|0,A>>>0>>0&d>>>0<(l-A|0)>>>0?A=s[o+(A+d)>>0]|0?0:o+A|0:A=0}else A=0;while(!1);return A|0}function Ad(o,l){o=o|0,l=l|0;var u=0;return u=xX(o|0)|0,(l|0?u:o)|0}function C6e(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0;A=u+16|0,d=n[A>>2]|0,d?m=5:w6e(u)|0?A=0:(d=n[A>>2]|0,m=5);e:do if((m|0)==5){if(k=u+20|0,B=n[k>>2]|0,A=B,(d-B|0)>>>0>>0){A=Yb[n[u+36>>2]&7](u,o,l)|0;break}t:do if((s[u+75>>0]|0)>-1){for(B=l;;){if(!B){m=0,d=o;break t}if(d=B+-1|0,(s[o+d>>0]|0)==10)break;B=d}if(A=Yb[n[u+36>>2]&7](u,o,B)|0,A>>>0>>0)break e;m=B,d=o+B|0,l=l-B|0,A=n[k>>2]|0}else m=0,d=o;while(!1);Qr(A|0,d|0,l|0)|0,n[k>>2]=(n[k>>2]|0)+l,A=m+l|0}while(!1);return A|0}function w6e(o){o=o|0;var l=0,u=0;return l=o+74|0,u=s[l>>0]|0,s[l>>0]=u+255|u,l=n[o>>2]|0,l&8?(n[o>>2]=l|32,o=-1):(n[o+8>>2]=0,n[o+4>>2]=0,u=n[o+44>>2]|0,n[o+28>>2]=u,n[o+20>>2]=u,n[o+16>>2]=u+(n[o+48>>2]|0),o=0),o|0}function $n(o,l){o=y(o),l=y(l);var u=0,A=0;u=wX(o)|0;do if((u&2147483647)>>>0<=2139095040){if(A=wX(l)|0,(A&2147483647)>>>0<=2139095040)if((A^u|0)<0){o=(u|0)<0?l:o;break}else{o=o>2]=o,n[S>>2]|0|0}function pd(o,l){o=y(o),l=y(l);var u=0,A=0;u=BX(o)|0;do if((u&2147483647)>>>0<=2139095040){if(A=BX(l)|0,(A&2147483647)>>>0<=2139095040)if((A^u|0)<0){o=(u|0)<0?o:l;break}else{o=o>2]=o,n[S>>2]|0|0}function cU(o,l){o=y(o),l=y(l);var u=0,A=0,d=0,m=0,B=0,k=0,R=0,M=0;m=(h[S>>2]=o,n[S>>2]|0),k=(h[S>>2]=l,n[S>>2]|0),u=m>>>23&255,B=k>>>23&255,R=m&-2147483648,d=k<<1;e:do if(d|0&&!((u|0)==255|((B6e(l)|0)&2147483647)>>>0>2139095040)){if(A=m<<1,A>>>0<=d>>>0)return l=y(o*y(0)),y((A|0)==(d|0)?l:o);if(u)A=m&8388607|8388608;else{if(u=m<<9,(u|0)>-1){A=u,u=0;do u=u+-1|0,A=A<<1;while((A|0)>-1)}else u=0;A=m<<1-u}if(B)k=k&8388607|8388608;else{if(m=k<<9,(m|0)>-1){d=0;do d=d+-1|0,m=m<<1;while((m|0)>-1)}else d=0;B=d,k=k<<1-d}d=A-k|0,m=(d|0)>-1;t:do if((u|0)>(B|0)){for(;;){if(m)if(d)A=d;else break;if(A=A<<1,u=u+-1|0,d=A-k|0,m=(d|0)>-1,(u|0)<=(B|0))break t}l=y(o*y(0));break e}while(!1);if(m)if(d)A=d;else{l=y(o*y(0));break}if(A>>>0<8388608)do A=A<<1,u=u+-1|0;while(A>>>0<8388608);(u|0)>0?u=A+-8388608|u<<23:u=A>>>(1-u|0),l=(n[S>>2]=u|R,y(h[S>>2]))}else M=3;while(!1);return(M|0)==3&&(l=y(o*l),l=y(l/l)),y(l)}function B6e(o){return o=y(o),h[S>>2]=o,n[S>>2]|0|0}function v6e(o,l){return o=o|0,l=l|0,dX(n[582]|0,o,l)|0}function sn(o){o=o|0,Nt()}function $y(o){o=o|0}function S6e(o,l){return o=o|0,l=l|0,0}function D6e(o){return o=o|0,(vX(o+4|0)|0)==-1?(ip[n[(n[o>>2]|0)+8>>2]&127](o),o=1):o=0,o|0}function vX(o){o=o|0;var l=0;return l=n[o>>2]|0,n[o>>2]=l+-1,l+-1|0}function Gh(o){o=o|0,D6e(o)|0&&P6e(o)}function P6e(o){o=o|0;var l=0;l=o+8|0,n[l>>2]|0&&(vX(l)|0)!=-1||ip[n[(n[o>>2]|0)+16>>2]&127](o)}function Kt(o){o=o|0;var l=0;for(l=o|0?o:1;o=_b(l)|0,!(o|0);){if(o=x6e()|0,!o){o=0;break}UX[o&0]()}return o|0}function SX(o){return o=o|0,Kt(o)|0}function It(o){o=o|0,Hb(o)}function b6e(o){o=o|0,(s[o+11>>0]|0)<0&&It(n[o>>2]|0)}function x6e(){var o=0;return o=n[2923]|0,n[2923]=o+0,o|0}function k6e(){}function Gb(o,l,u,A){return o=o|0,l=l|0,u=u|0,A=A|0,A=l-A-(u>>>0>o>>>0|0)>>>0,ye=A,o-u>>>0|0|0}function uU(o,l,u,A){return o=o|0,l=l|0,u=u|0,A=A|0,u=o+u>>>0,ye=l+A+(u>>>0>>0|0)>>>0,u|0|0}function eE(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;if(m=o+u|0,l=l&255,(u|0)>=67){for(;o&3;)s[o>>0]=l,o=o+1|0;for(A=m&-4|0,d=A-64|0,B=l|l<<8|l<<16|l<<24;(o|0)<=(d|0);)n[o>>2]=B,n[o+4>>2]=B,n[o+8>>2]=B,n[o+12>>2]=B,n[o+16>>2]=B,n[o+20>>2]=B,n[o+24>>2]=B,n[o+28>>2]=B,n[o+32>>2]=B,n[o+36>>2]=B,n[o+40>>2]=B,n[o+44>>2]=B,n[o+48>>2]=B,n[o+52>>2]=B,n[o+56>>2]=B,n[o+60>>2]=B,o=o+64|0;for(;(o|0)<(A|0);)n[o>>2]=B,o=o+4|0}for(;(o|0)<(m|0);)s[o>>0]=l,o=o+1|0;return m-u|0}function DX(o,l,u){return o=o|0,l=l|0,u=u|0,(u|0)<32?(ye=l<>>32-u,o<>>u,o>>>u|(l&(1<>>u-32|0)}function Qr(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0;if((u|0)>=8192)return OA(o|0,l|0,u|0)|0;if(m=o|0,d=o+u|0,(o&3)==(l&3)){for(;o&3;){if(!u)return m|0;s[o>>0]=s[l>>0]|0,o=o+1|0,l=l+1|0,u=u-1|0}for(u=d&-4|0,A=u-64|0;(o|0)<=(A|0);)n[o>>2]=n[l>>2],n[o+4>>2]=n[l+4>>2],n[o+8>>2]=n[l+8>>2],n[o+12>>2]=n[l+12>>2],n[o+16>>2]=n[l+16>>2],n[o+20>>2]=n[l+20>>2],n[o+24>>2]=n[l+24>>2],n[o+28>>2]=n[l+28>>2],n[o+32>>2]=n[l+32>>2],n[o+36>>2]=n[l+36>>2],n[o+40>>2]=n[l+40>>2],n[o+44>>2]=n[l+44>>2],n[o+48>>2]=n[l+48>>2],n[o+52>>2]=n[l+52>>2],n[o+56>>2]=n[l+56>>2],n[o+60>>2]=n[l+60>>2],o=o+64|0,l=l+64|0;for(;(o|0)<(u|0);)n[o>>2]=n[l>>2],o=o+4|0,l=l+4|0}else for(u=d-4|0;(o|0)<(u|0);)s[o>>0]=s[l>>0]|0,s[o+1>>0]=s[l+1>>0]|0,s[o+2>>0]=s[l+2>>0]|0,s[o+3>>0]=s[l+3>>0]|0,o=o+4|0,l=l+4|0;for(;(o|0)<(d|0);)s[o>>0]=s[l>>0]|0,o=o+1|0,l=l+1|0;return m|0}function PX(o){o=o|0;var l=0;return l=s[N+(o&255)>>0]|0,(l|0)<8?l|0:(l=s[N+(o>>8&255)>>0]|0,(l|0)<8?l+8|0:(l=s[N+(o>>16&255)>>0]|0,(l|0)<8?l+16|0:(s[N+(o>>>24)>>0]|0)+24|0))}function bX(o,l,u,A,d){o=o|0,l=l|0,u=u|0,A=A|0,d=d|0;var m=0,B=0,k=0,R=0,M=0,L=0,q=0,ae=0,Ye=0,Le=0;if(L=o,R=l,M=R,B=u,ae=A,k=ae,!M)return m=(d|0)!=0,k?m?(n[d>>2]=o|0,n[d+4>>2]=l&0,ae=0,d=0,ye=ae,d|0):(ae=0,d=0,ye=ae,d|0):(m&&(n[d>>2]=(L>>>0)%(B>>>0),n[d+4>>2]=0),ae=0,d=(L>>>0)/(B>>>0)>>>0,ye=ae,d|0);m=(k|0)==0;do if(B){if(!m){if(m=(P(k|0)|0)-(P(M|0)|0)|0,m>>>0<=31){q=m+1|0,k=31-m|0,l=m-31>>31,B=q,o=L>>>(q>>>0)&l|M<>>(q>>>0)&l,m=0,k=L<>2]=o|0,n[d+4>>2]=R|l&0,ae=0,d=0,ye=ae,d|0):(ae=0,d=0,ye=ae,d|0)}if(m=B-1|0,m&B|0){k=(P(B|0)|0)+33-(P(M|0)|0)|0,Le=64-k|0,q=32-k|0,R=q>>31,Ye=k-32|0,l=Ye>>31,B=k,o=q-1>>31&M>>>(Ye>>>0)|(M<>>(k>>>0))&l,l=l&M>>>(k>>>0),m=L<>>(Ye>>>0))&R|L<>31;break}return d|0&&(n[d>>2]=m&L,n[d+4>>2]=0),(B|0)==1?(Ye=R|l&0,Le=o|0|0,ye=Ye,Le|0):(Le=PX(B|0)|0,Ye=M>>>(Le>>>0)|0,Le=M<<32-Le|L>>>(Le>>>0)|0,ye=Ye,Le|0)}else{if(m)return d|0&&(n[d>>2]=(M>>>0)%(B>>>0),n[d+4>>2]=0),Ye=0,Le=(M>>>0)/(B>>>0)>>>0,ye=Ye,Le|0;if(!L)return d|0&&(n[d>>2]=0,n[d+4>>2]=(M>>>0)%(k>>>0)),Ye=0,Le=(M>>>0)/(k>>>0)>>>0,ye=Ye,Le|0;if(m=k-1|0,!(m&k))return d|0&&(n[d>>2]=o|0,n[d+4>>2]=m&M|l&0),Ye=0,Le=M>>>((PX(k|0)|0)>>>0),ye=Ye,Le|0;if(m=(P(k|0)|0)-(P(M|0)|0)|0,m>>>0<=30){l=m+1|0,k=31-m|0,B=l,o=M<>>(l>>>0),l=M>>>(l>>>0),m=0,k=L<>2]=o|0,n[d+4>>2]=R|l&0,Ye=0,Le=0,ye=Ye,Le|0):(Ye=0,Le=0,ye=Ye,Le|0)}while(!1);if(!B)M=k,R=0,k=0;else{q=u|0|0,L=ae|A&0,M=uU(q|0,L|0,-1,-1)|0,u=ye,R=k,k=0;do A=R,R=m>>>31|R<<1,m=k|m<<1,A=o<<1|A>>>31|0,ae=o>>>31|l<<1|0,Gb(M|0,u|0,A|0,ae|0)|0,Le=ye,Ye=Le>>31|((Le|0)<0?-1:0)<<1,k=Ye&1,o=Gb(A|0,ae|0,Ye&q|0,(((Le|0)<0?-1:0)>>31|((Le|0)<0?-1:0)<<1)&L|0)|0,l=ye,B=B-1|0;while(B|0);M=R,R=0}return B=0,d|0&&(n[d>>2]=o,n[d+4>>2]=l),Ye=(m|0)>>>31|(M|B)<<1|(B<<1|m>>>31)&0|R,Le=(m<<1|0)&-2|k,ye=Ye,Le|0}function fU(o,l,u,A){return o=o|0,l=l|0,u=u|0,A=A|0,bX(o,l,u,A,0)|0}function qh(o){o=o|0;var l=0,u=0;return u=o+15&-16|0,l=n[C>>2]|0,o=l+u|0,(u|0)>0&(o|0)<(l|0)|(o|0)<0?(oe()|0,fu(12),-1):(n[C>>2]=o,(o|0)>($()|0)&&!(Z()|0)?(n[C>>2]=l,fu(12),-1):l|0)}function Q2(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;if((l|0)<(o|0)&(o|0)<(l+u|0)){for(A=o,l=l+u|0,o=o+u|0;(u|0)>0;)o=o-1|0,l=l-1|0,u=u-1|0,s[o>>0]=s[l>>0]|0;o=A}else Qr(o,l,u)|0;return o|0}function AU(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0;return m=I,I=I+16|0,d=m|0,bX(o,l,u,A,d)|0,I=m,ye=n[d+4>>2]|0,n[d>>2]|0|0}function xX(o){return o=o|0,(o&255)<<24|(o>>8&255)<<16|(o>>16&255)<<8|o>>>24|0}function Q6e(o,l,u,A,d,m){o=o|0,l=l|0,u=u|0,A=A|0,d=d|0,m=m|0,kX[o&1](l|0,u|0,A|0,d|0,m|0)}function R6e(o,l,u){o=o|0,l=l|0,u=y(u),QX[o&1](l|0,y(u))}function T6e(o,l,u){o=o|0,l=l|0,u=+u,RX[o&31](l|0,+u)}function F6e(o,l,u,A){return o=o|0,l=l|0,u=y(u),A=y(A),y(TX[o&0](l|0,y(u),y(A)))}function N6e(o,l){o=o|0,l=l|0,ip[o&127](l|0)}function O6e(o,l,u){o=o|0,l=l|0,u=u|0,sp[o&31](l|0,u|0)}function L6e(o,l){return o=o|0,l=l|0,gd[o&31](l|0)|0}function M6e(o,l,u,A,d){o=o|0,l=l|0,u=+u,A=+A,d=d|0,FX[o&1](l|0,+u,+A,d|0)}function U6e(o,l,u,A){o=o|0,l=l|0,u=+u,A=+A,EGe[o&1](l|0,+u,+A)}function _6e(o,l,u,A){return o=o|0,l=l|0,u=u|0,A=A|0,Yb[o&7](l|0,u|0,A|0)|0}function H6e(o,l,u,A){return o=o|0,l=l|0,u=u|0,A=A|0,+IGe[o&1](l|0,u|0,A|0)}function j6e(o,l){return o=o|0,l=l|0,+NX[o&15](l|0)}function G6e(o,l,u){return o=o|0,l=l|0,u=+u,CGe[o&1](l|0,+u)|0}function q6e(o,l,u){return o=o|0,l=l|0,u=u|0,hU[o&15](l|0,u|0)|0}function W6e(o,l,u,A,d,m){o=o|0,l=l|0,u=u|0,A=+A,d=+d,m=m|0,wGe[o&1](l|0,u|0,+A,+d,m|0)}function Y6e(o,l,u,A,d,m,B){o=o|0,l=l|0,u=u|0,A=A|0,d=d|0,m=m|0,B=B|0,BGe[o&1](l|0,u|0,A|0,d|0,m|0,B|0)}function V6e(o,l,u){return o=o|0,l=l|0,u=u|0,+OX[o&7](l|0,u|0)}function J6e(o){return o=o|0,Vb[o&7]()|0}function K6e(o,l,u,A,d,m){return o=o|0,l=l|0,u=u|0,A=A|0,d=d|0,m=m|0,LX[o&1](l|0,u|0,A|0,d|0,m|0)|0}function z6e(o,l,u,A,d){o=o|0,l=l|0,u=u|0,A=A|0,d=+d,vGe[o&1](l|0,u|0,A|0,+d)}function Z6e(o,l,u,A,d,m,B){o=o|0,l=l|0,u=u|0,A=y(A),d=d|0,m=y(m),B=B|0,MX[o&1](l|0,u|0,y(A),d|0,y(m),B|0)}function X6e(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0,F2[o&15](l|0,u|0,A|0)}function $6e(o){o=o|0,UX[o&0]()}function eGe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=+A,_X[o&15](l|0,u|0,+A)}function tGe(o,l,u){return o=o|0,l=+l,u=+u,SGe[o&1](+l,+u)|0}function rGe(o,l,u,A,d){o=o|0,l=l|0,u=u|0,A=A|0,d=d|0,gU[o&15](l|0,u|0,A|0,d|0)}function nGe(o,l,u,A,d){o=o|0,l=l|0,u=u|0,A=A|0,d=d|0,F(0)}function iGe(o,l){o=o|0,l=y(l),F(1)}function Za(o,l){o=o|0,l=+l,F(2)}function sGe(o,l,u){return o=o|0,l=y(l),u=y(u),F(3),$e}function wr(o){o=o|0,F(4)}function R2(o,l){o=o|0,l=l|0,F(5)}function Ol(o){return o=o|0,F(6),0}function oGe(o,l,u,A){o=o|0,l=+l,u=+u,A=A|0,F(7)}function aGe(o,l,u){o=o|0,l=+l,u=+u,F(8)}function lGe(o,l,u){return o=o|0,l=l|0,u=u|0,F(9),0}function cGe(o,l,u){return o=o|0,l=l|0,u=u|0,F(10),0}function hd(o){return o=o|0,F(11),0}function uGe(o,l){return o=o|0,l=+l,F(12),0}function T2(o,l){return o=o|0,l=l|0,F(13),0}function fGe(o,l,u,A,d){o=o|0,l=l|0,u=+u,A=+A,d=d|0,F(14)}function AGe(o,l,u,A,d,m){o=o|0,l=l|0,u=u|0,A=A|0,d=d|0,m=m|0,F(15)}function pU(o,l){return o=o|0,l=l|0,F(16),0}function pGe(){return F(17),0}function hGe(o,l,u,A,d){return o=o|0,l=l|0,u=u|0,A=A|0,d=d|0,F(18),0}function gGe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=+A,F(19)}function dGe(o,l,u,A,d,m){o=o|0,l=l|0,u=y(u),A=A|0,d=y(d),m=m|0,F(20)}function Wb(o,l,u){o=o|0,l=l|0,u=u|0,F(21)}function mGe(){F(22)}function tE(o,l,u){o=o|0,l=l|0,u=+u,F(23)}function yGe(o,l){return o=+o,l=+l,F(24),0}function rE(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0,F(25)}var kX=[nGe,h3e],QX=[iGe,Ry],RX=[Za,Xg,Fh,h2,g2,d2,m2,Pf,_y,y2,bf,$g,ed,E2,I2,wu,td,C2,Hy,Za,Za,Za,Za,Za,Za,Za,Za,Za,Za,Za,Za,Za],TX=[sGe],ip=[wr,$y,Jke,Kke,zke,SFe,DFe,PFe,G_e,q_e,W_e,t3e,r3e,n3e,Bje,vje,Sje,Bl,Zg,u2,sr,hc,xb,kb,Mke,iQe,dQe,FQe,zQe,pRe,kRe,WRe,oTe,wTe,MTe,eFe,dFe,qFe,oNe,wNe,MNe,eOe,dOe,NOe,zOe,uLe,DLe,db,nMe,EMe,MMe,rUe,mUe,MUe,JUe,ZUe,h_e,m_e,F_e,V_e,z_e,p4e,Q4e,dz,A8e,G8e,iHe,EHe,HHe,rje,pje,dje,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr],sp=[R2,Ly,VL,f2,A2,xr,so,zi,Ns,ws,Uy,Th,B2,Cb,id,zL,ZL,wb,Bb,eM,xf,ne,UOe,$Oe,oUe,g8e,U4e,eX,R2,R2,R2,R2],gd=[Ol,e6e,Ny,nd,Gy,ga,mb,Nh,w2,KL,Eb,qy,vb,tM,Vy,xLe,CUe,d4e,E8e,Tl,Ol,Ol,Ol,Ol,Ol,Ol,Ol,Ol,Ol,Ol,Ol,Ol],FX=[oGe,oM],EGe=[aGe,L_e],Yb=[lGe,hX,t6e,i6e,mRe,JFe,aMe,BHe],IGe=[cGe,jTe],NX=[hd,Oh,Ib,$A,aM,v,D,Q,H,V,hd,hd,hd,hd,hd,hd],CGe=[uGe,WUe],hU=[T2,S6e,Sb,jke,MQe,TRe,JRe,IFe,uNe,hLe,Ty,lHe,T2,T2,T2,T2],wGe=[fGe,IQe],BGe=[AGe,WHe],OX=[pU,XL,Se,_e,pt,iFe,pU,pU],Vb=[pGe,Wt,Fy,gb,t_e,C_e,e4e,Ije],LX=[hGe,Sy],vGe=[gGe,jNe],MX=[dGe,rM],F2=[Wb,ko,yb,$L,vu,eRe,cTe,iOe,IOe,YL,L3e,V8e,oje,Wb,Wb,Wb],UX=[mGe],_X=[tE,JL,My,XA,p2,Bu,jy,rd,DNe,BMe,HUe,tE,tE,tE,tE,tE],SGe=[yGe,H_e],gU=[rE,DTe,LLe,jMe,kUe,a_e,P_e,a4e,O4e,S8e,Qje,rE,rE,rE,rE,rE];return{_llvm_bswap_i32:xX,dynCall_idd:tGe,dynCall_i:J6e,_i64Subtract:Gb,___udivdi3:fU,dynCall_vif:R6e,setThrew:ca,dynCall_viii:X6e,_bitshift64Lshr:qb,_bitshift64Shl:DX,dynCall_vi:N6e,dynCall_viiddi:W6e,dynCall_diii:H6e,dynCall_iii:q6e,_memset:eE,_sbrk:qh,_memcpy:Qr,__GLOBAL__sub_I_Yoga_cpp:a2,dynCall_vii:O6e,___uremdi3:AU,dynCall_vid:T6e,stackAlloc:Ua,_nbind_init:jje,getTempRet0:MA,dynCall_di:j6e,dynCall_iid:G6e,setTempRet0:LA,_i64Add:uU,dynCall_fiff:F6e,dynCall_iiii:_6e,_emscripten_get_global_libc:$je,dynCall_viid:eGe,dynCall_viiid:z6e,dynCall_viififi:Z6e,dynCall_ii:L6e,__GLOBAL__sub_I_Binding_cc:i8e,dynCall_viiii:rGe,dynCall_iiiiii:K6e,stackSave:hf,dynCall_viiiii:Q6e,__GLOBAL__sub_I_nbind_cc:Sr,dynCall_vidd:U6e,_free:Hb,runPostSets:k6e,dynCall_viiiiii:Y6e,establishStackSpace:wn,_memmove:Q2,stackRestore:lc,_malloc:_b,__GLOBAL__sub_I_common_cc:v4e,dynCall_viddi:M6e,dynCall_dii:V6e,dynCall_v:$6e}}(Module.asmGlobalArg,Module.asmLibraryArg,buffer),_llvm_bswap_i32=Module._llvm_bswap_i32=asm._llvm_bswap_i32,getTempRet0=Module.getTempRet0=asm.getTempRet0,___udivdi3=Module.___udivdi3=asm.___udivdi3,setThrew=Module.setThrew=asm.setThrew,_bitshift64Lshr=Module._bitshift64Lshr=asm._bitshift64Lshr,_bitshift64Shl=Module._bitshift64Shl=asm._bitshift64Shl,_memset=Module._memset=asm._memset,_sbrk=Module._sbrk=asm._sbrk,_memcpy=Module._memcpy=asm._memcpy,stackAlloc=Module.stackAlloc=asm.stackAlloc,___uremdi3=Module.___uremdi3=asm.___uremdi3,_nbind_init=Module._nbind_init=asm._nbind_init,_i64Subtract=Module._i64Subtract=asm._i64Subtract,setTempRet0=Module.setTempRet0=asm.setTempRet0,_i64Add=Module._i64Add=asm._i64Add,_emscripten_get_global_libc=Module._emscripten_get_global_libc=asm._emscripten_get_global_libc,__GLOBAL__sub_I_Yoga_cpp=Module.__GLOBAL__sub_I_Yoga_cpp=asm.__GLOBAL__sub_I_Yoga_cpp,__GLOBAL__sub_I_Binding_cc=Module.__GLOBAL__sub_I_Binding_cc=asm.__GLOBAL__sub_I_Binding_cc,stackSave=Module.stackSave=asm.stackSave,__GLOBAL__sub_I_nbind_cc=Module.__GLOBAL__sub_I_nbind_cc=asm.__GLOBAL__sub_I_nbind_cc,_free=Module._free=asm._free,runPostSets=Module.runPostSets=asm.runPostSets,establishStackSpace=Module.establishStackSpace=asm.establishStackSpace,_memmove=Module._memmove=asm._memmove,stackRestore=Module.stackRestore=asm.stackRestore,_malloc=Module._malloc=asm._malloc,__GLOBAL__sub_I_common_cc=Module.__GLOBAL__sub_I_common_cc=asm.__GLOBAL__sub_I_common_cc,dynCall_viiiii=Module.dynCall_viiiii=asm.dynCall_viiiii,dynCall_vif=Module.dynCall_vif=asm.dynCall_vif,dynCall_vid=Module.dynCall_vid=asm.dynCall_vid,dynCall_fiff=Module.dynCall_fiff=asm.dynCall_fiff,dynCall_vi=Module.dynCall_vi=asm.dynCall_vi,dynCall_vii=Module.dynCall_vii=asm.dynCall_vii,dynCall_ii=Module.dynCall_ii=asm.dynCall_ii,dynCall_viddi=Module.dynCall_viddi=asm.dynCall_viddi,dynCall_vidd=Module.dynCall_vidd=asm.dynCall_vidd,dynCall_iiii=Module.dynCall_iiii=asm.dynCall_iiii,dynCall_diii=Module.dynCall_diii=asm.dynCall_diii,dynCall_di=Module.dynCall_di=asm.dynCall_di,dynCall_iid=Module.dynCall_iid=asm.dynCall_iid,dynCall_iii=Module.dynCall_iii=asm.dynCall_iii,dynCall_viiddi=Module.dynCall_viiddi=asm.dynCall_viiddi,dynCall_viiiiii=Module.dynCall_viiiiii=asm.dynCall_viiiiii,dynCall_dii=Module.dynCall_dii=asm.dynCall_dii,dynCall_i=Module.dynCall_i=asm.dynCall_i,dynCall_iiiiii=Module.dynCall_iiiiii=asm.dynCall_iiiiii,dynCall_viiid=Module.dynCall_viiid=asm.dynCall_viiid,dynCall_viififi=Module.dynCall_viififi=asm.dynCall_viififi,dynCall_viii=Module.dynCall_viii=asm.dynCall_viii,dynCall_v=Module.dynCall_v=asm.dynCall_v,dynCall_viid=Module.dynCall_viid=asm.dynCall_viid,dynCall_idd=Module.dynCall_idd=asm.dynCall_idd,dynCall_viiii=Module.dynCall_viiii=asm.dynCall_viiii;Runtime.stackAlloc=Module.stackAlloc,Runtime.stackSave=Module.stackSave,Runtime.stackRestore=Module.stackRestore,Runtime.establishStackSpace=Module.establishStackSpace,Runtime.setTempRet0=Module.setTempRet0,Runtime.getTempRet0=Module.getTempRet0,Module.asm=asm;function ExitStatus(t){this.name="ExitStatus",this.message="Program terminated with exit("+t+")",this.status=t}ExitStatus.prototype=new Error,ExitStatus.prototype.constructor=ExitStatus;var initialStackTop,preloadStartTime=null,calledMain=!1;dependenciesFulfilled=function t(){Module.calledRun||run(),Module.calledRun||(dependenciesFulfilled=t)},Module.callMain=Module.callMain=function t(e){e=e||[],ensureInitRuntime();var r=e.length+1;function s(){for(var p=0;p<3;p++)a.push(0)}var a=[allocate(intArrayFromString(Module.thisProgram),"i8",ALLOC_NORMAL)];s();for(var n=0;n0||(preRun(),runDependencies>0)||Module.calledRun)return;function e(){Module.calledRun||(Module.calledRun=!0,!ABORT&&(ensureInitRuntime(),preMain(),Module.onRuntimeInitialized&&Module.onRuntimeInitialized(),Module._main&&shouldRunNow&&Module.callMain(t),postRun()))}Module.setStatus?(Module.setStatus("Running..."),setTimeout(function(){setTimeout(function(){Module.setStatus("")},1),e()},1)):e()}Module.run=Module.run=run;function exit(t,e){e&&Module.noExitRuntime||(Module.noExitRuntime||(ABORT=!0,EXITSTATUS=t,STACKTOP=initialStackTop,exitRuntime(),Module.onExit&&Module.onExit(t)),ENVIRONMENT_IS_NODE&&process.exit(t),Module.quit(t,new ExitStatus(t)))}Module.exit=Module.exit=exit;var abortDecorators=[];function abort(t){Module.onAbort&&Module.onAbort(t),t!==void 0?(Module.print(t),Module.printErr(t),t=JSON.stringify(t)):t="",ABORT=!0,EXITSTATUS=1;var e=` If this abort() is unexpected, build with -s ASSERTIONS=1 which can give more information.`,r="abort("+t+") at "+stackTrace()+e;throw abortDecorators&&abortDecorators.forEach(function(s){r=s(r,t)}),r}if(Module.abort=Module.abort=abort,Module.preInit)for(typeof Module.preInit=="function"&&(Module.preInit=[Module.preInit]);Module.preInit.length>0;)Module.preInit.pop()();var shouldRunNow=!0;Module.noInitialRun&&(shouldRunNow=!1),run()})});var Fm=_((cKt,bwe)=>{"use strict";var Ipt=Dwe(),Cpt=Pwe(),j9=!1,G9=null;Cpt({},function(t,e){if(!j9){if(j9=!0,t)throw t;G9=e}});if(!j9)throw new Error("Failed to load the yoga module - it needed to be loaded synchronously, but didn't");bwe.exports=Ipt(G9.bind,G9.lib)});var W9=_((uKt,q9)=>{"use strict";var xwe=t=>Number.isNaN(t)?!1:t>=4352&&(t<=4447||t===9001||t===9002||11904<=t&&t<=12871&&t!==12351||12880<=t&&t<=19903||19968<=t&&t<=42182||43360<=t&&t<=43388||44032<=t&&t<=55203||63744<=t&&t<=64255||65040<=t&&t<=65049||65072<=t&&t<=65131||65281<=t&&t<=65376||65504<=t&&t<=65510||110592<=t&&t<=110593||127488<=t&&t<=127569||131072<=t&&t<=262141);q9.exports=xwe;q9.exports.default=xwe});var Qwe=_((fKt,kwe)=>{"use strict";kwe.exports=function(){return/\uD83C\uDFF4\uDB40\uDC67\uDB40\uDC62(?:\uDB40\uDC65\uDB40\uDC6E\uDB40\uDC67|\uDB40\uDC73\uDB40\uDC63\uDB40\uDC74|\uDB40\uDC77\uDB40\uDC6C\uDB40\uDC73)\uDB40\uDC7F|\uD83D\uDC68(?:\uD83C\uDFFC\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFB|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFE])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFD])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFC])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83D\uDC68|(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D[\uDC66\uDC67])|[\u2695\u2696\u2708]\uFE0F|\uD83D[\uDC66\uDC67]|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|(?:\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708])\uFE0F|\uD83C\uDFFB\u200D(?:\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C[\uDFFB-\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFB\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D\uD83D\uDC69)\uD83C\uDFFB|\uD83E\uDDD1(?:\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1(?:\uD83C[\uDFFB-\uDFFF])|\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1)|(?:\uD83E\uDDD1\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB-\uDFFE])|(?:\uD83E\uDDD1\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D\uD83D\uDC69)(?:\uD83C[\uDFFB\uDFFC])|\uD83D\uDC69(?:\uD83C\uDFFE\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFD\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFD-\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFB\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFC-\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|(?:\uD83E\uDDD1\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D\uD83D\uDC69)(?:\uD83C[\uDFFB-\uDFFD])|\uD83D\uDC69\u200D\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D[\uDC66\uDC67])|(?:\uD83D\uDC41\uFE0F\u200D\uD83D\uDDE8|\uD83D\uDC69(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])|(?:(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)\uFE0F|\uD83D\uDC6F|\uD83E[\uDD3C\uDDDE\uDDDF])\u200D[\u2640\u2642]|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uD83C[\uDFFB-\uDFFF])\u200D[\u2640\u2642]|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD6-\uDDDD])(?:(?:\uD83C[\uDFFB-\uDFFF])\u200D[\u2640\u2642]|\u200D[\u2640\u2642])|\uD83C\uDFF4\u200D\u2620)\uFE0F|\uD83D\uDC69\u200D\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|\uD83C\uDFF3\uFE0F\u200D\uD83C\uDF08|\uD83D\uDC15\u200D\uD83E\uDDBA|\uD83D\uDC69\u200D\uD83D\uDC66|\uD83D\uDC69\u200D\uD83D\uDC67|\uD83C\uDDFD\uD83C\uDDF0|\uD83C\uDDF4\uD83C\uDDF2|\uD83C\uDDF6\uD83C\uDDE6|[#\*0-9]\uFE0F\u20E3|\uD83C\uDDE7(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEF\uDDF1-\uDDF4\uDDF6-\uDDF9\uDDFB\uDDFC\uDDFE\uDDFF])|\uD83C\uDDF9(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDED\uDDEF-\uDDF4\uDDF7\uDDF9\uDDFB\uDDFC\uDDFF])|\uD83C\uDDEA(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDED\uDDF7-\uDDFA])|\uD83E\uDDD1(?:\uD83C[\uDFFB-\uDFFF])|\uD83C\uDDF7(?:\uD83C[\uDDEA\uDDF4\uDDF8\uDDFA\uDDFC])|\uD83D\uDC69(?:\uD83C[\uDFFB-\uDFFF])|\uD83C\uDDF2(?:\uD83C[\uDDE6\uDDE8-\uDDED\uDDF0-\uDDFF])|\uD83C\uDDE6(?:\uD83C[\uDDE8-\uDDEC\uDDEE\uDDF1\uDDF2\uDDF4\uDDF6-\uDDFA\uDDFC\uDDFD\uDDFF])|\uD83C\uDDF0(?:\uD83C[\uDDEA\uDDEC-\uDDEE\uDDF2\uDDF3\uDDF5\uDDF7\uDDFC\uDDFE\uDDFF])|\uD83C\uDDED(?:\uD83C[\uDDF0\uDDF2\uDDF3\uDDF7\uDDF9\uDDFA])|\uD83C\uDDE9(?:\uD83C[\uDDEA\uDDEC\uDDEF\uDDF0\uDDF2\uDDF4\uDDFF])|\uD83C\uDDFE(?:\uD83C[\uDDEA\uDDF9])|\uD83C\uDDEC(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEE\uDDF1-\uDDF3\uDDF5-\uDDFA\uDDFC\uDDFE])|\uD83C\uDDF8(?:\uD83C[\uDDE6-\uDDEA\uDDEC-\uDDF4\uDDF7-\uDDF9\uDDFB\uDDFD-\uDDFF])|\uD83C\uDDEB(?:\uD83C[\uDDEE-\uDDF0\uDDF2\uDDF4\uDDF7])|\uD83C\uDDF5(?:\uD83C[\uDDE6\uDDEA-\uDDED\uDDF0-\uDDF3\uDDF7-\uDDF9\uDDFC\uDDFE])|\uD83C\uDDFB(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDEE\uDDF3\uDDFA])|\uD83C\uDDF3(?:\uD83C[\uDDE6\uDDE8\uDDEA-\uDDEC\uDDEE\uDDF1\uDDF4\uDDF5\uDDF7\uDDFA\uDDFF])|\uD83C\uDDE8(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDEE\uDDF0-\uDDF5\uDDF7\uDDFA-\uDDFF])|\uD83C\uDDF1(?:\uD83C[\uDDE6-\uDDE8\uDDEE\uDDF0\uDDF7-\uDDFB\uDDFE])|\uD83C\uDDFF(?:\uD83C[\uDDE6\uDDF2\uDDFC])|\uD83C\uDDFC(?:\uD83C[\uDDEB\uDDF8])|\uD83C\uDDFA(?:\uD83C[\uDDE6\uDDEC\uDDF2\uDDF3\uDDF8\uDDFE\uDDFF])|\uD83C\uDDEE(?:\uD83C[\uDDE8-\uDDEA\uDDF1-\uDDF4\uDDF6-\uDDF9])|\uD83C\uDDEF(?:\uD83C[\uDDEA\uDDF2\uDDF4\uDDF5])|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD6-\uDDDD])(?:\uD83C[\uDFFB-\uDFFF])|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uD83C[\uDFFB-\uDFFF])|(?:[\u261D\u270A-\u270D]|\uD83C[\uDF85\uDFC2\uDFC7]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC70\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDCAA\uDD74\uDD7A\uDD90\uDD95\uDD96\uDE4C\uDE4F\uDEC0\uDECC]|\uD83E[\uDD0F\uDD18-\uDD1C\uDD1E\uDD1F\uDD30-\uDD36\uDDB5\uDDB6\uDDBB\uDDD2-\uDDD5])(?:\uD83C[\uDFFB-\uDFFF])|(?:[\u231A\u231B\u23E9-\u23EC\u23F0\u23F3\u25FD\u25FE\u2614\u2615\u2648-\u2653\u267F\u2693\u26A1\u26AA\u26AB\u26BD\u26BE\u26C4\u26C5\u26CE\u26D4\u26EA\u26F2\u26F3\u26F5\u26FA\u26FD\u2705\u270A\u270B\u2728\u274C\u274E\u2753-\u2755\u2757\u2795-\u2797\u27B0\u27BF\u2B1B\u2B1C\u2B50\u2B55]|\uD83C[\uDC04\uDCCF\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF7C\uDF7E-\uDF93\uDFA0-\uDFCA\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF4\uDFF8-\uDFFF]|\uD83D[\uDC00-\uDC3E\uDC40\uDC42-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDD7A\uDD95\uDD96\uDDA4\uDDFB-\uDE4F\uDE80-\uDEC5\uDECC\uDED0-\uDED2\uDED5\uDEEB\uDEEC\uDEF4-\uDEFA\uDFE0-\uDFEB]|\uD83E[\uDD0D-\uDD3A\uDD3C-\uDD45\uDD47-\uDD71\uDD73-\uDD76\uDD7A-\uDDA2\uDDA5-\uDDAA\uDDAE-\uDDCA\uDDCD-\uDDFF\uDE70-\uDE73\uDE78-\uDE7A\uDE80-\uDE82\uDE90-\uDE95])|(?:[#\*0-9\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u231A\u231B\u2328\u23CF\u23E9-\u23F3\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB-\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u261D\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u267F\u2692-\u2697\u2699\u269B\u269C\u26A0\u26A1\u26AA\u26AB\u26B0\u26B1\u26BD\u26BE\u26C4\u26C5\u26C8\u26CE\u26CF\u26D1\u26D3\u26D4\u26E9\u26EA\u26F0-\u26F5\u26F7-\u26FA\u26FD\u2702\u2705\u2708-\u270D\u270F\u2712\u2714\u2716\u271D\u2721\u2728\u2733\u2734\u2744\u2747\u274C\u274E\u2753-\u2755\u2757\u2763\u2764\u2795-\u2797\u27A1\u27B0\u27BF\u2934\u2935\u2B05-\u2B07\u2B1B\u2B1C\u2B50\u2B55\u3030\u303D\u3297\u3299]|\uD83C[\uDC04\uDCCF\uDD70\uDD71\uDD7E\uDD7F\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE02\uDE1A\uDE2F\uDE32-\uDE3A\uDE50\uDE51\uDF00-\uDF21\uDF24-\uDF93\uDF96\uDF97\uDF99-\uDF9B\uDF9E-\uDFF0\uDFF3-\uDFF5\uDFF7-\uDFFF]|\uD83D[\uDC00-\uDCFD\uDCFF-\uDD3D\uDD49-\uDD4E\uDD50-\uDD67\uDD6F\uDD70\uDD73-\uDD7A\uDD87\uDD8A-\uDD8D\uDD90\uDD95\uDD96\uDDA4\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA-\uDE4F\uDE80-\uDEC5\uDECB-\uDED2\uDED5\uDEE0-\uDEE5\uDEE9\uDEEB\uDEEC\uDEF0\uDEF3-\uDEFA\uDFE0-\uDFEB]|\uD83E[\uDD0D-\uDD3A\uDD3C-\uDD45\uDD47-\uDD71\uDD73-\uDD76\uDD7A-\uDDA2\uDDA5-\uDDAA\uDDAE-\uDDCA\uDDCD-\uDDFF\uDE70-\uDE73\uDE78-\uDE7A\uDE80-\uDE82\uDE90-\uDE95])\uFE0F|(?:[\u261D\u26F9\u270A-\u270D]|\uD83C[\uDF85\uDFC2-\uDFC4\uDFC7\uDFCA-\uDFCC]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66-\uDC78\uDC7C\uDC81-\uDC83\uDC85-\uDC87\uDC8F\uDC91\uDCAA\uDD74\uDD75\uDD7A\uDD90\uDD95\uDD96\uDE45-\uDE47\uDE4B-\uDE4F\uDEA3\uDEB4-\uDEB6\uDEC0\uDECC]|\uD83E[\uDD0F\uDD18-\uDD1F\uDD26\uDD30-\uDD39\uDD3C-\uDD3E\uDDB5\uDDB6\uDDB8\uDDB9\uDDBB\uDDCD-\uDDCF\uDDD1-\uDDDD])/g}});var GS=_((AKt,Y9)=>{"use strict";var wpt=dk(),Bpt=W9(),vpt=Qwe(),Rwe=t=>{if(typeof t!="string"||t.length===0||(t=wpt(t),t.length===0))return 0;t=t.replace(vpt()," ");let e=0;for(let r=0;r=127&&s<=159||s>=768&&s<=879||(s>65535&&r++,e+=Bpt(s)?2:1)}return e};Y9.exports=Rwe;Y9.exports.default=Rwe});var J9=_((pKt,V9)=>{"use strict";var Spt=GS(),Twe=t=>{let e=0;for(let r of t.split(` `))e=Math.max(e,Spt(r));return e};V9.exports=Twe;V9.exports.default=Twe});var Fwe=_(qS=>{"use strict";var Dpt=qS&&qS.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(qS,"__esModule",{value:!0});var Ppt=Dpt(J9()),K9={};qS.default=t=>{if(t.length===0)return{width:0,height:0};if(K9[t])return K9[t];let e=Ppt.default(t),r=t.split(` `).length;return K9[t]={width:e,height:r},{width:e,height:r}}});var Nwe=_(WS=>{"use strict";var bpt=WS&&WS.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(WS,"__esModule",{value:!0});var Pn=bpt(Fm()),xpt=(t,e)=>{"position"in e&&t.setPositionType(e.position==="absolute"?Pn.default.POSITION_TYPE_ABSOLUTE:Pn.default.POSITION_TYPE_RELATIVE)},kpt=(t,e)=>{"marginLeft"in e&&t.setMargin(Pn.default.EDGE_START,e.marginLeft||0),"marginRight"in e&&t.setMargin(Pn.default.EDGE_END,e.marginRight||0),"marginTop"in e&&t.setMargin(Pn.default.EDGE_TOP,e.marginTop||0),"marginBottom"in e&&t.setMargin(Pn.default.EDGE_BOTTOM,e.marginBottom||0)},Qpt=(t,e)=>{"paddingLeft"in e&&t.setPadding(Pn.default.EDGE_LEFT,e.paddingLeft||0),"paddingRight"in e&&t.setPadding(Pn.default.EDGE_RIGHT,e.paddingRight||0),"paddingTop"in e&&t.setPadding(Pn.default.EDGE_TOP,e.paddingTop||0),"paddingBottom"in e&&t.setPadding(Pn.default.EDGE_BOTTOM,e.paddingBottom||0)},Rpt=(t,e)=>{var r;"flexGrow"in e&&t.setFlexGrow((r=e.flexGrow)!==null&&r!==void 0?r:0),"flexShrink"in e&&t.setFlexShrink(typeof e.flexShrink=="number"?e.flexShrink:1),"flexDirection"in e&&(e.flexDirection==="row"&&t.setFlexDirection(Pn.default.FLEX_DIRECTION_ROW),e.flexDirection==="row-reverse"&&t.setFlexDirection(Pn.default.FLEX_DIRECTION_ROW_REVERSE),e.flexDirection==="column"&&t.setFlexDirection(Pn.default.FLEX_DIRECTION_COLUMN),e.flexDirection==="column-reverse"&&t.setFlexDirection(Pn.default.FLEX_DIRECTION_COLUMN_REVERSE)),"flexBasis"in e&&(typeof e.flexBasis=="number"?t.setFlexBasis(e.flexBasis):typeof e.flexBasis=="string"?t.setFlexBasisPercent(Number.parseInt(e.flexBasis,10)):t.setFlexBasis(NaN)),"alignItems"in e&&((e.alignItems==="stretch"||!e.alignItems)&&t.setAlignItems(Pn.default.ALIGN_STRETCH),e.alignItems==="flex-start"&&t.setAlignItems(Pn.default.ALIGN_FLEX_START),e.alignItems==="center"&&t.setAlignItems(Pn.default.ALIGN_CENTER),e.alignItems==="flex-end"&&t.setAlignItems(Pn.default.ALIGN_FLEX_END)),"alignSelf"in e&&((e.alignSelf==="auto"||!e.alignSelf)&&t.setAlignSelf(Pn.default.ALIGN_AUTO),e.alignSelf==="flex-start"&&t.setAlignSelf(Pn.default.ALIGN_FLEX_START),e.alignSelf==="center"&&t.setAlignSelf(Pn.default.ALIGN_CENTER),e.alignSelf==="flex-end"&&t.setAlignSelf(Pn.default.ALIGN_FLEX_END)),"justifyContent"in e&&((e.justifyContent==="flex-start"||!e.justifyContent)&&t.setJustifyContent(Pn.default.JUSTIFY_FLEX_START),e.justifyContent==="center"&&t.setJustifyContent(Pn.default.JUSTIFY_CENTER),e.justifyContent==="flex-end"&&t.setJustifyContent(Pn.default.JUSTIFY_FLEX_END),e.justifyContent==="space-between"&&t.setJustifyContent(Pn.default.JUSTIFY_SPACE_BETWEEN),e.justifyContent==="space-around"&&t.setJustifyContent(Pn.default.JUSTIFY_SPACE_AROUND))},Tpt=(t,e)=>{var r,s;"width"in e&&(typeof e.width=="number"?t.setWidth(e.width):typeof e.width=="string"?t.setWidthPercent(Number.parseInt(e.width,10)):t.setWidthAuto()),"height"in e&&(typeof e.height=="number"?t.setHeight(e.height):typeof e.height=="string"?t.setHeightPercent(Number.parseInt(e.height,10)):t.setHeightAuto()),"minWidth"in e&&(typeof e.minWidth=="string"?t.setMinWidthPercent(Number.parseInt(e.minWidth,10)):t.setMinWidth((r=e.minWidth)!==null&&r!==void 0?r:0)),"minHeight"in e&&(typeof e.minHeight=="string"?t.setMinHeightPercent(Number.parseInt(e.minHeight,10)):t.setMinHeight((s=e.minHeight)!==null&&s!==void 0?s:0))},Fpt=(t,e)=>{"display"in e&&t.setDisplay(e.display==="flex"?Pn.default.DISPLAY_FLEX:Pn.default.DISPLAY_NONE)},Npt=(t,e)=>{if("borderStyle"in e){let r=typeof e.borderStyle=="string"?1:0;t.setBorder(Pn.default.EDGE_TOP,r),t.setBorder(Pn.default.EDGE_BOTTOM,r),t.setBorder(Pn.default.EDGE_LEFT,r),t.setBorder(Pn.default.EDGE_RIGHT,r)}};WS.default=(t,e={})=>{xpt(t,e),kpt(t,e),Qpt(t,e),Rpt(t,e),Tpt(t,e),Fpt(t,e),Npt(t,e)}});var Mwe=_((dKt,Lwe)=>{"use strict";var YS=GS(),Opt=dk(),Lpt=sk(),Z9=new Set(["\x1B","\x9B"]),Mpt=39,Owe=t=>`${Z9.values().next().value}[${t}m`,Upt=t=>t.split(" ").map(e=>YS(e)),z9=(t,e,r)=>{let s=[...e],a=!1,n=YS(Opt(t[t.length-1]));for(let[c,f]of s.entries()){let p=YS(f);if(n+p<=r?t[t.length-1]+=f:(t.push(f),n=0),Z9.has(f))a=!0;else if(a&&f==="m"){a=!1;continue}a||(n+=p,n===r&&c0&&t.length>1&&(t[t.length-2]+=t.pop())},_pt=t=>{let e=t.split(" "),r=e.length;for(;r>0&&!(YS(e[r-1])>0);)r--;return r===e.length?t:e.slice(0,r).join(" ")+e.slice(r).join("")},Hpt=(t,e,r={})=>{if(r.trim!==!1&&t.trim()==="")return"";let s="",a="",n,c=Upt(t),f=[""];for(let[p,h]of t.split(" ").entries()){r.trim!==!1&&(f[f.length-1]=f[f.length-1].trimLeft());let E=YS(f[f.length-1]);if(p!==0&&(E>=e&&(r.wordWrap===!1||r.trim===!1)&&(f.push(""),E=0),(E>0||r.trim===!1)&&(f[f.length-1]+=" ",E++)),r.hard&&c[p]>e){let C=e-E,S=1+Math.floor((c[p]-C-1)/e);Math.floor((c[p]-1)/e)e&&E>0&&c[p]>0){if(r.wordWrap===!1&&Ee&&r.wordWrap===!1){z9(f,h,e);continue}f[f.length-1]+=h}r.trim!==!1&&(f=f.map(_pt)),s=f.join(` `);for(let[p,h]of[...s].entries()){if(a+=h,Z9.has(h)){let C=parseFloat(/\d[^m]*/.exec(s.slice(p,p+4)));n=C===Mpt?null:C}let E=Lpt.codes.get(Number(n));n&&E&&(s[p+1]===` `?a+=Owe(E):h===` `&&(a+=Owe(n)))}return a};Lwe.exports=(t,e,r)=>String(t).normalize().replace(/\r\n/g,` `).split(` `).map(s=>Hpt(s,e,r)).join(` `)});var Hwe=_((mKt,_we)=>{"use strict";var Uwe="[\uD800-\uDBFF][\uDC00-\uDFFF]",jpt=t=>t&&t.exact?new RegExp(`^${Uwe}$`):new RegExp(Uwe,"g");_we.exports=jpt});var X9=_((yKt,Wwe)=>{"use strict";var Gpt=W9(),qpt=Hwe(),jwe=sk(),qwe=["\x1B","\x9B"],FF=t=>`${qwe[0]}[${t}m`,Gwe=(t,e,r)=>{let s=[];t=[...t];for(let a of t){let n=a;a.match(";")&&(a=a.split(";")[0][0]+"0");let c=jwe.codes.get(parseInt(a,10));if(c){let f=t.indexOf(c.toString());f>=0?t.splice(f,1):s.push(FF(e?c:n))}else if(e){s.push(FF(0));break}else s.push(FF(n))}if(e&&(s=s.filter((a,n)=>s.indexOf(a)===n),r!==void 0)){let a=FF(jwe.codes.get(parseInt(r,10)));s=s.reduce((n,c)=>c===a?[c,...n]:[...n,c],[])}return s.join("")};Wwe.exports=(t,e,r)=>{let s=[...t.normalize()],a=[];r=typeof r=="number"?r:s.length;let n=!1,c,f=0,p="";for(let[h,E]of s.entries()){let C=!1;if(qwe.includes(E)){let S=/\d[^m]*/.exec(t.slice(h,h+18));c=S&&S.length>0?S[0]:void 0,fe&&f<=r)p+=E;else if(f===e&&!n&&c!==void 0)p=Gwe(a);else if(f>=r){p+=Gwe(a,!0,c);break}}return p}});var Vwe=_((EKt,Ywe)=>{"use strict";var $0=X9(),Wpt=GS();function NF(t,e,r){if(t.charAt(e)===" ")return e;for(let s=1;s<=3;s++)if(r){if(t.charAt(e+s)===" ")return e+s}else if(t.charAt(e-s)===" ")return e-s;return e}Ywe.exports=(t,e,r)=>{r={position:"end",preferTruncationOnSpace:!1,...r};let{position:s,space:a,preferTruncationOnSpace:n}=r,c="\u2026",f=1;if(typeof t!="string")throw new TypeError(`Expected \`input\` to be a string, got ${typeof t}`);if(typeof e!="number")throw new TypeError(`Expected \`columns\` to be a number, got ${typeof e}`);if(e<1)return"";if(e===1)return c;let p=Wpt(t);if(p<=e)return t;if(s==="start"){if(n){let h=NF(t,p-e+1,!0);return c+$0(t,h,p).trim()}return a===!0&&(c+=" ",f=2),c+$0(t,p-e+f,p)}if(s==="middle"){a===!0&&(c=" "+c+" ",f=3);let h=Math.floor(e/2);if(n){let E=NF(t,h),C=NF(t,p-(e-h)+1,!0);return $0(t,0,E)+c+$0(t,C,p).trim()}return $0(t,0,h)+c+$0(t,p-(e-h)+f,p)}if(s==="end"){if(n){let h=NF(t,e-1);return $0(t,0,h)+c}return a===!0&&(c=" "+c,f=2),$0(t,0,e-f)+c}throw new Error(`Expected \`options.position\` to be either \`start\`, \`middle\` or \`end\`, got ${s}`)}});var eW=_(VS=>{"use strict";var Jwe=VS&&VS.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(VS,"__esModule",{value:!0});var Ypt=Jwe(Mwe()),Vpt=Jwe(Vwe()),$9={};VS.default=(t,e,r)=>{let s=t+String(e)+String(r);if($9[s])return $9[s];let a=t;if(r==="wrap"&&(a=Ypt.default(t,e,{trim:!1,hard:!0})),r.startsWith("truncate")){let n="end";r==="truncate-middle"&&(n="middle"),r==="truncate-start"&&(n="start"),a=Vpt.default(t,e,{position:n})}return $9[s]=a,a}});var rW=_(tW=>{"use strict";Object.defineProperty(tW,"__esModule",{value:!0});var Kwe=t=>{let e="";if(t.childNodes.length>0)for(let r of t.childNodes){let s="";r.nodeName==="#text"?s=r.nodeValue:((r.nodeName==="ink-text"||r.nodeName==="ink-virtual-text")&&(s=Kwe(r)),s.length>0&&typeof r.internal_transform=="function"&&(s=r.internal_transform(s))),e+=s}return e};tW.default=Kwe});var nW=_(Pi=>{"use strict";var JS=Pi&&Pi.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(Pi,"__esModule",{value:!0});Pi.setTextNodeValue=Pi.createTextNode=Pi.setStyle=Pi.setAttribute=Pi.removeChildNode=Pi.insertBeforeNode=Pi.appendChildNode=Pi.createNode=Pi.TEXT_NAME=void 0;var Jpt=JS(Fm()),zwe=JS(Fwe()),Kpt=JS(Nwe()),zpt=JS(eW()),Zpt=JS(rW());Pi.TEXT_NAME="#text";Pi.createNode=t=>{var e;let r={nodeName:t,style:{},attributes:{},childNodes:[],parentNode:null,yogaNode:t==="ink-virtual-text"?void 0:Jpt.default.Node.create()};return t==="ink-text"&&((e=r.yogaNode)===null||e===void 0||e.setMeasureFunc(Xpt.bind(null,r))),r};Pi.appendChildNode=(t,e)=>{var r;e.parentNode&&Pi.removeChildNode(e.parentNode,e),e.parentNode=t,t.childNodes.push(e),e.yogaNode&&((r=t.yogaNode)===null||r===void 0||r.insertChild(e.yogaNode,t.yogaNode.getChildCount())),(t.nodeName==="ink-text"||t.nodeName==="ink-virtual-text")&&OF(t)};Pi.insertBeforeNode=(t,e,r)=>{var s,a;e.parentNode&&Pi.removeChildNode(e.parentNode,e),e.parentNode=t;let n=t.childNodes.indexOf(r);if(n>=0){t.childNodes.splice(n,0,e),e.yogaNode&&((s=t.yogaNode)===null||s===void 0||s.insertChild(e.yogaNode,n));return}t.childNodes.push(e),e.yogaNode&&((a=t.yogaNode)===null||a===void 0||a.insertChild(e.yogaNode,t.yogaNode.getChildCount())),(t.nodeName==="ink-text"||t.nodeName==="ink-virtual-text")&&OF(t)};Pi.removeChildNode=(t,e)=>{var r,s;e.yogaNode&&((s=(r=e.parentNode)===null||r===void 0?void 0:r.yogaNode)===null||s===void 0||s.removeChild(e.yogaNode)),e.parentNode=null;let a=t.childNodes.indexOf(e);a>=0&&t.childNodes.splice(a,1),(t.nodeName==="ink-text"||t.nodeName==="ink-virtual-text")&&OF(t)};Pi.setAttribute=(t,e,r)=>{t.attributes[e]=r};Pi.setStyle=(t,e)=>{t.style=e,t.yogaNode&&Kpt.default(t.yogaNode,e)};Pi.createTextNode=t=>{let e={nodeName:"#text",nodeValue:t,yogaNode:void 0,parentNode:null,style:{}};return Pi.setTextNodeValue(e,t),e};var Xpt=function(t,e){var r,s;let a=t.nodeName==="#text"?t.nodeValue:Zpt.default(t),n=zwe.default(a);if(n.width<=e||n.width>=1&&e>0&&e<1)return n;let c=(s=(r=t.style)===null||r===void 0?void 0:r.textWrap)!==null&&s!==void 0?s:"wrap",f=zpt.default(a,e,c);return zwe.default(f)},Zwe=t=>{var e;if(!(!t||!t.parentNode))return(e=t.yogaNode)!==null&&e!==void 0?e:Zwe(t.parentNode)},OF=t=>{let e=Zwe(t);e?.markDirty()};Pi.setTextNodeValue=(t,e)=>{typeof e!="string"&&(e=String(e)),t.nodeValue=e,OF(t)}});var r1e=_(KS=>{"use strict";var t1e=KS&&KS.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(KS,"__esModule",{value:!0});var Xwe=U9(),$pt=t1e(Iwe()),$we=t1e(Fm()),ea=nW(),e1e=t=>{t?.unsetMeasureFunc(),t?.freeRecursive()};KS.default=$pt.default({schedulePassiveEffects:Xwe.unstable_scheduleCallback,cancelPassiveEffects:Xwe.unstable_cancelCallback,now:Date.now,getRootHostContext:()=>({isInsideText:!1}),prepareForCommit:()=>null,preparePortalMount:()=>null,clearContainer:()=>!1,shouldDeprioritizeSubtree:()=>!1,resetAfterCommit:t=>{if(t.isStaticDirty){t.isStaticDirty=!1,typeof t.onImmediateRender=="function"&&t.onImmediateRender();return}typeof t.onRender=="function"&&t.onRender()},getChildHostContext:(t,e)=>{let r=t.isInsideText,s=e==="ink-text"||e==="ink-virtual-text";return r===s?t:{isInsideText:s}},shouldSetTextContent:()=>!1,createInstance:(t,e,r,s)=>{if(s.isInsideText&&t==="ink-box")throw new Error(" can\u2019t be nested inside component");let a=t==="ink-text"&&s.isInsideText?"ink-virtual-text":t,n=ea.createNode(a);for(let[c,f]of Object.entries(e))c!=="children"&&(c==="style"?ea.setStyle(n,f):c==="internal_transform"?n.internal_transform=f:c==="internal_static"?n.internal_static=!0:ea.setAttribute(n,c,f));return n},createTextInstance:(t,e,r)=>{if(!r.isInsideText)throw new Error(`Text string "${t}" must be rendered inside component`);return ea.createTextNode(t)},resetTextContent:()=>{},hideTextInstance:t=>{ea.setTextNodeValue(t,"")},unhideTextInstance:(t,e)=>{ea.setTextNodeValue(t,e)},getPublicInstance:t=>t,hideInstance:t=>{var e;(e=t.yogaNode)===null||e===void 0||e.setDisplay($we.default.DISPLAY_NONE)},unhideInstance:t=>{var e;(e=t.yogaNode)===null||e===void 0||e.setDisplay($we.default.DISPLAY_FLEX)},appendInitialChild:ea.appendChildNode,appendChild:ea.appendChildNode,insertBefore:ea.insertBeforeNode,finalizeInitialChildren:(t,e,r,s)=>(t.internal_static&&(s.isStaticDirty=!0,s.staticNode=t),!1),supportsMutation:!0,appendChildToContainer:ea.appendChildNode,insertInContainerBefore:ea.insertBeforeNode,removeChildFromContainer:(t,e)=>{ea.removeChildNode(t,e),e1e(e.yogaNode)},prepareUpdate:(t,e,r,s,a)=>{t.internal_static&&(a.isStaticDirty=!0);let n={},c=Object.keys(s);for(let f of c)if(s[f]!==r[f]){if(f==="style"&&typeof s.style=="object"&&typeof r.style=="object"){let h=s.style,E=r.style,C=Object.keys(h);for(let S of C){if(S==="borderStyle"||S==="borderColor"){if(typeof n.style!="object"){let b={};n.style=b}n.style.borderStyle=h.borderStyle,n.style.borderColor=h.borderColor}if(h[S]!==E[S]){if(typeof n.style!="object"){let b={};n.style=b}n.style[S]=h[S]}}continue}n[f]=s[f]}return n},commitUpdate:(t,e)=>{for(let[r,s]of Object.entries(e))r!=="children"&&(r==="style"?ea.setStyle(t,s):r==="internal_transform"?t.internal_transform=s:r==="internal_static"?t.internal_static=!0:ea.setAttribute(t,r,s))},commitTextUpdate:(t,e,r)=>{ea.setTextNodeValue(t,r)},removeChild:(t,e)=>{ea.removeChildNode(t,e),e1e(e.yogaNode)}})});var i1e=_((vKt,n1e)=>{"use strict";n1e.exports=(t,e=1,r)=>{if(r={indent:" ",includeEmptyLines:!1,...r},typeof t!="string")throw new TypeError(`Expected \`input\` to be a \`string\`, got \`${typeof t}\``);if(typeof e!="number")throw new TypeError(`Expected \`count\` to be a \`number\`, got \`${typeof e}\``);if(typeof r.indent!="string")throw new TypeError(`Expected \`options.indent\` to be a \`string\`, got \`${typeof r.indent}\``);if(e===0)return t;let s=r.includeEmptyLines?/^/gm:/^(?!\s*$)/gm;return t.replace(s,r.indent.repeat(e))}});var s1e=_(zS=>{"use strict";var eht=zS&&zS.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(zS,"__esModule",{value:!0});var LF=eht(Fm());zS.default=t=>t.getComputedWidth()-t.getComputedPadding(LF.default.EDGE_LEFT)-t.getComputedPadding(LF.default.EDGE_RIGHT)-t.getComputedBorder(LF.default.EDGE_LEFT)-t.getComputedBorder(LF.default.EDGE_RIGHT)});var o1e=_((DKt,tht)=>{tht.exports={single:{topLeft:"\u250C",topRight:"\u2510",bottomRight:"\u2518",bottomLeft:"\u2514",vertical:"\u2502",horizontal:"\u2500"},double:{topLeft:"\u2554",topRight:"\u2557",bottomRight:"\u255D",bottomLeft:"\u255A",vertical:"\u2551",horizontal:"\u2550"},round:{topLeft:"\u256D",topRight:"\u256E",bottomRight:"\u256F",bottomLeft:"\u2570",vertical:"\u2502",horizontal:"\u2500"},bold:{topLeft:"\u250F",topRight:"\u2513",bottomRight:"\u251B",bottomLeft:"\u2517",vertical:"\u2503",horizontal:"\u2501"},singleDouble:{topLeft:"\u2553",topRight:"\u2556",bottomRight:"\u255C",bottomLeft:"\u2559",vertical:"\u2551",horizontal:"\u2500"},doubleSingle:{topLeft:"\u2552",topRight:"\u2555",bottomRight:"\u255B",bottomLeft:"\u2558",vertical:"\u2502",horizontal:"\u2550"},classic:{topLeft:"+",topRight:"+",bottomRight:"+",bottomLeft:"+",vertical:"|",horizontal:"-"}}});var l1e=_((PKt,iW)=>{"use strict";var a1e=o1e();iW.exports=a1e;iW.exports.default=a1e});var sW=_(XS=>{"use strict";var rht=XS&&XS.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(XS,"__esModule",{value:!0});var ZS=rht(RE()),nht=/^(rgb|hsl|hsv|hwb)\(\s?(\d+),\s?(\d+),\s?(\d+)\s?\)$/,iht=/^(ansi|ansi256)\(\s?(\d+)\s?\)$/,MF=(t,e)=>e==="foreground"?t:"bg"+t[0].toUpperCase()+t.slice(1);XS.default=(t,e,r)=>{if(!e)return t;if(e in ZS.default){let a=MF(e,r);return ZS.default[a](t)}if(e.startsWith("#")){let a=MF("hex",r);return ZS.default[a](e)(t)}if(e.startsWith("ansi")){let a=iht.exec(e);if(!a)return t;let n=MF(a[1],r),c=Number(a[2]);return ZS.default[n](c)(t)}if(e.startsWith("rgb")||e.startsWith("hsl")||e.startsWith("hsv")||e.startsWith("hwb")){let a=nht.exec(e);if(!a)return t;let n=MF(a[1],r),c=Number(a[2]),f=Number(a[3]),p=Number(a[4]);return ZS.default[n](c,f,p)(t)}return t}});var u1e=_($S=>{"use strict";var c1e=$S&&$S.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty($S,"__esModule",{value:!0});var sht=c1e(l1e()),oW=c1e(sW());$S.default=(t,e,r,s)=>{if(typeof r.style.borderStyle=="string"){let a=r.yogaNode.getComputedWidth(),n=r.yogaNode.getComputedHeight(),c=r.style.borderColor,f=sht.default[r.style.borderStyle],p=oW.default(f.topLeft+f.horizontal.repeat(a-2)+f.topRight,c,"foreground"),h=(oW.default(f.vertical,c,"foreground")+` `).repeat(n-2),E=oW.default(f.bottomLeft+f.horizontal.repeat(a-2)+f.bottomRight,c,"foreground");s.write(t,e,p,{transformers:[]}),s.write(t,e+1,h,{transformers:[]}),s.write(t+a-1,e+1,h,{transformers:[]}),s.write(t,e+n-1,E,{transformers:[]})}}});var A1e=_(eD=>{"use strict";var Nm=eD&&eD.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(eD,"__esModule",{value:!0});var oht=Nm(Fm()),aht=Nm(J9()),lht=Nm(i1e()),cht=Nm(eW()),uht=Nm(s1e()),fht=Nm(rW()),Aht=Nm(u1e()),pht=(t,e)=>{var r;let s=(r=t.childNodes[0])===null||r===void 0?void 0:r.yogaNode;if(s){let a=s.getComputedLeft(),n=s.getComputedTop();e=` `.repeat(n)+lht.default(e,a)}return e},f1e=(t,e,r)=>{var s;let{offsetX:a=0,offsetY:n=0,transformers:c=[],skipStaticElements:f}=r;if(f&&t.internal_static)return;let{yogaNode:p}=t;if(p){if(p.getDisplay()===oht.default.DISPLAY_NONE)return;let h=a+p.getComputedLeft(),E=n+p.getComputedTop(),C=c;if(typeof t.internal_transform=="function"&&(C=[t.internal_transform,...c]),t.nodeName==="ink-text"){let S=fht.default(t);if(S.length>0){let b=aht.default(S),I=uht.default(p);if(b>I){let T=(s=t.style.textWrap)!==null&&s!==void 0?s:"wrap";S=cht.default(S,I,T)}S=pht(t,S),e.write(h,E,S,{transformers:C})}return}if(t.nodeName==="ink-box"&&Aht.default(h,E,t,e),t.nodeName==="ink-root"||t.nodeName==="ink-box")for(let S of t.childNodes)f1e(S,e,{offsetX:h,offsetY:E,transformers:C,skipStaticElements:f})}};eD.default=f1e});var g1e=_(tD=>{"use strict";var h1e=tD&&tD.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(tD,"__esModule",{value:!0});var p1e=h1e(X9()),hht=h1e(GS()),aW=class{constructor(e){this.writes=[];let{width:r,height:s}=e;this.width=r,this.height=s}write(e,r,s,a){let{transformers:n}=a;s&&this.writes.push({x:e,y:r,text:s,transformers:n})}get(){let e=[];for(let s=0;ss.trimRight()).join(` `),height:e.length}}};tD.default=aW});var y1e=_(rD=>{"use strict";var lW=rD&&rD.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(rD,"__esModule",{value:!0});var ght=lW(Fm()),d1e=lW(A1e()),m1e=lW(g1e());rD.default=(t,e)=>{var r;if(t.yogaNode.setWidth(e),t.yogaNode){t.yogaNode.calculateLayout(void 0,void 0,ght.default.DIRECTION_LTR);let s=new m1e.default({width:t.yogaNode.getComputedWidth(),height:t.yogaNode.getComputedHeight()});d1e.default(t,s,{skipStaticElements:!0});let a;!((r=t.staticNode)===null||r===void 0)&&r.yogaNode&&(a=new m1e.default({width:t.staticNode.yogaNode.getComputedWidth(),height:t.staticNode.yogaNode.getComputedHeight()}),d1e.default(t.staticNode,a,{skipStaticElements:!1}));let{output:n,height:c}=s.get();return{output:n,outputHeight:c,staticOutput:a?`${a.get().output} `:""}}return{output:"",outputHeight:0,staticOutput:""}}});var w1e=_((TKt,C1e)=>{"use strict";var E1e=Ie("stream"),I1e=["assert","count","countReset","debug","dir","dirxml","error","group","groupCollapsed","groupEnd","info","log","table","time","timeEnd","timeLog","trace","warn"],cW={},dht=t=>{let e=new E1e.PassThrough,r=new E1e.PassThrough;e.write=a=>t("stdout",a),r.write=a=>t("stderr",a);let s=new console.Console(e,r);for(let a of I1e)cW[a]=console[a],console[a]=s[a];return()=>{for(let a of I1e)console[a]=cW[a];cW={}}};C1e.exports=dht});var fW=_(uW=>{"use strict";Object.defineProperty(uW,"__esModule",{value:!0});uW.default=new WeakMap});var pW=_(AW=>{"use strict";Object.defineProperty(AW,"__esModule",{value:!0});var mht=hn(),B1e=mht.createContext({exit:()=>{}});B1e.displayName="InternalAppContext";AW.default=B1e});var gW=_(hW=>{"use strict";Object.defineProperty(hW,"__esModule",{value:!0});var yht=hn(),v1e=yht.createContext({stdin:void 0,setRawMode:()=>{},isRawModeSupported:!1,internal_exitOnCtrlC:!0});v1e.displayName="InternalStdinContext";hW.default=v1e});var mW=_(dW=>{"use strict";Object.defineProperty(dW,"__esModule",{value:!0});var Eht=hn(),S1e=Eht.createContext({stdout:void 0,write:()=>{}});S1e.displayName="InternalStdoutContext";dW.default=S1e});var EW=_(yW=>{"use strict";Object.defineProperty(yW,"__esModule",{value:!0});var Iht=hn(),D1e=Iht.createContext({stderr:void 0,write:()=>{}});D1e.displayName="InternalStderrContext";yW.default=D1e});var UF=_(IW=>{"use strict";Object.defineProperty(IW,"__esModule",{value:!0});var Cht=hn(),P1e=Cht.createContext({activeId:void 0,add:()=>{},remove:()=>{},activate:()=>{},deactivate:()=>{},enableFocus:()=>{},disableFocus:()=>{},focusNext:()=>{},focusPrevious:()=>{},focus:()=>{}});P1e.displayName="InternalFocusContext";IW.default=P1e});var x1e=_((_Kt,b1e)=>{"use strict";var wht=/[|\\{}()[\]^$+*?.-]/g;b1e.exports=t=>{if(typeof t!="string")throw new TypeError("Expected a string");return t.replace(wht,"\\$&")}});var T1e=_((HKt,R1e)=>{"use strict";var Bht=x1e(),vht=typeof process=="object"&&process&&typeof process.cwd=="function"?process.cwd():".",Q1e=[].concat(Ie("module").builtinModules,"bootstrap_node","node").map(t=>new RegExp(`(?:\\((?:node:)?${t}(?:\\.js)?:\\d+:\\d+\\)$|^\\s*at (?:node:)?${t}(?:\\.js)?:\\d+:\\d+$)`));Q1e.push(/\((?:node:)?internal\/[^:]+:\d+:\d+\)$/,/\s*at (?:node:)?internal\/[^:]+:\d+:\d+$/,/\/\.node-spawn-wrap-\w+-\w+\/node:\d+:\d+\)?$/);var CW=class t{constructor(e){e={ignoredPackages:[],...e},"internals"in e||(e.internals=t.nodeInternals()),"cwd"in e||(e.cwd=vht),this._cwd=e.cwd.replace(/\\/g,"/"),this._internals=[].concat(e.internals,Sht(e.ignoredPackages)),this._wrapCallSite=e.wrapCallSite||!1}static nodeInternals(){return[...Q1e]}clean(e,r=0){r=" ".repeat(r),Array.isArray(e)||(e=e.split(` `)),!/^\s*at /.test(e[0])&&/^\s*at /.test(e[1])&&(e=e.slice(1));let s=!1,a=null,n=[];return e.forEach(c=>{if(c=c.replace(/\\/g,"/"),this._internals.some(p=>p.test(c)))return;let f=/^\s*at /.test(c);s?c=c.trimEnd().replace(/^(\s+)at /,"$1"):(c=c.trim(),f&&(c=c.slice(3))),c=c.replace(`${this._cwd}/`,""),c&&(f?(a&&(n.push(a),a=null),n.push(c)):(s=!0,a=c))}),n.map(c=>`${r}${c} `).join("")}captureString(e,r=this.captureString){typeof e=="function"&&(r=e,e=1/0);let{stackTraceLimit:s}=Error;e&&(Error.stackTraceLimit=e);let a={};Error.captureStackTrace(a,r);let{stack:n}=a;return Error.stackTraceLimit=s,this.clean(n)}capture(e,r=this.capture){typeof e=="function"&&(r=e,e=1/0);let{prepareStackTrace:s,stackTraceLimit:a}=Error;Error.prepareStackTrace=(f,p)=>this._wrapCallSite?p.map(this._wrapCallSite):p,e&&(Error.stackTraceLimit=e);let n={};Error.captureStackTrace(n,r);let{stack:c}=n;return Object.assign(Error,{prepareStackTrace:s,stackTraceLimit:a}),c}at(e=this.at){let[r]=this.capture(1,e);if(!r)return{};let s={line:r.getLineNumber(),column:r.getColumnNumber()};k1e(s,r.getFileName(),this._cwd),r.isConstructor()&&(s.constructor=!0),r.isEval()&&(s.evalOrigin=r.getEvalOrigin()),r.isNative()&&(s.native=!0);let a;try{a=r.getTypeName()}catch{}a&&a!=="Object"&&a!=="[object Object]"&&(s.type=a);let n=r.getFunctionName();n&&(s.function=n);let c=r.getMethodName();return c&&n!==c&&(s.method=c),s}parseLine(e){let r=e&&e.match(Dht);if(!r)return null;let s=r[1]==="new",a=r[2],n=r[3],c=r[4],f=Number(r[5]),p=Number(r[6]),h=r[7],E=r[8],C=r[9],S=r[10]==="native",b=r[11]===")",I,T={};if(E&&(T.line=Number(E)),C&&(T.column=Number(C)),b&&h){let N=0;for(let U=h.length-1;U>0;U--)if(h.charAt(U)===")")N++;else if(h.charAt(U)==="("&&h.charAt(U-1)===" "&&(N--,N===-1&&h.charAt(U-1)===" ")){let W=h.slice(0,U-1);h=h.slice(U+1),a+=` (${W}`;break}}if(a){let N=a.match(Pht);N&&(a=N[1],I=N[2])}return k1e(T,h,this._cwd),s&&(T.constructor=!0),n&&(T.evalOrigin=n,T.evalLine=f,T.evalColumn=p,T.evalFile=c&&c.replace(/\\/g,"/")),S&&(T.native=!0),a&&(T.function=a),I&&a!==I&&(T.method=I),T}};function k1e(t,e,r){e&&(e=e.replace(/\\/g,"/"),e.startsWith(`${r}/`)&&(e=e.slice(r.length+1)),t.file=e)}function Sht(t){if(t.length===0)return[];let e=t.map(r=>Bht(r));return new RegExp(`[/\\\\]node_modules[/\\\\](?:${e.join("|")})[/\\\\][^:]+:\\d+:\\d+`)}var Dht=new RegExp("^(?:\\s*at )?(?:(new) )?(?:(.*?) \\()?(?:eval at ([^ ]+) \\((.+?):(\\d+):(\\d+)\\), )?(?:(.+?):(\\d+):(\\d+)|(native))(\\)?)$"),Pht=/^(.*?) \[as (.*?)\]$/;R1e.exports=CW});var N1e=_((jKt,F1e)=>{"use strict";F1e.exports=(t,e)=>t.replace(/^\t+/gm,r=>" ".repeat(r.length*(e||2)))});var L1e=_((GKt,O1e)=>{"use strict";var bht=N1e(),xht=(t,e)=>{let r=[],s=t-e,a=t+e;for(let n=s;n<=a;n++)r.push(n);return r};O1e.exports=(t,e,r)=>{if(typeof t!="string")throw new TypeError("Source code is missing.");if(!e||e<1)throw new TypeError("Line number must start from `1`.");if(t=bht(t).split(/\r?\n/),!(e>t.length))return r={around:3,...r},xht(e,r.around).filter(s=>t[s-1]!==void 0).map(s=>({line:s,value:t[s-1]}))}});var _F=_(rf=>{"use strict";var kht=rf&&rf.__createBinding||(Object.create?function(t,e,r,s){s===void 0&&(s=r),Object.defineProperty(t,s,{enumerable:!0,get:function(){return e[r]}})}:function(t,e,r,s){s===void 0&&(s=r),t[s]=e[r]}),Qht=rf&&rf.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),Rht=rf&&rf.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(t!=null)for(var r in t)r!=="default"&&Object.hasOwnProperty.call(t,r)&&kht(e,t,r);return Qht(e,t),e},Tht=rf&&rf.__rest||function(t,e){var r={};for(var s in t)Object.prototype.hasOwnProperty.call(t,s)&&e.indexOf(s)<0&&(r[s]=t[s]);if(t!=null&&typeof Object.getOwnPropertySymbols=="function")for(var a=0,s=Object.getOwnPropertySymbols(t);a{var{children:r}=t,s=Tht(t,["children"]);let a=Object.assign(Object.assign({},s),{marginLeft:s.marginLeft||s.marginX||s.margin||0,marginRight:s.marginRight||s.marginX||s.margin||0,marginTop:s.marginTop||s.marginY||s.margin||0,marginBottom:s.marginBottom||s.marginY||s.margin||0,paddingLeft:s.paddingLeft||s.paddingX||s.padding||0,paddingRight:s.paddingRight||s.paddingX||s.padding||0,paddingTop:s.paddingTop||s.paddingY||s.padding||0,paddingBottom:s.paddingBottom||s.paddingY||s.padding||0});return M1e.default.createElement("ink-box",{ref:e,style:a},r)});wW.displayName="Box";wW.defaultProps={flexDirection:"row",flexGrow:0,flexShrink:1};rf.default=wW});var SW=_(nD=>{"use strict";var BW=nD&&nD.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(nD,"__esModule",{value:!0});var Fht=BW(hn()),yw=BW(RE()),U1e=BW(sW()),vW=({color:t,backgroundColor:e,dimColor:r,bold:s,italic:a,underline:n,strikethrough:c,inverse:f,wrap:p,children:h})=>{if(h==null)return null;let E=C=>(r&&(C=yw.default.dim(C)),t&&(C=U1e.default(C,t,"foreground")),e&&(C=U1e.default(C,e,"background")),s&&(C=yw.default.bold(C)),a&&(C=yw.default.italic(C)),n&&(C=yw.default.underline(C)),c&&(C=yw.default.strikethrough(C)),f&&(C=yw.default.inverse(C)),C);return Fht.default.createElement("ink-text",{style:{flexGrow:0,flexShrink:1,flexDirection:"row",textWrap:p},internal_transform:E},h)};vW.displayName="Text";vW.defaultProps={dimColor:!1,bold:!1,italic:!1,underline:!1,strikethrough:!1,wrap:"wrap"};nD.default=vW});var G1e=_(nf=>{"use strict";var Nht=nf&&nf.__createBinding||(Object.create?function(t,e,r,s){s===void 0&&(s=r),Object.defineProperty(t,s,{enumerable:!0,get:function(){return e[r]}})}:function(t,e,r,s){s===void 0&&(s=r),t[s]=e[r]}),Oht=nf&&nf.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),Lht=nf&&nf.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(t!=null)for(var r in t)r!=="default"&&Object.hasOwnProperty.call(t,r)&&Nht(e,t,r);return Oht(e,t),e},iD=nf&&nf.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(nf,"__esModule",{value:!0});var _1e=Lht(Ie("fs")),Qs=iD(hn()),H1e=iD(T1e()),Mht=iD(L1e()),$p=iD(_F()),AA=iD(SW()),j1e=new H1e.default({cwd:process.cwd(),internals:H1e.default.nodeInternals()}),Uht=({error:t})=>{let e=t.stack?t.stack.split(` `).slice(1):void 0,r=e?j1e.parseLine(e[0]):void 0,s,a=0;if(r?.file&&r?.line&&_1e.existsSync(r.file)){let n=_1e.readFileSync(r.file,"utf8");if(s=Mht.default(n,r.line),s)for(let{line:c}of s)a=Math.max(a,String(c).length)}return Qs.default.createElement($p.default,{flexDirection:"column",padding:1},Qs.default.createElement($p.default,null,Qs.default.createElement(AA.default,{backgroundColor:"red",color:"white"}," ","ERROR"," "),Qs.default.createElement(AA.default,null," ",t.message)),r&&Qs.default.createElement($p.default,{marginTop:1},Qs.default.createElement(AA.default,{dimColor:!0},r.file,":",r.line,":",r.column)),r&&s&&Qs.default.createElement($p.default,{marginTop:1,flexDirection:"column"},s.map(({line:n,value:c})=>Qs.default.createElement($p.default,{key:n},Qs.default.createElement($p.default,{width:a+1},Qs.default.createElement(AA.default,{dimColor:n!==r.line,backgroundColor:n===r.line?"red":void 0,color:n===r.line?"white":void 0},String(n).padStart(a," "),":")),Qs.default.createElement(AA.default,{key:n,backgroundColor:n===r.line?"red":void 0,color:n===r.line?"white":void 0}," "+c)))),t.stack&&Qs.default.createElement($p.default,{marginTop:1,flexDirection:"column"},t.stack.split(` `).slice(1).map(n=>{let c=j1e.parseLine(n);return c?Qs.default.createElement($p.default,{key:n},Qs.default.createElement(AA.default,{dimColor:!0},"- "),Qs.default.createElement(AA.default,{dimColor:!0,bold:!0},c.function),Qs.default.createElement(AA.default,{dimColor:!0,color:"gray"}," ","(",c.file,":",c.line,":",c.column,")")):Qs.default.createElement($p.default,{key:n},Qs.default.createElement(AA.default,{dimColor:!0},"- "),Qs.default.createElement(AA.default,{dimColor:!0,bold:!0},n))})))};nf.default=Uht});var W1e=_(sf=>{"use strict";var _ht=sf&&sf.__createBinding||(Object.create?function(t,e,r,s){s===void 0&&(s=r),Object.defineProperty(t,s,{enumerable:!0,get:function(){return e[r]}})}:function(t,e,r,s){s===void 0&&(s=r),t[s]=e[r]}),Hht=sf&&sf.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),jht=sf&&sf.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(t!=null)for(var r in t)r!=="default"&&Object.hasOwnProperty.call(t,r)&&_ht(e,t,r);return Hht(e,t),e},Lm=sf&&sf.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(sf,"__esModule",{value:!0});var Om=jht(hn()),q1e=Lm(P9()),Ght=Lm(pW()),qht=Lm(gW()),Wht=Lm(mW()),Yht=Lm(EW()),Vht=Lm(UF()),Jht=Lm(G1e()),Kht=" ",zht="\x1B[Z",Zht="\x1B",HF=class extends Om.PureComponent{constructor(){super(...arguments),this.state={isFocusEnabled:!0,activeFocusId:void 0,focusables:[],error:void 0},this.rawModeEnabledCount=0,this.handleSetRawMode=e=>{let{stdin:r}=this.props;if(!this.isRawModeSupported())throw r===process.stdin?new Error(`Raw mode is not supported on the current process.stdin, which Ink uses as input stream by default. Read about how to prevent this error on https://github.com/vadimdemedes/ink/#israwmodesupported`):new Error(`Raw mode is not supported on the stdin provided to Ink. Read about how to prevent this error on https://github.com/vadimdemedes/ink/#israwmodesupported`);if(r.setEncoding("utf8"),e){this.rawModeEnabledCount===0&&(r.addListener("data",this.handleInput),r.resume(),r.setRawMode(!0)),this.rawModeEnabledCount++;return}--this.rawModeEnabledCount===0&&(r.setRawMode(!1),r.removeListener("data",this.handleInput),r.pause())},this.handleInput=e=>{e===""&&this.props.exitOnCtrlC&&this.handleExit(),e===Zht&&this.state.activeFocusId&&this.setState({activeFocusId:void 0}),this.state.isFocusEnabled&&this.state.focusables.length>0&&(e===Kht&&this.focusNext(),e===zht&&this.focusPrevious())},this.handleExit=e=>{this.isRawModeSupported()&&this.handleSetRawMode(!1),this.props.onExit(e)},this.enableFocus=()=>{this.setState({isFocusEnabled:!0})},this.disableFocus=()=>{this.setState({isFocusEnabled:!1})},this.focus=e=>{this.setState(r=>r.focusables.some(a=>a?.id===e)?{activeFocusId:e}:r)},this.focusNext=()=>{this.setState(e=>{var r;let s=(r=e.focusables[0])===null||r===void 0?void 0:r.id;return{activeFocusId:this.findNextFocusable(e)||s}})},this.focusPrevious=()=>{this.setState(e=>{var r;let s=(r=e.focusables[e.focusables.length-1])===null||r===void 0?void 0:r.id;return{activeFocusId:this.findPreviousFocusable(e)||s}})},this.addFocusable=(e,{autoFocus:r})=>{this.setState(s=>{let a=s.activeFocusId;return!a&&r&&(a=e),{activeFocusId:a,focusables:[...s.focusables,{id:e,isActive:!0}]}})},this.removeFocusable=e=>{this.setState(r=>({activeFocusId:r.activeFocusId===e?void 0:r.activeFocusId,focusables:r.focusables.filter(s=>s.id!==e)}))},this.activateFocusable=e=>{this.setState(r=>({focusables:r.focusables.map(s=>s.id!==e?s:{id:e,isActive:!0})}))},this.deactivateFocusable=e=>{this.setState(r=>({activeFocusId:r.activeFocusId===e?void 0:r.activeFocusId,focusables:r.focusables.map(s=>s.id!==e?s:{id:e,isActive:!1})}))},this.findNextFocusable=e=>{var r;let s=e.focusables.findIndex(a=>a.id===e.activeFocusId);for(let a=s+1;a{var r;let s=e.focusables.findIndex(a=>a.id===e.activeFocusId);for(let a=s-1;a>=0;a--)if(!((r=e.focusables[a])===null||r===void 0)&&r.isActive)return e.focusables[a].id}}static getDerivedStateFromError(e){return{error:e}}isRawModeSupported(){return this.props.stdin.isTTY}render(){return Om.default.createElement(Ght.default.Provider,{value:{exit:this.handleExit}},Om.default.createElement(qht.default.Provider,{value:{stdin:this.props.stdin,setRawMode:this.handleSetRawMode,isRawModeSupported:this.isRawModeSupported(),internal_exitOnCtrlC:this.props.exitOnCtrlC}},Om.default.createElement(Wht.default.Provider,{value:{stdout:this.props.stdout,write:this.props.writeToStdout}},Om.default.createElement(Yht.default.Provider,{value:{stderr:this.props.stderr,write:this.props.writeToStderr}},Om.default.createElement(Vht.default.Provider,{value:{activeId:this.state.activeFocusId,add:this.addFocusable,remove:this.removeFocusable,activate:this.activateFocusable,deactivate:this.deactivateFocusable,enableFocus:this.enableFocus,disableFocus:this.disableFocus,focusNext:this.focusNext,focusPrevious:this.focusPrevious,focus:this.focus}},this.state.error?Om.default.createElement(Jht.default,{error:this.state.error}):this.props.children)))))}componentDidMount(){q1e.default.hide(this.props.stdout)}componentWillUnmount(){q1e.default.show(this.props.stdout),this.isRawModeSupported()&&this.handleSetRawMode(!1)}componentDidCatch(e){this.handleExit(e)}};sf.default=HF;HF.displayName="InternalApp"});var J1e=_(of=>{"use strict";var Xht=of&&of.__createBinding||(Object.create?function(t,e,r,s){s===void 0&&(s=r),Object.defineProperty(t,s,{enumerable:!0,get:function(){return e[r]}})}:function(t,e,r,s){s===void 0&&(s=r),t[s]=e[r]}),$ht=of&&of.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),e0t=of&&of.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(t!=null)for(var r in t)r!=="default"&&Object.hasOwnProperty.call(t,r)&&Xht(e,t,r);return $ht(e,t),e},af=of&&of.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(of,"__esModule",{value:!0});var t0t=af(hn()),Y1e=_Ce(),r0t=af(rwe()),n0t=af(w9()),i0t=af(lwe()),s0t=af(uwe()),DW=af(r1e()),o0t=af(y1e()),a0t=af(D9()),l0t=af(w1e()),c0t=e0t(nW()),u0t=af(fW()),f0t=af(W1e()),Ew=process.env.CI==="false"?!1:i0t.default,V1e=()=>{},PW=class{constructor(e){this.resolveExitPromise=()=>{},this.rejectExitPromise=()=>{},this.unsubscribeExit=()=>{},this.onRender=()=>{if(this.isUnmounted)return;let{output:r,outputHeight:s,staticOutput:a}=o0t.default(this.rootNode,this.options.stdout.columns||80),n=a&&a!==` `;if(this.options.debug){n&&(this.fullStaticOutput+=a),this.options.stdout.write(this.fullStaticOutput+r);return}if(Ew){n&&this.options.stdout.write(a),this.lastOutput=r;return}if(n&&(this.fullStaticOutput+=a),s>=this.options.stdout.rows){this.options.stdout.write(n0t.default.clearTerminal+this.fullStaticOutput+r),this.lastOutput=r;return}n&&(this.log.clear(),this.options.stdout.write(a),this.log(r)),!n&&r!==this.lastOutput&&this.throttledLog(r),this.lastOutput=r},s0t.default(this),this.options=e,this.rootNode=c0t.createNode("ink-root"),this.rootNode.onRender=e.debug?this.onRender:Y1e(this.onRender,32,{leading:!0,trailing:!0}),this.rootNode.onImmediateRender=this.onRender,this.log=r0t.default.create(e.stdout),this.throttledLog=e.debug?this.log:Y1e(this.log,void 0,{leading:!0,trailing:!0}),this.isUnmounted=!1,this.lastOutput="",this.fullStaticOutput="",this.container=DW.default.createContainer(this.rootNode,0,!1,null),this.unsubscribeExit=a0t.default(this.unmount,{alwaysLast:!1}),e.patchConsole&&this.patchConsole(),Ew||(e.stdout.on("resize",this.onRender),this.unsubscribeResize=()=>{e.stdout.off("resize",this.onRender)})}render(e){let r=t0t.default.createElement(f0t.default,{stdin:this.options.stdin,stdout:this.options.stdout,stderr:this.options.stderr,writeToStdout:this.writeToStdout,writeToStderr:this.writeToStderr,exitOnCtrlC:this.options.exitOnCtrlC,onExit:this.unmount},e);DW.default.updateContainer(r,this.container,null,V1e)}writeToStdout(e){if(!this.isUnmounted){if(this.options.debug){this.options.stdout.write(e+this.fullStaticOutput+this.lastOutput);return}if(Ew){this.options.stdout.write(e);return}this.log.clear(),this.options.stdout.write(e),this.log(this.lastOutput)}}writeToStderr(e){if(!this.isUnmounted){if(this.options.debug){this.options.stderr.write(e),this.options.stdout.write(this.fullStaticOutput+this.lastOutput);return}if(Ew){this.options.stderr.write(e);return}this.log.clear(),this.options.stderr.write(e),this.log(this.lastOutput)}}unmount(e){this.isUnmounted||(this.onRender(),this.unsubscribeExit(),typeof this.restoreConsole=="function"&&this.restoreConsole(),typeof this.unsubscribeResize=="function"&&this.unsubscribeResize(),Ew?this.options.stdout.write(this.lastOutput+` `):this.options.debug||this.log.done(),this.isUnmounted=!0,DW.default.updateContainer(null,this.container,null,V1e),u0t.default.delete(this.options.stdout),e instanceof Error?this.rejectExitPromise(e):this.resolveExitPromise())}waitUntilExit(){return this.exitPromise||(this.exitPromise=new Promise((e,r)=>{this.resolveExitPromise=e,this.rejectExitPromise=r})),this.exitPromise}clear(){!Ew&&!this.options.debug&&this.log.clear()}patchConsole(){this.options.debug||(this.restoreConsole=l0t.default((e,r)=>{e==="stdout"&&this.writeToStdout(r),e==="stderr"&&(r.startsWith("The above error occurred")||this.writeToStderr(r))}))}};of.default=PW});var z1e=_(sD=>{"use strict";var K1e=sD&&sD.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(sD,"__esModule",{value:!0});var A0t=K1e(J1e()),jF=K1e(fW()),p0t=Ie("stream"),h0t=(t,e)=>{let r=Object.assign({stdout:process.stdout,stdin:process.stdin,stderr:process.stderr,debug:!1,exitOnCtrlC:!0,patchConsole:!0},g0t(e)),s=d0t(r.stdout,()=>new A0t.default(r));return s.render(t),{rerender:s.render,unmount:()=>s.unmount(),waitUntilExit:s.waitUntilExit,cleanup:()=>jF.default.delete(r.stdout),clear:s.clear}};sD.default=h0t;var g0t=(t={})=>t instanceof p0t.Stream?{stdout:t,stdin:process.stdin}:t,d0t=(t,e)=>{let r;return jF.default.has(t)?r=jF.default.get(t):(r=e(),jF.default.set(t,r)),r}});var X1e=_(eh=>{"use strict";var m0t=eh&&eh.__createBinding||(Object.create?function(t,e,r,s){s===void 0&&(s=r),Object.defineProperty(t,s,{enumerable:!0,get:function(){return e[r]}})}:function(t,e,r,s){s===void 0&&(s=r),t[s]=e[r]}),y0t=eh&&eh.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),E0t=eh&&eh.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(t!=null)for(var r in t)r!=="default"&&Object.hasOwnProperty.call(t,r)&&m0t(e,t,r);return y0t(e,t),e};Object.defineProperty(eh,"__esModule",{value:!0});var oD=E0t(hn()),Z1e=t=>{let{items:e,children:r,style:s}=t,[a,n]=oD.useState(0),c=oD.useMemo(()=>e.slice(a),[e,a]);oD.useLayoutEffect(()=>{n(e.length)},[e.length]);let f=c.map((h,E)=>r(h,a+E)),p=oD.useMemo(()=>Object.assign({position:"absolute",flexDirection:"column"},s),[s]);return oD.default.createElement("ink-box",{internal_static:!0,style:p},f)};Z1e.displayName="Static";eh.default=Z1e});var e2e=_(aD=>{"use strict";var I0t=aD&&aD.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(aD,"__esModule",{value:!0});var C0t=I0t(hn()),$1e=({children:t,transform:e})=>t==null?null:C0t.default.createElement("ink-text",{style:{flexGrow:0,flexShrink:1,flexDirection:"row"},internal_transform:e},t);$1e.displayName="Transform";aD.default=$1e});var r2e=_(lD=>{"use strict";var w0t=lD&&lD.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(lD,"__esModule",{value:!0});var B0t=w0t(hn()),t2e=({count:t=1})=>B0t.default.createElement("ink-text",null,` `.repeat(t));t2e.displayName="Newline";lD.default=t2e});var s2e=_(cD=>{"use strict";var n2e=cD&&cD.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(cD,"__esModule",{value:!0});var v0t=n2e(hn()),S0t=n2e(_F()),i2e=()=>v0t.default.createElement(S0t.default,{flexGrow:1});i2e.displayName="Spacer";cD.default=i2e});var GF=_(uD=>{"use strict";var D0t=uD&&uD.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(uD,"__esModule",{value:!0});var P0t=hn(),b0t=D0t(gW()),x0t=()=>P0t.useContext(b0t.default);uD.default=x0t});var a2e=_(fD=>{"use strict";var k0t=fD&&fD.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(fD,"__esModule",{value:!0});var o2e=hn(),Q0t=k0t(GF()),R0t=(t,e={})=>{let{stdin:r,setRawMode:s,internal_exitOnCtrlC:a}=Q0t.default();o2e.useEffect(()=>{if(e.isActive!==!1)return s(!0),()=>{s(!1)}},[e.isActive,s]),o2e.useEffect(()=>{if(e.isActive===!1)return;let n=c=>{let f=String(c),p={upArrow:f==="\x1B[A",downArrow:f==="\x1B[B",leftArrow:f==="\x1B[D",rightArrow:f==="\x1B[C",pageDown:f==="\x1B[6~",pageUp:f==="\x1B[5~",return:f==="\r",escape:f==="\x1B",ctrl:!1,shift:!1,tab:f===" "||f==="\x1B[Z",backspace:f==="\b",delete:f==="\x7F"||f==="\x1B[3~",meta:!1};f<=""&&!p.return&&(f=String.fromCharCode(f.charCodeAt(0)+97-1),p.ctrl=!0),f.startsWith("\x1B")&&(f=f.slice(1),p.meta=!0);let h=f>="A"&&f<="Z",E=f>="\u0410"&&f<="\u042F";f.length===1&&(h||E)&&(p.shift=!0),p.tab&&f==="[Z"&&(p.shift=!0),(p.tab||p.backspace||p.delete)&&(f=""),(!(f==="c"&&p.ctrl)||!a)&&t(f,p)};return r?.on("data",n),()=>{r?.off("data",n)}},[e.isActive,r,a,t])};fD.default=R0t});var l2e=_(AD=>{"use strict";var T0t=AD&&AD.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(AD,"__esModule",{value:!0});var F0t=hn(),N0t=T0t(pW()),O0t=()=>F0t.useContext(N0t.default);AD.default=O0t});var c2e=_(pD=>{"use strict";var L0t=pD&&pD.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(pD,"__esModule",{value:!0});var M0t=hn(),U0t=L0t(mW()),_0t=()=>M0t.useContext(U0t.default);pD.default=_0t});var u2e=_(hD=>{"use strict";var H0t=hD&&hD.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(hD,"__esModule",{value:!0});var j0t=hn(),G0t=H0t(EW()),q0t=()=>j0t.useContext(G0t.default);hD.default=q0t});var A2e=_(dD=>{"use strict";var f2e=dD&&dD.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(dD,"__esModule",{value:!0});var gD=hn(),W0t=f2e(UF()),Y0t=f2e(GF()),V0t=({isActive:t=!0,autoFocus:e=!1,id:r}={})=>{let{isRawModeSupported:s,setRawMode:a}=Y0t.default(),{activeId:n,add:c,remove:f,activate:p,deactivate:h,focus:E}=gD.useContext(W0t.default),C=gD.useMemo(()=>r??Math.random().toString().slice(2,7),[r]);return gD.useEffect(()=>(c(C,{autoFocus:e}),()=>{f(C)}),[C,e]),gD.useEffect(()=>{t?p(C):h(C)},[t,C]),gD.useEffect(()=>{if(!(!s||!t))return a(!0),()=>{a(!1)}},[t]),{isFocused:!!C&&n===C,focus:E}};dD.default=V0t});var p2e=_(mD=>{"use strict";var J0t=mD&&mD.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(mD,"__esModule",{value:!0});var K0t=hn(),z0t=J0t(UF()),Z0t=()=>{let t=K0t.useContext(z0t.default);return{enableFocus:t.enableFocus,disableFocus:t.disableFocus,focusNext:t.focusNext,focusPrevious:t.focusPrevious,focus:t.focus}};mD.default=Z0t});var h2e=_(bW=>{"use strict";Object.defineProperty(bW,"__esModule",{value:!0});bW.default=t=>{var e,r,s,a;return{width:(r=(e=t.yogaNode)===null||e===void 0?void 0:e.getComputedWidth())!==null&&r!==void 0?r:0,height:(a=(s=t.yogaNode)===null||s===void 0?void 0:s.getComputedHeight())!==null&&a!==void 0?a:0}}});var Wc=_(mo=>{"use strict";Object.defineProperty(mo,"__esModule",{value:!0});var X0t=z1e();Object.defineProperty(mo,"render",{enumerable:!0,get:function(){return X0t.default}});var $0t=_F();Object.defineProperty(mo,"Box",{enumerable:!0,get:function(){return $0t.default}});var egt=SW();Object.defineProperty(mo,"Text",{enumerable:!0,get:function(){return egt.default}});var tgt=X1e();Object.defineProperty(mo,"Static",{enumerable:!0,get:function(){return tgt.default}});var rgt=e2e();Object.defineProperty(mo,"Transform",{enumerable:!0,get:function(){return rgt.default}});var ngt=r2e();Object.defineProperty(mo,"Newline",{enumerable:!0,get:function(){return ngt.default}});var igt=s2e();Object.defineProperty(mo,"Spacer",{enumerable:!0,get:function(){return igt.default}});var sgt=a2e();Object.defineProperty(mo,"useInput",{enumerable:!0,get:function(){return sgt.default}});var ogt=l2e();Object.defineProperty(mo,"useApp",{enumerable:!0,get:function(){return ogt.default}});var agt=GF();Object.defineProperty(mo,"useStdin",{enumerable:!0,get:function(){return agt.default}});var lgt=c2e();Object.defineProperty(mo,"useStdout",{enumerable:!0,get:function(){return lgt.default}});var cgt=u2e();Object.defineProperty(mo,"useStderr",{enumerable:!0,get:function(){return cgt.default}});var ugt=A2e();Object.defineProperty(mo,"useFocus",{enumerable:!0,get:function(){return ugt.default}});var fgt=p2e();Object.defineProperty(mo,"useFocusManager",{enumerable:!0,get:function(){return fgt.default}});var Agt=h2e();Object.defineProperty(mo,"measureElement",{enumerable:!0,get:function(){return Agt.default}})});var kW={};Vt(kW,{Gem:()=>xW});var g2e,Mm,xW,qF=Ze(()=>{g2e=ut(Wc()),Mm=ut(hn()),xW=(0,Mm.memo)(({active:t})=>{let e=(0,Mm.useMemo)(()=>t?"\u25C9":"\u25EF",[t]),r=(0,Mm.useMemo)(()=>t?"green":"yellow",[t]);return Mm.default.createElement(g2e.Text,{color:r},e)})});var m2e={};Vt(m2e,{useKeypress:()=>Um});function Um({active:t},e,r){let{stdin:s}=(0,d2e.useStdin)(),a=(0,WF.useCallback)((n,c)=>e(n,c),r);(0,WF.useEffect)(()=>{if(!(!t||!s))return s.on("keypress",a),()=>{s.off("keypress",a)}},[t,a,s])}var d2e,WF,yD=Ze(()=>{d2e=ut(Wc()),WF=ut(hn())});var E2e={};Vt(E2e,{FocusRequest:()=>y2e,useFocusRequest:()=>QW});var y2e,QW,RW=Ze(()=>{yD();y2e=(r=>(r.BEFORE="before",r.AFTER="after",r))(y2e||{}),QW=function({active:t},e,r){Um({active:t},(s,a)=>{a.name==="tab"&&(a.shift?e("before"):e("after"))},r)}});var I2e={};Vt(I2e,{useListInput:()=>ED});var ED,YF=Ze(()=>{yD();ED=function(t,e,{active:r,minus:s,plus:a,set:n,loop:c=!0}){Um({active:r},(f,p)=>{let h=e.indexOf(t);switch(p.name){case s:{let E=h-1;if(c){n(e[(e.length+E)%e.length]);return}if(E<0)return;n(e[E])}break;case a:{let E=h+1;if(c){n(e[E%e.length]);return}if(E>=e.length)return;n(e[E])}break}},[e,t,a,n,c])}});var VF={};Vt(VF,{ScrollableItems:()=>pgt});var eg,dl,pgt,JF=Ze(()=>{eg=ut(Wc()),dl=ut(hn());RW();YF();pgt=({active:t=!0,children:e=[],radius:r=10,size:s=1,loop:a=!0,onFocusRequest:n,willReachEnd:c})=>{let f=N=>{if(N.key===null)throw new Error("Expected all children to have a key");return N.key},p=dl.default.Children.map(e,N=>f(N)),h=p[0],[E,C]=(0,dl.useState)(h),S=p.indexOf(E);(0,dl.useEffect)(()=>{p.includes(E)||C(h)},[e]),(0,dl.useEffect)(()=>{c&&S>=p.length-2&&c()},[S]),QW({active:t&&!!n},N=>{n?.(N)},[n]),ED(E,p,{active:t,minus:"up",plus:"down",set:C,loop:a});let b=S-r,I=S+r;I>p.length&&(b-=I-p.length,I=p.length),b<0&&(I+=-b,b=0),I>=p.length&&(I=p.length-1);let T=[];for(let N=b;N<=I;++N){let U=p[N],W=t&&U===E;T.push(dl.default.createElement(eg.Box,{key:U,height:s},dl.default.createElement(eg.Box,{marginLeft:1,marginRight:1},dl.default.createElement(eg.Text,null,W?dl.default.createElement(eg.Text,{color:"cyan",bold:!0},">"):" ")),dl.default.createElement(eg.Box,null,dl.default.cloneElement(e[N],{active:W}))))}return dl.default.createElement(eg.Box,{flexDirection:"column",width:"100%"},T)}});var C2e,th,w2e,TW,B2e,FW=Ze(()=>{C2e=ut(Wc()),th=ut(hn()),w2e=Ie("readline"),TW=th.default.createContext(null),B2e=({children:t})=>{let{stdin:e,setRawMode:r}=(0,C2e.useStdin)();(0,th.useEffect)(()=>{r&&r(!0),e&&(0,w2e.emitKeypressEvents)(e)},[e,r]);let[s,a]=(0,th.useState)(new Map),n=(0,th.useMemo)(()=>({getAll:()=>s,get:c=>s.get(c),set:(c,f)=>a(new Map([...s,[c,f]]))}),[s,a]);return th.default.createElement(TW.Provider,{value:n,children:t})}});var NW={};Vt(NW,{useMinistore:()=>hgt});function hgt(t,e){let r=(0,KF.useContext)(TW);if(r===null)throw new Error("Expected this hook to run with a ministore context attached");if(typeof t>"u")return r.getAll();let s=(0,KF.useCallback)(n=>{r.set(t,n)},[t,r.set]),a=r.get(t);return typeof a>"u"&&(a=e),[a,s]}var KF,OW=Ze(()=>{KF=ut(hn());FW()});var ZF={};Vt(ZF,{renderForm:()=>ggt});async function ggt(t,e,{stdin:r,stdout:s,stderr:a}){let n,c=p=>{let{exit:h}=(0,zF.useApp)();Um({active:!0},(E,C)=>{C.name==="return"&&(n=p,h())},[h,p])},{waitUntilExit:f}=(0,zF.render)(LW.default.createElement(B2e,null,LW.default.createElement(t,{...e,useSubmit:c})),{stdin:r,stdout:s,stderr:a});return await f(),n}var zF,LW,XF=Ze(()=>{zF=ut(Wc()),LW=ut(hn());FW();yD()});var P2e=_(ID=>{"use strict";Object.defineProperty(ID,"__esModule",{value:!0});ID.UncontrolledTextInput=void 0;var S2e=hn(),MW=hn(),v2e=Wc(),_m=RE(),D2e=({value:t,placeholder:e="",focus:r=!0,mask:s,highlightPastedText:a=!1,showCursor:n=!0,onChange:c,onSubmit:f})=>{let[{cursorOffset:p,cursorWidth:h},E]=MW.useState({cursorOffset:(t||"").length,cursorWidth:0});MW.useEffect(()=>{E(T=>{if(!r||!n)return T;let N=t||"";return T.cursorOffset>N.length-1?{cursorOffset:N.length,cursorWidth:0}:T})},[t,r,n]);let C=a?h:0,S=s?s.repeat(t.length):t,b=S,I=e?_m.grey(e):void 0;if(n&&r){I=e.length>0?_m.inverse(e[0])+_m.grey(e.slice(1)):_m.inverse(" "),b=S.length>0?"":_m.inverse(" ");let T=0;for(let N of S)T>=p-C&&T<=p?b+=_m.inverse(N):b+=N,T++;S.length>0&&p===S.length&&(b+=_m.inverse(" "))}return v2e.useInput((T,N)=>{if(N.upArrow||N.downArrow||N.ctrl&&T==="c"||N.tab||N.shift&&N.tab)return;if(N.return){f&&f(t);return}let U=p,W=t,ee=0;N.leftArrow?n&&U--:N.rightArrow?n&&U++:N.backspace||N.delete?p>0&&(W=t.slice(0,p-1)+t.slice(p,t.length),U--):(W=t.slice(0,p)+T+t.slice(p,t.length),U+=T.length,T.length>1&&(ee=T.length)),p<0&&(U=0),p>t.length&&(U=t.length),E({cursorOffset:U,cursorWidth:ee}),W!==t&&c(W)},{isActive:r}),S2e.createElement(v2e.Text,null,e?S.length>0?b:I:b)};ID.default=D2e;ID.UncontrolledTextInput=({initialValue:t="",...e})=>{let[r,s]=MW.useState(t);return S2e.createElement(D2e,Object.assign({},e,{value:r,onChange:s}))}});var k2e={};Vt(k2e,{Pad:()=>UW});var b2e,x2e,UW,_W=Ze(()=>{b2e=ut(Wc()),x2e=ut(hn()),UW=({length:t,active:e})=>{if(t===0)return null;let r=t>1?` ${"-".repeat(t-1)}`:" ";return x2e.default.createElement(b2e.Text,{dimColor:!e},r)}});var Q2e={};Vt(Q2e,{ItemOptions:()=>dgt});var wD,tg,dgt,R2e=Ze(()=>{wD=ut(Wc()),tg=ut(hn());YF();qF();_W();dgt=function({active:t,skewer:e,options:r,value:s,onChange:a,sizes:n=[]}){let c=r.filter(({label:p})=>!!p).map(({value:p})=>p),f=r.findIndex(p=>p.value===s&&p.label!="");return ED(s,c,{active:t,minus:"left",plus:"right",set:a}),tg.default.createElement(tg.default.Fragment,null,r.map(({label:p},h)=>{let E=h===f,C=n[h]-1||0,S=p.replace(/[\u001b\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]/g,""),b=Math.max(0,C-S.length-2);return p?tg.default.createElement(wD.Box,{key:p,width:C,marginLeft:1},tg.default.createElement(wD.Text,{wrap:"truncate"},tg.default.createElement(xW,{active:E})," ",p),e?tg.default.createElement(UW,{active:t,length:b}):null):tg.default.createElement(wD.Box,{key:`spacer-${h}`,width:C,marginLeft:1})}))}});var V2e=_((VZt,Y2e)=>{var ZW;Y2e.exports=()=>(typeof ZW>"u"&&(ZW=Ie("zlib").brotliDecompressSync(Buffer.from("W4midoC5qbXRudsGgPTx9WbM6x6QwRgOjLr/GOIPlSLC3nJB5jZ9BXGdN9O3ILjKOQ1VVTOTyhiagEtbABF0bvv+pwVzOEIoEiqpkHNjocGMCve9WzcMZ8HTjWoZHXZgeqrltMRK9CV0qqKBVSbFngqcVz1hqG33qAlDRWBKCZ3h0834GWPct19RBMPlufdGrzzRWx/82JdE0srV0tbGKoGA8P2lqz2e/9H7IGN3krKPubn4n7REcgyzbNu+FbxskhKddObaesTHADpuvV5AUCaF6TGDWYjeJw4X8RCfFja1N/q8JkQ5tLDsXqlWCNfrC2HLTilFcH79mvoY9VJiBbKs4wr0ATtvLze3BdrLpvbP52V0hcV1VwiGIUXX60spKzAkcgFNwNfkOT/9aX19G+VYKxbXisXzbCmdLTdA2DgNU9Jhs1n+7/MiHdIqIVVry5wGW/JINhs2RffMr/36y+x/fr7e3M/ah3vcZreIhGHLnGhIT4RiN7wQNyxGmIxKtZi2KhG1Bk1LnZVdLj+tQUnQx3Js1fd8LApAIWJu/Us61lYmDowvlj798qfV1682Q43MXoj4EjMbIufC3pAJjZggPVTdvQZcxcB2czSECfgBtlQt+28q4qsLfKcypvZD5Tg6DqBV4BhcLWwecH6t+XW8js2E9QjW+nACmkFuoFv8YE9IrvBEiffHg4OgiOObzW6zbYMpQXoj1UE+8eX7U3w/nY5rwu14ZZXArv6mL92zgwXHF4iuzZr2+mrc9k4OMWkBA94A+1FDrT8edv8PtpUd+fhedTUUAuxGQYl8k+VJNVEmWEYJ0vjxja3jYQ9S2a4d33wGHBTqgVR0M1w+5G6YuPslotopxgsH9j9TGgRhGJS6ad2O753ADBIyI/ClH2r0+XF3t26SdrOfTxrNIAw4goxj/OfiRlCSOLu4JSmhcJLKQK6RHwwCD1zAWlhsPh8+TNFa+5zdbHIBDsyFiPSHtu6FiKi2PSI8Yun64+G3AbYen2RNIrrZfqTKwtuTv8Yc/pjv5+cCSFc+E0Aft5KWUO4if2o3ghzKioKBh3pVrSwuxfb9BUDsV4QkOnU2ZC9kDmlnzp3//72vWtWZopw6plmajDrLIKUOIc97zfHPOftu8b8fTHzg0wJAykWlZdGRtFwh3XPOfR8/QQWAshukXVWSXO7KYdQhhNm0e9yDWc9GkkZdf1+m+d/23MyqQoHoZoNsSgLV+hL1bfNpvrHbKYCUsc+4/nY3frF5vPecvNF57816qswqjKoyCyFUViGEKpDxWVXABGGYWQCoAprdA3b3+wOypReU+TOUeROUfcY3QXaE2GxFiGT3N916YySN1Yzft76xbjV/Ny72xtjl389uNvtZL2Y3y+VfLWexHP+/vd83OxGNtBM0waPE/Krad7P6v+4mJ8VCgr8n1e74yMkoU7c/ocfBvTY/2xnBjHEd8DGUeSkqabU+5qr5tuT9/9/aPggRmILAFUKZomyujP//e7NeOj8DaGYGQmRmbPq+c95e0+oq+f8OP3iCQwx3733ufVKVpNFo2jmykAg2gKiq2zEww/d149uZmjnFt7Z238ogoMCSQLJEAs0Sjphx5yEG8hjbUAdVv/f39t6eJR1SFBqjTj2FRKL0De+So0oqZBWTAuMoFAiNAyHRFBKJtBTGoijkd9/5b4z/Vq2cTXWAe1TKIxFGkJ0ehu9XJ7Go197s9VZFSJBohRUs01lJgEpgBp6Kfjuu/ZvAzWrYRXYbKHfeLniMQAwNBRI0aCmlRYuIJQSpvAzP3P7/HRP1OfCP+29LTZE1VARUcOUsVzkbCA6USsvGLd9Yf/5/zvgOSdQ5Ucf3dndmNKGpFA2IdtRgLWApLUVjypSzf1OAmwJNm6EVLySCLCcQNWK3Wc/L7ua8LSyESJhCwgSGMIXwp7CYQogQCVNYCLEwsMVCXnJb075/8O+ck/rz32CDCSaYYAIFCgQWRhgFwgjcgbA7UKAHCtrQQfHooIPxx6yL+r0VWFgYGAgEGgKBQEMgMFV/+v7QO/f/z/d3nQOj57/FFhVLVJShDBURFWGoCENFHkREhPciIvKgokST2xXhY/MHbN7ftEdtQmlPvMGDlZrPxH5+I5SSZNsNvZtfS5dSKpTzZ+AxohQLEjyY1IACQbT63srvSZKZyezdDY+bb0fXQr924niJ4AkFiiaIVShUEJEIVqjcefRl25UVyj8JmQP+qJEP463HHAsnjju36FSBHyNpUz86tx2vAqs5lac648W57aA6kBD51jdq/c/l+V0rl6Wj89jxKvCW1WJbh+jQXyI8ctfeP9vSr3JbxdpL6HurTFpD7a83oCr6o1NuhV9m59vE4bYY7XjlkKCWh+fOLqerAJ4c4xx2XNSAJu8rxx+4WE/ZNJVvBI3BiyYmo0MwCF9sg/gTFskGn7BPRGN4S4ObhuqXtABhbih1qfUpSYWqxGF9G837mhThCI11v+Rzmux1tinrUo3T68CbvW2LjN9PWO5if84akiIdCE8MuPULSRtyNxSyhLI4h/sknFWSUoUsDJ+Sfl6lPkydEV1tif9Bx9hYWy7sX0C0kv/Lb2K3cJitYd4FwtqnNLa5J/kxBhIvcZGozxo0LyggMuT5T9uf4XS+F/53ZP7HwHj4m10bQXqQJGCJ3k+cdH35UrrPrGcoProqlxNZZ/au9fBSNeRRbP38XyQmsZ6cw7t6clQwcpy+6BCDL8eLFEisZ5V8kRgrNA21wSJxeyK+TlgsXkMR1QeLJGaOqsr4rBvNTqm0Oz9qGqlXmOciKf59lt78jYrr3+eo7N+YeXsTdSXKu5DQ15stmh8rsnp9pDWIpGdqrHp4ljHw7JuOFsrO4aDAl6eb8vmBNf5dZJsUH10nPhG8b43EQjG3aysGmf6E9s67HSMjz1HHCNObYETsQ6VMDBrZhYCNqC3uYFhibj/CfCNw0RwdP0XPeYc8kjAEkc12MXApbYZWOl/dOcTk1Bhyc7gAVWtM08axNfhDKwW5QYYgwN6RKkOU2q2cjUDa3V+dWIukEOKY7zuuwEy+cDLnAZkTQ1vcXf0C6OpWz//QDEFkKi+MIlkbs9X91akkAxpD1GLDMHglFIwYFLVnh+6Mva8bsUTDPb7U9nUrs5tS5VdpvVYnkeQbP3UlO+nNcvsc9Ujq/4cnW3/20cRRXp3YbchjmoE5ZCbwir4YY5+thy4unCmq0a9toPBX6pAA3pVDbw4KJXsfV4WUIab3k/q9Dr0CeiQs+xNDn5f/da99B9khal+EJ0nILtJzPIGeBZZ9Gt/HwaA/wtOPEKg/0p3EI9+3O9z3Uv66CkWLkeHw+iUhpuzS6lJNRetIE4902GVxyTZehRAEg0oQwW51WTXR3yqFJLSju9arD8Z+ydtNNW9UthW1ryb9lsTJgHy1yblz7Fsorp+TQt2eVYdr2JZs18g8d1c9lHkzY0I/bdsOGcYYv53XhAA0hPud9SLTAPVIC6EJacKF3oe8Z7RpJWb0Psr3Ub7P8p1ldb9Hpklyz7TpLiKNUu9S6tKkIWZHMJumqzDt0tq7Pg2DNcR+0+AyUvTrPWlOwHGk8P8PJ007F0jxk0njxXprclja9+WrChcrvVUsl3X8qtnXDk3Tuwb/HhcdYYsRTYTf1SAPk6IOCXcqWv/QYuRsBHo3yvlJVe+uetxhUp+PuMtsWXcl1ISslDEE3nmvjeY/wIUNFiPTQUY7bVF32T1FZl0yKq66jbhSeyrPux0QfkbQRxk6o/dXcn14ilBXnxssukdrm4wJ7z1RDV9kYQUyJxpd7VdlOMGYR5UnM5VlVIJw5fW0W5DOPn7TOZzNQuVpy7Xj046+PMyRcmqIn7AbC+kRM8Pod//5JmtV7ZATEzLaRjipLDaJHBP45IoEYNmPCKoqOIVFM74Ve3YOs+bz1cjiKSN7UskqrnzZjPdbqpFAzdBv6XAC4aUhr+QGAQ8hTSwq0kmQSGWitqInNV4uEUKpDhq4kLeNUh4QTvMQy3IaYV4z2uKdhAyK7tBOzSp+oyBft9vyMfFpitb8zGjfNhuXpkR7mklTZ7Zen6YfCfy6PtCl+r3KBPbS1XhaEZ2U+a6R5oWUOm3vIE9XdohPM7KQIgVcbKbihh/ZdVH2ezXajfxJbirPTXoXaxzF6NK3T4qNasqFXZybse1XYr0UiSD1O5sCP/lfKkwbBrohuVjsfzvUKGq8hHmgMHQre9/7JZJ/SHvVoLl7C+4OcqefMH5hAAez2be7SpEOD8syGC7t4MkPLlNeeqIj86F65G7tr/1s8DmTb26Ry7eWk2YpamTNhKKR/lPjELDHV/LfPWsKsh1gfyy09qYTnHjggWEjf9ZWc5jxhDBw6lAcTQZco5EwPyJThoOqAZsF2Z/IJ764MZ9Rhocy/mt420gUBoflsohpSyfwRCt9ySZGfYtrwys8D5rWuVFCtIqUHyGUjHaFCHCzE1aMm3swW0LYPpDy0/90nnlVWywoZabC7twQhx2N3LzLrhy0I7M8zME6mbSGXnGR/ySZiVXCRdNVl1pwXcgcgdQnydTOyvgHv2xPiKkIOqR9P85GeVEtBkvEtJ//5649cQKpc2/kXcjzUX2vgmvhtDqW+VIQFMPwGFsOJCi/SmxF/LYyFkFG0r46r4BcTmajjiloZ2KN14o3v9RJNQqLa65u9uEBrQweo5lKwa94OYGA0xhV4Dq0UwUrUkRvMjt6pJAf3l4w9JcbjfydB9LL/qNTZ+zm7t3m8nOySrLaBBTid+uuDI78kaDPn9NdSlBqXaC8nVPmaaXZiuHoEhu6j2xIfy4aqEl2lX74Nfbunx763qSCC6l7YDG4szYPUwpBjCgcCtOplGdo2HC0EuKR2dyX0EeDAE20IJVmejc5PPZtQhuT/gh0+Yr85ESUOI4IL8s9Rg6dxmpJKIerKUGvBtXtTEF01+KN1MoCY9thezIMVW65Ax2swAmdsdiJqKkXebVJac+qIqoiiQ8Q1UMumrx9KAq7ds8cIBh6hYvHzwJpHHqZFaxzI4n3uxCmWXQo2k9JY3H++crTnwFitwZQx2UgPFmQ4lQGR9eHkz16UbfpY9P8omPWZOW7H+eL4mjKVIDMv4LERqVAeci6h4rWVFrRuTGTaprBx7ugj5/XAw+G9d2po6zykBR41Cy4ToeDOP31Yta6czdSUZ8oyhAjtrOuC/o4HMZL6xlK0AhFjsJGeSmuw2tFDgnbcoYx+GjBaCFrdMeu8dKAIdrA8gzpOJhDo/W9ibG993CjlTIndqfZpiqZUJRprmjE9qcN12HJtrpmCoassCuS96IiGYgeyO/zZK4t9ziaZDuYl5cRd6bqh3SH16M+x4j57BesaGtx+HQW+halN6I0w+GgiPhMz/NLmMzBlyTvJ/OLHK+NHg6pK7/ZdDHjzI2TunkC5NHqR0sAwy9jspBmz2XeGybn60hBRIjOTjXLdUR0ZnROJuWmXWInV5YcolTvlUIYSO4ASGQ1zB6+MtdagiXRQRcRJI0VMGoupqhU79TzpBaqXL5hViy/2CyeoQwp6CDLYJ8KQzCp9eRkGaPOwGyJhsZ3qTnzojMzzKkse2s+kdXBhHYHyycbQ7EwdLaQFGm89xq/n4hbSMIG+1Jd9i4Xjfq+ZB8fonl2gil483+zvg10xqQbzSV5lmjq2OIjK8X+LTqcWnrE3cXeZhfdO9GRrCFPmCmmZCJLXfHyYxrHAbLi4m4bIX3FWpQ2o2gCbunfboAy1BCVM0dzzfkOluMKdcbZ/AIbKgkuWCM2SdnlbJUaGEmBo3xjQ3dUqrki/rUTJnxPXBaGLHd5jzOzZKGqi85aZPJuxvFK7s8p9Uqkvx2JyMnlyF0CpC+EhHoMjMp0E6K00mYxgka+80JhWUvLkELMx7usLjUR06x/v5Cqr+UIJBcII1aXRekRootZ6gMkDV6TQZb7mFeYQVVGh1ybq3UEDePUPk9cYZVnGLq9AiBprS4cQGtwuLXrmTklTyeH/48LO3X5mcdelswDi5YZenIu4x2YovfpopTqd7AEwpAQD4FqWqYm1m2BNZq4syMtQJHKvLcjXYpkDJy8F5bmvTcK1Mm1XNRej5gs6qy7UDIhdbbMQ22mIlmydm1qNtwL78S39ctksJXPdRNmg6iwCQ47g7EpUQqeqs6rNxzd9DnafcZia7duQpcfcRSG9htfrgy8x0kOjYE1KpbbmTREkoYzGI5ocuFH2p9kc8OO5tFba9ok74JGf8C5LpLrI1ksGXUprti6ZPDQH8J3lnBeffKLJrwWn4/mx+eqxA+ddHfT+MxEOaCPcPmFnfF0bUKhpCtvBUrXh4r7yXxk/LoG9BwsE9myF437xRjSWxeZYSKrvXA6ZU4lhmUCuLdwDyc55ml4UYZrgx9HU2UdzHPbrbYuBi7YQtfyy8oWhVt7PzUUUihUUzL5i514HUI83eONVg08SThqg/aIRe0NRif1KWFTSuSHs9ggTcfMO9CGABXgkt7rGpyS30Zctq14M3fPSBKxXAfcYnLfAnCiLVDkVFOXK0AUHE+j/bkdDmB1y5WSL6tr1Uir0TQIP9JYNVa9khU0YRFlId5rsAwqtt1fuKYkVt1VlNCkfsTgAbtg8QUHd/IWJ3zeg3yHudvdsTt3M9m+YyS99lGVrETFK5ZwoG1bIaahawsO7XtnCZIzs9Mz6l/eFAqLKwsrR832MNW1E9DeFK0uJr7/PI1xjCoqUOHIbd8sw/R+az1bqJYpdDIxSKzVokdQl7jrXmzefdUa9q55bm02Q+JeqNtiwZdmqRc/ErBcbUxBLJpRC4XUMr2xxpYhkJA+dXUX2Ai9HLSk3S0eu0Tdhjk9SPHd7w/3odCyt5Vn+Zd+wE0h49IeD4zopjuu7aKmqCpNW9BMFDOp1Q+jWzi5lIKdeKQoDrIJskcGe6CZ7G2Vznc7pOO3nzq2TJNCdfZrRK+AgIfpxYLytg19tt0+hj6ehvGZp3f4JX/BkVaL9SpxH9EGbbFAo5PzHkYj8hPb7wN2qtNR+51+CnLmVQcscdnhWNw3+VfGuR+evyfNhs1vDEcyg/N7qc4AMQNuU55J1gDtB1hiapaujhJj1rlG1syxSaINL0nYHaNg2SAYyTx+Hy23MIlcCsOQgFapPFKHN8xKAsOvZgWanXd0Xo4ytwy1gpcGJWbRSwT448Xpgeoss/a73R+XsIK9TGvvbzuu6Lleo11jLKcpGeGfh2KEYVifq3ByvFxXEt+a4V+f/rHe10R9twCWqYOmv0pxKJIyvKAeRgXIHvl6sejdBo9fzrWfDBPotNa12wXN3FEyoIUy4Ac2hETxo14uzwafFMBpTaBWjz4sPhaWhaNKca2Yk0xke+IiQfqLhXDWZekA5v8KxBSwwx8vAZVxxR6sLWOLm+rdKiKGcBN9D1faso7GNFtMUPDpe90k0quRmhVYd4rqOwwYFzDhw+FES06hBTbyVWlASEqiVelkMhdcMfRL0hBzsQglQp2RiW0nX+/umAG4WzzLOq+pjjOTOarFrPzYH3gvng+/rHXH7kuJpPnPBfNb/+NP9mbEDn3y5AHz2PtUoXoZNmw6fP9ckFvpr2C420/0pd3X5Q47rFjb++kOr//xOVfB6sj1vcldYKL2xsJA+btxJuWjuh037ePLdwyT2fp39oxhXw6znyN7fGZinrtDyJzDDg/RwQrs7GGb3X4sv3CVwBX+4l6qEg1jxjg9MmKWDx0qM5oPGiN3pqW5axlDBuMgw0GDe3T+IqnrF/qqwHCx0pwqbE5Jy76tw1HGqPOFtrr2RCrh9/laY9p7C2TqdoJXxQKrHprbDiNAJJ/L9aqJroFi1LxI8Iq/Tjv7CqRaOxDmXSqCz8nBKopiqix3z78f9Os4/cJTYd/8Mktl+gW66Mwl1SZVWA/9JaPvhw0gLeL0ytoUbj3RJDoEaFc6RPeSFDV5NFGYtzZqG8k342FdriGCCrOi8jiq7GgKiS/z5SElq0CzDc2LvxjlKglO4DBAWlHvigvf8DTpOWOFdV3vtawrjpVX66ce6pskurWm9RHz7vOiiT2v+BZG9eqBxcY5eBNq5Qpz8XStW+t3Vqs3227x6scrkneuXlvbLP/WUwzsgk2Sc/rU9kT5LXLE9S8JWylnNOdDAGnS1EgxDiXkfSyhrmYI5qc7RmsII+Y6VJkPR1J70gu6/euUZi6QnzAsUGTnLzNxJi6RjKf6+06qydLOa2ZZS3cgmX+0WFlH6i0erGotc7k8wW512YJPkJjx73u4dzzVCE1KKZh8J9eTkwFqS0rRIicFLkn0/Ce4tzLmEm7leeLfzD5LvTCzPeBSjvHBRQbjCpLL46k17n0TU9Ogxb8bTInZLH+zrsyfe6S1b4ToQ6gYbPTQ28S+XfKzAc2QSFK0aQpEqs1o3enql6FRHf6lG0QolsZcCJ0DL91es9I3cnKhVfHYpeU2Fp2x2oCuIC0qAOZn1gNe+DRL21lFlr2zAsDfEsByI99ev+sXPS0gbHPXZ5CNBqDfwAHYcI5Eh6KDjjfskuB2LzrHOMY6lsdLAuCnRrp5AaiQqzw3YPKfrfXa7Dzq+vNmWs1LeCfP1RevZKoViuxJKVJfffJYqNHW9ymbH7CZGyHzQHVDUHDcnAp9fRVMTn1BGCyneUOrSctqUTtXgCmtJnP0H9QlCt2nr2pQwH3kVLaFE1v9sRMZ5iMng1WsN9DSv2RH2XP2fvXiui47SfXrACyFV4CkVhgP2ZWxG7F6Q1NU1nHtQrXwTs4X7PCR8cmrNGcWTTT2K6SnkBdMzmtuxBF4pCKUlgNc9LQFzAqjSF871TC0ISipTZbrh7Fvf44FetdluG/NdOzE4Yq7FG0aS3Exkmb8KgqOY64Lx4AYKr4Bgjm7Do+/3XDfNrFqZpqO2vBmz2pcpOl200QSFb3X7buYCgqsyoa7EBqpttwRreumS77tbD8G7Idy3T2MfIaHm0a8xbQoIta3diRoLh8H4K4U4ggnU9m3fQmZwxJud+OUi3BSepyxOnM5y7lcfyYfzV35vj6yjcsSZ+7CzZ/NbnodikxqgCy0eP8MAH3lXw3P+eaCrKhAahYC1HM+Y58jOsT0T9n51HlzowtOYv87Ijz9Vf7+eFh9VO3nS5v5u677jKlh5Px4KlxRnhv1Ta7toSZoAuXMeygioqOHd7ePLNWSWCHS33VjyCRYEn3cFuL7zQRnAnFjboqTBcqmfcVlR2awUMtlTAoY6UOV7jNjrxMjTsbgn5dsYBmRdzjLv/etvkqc/M5lYMYy9OGkvDfVHXvktl75+h/zR5bINVmRYdsnLg4apme94E3fps5N/7JzYLV6D9io56UGlU4JNplLbeWXZsHN9DnZRqrPApFsdkjY7/SqC6sn3HBkcFWYX3qIVaNOc9UKMnDOhv+ofRDOjlXqmw0eAbZZXX4A0pz1WfY/IfDgB2nLFoejRXtibFN/bBP2bAqT7QgxkdpQl9SNQc4STO6eBN4ZbjgOefHGVJsE5kKmsVQodfC8j+evlVy7gZzDiyyndeU04u+xMFz5AjXvR2IZncN2lO9iSlad/ynDJNlOtUBIG2JnPwNAp36OyTZGlLuTMQvJaT0e2PW5o45k7Q0qAarCXW43CinTmWkPFJsnRlhnStLQMmxWRnVZONYv+4lTkHhIloMBHq/35nDwsnf5dhXtvf9EQvP4Zh9tLseVvM/HN/gS/V2ImozmlYLI9PqrrqO9PqFu0tTq2zj3YWTJtwG1jWxF53jJY7ljwBsIhSxnK/CEiqbqaYemAncpnQNBY18itFH/8P0L2uR8GkFb1xsnovmlDkbhXEAWAxrnuqceKw/w8Y8KiWDqtix5ruxE6KgLWvj9+xO4qwES+fUJ7kt+ymIDmMpRoj2Z0o7zfGEyBtcFPP1zO1v30rplnVH1Lti+iAQ/ajEXAf0vPayD0+0pFIAXKOa0DHQfnM0N4jP4IHaTR2IbQeKP+FL87NtR5IXukhUbyKM0gdUYE3j6TmxQ4DuqUTuknxoK1mke7n4GNtTaFmDK7ArnLrIgdHZJTcB3YzVabaYESS/Hhpf/J1v1Jf9QEWWOWrjHA6qj3vpPVtOh/Nbn2cy0ybPDWWyja6X7+X+c5o0s60s6WNySQQ/XE86WpM4rDfKlIti5lMciyOUBi59gUYh2REeY/HvJzLVCFZbC1zUHnq9sq+XT+C9d/d3c3KuF8+M5W62CUnJjo4PDCgiuteNsX1bV58Y7zaR43DTzh52tsMA5hPmsy7d7LErHyaitIxeIJZp8ZTmCta0ab8jFSR5kKS3p2HGFNFtSY7cfijgSnEh6jIzT25vtHTRvGsZh6jQqbMybFte4tKxNVPxyqm2xqKf3ZXhZqq+/57TV5zEZ/mJzlFry8ZfIl7p9/yw9bZd0v6wqDd/3gOK0FQjGh0wc89Lel9+j2VyjLBmhKU/OGEnM51BmTtbgJ11Ok9mGcB1lwpaNUz0vuZAF01Msj77VrZfCelr6iofu8KYVUMvoFX7u+WwgPCNVId1pWCxFP85DQlu9ba6+2rOZwTF9ePlb44i7UzPkvswz7Wz8J0UjnE7Vne+HqOO/6KXVlUOSyZjbw74fYKWhe5WbpkPmEbI4sj6PRPy8GrDzVdsSt5mMdaco9tfPsvWkmILxaxs2/E/IF+QaEXMPHql2kn7fPmjCcem8Xy3nlH2LldjfJtGzaNP3tjNyyImitx65I9XF+Yuv3WEVNb3CTSW0Z/8+Fsl6HDaVAyrLE9akbyKM/nHeiCBtnoMrhRm3xMM6IM07eXaI5qyqF5CSCd2A59f/ofqQ2rgLg6vgIDOXrr+swCN31zgT6+N2Xr6QpzmcnNdU/yxXm/hb33iEAffgKi36em3ZDey3dpdj2rfntvOOK/yCQcta2jv5ZQ3fpDUN85psms7LkuX1yTXdXqQpGG23YfE8F99n3YSmcrToeow6Pjz0tX6q65LuBPCMGlFMzmcoRtUGFg0MBkfFdT3GrxW8YkKmy1flTvwjl6Yoqfk8Qm8pucMXfvyeTvIXqsdtdqeYSOLSHDl4uB12/snKLFsKKPse52Pa2IVd3tUN7974+wYj3p9FQNGk+ftIn6llqKpSBDvLovog9246mjm9T8A/1HFisOtxzuY5FU2/todlYrkPSnsE46ZFGTWeqR3uD0mG2ep5tl00k/fdM7y+qsWqUPBfDvcX8vBHpShySs/C3kjDi7l1Elm0oDsC4yHy7xrhB8WE6SsWi+cJaQVELGe+gdcVrsg3+qBeoX5wxSae7xVe7C5wgloFjyr6Nqtw9iYcPd7WDS7R2M7xS+heFXltZWtlyzQ3261AfPtbLD2CbmmN97ulu/LRcHalil4DiTgXQs4gwF4ZwBu5oQEbEUEZS3XX8sbw+TVj2QZPGcBJro7D4UbeiFAePUX5rOY0DrHbZiKWwfI08pVn25NaBSZec+yzPhlGvPvY6BdGYZQ6RWTpKKYsqhExMTWMk9GZ5CQdHYlCoESZreSy2dxGybiWtUbriPfTqKY5LAGvJNtpsBd5KaEYAswqw6Bw+b+9R0nKzTpK5RSSiF2HrWhGh48zOJMra7A2JB9AmUstSLR0aFjXuOmHH4AKCS/y4rMBIvNgSMIz9MVLv5zo9zczPtXAthUjj81AKlPR+/ZtpvNk2akTJBy0d+bKxl6CgDyqzdEVwKAuL8MKF3YMVoo5Vojt+nWANF0StuyTfEkJApTF1EMbvIFPtsB5sSLbRsTlE+CZgGFS0Vq/jzetY52QFcRH3m248QsJ9UKrXgVxj4W+XfR5EOJLfGyALnzqxDq4cqmKYOJL+XgRI+VR3067KBosWWpI4ri7nfeDgY0V+OjY62/kcRMhC49tfr1Z1JpWRI0DcYs6otNbJ8e4M4Kmz1PUXMYMGXl5lNcbE2gkFBTn+1PGExvlEq04LolfFU7KeKOonFk8Ua5nI3QuQmcltJnp0vep7iH7THT6aCRRRh3F9AS1zsd5J52xgj1qZGUKGR6kYYJPclN3cSh3/5VvrTVMoiClEZnSq5OIY3uCW+fjvZPOWOkRVbI1jVxC+TmRnNuH3+99nV/nPjR3ADnyAdsL44Xp2MnF7h7dHPKIOxe2ZqGB/eXTztzqMh+otb5YWYFALJYD8UfBTm8bDFoTTY7faXgDOiEMZZm99E+bYWU5C1CNVcR+3u8KpMVNQYAKCZvOA7DUYf/6S5H6QUTgBZjsBSzxerPcsmQRq9ZZHP4agDcPIKw7xGuf/pimZwn4QY8gReH460S6QFGF7c18SUJ/CoTOT+j8hLikblIPj4hlwFkjU8jMcvzmylUEIpYBFyvWyUx1TPNM8szxzPKYhmV74c5iRyBZIxFlrTfAemgWD0CWwBDfswk/fmiWz/s8Pdu5+3QxTtu+SHmQZOxMU3fJAZ/jY2OChaaxeGQtliwN0CEQ+L3bOzfqLw9On/d4UURubiwN3yOyDjl3FsX220mLI5IZUoZEuikBD0XJGf58ZUH9Zrr/wXMdXL3ywpBbGUYpj6aCbC8EW7hRUOstkyAdRldjGlkgz4InNomMXg/APyUA76wA5uPIxneBrwyANBsASx20ZoZ/g43RItdvK2TTkdFT4gx0G8UNcYhUJsWYeZjDPBSMwRLJHDKHeAxPVfRxXML910Ry8hYpsxhHHNS/gRIQ6scPFU8uPLD3/zLYYvIp2Ar/N28XhnDl474MhxzWWiSus4d4S7P48x9wP7gG5sAXrBPZKNjqKbqfd6/biZrdJUz+Dp3lwtx4Mw+FwINQrlYvWoLHnthpL5cuEh/MMSI7lu8Qol+inDuQ3WWIMca9tqByE9Ea240OtuvQEOh3zx0Z/9ipQXSMm1F3p+vgjTCtPdrd/lxGyYceEMOOxN02RSXebl/VQMTIpUmizNdbcTx8GSaEVeiOZKcCf9H6zC80YffSpZ0XX+KlY1wjkP262dv7a/k0t0I7Wy+F3AFkOBTop4gUZ8/xjtrXkUM0V87gKxvsuCfJmNWHhPxEusjWdjKCLZrbNOKy9ba6p/46Y83GUd20H8mdFZv40P9v+P+s5hT2VZ/bm3Aetz9ohP/cxWNicnfGJoq7Fp4rAPzlaUVMeHviT+aLXwqtmopmg+yZSzxIbCFbVC7fFbtiF1xZ17RpVa1RYTNHGYc3k5QX9D+yeFAzNpLqpjCXZCxu1l4kCVQhoQ0YsDOCecsmbD1ILlxhhA2vXC+MUjkY0NfV+WlUscgIRLCmhs6TrUtmfo39IfK6aBBRC4ByTSCrGjr27pvcA4qntZGUBPAZ0i99bW9NyRItBkzKRjDKBZ/5Rquu/7Y+q2DB+qabyMk0Y6OTbtZ/c2EuNGhnNdTGB9bjgdaIuqGr6+vFON1kElM+qVX9vXra59J8oE/7gY3ymDdVDzQBsqILpuxpi9ugVRJumqM8LdLPjIqUilMMxZd2g9GVWLP9IIMrC+vh/BTKMD3ibCOqilTs5ViIfsOb1tdcXhs6fTLV57plIMtga2w6O2BxxZlZxxPn2odrdN5+iAg9V0I/PULPi9D5CeWNgfWt2WBEMtObrrqBMagLgT75w5nLEpFC6sbLlqNs0VAYMeulNZhZUooiUjeMJhd6oJfGcOaySaigutG1z1m22GiMr/WBQS3FJ3SoM2E7V9OVWTfwJrBAwLXY4Fuf9qCfCoCfbNAaZ0/LBrFROcSxQCKS0shcmDnbW52MfXvBSIq5p8xRueqwSr2dtkverYQHJlHTSVMwVvnqpvjLSdx3xS6wGB9E3T8N0YeJ9WdeGYowEre4t05bPGz/lGgwhFN7gXeuN17sob/oDTL6a8Xz2EISK0S2pRIsKFFLaNDMAiuAQFmF5Rwxe1m5qZer6KX43AmdkdD5CdVnw+jl1wOrjA2dz2baWI6yyqrPuFl/LK1TPwQAvCKozymiQJLMOpLnMJ41PXM8WY9k+ZS+hsle4snCeuMH9SVaNkigElyxZEsvdzDMBCGAee7xr1ZW8QMRpwz5aLA8PTuK85fioMGwTrJEi26Ofy3mmj5EA3emYnrO5ecFLZa8uBgYfjKpjFS5fDuAu03jBqVt7triGxX4hNpaX5pr2w4FDbU4txXtjUt418CeRCQbp8cDid15Ci0OOQXEXACPyHJoJGPZrq9YrWc/Lk3lp7nX+dB3G0Cpdj9UmLfrrmxJn9KNjPNsWj9XTz0ufPkc1wuR2ohLyCSeyGlwVgyATjZwREM8CKgAwJQFglmWOqVvIAk6+WnpP3EGp89VVlGCmZxqiZEa6AgUU54dyoAYAKMFCQUfaZYoYAI9q/rZogQW5AS0s0bzxcKS7UtHTmRj3e85cken/pKS3GiC1/txmwRvlzxM628g554XsO1lkT+/2pZqv82e/kDJPRdtyoBaA0MxX7a1dVV+KKXcIT6jm74E3V5a9iAp9/C6tyil9XGJBXJr9tZH4QJNFVb3wEPu6uvK2rcvzfHAkByPhzxIIU4HGfoBsfYWakqohd3fesP6BUvjUC++147k/PLW6iLT26pp6ysre4kxN2O2ohG583jRx7U9r8xbQTN/iwtIkd0YHh2EtzZfr8hiLx5+eVP28fP0DO1TW4SYfeDlPtTWPPbhdeQ/K1a5CjPp1UvpJe627A3i8oS+/D3DyqaXhvTIyKOyAoAfFKEGbRh6/Pc3x9QZWXjvevzmLI9k+COxdUYbXut++G1jUWJH+WEXsGFItmyYarFv63Be08UwFb4lZTyfC5g4A8kO6uCoj0WFA8YxB5fiYt/W4XyGDsr+VB3H0nYFufHmvyeS4VmQ7FsfzhdGd6KO4bSPh0u9efJPCehvyT+320+n7O73qEC9ZUaiCneeIzD92jdxASlY/IOaJ9FWWvTVgj+ROrT9M0fEuPB7JvebVhUcUyms39Zji7YGz9WTP1boMJlscfg9TQbk+cSD+TL9vMDw7PoKQEZLmRWkPUy3a7S2zIoyazySthlRu8y96a8Kx7LnKrK2lPpcTRWRy8RQW60W19Y+6dDZELDdVxKwW4EuWtDPMkfPl+iZuOuwe4v7WpKDlqtw8IETlgegtqzIrBNQOUCM5RJvppGShlQJCJJhKfWSVRL0+SPBWJI3oiIQvHiHR4/48MG/n96vvN7jowXKKwHoi4fPYHbRQByDWZQG+ieaoDloM0De9K8kRm9v19C9LpZ6+om/bSjTkL5ef3FbHm61IYVedDPxKr39w2lvaZr7xrj3CdsCn4PwiBLmVyviwKB+sos+Z4pPgTl+loC36dmCKLvUjagHsWpQzxWBNQPZ43Cse0U3u1pLa0tndx5cV3hcsamYvM9OkZRi1m84tH4hlW1QZN0C99G1EpyuqpnUIpIuF0cBSun6G/ougsdk8ZankwdsqOBqEkFZ54Cpoy/1ECx9y07868uSlBeSp01LU3jr9lPs7qa4keeUzcHYcddeEeSZ+NcF+Npjo62f6CN4P5AAUPkM48HCJQjQqmN8TyO2lhxy6b5wHCghmaEtGXmmAavelyclvYKLicf9uPmWbfT9dp9ufM1ez6vcJkFDfyNG2hoe3iHpjc+eKOjbusgnlrTC6CMVUxxzcid4fhe9TVSDEUZKPDyXPDy4dRzZDfetitoJsChVrJRFS0HiyuLgZ7F5cvNMTsSnU1NYQGxyfDhey2n1usYlqx8PtBTozVtB0pcEg17SOlicbio09qf0aotp67MPTFwAakXrXvqsDGho1GlRxwlTrJqlV2lEWu+3VCo9mmZprYl1kJDDxBvDEx5Lqu+3xUwWH7x1HmQTrVaEEb3++FW9/EDmULB0cpoo6QtnUR2n0XimhM5E6PkRei6EHkeovuqW3heTWtw3BJD5kAzrqz9hWO8jlWMpT9qAECN8ynXP9CCmrAfxM2WCXG3NNP2BT0EFSDSdrPr6bPoykSS3eMkYQnil4s/6Y9HVI3vJGHFnbqCtlyUoHQwGG0JFmipFbx9PX7WkqOurF9DyAUnW7evpq5mYiq6qAeFkElX2/GI1I74frBNpWEOQ15Qc/xxuC/GzPCW/MsrLdzsle7nsQdop2Kej9oFvcQ90dl8e5Yu5+LduXm4ypbE3xQW6Ut+eHhjxXzXz1qc3pvM9+Z33SPHoK53fbogQ7lZ3T72Lp0017hLO2wLwmt0c9t8UjS/J5ITWIm2safAdWXFFAnFEOnQMmhl58ow5ZHR5JYknXhQZ2Y7gVjHhKYaJQI+63crs3IOmoe/vnqE7SB3t+md96kZo0xq/75OcAOn/QqKMnihkYfQkGnCZ7osIlFT+/cB3sjiwrCPPeGIrW2kqztgdPgaLNWTiBlF7//NyuKqP/EMYS98qZccMxq8/AR4caFXmuo+StUhwMVn3tbshAMQG+DK5zrN4iX2zdqgHYsINtdVphyhufuFCOdvZQGt5h394wnB9DgOyP3ziOXyeDbgKtCBkLlCP6MkCxnsmryVZUphIcNpiJA/Ag1iIuFiAe8/itWJN36R7iA8JuJUZDYYqPdOmRe8oPpJMpDb08smPYXcXrESHiAHsFGY9wnGm/Qzn1TencVfJ/JRnMX76Avc9gbc2RwEt9VubkBnX14slxFgHihHUJHSCHEKeOdRyBbUnqbKAdRP/9ZL9DallBwW/1w/Xr6/ALFIhL82MUUEWqHzaAlv5uiHOHDPlDVifSl18u5TrgAUEfKzsBcPZXhBY1gt6S3lBRuAtrzWvLwouWX3Wg0LJ/HHEWAUAvRIAZwi0lvD16ivwoM9OMrMgpFpfTV+f1UlaMrWTRD3B1IM6YiF49oTOTug5E3p+hM5CSPIwAn0eiCnr1Q46dT24jrQWAAU9INE6+L8pV3WC8moAdOqgI60FQEEPPobTehTPkp4pntU8a3iSHt2mC3WTg3pOZgWQZ2qSGrDpntDg30iuZnSKkSjHiT+bUvHjH/QltyCAPPOTJAEEj4RQle0sI4n6Ywo+0DxWQp/radp62KcGPA7D+uMk9CpPkRLBFn8ppVblx+lMxYxXUfdCVtuAfS0QMVDmg/UcR5jIAt2VAmBQDSDOMgHgFweANg6IbPbrczDDWK9GnxQA6BVX/NdnacRAlKsWc060+uYC+kUGKVqL+8iFbLmSn5KBor4TNr0iLZOjwdoZX0TLYPpJD/rSZR8KccLWn6ZtsEA33XALKqfPHgIL8Zh+TIVeuaCwqoJjlsgGXtMLCaQM6ptfaIBPocI54zIADHEjHLWSWBv8RH9FVneFjpXzQWDxju1uiTX4wkshSGLVcf8Vbu7P36yQ0WCb/Etb529S2+x/74d7Yvua6Po4do0zACf1rYkW8V1mZWnUaY/XxNqz7EYCWzbsaBlLOF5bo2f+QDmyalct7JLL3DbFbvFsfhLUu1DWxip1srPLOgHbTCznHtPA2Q7hflOKsXccu1Nj70k/WI338YCvZXOydY748UV43Ri7V0rMlcasJj31tsm0U5y0/iqSu088uhE2+wtmc5UbZEQPzrgPGV1bfp0Pidzhhaih+yZAvCbUFvEm8Rl9sCQeXdO2XExk+/gE5goeXuMiwRW/wQwNJX3U3LzD7lHQ/WCthUzxjmXB42a+WFovz9KJN69kkl7UO/C6T7uH1kbmm3FO+ciQeshGbONrz2RfzsY0V9uboeleWBgia1957b4ioay91v41s7kZi7fnAv6ZP8A95kzIPeQjY6fRqU0fML1rUd/gCb/onIuYoGbpltpchr5hF/XigoyxoQxhvE9KwCdenf0isNg0+aeQfIs0ArVH9JOjOmljEqTXhmWYc7dFjcCoxblNxuMX2PNtiQRTrLX2Rwf8mwlMw++Cm8DcQpqfgs8nWRTSqKUnfkfstfAm8u3nPEUDDb7fLStUNbV1fCmzyjuM1TORxaRwcD7v5rjwZLihgVJACg34oZPUsAw86zn7kBERVZVaA1T52J62tpM2Bp7UnaC7CGLqpdhhfTwOtJs/vPKPbZXUZNww2rf5s0Zhoi+4FZjHQcmd9NAi8PdWjFFnv/TE0bHnWLT4ltNcfOfgmUFlXhWjt6YYD+5W9HxgbrM5RqzfV9DQlrS1G5MbRq2qq3GLP8LQFCz+9acGoBiL/cLfkZlB89bAtaTXpi1ezhHDIY8+KR4Q5W2QbdtiigMR/gJc3f0/5Ul4PchPvYs8KLnhPMCllxQt6/TBtrxrYDpIdeM5s0xx4vgxPx+zqPTn0vN8mLEsVMZKKl8pYhVCVTl+xCF8GG+yEvPzYRqklCMkTJfZeb9ToSawP6q5cyE7nam7QOdQmhXmYsb1/NyRgwyzquZg20KpkdhhE5H9/ErK+rTV3myv4+MANoLhY+pH6fDL+12JkQ+f57Az/o9zl+r05FxrXw3PUdkGH/ntExI5XP5fPIeHRE7v7mZRPFhT29nNlmMjMqY/rtCuNLCbUvrLhM+n40zRP9kIU3jIwB/BOrrHpZ8GYh2x6kRAUIaJ/qm9IObzoyamVyaLGRkFQS1a8dUfS2LbdKXdKyF9yJpV7Z3YL/jPIBM0GM6KRsXKvOxhOJfrqqQIL+I/FtuYijzx9Z7II/pKq6dd/1oG9DmbI3vWbcWD1HB7qYY3J622X2zJ42CkMtuhKRIyHJAhxC6yi7D7TKWCieY+7KE0A+dDEBailaFRKoh6oYmmnosoAN0KDMTNEpxpQRxgcm/ZCsE7RURxXLNX8Q0r1secZltVNYQmIkRvuy/HC+2xmE2uRiUltOFu2daNJfAXxHLHZWZJFuVV2WGZbq+0f1+U7Uq7LV0I4AM3JFfI2Qh7au06BQBxsBfD57pDEJ6PWYki0Hkb1Wor/gxPJuJlj46mpQekCJlaWWdf4wdblrHBpCqVLh6nTsUxKhIfJldrn/ofOaZ0BCMVE3LELEteyzNGxwJfebzPsI6/CK8/d4EyfJ9PzGYAOOU4sMF6QbN2PpRhES9zYlT6Eos/12x7dbYQvc/VZwyRMbCIaWXPNLb4C9H8Qo5Oqu5xAG846nzAJinQe0HCq38gYIQLE9ty43+epALLGfMfvse7abwh/gZh7JK2c4mL88TeD4bXucfW5++qnGBTopjljPFEwJz4Mh/vkwWhIdbx+85AqpBwpocS1UifhI2cr4fcPfMh609XXN8jigMib873+zrOfL3uCWRAkG/lRBX2RufNAagyTmoXBtzZ9uclom1PvJZFJdNS4dgpqu04Ax1z6Vc+6/a9tDimQ8TJhRqxh2A3j5ihDifjVO0Rep/186sdy2vU2ZvGExugSMT1OLXlRgTPXZ+5rPqfbd3xnPKZWjywbbo7tMe9LaL9/Hi/b54tpmfTM3Q/MXn2eBHPc1+xvLTPzqbVu0SmB5qWUA2esgffLsSY/JAxHmwQXnlUhZNbQMSzCSbC6TQU+Y4O4ZJmJLDfLeserCGjcPQC+xt6C2cinEK0xqh/5Mf58H0asT/M95gtxdNAP/e5oJ79XNCWP9xBz+E4jNDmqCqcQginGSRbuITnQKnPH7ml85FeClCjs/r00QcMJ2JuRiugqqEjDevxI79mlTfb/1z+r15dfyY2u+ACRFD4yxwAC97PIWDAre7Gp37akY4pIHkeiXQamrLWbmfbUigcRMkTIcCaJvTA7i8h6PCmLfOqz4yq7KxCE9T3l6OunyDmFDui9SXRyET//Uwk3Q3muvWypgITPaltb0mTspvOYocer165o4LUM8fEHB86lV4wuOgBVT3NWHcoRwOuemO3/FjhQjsSN11HQEXD2ExrazNQxr9brMu6JV/WHZyOuz/XogmrJMvDyYXQG+EgMMqBqm/yYCu3fnBZPLFuu4ExEejtFH/iVfat4HJG21jqCZ7EXjSNna/k+KHizG9cY17PvPfnqHg2h1GGzQ6cwLF6f+OBH7yhNltyngsbfDvB2MBkn3q8/JOLj20V4JnqR3JwIzTccZ5g19xJ6rzYdbby3aX5vaufhLsjVENfy79fo0V4TyQb+hrmO6vHAarJ0Oj7ZqzBC4U+V3O7Ld+nG7vP0S1DSV36z+bEm+2sEHfeuYGl/V8pVtm0pDKuDWLWY4+MJEydOjv56vpczDH1VJJoKqHUJNBcD9qsDBngB1eDqEhNxNO9qWHoF7KT4MsU7zsSZL77sZtNXWzz4MO5rAXB2g/+2i/q51qt7yY3y1yDVA+sZraeljZz/k3HOFfmD4xqEbSM+wZax3+79WloNk++qedYWBGmGedEmIFhBDPBIzGQHOImDBBQUywEq1iq2deltvsXmnPDIFs60S+BiJl2+/rDGmRHiLzs0lNKqdvrT0PUNH7agPPceSB8rpI+7PxhI8PcN2ktXyTcNM+StTmEjCJMl+EJI/A2bDu/XIv+lK1TXPVSwdvTJ4j57XOV+dHip3B4e3ncJf3GA9pVn/+clejshNHL4+PfGX0+c6AxGtdj78FFkIkteTgZ2ykWHMDyI0QkG5zDSXdUu6DekQunXhEn+hxpm2hb1/ycahy5JU0ZcEAtg/rrp1vaB5S0PsrakG9cdG8c2yAtl62hkBOFZFHWNrbTYUq099VFp+7iJSvuNgtuS72ojUztSqZQcvZzdY2WRuyrgRVbj1NW5VRyNRqsAb88ziZ8/pomLiX44o696Yo9PgEGXB8jmbO8OaiCikOAOx2K3XJEQCexOnpjx/JmQHmaaf1vac7h2UxbsozroD4Fc69nH3mbAK9HDNGhvSkxeoBVwlccE8W+M3So3eMxMEaJfPQF8R7joQzD+ryq3MNUANS+86NEe9jHkgsz/9vEgU6Nrxv8fm6+c/Bz7d3WluJ2w8CSm6V7plmHpbOVblgUQ60H/FAafXyco51YtwXpMKmP6B0qocpBW9gMYGUJeLnhLDAHJ8o6iwzYSn08sK1COa+PSEsW/jh5I+iHgroPBMLCtRfW53ii8gSJK6siEZQBXS2P5CQtyxLmsmL4IplpRH7vYnnbwjwJ0rdMfz/n22mrUOL8CIMuAjTMn4ydKGTekThcmfSFjyEYDEiJNoicHPcWTev8SEcJxl4fBXksOe0NQoL82heTX2nGaSlPMhh5vSeWATSWwAUDZaZhkHc9nCk07EfnxZI3iDuXp2eOhzqe5+Z+ECs7jFaqmgLhvnyVFXD9FXIM0+IG9dJ0P/vqXyxS/Dn/5CD41N8clqDWYrjjAtTEQmsbCi5F0t0T70YZ3LZu+luXauvjOAbt6Lpzis0u/2m2x4ChHKfkET+d5FCzTvgYiqCC/BeGWlpuJoNU6ySD/KX6yP8RNcXVJx6LPnEUiXnsM0Jgf9T2Al2HC4lxn4BC+njJx3kcxIGmJM9pgd2RWoQIeQr+ypmgDGsPjYhq3cp5cRBxt9M75AFg8VvU8Q8UmU8fHa6KhPlyDITN2p+kV+MHU9jHajM20uRwII89w7DLUea4Oi8nRlrMon2HjI/hjI0qYX3R6+yrTmggahSy9T+wYDVWWGegK5bUKGxmr2IXJ//NzuMaeZn7LTPRMHqFHBRyKZ8hQpo2Lwg09oBq06Lm/HWxIeayMajkfJoLvWHb31oO4jBqGFiM3bZC5nNZPfuzOF+FB2uzm27+EnB2G7OGl2Fz1lEVGROTqxLm3V9GdYr7P5OU7kdNkroUkOGpJCiSPj/BZjqGc0N6AJI6ffYiVBlVPcqRKf2jCIW4yzq2LfRG612Nb8wyVtMcG6scBAntkIc5EFnxyvqZLV2gOXZgHv/p/u+DKTyvlwoZ49mlFTRAa7bHnE3P0aZ96nGOlDPhZo82I56Y+yLkUsPMb5wo5D7jM7lYOvMiUUfKqTz/gCVBhmJCgWDlfvnkeb78qeXD+XhPxO1TPsVLU4UPtADJ8QKYtPwALqYaGdttgXU56jl+hgpLT1DwAtJAPcBb2cM0boDMcMVoSt++psEgIQQONG2a3O9a9cbz7G3Wd0xFprnpg6Y8vx45t2WDzHYtHS7aoKo87zlgKod6c30lFvjbwMtqHMCKwpOMG3ngAYnJF6NREBUfQeUAIN/yy6RLXpZxsZIvzzjp5roZ2fCNhtirc8c/6BrUMq4IANNkAI2OBa1XoLS+GuKhTFLQbXWri/HBeU07gZD2Hpz8bT85M7L2j41xzH21Iya1SlwF2fNzyFZFcVEnVamZsDooGqN5i6QpydC/LhQtCcdlCfthRIzIk6/YdELEMna5iKwKWXrZovAerAd5HP7H5RwK82ntBNfKaR8EBAxfEYrogay5E6N8MJizVvawmB6mt/MIrHake43eXVOAeYoYHr1fIszlxLhOzjPr1vtMpKdPiA+K8ycCVn1HCn0VgtqjiI/Dc/IT3/V6LhLosCBpdJBGkOzNhtqLQJtc1WiFf4wnxbSqe/V6WGsKPMafpB0a1t3SuS0rB98Im+Pa2wyXWm3KyiUWfuQCGY8GSzzF0XpuSDGt2alugCYAUJkuZNx2bACshc24JA1A13vR6wrxIqdMOO6OUxviiKV5q6djaiXqrj8dVMUfKjMPu90+ONWgH1tETNOwgNF3XJABgsCHoBFxzI9SMsj88f1u0sU70OEWdkk8nZF508ENdc//cRkFQhneRkUdufegut6ljtrP80hbZyoS6Vt0g0nvsfucMuW3LSSBym8qQhGNjzXYTPNFsGkGhHqo/5b0JCTxbGtv3jSevEucg0QumpCreJ9ZwiQN+RUuEIqTUGyBMF+L8V0lRCTOBW0gzeJ3aVSszU+t021ouUNN9Hdcf1RL1KzhHlRlYBoC8gAyf64p0BFUIyaJr1saH/sTEqZ7dyPuiSaTGpDZg8ERpC4h2tiD5B+xW+uTgvhZ1kK+mk8mNsT3kakiC4/rgvs6DCSMu+iYwsAwHlzEnREdXTB3dZLBefe86HXVU1Sb6HwCHxxbFcFcNC+26WWeaxkGPo6k46OGYibuVvwYHUo8msdUefiJdxIsUfgkOkxog5Qw0tsr0X6yi5Q6xNL0LQThxIRhgswLjBJ5YlQ6iuCUrho0eq2zMARmvjiHnCJMYrEyJeB2DxEuNR6k299Y6PFsdRRovLXgkRgW12/eefjdnv2mFSQs1CwxD96TW0kxHguhU7oTHHBZc0cpVdpNYHEo3WOpfnGPd/x23UPN9+q0h0sW1ACeboTkO2I3wbLUiMixjrmo/65Kkp8cL4mScYiDQwdhKLyUOmk3ZT+Atxs8NL//Dxwq1PnutyuYNaAH1xCe8cRDg6k4PFX/+S/ybEF0CuYJ8IYkvG0kBQ7hkNUMoxKGkA611mP071DDLVPVmPxFYd1CRYWgSKlQcqGYPz0Hl7UsyOcUUdjz9+YEZi35o/CoZxl37azVq/j86S2KNqGG+rhQMh+egLJceFYkSDUahAnnlrDYaS5QiJS1RMKb5c/B8+i0g9YDfzVTJyhDgq9WyMZwgd2DHVOP7HPYmwzCaaTBWe6RCMKWPJ1cCbFcbJkKNspe9yTxCOaK8EWnPFkZJnaby8Yes8eT3ldDyV9Rf4PuP57+R2tdDL1oXUnqC/jiaAXRo8pSqCKdQSdm/aTi0MFzpdOsog1QdaN28gITfE33LyDDHbIUnZ4zCYkgsyvWi1c9hAJn3TfRm0OakXceGG4gkQsvYb5nJVSzWrGhFKZqj/pTsVePq1gBfZ4ILeEZFsj3J4pGojaKYa6ZxLBQFp4PRTeCYbmNIo8qPqtQY7mGed6UdcwWT5w8PM2DumZUhwuNIuWugNH2XaJJnQZlHBvDKLvs5Z9M3nFzOw0JGjDGI4T6Wqq4L4VYrE6Zra7JGqWvxDh6uPBcbeR9edTF9xh2Z+225BA7wYDQ6wW1Fhdwx/4l76F6wM7qZnFsYIhhH61ur20YeVgA7y2USHIzHqtRsW1vc8/W725hpiHkQea84KkCJ4dvhiBzoaSB50kjbg+ZT+loYjCUf0qeKuAgPf+vsc1dBNFPAbhQERaY2BmdEcE+1qWwGYV3rBt5Xh2DlkUMdN8qUEk+HbGyGAdp9lTFkSfPxNuflfpnKXjirxyKCgSahOACvfAiKsJcw/0VfG4mbj7ZsYLx3T3mUnn2/kSdYnweYcAzwUH1keEiCEaDsYwG1joFs5hjgnDcg6a5mxbhnQPTwNOJ3yW/9Vyf76XP3noJZm47CLeO9plP+9cogSHzPWjGoS4TrJv5C4HPsrqv5q8Oh3dsFrD8Pt+1Sb+9Rpu2R8A6NKoCO6VnrfuaYA4Z+cCYI9RrPuPUYKSzZRKkyzlfFXfVAp78oA2HumnC112LLz/PskgvFJ2UESUwXs0CK5UqNcqXsnI2L/CQN/yoEMddgjd5SJv03yIKAB/gAyl85DFeJR2OEE23qbRq8jjASjybijFLSDcfXMuPuLOD4Byt5XvusxR5/eGNIB378qRSIQWhBdp6SAtOleeDU+TmfjX6u+VD7rgaM7cN4BmUv02CXyBBATeB2pOgrZGWZzL99dSn23AxgHe0u5kGxN9EGY67AGZMgySiH7/ShEpQDAf/ypMoOtSUyiGFbUSYE2QpjIIUvOCwf5b4hYgp1aJ4UMrDmCSlCZFkQ8vHXqh5MjLa9WGt41Yen2FlpxRGtlB5CDGa+9E++zqW/BZnw5U/RL7c+cfP/ZtTG2eBQn9gDUQra3VzwaXzYF/Ek2VeFJN7pb68enUy+7BRbG+4xYO+lT2IacQ/+bxZg/T7zjt9MmS5dh0mh+8Aod5zAYC1+NW6RX7MCKU3IeZVJTRaivTzi0wD3xU8Aya2WLtAv66E8qiI+oyLpWsxifaT/IQl84FtWj0f/FpdD8xQtkflKcTpjGY8W58c1Wq0AbMXqYDZ3agH8Me9wp9GGL+6z3brGln6IAB1sNoPGHUFQHsCy0k23K+G7Af8Cd7yj4kxrQvB/3eQkf9XCrHq858HZVXBsvxeTy65+vUf807FSVXUzjaK786YOJCr5QQMQwjVoKkXm15FcSapGza9vl7YlfCHVoZ4GStYllmSHlsSokJdEMnJ7BOSIIskY3qPtD5yw4l5CNS36Qg60U4abzJKC/BzN/T2hhTqlkUdCJjYDBnBlKtVoPiNgQGDzQBB+gPUEqCedoDG2wGTeesn+1AYlnPAh4Yz9aBxfnrkuxT4iP5GiHLi0l7JQOyvpk+EWjon1zILvxuosGvosQ5VALpLGKeXU0PHtfAX1onaxJio5RHSSx90L/+hjdZfPgx/OKHGNSOwgBt7ydY5rO1vFHAMt4txAQbvv7tksD1+aAMMY2ruf3Ex3A1AyS27V5j28JD2UWoXvalPoO2CIO3TChs3ecpN63Vff0D8A0WjkpzMY0OqduiIouFAFus1aGEQiJ59UG2cOFGEt8baslIbTQQDwBuvfZjdv6JmJO8iwd7c6nwfvKWtraG2Gv+SnzI5j+DVrIIMZzLk3m6PfSmYteEEjk1NzyaYx+ZoFiFfGKUtiOwLjRCnyN2V/BojXzOqd129B8uQSYcf+xtnx6/1tiVS/HpZ9LnLiPK4MMGKmxVoF/rFxAYyJfsVUfyQfp+SAMihy9zh8nB3VcruGNl5vOwsDh8r0yEQdycXL9ws0HF3+KbdAlW6i5WLUaXl/Otadu+m7CmsT/hPzTk13i4OOBfGQlmlstXq50uQpE9fWovHKH2BGejwLozqAgia502YMw8toMLMycPpAUw6YINR3P0wldXcog+8cMeRzlMazGIJiy8AhIV20ml6Ac0DXq0IbxYwWBH+WBne/z94xurU6xesAY8Bj0WFVc76TiyGat0naFlFWsUz8WLK+0GhjYhOCd5Y1gShAbOGPAInzE3t3DuPuJA1mySxFu93vJ8hWE3kgPGM5YDllG4gK68gi1gusGIVvUhoGwhNhdICc9EYRNsq+LSFxSCaazTmACGoRhQJRAk6CnwgNIpYTGIdhBwFnUfVCKwhVkHjAmURdBBoDMFGQHONRsFhLLNoRpytmFeACsssGqNoch7LQ2kv6AiWEcQGPnsky28Cm6oLkz889QGkkajyqPYvlv5STYL7iVVFnuBPLP1ja4L7GZ+u9OTygiVn2wgPkRGR3uQRS7/UCA/KtyltlU/RdEyc5LeHgqUZjQkeBj5c6dkCo0loBkGb+UZEnUSrBE2JZSe0Hf9cae1hhqbMqhXagSsiNxa+sLRilYXWWVTkVoNj6YplKbQl/xFpCd9YWrMshLvMFyKtc2KvBE/3LFW462gsPaDIPeELSxuWo+Bu5MOUHrxyaByoVXhPI1UpvC9GqpnwfjlSFRIeTBCjhN+zV3409GZl5O7z6ccSdx9e/mb//Mz+qB/Vbe7+3D9xHOWovmPTy4uV92xUBi8TmyhnWo/86Pnd6hd+KM203vEDOrH6N2fnzOpH+laOte7Y9vxm9T1bpcLrxDZSQX1NP5Nf7Rr6ic30zl23R5fl/FTrpiLWO6+RkVQpht/jB0BET9OsgUTSaUJRyHF53Aac0hxmKLJQmwwUUXAbk5jqaLAbKNTjh2lHV4uygaJjRAMc27GBEdiOhs4LZNDoQOzW3LGEoh5RHykQWdya94TbXu7MZN/3e4c6mot1RqXvYe9bQU5RhlxQUjci5we9gaPHOjsKVHjrDeI47NlhFZ5hN9DerHF0CIZ6RJeRPGh0CBuoqpti07jYgQx6A/cWNkl0CCzLL1M7oSiCDRSNaBqTEgI2CRQBK8WQChs4inUGG8iST+m8gUI9rcAglvJl0RzJi7BJICrDmQiNAxZnHVawDIrao7l0zpjMovT7ncfTmMJeIL2agyjkBg5FjMj30ZDTMtEkfkGsGlnSs4QII5T95Wy6Wc4NfHYkpMLbLlV+RF17JG0og7fh6M0SEkebLl1lTBXyu/gEQ2b6b6dZQjtIKEMBe78pOqDxBkV25Pij9XdOHIKBBAe7gScFI+wTNN4QwuxocLtQwA7UyQ1QsoS3VaJw5iJPccdelOTbohjqWzgpWBS2wrGPgVM6COqfLULtjzTZFR025SrDVZqRwp6rcN8Y9jKz50TRMI9QeAvmVTKrKhRs+L2ZG9uzkMEzFAu0GzWHyPVOs4TD6GIsonS4KZ5OpR/gTGyZ7dW0lcjJBbrMXpfO7nB1fmJoZWB/M2fy4p0mzFAmP9Tt2Ili1c/OmO021Uc3Hxz9HCP+F3j/Y0Fl8Pv/mtqnjpPsjckF+Rj8JN3MZJeiYReFgk1JQqczgfh6X3o7oc0ts18G4G+2NJAsgrgShUNI5UgM+++AcsH3rch5hjoeOPDQmiJaIjJ4tfvFYCXPwBaqPCsb4Pjas3PgBnsWRwPGnK1fxH3DcpVRsPS4wgiFFIvFYVkdwxESt25YulkT/3i6facUb+LWOqHeU2C411eWwOuEMOQVDiGPt6+4dKXEd3uPBG5HZPhnHslCBwEUUZKX031icj2e9OmQxjV4IVjuuioftDtmj+8WlYkSmEn/iojDunYHPkgo2iGLKal5J6OoAKAJfQgUbZBfcRKIHA2l4PB2NpSyjvbvbyJskAuKEbGAQiZhL6RzaLS+kN2LfW16JDCZRGbmZBBZXg/pHUv5Qvq6akS1MbmxQp724TQzYD1Ww5qW1NTxiWMHiQA/aBRoEysIFqpNPJzy/qL+1y2ephGJCwPfOzVw+F0IErobmA3kMfRQwJHACj058OBmQFF+WcwdHaCI3ykW1z6WwAyFSEjNP77ZsLpQlSpYayM0hN9BYHu9VwDfgK/LxD6NoGw/jUm18vMC/jo1WUxULtRQNNJVMokUgMwdGGxohemYkpcOaKBQR/IydGAer9N1dIE2UPXChtlcnB+xfwTLucz8SMqW3MI8p2yey/Il9k/Bltwn63N5/pD2/0zsLnfN7uDp9og1nS2qo0acprFhXyRSc44lTzE1MJxBJM7JqKTLC9IxAocqe1uyzEThYGX+Lkh97uQ0TbpQUMB/hS1Bjw5aEwE/JzBtWP3INch+nJgdBaoZYGNmALiRhdPT+Jfpv48Ec+yApQlAlXoo0EKBKyBiDthCRdBvDTDxc3PKF4zXqx8Qsf20PgOYKIH5IWanoiQzd91Tju1CkSxGvhO795+tOESqqpxGpbRhUqsr1JeU46KFlNoteJ9uySIyj3RvJvt9fVnG/mwRTAdhh9mizSDeET3N3X3tjdhHNIY+tTgZjWXcbtR4ggROaHj9di3tY04uwj//ei9aiw4dSBRMFTaUkTkJDJyOzJHAh0omRKCg83EQ2k+DgiRev4kWOvG6L2SJh5OGYRugKGeDOLoCY0smhhHy6bazPuyAT9emAVMlxI9MWfV0b1+mHeE2DegeQOyBUhIlYB9bifTz7e3M8YfR3B23IXIVExDbAixxG42A8xuIWhwhHiZDgamHnyBfMZnMO94Wpx9pDPhMtqJwqZvdpKkM+K1HolwYe0EHOkigXbKin4WEqIve/jB1LZnWBBMITBz6s+GoxckgP3AjoqExM/ZcirXjqFwijULw5SQSzuPlmmJyNoVCpD6cNLZbrLuebxP7a2nL61QsGylpakbH5sLDDf55J956urd+EV8X2kDFXvurYfywmHskZWzAdOAN1MzpROEoIc4ZWkZMk6zIq+m2GbPm9gjEfeduUSn3XjeDKpzhFOVNR92gN07UxNN2n8EUGMYUCs+HWCzOxLI7pIy4qrRRTYHOJP1U1jrYhMFtrBZagEDQ4ATc+DtDwNLE11UWBuz98VMVCtCpNiUcclLU3kc+/GJlyQhGuPgpY6KdWnz/TCQB86kDndjNCNZ9Ojz0srHEifG+bQbY67fNADwAU2IKbNgCOgWdjHmUzHXO4hu1ExURC+8jMeKSNx5OK8S7vT1MOJYPZXqXesQCmKEobIYL7u4MzVNMiQGBQU2Q1IiQMTWB+EGuHZ1ozUZZv5KKXsx8n/JQfnhFftl3EE/3KXJ23Y+ecAcJ+H+WDn+5GV6upnQxc0/UpHAhx7axOESSLhmiWxdow5wyGrtrj3HOgKDsM09GOOMqzzWS6msh82zgk1Baqhjzn8l5AmqCqnlpbsgDv1802MjomQmiMPWTkSFqqyvLMcBbqCwjW5v0siqSq7RNME5PZRJxIHSYH9kAlkOJ9AJ4xviCzIcr7eYZHYk93s5tKbBLTYmvwKyuFtAdobxVkxAykioCqSTqxbjEzkyoYzaGzXDYqEYPu4gm9poh/f9UoOFFZFFXSSamFsF/yCHV2gWi/QUOSj0x1JxlQdQdblLdVFEIST0DGMlbeE8PoCovcMFSqh5U3CPPRZkP1bwOTf0pho4fTQ9+rh/c43GNUdWN4Yjf7OO2Aj5o0xOfKie3m/Pu3Xdfvcf3GnzBz6s66W6zgUsz2qc7Eo7tNMqVjlr1yGjD37Mi6CohJbm3QSK/sq3iOCUJYceoMYhTlo7Dhbc2cEnAWF5DrJkooWGlFdhDHAxBazIwWPeavvbo3w3NNma+/UM5ejzpbkF4N43UFftCBtjsWY6mHXUnc10MatPweyIsP7DvWm3OxyYitJEYu7g07GXxn/gzb/LrqSYx/Zpl6oMNrq1oini3vi6QLhSVm+GUjyMMKkPBGN4EZOdxdl7pJLn4sTg8PJRo7qh6Q0J4GP1V67VQhYzAItEB9vpQxoSLyHpI3I4R7K0ymCvJMDu3l/N8py5X0ziGBIY6rRDb1HFRBr3jksOLSYCa1g5XghH3T3grdYk8A4Dh2OUX5QBUu4m14kjfOUOF6uWFuKgKeYnTH1xAeakYGszuLzUyUYWCZ6ptKiUSTgjFjBV0g5VOhfQjHI9OUKv6c5UuymMoYljGnhQzpJ/fMWWiX442uiRmYDhVMULEUVX1OpdtBD93oS7q4ssiS5/dvPbRoFpbixBYTeRHJ5ap2Yd8vuGNmfB1Zd36zTwvqtpXJUz5Bpp4WxvWDw2NXains15TP7+yaNIFq0W8nwpwRK8DWS6zlq9emnHSHRJ2eX9O8XAtmwm0pBsX5QJEGhcwk4l3LuLVogV7OPlcYULT3hRX4IO81gaMYGCp23EkFDtGUMBRcPvHOpX3Pd3EpeH8gSZ4/NmM6qlr1/afI35Mls8XuNJJsIjESVX4SVNP5qMTin3X0xGxg0g9taMOILoWz7XtuBWlL1Kl3nI5P3LUyuRFRwgy6ZUi2yEDHdVewYLIfDdHCCqqby6wC4YjhaoEHOGqJtWGQlXNC/NejAogmtyaBfZCDugH5kBTX202pSboHv61X8pvBe8XLdpBoCjFpSfSnX4/pDuDu2zHlOOcUXCGs5U4Zl/ABf1irIFnODOBQjpWmBSzYcdExRK/h7CAo+E8TgGDelxtlQRqlRW5Aq/VYiuf0tJtQuVqA+K467VnYqBz69GQmXuEh2hlFU1YUFGiwKT2kuPDQaxCtYLZElTg9sFFjIMVDGqBZUsiqy5sq4a08SBRcD7HAs/VZ4u1o9ApcJqg01P3S7XFlkIwrTihVhhiVI6Ugtv9gkg4qHK6Ihp3he4CGLUjc57Jb7/XoGhhIBW1RwhjyWDwYnrcwUjoQO8eRLgPqbNe2M1LRFZwi+vnMNnfX0cS/vqgz2kQ/VDpTGHsjvQU47PfwbJ/m6RJfLg3iOPKHF12NiXhQI8CrHz+ejsptd/msk7HBizOAhpvT4ajQ2hFGEDlykaUkGoVTEtBl/uXudIEwYAqH5djWFizGAFKSgw13epRb3WvGRt1v8Jbz829mbo4RwJVqnowZrwAGQrN02ZBsmvRSU6S6cHNpBfdTa2IXRqJb4WcmyBHhknz/0gFen3zlZL/IXuKzIRvuy+2YFEr2QwhsvgKbi9P2PW/DItdBFt2ejWtKf1uqTK7hq6Pc4mvkW0va7HKiwoH9naXp8/NpxUxpNmDw6KyP+9UDGO7p6GIqmqLdFtm0GagQZWZ58OwQVcovg+cP0xuc1gQYMXW5pFStGGrJOysDqAfpGoGVNUJkANQcXuQ5F9XjvTZIpzG0ASLHbsWmVCWUh3zuipkarcnTfggZk2eqBEWzUACQ5AD0LC61UQEsOsKBQWUSGEWHOUiu4GaxQOobvrgOABVVx2cGMiGlepwgrM+DZLyl9fVJbzshsR0uM6/AGfDQwYGeaDCkgTPCCXT7CyFCgfh4m1WP+Pke4JdpuJGAAri1sJcTtf5wFGpMDeP50U6hhrOAtcoGQEzlLzNU/NRDGl9jzzBEMVMqOu92P/apBtWsqTNUiThEIH4jjRVKIa0MYpKNLrTU0PVBsB8gOymyLpZbndhwiliGH3Y1tg8mhJJABmHc7B+QSzHzYsJ9GSJoIpK8AGWHoa4+T/C/EEH1VOhnvgAGPN/wDeKGEPfBwFe4ihWovXSA/hjAtOh3O22wLldeSo4JLWKhQc1FA1NpoGoWqQoNTWhACs22Qg5GbksEEpHOUxaR3MytALPsIwOg3vVAg2vGhJRkdYQeezlYW1kUyStRJlORmWKadosMUVKsP9ZvFtnkKGmU7qqVOa9MHbJGfIOpCYfLwkmb+e1l60NQ3LQFLMnMuLDrEQboMpguj0QGljZ86uhgLclGzRNRtfg9h1otMYK/DqGaejUDgxHacxRAsGHBdor3Zr2Sjm5TQrGS4xz/d24SwcqOFrlOGF3kDaYLr9GHGYvjreucuLeR0fAvH8Es/hsim8DqjaSF6LM9Zfmy5XkdSV0oO7ZuHBAIZZqmTR0PBlErhrsJeA0QYJHZk2h8doK3mpOMUlF4SCJXQCSL0Pn8Z2KuBTzDpQvNepcLJLxxqmIJ8NsKXjrrGzQtIJecxF+mbqLqTXcZPueT8747mgix9BDST7RdRTG2uJ+CulV1KAGY3JrCPqtu5kUbyt2S31JtBlUBHXgHef5XD7svPdio8PbMlLAlrk9YUM3A0Z8A0hAcoSR18SMSxhfK3AR2mioPfZ352YCOFwytL7Aw0qIEgpc4Rxfi49B2Jifd1+/Jqpxp0K3ninvLXXo4jAC3DfNbZEs9svnSvcfgwTbT73sxjop/4RcvIhHB3i1CCxbmJM0TaMwgbnL9b1DOO/L9xSTa++fjcfp6GABATlTBa0V8nPtroShvugGYBkXwFQsg3o3hxhwKzdQvIHzWJrX3N2phZfZiKTTEwfFny8jYAHZoJ6yzWjYg31OT1ZCiWFEZcEx7pfnMYT6O2oxJPrJpJnkuFQsOA0bLa8Z4ahePBMP96pJLdKTg87+V9ItO8rUyf4CDbBxTnwcdcjjkki/q+rv9462e166C79G8xRhFZq13/DCKRiZWKCugyNVlxTLhvHf6cEr3kMafAJVqE7EKBjwG38GLfOisWJTeXZezCifoBP38MQTgnHiYUxsKo/O/ysVKk/JmDlXfrtxxyp20sSHmEiPlrsVwgojtdvss6vyQULcJzCh1lbJOvtqpqqCua4ziw7/TH/wpwK6KiJ5vVVUPam+2RfyyKGNKka9cN41vsoLFzlqvO1DEQ0xiVnX4mdHVbdPF7W2xXohOi3c7KgE06DAHUoxrsep5g5QkDzw7UudztxxHckF9guXoK5E5bOEf8PwO/PGVSGJyd+pKQP2xpd92mAg+eCvL4sHgjUZPgi5U1Mp2IwSYO8Wbygq4fMOT3y+6RwbOFlVAZdma7q7l3TOb+GIpIKtTqW9d7RYlKHdhgfDl8/ycMss7sit7Uya1OXo27oEbVlHDr3qk+uG1Opy4ebZ8I9j4Tru157MamdDULyUlnpywEWED+Ubv3j/ZbpXljeECO0fZ/pB1yd1ZIIZqbPlZimeah/mUQp+G9QavKinSWHESK0vjTYRJcGnLtiMUhkWImMaZfAB1Eugo3aG/F2argyeJU4eGLs2+HrPIMXeZtMfREw45Y/G79WXfcd//IwfMJmJo6OhP2y98F5YxlKV9ulLuMku5OxpFpVDp/dEp9Kw+vTj00wxQ9soIRi5D9tfQi/jfe6vDB6qUCANBFISdBoNgwujLH3BdACKcfBpT8tun97a1f9n+dP4GgbntMFi6glltOaIzxLZVuXUTHw/I96+CNQa190gLUsY815quYBVxoHkmNnBXZrl8+ebyAyXhjmHBFU7NgGrh+pHop6pxNv1vShc+O8XvD5SJ2DN+GmfbwhskI6Lus0o796bSRGIUx3gkJQmf4ELTwjsx/jCDvv7Cq0Hn196jJbFft02F91Ky/Eu7zTiZ+cqfrsCH9Tib6eBnRx/ivh3YKMcmb59JYlVzVa171OVqkjbem/2w0UO9nLpbuj+vit1JXtYvpyDKNR9flMJwK1jI1+usYCU/KVKkfT0HPkv3DB16CCKc2XJraERvJ4vNpiDj+Eo1zkysMXWN8WJLL5M33gXVUD3HOmSR/Io0sXQytv+pQw1Hy2ENcQWaH3PhGLM2ZLGiLYFWP71JJeOghaCOANfb60FOu93Pga7A+DwgHgLQZ3yVYny9DJlNiS2gCKeP/aaVWcHoyvC02476MoX9i/+OUh8K7Am3oDcGuYlt78+ttKx5o/4u//2gY4wWP9rLNQck0VRAijlKUOdl+6T3ARYxVeLiPaqSDCjdKdfky3rQxNcN/HPYertUiYBcGz/7UeVzs2Akt0OIbGujnotYDzF4+TePs3NVRTzB2vzQHYZjhK5Ke6W+uJDkLwmj/NweLQ6ltzHQE1exhHoxRd7F5p6q/dO60/3B/x1tiFzUmk2jmdwELJ1Q8+/r6SmAhhyenVv2uaeIn8fxpyZUJ5FOsNeHue5Q4d43kpW7EVextNgrWshjyObHhN5hkP27erXn/BQvt8JbousxqK1pTgG4RnCj965PyyNHgWDbkbk7vLRTdVRVizxTNF12iftfg4Eg57H9/7Yh8WanMKF2/PRqEqNNqptPsmb0PCvkrIY9Dqbe95QHNcGCnYF2sYUk6DTYiIv3iIZ8S1+QRr3AO0YrE5/bAmsub00KHKv+TpEzwU4mjYM+xCFczrVZxpZH8l8YZCt7rg2jx8FMfsfdOXQih6dkMpQAGCMLi7QuEJHHYH9dkl6DUsaXb8PHPwLUG4+gSBqod8qGxDH1Euo6wv8GY0i8vULBKL1+hM7FuLSaX2HhUO58qX+XkdS2xynAzjoIWfPiujBaXtqkrPpcFR+H/fPE61XsH9YbPnYbz8K0PfgtQwuto8WhwKORrvfe3gnBthW0BIDffMgw9E9DEPSCMuZWBwiaLyyI2CjJnSaXyoAmZsgJOUUJRoUSPfPhbDsh8CbSaR99tLtTKKDJmwzPTcde1+wQgdSERtSAzkTAdM1K+JLoDiwhjbfsr5ZYwMNBHSXu7dDwobmIVEtHlzs8/Gb0H/N6dHxLX2uHQ22pumZZ0iWLOYQDO3KvFW8TOfwhRzm9zVGZlh3N6geGngoArjNWUXzmn8f7AdT7S/Px8CJ72AMdYSwLmX8iF8BguIBg3dtAVCnP/yYEMRaFNUvtvLhD8MdQH4zfhZwHeBRB3mp64p4a26Ke4Dr/1wg8mOFijEgi/UWH6Hdn5vT/XT6e1Hubi2slLNpWyFxYUpHbUcYoENQw+bko21qelwhhYxiorbcYgWsFexJ0mONlBAVT0b8qXqFxWHU9lmhsO1zMO48arncr3dQ1ilFNoohWAN/RjfY+2ZgHJbsbgBpBw6HHMO8WktRewsoqsq5PNW7AZqFHU7o9NuMAjG7ftMaWLA1DQh6uK2FwEKp+BeE8cRmhN1Jn4pZIdZm3X2yioz5tFArJBWU5hbEYQtneBf9htUwEnTXpg2xKSRV16FQCiQrwR+I/r5DBH+o1lcHS+eO2abxsKsnvXeiGNr1YTJY5Rre8GP0O6BYnnUdywQaVvMruI35GsilQSNZsfp78GlrRkf96KyLhfzvpWS8syKWTxqem3XyeMUK8VtLVNdb1VaMIAUDiyBgov0ESI1HeEDzh9oSx9RifVp/ZIDAF2vKXDzdBuwv8yERv18opyGCb6vTX6JL4UKr3EKq+2qluHruEJrygkvN2XTp5JUdIq8fZTE080vVRS+t2j8mL5bcGPIWpdSz5C48bVJaWKoiFL3XNPQ3U03vm/TuxX/DQrz9HyMBk8MiXZwu5Ft8eJCFGB8SJ5bU2sfzmHHc0vRzqj5vp0XN46K2U69+tOAGbYSFL0a6eiIaVQaILnfwtafd1UwdU0FzMMl4KRjvxtJjvKx8QZbcmsGhnpcXXHwPuvY0cvdrolzBw3LtlbdVtRfsySjZX+vL5/IS7fP66nqf/oyu8hyQkul8pqXirjHvubtzRHGUcGuMcwBGVjgjPq6g+1g8VY1/ry61mOBC3yLd2dReHCIG9EYcLnxe5mYOoeXW0B6zF8sbCyYDFFL9QBq+d9oOoMzbgay6ka07hh7b325iFXS0KY+gJgp+jJtRPl8VOYDk9LWB/Qick9cS/XgUnvH5A6FVvfDWRvh+09rb5xdwmi5gQKwFh/kGtmXDazthIyfDNPfw2mBBNOPnZ6arE252BLRBOKy45mVu0S74uooGAzIUez2i7rJm4/xOkfKoUwZeTzNeID6hh2kAWm9kHVw54kFwZL2D/IUc7bInjg3frYnbtYOVonUnPjaJy/QkGxjTKsUIi76xLudIpriBfa8P/xoagl7jck07J366unahBVcIwlLE2AGnsa5dWhag0xC89yVlQ63yQK7tp+ZqMXLrlUPYgZEDDLTfVhAhsyWxOCuYq6jBtvQW6ihhzl2h5aPez67kSXSF7g4q/WEgC3qLnZuOlGzCS1SPP6BrORXA21q6G5i/oXbogNwr7b7GwygJY43ZFW0vLOle2ZfFQsCaaFDv2FGraxwSWSGuRUnEKcfIAisofu3iS5paEpXZnyKn+XcEmnWHCbcliC2oHTyQhw6zWjN6agFFvgKlBLhr2oHKUIhh7sCIWyJUcCxs0c0krYauCtPJ3Pt4s9UWUV7pIJcBSr5Ij0TY/xCv6B70lmlMEYnX3bXeOKeGCxejUfEjSqfUya2vgg74b7/roR0UFs0bz3K0dMLE3CUUu6H6AXtgRELk68PGMVlTb/tlILmjnU+J89/bxx4F2hKZyvGThFE5twpdbVydNRvDltnHFCYJ9c5jTQ939Rq7aL8o72IgVjdaEYXrIGvXJYZEtD+odPnStSpZ3klbwv4qqKgPiE3QMy9rt1IY9jId6h6+bm2K4WXQ6wUB5u6nmWTJJlpBjsncB2v+Aj+nrR2TVAG/oElrCZH51fBOhcvS2/d3IzHIuhX7RbJtz9TIYOSV2bnmfprPVsClGVxLPxFkW1AXLdN1KCViqZ9XqtfkSVma4fj3QagqL2eL3Bpsq5hHMUODDpFUZxaqrnOWqlB7FrAmbOBMKPZpFm9rJ4B+anWJuBFXpfx5AfOSzdpzg7pW9XI17iFixIfw327XxDtmlREZSPFKv2YVriO/Bf32lM8XerqL4uFmGV27F9xMp8Fqs9PxhvcKbz1g1zuN913BuOplM5qSwDGW6fqIgdJ23290Nx4pysarKjayWsz+PVyc/I7SjRKPTnhiG9L1i/GyFVi5YGkjY+YrQN+gF2wEKrAoW2F06kiW1polpY34PE44I3lRopEwsR8THdJlExXDmq7cIMsBUjgVjK8EZAXf69Ko3y3/IUZcPjv08puYOBbK+zm1oWLV0IYtJBXXVodZaLnCEGURxHNECnO7lsCE52quKqP0il9bHwY687zgEWxb5pnx5QHxsfJ6HuTEvy85Aa9TB34JTEkDQFKsX9REB8E59kFx/68Dq64MJuLPL9QGfHfdQkdmc/8KzVZvAfYOBGV9UfWzWf5qTxFKlitIUUdE51ef0y/PZI6AKsjniHuDb4zw9sjehKZSyhFn7Xu8PW4Dp8CGajQnmKbfrmClRDmVmmETSIlKKS0vJq4aNpUiy9qpwV5XTRGgkHIhI8hRlvM9HmI3NpXc4rPlTj3g0x0i37CbIIfQCPj1FXhvUTUglJ4JqgnR3YlTlBSDIqWBokb2aWfYFUT9UTi8W7XvyP/VfvTE9oiCxxEaICGfNY+MprrSDbzZ5uOb3mMujLYn0bncu/bRP96IOC1NHopBxtzBo6PqyN8H425cre3dKt7v1uZJ8S3Z+005TAV5jNZEPQh0QzW5TqcvroS3vWWlC/syn7iyeFRZenelBJpzQKJUrCOzUtGiLoyVLuLwQ43EBwmErUMXLSpr3J06vpVbUQSuXI7SQ7G9cc23WtChXRiWxykQsL2PCqogHH7fQOX1ahUBqyTpBEl8nCpA3eWEhY+47SsSaEvZWFJqtaOzb5BL+MmAoL/SVDSYGXNarvB4PfEDo6WzEEC61x7xvdcbyjqWzjPksmKuwd99rAx3irJL/IfpwalAq86zASlqujwyrWMmSmjUlZGkA9bQCjlttHZWXXuory3ttIcowJCOEZc2/djQiSKtUE5jT9G3VpnWLcFwGNxwDnAoeTftD386oiaPE9ZFHfVef+wI3PFEqf7EgtwSy5fj8v79MJUNEnxpbjsPgSkdwGflHEPMqVoJJvLLMdxpnzutPzFFcvTKIz4d3MaDi011hlf/Ns27t/PQWqN8r6tnC78R3fuQ/4HpvaAYsGoZTC9A7cSgJmls6YDqJdiOoU4lcDJLZ2PDYafRclzm9mnOIC/ufp6W9M0ozyUCqZfiVGg/VgIDuxlie2ifOINo1Er11Dlw8JsJteZqyEi72FK0USUVSf0cczuV6NEmagy8WQ/zG3604+PV96wQ3QwOnJu3mAF16fVIAu9VYB4X8IXtlBEh9r/25NP4DJ8QAReu+R4LwOAtQW83XHoAN3hJPYx7pH7C9j5IC4dLG2+1GvoKr3VtPp5NexcTHWXvTLV8O8/D8hNOIhFWjmebNVdh0JziRG3kpQ89EQ+BebYA/G714mg0/7C8B/tNigGX7wAwJ4WEWVvlM2G10iEki9qYqj7HEQi91zF1xxQduuXwYJAisphW08JA4nEbIR+wSkeINwv7mO8xY+nuC4Fpa9lb2MhhdRHWt3PWUZqy9dwED93/B2diEXM6QSzlm1tBroaqcsu1YOvSLNphw36K8zTkImjpkDCqsE43bRssJTjTtJQbqZ9jQeIlbt7zUd3CuG6vRgnmM6H0JinBz0ePUIgc3t27S1K7RE7xkffWCtDGIVqDTvcmNZoV8+sdxBadhcdgY+KFarnCddbhjZUOyyNdhM/sqC5mRvqJ1j8Y5kkg7OzzcRcTmtjv37tUyKZT+BuP1HIO9UdsWX0epeq48j2b2F59PtWXUpXJwG3euN6lURxECsVd4+4nh10+ZfJY0YAyo6uQx0lxcJV46M/XYAlHlmrfo7yVRF5qP6tXxOE0ypboMoa36JU5yryxzJq4Ko1TtwQpI6F8bUSRMe+cGkFR7jMd/MKwzJUpJUb24k2QF6hSYuJapWQx1ZlQZpb6cJxTzMISN1dzkOgs+oZhuMUpxrlayA2XdWxv6QCZ5MGYDMRPO/aoZRct0ofUnpQrIaqjyaGeMgTH4G8LchdDIYW3zTmJbN67KE4Ggg2PWSxj3BUWpa1yr9Z85IU46MJrTXjL5R1ISCBbyqhNu1qBiJMf9yR/i53kuMIAge0vN0WBJ4RuUSZglVjmLWmtA4JFwd6jI7zpCh1C1irffnEp3JOvtgP9GMYmInk1ZBReI4wwVQ1mt+MJk3gHOeF6H63uHmuCwh7GVDLFNnXy6lAhgNsHzQ1V53zVmLDFeRqpE1AXA8q+zXz5omos8JBjyCRLrfF9jQy92IZW3ECDyJBMc4weYDsBXtkZLfGv0CJqnoZkMqY3kmZMRJzZZaayzrKKHgiZxW4WPyAMxmZ87JZhcPsAbHs94CMmk1hPIWwLvFWzmYBNLP9AQy+/LakVGP9kdNYIhL858gZmlUErc8shqDMd3aGvj+w4tAGJq+yJJ3anZKy92bKBJcfuGERXq+vcVXX4Nmfl6mdSwq3KRpVbDXRF4BND8VUTWjejytHmPK8jqYXaILld5rWwF9iUWTUL7t8lyWJOW+TlNmo9hIM6azImEkAPgxQD7+kgvc5uayoPFWr7NxPJIXnfN2blQqQeOjDEffBoB0mC22r0YEqv2bNc+J3uZgj/GgiWLRKxMUegkIXcOnGwYKqQrRKVL8zPN0yDiM8iMjnI4q2VYNhUVjQrIuLvIS+WzF7O3Cmxh77uovc9qNduD/daKetEH3rHFUxM695nuIAl0dD7aV7S0j0sLfznYPwj/QGJOKX7ZC7mim9BAuGn6Y4wvxCzdN8lwuwT/XKaJl585OJlYsy+w/k42m5oeee27Sa0DdqzgbU/ZlqCQZ4q3Ub36T9zpX/DrgRrNDSLiR/+hjrSOcZ845spIzBhLthcxBpWoA5IA9G2cOHP476u0P3OVYwPGJjqOi+xBf1G//rU5Ugr1nk5X9ZDUvhIZdQj72hZEmaaNs5d6RiCVOk0r3LAogaSvz6NNizMou3D8vkZEy92bJT3SwDiF1kI8/gWSgL3ZbUEf0byWl2p2xlXlRaGbfXRWe1JqV0wqeV1gjF7t8cMqxRa4tRQWasKF18x3lQG887JKe7L/bQvQKxQYzipzt4pgxEvBH0xwhi2juzQcASWW1DTkdH1Kg5YW58t6RZuDIksBMtzKWc10D5RrMkXC0Pw4mPlnkDo3TxHspENw9XvSakIcPKxnc1FBqNzMEU09WVsSXVyBKD9YdgJZzh6LE9z9qNnOaurMTFVL4wA4VnrmZamtx37jk6ueHCgEOv1bL8d6wVzsnizGLFyqv21duFTmR2P88jpOWpFJTQf/QWgpnuTuEpQ5FVs0hlVu2FZ64V8XIhOR5XiJKf1753HWG4UvsqUH1rLkxmJvdttKNJIRTg4a/cIhlmfC71yyeXAwGuKzdJvKbFcsIqiQX4jjqdxUcfiCuHbhM/+RZ+L6gPKKBRcY5+uHo2h/+U81JMiuOFRntKxHpJMKnai9YfBoiTlEXxHpCDEvyPGPwW1aiONJyWsTZvdrPLa0Z7kNUXVzSrVoTx9AlbS4Z+pSYLaEiyDQOx+O6d9AVx8wevbzIcOt2PcevQ/uRQlWV1cxz4bbUwnz7kr0np9hn3UCJh95c56H9Q7tBeFRWYBScz308WFSibdsgT25Lv52vrp9qdlTjItfxfloda8l43dhKCIBv8h/yMyITGp89uTFCM/LdaVO76XbxD0GXMcPHtnnur0h5YqqFAtwEeUT8DQ7ef+iKM3KFXIiCYbGnHkiuTmc0QUVicXgOmnr8AFgDyP2A1zSq3gKx4t0uOMoGilM32atLNp1UN/zaaOi93OkGJcEdkgabq8ayMGATSFg+adCRwehzjzQ1Mh2sN7mK6rEGtqwaMvRP6+VrbGlc83XbgZnjWda8BFLx0sWxhyBTBCXS0NFxUtYXkdJy2F7gzM+CrsLGgQeRhgg/ReufRGktvX5vhzhN+71NhdLTK48hnbeQHIl6MIoFbVpvzru4dOCfBFVJk7QTifGn6MIUvN90gRquRh7P0dwhMkdvNA7imZtMMkrMrWT93IY3RwPhYqMGXN+u9T/LDLyABwn8l3MfVRVCDTEfvpGi13vr8MKJ6YVjPKFtALMvVibQwaGpezK9xQzSX5qSM1ubOUDUYJAzt9mzjMwss0CgZPeT6NUrqH9tfDjbJu++/WHl3oNAUGmvUBYfCeWJoPRIfDih3qYpkfqcYGDkOumw4hLyAjv8ZQZcqteOJob1jAvOVoAi644S7NJul4hzZmU3Ys8IPJkC1z34fXr3ZgI4M47/luqlf48CbATpjccd+ooYHCRhSK/Z3vQO55b1bqJNBPOQ+Z8LSo5chxUgz94EMFaZUCSlN6pR23udvBXaF3UDYno6LJRtHt+QiejQEbFW6wItgnqPwIvd87Jo7EaHziqgmFVpdlZqIF9zSDtehL3FnFMgYmEoiem/T7GLwDeDYEv5AJ+f9bwnRvH21SeC0a7DuENlX9xtST6pzdj8ZqNbuo6KjshcqAahgLKYo3dEpYZNq4bgyV0h317VCUKFbllVFe8fF4Pw2HhAXsQd0dk7EoYgFX5oAb/4V1B/hUbXangwHZrQpYfsUFB5wUH+INh6RN+DQ42JIKBVjV7olkxQIFVaPBlZoJs9a1gXUnrLCPi6FHhFw1mbgCOLZYfsgQFKxP0KUYDn9C6ASSIgDnpQk3cCs3ACsiMcmKJCm2QpI1jlkSmOXwentD/p7Yk7xLKwc/Mi2DFoU1UyiQQaVRIkwFoGw18G2/nMFP/8eyWnLv0/uEZzAm/nGSSQYDrIxRixFlttmOMuCr9Qqqr2Q0CISsQpVBsWBYWcUNFnhVpMuuCn2fMq8HN4hkWYGcZQJg25sQ7gikO1w9M2rPrtoAAH9p0sxcLXQih2AkzNUJhlxWYDBlvDHyEwbfdlCe7/Y4zBK43fMBIShZBRICQIodM3zjDMwnlQb5t69LGsB/Q+B+dD7djAwkss7EG6RjhHSMl4Y4qul48vQqzYj38g2Eu4nK3CpQnJ+NQUrHJgAVg9rzZKv0QlwoKIlRhI72aj2J1NU/TmTfwPgsh2v4h5jmAQxI3JzxbzxFw689odT5LmtGpw9Rpv7syJJeJI+nrnR0W+vlLpSgy2B+upT8Pc+U4/OProP92TS6mGZmxZHWPsdSAk0AUq2m6DUn+6xnSpprP208bpFFTmMVAWW4GvJ2PwJsFQhI2nzq1Gras6bIZyYpZT6zB71nA6OOmrk2RLHGeQvuwDoYJe43IhmzD1iBWFaaLP6TtoakGKDuxul9lSyLKs4AQlNlXczQRWAXggLwtaIcJGCoCElZNcTpOcoKlKFDFeXCh9YVTvVg2kMKJdpRjsQJtC4HRDhRiMhrRY8cxzQlARjEbEAeQOWhOYRU9MXGSdxC3E8lLECy+QwcGGEoWZNoBoGrUfrquK/iMcdssyeh9BFUr0HpWFbAn3MglfAdFvw/L+UYE1nn6UOSYYxF4o+4Rgvved75h9L3HcqqORH8rlqbb4uxrAlTmeFr1ehUBNKtHyiUsuHwyUO2mHS1TFUAdFB2q98IQlbLC1qPR3cUS6UuokB9wdNRo/hPLSkApWKviYOfWOTSo5JSWc3ZKg0IVri/U2DEX0dvtch6MBg1+xEbY3dKPaPY2y5KZ9RqGM1QGR68QUjMda84Nw6MtL4nRoOXUKyGfPk4mFML7tWhMPDluwTylYoaqt6TfBwiOR8Z1OA1qRp6klsnSX+qP6tbnSRIE1l+Gk3rBQh51S1y6BCI7og2/tSdxAOsNhI8KUWRP+bo9zZYo5vh3GxQ4EK5oi1ytfSa2NY7SPhVMyzNo1Oz35g9Y4MVaUZTHhk2NPj2v448z4JgEWh18L3qHRMUD+FcYbwHLBoxhryM4NukWrkZ3o8WxDa++YizzNdb71a5lgTGnGUzDT0OwchV554240Dq6aEU2V3meC82y2CTohEbNbFOrzEu6zGyxScd5tXx1iwZMgwG7y0YVlKbDjoLTS9C+lEUuuf+pk1ZMjXWgGt2iTz6A8DlxHJ9RY4wtWB/Fit8A1AFmVEBISAnUg+maQZHCVeQbKjtbtEgtVuJJEZMHYnGV3SG03PoOpo18ZRR4iZEh/WGiUDyNA/BSKP2Ia24nUPhyXFY7Tdidk5Xn+rEl/XAmEC4Ru1ujsThgRp/jHQ1Q+1OaM6c7vE3zDtMCVoRqUiBsEf5W6HzvTlIVPCrpLOBLgV6hc89/fkt0eR52V2Yk5YIfIgHytqpNmp0RwwyInwrVhQ4nhVai76LY2t+ad+6c2LnusKEJlM0OZNrRsIkk2nQdpUth92RQvzl5XiD8cxpXhcp27AwYzbDtGRJ3k1axEF8cOJs2paGu6TkY2fws83t2UfgVjTgr7PMnUrUU9C6e2dJ1qt84EnBXmAd24fFhfXfHv57dZbucxnVL6u6uEMfLfcTx4bw0/on6i+GcJh0BJAgmLyLuQbClMfJNtdkC6JwN2gEImRQ29t8UWuJA97VdXWsL2PUW3rK4ys6/eHidwd5RZ05kCdrO47EFCdP105l62GFqnZDfhiylzXJcD4AgRtMUeNocVhktLc+oaHoVu49uuatJVyahpLyn6hPNOCrR4h+D/lISv53ML/AzoZfjIZe6SNV/8Gq9w6kSO0btDQEng9swEqH5Wf67exUQZE4CkRlzeIVpNz3c3k2PTXMDO+CQxi14B7sYcaAnXm3DYUDQX+OnVGuk552ib1M6bYOpfDY/XbhVntRAbWDQ8zQ5dqIcyBJVueuMBebek3ZAA9ZGS+shkE5Ou2so2N8KpF4CNlGVhbxNMa40r1j2l/nXDfKKprN9JTD+oA90eAQ6O6l8uxdfLeWbjyDHYDTNJcBerJU963sqOJ2atryu14PR1d0dLxyZxQLFJnizMLDcXZkN3SWxk+7xiWSvKUb1dmd0taHXD8GZW5+zIhn5mVGM6+a9J5KogilfK3iB51kliaZNWazpi+9q+VE1TeXKxAlq4cOHaIhGrO8Wm+Xyw1iI9a3mqw3eEZCzeo53TjlT3J2ROUKkYBYtWwM0sTVoIapM8n+LAHIsh4W3e5CEbpAyfRFfIK2AHEnZ4sPRKetIQpuJm7wUsaBV4Je+t3faXopMYADloa7HBIQ6F1zbjArpWBAijHnTv6JCt9w+8wGOEZeJ+oYGnWMxmILG04hVxvDNbfuHIJ+w1JyqZVzFTGWls24udMR6jTUuJP5SrAqZihSANi2EUfnhdbRnIGo4hh54XCn7pgGj6wDgwWn6udFMrlnsSCWGHB3ztWTUKc2I0xULiZ1jXcujttiYiJBTtOf4unZEnOuMNoSzCqDynEEkJpAAtzZpwu59E5VjUUU5IQ7BN8Vk8dKR1HI83SkjVOBtokEicnI29XIFFE9ajLBc+oCVQJuLi4mo/OCCJfZnKUhWBMDhY2SpVyxYN94Ze46TNOAK55wl2O2kAmS7VEMYlxUnUpSADoenhyObz4Wt0pDzkQI0tRiKKSGzEA4FxU4KR+TpCMzxckL/M+FLAkRkFj0KBsCQDhyZsKUrEAa6++bzl+vWDLiJTtQLZa4+CH1vj6sVZwW/boNRdWXkbXY0yALgJGFBVrPQuLuNB96+fwX6EvP+S8EgpseNFF6c1LafUxiNj6wNHl6yqwLDxbRkeM+C7xbHX2FDWqBh3BeRQ5jmzniRKam2m+dlzKoOiCiw6tSGeUwV57eWHtyuZouLozNn6D63eKbgLXhvga1lSur+p/0tb5TrEQ1ipVfm/j8cDWII8uDBVM98e+kS2cjHhz7scok63T8G8TL78SvnkJv/vtWbg4fllxppKOJ/Z8ltgo5rYp7W2qUFP/yaKGPeWzF6IwfQ3QzEeVY1t+WmlKWCLhVUAfMgkgbqT+uLYDueHn9ulE1KOTQ75M25Xfvh/wvPAVgHcrjf8HeQleROnxcsYaC3v8268ZAcI4lIqBa33hk+QhQtZFbM18mK7kZ0ax1ZPHjVmpDfofBtDpJGehCAz7b0ePiQHsXZXoGTmrW1PmKO8rmH7+ajRFFZVLJios2E9WryJi5Z2XC2idIS+65r+GUdkfaGPJ5EI2C9y3nI3egyYHFCfn9JG9o7cDerDYTsoMrlpV5bsBBxmfXuNhP24FuiEv2V2EBd9qdpOXNmBVK5YON6QobbhiioETvLPKkK6Vgf2hw/yVgr3HtoFmGqVkAox0aHdxVag5Z2zpAkarV1zjuZZ0Rxh27z8+P78VoZNL5gx1z31D23VtLz5zEy4j721GmHtgcxAh1fEOj2/fRe/I0H2rFvC/vTxNsjMBaGC7wxMUeWnYePd9A0r2el5hIljdzSMM5831sdunMHh2gq8MwdZ4MLyZhPcaM729nIaeNTlA6W0fCZZCf5qpsmO8L19CgWDMLxEl5zDcapiwxGM+Y29TLIlYhUyhuZ9ZxUm4nRtaFXue5w3gpzrDeZ3X9mYl9+uo5DdYT0wk1j5uh3vQVakMo5zGkP+8I7kJMfenAKAyzY3tpzrpBfAvfIj0TOVVusvA5X4pGHrCJbgasgksDGXpmMyjUa46IgdDGE8DXrVCjQLuF1eH4IMuCZ343P6asrq0MqnxBA5x7uIxOeelS+8GiJS6itJskxgfH16klVtC3ctttibgYfz375rXw5yJ0UCwuCckQBaRnsFIM24LuClhFSnhAE3NGuggAYfyDCOco9RBXfaABv53ZPBZGaZg9iL+avp81gdVGrxtFL1/vEa8GeGhYKS8dIqtBXBiJjQOtc2YzYDu4FHoSls2AYvBA+NXOKAUAc6Cn3a8CvF97OFyOHIX6o2JpdrBJqNy5lJMOzYSeC6VGDfNbNG+vOTFzPgFtleel+9M0hYWjgq75qBLinRrN9TFD9UEEj8nQ2q5pWdroWgxdW+qBM2iVt4CaUuZePFgSwu7hokIPabgXeElY6lPlZ2zyaU5uIZ1Xtd3YFzPMuML6KiX4Ch+1o6Z/A7AyPRXQGEsoKPFw0jGujZIXRTk4wZh3MW3PMoetuUxGKbv+6aZs2DscQqboUGuYaIiBaCLGTJ3PrtogLV61QkR14J0TfxM33nJlqfrTfx6XvFFvMV8vRCSStzYuBgIJsUfkSeWfWJS3KNVCmWmHbOycQDaqP+1Gx80RDUMPp4vZbA2t0jgsDFihP0ArYPlFVyLSmPvKwlLVnLLmFVIbGuGC+O1oTHGj+JpWO9ezqI3FBUcQlI7Y0b93OlaNezU4LNvBYxxdi7S7tWWAS/MFReQLr3q4x1rwXPKXXBHHVn9NClk/yOnv3SYYPZICGzgZxXlYLtAVKzN60U7mEWjBoGj989VAxWG9MOWSVnSfzCnZeAbbhUIEWAxOXweoxEd1Xmd/XZnPLpHd6GPm3M39ERk2v06q7kF+5qHasyzPJxlLqS4XLqyTXuR5ihzaVe9gTu6s35CALCtOus7TjAlF5pJ+Ig65hSZgso4NWEO4yCIIaBsPclznMLMyQlcyGHPXuXg/1IJf3z6kWK9Q7m517g9kESTbidSG/gIIpvqI53QhQFrlCxu/j9YL+Ir+tOyo356OY8pXPKZjLpqbwAaOmziyJrEUX3OQ4A/LXFdK7TDrtc/HbUxl2B/dmdzdaSOAdx9Hefzu+7CxYaxglChQJ28NIsdExa8lWQTo3rvu32Pgou69GUpbC6L6viSOloblGPyR/99qnW/hx4CpBZPgkYrgdoj8XP4sItybv3PM2poeyvMluZtzwloempRHpAddCg7lcIu+48Wq/ooIAJK6OF3QBTps2UJqc0kX6+qUk8Ez3dUUY3JrwOF1NdO4rvC0w/i28HTDg+JEkQJ3A2/MyNZIYIgNm7p1p8st11R3acXkbh1z6s6AOAfQ+fbaOxsZLD3Opwuf1NZ8Tci8SD5CQGtR6SrUG2eG5L7rciJ1TRpylxuASxguB0mu2VA2hbw7H8Rb/bamaH1LGjK5ogRzPJ44jRKJ7BcsK631kfgdygd8bK9o9yhyRyieI8jK5nfJVZaGbhv0wl50lWhVcrljE7nMPJxr9Qfamk/YwBi9/+ubQJHYaWUY/mDjO4hUZtNbofA0ChO5ShhpIQe14l9ZhkIKFAsbTxSnCJ+iIc5lMIMFSqHJi3lDVFAlKVQK5Ny5AxRF2fXCWnDhfQaS5b3mpKytvRCdDtTiEAoJm5WEagNTlTzu3oeHygkRSTqB4nkKluRxPAwR8Svd6BFDJ4rrY+88d8gio7o4GOOhUn3jgQ46bCi/mgCqg6fpERIKFH1BAa7qY9csHCfCTUBsgL2MMVdfvStbZ3v4l+Alt0GC2a7kg/8Ck+S6C81QtrvyyNZv0o35TsKoxzvVNhb+TcJAW2E35LlDh9Lo0oT2RLCq4kyEiZjoDPd/wejZcGckX6b7H7DGs8EbZV9Zny2yY7bMhuxzdpl5u7dF9pC17J8ss9dMcy++OF0yfbb18JoN7vudvuE/xwCG89zkQaFqnUOCot1m24p2HV5QjpK28iiwEQ3vBIsM7gp0i4sItbrk/VKbXasjsTIV9mchO5vuN096XQP7U5JDDz4qXv/yOHsrSR4m8PtdEnargmfMjSYvxzmHLNmc/T48GfKkxXYkRnVt+hG8MUCN3w5GQ54ay0J8CqNKEe4TxlLSByeNrDW/aqVwOdiWxEvWme9ZgDFbi6JGtL1CFV/o6iUZ1N2hOUh4FInKEATWzdA4JjSamFtAAJ+zttQC7U25HW+VrJg9zOYcJy/djxkWThIybHv5wvcwbL+EEgC4W1sDvMwWVjAe/sb2G+zS6jFU5lHG+S5TCe7etcbJQ+HuMFrP15XHq9SzsPc0WXZ0S1DvhfWrkpuE9nFVNjp6/JpAh6MB3wC4YAOOlLjzl8KsAep0+8BtUtZC8fUaIipu0DJWHlZylrhKkpfaxPpaIXRMvYZLj5s7dH+oGGThuc61tDRhvJCet5uAqRIrH1/Scs1QeLrVJPjtC5PqkvBg2Hg4z2NRa/s1jSgtQsfdShru9lN7w5wFpcY4m46VfBnGdsowCVLaKAvzPsv5u316gCOUcM3ECVIgfBoJvlZgit352NEFb81TMsGo8Woqil6vIV6NZJg2iEHNw2Yi0EzPcw3oVDxzTIrjhXjjvcXucIkEnIomOsiiDK5BOcAhLdoiCXClnB4+Hl+dlEDEaBJe/igC3fq1QwxtrcjiqSHH5slTmsybjJspT5K/djeG6nfbAOmFvLuVI9u7U5+qufOelmEeIHlTRJXUsnPFziF4zSRy/dXfn7Ead95dsokzhN8OnxcuF/PLOzbbDEzHRjarGRVPRcF9ArhOPfQQLxGeqpgcN/a0DPOc0ArzTxk/cq9gsLam3rk7bXB8b+sh2j3XZ+UcSFaBspo4rAClTKQVXo/aDpFJXXd6vd4DmCHB0aOvAHgDPze3OZG+ra8cKP71rdagYL3iRmJRwtNbWV4XXOEb3lPECOWxjEbR+R7WlWx/Uxi8YNeqaIYUkPTGwLr26N0kQNGc/+3aj283ivaE4/jOd3k5p0h2Aw3hOHcaR8+MNB+V0jXJo9zN2eJqVbFsXsamqYNKGaBgE6+YB62VOJEd7/wS2DCG1B2p3hIHjlCdcSt7+RlnUwQZVCXhruLKWUpnGwIuDDoLn1DpcdVxBOdgtWz085krqpjw3gPZaqI4f3U5SJc+VK//yjHkAKByFEf5RQm1q4mblzrl7i/f+MHfZ9nTso2sVgxSMQPpeiUyzje5Eyhezmkf74e0laHvGefmUTTfXk2JRlBQE94hFIwHwrLREF19CuKoHazdBVssNM2sEaoHZ1wF+jLHSEIA7TJtVWbM0XE0xGMBvSg3TL7qBduFSSVUkdhRe2GoVFWOsaxLGrhhXoxLwRqcMzOD5jJ0oXjFk/MU1hlb0ZEnOXpivqH1GDk5k29QtGK6ys5rOTY5SAcqeym/VJDNqKm/yGgRLk2U2yE2XZR2MwLOjR8oLousmvib6JRvhFwiVEDirUPqWZI24kxaHrnsotxNBhYLA0DKzpdCZiYxpkHg67BlWAqXJ5PFEUvdczJfby9UlFNDMQro2HZraCfiaFqz2ZQgUsOG+CFN/mELgy+booxE+0GR2UQE6xLdIXILLo3gpoFDv/IV7V2iSd65aLJZzWPlELgD3mb7PuZsflS55iHv9ZRG1AuYX46qvcmL3uHbX7WT1G//kybI63AMDLqDCGwfD0xzUFMvtoKYRG9vRTLBxQJeHkr81qXpP6IcuScWqU7JQXTdcSXL1E0lYQvpy2fbGtSlzq8pJl9PCiiy8zATE6JgwW6kwm+miJn3jOdg4tWxwaxsS6ljU9MJj9LrioFGhTylvGNsmQ7qTiGVIUEo6KC39HlLSeV2zCdunDbHFrv+F7T6g9S+qJpU2l4iOd8R8iU+EKEMy3V7tlLUVD/wcCA/QHIuevhumrvMYvp8G1kDCMxWHd5modYWAI538y4ILcGAvYVv+25osGv84e+zHi4ZLsiDKb1XuhUgEPfqtUidjosUfr1Ei70tppY/qBfdYb5uhG5b0FledY3fUjHkoYuXP4gweFXjcSI39Ipc7Ww62zpZULJV11lnV/mH91AhapW0AztUq1wKyxETQVhln5XjZRyGTjGpaw7AqzavHw3r07dr7l19USCzoeEuLrCGJLDkG/3av/CGLyRvOtZ81eR7oYqSjyoOT1jEDmQtTIIHKOu0Q6hOdJ8qKG2xfsladUeU4GmS692M8CZVTGTMSKPMsfchDa69MCJ79dRQRrNzzaEtrk/jBNTPhMSWY6aMT/6I57U2DS8bozNsOdblEeuIKFyhpWs2nM5NBq2RZvCSlik1nurr9YMx2kTkVkMSo5mRlteJGocTEA6MRkzmPFh56IingYgLb25qQ1FgDuLpP9a9F4bcSurwX2WdrNMaa40VVVF1JjoTvaneNF3hN4bg2Hrb2b/Q3hOsuAURoGF6Mm1iYud8MiqQpgRn5/skQ/jn7emSTuUCs845G0XfBZ7G/+gp8HCyMPSF8/uFTkI/OGh4L6oFHtSZna9Pekmnk+hN9Pm0iWHKTHzMccO9aXo+2W44+U19vg7tt7kog/ZHex36ceBBhmCcwrHHe/JjI7rbGUAuuNDNrCJOEv0Xfmwsq85vGIEHEOSbIHwLMYWaGOabzC2KUvlDZVacGF04W0bqQ7LBcc4MW289Qrgb5brCCnIrj7ByYdBFCryGskaLpqcIhfK6FBV0Ft6XTrz93uYlQPHIB1TuSXyBHp1ZeJGmNZxTV2wcW/s3H1vP7w5rOW1mc0Ytv7HSaJARaNoYC2T4Zjmjhivu/0x370X2ylshpnRFwi3xNrl9a3qZImXOl0V65vmChrC24Gza8XkRr/kU8cD4JH9LUeni/xsz7//qqqFjRBeebLIZkBVGQDYx/woGDeFtcvvW9FKY0k8LWfTMNuOynZiH/AoSJLLCngYjdQQSvxINpIEoYBNKfJ5sPUJ7RWRPkQcfdnAIgy9pBGPti6wJW6WbtcrpT+fDt+kWACud49OycZu2GD5fOKW4fnJzSoNER98RbHrmNITMPfjqR9OmEX4SRBF4aOqE+gxJsEP1d4cOXPhxN6cOmFsMZJRxrNT7h91EDT6ifS45fXs/H9JEEUXSG8Sj5RnbJHY7IItbUc5yXkOx6jpbObDRILCSAmXqWpWtOPihI7jpqj7wOQXcYKaHyAGs/tqe1K9XVRetg5FzwQvkWxzN2alUBNgDPxQynxonPdCWv8FFZqV0Wfm+rccD+0w+3L1BkOdCAUXEOh4dvgQf9Z2Waik9y9vE6ro9dTzr1kjEL/WHDfmAE3IfmP3s+O+cI7/b6g8+BGm0n6am098WhrZ2PP+IwIejaTM/7xvucKloR42V09177wFjmWBbsHwV6KC26wMazQuK7u0eRfkwr8HUCiv3pgG43GyA29PH+19G2bURVc2jYOgU1bHBvrqh1M6l5kOMVJFpnaLLbWDjVQKd9zpu97eur5Gn82w18ZcWcMKYqIa/egl+dBBzYUoT1yBqpwhe31OeXZ4pTclwJd3A1ClDKjrC8YbCOBu2l1Hl7JbQFTo+WV/vWmTYirpKd7Y3ipyLG4mXT6rj+ZdRf2XGkjFTvDzUeLiaHhTNUhrNgAlR8+gLaJmE+d+2I8CQ//Y7X57qWBacoRXcvpxTPNDAcu/6G9HGsiEo9A97BidrxxniRLcUsTYZwQZOKYCLR64QTEOF5XuNxEe2fnaldA/dEO3nTFXvPjD9ssDmeDwA4DxETt6vZeWnzjTfV3Hkab9wd48R4NvvbDOBDUwPXNHPbLuHBLbG9hq/39dXKqMCBMeBt2h6xuNBaRbv9ya6g02zZVRpsFisEl+pz5SLhTF3Mz++cgzvm4moCEOJbkr+gvxB3aIl7oPRZW3j7+8W60mTYG4u/w3hwa88VwlkdPgg5OmHljCxZ7sPVzd+uvrD7ZdpfxfTzk/4UN/oLHWtjYP+jp8zpir7x5Luw1GE6LrCsGTGEDdBfZ0UArSt4/mQufif3ftQi9W14c55vJzT9PjGg9FxHgs1z3TYYnCJVSbSxXVYTvdSce/Y/tvZOAXfi3HTsHe6DH62/c+beZ3nb9s6VnemQF6quu+0AYMKeNmrxWYahZpAYDa2ieXDHVmWI36bWpSZiM9JRmPgvRi3r8W4dUjroph/AZRQCl4Vnozu8a79mIpkUnjZdA/mZ0TTuKmm37fBk34N5uNt8k/WxsdUHmmnskMvWBylw8ctvAMZ9B2EW9AL02VB6SShiFZRZpU8nOAJWbz/lAfB4UxjyM7WFU0qD8edDW0IBnryaO34gkyMlgOuNOGCFjlGmZGTJuIOM+WceCSOIOCOdug5YaAJ/7T/pH2OT+PjshwcxNPKugGXBZtqz7sRz2K2fhAQBKAePr7bynaGe9HhPmc936ufhJPR4jtCgAK5CnuD8KJvSFi4rOAFf+u/iSO86mzx4OVVkauzTh8k1+DViHOXQcLCLN1lk1eCzMpQzBvWjPSdSqJBmYHfbkNTGMRDA+1fLeOm4M/b8N1ojPJbet+hsv60LXyAB1DA41dzlX5arJJCqBjWgl+hNURPZyDL89s2ECBqb3ZqIgbfcu9IFxs/P9p4TZY4bpRx+NMMRkuvGD8+FhDMqh1aKE35qLX2aOOCbj66aBwsUKch+Js9Q5M36BEPepyV4CMfAYJy+lKnWuSntePdhUb/2c9J488zHwWRR6/M4pagmuuRU5xCG/a0Q+nICzo53tE19tQjM6OT4pa2OYdyRE4sYsBIET0nHOmET/R0ROfzX62c3Lp9WuhBdJI6l3nv0t3s634mCxkIJKUeCZfCfsTN2FfNB5F3hABxxN5Qo0coz0SlIVzntqG0WyO8Uab5B56MLo/WBi/1Re9VeyybS9ZJ54pMcx8z3P+s9+iMPWd/4xgIQUjz0LQlu+vPVa841WEDhsw5491CEY6nn+babxjuD098EuSInutvGCt/jW68wfF3DMPd0+MUWQ2aHXT4GBR76Yp3f8R+vAM1n4By+9Pgk67Fn6BLMDe7jRB9dlookmRz35oiPPxPolqnQKCcgElC6E8RqKzJ+bZ5UZgwQQDKCZgkCIIAmCVAEAJgkiAIAk1AukxsA0tuVcBLVICXqAAvFQGuQU5ykpwfPbLJ4Qg5fh8vSbzXmAsJk2XYC58XZX03dOPvCTzkAwMKyzBU/oY/HrZhGLChArY9IeIbXdyo4fiLDk64SNg4w3cxjjtuozt/fRKWphccroK7dth+a8vbpB/rOSjNYg/fLlHy91bGqNuG56RM3Os7pOkf2GNT+XCBa1qj5YAXOmHohA5GTx5JERMlFBb0pLjnPSI9cHmHayI+C7UETR1XT3BZcKrj49cRv3P2aX/akWNdWIpFTY2q9a9wPR5ppmA4Q9DrhnoSQwzGlZ6oJi7h9Q8qxvfvWxmMTmngHYxS4V2zw4nOGiQ30ETfK61mzTfXPPMMxenbppyR58iM+hrylnb3uFbgHSZy7teTLzRl7khgbES0QmraxWEfIVKFv18YclCn/6eRjgnbGolNmZchHDqP2OZ1zqgoVT0oWtWStntMkPMqjRC4Bz7LBdvzc2koaOh7JESz3EvS1NEnyYiVFrfvLVcB7dJLi1HI7mme94jqI+xZPNU2aic7ZrOqRn2uNrC+A7oxPUdRfkz4iIrthavLPlFke1qmpWLTBtGcITIudwY5Sma0hrDM1OQOMOJkuBMMlTJ3qOVGfFLhlNWQtECOSnes5UVU9OxOtfwVA725i1puxUwHVJyi7c5iKqqAZCopQiOPmPqhuTBTZScz71LWi3OsV1PIJCluEZdBeVjbI6BFh9JY9Y+8aLdBSBEYExgn+FvjycGoGKEO7eBV2+s9Hk9Y0cBAuACxhgsUkhztIqqwpx6LO+kSFb1ZShuF/iSzJL3qtPLA7mIEDau15mXS1LErCglMkcVwD6Pc8+ISFbTFSnsAjjsxNc4qdVNdQ579aCjPaZc7fIBPhNrX7d8Jy62DpP2lY4ZLMGDwKpcLgy/5VF/2Sf8DYyX3o10htGuPwhBoprOKSJ8KCaTv9mc+5XgkZDrsOYWNir7B8Y3MtwRL84cccc7oOQdsQetAsLO3S7HpbYqZBLBecY+EO9RyIz6pdMpqSFogR8/uWMuLqOjNnWr5KwY6uItabsWMvchRQTI6Yngqm+I0MpJeHkr47cDKsLo83ppobHXI2plqt5QUaH8rFhq3m1Z0XXwNW29a4o8ekgj2F01ozYfNUlSMeC9NzG/FQlVQ23qBgWyO4ogcZsqY2O/+zgDRDKjC5FZcWhA4htOszK6WIE0EOAL8vkn90N1QI7i5mO81pRjXytvLFrXno/azrlAbXtrstIlOH74nqo+l3e/T5we8gqxgQ/5uultye8f5M9bOMGkrXVx0fz1bfBO0/lm48JbIWoCJyTKdg1l5sd5Zq0yDn9LmdCxpzLwH0BnQpRglwqPjkiJEWF2u1AC1cdVpLvPCCZzMIszlmbHd1BoVQRkCrtYyc4kVEVAeHfdYi0Tm2EHVDRG4qovNss5f4WA64YU+H3IN4N61uGYTLJ/x49WR1ac4dWpd8Ipp3f0nK1h4X9ZisFcvw7UcGtnsGFrxrFeiVHTal2jdgcTJcN0Fme2JXVngg0zxb6pKfoBMs0nomS9ATGlVveevVTcG8dTi+pDsNXvUVUViOeIyybpQErLgQ1OWpGl+xCRPa+p0XCl1qAw9tkBgCBrg0QyLDbHojLgdTR7W9YpVkLeBQbWL2SJbhaeAi+RIlpe1irSPibKP6BjzJmcu6I5iyRLTle79gZRZ69uV5ZnkO+BKBcBRU7o5CBw4j4c+uDR0ZYXzkf0Mr8tsIXcIKKoP2QhWcTp03RhmGKOG26enXLaWcdRZH8VcrY4R7BZ0oBSTSlUZpddRUqrCYr1v6qAEpPtuhnZnzQvgVIoEFsvv9wntQmHTAWu7rdniwEaXO6y8A+mrqUcRYLrKVBwlde56pgB8DHM7mBGgAhxQ0ntYcR8xfF5glvseX6hlg5+or5Aa9CA+xWxyR60O+AUdGSfZqFiJ14JRVgNTyep0EfcZnwyVLbTCtuP9odBI3paKhQBMF6UG4V1gvAWg2G/T8HtD1Mfmh0i3myRsSAHg6ceETWdr5aWgqpwyu2LKidpMSRlnpJ52eyq1pnrfzjireS6ZKNhrLHJ6u8ZSnI/YqKZbJ18go2JofFt9xxunFs/z3eNqQ5ZYOX2cqGA7FBu2jGZ2TjWxH1LrE6o4ryDwlqETu6E9vuabV4vGryWJRgxyv8fDuLpjAi9zdWUko+TaIxFVlDR688xnyt1ynEfEfTsV2shjj0dMjmD4gTAy2mHhpT0Bm37/YmxPg4tV1M6YRnARq23HMY9PwNIiUrssUkVxeXlViY4xXg0U0YEe2WzpQXX1zpkqzUxCqE/72IDNpgsnRa3tgZuq3vrTIB4WacFDzC5o3+SK9opBMaJm0p6mNbws63wZl1ui/2HpDNrHpTzj44bvgoLjSANTplxtLiAbbwNJBFec6VTEKRTyfBsQ0d4KWb41Et0WOU5B8rBTKkN5ZIZclDlIXpShImdXGCbZeYNW97do2Z2S1acIFCbRmoNLK06qAJm0BO032EgtYr8FEs93r9++tXAtMYKxKYvxINwZLqJRni77QAkCUH1rJsMDdpsYQdD6Phxx/nCqQSTEz4AdtR3efRNo4c1x3bzRdXp9LGskYVJI+U580TB7lOU/147ey0mSjmNFwgcktDg2mr9bKkX5NHsbQKYAz0d51Q5i9Olwqm55FyUKudziTPv5Qgtsr+k3pvCqQMmt6Jbqaei42bjWlCYq5jom0js8dN8WW+O/H8ohtTfzLO/kHndVXYfIyrc4imRPKpUHjcV82s8afh0f2p4Fz3+1/bfpjpI72eu5SN7/oFM+KUsqS797v/oMuUm9fFF8H2/q0stpws4pztYtiUQSgHBipRAnJYKHfPpV/xQRIRHKtuLpImR5buWFTJG4JeICa6kfMVCK79v9PPIBET2Pod6fzkzt10pdXDPYg/j6NVB2xXdrNN862YDx74OM2D60/sb2v35P7jf9/Zji+L1P4t2V/B+lq5P/RVvGhUlmXdzRJDCZRaIVJjp/2y4TbB1D5yHohccissx4E839KKzH/itJnzyegmundZSDJGn/KF3ZrXo7bZOpJlm0o8SNSl9k9v7PIt3pkhd7Cvp06YGEpdvgRriFX14ZSoCVckr4YHAPAiQxBe0CJycwV79dV+jPsxS9mkOShRZUskh0AL5eoTCapdGLOVuhPAYbHBpQDepeUCga9U+kCwXSRWloIL/krbpp6iAu9IurRzlMCn8GpOC3/0xhqDA9crXwjo97CVSEbjIMjv1dP1wdB/2Gwm/O+mbHSMVs1pzneDhKo5HPIusPAwU0kIcK3QOl4BE4A6u+Es5DR6XXqSLrpiS74aI3nWu8Eiph84orL6IUbKqsUEkxJfhMB7eYBqCw7jhd5xLjZ+OrmruU6t9QwmHpSMcANqbf2HmZgT8MM36Fj35D6cSaZYjC5d4+boPH4qgWfJXkOcyG4wly29nLbWkqKo4CEwdbqu1xcQOcveGKeTyxh81UPfvI+m0u99nKKrBg81BsVaaXaUSVEo6MZcbOZ1j5B5FMw/yABllDAgalUSQ/ppcIYyW4S6VMMXmJm3vXfOKzwC6RZ0PMOo8lxqmw9hSlNN0sUHSgP3yDiOQJCX1dJuEkfDFTkNMBqVq/cyUMgnsfMQjV02YWOK8KdWaut8JD0ACoH5lBvfbrOs/sljC9xVW05aWA8GrKBIY7GTcOtVPz/wAIiglvJ+XD/gJ7rd3sRtS1g9e4pdHdKSE2SCSs3CIjypBTiw1TZ60eaZ1EVo4JPBOxV3k5D0W6bGhXmbW/oNiObsekRQQg7AzYG9BTuNkqs2d5JMuRO0OQmOTGynKUGMAhwHW0eqVdQbwE9wHxJ69fTYoI8DNrvmPzs8pfsTE8fTKzWfEk1vaX9O2GmqJ8rjKRZh0Pxu9/wmRhuNZqwvEMkR81LR1PoDr4SaUp/A17kmRpS4DWS2fpgR3Shjm7dO+AxeXm7lCiSqST+snpHLSt/q99R9QI141rj5QL06id/zKRVYTyEZCMTzV9MTjO8wRoLYpHtQQOowetcArfIfWgQ2xhmEJCxCCJIRIihiVEvpJEXf+cPhcKqhAVa7NeNSjgHFA/rrr4zPUosuvLFjtNH14JUfBeetn64gQ+bXDJ8vzgBDxBceQo7m6vf4plhY1paffwuAEYPchCqir/E7VzePFf3xQkcae13BYWmeW7VoCGTbnmzD4dK+0Mbt6TLfFcGuwXUEg3Iyq9XFLDKEMa7VrgbsSKkiCiTV6ZWTF3Zu02+TqLdEKz4wMfq6aSPsUlPlZ1Xs/BAftz+nzAxp1J2buOInc6iRUCXSuDNsgqAfFwq2yej78TBxVz2LIFhjRAbBA9rtGcoZcEjxPzpIdx6nurIhYfy6IBq8VBOrSooJcBPswZE+z/wfrJWsEzFufd6RxdlIIdBgqy7dQ+/r+XFFFBiujptApEu6HlHUQSB7Wl0NqIvTaiJIUYbyTE8FLNjEmrQfYFWdkuEYGVrX93Y5nMOkRWvDpoJ3HKRy2P1v8vjdXKavQNBDIr5k+V/2riXjc0vm+8PslEA/6OamJQW8wJhxqO64S5R3L85oxQZQLokIiUnYzbDWZrl68eM9toZPSDhf2Zvciw7dCCOWNHEc2aHi9moRbfvnNMnN173NtefASopSBNoBcxgO3aVxsADKG1rG1ik22cla3Q9dCV2KDDBCS3BKtoRo7OnLj873QUedBJqR3JtZSoLELCx8KhDjTSvJ5GS0q6oaLUzdBYkGiSaoPmn4Hva0rCbo8N+lYHeD6Q3ugSok6TYgoJRTw+HmoMy6EpqfUvwo03GahrW2DWSBNcbTwZu1av+t/RR3/PMPlAOkxVoa4XBzaj0aJAKynAdSkb0bSfby6X5mvuUSUpLtKjDJd7GhIAgTNOwYp0PZJ49YsUH5AhK0tJS6waAdHl+mpMdiGLCpp648Ed+bYeXb8mknSBtzzR3PlzCtKuZUj1+9UR/QD8ywQ1hqFat3XLaZwHjHhgSSP5smc51zZWyv8DJGF/os7N3yWSM53ohJjSb6qwu4VyK/+eEwimvh5J2fVugzaKlpVgmRHA9TaC1xj3FXeuGtOCoDWyNByglicVXCgpEhUuKyz3v4ocpiipfT7SuKXyI5SGTneZIMbrOT0BRlhWWSoZdZG6rsl+DDAlHMOT9tw2MvudddwUQth2HXW2vZbm2qFaK5IhyrdlH7Mt95GBjrV38GASCugvMHyQBLIuiiGNSVof4OX9nOoRP1kTGYDTH4Izgj1TD+N/R7QEWMQdzFV1sCRHFyJrYNbXYvv0bMA5YzsibDryXPsO8RzkKHXIQez9Ev5MsYzMDySCBrXVQmkGcCwUK+dSEOgZ1vjOQBWgaCtROBdtRoJo0xz9VEsd1giBgospcIPRfaEyg/9hUP1yZdyOzWxy2720k0KCA3pAdctxLR2gYwHnPH5dxaqC0UqkAcKbJpib2VkbcDYe+cY5UIEhFaMvTSs6QfNp9+cCSWeuYZWpSS5CIZL+rt3gTxuwPHCvBytiyiorAcxgdWzwSHQK0IZFS6M9dmn1BOcXG+c6faoBIYEVRCaGcQnmvCMuVrpAR4RMi5WXK98XwoqFQdyEUAykwsW7Z/mRXEQroHJ8KvtMRerhLja0ih1zIhTO8n9TDAjG10JNt4NJCAkxAJHZv0vYi6yd9LR7pPEqkgjJuVs8GxDtnckTC1iG1hzIHQQJYU0XXwE0yHaDG9cy6YdscHHujPQxpALa+yqUsEAHUqxLpOeAWOwsnXs8mmcL6vPjflXzP2OUzu1cO2gscqO6oudSlGmwBJZgiIUwA46TFCphQjF6vQzs0PE5Ub3VgS+MPJiaBCpVg31UJv4SesrdOy+oK89B9FJvI8GJGc1JQhRulu3Ia6TYbBMEpzh5p9E1DbpCqdiCtgXjQSTry92ebubIYhtztqi1mrcrZEJ7bvJ7463IaxLoEoQ+oFhDb9gTxObNGLge9H8bO+PAa1JiblFcKjY1zvVC1qgcEyjWoSXm3t4wLgY13cOlHhjccb2Ib80dk8u0ePM6i3PAPz0jsVXcFhBVByPFIFcFeC8jqm/6bY6gDXQSkQKLmdhmVWSvp0d3bx5ylFEnIag62vvpcGxb5h5hBVXlKdLPgsAebMnxwklDBrsfJb85Come8cEE90K0J/3A2j7+U59uat0MZpHR9OfNMNAjHarTbymzh5E450VsVH4MOEJS4ZbsrF8IHBa9qO0IIbRoNHIT31lGK6FuRFzBwojqtThiIZOd6/VGE647sEKIwwklMMcWi4VQhB/paPebCOqPnCUgHoTLKb0x05ZVAb4FTrMkrw80BU4JW8dSoRXeB4o3hU2mkjkx1o2V1aS4g4162pTR3hcNbBxu7Muqn7Ujc5zX7OAQfORUHzs3wTw0v6wGr4ucigB0TWgHujQadsK0zq5l2wjvfZPvDcYY2UmIWVCLsHRigivJpwR8CqmBxNJGxoMI1w+J/4/bUH9Cx4wTPHO8pAqejYotcWrWR34INO7sL9LfWFFG0x0Zb2DZKxiNI0/5FhimK9Es/bZzVvKTr4y9rehGUBROp+sv8MpLgpnLFdTtSDXqR59zJCheRDHCUO6CPVSy2nM/u7wuo+5RKaVFFG/LeGom/rNo2dWBWsxYJHDKEASuZqaNqpqBAQOpmwlW+09Yngqa3y+Sa1GfmTIx2U+wneAYriNY6vkrpjj0tM415RnztHPVICKpAc2xfhDrKAq3A/K8zqAGF9K4JQmknI0xuttbV5VJS9l8zAbrTn1lKyD8TLHoqd0iDFgS8yyVoLql11NNV4jpv/eXHwjBQh9j6wvpDOsv+ihFLHb66C4UEkq6wMpq3wFStX32ajA2viDIKtCkNPYLV03habQ1BFH12foZjHEZWqhVnm63eJovJrozYhascj3ZNDvj3wnKnJFkKLSn7EgajEKf0r9L3FgNjCfDoHj9zBXBMy2CdQ/gP/2Sy5wUy4MZtW85OBTZr7EBHwjvpDG9phIcjV0hA7zVv8lEFTS882a52EeCkZCIoZRS0GkeCDVntamZg1Ner4YAU0pISwSAY2KmIY3muuImqLiPhXEeaR7jpqoTDFg5Kk1ZBW44q3bpEf60CiK8RZksXzZvjY9JxxoBpWqYKOSj1C2YNUaDJNKV2k5FyeJEeFWnPGX0FHWUiQLSNp0SYDhg4g873i9CmLARLREEdyZYv633xx8fc/mbmBCUtAvR86l4k0hxahxiO14wVAIAnqV0KlIrvsrT8u/vMu2CcsnDVGBvQfKSnJHUHbsctmcpHJbA2vz59gr3IDlCTK5TkIHGm7FghbUScB+n8k31n6Z9mcX6aBTfLqdRDlOUYwZuZTGzZJU7HRd4YYQ4vztovOezLAxoZMR9pSiyERx1bjf7gtxgcWImgXHBZu6MRyC6Eaq88wbstDU5KY9qLQgIuIYF5wdWjaB1eb0b20tLsUJHwdwb/JwpDlMZnkbnIJHeXfqo1DTHhQegNh7OZw4xoq/sJ/jSCQnD4tlZ8bO7T2+d+8RCuSOyihoXAmhz8rsBKMIcwSkPy0cVlWmU0ns60/q8ntMwXZ/qCVjQnwBPXT6gmkGEAfLqcksLojuE4rPZl38vNhKNxSmp8ExNpPJTVb2q7YxrKD4Bkjy9YGMsSETlogGwBkNrts/BbPxhbC3IGuCpKO7vgqTBFVLZ0F2/GbkLhS+LLyNLuR+rDSCMNTnxR2OOpwFqyyOkU6lRQjjGDZ6PbvhOtOEYNV8Tix8ey/Vi/G/y9vfR6PyNzd9JAPTcxGCTfaSMOxBrYXDhwRLIggQbqJu3F4CK6t58MKU+o6npVlF89fOadm6BYl9gKCUMYABT5W/NIC0cU9ztaRB2kT4YVcrHeOrja39kNW0HA5g6egQGqDwnuGdNov0hXiavjH34c7vDqZqGEN7dUdPTzPQ247VFx8gke2xEUqcKadTVJUIu/Pk3vu6Qp2a9m015ECk3WDlKq5YdkQjBRWjTmLYvce458vwh4Eil9N0kk67c+eD8Q3BsRVPxgTZfw5kJlhQLC7GLeRqINanrMX7kw2PRj62YDXjltltLQFNs/QbFkvILgGO8YGANVXza4Etp/TNHovpdhTrMoeZVbPqlgW1o1dSmDX/zizGoBC47yjSePjSE59b1gL+a63wbFod5vD5R+hX7TfIRgdIgxibtb7UvyzM+Wt64cDFYsgImYMhrRQP+Q0MhfcGpK/WTBjpZOI9tb66moUy9aG1szbL6q47BY2m2njud74eJ1rkwrZPzmbTREgL5gb977gFUbmkCf8F/jIo8Gfk+tw3G51IQSBK1awjSeEt5LjZ//rdMTRLILAcWnNld0v81/cMS0EGAbtIaUSXS7KbkajFse50dllmiMd+esr+Nsan/lWaS15WcUsxGke44p0Otc+Pi3IbrGixRxkajGJ4CY8PoyrhNBzFktK9GfjJTIOj4BeihCvDTPu2QR3vj5/xnw6+4ua+W37707mf9gVDu9WmexVSNQcXyS502v1EziCsBAY7YALovuTBOLipg6gcjpTfgC/vVMB80WAamlGseiW7QPODV5khaEvQeVMJpvEOGpnViplIsUD6uW8FIWlsiXNNV/JJNnYHFhuXneqk8S+qDVzUf8pDyisGz8BiPXMLL+OeQQPJhEUDeSUs9yhtHHDceLcXLnr2fTxjmdueFhL3G3YImFcbO7ecAN7q0b1yAjxYWQ3ZDY8X69pbljOYn1zJnlrtDkwWg1U+6xb23TOLQaHC9kUcQo65xtdhCZFTeMZ/Kv7H1m7vYiiT5nj0RsrWjL9x4BhvoN548NkHuSz/Ew4u2CRCESyDRRqT4vM4x+OKSBe2dTiULtafNX5h7LtphamQPhzl6Ihruyh8Oht2z9J3aybF3d1jO046ruVPsx4mnIHv4o/f2gVQxTNvreQV4tymW43QEQT/BN89CJVhA9048oEAdSuw1LtEfyrkrmpTvnIYhts6IBFW+wFpvNakxtmPKCuLXBSMEewgns0gDa16kxHPZi8MW6CxuzYD16oE2vg73w1QUcqIX5+ziiJQqWaQXfE4jKr4+tKJwjlgyJy1BdGIySy6cHxVFGc/9+5OMjs/ZHlmHgn7n5DbE9zRDdFkDNX2MixJlz8dCLpLAOWTQsadPmmREAynWX7Rq7CvLCnULmJb8COf2hnnItkZc21nupUMSgvcoF2GtAiE/ECRPnjjDp20W1M7W6LwDvjw963ozYNABCILRSoAtZKcebGDnLOfNTzp9ht3kOJNdWCu6cDpY5hzs3w5KmedPAQfjVjqldMMnGdL6/AN22vP7rdb7E5rCwtkQktjhJe6eRgsO/YsPgpzGSOI4z/f4N/OQRuIQd0SMcO8Cd2wfTrRnt+VR48/tbL79csIOONLXspii95+HeeZknpx8mZChfl/unKVuM/x7xdpUhTX5B5bcHLVwRxlMjMHBNx9LGq3U2E6JP2D8IbyQaAA/4mWL3E+UrKjkJT53mdPrTknXJuwXejJbw9HPm4gQO615givgM/9w6FRkWbxbKhnPCB1rnpMgA+yFcuILyoUVcm5KuKlkE/fwXuOeccv3tjf867jwqvN1Kd6S09t0EMLdMk9yzc4Z7cox2E4ZOPEfQy+BLXD35yMcToQb/z1+2bbOcd52aGUq4du4rkTCRjYGEcKS10C3zohgmQz9F4faesjDxOZe9YKCzhpjinRYiUb86U0vc2zYjLMLeK6rPWefAystU2kpubkrxmwJfH7zIOmbjCRrGk8PN0Kt2VG0/azjv5r++ZCoagqFdKmsvC0wLiPMF0RvUa5kCdGfRdrBOqmRERt8adSjNibLJ4eJerL5Q7t/NHXzzldmbwCFjwU2WJpxB4YPwS0TetbQVsFIkPti5IY43xixiczexYxaS41DEWwQn8kzH6+mQ3zs1P2IddliYe6sXRflbiesquDMwtJwmyf0AbC824DgMuadDBMjLihtfnicfJYRegZ8R4ZORmpk/uT1c6YRQ6my8gTqj6l+4oOSxWt+igYhXLAsqAcTmjXWIajW8jyxoDDNgRdM6ADOqD0zyzvlkSI9JCrdUINKccpyWuKSfRRvfRalnf9CA+/YR/Az8FIHndJAvQIq42YCXNyTM1zqP3Zr9stl2pFR0doh7pd1AlIgW7FNAZumPsiNppEc/BPSCYK60lEaDwN1bYhTHyWZSgVuiza7vHbqUdrGUuqq7tyOOVrYZkLu2R5hBTvrUzvTE5Gidpmcgauus9NjZWunvsWLN7OcUDzzMiCgZoAi7yVkEQSKXGIQWsjxF2OKYsrqB+va3GpfyOaUZkKiH1oqi3N3EKU1TR7ZyNyLj9Iw+sX4V5r/eK39l1t4WFgU7wGKxb4yd9dLIRTFWBSScGJZhpo0gxByhOokAVfxhWUjxeLAX1RTEvLKiMuCe8TMquTc6bS6WmxQ84vWzhplPFnS4mDfJdrGLzRrnpUf0mosZIQUsgibLN1WFUOi+ijLonXioLZVu407NmdBWWOIJEtFTQzQ1t7UnqZ1dpVE0uP0i8YW3nackrx6S9pmIWlWttdedfylWmGGsXm0ewhPG9Lmrb24V8q8dMs1CVsyEzA4nSFvpNUiLMqf69DZYtUHW8E+ENGBWMOmsRRLCs3Swpv8IUXlBh00zeowPn3aQeHLx2AZ4Q9JzMIlJgtG9rzM5g4m5wBQp9VP7Z2GeYUyAlGz367VOr7wKp3M3QkchxbU9kPIKGVs6qXniDebB1vp6qoX2keRbbvfEWzEVukRE9Tj1aFB3qGwW/YPA+D0duEPN/KFmDvNuqXlv2ZY8SwMLnUvquSUvka5nRRWmjMDUp0BfdxOiosmAltjd6H2LLvDiqQC1/owHccl70DY/GOApi4NvT8OJTzY7WiYVthcPrjrA+IPvQlU875s4QKES7n/zsn+x14eH499/w/QYD0m+YTYUMfpgTXxzywcKuJy/2lnGT7ZIkf7H8cWGRS3pzWGnYRiHfZtQ9ml3Z213brkeE+fDHccavR/SvgiZ+0GiXiEq6ffG9WhjMlga4H8FVCFMiVCx44tkVmWgu6cSUNNRTbbo2ENujjfr4K34moJgburcw0viTtt47jJ+Ohvutcayu58VXAn8ljpeTLMAUHeFEMWoREos/LzH2niT9xWLOTNbdBgdy8f4cmtcpgCe3qnu5XK7RIXWSx5c3492kWeBmSgLWhGQIVaD0jQ2o1ZcFAcdAggULARNCNpK/yQ0aBh4j+fyd2/s9ZZeis3URSAnoo0VE7ChqAmyYxpxfATp/VqahTAuyZzKB2HTsy19uxU/R8As5RgjdO0/UJEKqELtrOCZRf2CdNx+3GvxxD5ZHPHW4kxU7u3Ev4soFTIPW+pSEHYFzY063ksV633LF8Vd3lSuOhjVMidWmKTZGbfM05to18WjF+CzXKGSppyvh2KEhPaRaPF4WQ7+jecoCmB+fSadvEWadwDmCQLHyToKX2xDcr7NG+4PCPiKaIsVQaAjnVQYmWDCqKq8ONjayMTynWCzIZtyGdiNcQ3KUTfE9VkK9YTOZxXW7Nj9+OMeMxcPtng8aCIU5odvpKNoxcYWuwF9VdFypJ8UZTzXJ+FKB4jtRwIEsU3OBIcq3MRamvHlo+mbpRjL8cZfEyVTzZ2qBwbaMvHoeujYLU33c0KJrhF9eSPcLYYgaMwJuA68LvLqAz/vPNVQEhkAjOfXiN9jkaY+MXMAc1qp5/uJOTNb9WF5MhfX3IN4ZEn99+wxl+Znijdsht/yPOqiOILYX5xzN/VLNnmwc0NWdplKDOHojEl+D/TMt+TmTjlPsyJPt+C+WtqwnzQsiH9sljpTen8S3lgwZC/h/lpjoR3N0UTmtumKkWbz7QjYI42hvrTTE38d4LV/Pz/ZOuwkePd2QxIyxu79fpNVmWKs5wyT5ta58gFWEdUAy4+JyhNM+4YzD1SD8FMz0hFyNjQwhY3HiyHRAkWSbnkifeCWyQ5oRsBzBwzWDejkFag/fnLNC+Dq6bH7QQYaUehG6x144DP6gxPUuFgSkcp1guLzUCsCU0yap7+EzoYt69xEXGVNKw6kQoevjiLzh5kI1GJla8eI4gNbftzw0Y8K6Ph318pFlFD+y2u4Iv1HG1DSS8y9JTBIu+03z8RLayruW3YwWhQJPbqBwYX+d1UXZgDQd+9ciGQQTYh5grvgC4+Y0xRHi19PlpglVlq+GErwy/BmAOyVzbYQmjbCc3n8l8GDbKFZryIjiEA6pEtt/EDj/h5MVWI6XHVlv4vjJeFAXYB+ndpytdTLgRwIdTq6J+ka2heFsbpferCdOT8eCnCKyIfRXy4UFppGf+BVf0ccxePzB2IjSyqUDD19eXiUBhJ9PcWhTvsgAgut77tpTGEdR5zHVe7aJWPcxUuAB2ZVoaCKDwPS89fRygu2rfvjOs70Uhy6MbQOF5oLTS4q2b8AdArTDIdQE8epW4wz06G+fsw9EqGTA+HryaTQKx9aFIy2nopH5b73jf7xKOgKFiQSSZOyhqkmDR1JaTOK0r5vZWJthhGxqsF1Tc4GNtrY+qctTRWPCyO2bfRYCfUOTiaCCWitUWTRpV1VnWWCLfjwkQAyeBRFLb9Cd2W4rZDq7XADTcYKSJqdeDWD5FJwDvbs6cY7AKUOYghgiroxPSK8J9GFDBnBLnclN7a9fLvmfTs7coQNp7rUp1mL4WkEIulNcU0Zs2UFhSnV6sBgMgWAmcMEH5b6b8SEDUtUBe3HKQmgdGTzwAZjBdglwBH/ZuGnPC/Fd4DMJWASRN6hTVDdDVu8iLIhdqL4w0Ae6++Hr7H768qD4dTdbHw8npId2GKe+VMsTe99ZaJu3x3PCMwouURofrxJwKLQzyRCgFtgoxlhdwU4YR1ot5uAJKu68eH69+fzrR3L7L4T1XtmMYsE6Hwp7lmkEpjOoDSMYLEOUurf6GEg/SVceCwF18ZrHGCLOwnbPQGHT6vXkYTthYRJfd7WkGa8s5KVFt3uFnFaDVbaxDtXHuzB0YzttYiYZcKkoal2cvEZt853oaaN8LeMVJNiNyBNi0M6so/9UPUg2qt1OiXWv2U172OWmrUnSbdKuhGkSIt9a0Vc2kJXaUKoaXLoqSXkhQeFgH/KrhVClIie90+wprgyU2oiSXzrBP8+WRZKrEi7RSSSyYTRnMczeHN0ZqjsZjaYmgxucWYKWoKQs0IKWm0TJ576X8Fsk3Ud+RIcTQXnqU+K9XsihLQfh3Nn7QVU7LuOxhSgwU6hGRuBhQD+4cC8+eWxigjiTsc+PVXM2K/D/4zziARfM5xCDSj//qBPyRb+j9bRt9Mjfh4LxU868KV9eI+4f/60f6RuKZSbIpQIOFSQUgbT3KLZP7jTVfQcdWR92YQDzZRSdihf3BYDp0SYWlaA5dSlGrPFuoyVa73ywfG7appqo1gir9Zv4tfF6aDhF4Z6xIBEcZcM481s63Jn5qAxrlktOcRNsiFYxrrYvGJnt329B7j57oxa3InjtfJEmBY7N60SvlPcyD+rqh7sIpMfEPjjt8lTH3H3WpwfEvSQb0TdgInjVaUDPpyF/x03A95j6+WB2x5e67ovMZnLnqtdmZSJlw1itzjlAwS673zME+x1dgzdNsQORaA8bE28l1JJzEC+7Oi3IO+TM2EEvbir0rAe8JSa66rJQejZd/KrpMQXrDZoJMoLR1PNJaA2Lq117SEJSWl67OBLb5ghsAXcffczwmHKJFEsZf+9pCwRO3Lz1UEVhHz41v8uZdNB6awJSRaZM1w3Dta41Sh1ni0IjSffGHhkpuRqD55zXrfsLTk59syycruZyo1PkQt5Nyrq5hBlBcDAdwgjR8QD/hFR9mkY92pPL8dRqYuJc+gHOQtNrnwce+TSIphGYw1VFFE0fMM2dmBb8VwqI0yon5ChcqKFiz2zQCA58Gaj+oyRSuA5qDH1QFvkQFP6i4cxQ/y7tCyMfTl9JfBhdEbx79pQect+DwEz1NVNIjoRfjaEg5LB+GPaWTT6bsCjv1t87godeON3SPT0J1Gabf+JHhvSLUh1F2OadckCsc9yCMsiPddU+u8RYi2F0kq9zApvHY+svUWISrS0PpaepvfzzzPXrgzqTtHUiUp3VJWuidtlf/Q68uARrrh741ZyEXDzbfUIJezsSpvZpOkUYK+XDwDamafPCoVez2nZDURmQk/yVYjovYiXKPqldEYPbcUT0ioNMSMRd7F7BDzWVamGDAt5DtsQ98bFO+Q8Ij5TIIEwPW2lNRM41CcuHLXpaQDtnHQD3WFhRu7ox5+Ue+F4+ZOTE8mpJOI+njylMCQd5nK7A98fBaFTPywIOQsNdBBnssk4hqndZTA3zmbyVkDfRUi3kChHFElDOdeqooEiooRhtUrAAjl3Ja4s18c72GF1eo3PnT5uSjhbSXdWPC5kbl0Q5PYdTtSMkL/6NxRG9w2+/VCepT3wD2++KnzHstrlSvpDdqVoeFkxuDdrtkXqI0MfE9CfcT0b7ckz34HSqLidduITCumu5WJRZAfd6Oyomk/AJNc91JI2g2TYdOYyEalOoJcTFVqR1Aj24vF2L5uCjHK5HBE4raazxSsDtXl3AYYmDHi0GOB8MR5DiVfO7WSY7GUZSagUi8pyEWKEc+v2+pSu0gYqrQpIONKrhNno9gkQzmranVDEWGDosB/OA3h9/qRCnas9kxaI2V4GaMM8RfgxGUEspPOw4+CKY7R4SmoZgZm8mT0BSJ7Il21H715DvItZ6thnODKdjCrieLRakfkajkGtz/U4EF/SqzmxBNHKnDhJIXItTnJkeQk51leTOq6lG2SphgF6i8Akd+9UtvH65x+vrib3Xmi18ENf69M8lAIwEEmOh5FnCkqQHomviYgwBoOdg/GOcTCO4ihIgivkHEc26KNAglPk7IzhOSAt/c7mG6JDnzch85Bi9sAyftKMzw6ZGmpGBkZ6kyuNOcUcKa+Fw6ONRL8N7AWk9twadxbVhhk4SwSOs6y0Y4W7OW07kXaehHMzQg1qYmI0HLxX1aqFEWll4nC01OeWpYJkwIFjeYESXPDsL24lPkMSbOc94XnmF9m1NRs78YzG9+t7dnjra2kFehsejpBEfxjIl8JBpKowVIpVOVdb6V1ePvMyXpSL43d6yo4ZGXJ8QJuFIzCdr3IqM1zT96o7l3pY4q3NO0S3ueHhsoWRg8rVrkfoWtuM2+MC3KL9cvK7U0t89898Hq4Fdu72DHwO18f3YyNW7Zev1nEt1jHCMpbkDk9jr9/irBHo01sVJTpbAuW/TUNfSn3HznexPDCdRrrwtdQxGR3cyMFrlhmyOeFXkdEll50uEk7RnBfqqRu/Wj3uh1b/ZF+Bcjfgt6ee9khD2y12BSRGazrVEX7ZuwKnWf78ugBNia3tRe0dP1+k5DZPvJ2ZhaGGONMd5nKPLpK0Zdn0suveccjSvduJvsp8DLZGh8pSrFYuPot1rSn6+oExq42HQ83NcXX1ZEO0goZMz2WJxfG9roi1FdAKpl6M0omw1Kw5wylh8D6aFCrKouCyAw9F3cyZ1TsN9t7yTzX9PGHd+b4zccarSRQGg/xkl6l4agQlxNFklfuxpWSyud0EOkU337JVKhi3x0jcVeWxx6S9m9AGKTJfrfb09MoyO0fiCxz3C9Jk5PrwjxUzebLET9uPNRpttQNwkql+NmOgbeqDVxgsxAbyzcMRTJ4ZKhzRMZDR6Z3jFGifLAf6qvOiAa3aLJ8SG++Dio8SRYpZQK+Ea3TVrrabZS5rwkoFW5Glh4Dq+b9YG6OABuRoE8rPFQ4oTDGirmoKUkNG5uI8LgMLooCz+YCueNf303fKK8XYjNr1HJh6zZEp5ERXaua+cDC/X6qL44OXf4sHUWAs2D3T7wREXkqx9m759tqS+Z8YgTCxHVXidLHxrSF0on8j4ThTmfqzvEK+Tx5Yiw+AD4Yay3mJ76Ke/bmQGP6Bx8PibrvcxXV+4+9DtdSbFbSmpujd7nLpPr+dk5Ded4AsINs/34ZK2F5rWNvltVWsgXjQM8v92Teh6zRPTBUpEbWFi18EVit5kekOus2fyZ7pAMiWLO0j9GQmhSNK21Itcj+shkWY8w/mbN95LWNg2rDtpPw9Oz1K8X9tQmp5BuYV3SHY8b2HHcS1d8ViV6vinFNkBQm1zgCvFZGZTK3pCYmXvlW6AuTjmqkvtZZ7ZoXtQMDroVFr2QiuURuqGpcp17ZOjpHa46PHLCr5rrSfQotERlUP39QiD4+XMWug8cXXaFUUoHFN3p6xSEoXOqnTCnVfoT0V2aGxc36F3w66/IE2tdtPOTh1VY6bIzcJX3+SUMs+znIJyENqzZ7m9Qs8NSqUkHDUC6Zu4E9Nd1sk3zHqfRRfNLErJ/H8TAcNP6KZVp3rIYnlmVcGV+XcZPw9EJPThq5J6eH8wQu8cSzhPyk/wxl4OnJ1Hn0O9Fb/kE08h6z/oqoHbpcJJWJxiD7WP1Vk5VS7rzavB72Q0Q/jY7p/dCIiRAbatsWPaWcYOfLkkRhCe3zY+Ik1OYv1bJzGjttJpUWH7e9X8a10J23Yd9J6I1yH7swrn2xqQTRbZRTxR9Q6bRBdG4FS4NUmiPg0NtpIq593AiKREeNcYASbdUJTlU3agzj9b1eSjXdBUun+dnthjtv6hwRavUfC7qx67wOb43M9er6tVdoodmbr0ArgqQ1VTdxfZ/LMm2xbvkQU5jmZWVWnPY21nkoVCOQ9qqDAG8iOvvuaTVUeBSN2FjMNEhDLWw2GwvQFs7Yosp8bXF7vY31TrQvx42Kc0oJlFpDKR8C1SZ8gj1nT242pM7gdrKW2Ky7/RKIjcxOh9vu9c6HTd8iIb1WnMUsUck1Wk+D15Bb58tirk8XdAMUvI6UIY457+wJL+oTv5uc2DQXPK+wJZYQcx+r/fuITcDbukTLaeOOvUGKMU/P+xpFQRu9GvaU7Tum+/v0vUkWrs+khVa5hB0/r/Gwe/EYFxNF63XTFxGWSow0RvaofTi5N8pK0DSm7L3IBPGq7PAVKUxVwKnwrFi7SRC5Q9B1ebUs2zesRnO52mJcOZN2Cc05PrugVTeQjrroBGTiwYn2ve//mW/Ycpo6Qc1Njie3ZGy9MYl7n3fl/A/kSuuTTEn342gn2vPgab6LnT4hMdGgeYXJ+5JkFuVeGZWjKl0NhdheQ2eSvFAZlm55/+MCK4t1TPaTsDXL53jWk1H2YOMLTDRZOKS4dOM4HiO8wZg5000aTmjQmJqi/iZhqdVCroysFmR1a6IyFM7c0BoZts1oDM/2cGGQiucInXUDO1a1jQ47Pl/ryQ2kGNoGHzZyZLHdE3QMbUUT2tbRlNNtiIz7ZnQKj0FPooFO/7uhfCiM6BBTbx7+B/Px0eh8KFxptNsvGqoApOklQZUO0w4JLBYLvAm41x2kXFEXBrVMEpVmHeUZJJRvVyg8J2ceyjONMOQxXaTrFs2PgBBdVw7qWKoJKhiaeeEFW4A1VNA/aGZWHfadFFYCLpGxInx9QfuGBpLgxvihkmS5SH+825Sd/uECuHv+HRuvcsGThJNA+VOKNDP2wmWceoPTr517Azwbp43caLdPALG2UTqMklKwXzi7NTSzaUeybjyuLDiiY6UQbxaM+rCwF13vVz7rPZ+cVQpMKaXyXIo7iq6VypUS8bCLoaETOVf0ykUUEteK0NGHuANRSf846C6Oe4KQefC3ZmCpoN4rSKHQanOaHrdmiF0KBCqsPF5YNCzFEZBR0XEQEUkAqpO+NrItQxHcjA19vLWxVaZj6BMWwBo4YIkNLDuHHg3JcXlBKAJ+x5URBJ33EnslPJLeSVIwHVV02WXW4Oz3tizclkkOjDkCI3Y3lP2cBvDoKI3qyh2iSvVY9NaOME4xTqM4zqlMp/u1IZGA3k10V0BXKPyFT5VM8PrM8vMEhxQ8fbmUschhBLA7P7QMDzpUh0oJOOor6lewgrEFbOE7QfXeFleoUXKzEs+jOX1m7KNMrVwhOjIXCnFA5UMr4OAGzYWxgWKxWzbCm8SZCIUWUpz5WQ+GK3F4FG3HsSHlH5rGnhN9sTO7J2mLpTjnyVWRcoC2xDQSNm7dq87unlkTVkkB4o9TID3X5omLqko9aUjYlXtXp3JtPTmaFaObIZdxnXVEIOT+95VvSfYPMsgd2lCAMZj13ByuRxUkdhD29mctMg7PmC7tjGy+83AqNOxu2aUrcd1NtzU1atczU0iKLF0SkwbRXsnN7fPk2WVSJuZSc/JYjOL9seVNez/3c446O8uCMJ/97nMw+rMnhcsZPgbT1tLo707WTj79IZ1qGad+ZFNA5d62Ta2X93T10VSKXvibpadM2oLDzIHrjGkAy6dwM9ag8Dx0A3M1Rv6m98VvYKrRGOW9Mteu0oG1o38kpzM2/PxfsPZPDnbuqQZtGysAj2Tcsr0518nUcEYp+n6eXguuzpzth8gceg6bhdMKWvzB02+TvMP4aA0bo7daXR9taHxk9IaLN8eJzOHtm2jhF/3czzRQJWr2vjao1vgIS3BuwupsyPgpxIH10RKf9IFe3uAuUxKxcRefhAnojMIqsO3AVHmId5XuRPAjs5swLS2K/n3SOONSfA2TsauVU0WJSeKO05kGPBJOK6ndnDvaKgY0V0sHe7+/rNrvu4lQ4iQxP3Dy3qQ0hcxS6cQ0isqVUJvML/Z5BNr+Ik61xtujuv7jSOlh4VNGb4EE9l/Bs5egI6nWp9fvRrQymjca6ucUw0Ts1cm9oMAO5cNam7ZjWBKBZuNtjY3TFek5ivRUlrdignD2jWCd6Zd22KyQfxGlN9GWASJ7rKvAXtl3UXUc/wIMaK5fzv2zLVf5uBWZZmKXwMiIft/AczJ0X4lMc8d01eKPITc0pQOSNhAlTblx5U1a+UFSU0/VHN4S/AVsH/6lPbVIyhzgr3lqPbI91t5D6fGb0fzDhsnVGHUS8q/kaZq6p0LBXu73+7XycNKF/HExmj7jE4qyC8I4Of1rRPyNXJLHScPJoboPm/M02iXH+EQcKbWfq+obOtkp14vdEEGxsG+llmp4fEk9osNqkUW6y2Oeyy/RM1eZynGU7b5bIdrJ5xq/fUOKv9OdMWLq4SXQZNEWvMejTcjQGMt5ZTPdU9jocvT7+FXXomRF72jm3G27jUy72PbaUSU3t4TwPpf1ucj697WNaIX0kiv3NCoxImfIatfFeUpLETg1kKWdwiaVEZVrs9OVLA51gZwmnigj/ip2/Ckl1PYBHnnyqxcm8FWZnlHe4VrEUzdgKoTxvo5i2Nl0WOEFIhqZU+mSok5BQkmErA5YmOrADgUBlVCnLdIjUDJMOoq7VFI9UIvr8epEz5iH9Dumq2MywOdmLZoIla8tsHcPCxBEjo43mdZ/i2bPxYMVI/Y7gdcOyMiauCUF21tATqjuK2AFugqpTWbSYh5dLrGCitVqAj7Wz7rU4nu1nNR9FmcvxLyQCtHIMyutq4I4MJq14KIiI6HRUaHB3Jk9QbIwW0JQT0cVlYcJxTJCJ8XarKeCURg3SiucdZwAH6e6cC/V9s6Gk9oogfnRU1FjSxa93j+LwrZRh8R0XgenzLzE/IjgI8eIlFBHv9HJMbiO8yypvne7uHmwgO220a6wOvGs8fBxjRamjWxNJ55eCK5QrSZ0SHULz+JxGnUY5A1tHK7w6eIiubshyf9J5utNI/pfEbQQrK39e6b5Fq+/UPH2L1PwmLf1+vv9V/i2fw+wLRts2YCNnp1fPa2fnP6ahiVwVIKPJTBx7/fH7edBqbsfo8jjHNwdbSkHN92sd/U5GdezbahAKg4ldqioM+xDyGCRNBnqVK/8eXMW7X0QFL9wxpX5mEJjSrhekskOUci+yMSH7fWCRPzEXM7qVXutQmgFOL4MckZSohCUJk7AYSoRwRbubZRkaRmYJYGeivTc0LIxJnX1Kr2HkU8ZmEifi9UleOFA/w4IwBF941Y1gk+F/6MNYj7sHnUgjm91TcG809CGIdJWBCyewlICn5UzZjYu/bgyOF9FMNzFxBuqQuQiVSWetu6JQ6Z+VVJeyAJRrzjuEB8pHYcUSb0JYzTKU50iZVVUVTLLHxc0W7PiRNTf3Gtxk8qBmjzfbn72U3pUciFF29quQ+7jmSAmEgkOVKfI5pRdK/vSJ57KrgQUCEuURjTgU3i0k7vWFNz/X55TAQitjTVjnxcQhbZHj1mxZwmll3trxxIdoDgzppPriJzAOZHDKtHES8O1C8Kb/uIoeN6G4793OP14opgGbz7tRbQFhHSymkpcqhw6CfSSiNNEwlKc93Tj5IVgTA5DpxaYJDkiQBWW1acR4r+pa+w3Zlqcf9cbxmElM5mURoRP7YWuqFKoWZ5HSjSaytQJynY9IVkEYZSEsGYD8+/GRvTXok1rkhzLKcdCzhxuJImpps24v81eRZkdAmxt+Qv9upR0XS+aP+gdls4UFaOJq2NuBhdhCEWtDHULi8CDPFFM5oKShwHijRbP/X0uix4YpGm/0800R4TG3YOqPZckOFuwgX1xlfgcFU5xZGiU0+7jxiXrH3TcMquQk0tGtyQ3FtY7ZuPsWfg0cjX8y1PtZRc94NM8YpxEm8exFvfKHNPA9vwk8g4lzGUXn+7NCnnik9uBOvbg9SNoC5gFdKsX2KuxPxvLSmn9jfx6eBzQODvsbPRzFIhwAlOqhrDJeBU4vgOgR4dvA91FVLaBGzM3vm6QXu4rtfaHbUUryY/m5oN4xX0qZivRD6SwKAMcx8w/darNdaLkG4+uFO3MJmDTyYxewXkKOmBLdWKL65OA9OLnF5HtLMTlcG0QEZluKlKFU8UkT41wzijEKgWJLRvsJyTBDG9owG15Qah0GRttfraxQEYYfYjsjL8xnA/+4pDF1sCantsT2Zd3bm5ld+AeTspWb3vbxzkbff3QbnJlJNSsWrE2cvtJW51rZSFr1ZFlcJwfD6ItbWwIlxS0xJVNxGjPDDG5vWwSxw2pG+0i0JZiqxHMWLIbwx2jFZM2/hL80KyMfnPXOATChvM0IEUFr8baPX5UFVFQiwgS5T0ocveEDC6vNkrhgdnnjmLjYGJRF4RW42bFKI/UrinRshBGYGIyaGuuBhA07OVRQf+Py60rH6KsjaT1YOK/gqOX2fB+6xfhVC36pbNPqd+Pap9K3ln1r2Lz8RAI2XghT/LZDbvn8FxOXtu78aqkTDj/Uj5zTSJYDEcBoTP0Pkq1WLjxO2PmhO7xA4UKCj+1Gi+ZxDQVLTabXpGg7e6G+1MKmb86/ZxkYvLNTMU9uHmvBnMif6+1Wtr5lFz2bZi3LwT0dKJIAhzUlWWVNtJXlSYBFieFO7ItsVufctEyjq+2KPXsqYzyPrbeOeN2WMTLptl1UjOHSsnKEBAEmCYFXcMlJ6Wt5BYTcmofbqv0filxCBA+SSazp+tJUV2i8ykpyNQ6TQSKpNf7UA593ez7NK6ZOFf4wlZ5TG30kW3+Klx4SbGTCpelwfwM6VkvPh0k20GOXmgrK3wp+5co8tCLXwzYiG4/fprebEyaFoPL63Ksvbh3R5yVPLbIlDNhOd00hAiNCbAgd+cR37HxpYNnLLE8wQjjk06vZtrJfYQvnXqnyQwnINtpnFK2EfBIstBq5hTUay7QWoin0FK7oqO/CCIFBikWynJye6zohsQnxQVXSfQuoFbR4QijNaCSkzc9BPDwdck8rSAprB3jmT7rsYBvqoSXC7ctIBKG1ySPDmic/LLNyBgj3AeWLAjDLP+AgD1amkPPa4RpqBMukYwrE7jJ+oDJqItc4/MzqlyhKaq/Y3uSkNJx4WSF6505l2MfnOO8P4rKT7XVd/yYjn8tU33kTDjOidF8RpXAA5rY6/8i2pktSYUG2iehNgpDqipMTSm+alnBDiC/OK3EkyZTctjD9tNgUwlJxxERNPxcETkFSkWjPUEUusW5sJaF0HrtOAnoGiD38wROkip04vsJwHJgQuIpXW1VnU0VC6vmmNerFSFd6I+n1zLc7kRVPY6woZSQ6JyGU+2jGx1UBNDvKdHkg3AFZEwC3Z1lH9oG1ibkPqCACJGmdQs842B3FqtP74bLh9zOpSNO3mAsn5e2OanNjf0asFGxJi/hv554eVaeRS+SY/TV1M4i+yJZqOeLtUm4D+y1LpXKNaaLqPkoM8n7AQuDMmdaxQ+laVx3HKC42JlJ8aozhaQ29pOoO8blFDN4Kyw6gYPaSTYeJl6e6T7v9bW7RhTNFivDNf0GXFAXkaJz7oUQW7SP7NjU5AQzLsSS/tG8Vkij007GzUfNd1u5jQY7k8BhwXuWGpoH8xcXYG/B2jQ9fHdcqdk5ZNmDpEGLKWPa0C6uzJNW1qRgIY6rwUiBQMhIxzkHb+1jDfBoorUaraOcxo15O9eJIVfUfafOC4SL8JkCXhhy09IDpJqw4x1W9FIFYdFiX6QXclk5rWeHvTMpAaOApkvR50LAnO3is49s085VYfxcrZnVvyvYaxQc/8KMgSUh99icsMSjzezbPvaAZw+kd55R0+t/kr+pI/lPrnHxjSudbSWumXAxhQkhSbRUqOxcsRYt4mYb729WSMSCoSzwqSggxwXFpJLrOWthAwRMV8Dcvd8rxq5cfeBJhBtS0AfHjcqzfh8V9igGgrdO/H/ZdTy4NhZH9pXpqfR0zs4guKWXUWo9cuH9ig+VG+fZ1BT/DYG6rcQYLtOgfWYz8CCu5xTL2p8iBEaVxKjSiI5yFKKdh+gBa4nNB2sIT/cTd6snpPmFDrCgah4Tjg91VHe1Ga4TifH1qO1tr7CwxBF/5NTK1444199vZOKQOEXQxy1Sx7B/iYUPOqRD9x1TKP/m2Lc8a9uzVcvqSAyIYssxi7I63lyRmGrf4PQ4ciD9cY5sjzGJiTo5GuVfWEAtOySZO3njPGjoh5aZ7zbPDMDFD6BxIVK5b96GgH3xhNgsQDPZmwVLDqAW1kbSQhlazWMVU4T0uK2oZaBaJzLIWYTtjeAQNVHvljBR5Ja06+kLob8kddUqUcszQ0HSDZ+v8jXTVIyd930CGP/dzR3buRRv9es7JvJlkkNPSkG/bVq8SU6TZBh6QEj5nsZdwSoGUCqNCrxS4pj4puX5j0uGuAG0mWURnyoUWkVbtbTeYPndWyrehsrBugZiewanbahUkQYV5BW1pa8NETMMaa76Vx9i3d1DCr2IDe/J4rN+20L3YTOd1M97MS1S5Q59DI8OUgPLK2Wknrl+fUSgPxXC6SMB1hYtta3P5u7Ar6PvCD8elpeLnEOMJmFyPDd4E1+ZMc784a1K3ysxBkyvDLv3bAkpPt26Wwgn3rtGk1byxBmFjj4eyROFLnpu/4tMKsh6WWbZDsT0x/B0lPxTLlUdIAYjjNS+pm7HT0XGxyHf9K/vuphqRAbR5/i7AEv6RqrxR2k5wB5xpfqMTkVReznsOQNiaKxWiyFIw8z3lxPCptD7MoMInDQ9+14iB+6jUwQaPV6P6Kmxw3KZOSkRumA7ygkiM1gwmNGPgvy2vSXY4LZYuYixKJiRXOWSmhv3s1GM4GWgIYdCP79c0uX1kIgxidLrgWCIsdykt+8bSyS6BX6npFY1qk4V51P70mAEV6bgKDMU6nps4LNNdYVtnGEaWr5JvBapiYOpCKZPzrtHs0cRsVaQ/xAY7CBg1KKP7BNrgcFc3mfDBxSd7nHcPxra2SKDrNCk4sfgqFLyXTp6fl8+re/geMhkfdeJW9MjJ/zlzXOK/f3xxwzvDNLtm72BEJejSNAFcqD9JMHhKr25t+hZPfx5qp6+hS99elIyhD/2bT7+2D/SogATAgaeyHKfHRmAxtnc8BPFbGv5IZpcIK1VR3nMvT7fsEIzvarUHxlOhVnHoabVTp7YfU/B1jOWt+ta2k3b803dHeVY1kn4s3eKaST6xHuKGEbBL/NI4ofaDqg+WClGG8kIZqU83fzxvutCGmXNJ0sUJpvUB8fGY31Yg/0Mcgw48qOSrNBhanLANo5Aru6LKZrE2YQ4dtVls/6fWDptjGy7BgaUutVEgJ5kRYqvjF4cBXK+rReEfveEZ16sW/uapzXlhJpTu4kP3e0p0lnr4gAHfGAxxTsOBo/k6kGjiiiiYM7E21334EX5clOxtg9ZYgyZsXdMVz7/zbBOpTQHxyDeM4MnVlHm1C8mfEH6kd33rJ3h+egSe6sNdKF4CwqNPKKpQqg1pwdSDSRkj1tFIOxjEYjy/O2rnLrJMxvUyMz+pNqyHXAaqx+AKUGEYH/PtNA+tFaeozeLaJ9haxmVi4nODHXyBX3p7uNVkfjiHtlCIOQQwodrWNYooUgH7G236CtRy9ZEeVKFmebFThF3tybbEd/SuhTar8Q+cWNoz6lR3rPeQeWAVMeoZv9OADu/RhgJ9PUJ0l3tnImZ3h7AZXJm+xoWvB2lcOkhDrTHw97itexQW/chzvWe5QfLWsemxd4EIeUl7uDK9ShRzC5az1q1eQYOyfR4Qjtsx5A4snriRSD/Icil3ghsVaumylwwWc/DHVpQNmUth7CW4pirjEWm4C3quI7kTQdvQzTTCybtFBLKshN3Au+Lf2+zsKf/i1p4m6SVRF1L0DRiLIBrxHMBS5PpznFp+BHXqRMj1MoK4qxA2tBpbH6MYeMRXQTChPP4LpSGTn9ElgwvnWXrRSJ4IIqHgNkDY5BfF8v2gpjla0PIZdMhNkzN9DEgxKSrjqgdw4E9gXri9Qv+HS53nPIF5HhedIbo7B4xLVO0eDcZRfEIJeCMBSwIUndLMRzKkbUQm1QwKlTRt4Z05LIl8Gz0mg6HDmcoZrG0LNvLCkjDUEkOl6F2vpaXzZ2mFpVdae0CHv1cENiAKCXdAZqOYfFbY/M/2OXBlsl+ppvDKfNO6wgreH1XEUuKCrGCQ16PWtShaQR3QD25rU+3j6uNlmVVgf7QsBIcjbDCDPw7jCE5AEtBegz0uKaUtEnKy0/lZRQHc4opzhdyZOEZMmDnLVKaKiUehjW3UdX9qIq0IAxQ/Jg0KtDgJkFN9VuJ2oS7RIgz1dS4DKXWqf/HX4IVnxrxqj/kpmkXfGtVoUlF4xcR8eJ/43JIhO7J+YGolXj/ABmz179DCAzuR5Ozdxu6uTchl0zeKRx+NNLffopeGRk8fvFRgA/q8qtUXXixf8DyL7kQhIcnCF4nb4TsQtvPIqbapiWBwPDehXby6dsg34Ot+LKOH9WFaB87Xvd1vWOojnhMd+J+CIUkP7WtshaX7pjzCtrHjoDlCfeOWhSCeywAwjjEI6fEHoqMci4U85KLYDFnDxjjmM8q8zt6r5cCmeL/MvY5a9iYR1198dYcwhvvAEA/yxklg/6iKKRE40q3XZimmFRQ6ZeXCtV70qzKMevxSgxlFPbZo2QKdAGLJZBtZB0FJUvsY54cY8Kv9NSLHdCYxIygPMmXbAYEUnNl6W27XIaq5enVTDHJHNRBa0+bAOkX26mfY+qSXzc3yLslGniTjMYaiXrL/uKzyQMYyyTySUfTFCNFPEpW+lBX/AejTVJj2QikbBkZ5Df+1DBHnqaqwg61w5WENf1zKTo5rYlmeJV7bDLOf8Hoz5Wt4GZuxROveASmLHNK8fCvM3FkCn3NV/oTdey0s5mrwZT4XOBB/6l/+5cLas1vw9AeUIglRU1FfDSjph5QyJ5P0muWNsXnYizEL2bxm3edeE4RFs+wVUZ4SaYlGywxmURGAZgxC/TJJp9Srvj4+PRKshC02VwaFolLotbHUlp6872QkBwwnQ7sFh0ue2Wp39Uv70FfJAPmz/Y6szDFLIkFU+5lM5Y+JseH4yCHF71TlEWmZONobYV49PyAhhK8LRHMUEvG5g0XUrsquUfzveYvzRt9OYHdsiFToJ7UVihbl4nzaae4SerJ+nekq5K3+iMNnrU05IrbKSTL1+2oSz/5MMZ2y2Ps3qefMdz5SICrpHrtzblI1EAeNVtWAyyODIC78VfDuwdxpCKXgaXeoEJHonLGbdTLdZkr9e472vNJmJnsAXqmybG9AGWVlJZyu8xC0UE3i3+M94HodSAD2dq2G4abYsQEI6USUbem0pRnK3pnxLIvHCTuUYo3u+JdnL/0mz+E0hbhVffHX7Y0U6VCOl9bZBqs1omdOwJRGjBRguXaZN1EsMpMMukZfjFRzeQGGS3hae7Pj6lP4g9bt1sS67rDA/jKqsk6C4ebMiesMBDfBM419A3V3r9cYH5hF8135mobeb+IzVNxpfmSyGvisTYxTQVL94WewvP1DFI98y2P/LD6Uky54t+plQkF3xfu056C9smKDizxxMqBbtmY3dZoJlfF5N/EIH7x4bZ8mDhVMhvDgrQerG2KRrQ2S+q2DYipc/IfsR//gilG/n2+xmmsvnPaB+b4tS63k6RwaeL04n3q8dO+sKnRhOIJf35aqtcmLXjDWXpeRdG3TLgT6bIaghHLxdi3vV9JVv9CIpnfJa1Do5HdWXaPoXh3ORbX4iQuCKL/xU2uZQn3Po0RD4JsYXGrvcjx1FkHUVMXn2tA/b5lactTXNWCRpySqcro9sCEpd/tOx/o5Tg1KTiWfW0ZOVnp7v26/GRlpvSeJNiV6Nd/nrgiKYo5kL+PbOP8OMab6Bh1fdYjofSodjLGUleeh4W8z3l4T2Uw/J0/6kzta9lwDEO0cT40c02e0I1wS6yB+MONWWlnVuoGCIsPe6zfMIPwLt4+FzDRZZHlQxMzRHgTP7J+6tKgeOzDdw/8D32HTGrWnS0bV9yVjM5GMPz/JpBvAHKmg+3nA3dGorW5XCE16xSG7CsKuKyspmh2+64v5mOQDercbMJ18qgb1cucKiVutyoEtdpDUgmxb3xniod1Misy48zyteLSYcbO7YOGxZsvQopipGaS13tce85MaMyYP2KJIGuYu2FFZvrWE/PXRrPGkcZKlLZxFq/MglWGTSbWVU0PflkUpqLaxyqspYm2rqVeA2OM+FgRmLkuozxex1iAcqO0Vv9gYgkZ/Jej+fMuLfxjntN/k98XOX63HVMrmLOaG0EnAssyfpuuOJNi4AtjKfr2GmUksbvDRBYWmc0E0FSTS3N4eWT2qk/hcUVykY+Mt2fFGK/6hJN21qIJP5p5zKZAjyYv2EgOpNRyzYhSshqt3d0bNT7MZipWmzx/QAEDlHHZjo8zIYIOMaugK4SLLaquZxrhlLcj5qDoibXmJQvsMJJyXQGnNNoliJdglM4oAhP48IHVqfLphA20PLqo4Q95r3cpFpo0uSXkqoKjX4mt4Z2gxfJndneogpNcXWTe1XjT5GX+QsFDdbHP7dTc156/X3afY+kA3WNAzRaZztueaOj9X59Y5L3vx1xxe54fOtGCKaUcMkA48MgfyY6pLsMczjl8z1yw6QvunUSGccf2OXQFS5eFk8BBTi8LojB0GodVGQ8DWl7lmuuBaBAXQlENpDDI56Gn5z2Q3lNXsgg9KX7K4bVxXnzdGZFvt6ZRsF6C3fP+KRXrMUTLcmBgWD0FUtG5jsPqdE6HGnuQYdjHj2rBJgZu9fLtRbXuZIW41cICCYsw5+1hV6jUEkUTcjMm+xrM4vIacqKLfZz9eF4+lVhsI35GyKPx4NmErZs05e1gERkLmtDqEvUx2tDnds/tZdNi7rh+l+Q3gXLwJKv9wiMvwIWHKvSgE6ZBjrZ/4yzvpsE9lfPpY0oZg7D0GJSP0LuWLBmESfucpLInLRBtQfoKxFo4Z12sJqUUn88A2wgOxdwNDTor6mhH4ErEcYHx+KIzt36qSuZ7Ud36m637lkf4Z7gc2z+10/ukjt/BcXANj7FfvxpkYFFjbGHI5ov3WEwL9naGUuviRyvvHRnbxxW9YZDnB3qIHyB7KS/2kugPTxGeeP1xadd7/l2KiiQTxOp1pSKSgKohKod5avOtYifFVteo14yYUk52C/84lcsdJy+zPsN9kqZaoLbNSCkfDe7tKSNGmcbCYlfbRqZ4djyQoKcyRwrXCR9gAynvlPOx1ApvBzM+1GMmmQcqC+TmTypck3mlS1ILWLUiCaQNehGRnIAT6wHwujp0WtIoWZUo6R3APml5rG/hHo5TiJlfFcOhCOVRwK8bSyRdRKscog3URyEeam2R68Dw8XVdi59R70Od0PKYC1PzTrr7vvLn/UaxxSpT6a/zmeAWiLYeoknHy+nGm5G9SvLDzGQw308ntSD3sclFGAU19nKmyoThhsgGJ9nPaeiuc4cap7uNiYdFhmXnobVVUhk0P9Zj6Xn+dQtfGgYLIGtK7Vj8Qw843YppHcP10bNoofVVvh8vwtoZy+4aMZUto8PVU0lIvqYTfVlVRYPLjETUA6Vi2UkTsqAdnKs+RW58KBDuCfFGBunKWTJgOfHIIwn4SMQlSjYmXtm1Ql2sijgmQrgoVav5Nv8/s4s1REzHashJ3WO9Zk+/5sfQ4/sAGSrvSmdUynR11UVa90RrJfPRwzFNcxe7GDpOd1nNqHvGbjIq8o9j22an9plruvxUoiWF0T3vMwsU+NN48cCWBRsiXt0J/Zspxh2UWFLFmi3ffrxgPnJvfelrddYHwwa7jSzeYK3yJbW4pEqF3dB6vVneSx35Nekmmdj2bynte105oenFezSgcGoY35KdQ9fno3x60ID5NRS38p3vqMUMjsRyKZcnP/uD6mvi/bFqkMH0G9G6GUQOtW0oC8uBE1mKHdUcQljE+B5rzBkqt7JsLnfXCyqYjNUHPT904R+R9oBkRFHM6HycsoBEOLvjLRhLZz7W91wAeBBzAw6ERSvoWn6R3fAYEQJHHqqrf5Fsp+yL45gw/5vyehipl/xVt8KJug//oSCrmnowe3SLwvsQxHB13RfHtaHPSoK71eCWvDYgpMHH3j2Qha1t2wD1ANdyKrIsupTOwlDRnLgOnJLoqm6qx3IQSylf36i1+nsrSpBFCXwYOJW0ot1jNdKOX8ddf1klVaLQdVxH6oPXYz7gQWhYAAJmJejR1QfC/XJb786As5QvDO+AJjwp5qBS+KCvfkIguTXF9fRrvUpUXuP3jknzevHCod29lBQc0nPLe9u1TF2rlzafGKIOq17fZH2nk2gLzJQd39+KEx+uL3TijzHnnf5eiETUVd0z9VhEztUJW1kDDAZX8du68RMcTww7y8I5nRz+l4iiA8bd0skKUWR53E6OEunsg5+GNBI3fmPiq3Z3FE5Pk3s0LfAl4X+g/eWT/zHrDEx2ydLgo3hY3GOkzIWaSkcf1RuiOe5eNHgYgOKRxqfxGxEeEoh72yDnMMG4rIYNpkMXk23y0PYkzG/PgtEAn+T0++x8LzeO46K1CDOZ4oBPnRVYtQvkk5Eey9PeFX6zS3sp+Xv85xxRfxLQlfKJvVPk5SCP6gUz+ba6FPQ37pR5TRRFPDBhgHU+INPqOMcNzJj5XXALJn7iEy7ypFM0JzqqpDrTI+9RBPEs5q2WDQuj7GqjXzCE3pPQdiapICVP5tzElXupZU1ktnQxucLSeyEdHTbxqPr7nak0uRTWp/Rn5FHNWwhIdOVc2bCBw/LnVTMEEi2qUzKisajQHst8iLF74BLh9eTczLfAaKfVkKD4E9f7QHGoyj5/gnZbaMEMvFeC28+Sa5MiEdOqfcqIUK3BgT4iGdoWY/+xbndKZ08xRbjt41Zwy3g8qYiL//tXubyxSod1vvjicbPI0E4ek7gcB/eIT88JVkKLOuZqnxGunNhXVQTimdL7Y0UbAvNFi28lEiGOdXhzHqc6WAe0XIZauVeDXOMPgSWjISzaz6RkG5e5l3zgQlCMfadlooaADwPbLG/RFawS/TXM1bWl7tFpPyV1y3cBTIffV8QhOGXkCaMV8HR0MDXOE574gZjWk5q/IrZh5tw1n3zCP3hcYnkuZdLUMXbzpPmjnR6kXjH2v7PGqBKOKndjefIdmMFhZ59E+7x7iej7hBNMIx7eRTqqN7i49QftE+Jl4dnomDaDr7j8t/FXNmPOD68JWzfNmPlRxoIIvv5DHRMeTKmYT8Jz3nwFsTGz+jwPtjAROfK/69dYAO/0rC5ZPdbqhDH3A6JAIbLq2yo63a5QhOtFR9BmgqoKz4rLdC3orhqHjp0YAbvf2VWdDdAZnKiMGkYeKTbjTnt//MkKi3a/6rg7m35uVG6Ihzce9MtTMMyEZ2X10+LlyBPWvV9Ev4hZRPlLtU9GVwO9U8QHnYrbMH+PSZ9K2iTz4DzMIppsYyCDbRmMKqPzHuwkJMcrB53lOO2vgmbOsPifA2kY9t976h7aYX1Ql6u919mUlsPUyvG9ozi6c4yyHppB9l62dKLJtfsRXF7ESfzAc4jrvbO7LbGrGmfDy8YsuZYRdygceQMoa4vAC0b13UUZu4tNQ07v46ooj6WwbPXgLgvJhMexUiwBARVzlv7CTFpoWPaJFjLzhiP7VQpCFSZiev3UaJYFdM55l1qnjocLxh8h1lS5zC8xiiHRd4ZFF/6BSJtY5ONrNVW4SahxzzRCG8JhgsMz0vklB8qYtILSuup8hmWd1gTBo0YSCbq2yV901KeJbWjrmsjtHtOrLQt/MlMaeg1sYIv4uQ/KsdJ39nGKxGpkH0+emXpHU6nxsgFriQ42Jgt2326Dgz10sSQTeGXSKi8SuwEpLXt5IPcUEHt8jTDKV8xZXoeGRboFvK47WSL9HZWyPtWQo1E162IuQbF9eopeYkXhUriOgwsl3YJY6+XckPQoVjKsk7B1NfhzSX8tDRNR4RUR64puDHReTAnCwSFVL8wLBlKcVzLzIOQH63SpdLwkZ8LkONXSc8PbyVkP/pTidoZ3sjWqWOB6MKgS1v/9VLn/4Tn3Z0qK0yrEQU5yo7jCBLJ5vDT8g/SUNyum6wmkSCidPTV26/T6hc+7T3fdB2dwqX91Ihhns0OcvXpIpY2zDr/wKl46KLoxyB9ES+6q/lqAefGXszRbGsFDQ9wncb8o7X8toyc8zAWQcE5ZWfvZRGEepXk7496KqyVMH2ka/f04qgfTvtmlIXqvebbKSArD7DKbQsVTkauBALPARCEgKvY5knimWh82efF5drayl3F6Y3M2z/wcxLFh8bwbtev6nPua8dMYJtEuvl2mWbFxHtvk2X6tTB+3IaNcx7yA0BzgIShyMt0SymlHp0wT5edljnOlrukNwUAvfSosMrEXBEEAQnMQBAEIzwFCIuUFQRAEuoS5bqfTW17Gc9HywJJU0TKM8mW6JAgw4iRkQAEgJa6wN8TzSJi4rODF84gjvOrslNzbqxnWMILwjFuXLF1CnthhRrhTGEchoLTWQ/crHfHr/rPyWhIU/3CeHBoEzwIr50rMokbm4EZoCGvUU7AC0whJTxGuNVcmeWm8ijGP/dxCGlPdGI+4yNG3GFHRih7PUZCVaMX4PBBqAmGSVdGLy71Ub6jbqybBKm0kzIB+Yy12lSMM7LoTsV4m+Y4tXwCBvXi2fYQUgg9LtN7vxgDK8gum/HzbydeNA5Yb7onSdHkpZjc5yVKUA5Y6q4eGodvHyp028x0vi+gxBem7lmSb6KpTr1ZzsKRQgn4XbrnjeGlF2q/JIjKEmXC2S5Dhfn5ZxJUOIbz26AxJulWN9+nn2MPrIJWLFjMq5x8hnse7M5Znl9ig/Cdj3a9QyjvxSNHzEl0oxBDl+88KZFOuL4nDmQ3EJDpj8Th1BIElbIIGAr/b4EKHmx8pSjduWi++m0f9TXGQuvDkrhYX18L62wsKH0Ed2jAMKZfZtIOfXaw5MAi2wBqb3et2tHzgtwnTLc4SR8zw/uFpeJZEpyu+k3kUpERAnnqNDRhJEvTg/aZS4NTxwQ5rVjtiGeHuzCriOXwhbcLcmpV2Rp0S4uA8IGY6ecNs/8WExRF7qO64PHvIFiyDg2BwFQLAsYS+GUnBCv+RUlDUWYVYlehV/9NaOYvya0uwL9SWS3IMrpYdMVvhCqG8LINHyY4hg/v72XsxVfsaJBDkiwvLN+PU2WhVO4YN2hkH0/SNMcE5iLB8iWxzzT0hc5S3wcwEQqax5PgdpoWx4jO6lP3AhzfUvaWKRhACG3b1BnROz2Iafeon25AlYVAQ06iQeHk2FQiBRVgYfsK+jJzlr7X23ODMPICvhWmMg6FjsBCaKNP048pnkUPBeMR3boB0rW6MQwnEPbGTdEPgcCzc2X7f2HuZCGYDI/WZpjHqORbFXs3PpOSbMTmLnK/nKHLXf83YX+Jewp8V2qOGsyCy/f4fYv8OhS3IilZ+T0iavUyvKZs+uBkZGBnEyXmVdIhesnVjvvgBq2hgFZHPX0GP4ke/RXYVW71k4KoriITYRbmjHJGuC7I7XCGuIBdOCCCZbANXRR2k6NLb62y0WybIBxs2MXJE9Vo1nfA/PT3B/r2EBq8rzRT/Umv1SFyOPxZaCTMdr7ytDVeH8mR6XFSkuG204yhKr6bok2c/9kH4ze8yOnorNLqxakYwG75S03FjXxSTHDKtAjJYYF1Zb83V7kXaEDpAbLtBsWpURf4+haK8uJMcdTupTDZ6m+0fA+LvXbskYLsklfVKupQYS6k3S0U37dbewamsk85eUabfJBZzeqGcs1Otipln8C2+cT+PoioB+Htxb7hI4sos12g8w6XGRCJZpo05UFm9uT1y40jw0KLxpfCpN4hFsCdPCvyNI6AA6B+Fw9gjhsXs5hea4LTRiJNNlTgxIRSpDMVp6NqaV80YxUnnQKZVSviAP6o6CinbxuveHt7AhW9Opylrx2fVhy18HR+L8EJ143kzT0VPo39x8Z3IJ7yJ16pM11zg+kaznZih3BWrZfL2/SoM5u/HHfCzOLCqSXqMtwF60EiZRqIijwAfJCjiew6Zz5u0gpsrcTPf43f6a4VkTZlypFhMuWK97Jwhq0zE+12hUETk62GsPgtlbV3n789bvxYRsDglQFWG7JqiTDYsBW1KMC/molJbsmYmgb2Qgudi0HGZ7AmsrK1BTyfKYxaH6WpWbXjq01KVMgQTt+gj7+g1MijqV9mCE+pQdAWaze4g+Vr/bd9LLRZIvBXZqvC9i1vxyZGLVfz7zkPXQ9HA/dlGb6bc3G3C6hXfvtLzjy0E+YjCFLKO8dNaWqpOc66dmHKMCqwBhahcS4tty7t+vOAy7W1ivM6mkS6dLiJU4P483EN8Dzv4hYlu8K4V6cppvgfZGkBjrr8LbyOTup3SItbI3/Pz5yU2TgxZje+Xx8prajF2K2UDmD2ro1I2JT/K1f3AUHpb4kL4J75qF+hCkI4SQyBRuZ5pjvF15PHP9+2Rv3v1ETgCRD76qUA6xgubzHUa9ni748nzcWXqRvslhLgvHSixxgfFFSI5XgeXAuuolcsvd4vfJF06YtzdvuyEIe1Lu5xvrDYeU6R03fMHL2tf/bjRRiJoavjiSa0hPYMr7U1G58x7TPEJYn3Dc2+xoRY6t6HJ9yTdhmIX0Tu5wGoPeimHGbWctPDXQP2Z69L0MPH8BVrnbv1S6ZGV8WfvDkxEs+s4CbkDWNI9hCc56FP1UWTgurKt64Yh30xIPoSAzV/jQ3rjKGYoO67PuB5g8jjsmOZj2TEUamtDJbKQbhjrkbIysJedwVhIsv7fEJGi8juCzw15KAhJzP5m0yNd1EIQL+DEcRE5ojR+q5ftw3hs3DaNee/C4coxSbiyZDNwts6Io/sQqfvlU8F2Y6V1VOqtUq2lWW5ftGZ6mqKmaK9NUV+uem7uHs3f9bkhYxsM2O/1x8cuN3dUOKm95uew2hwSk18mhQDo58KPT7AHqTJL5eutRnmdMxqql49ZM8BAxjRSy7dcab5N0jlyssOO1RWbMfPTQabkMHGzcNfKDpY6mfLtpxYMpFKFEWIG5MtJukxawl5UvpteCQ1q1GJ4cdoefBDg1KuTOvvR1nNmNkm884HjdMvdi3jMg7U95lkqiErIpPxD71nRk4NvttnLk4RHUvDeYvE6Uo04ChOBVI7e5kVFHJtPsDjdtKn9lmY2SEEPJKLPTsUC4fmmqk6JRb5XQGq1pVdFZ4y6V2sDrfPuAcek68aqeKksMwErx4FtMYjvbM6FOTKC9O5bMJBDDinX0xf/QlsJP6VOjnAPYv0dWlHMnu1JU0RJTGFJpWkAxcuITCMDzc1NsAQLljMNneMJ94jir5N+VArYzPCV9tojsZDnLUmt6dN2t6+0vw6hW/v69ErYOixLPKyQeJAKAH3UXtPNulF5xOCMrGJ2iWszJA7LYJZFo4MuwWopR49T8bvbt56WMaVnJ8OzXiuuBwNEabHolqQBDNhsILCUVCjZWzGbeo9HDjp6ZZLKlNk3rNUtwVqs2I0Oitgu7RiepuxUzx0qRKWboz5TJpjn90mahMe4d55WWIDwpr6jBVdK6IQCVtFFoxvtNCI6e1mVxSx3S+ZIXSi0kbNMAko9cidPfw2n/fdt6OjjJqa5JnDmmnaN27+62/kEHQPMHGVFtto80YuA7N9IvydagUfdhC4qPDjYDrz0crO26fiiuCSml/7hYoC++bQcGBp1jUp3X67pz2jJvaORB5w8E0+nQwchJJqIiYZTs8WE44/QlYcPij9inaoRIAFX/DGRs4B7Wrcp04QlX5uKvuK9ry9nUk2GE8vT5JDiFuoBL3nmZxwYVQgyvFTMBNxzQr9h6YngsRdjvos23Zx/ItJIQOCL52AJSuFK2X3hRYY/TPKzUxep8D7JU++pXm90GGM6PrrKUS1pDYsvu9wCwaHChudR562RcccHCkDi6Ll8S0IatH3V0q4p03tGtAssaKRpvU4Fllrjpu3TDeRUT4g47ZBRH+2bmmCEIU1k6Kmff6ofGwufjgUAyxZPsfetIb/F7xK2hjGkjqFkrbxgItwUhjRITTC3Bfc1O7oKTg20wPNxFXxt3c96wTIvr0nvsVU8LgiNfA2ijyu8RQtsPD9pulzwavEo/U5WSw8uyy4cncedigcpHvxVdqHlTWh6CxcFVH4FiLpgWo4LKSQvbcAUj5R0h2bv+dhPcjOiUKaiq9XIFGqMh9OyruN5aDDaiRfVtQMmntnHQ/cDpp+qCpgw40DHhQdmBLraIZSyd/0+xKV3luyXoamIjVpjQH1rVBsvgZUJUMINXmEgFUo7Rh3hfdTpNqAKyUKLDD8wjBwd563UUcjHz4W1oOynzbaq52R1g0lx06Qf3Kk3leGnMJJG/OLNW0PuS4PNlGpoHYvLBdjJiEHBvp8S+CBh7mYTfKVh9krvnPj+0gtgKfgjgT4fkZGj45RGwQK8RTWdcBqlgpIAHQpAIgqG46c5/vwHpgCvTDpp+TdhqiMuCBK+sbtp+TkYsBM2/ik35ZJvs0nLdt6BxnHXY3MMz5el56K4uFccek6Qf0d8cOL7agOW3cPTO1e7k8KfeKNlcHzepnLX5+2cz9jEnJEa8D4R52pVeaG2n2P6quUbZyxuDizPA4tjNjhR3INKY0oWMl3YJvHixLBU/gEosB9jYz9mrx0cM8AIj6CA0Sj5tN8Lg4kJSkr9N0TFm2c+Y+IgOx+lXRxSpYbE7rZqc+lY3I86RVn2mvw2OcpSgy56LD8B0psc2fS263MwtD+IhDnM8ZW/ZmGIbcAWNsfbrM9zKDsXVb6NYy4juSb99C8N5RO5i1bX0SPHsJC5ywG9fUmt9BLAnevYoNBOUvvw6HjsyuM/KEP7VQmbeujagu8Eyrr8gETmI9iyck00YK7IJrFi5mnpQbCVE1aHH/RyI1xwbVsM5akkJ9Qij5FwKNAdPtdUPMGXA1Sq0i70ZBTR3rJz07T/D7ewgZlAcpZB4vSp8LD5plsvLU1noW3dqqhNuSsfK+Nb5X/nyshwGJLkIqpS4JwY9MWXXo26gmmzfMIoYqLK3QywDJdNkRZsXOlc2FeZDhSJPQakWm8i8Tpuaat3LbBBYSes6nhv2BYjC1/pnTDaphcL08vo6tiIkaj4Bl6x1L3gwCcdjBxekNQKtb+QOAa4H+qmARWfmYf3shhJWcj2d0iVyAeguCT5QR2WpkuKHGtsY3W56u1Ik7ZNo14H7f/xM4rcz9vgmGTWApXahuJjUmJq49RNsqGdBaNlXb9RMFeH3lof4RZiY9/s2wqrQqihrcwnP+nkZiy+UDY7dl4rPHzAd9IXgvRvb9JX7vtb4dTtzgRF7DRrvKgcz9A3RANaqFMHGbbzkzpP4RAsocpXE29JtoXWp7RsrAeUjVeVjqUNLBmclyVs3ArxPi54aDrcHW67AtnCBpwPSIODMCbT8bnjsG8fJfVkU0dmae+RET8Bqhdyyb41xRCSLT/G2Qa6EUQdiKocS9IzozRD2K39K30FELy+FTiIO9+jYeSb3Cy1+eaHqPGQvBVYBzVCqjNFSoP7l+eXZtZWLSylwwZs8t2+h/sswGOnTf37FFMEvm7I/MnNYKa2iAQknItgu1mOZSsuRz6Lv28RNVp/Vbp3kfIoTJTGIBLHF4Wm/Zn0dMgj7XjQzrvXUje7YsiQPeMInlxyS7dyDmCqUuYYhMq6OCOxA5qLecnIa93/cyTup8wR38yQlUSkqImIcO2e5LWU5fOK7beeGuFZ05mBz/r3kyWY1te0yCS4HCKR51jmEgxS9NttgEUQAzk+eQbIUE4aVrpdKbpXFnndTd51MEzNASfFAXqgOugm+A0iD/Ih7CHBhNik4v8+xLqHGZRj5qd6vKq4UqygRRBsDpAxBvskAv11C2bOqqPjNYmXrskcOo3YhNAjxTvufAGVRcf0g2z2eFzuJn9hRM2qn51g4ZEpuLZe4KpMJuzUk3DR5imy2NJfoPYSdc/y2+vQSzecLIF03UfKt75XS0m7V559GLNFRLGNjXtUVaYnRbT7UCYn6Ko4MFkeh3sXQxoHvn0CaC5gBoo20zD6+lcFErs9nLMwW3NI6XxPh35GVrBkeBlHsceJcxW8tZtUAgsH4NGbNFRe6XrdJfhGiSasCJUZh7Cux+jgF8SFr9GdWIQNChpeisMNfL/8u2Mu0CDAEfGdB/1qXLalvJa+4PdnzK1Denz2WPqNhUaLUwlHNTGSwnGm/HmjpBMG1wClg6iwgWAJg2VhoAIBLFKZifNvdy4xihKjffN/J+xcXCFTIPKgO5Ak57jkbotiAapdMe4LlCkk8a0yu0xG4SxiH0DVdBR2gAqWr9GgHHRHcdwo2w/oz7AfMRbfry7OKmLBFMWz5kyG/mbRK3YLJCVBft/XbL++cdyXHKApxcQuvQGxkunpO9iJuK1y8igwPQvGh7Ppm5Tz10Cj5F6RRQY62WJ75Xs53g6bNIrSbY8n4RDFYQfwyxTMBuhZUxiMX9SIO40bOQaF0VvHyhu3QusEYSRLifdYIGxmmzLcELLtHFGDrQc8mYwpU042AEO2bd2Knu5+FgFed1zqw3SPPY7y9ReXEmT/C5t7DfPJRnBQZwkb80VQTNGkcxd6ec3iJh6+JZfefl1ox+s5lDlx9fbPaIVyZuT/cVe8pKUf+9dRxkjLaBNcs729WOyfr2LTffn4/fI/HWkX0wUv71jQRnbWtkC41CULtgZ1qqUKGZa63PPgw7aHsMBWLnBWlknZ7jugDgQzxA0hCwtllWso+MgJDefmsCcH63fDF0M2Dm5jwtHABSOQptdCvf3sT0qfq0hB9qFgea4/vsoOIe6Tk35YYk3z2IOdYBuHolLTNhatMJNmwFxlfeSYp4IpEkXIFIkiZI5HkK4SfEFbtSuih9X7Eo4sXxk0Up+gwhiKNjePnLwzqK+9DsJt9BbXaNedYt7j35u8tI037eu8zdnIZ3HnTUneyDm7JovWjIoyfFI1ZeBVhRgpKkA3/km/4Ytbf+KcivY56zt8m17vHjiGSCyQn6PAkv+LHW/JOcbdqaOhM7QPyZdB0a7Mv0LR2j0gktI4QFodxAmpdknB1ciCsZ3YGGVx2FKj/7ae8iWmVXto0e96sK2UAU65080WT68oolHc/2EaAB1kreK2Z0HojJ5DBHt5/no/ZkKXeIgoHmyuag8Xh2WIsTILFLChTr9adXk2OuqjVlc+NU6nF8om1OHm3RjWVoDmQiGoiHkH4/5eESW5xRHzW3ovFxozwYYFrNWhBJmoPTc7A15Yiw0iru1kzu6wCTB7nTwW3fBFFqwo63YouJkmING0mQaRX3juNc9ShtAuZgQVgVfDwkDYiemDkzks2Rrws++BTY47wSjrhSgD7AEELysJ31fjnBp65awAtlCM4ezHycuV31OxbnkG0+eDeyZxtQVjzaKaqr7e5NSsEuRlInOFWLpdYIvhEidDyFBj2w3PpVGvJ9kCg+QbxDR62v4lnY1zNc6CjJcgifNOuthwXgWuyvJtx/uaAqRTTMhOkaKP8V/J6c8VJn5JxfTYB8NobiGUII9069Y327Enj3PlD8Zn+lNL85efRQVZJvdo4gGqYdVgem3XKBJKoHo3+G76C+rUukhN1njeBgYXRQnbhBoP5vsmFI/aizbRLK2MnNwa+Oo6tHq7xetdf/42ZRSc4Ziu+H8etT4PScLkSlwjUDVBhtfQgObAVRrfqQn8aa/s8b4bMAtFxP5lLJ8O1ma2VhTHlXm/xUCAUVNQYjW0q44McEesvVIYCCXpeFG3pXb6slx0llPmZd/nTK7JhgwRcPSpzvBZ53bJxpPvdXXej4TvA0RV7zIpoXebqgkEJhNEVGx0khLRSVkBF0UKiCVMlKQQJ383JjZztvuv4vxHUph4ixdmRMXSta8SXIl0rHRWoPvUSBlcOpQdpmjEqkkxXFT4FA3oo+R5CDRc9iwhYpNR0qQJrPIYo+/zhW8U07ALGTHm0JZoYkbxjDL35K29Q3tjBXDlDpkVNJwQHNsG938u/fqheoP6gpsIhmH6j7v2qqm/0MkuXoBfl9QFw3cBg4/LjgOTzsCpJmC5RofasMtHLl1xQ5LSBMriiwb8CxQzm3mCP9BMnJ8D1HSOTkw4L3E8G3LVYtMGiN6Z8TZ1C+9pKPRxr8+rIqLp6RgVx/9R4wBV668EcEz1R/Gv48Kdi8OdSkhw4z2QDz+NWE/uV1V8IGfl5Owh48yFih4ew/r1N7BLDJR7n3aZsh4jdzUXpzaKgMiKse3276LsD60QqEfN7iuIdoK1ywURsMnayTI22EZzJWGsF10YVbSUdvhQlZYVL3gnWC+Kbgg22B5qtfK4CxS99x1EzTC73OP7DLIqmveMvqF9a0QLLvQ9QzR9svs0fbfVYLUVuGCDiJqbCB7ObQ2HF+mzqFECTYvtyng4AKzOe/ASeP70khMcsY7YTrpR3yDrYH3ji3gjcTsgRF7HL7iU93fk751NPbjuiqD9SoGORGiIOralcdMFvyRLlT02//RpSk7loSTnn1J+guqYiwsYS8H7W0XDwopQ2FEdx488EPtUFOdJTUa99yfY2+385btIJ3rf+k8hIsfZocf/cx6QWrC9eAuiF/nIIcNlkpiRoUJD++SoMgkl6KSZFC+dI5NJNLFI/QCjYAzXWlt4IfEdOaLRf9jfhv4PWUBZwIbeKrrBQT4DmwYH1ZSrSr49KSauBksUFJt8yRwSivPusPJE0GY5r4C/C7IICMknDSkENxlZIviOA4aqufPHSNFs/xv4WvxfN+iPZMODk7jwXzWPteh/fiD/mbMPV/vkS/CvtV2rVf5rSfmH/zZ/adr7H8NMg//r3JjElNMUb632v5aEP0sNah+L2uXyv/0NvbQq1YLSyoMbbRQc47fjmIcPFgRo7NRfg8v/mScEAdTR//08EjJJli3x80MUoYN6e7EiH1NQyh3ExSzd0hFtXJnBUZrT6dLi9G+vggu/z35vM6yB8i+t1LxTHZ/CtqNZPYHigSBY0ybH3KonCAfBTBq9T6S49dervOu5qZbc60ztUjn9LoVyzuZurmWB+zk87534tAKfIRvOW+8IXlXsPaLqAYoHCdyvXM5mq47gQWvBsUg6ULwNuFOl5pA9vQGWvzn1gkOTCHwier/7oTbYSq51/E/OIy7UHbQfYIuE8XDy0VPnhM4SDrhPtH9qWLkWYIpCQb7Erll4WkF7kf76iWiS0ut4zedecTZ+EV3K9TYpQtDy9QqcFZJjOvC/phzZsKhj1rBQlzLU8Ujp9etTtQWSI6jqdDz8zmEX+DPd5e/HtN3bUs63asRYeQG9c+5T7srzj5Va+GZy7BX76+PiSTWeXt3uwNavu8jl+wWOZtDceAueopBTdD8FmtcVflx/ebNbhycsV0xdsMXuIYe90FbWXJ9WPPiP/ZIU7NWaScfDVtmyv5qJtEs5TvBPa1iW2AnBrwuc4CX5X3L1SMnmkWAO9W+idbWj83SNonavhu16DjvvLynAg7QQvKTI683pUl0NeLVdTWSz+Osja/TW4eVKMkiXO90sPNSovtJ4s0n4a9H9Ff3ng4I2oO/pyn+e+snryU/feMuLZ4q39P5lCeLeH5KxaD1lHmvkyiENCvn/XYG917D9XXmsYTwXgjxl3vYFbt+7UWBUv5K3+CVhbYLdNeE0p2Qt8Soz+urE3eqAEZLYmlXz3lfqsOahVUGzzgucIUDBngIadxOFEw2yp91to1CLA59CCxz7N8azzgVerVCj2ddajvKgoA2NHrVictuRjja+bpbgcZHKX3r9Um0praUD6j3FZa/BnBZK8RI1ndtK4tMoLkG7RsPznWtgRifiLFoUdpusOkHgDtluXLZfodY4yXamHCzOgWE3in+qw6He7FsmtXA18Ki1ZUfOhWgd+J1a/LVjSPV1uUWv1gDWXT79/rwxPjslrE76sT4o4IpPqxRV0j89ro7kGMAhxSx0ysPqbXdinl5DLHDtcqgeVCpvuIECFPw7sA/sJ/L244OuXatIbdlpeCgLAcoz+0sRxGrVm4nuOx9gcvkwG29Fw3RqcS597jnMVrTuIcJL226h7r75sWKem6vtn/De7l0RlXOhI45hEJWnaCd8Zn+OkVwbWsryzmhK6T762s0onw7xkLfrr8cx/Cp/4ZVYbz9+mY9Jb7zdvQ9y1v9bIQr4ZYozK3qTabPAG296nNDORvHFmqnLeCOH31bxpWb4K4sTe65sTvwEzGaE1bRa4AMvsWOCb4Jb6xnKl+FgDu9tcTVkhueAv7bnMu/Q7kTxiRWBpbfKPjZgASO8fkiR82lWQWsHQL3+Xbri/+9gLE/W4bExzjeJb3oNVXYfd61lGI/j0bcd9IWGYT/gZ3ixvpUw3vl09O/we98+mLD4Xrur800uVv6XD6ZoSzdMqArz3jMfPJzXFy0R4AXOZGeGWxbGG2xslb/wRAX/4BkrZyVEGuMPQblUjql6dnBKNbJz7qkKro2/CKhKIDaskUTsWLsE4kBnsiQ6jypXxJIWWZMyrUsmtdyZPJCMJ5VH4sQB2RJnPLgoKdKZHEjKRuWd1HOCPkkjJ+cnqeDJ+J8CeqUfioYtdETdsXVeUw/8MP6gdp6VDqj8tl/CLVcDd1ZVdnCq1Qe7kW9endiVnFv1Sa3s1S646thbMFx3lFb94HrgL7dbLp2LyYFty+ePJJ4jzrX65WHkXqs1y5FfJpc0b1/gC1bORcmZ/srlLGtNNbQly9JUoJyPPRJgw0ePBvDChxovgDMLNw18V/yRNheoJH+l+C/gO1OPDdDAxx47QMlnxhtQx8cUGXDgpxRrwJJPx/5/MB2HlAo4VnxlquAoebav/+S8zFa5vsrbMntUWS7fjtko15P8UWV/+o+D/LvJ/qnBFR852hqGoshDkb4imXf9F9AWvxf4Hv7yXMh7Sp2ElFKmVEqfbJaoLgkWua8ulw7pK0FyD7pbwUdjAkz9GHmVsfQ5v3kYKg8VUcZNZ87e+J3G2Ux0rYsA+yEYjgvljbODoBcl1XFPNrTvVduVkxNCXfqZdN0DGsHuWfrQi8V+A2dJztrMJp1DdY8dWP1qmqx2zAgBEj1Sghg0D+4w73Tmx7GXBWNOFvyDE/FhMYvzcsoD878yzLg6mAQmNF0wt8XEpgdwrnafc+bqRZ8MkH8HhvyJMYcFCsU2X+ZF5KPuRjwP4iUEY+JuI8rxx6YtpAMwrTutQnl/uE7hdVD2miPYvDecxnQKGwIf4vySag36kZRU/lGuL7XJ9sLt40NnumeOU74IO8s5kz8NtDabYMZ3l0Rv4QLw2WQjrgO1QXsYoekqizYQ4DB2vzXq2HYJf0kkH62g7sMnp5ZHqgpsLNkTLYp7hqhtzv6JIUWi37AddSEhO73k6gj5UztKM9YCD8YSkrNjYE2ocG3YvZxUp88U+qJlMgwn0sZ/bVpGGvwBALftMaBWkAdEyXDUAijPRbvsWtIajMeJHaEClPkkbeZ+do2rA/5p3rtSJ1UnpLcNMhsnK/ij7Bh/DD3adowUX0JU4YTONgic+jIORxKSwvyqmodLSFpi/jEqLGX4DLjt35A4OhLJVw6rsvbOoXsLTBWxnZtp4yCQ3p/FnVdnru+MolgYmWf/jS8Gtif8dGpvyY8yXG13SWul6OU5qxgRKhseh9h9y5/DyONb7iBLNK0ER1EWrqIglxrz3jDakWJyHXg+D/Le8nRyZiusfJMcO41liOjoh5RjIwtIzs4zO51X2d4BeDE7hI1ZdS7OL+xlioD1Vc84SRKWQxKoSEfWIfHLQudRvdruUvgcwrceddI2FVUkFJXxreUluweg92efZy47X7aG9Gw3PSy8ObEEK8g8ifB1WNLzZgFW3ov4PY1Sr5vt9258un8NNFGjealLsIYobzy8+1zk5Sac0lETG0aARe6ixlz0sarZyR1CtpvFCoLu6WUb0iN9PodDzsgqInkuVY+Jmuxj1sytdDY/d7SVbabC/hOLwMKZRRU/fBixGTZwdF3isrRLI0XSYi+EVy8LWhXzPuPxBMCl5uQaee4AOi3JufSAqrsfjdqroZf6dzOgCY/pqvO2JNm7hCpUstKMU9ona0Dw6A8pHR+dcWVwniI7y/AOMG0wQ0TxR56oshRtsUiPL8ugeVzr2Q3eioQpJWpUnHjHD8rVK08073EtO6ULFfcIiRIdhfjHohs0IAhqK6LqonHwJ1WZqAHYYP/vzhHt2XfNUK0/ILL+5BzRPDliePL498YYHT0wpYden9fpIFstKRxOQtpy5M5b6yuAI722b35eoikxWtCb6SCGYRjG7c85TV7kP3bNz6Y7qu7Tb0Gn6+5w9ixhIFIBy/UIwVGIzH/M3pgwRLu86PXd9nN/d1L3nEodYIe2UGlKzW4JkyxnSaIVdZqNBNLbR19GIzCign6d4vMx1ROzaaS4dmEaClJCYg8dIsvS0H3vX/PHwLpzhFMO40mcNc90Zk4HZFczw0+w/ZIPMoQyzEPvesVAVFjEKEkTxYmE3nvySpK5BYHcsRSYskazoC5Ls9jzO6Yp3JAjZw+B+ZYmQZIL+HciM9hyJjST5vnhXM2wfPn45IX9MGUybUfgDmFAwp8Ti+pMXBJOEI97D9PGM3rxbZ61AeHdF6bnuQy7IyJJ3HjMDLl8hrkM7nMQtWB3GmhdjA+1kJXq+dH8SALpNr2h7KwFG2Dh9xqGjNTLwhYZTFEL369pS8yXeJjDpNnZ8w3dPkPYEKfnRtFHBkdpRNcNM61cNy8IvLJIDqVmjxeoKdHRM+qp6SBz+y7Ow1kDpxuEY7KKj+g+FHjpZ1VyyYaSYpw7os7eWyXpu+L4zhDGZe81cZSmb3wl96q9H1Pm36gJJfVVzvtYgRm3ksK9bFHk93XqsNNwijcS5BOqUU/fEm/uR/FmzTZIdx6RatM9kaRHx4S5g/qBLPLWI2667Qitd0fv11PAfHISxlvm0XkaQnJIVsNyQMda4PdI8s7y+F6Gis6twhNr4RNwqRIzMlx4e5/RwFnSsecSugDwbo+0eU02+uxOPzU8zHKo0Lz4qCjpl+xYd+NL7znUooGevC1U4q90n2YdcolKIJD5dcWGgOGz103IO+OLsnXsaYD/bD9oks1pdjl/Ezo6VBYfN587uBGT1YInOyKaH1eWiehR9WXMIhL2rPX29LBIMkQGdCZJjKewRykzaoEuOvcQL+XC98wPCETezp0eiUvrDqX5n4PIZVmi2CiZCAwXduI83tHIDxeFRvuh/oDEiOqRpMfzgMtrOTrZ6ywmgo1cOaGfQ4Ic3k6jEhkoiSalquPwBZgkMNDuO13mtGb+jrP10IIIjBmr2jwvi8yiF/efPePf5LkHgQueBo3v2tuzLUjNG2sQ6LAtPo8mVmAKLlDJCvld1AfMEUgTQkR2KijyQU06Gbrtexyfzbx82xEh2EknIcga5WaYCYrC78wPa/nPDgbO2XV6gkh/t5N35BpnSEcMWs7xPFfNuWkxhq9muz+dp5ceOnDRDlfau0jI/r7p2DqX6G00fWLBHHBO+OA6cZfGBkkupAhLL39swWJ8z7vk8tzMB6+Kc/O/8D7M2OWZrG8C6beGoGODJ21PMCKrcF10v+Yrorn1KwHZtmWaloRRN8tNgp8beqELbT8mCvkYJ81BtQnRy4U7YTadj4TgjPgThmEYRuwY7KxfdnehLUmjBVDMzJqIPlkA4bmLObh0e9hEORNUNIV5dHZyMYaOCay29OVVjAcc7a8icUaCf81q51lIpzW9i+AF4EeRlLBoUecXs9uJQ88V3R2eecHZQ37T/st76awmpoABRSwvdePgK4L2DjTgDRmGmYPAlvJONGSCcnEm304nqgofQ9RoytREer6PnyBJvm3kOuzIGESIXBV31QNVgqqxRELc6O/PAnv/dEAlDchuIVEbINczjD1HeUAlM8hN1dJvD1XZk7qc8X6Z/fyGR3h0PkiyTYwlQAbyQCqoh+ZEAlkjCGo+uJfqKoRs2JNL0tGUiLxayDzTsusPToCf3NoypNooKxG3+CI1LOKGYZK44r9n2GT79E/kvZZW1w5fDzcL+oUeVq5BHAKpJ4PimjOJ+15hpEqJ8cE6GFqraqyWrrRdsNv0wP3px1y6E2+zR2JeVM35LHwhUas1Aq5Br5mY8Hhr5cGNu3bFF7MAOSjbLPdZk9oPpwxKW92MDHGyfP/NmW/q0f2zzyRiXNEk8UlDHRcdei7co5Pw9oM7zKntM+jYyU0cJr7ZCFvF7jG0Ff623pZBqnl8jc/af24vxfvulygJXqXmybyDXcvcnnsFt4s24Qpp7Wa+g3zvojqoPku56zxEqV9waJReFm9UowrtRa9+0m7QwD8dhJUyTux/P5OrtSLxeCjw4wzxAljDiXB5iIJkCTZuyIzFQ7VMN1QF1TAEHH15vGfQz2yJHGqIvcitnCEqfyHT6DL9zlH7IyR2vKppCglEbe8vC+Gb/JxQr+pskRWXvLBr8NaYFsWc8CMx93aRSnN6u7ayLAr/SicN2sPKUY6Nb/CuMX8KfS73M2vaz4KW5wWmBYRDsDPqZqxGzxNsNbuRJzegMx1+eFKeM+HZjA87sbOAWHxJeyd0aO8XTVkw7qatsaxusQ3gSgf8hL5nAROMXe1A93aSOBXLuTk+1iVXvLiUcst8TnVfayE5aFIshQnW1sXtwompyez4rb8YBuqPindS+OMg4OFUY0N6KFftUl3wwie5K7XX7AdFr7dAFUdpLe+rNRszznluXluDHcBp+fMdE6oG4+IvZXL5c9OkUVbsiHK2nhz85pnvw7xUPqocpjfOT9FdYBKEFh7wVoos+tWJPwM8iV0kUSDwePWOvA3qoXPNGeV/nB2mQP/SVykPZ0Vf01BBdYUFLYnF1zi9fgBhycxtkaJBLxAPlZr6Cxhr2+5elMZuSZyUXuDTbDz0YHTcgNaQ914DTIo6mNG+dJ5rrCdx24/iGrmiHwQencSFzucuaDEuyljh6w/9sKzvU5ncL8ArbFbtvpXWsK5VmGiImHFeaTN+ckJFNotmFodhGIZvz1G/G+QO2Egv22uRYKLRcUQmcCWiagYfuI5seQ13RQBKGLCz3yTw8tmOQWfFAffff+L+O1c5pagbajBJYs24gGp/n/RAy+8kGi8W5OXQ1Zqio2IrMZNqajEz/9f/qH6GXY2PRnyYbDm5S9Pw1HD5KNxQ0FS0+r58APNPDL2V4lKwRF37IVxNgilmzj+9yTGPkfzDT8chAtj7Mv2hxLbU0IwV15ymH4iuPlxqrEMCnfJEyYzAt+kUIvbBt68f8NhWg70qNox6y2HBE3y4DAjGfiyoRwJOphg2yOPyVGGDUiOm8OWalYht3bX4+k4rZQnkNYhgljpXsoFlpiVsCgUhmiKvw8rIo5zidud00q0Yj6RwS5gcf1uCWHnrI+SvUA0xMwXnSDJQNgbjo6HcuNibOpKavGrsFs1QYFs1Ku65RnXKavkmXXBzpVta6pkk2xWo/dJ9wJT1pvaZGDmEmhngR985c7teNyyJYnBcizGOO9Xu26h+7cYyBaV1k5FXPqB663VQIMKosV4JfQeOZMQ+TmJ4GTqETmCAniuQYinLKB11Phas+YCE7f0opHF7jfsiWYQJkHKfwL49TlZURqlXN08h1OMGb+PZvArr/cFmng2Ehw41NdaXdRWXNMEhrJIYe+l4X1g+kS+f79/lyFQOF/jmrUOS3JJpDLYAmyrd94l1rEDg+hzYsf8+XaV4HyKcWlzUWHGJFys+3AAwPX7Dcxtfwgbryf2/x/z1OxzwjmlZHxFSaCFDiUAJInUiPoXFeHW9pVMo2vqc/Wmr84jT6/P4UvaRToWkDyttR9dLR9TrPrSJagjxaGqo69TmjfT9ysj8Ba0fp1qoTjR74w79A6sFZV6BgTr3G+JIT2wSATEB4beAsFGm4dDhhR19asst3A7T7fVasJI6gYYgVdq/o1WSGL41GGtPgVERN0ez0KCDUF7ZsnBPPppSTAIM1TO1EtTBdZ38IApSFv4bdxPUXHYzVS+XOQqUi3BoFvREn0A3VQ9rBM0Wnix/NUCK8NZhFN0nkxv6hMTUE5ucnQCr2bsoKMnZpnYTZ6OHSb9Dmeez8Oq9AsSQeiB4ieq+5afRogCdM8XX+WT4pkrHvyEgJPmJ4XhrBx/IRcp2wBc9DZfYbxqnyn6A5oLdETAcRA4KoCHnygZkNLXCh6P+D/KZhCa+vphPMs5y8343II9oPJ9LqC313Ng1DtCYFrrGOUFBfHg7Q1UvXDIY+q0vG1usbD7rj5Dc1fAC47iCELhMQ39vOXJNbAV2rmSvb2r8GKRYXlFSvHaOk+262wS11+w89NbGG+i3amQ6Kw6R3vL1Cs7dGJWWTiyF10cOpsPQgfno7qwLHIm56k2OalVgGIZhHOqaWqpybNMTInz1/69QCuw/9ttRzt+bPfTzFBW3BSsvWz1to5I6jHYJuj10M7YLhc0ChDXHVEEODUyX6nR0xR/3aJwjuAjlgULXXV0Dosh/yxrsSw8fDz4fn7/u4UF+Fxady86Vai+c+/LqdFtUm4kiyCfekziMNm33oXr5lo/AASda7UyrgRlfrRiCxewsyxMzkVsTR2x6/V6wUhn5P65CxADoyYQqMC5ZJ+LMLvJeBheicmOT849ilaqTN1DBX4kN7oEh/wviKandPOUnvOaUYwOxZSOrfrNsJHcesJPOdMhN0NmvOBwBK+WPHmA7Rqc1tFf04bn1JpkHaSmU4ry6MHP56XhTC54s+P7k/A7HuqpbQVP9gJ1KYRnetDEjtUp+bA0hsgm8iuJfVgeuPiuXAIHu5kgplDAXJmymRGjXTFI2/enZ5waZe3eUkJfCWZfD70XUFQDlGiXcRNKQd9HFFu92lP/EBqArQboLeBrIY2JM5Mf5Ofi3x+SxQiD8/fTlaWOWkazSeJlqnpg/GUUjPayQMFMOXO9EA5xJ6DT2IdjwQqxXHdflcyqtbRCdZNvNk7S7H1/PU6mCC4qAUp4RhcuC4qV7aDy4TPJfb7YGlXZzKnRinr/71ME/m8zj9mHhWG9xJzFdkZ50lS07qEg8uTkfzZUZ1xtClqvXe33bGW6hdfh68ulzxGuYScVXU67o/IulLhbpz5fIysUrYj60rfN6RY1TqJOSeHLqRw4kMl5b6t5agB/F+PkLgxM54XUktVHnsHhwuaAGojkO0XYCCngq8WrQ0A63e+co/+BU4Ok2fgV9Z4yWwrcXrCPAWlDs78fagOplkpDehXu4R1H4OtcOM9dkxk2DXxqtVKCqxERspAHLDXgS79wzzp7+fhRJ6eCYGCJRyCxoHVxAGYfNhiQTGOcOX2o7g4lu6sU4NroRNpvlQuAgcZNrXDR/MOx3SqSOvc4ZZOvrKY++0lwfPktBblh7y9iHzB5T0jalH4pzgbTNnn31QSEo9mOfYyQ8EvMA6N5K6JCDIGzmRpXlUtYIpBpnQlpNXkxvkUZmtfmT3FieYCcjHFE131P9+AaG6GSNyC1X56BpE7/KKU6n7LiaVqIY8OhhFwJzBsw+kT8QsoS7w2/VuZIHK+WIbt04B79fTkollVcUDRHg09gK1EpHfxJ4T8ZJzSsrsmIaQ4q2FOcN5UiXKXxZL0QispmX7Qrb44g4MfteK9PE9f9IUKIDHSgmQaXva72GivCHbLrOC8k1O966iQfIWb+vEIOoovALWWap400zQ055drdex27zj+bFIXnawCbUNL6VmoQAn3MJSEVwj+nWco/VuyyTfgalZZW2zH1JxNeEsaAXP/gSis2asRLxIQULhjwhylFccmDpKsH3k6gTRIPiAenKCXxB8Rlp5wTDhGJG6k7QehR/kAYniJLiHdKtEwgUZdKYgiGgyCJdZEF7RfHnkloWxA2KfZGus8B/KL6YNGfB8IMijJQfCNoSxX8mxUgQf1G8NunmA4HXKI4mTSPB8IjipkiXI0E7o/hhSV4SxBzFnZGuOgJHFB9N2nUEwzuKyUi9I2j3KH5b0tARxDHFo0m3HYEbivcmjX8KhiuKSyNdzATtG8U/S2ozQTyjeGGk65nADxTfTZpnguGAwkLKUdAExVmliIJ4QfFSSTejwB2Kg0pTFAxrFFdKuoyCtkfxb0kOBLFAca+kq4HARxSfVNoNBMMnip2S+kDQNih+L2kYCOKU4q1KtwOBCcWm0rgXDAlFV9JFK2h/UPxVUmsFcYfimZKuW4HfKL6qNLeC4YhiUFL+KmiXKP5XKQpB/EPxRqWbXwUeUZxUmgrBsEVxq6TLQtAuKH6p1BpCeWAZOLhObySo3OLA/hw71w2h1S3LwJXTGRoJGn5x4IunMzeEyi/LwL9H57aRoFziQHjs5BdCw4pl4N7pjF8kWq1w4D9PJyZC+cwy8Ml1LiaJyhcOvPZ0br4QWn2xDOycTpskGp5w4OjpTBOh8sQy8PvRuZ4kyj8cuDnHzuVEaDi3DLx1nXmSaHXOgR/OOlZCmVkGNtfJVaJS48Cdx85VT2hVswx0pxO9RMMHDnz0dHY9ofLBMvDX0blZJcoLHJg8dnpPaHhgGXjmdKZeotUDDvx2sTP0hPKHZeCr61z2EpUTDjx6Orc9odWJZWBwOv6doOEaB957OuO/QuWaZeB/17kqJyjfceDSY+eiFBr+swy8cZ1dOUGr/zjwz8VOK4XyjmXg5Dq9nKCyw4EXHjvXpdBqxzJw63SGcoKGQw5893TmUqgc6sAvR+e2nKBgZcFMoLksVkZmJjTnjJUVM4rm8rJygZmd0ZyXWHmOmcFoLg8rDTPjQnMOWHmFmaY0lz8r15iZleYMKMql8YpgqFDkmXTRELQ3FH8eCU1ZsBeYaEZTRvYmTDjTlBV7iomWNeUCrbuWuRGhQ5R7aKmMiMwQRaAlKgkGSNlAiygJaRHlElpqJUGDKLfQEpyITJBSQ0tyInEuP47qnE6wRoQ2iXVerK/I+4dk4h7W4H+/HRuXv+apYf8N0Vr8N0RxWen/wWx29dPfWuV15T/dPQjr+JIf415zEr1L6/YuvXTbn37WQ9r33A8Gg1/Lxq+H74qX8fE3xFN5npRn/n+QwN9a22oofkrvA6yiaFZX7OHJ9tJq1davV3Errv+N32+wqahr/gtVOUDVOUBVxqCo1AOA3oCqduDdURQuV8DU8Pq/BaDRS0TjO2IxQldwFY1jlWGhZT4mjpUllWOGdiUHRk92wfBnrkC72xv4/geLIYvoVZpnHCITuScckLsqIM7uoMRCTcNn3Dx1GtWupPlCQcMY0vWMK/YmaGeWBmfdjZJ3xNoKp7oV/UjT0AtBTZdy4rIcOUoCR6K8kNTa3Z7aE2s9gtWG8SFGxxM+TOiqeXZeVbOsBdo3FggX/KopAWGRfGT+vUdGlV3qmeJegMZ1JtAvyMbErj1ehMrig0g/xxT49+DIf6qaHfM4N471tzv499IEO/UbeWRlp6oMCzp50q4ZIQM1hrRk2gTIaJJ/02vSJgQ076jBYqAfV2S6rPBZe4sj0CJGAQYrS5gIyjUSic4BmSicn/BE7fxNbGhdDhQN5nKgbpg5jFKeiUcc6loT7lRZstpODKqcR5q0zRQQtSsONPq2NSKXNCOFsYzgcc+4s0D9lW8IkUZFmEdMrUAUUxEsBlRFLCrqIsSOG6QhwT2AoKmAmWCpQK/ekYwD0pOgQwaS8giNJOc75BSwhQoUgXkRUnp7hWjuHZ3sS1pcbI68gugxWpfIlxABHK1kkNn+r63PWMQ7bB1yB7HBeO4H8i1EZXBSLc5xQcwNakSfICh4ysh7iB1Ga0Q+gxBl0rc3ramXjqgVqkD/wZ14gW1AdohHQ0XkBhEXOI0ac4BIDtWjv2Pfjj7YSuQtxNaM1U/kG4jgcJwhB4h8hq1BP2ARb7DdIMfiWVg2jOf+IlcjqoxT1OIcHDHPqFf0TwgSTwG5GOJZjdYa+dwQMsKx1bRWR9Qj1Bn6Efeyb7D9RV4Y4klRS+STEfEDnAqNWRSROqh7o8SD/DbYjpHXhujduPTXyFeGCB0cJ2QzRH4J2xz9nEV8wPaMnA2xcSYe35DvjKhmOPVanueOmM9Q3+j/IfgTT1fIB0Ps3EtWkPsFIdGkr5WW59oRdUTt0d0s4iO2F2QuiMeMEmQpEUecXjVmMUQaoDbog3mQ3wnbKfJmQWyzcenXyNdKhAGOP8hQRD7AtkAvl0Vcsd0hJ2UJZIvn/iEflahanJZanCtFzFvUH/S/RrDHU0LeKeJ5NFoz8oUipMDxUdO6PSPqAnWBfrzcy77H9g95qYinEXWJfK9E/BWnM42ZMyI1ULdam2f3ID8Ntl/klSP6zrj0K+RLR4QGju9IZ0S+gq1CP10W8R7bE3LniE3HxGOFfOtENcHpXstzPCPmE9QX+j8j+AJPK+S9I3ad0ZqQzxwhPQuF1tSNI+oe6gT919yJl9g+kN0RjzNUjdyciCucvjXmoIhUonboH2bfjj/YDpG3jtjOjNVv5BsnQonjAXJwRP4X2zX64crKgU2RI/uoG8bqD3KFqMBJNOZgiDkoQx+VAJ5ALhDP0WidI59DiMFxrTX11RlRG9QMvSh3so/YRuQFxFNEZeQTRCw47TVmgUgK1Wpt/nk8yM+ErUBeQ/SDcekvka8ggsLxE9kg8gJbRD8ri7hh65EzxGZg4vEW+Q6icjhttDwnR8wdakL/VoIzPDXIB4jdYLRWyH0hJJv09U1r6nxG1Bn1g75Xd+ITtldkFuKxRQVkGRETpz8aszgijVCP6H/UvhUfbGfIm0JsW2P1hXxtRBjheIQMQ+QPsC3RL8oi3mK7R04mAsZz/5GPRlQdnC61OFeOmHdQ7+hfSvASnubIO0M8F0brAvnCEDLDcatp3TminqEO0E/KvewnbN/IS0M8Fagr5Hsj4p84QftFT4AYrFu12bRHvQYl6g0lSopcG9RrUAbvlkGfOIMWqNegwy1fRCAPaHVU5PqDMimhtN4XhbZFrgvUm1AKnaMUuixy3YbuNziNV9PoDadRhXs9zuQ9MOm8yPWF02uFM3kn9LkedIJ7JU6v/zi96iLXDvdKnNLbUeo/Tqlr/B9bEmkF6RM03so6MveWosQkykY0xqR3ghSJFhVtmNMKL+qy0kuMFr0tkTFB7Z66iNKCkDAO0kWJ3h6RKWFta9KepK3ISxs7ZSsxWUQbEUvQppXbSE0rjeRUKY8SY5PsgYgkQHvq8wAbCLxDRzAiTBA00FApAWagXBNrO4eVriPBaOM6MvCLvdcGBnLwaYjKdXiJbdRmKQ7BsGIHQbsVsIJuDRDXcU2c78+VVdYJXac4ypiMniwaZXAQE3zKhc4OCsFjTaxPUNUm9e7K3bM4BOsrRD6fZ6BdO8adJqM4Ab4iVpo1ZmBjJwdg++qvy2srmeioLKLYzn85qvdKvol3DozfpT+7ObP+krsUnh5UpDgoHWBVdXfuFFkjipxjhFe87TAx35S8wwv/7YKmin+/z/gd2OwLzApEzoFc0W1YFrcJMmBcp5waW4P/OtG6js7fJofv4Ln8wdnfK4s89BvMkrNDqrt+YXsOYYmPycj+u2p/UnsdVDAeM2qeoPBsECkd5lg8ppu8kKSyC5cdzXIxhQueyRuDpnbLIbJcsqgPtMl9ZLDvqgyvFYwOyx62wnDYYnknGvTqPP20sVB9doZFze6QyYZTuoV2P/Fs36HP6oB31fJ1H3iJfIlwAPmunrBLcMPQJk6lYudsWmp/lzjg0ywOKfkeFlyASzwvWX8w0NPywFn63acDDZvGvkR18fOgfj4hw8e8L/56tS0wvzrn14Hwjm3UjSqskxnWbGlaR406A8xr4YZajRSF6rAg8rdi9/yqpFmDaPrbWweHkCd5cD6MS7Vg9gEKIGll4TS9VVtuxRK3SzYf+J1hrWMiOy1AtMObmTLjxy7h4Coo/LHl7etfrwJuylCJu5lgRqWfKPWN5WlH94uL8oFD8If7jfylQ2AK34Wi0n6kdJOA0UFyzH1yDqiFHv77d7nCGlwSKHFw+PR6tYLQ15oVVgdxH2EJV1lCagMd4N+ap7KIqjNXdjgkYzaqiGMtBHyqxKfz5DRs23k8bDLlgD/ALkqdYv7Rkx4KgL9aoblrGTzDMz/jUW1h9V0vaAZvFyIdh4PxFFD/SC5PQGkfEHoiSFO1Up95HkdrZpd+bfle9B1wF5eCwdNC4OMhPdatZ0/rFDzUVpLJUC9RdDvnNTvXok1RPauFmoUKhyiXDMppxJcIvKx8ZopIiss++LmowAlVOXpftHusF83zY+z+mXt14x/ETZb1p8c+Nsw2AQbw65dw0t6cEg9DSfNrpUeq2rvRAKuvztu+QpDp6LvZl7JQIl2wKttRepFFS7KzSOyn3nuEX3LSbt7DfSj+MMY8vPRap1aDQB7uTKWdDH1j0KGSKTvrT1kRJ/qZGlU+jRY6rZC4aCFMlycfVK0um16eJhn6US1B8Xoi6w1IXYUQlCjeffjx1Jhca1VDHQpBFf50i5vT/nYDeC7e2pc0iCb220b2ZJiv3YRx7SfFhAMkTfOkd2AL7ZNw0JR8F4IGDtXrms9rfIsNrh2iSgiSjUglc67sfEhxtaUQunnAfhOAQbvGCUO0wBOtyQVHemHRF9aXgU9RqQMZVbTqanVtgbGUcSc+l4a79So791YLq+PMsk9xFr7DZNWUTFPpOIRfSUFyX60IFeYGFGbR8LwTZQ+R91TCeO6d6RjMmqKUMhKT2S2cGq6ouWak86URCs96Asv2n3pK2j7bOtpxr6OspMamoJ880WuK+dI6va3SomEJJEvSmjaZoeYT+RH2DeRuHfqnLPw119lPb4148gi/17xZyHfzEsfLHQGs/24iTyJGydF2lZ1HcQ/Syoy/75HEXepR8hjTs3C/2+R2DjN6CJiMalGh9KoT48hZqqB4Hg+PIAvzq2kaRWhKyUkJWvxLwk9f3dJt3Tecq0gcIJqSO8pMFTRjm78rxavGHjxy9aAwA06mYX7qRKYqZRyvZ47j4YfPTmEFydmAm1a/ml3ISz8Lgzl8sBIZ6QjyyfAcEIkS5JK66XfCuvlz8yePSdHtPPzJwXDx+ILDsR1r2ym/V705dKPn3PH2xmKrVPKffgA0DqgU4Ajg0gBVf9f0/Co7VvniVxegxfF46f/VsN0No1N4iIo+BYtOevnll6eaXvVA2H1bFak2GSBkskINbYydSUfH3ECvjeCypq1knswnETaq1hmh1jb4Wf/f3ynpcEMCdlamMZIsiY9P1WwjPK55YCW3VGphWlGZhCHFbxugKk1WoVfkXI+8qLV4LVW1bJiclCTNJwJikUxmQHzLzwOrUIuslktxR+3/596jf8vx49Ez9IKq+s6dw2YOUxlRDBN4xcp3YRBJEceYsUzEM28+rqbRkCzSs9eHqBtrKs34ykRyRZrY8VMhHdZZbFuaY0gkFLBBO/rzrvz0L+dasiRy/ggXXTaxwGcourReLgsMzVnDTCb+gBEATUxiZNsazSnQcn5tM01kYU4F/8rUAuqKeUVDGqpnxVs8KfonVx6zHYkPM4H9T+IoCewDbWNQGjMbsw2Hq5P9g6kRgzUqkJ634HEYYzecKnF9IYGGFbGnCVAH+tqBFcqAaN0EPIM008icmEc/Z2aMbdiPPKmDi60yycwBo1po0FgyAtnZm0PFWZnHxd8Xg1odJ141lTAVil0ZEDG+nEreQ8lWist8E8pHJxF/NmEJ2rw3vyC89ttBTrjc2BiX+HgAm2PBqTFfosgNgmSRbJO40Mb1CBdT4FP4TljA8r8orVpNoujObicqbhYIqtcEsh1ob7nrPGsKGjXjlLTyliCZlwgVTcp66rzG1mdkcsWqXOcY8PQbOHiN1FMaeNabvu5d2HSiymfd/0SozdvQ8ZVyOLQZtmjpmFr5JonrHQu+LstUyPA0lvgFLu9lXZTWIhI4ghSPsoxu7HAbER2NBOvVeJ42h/M1Dier4+d2vozFtM0VdB1bMrcK6ckZYd1UaPFvhCx1EKTxb7+wf6YJMrU46a8gBVPJdbr4/J/RMBbclyrOi5FsnIyG4KH05Fdq3ZzKUUA6qX8uvklMUqrFnCqQEyyUlgG7CoRc5EBjj6XSnPjVWAcRNh9vFcw5VN7S3dBXklbKjBwmalkfmhHySL6aMmiuzny07tY4YpAQjJoGt9/c04H3v6BJgChyU70r5A8nYXwuP8o9fDfXeef2N95FE+WF64A4rbKrc8wZEq9J6qYmji8ZNcS8JStEBwEr827mpctuTw/hI+B2ygTuy1GgIPFZa/tDv55CE2V0/9wbIWSl+xaRup5Ujo/un/pTkSpcfiTcHS2TvlwiMLC/4+3YwNdhyXx4enq0vjaIGVtONoevPJ2EsbmKJO2OfsK0hzxcFvnwDl7AxB6Mh/NXOVYAcZ7+RLf88FMtORwBe88vVVJuMF4BuOq9+KhutNOoh3EALgDQGfaG4E5/e/lwC0MaJDz4UJjN6c3EEk39uG1gsj/uKmNwA+xUp7nx/wMUGNTzh1obcE25ewxN9egibBdnfY7mIHuHwdFMf5iBss3LrTMzZneO6CDcaBybXgDyR/3CGb6I+oyY7Nf7oIgruyeGRrX/MHMcE7BHN387/m7fhPtGS90hkJQHEcX65o5O45ZzDZjlHkDKwGL3X2pBJzDwJdr4dYhu3ZcabKLh/4E0FtuTveBH7pz9aVMKaXvs1D6YhFY0iQgF4B/PhvgUdaUbHxtKnON/r3pzk6g4O+Vf2gUIigK8kXyBrOdS7AY8JvXSyYBSbjOxwLCLZZ3/bVQzHSv1ERyVlx1ua1h2pw9InM+a9QWYh2GDre0s5fn6jeSoUc33PNtiBUPNo/3C2hEHJ48L9/yUy0v5svDvuVEnDOcRNXD+Qj6zGN438lN/aMNWRjFLMVwduGBLz9Z4F/nGd835YIZIA46bJb805G/ez02EXFgDWJLQHXN3xY8DetHMQDsxGedljyi7u7bk/TJL6HiNu0/nzZhDx+3/1QFsL+tt/1arCKereRLK+EdpjH/KdlmETce0NqBPQuCfftJ80zTphKuLq9GqJ1TzLve1RCaVNMC5JFkY4rL1UKLVMRc0lHFEWMRU5/elAeJWwffkBSLbDGQYnosdOH9nuGqA7LTCLSZiusH2+fbualM5z8sxjP5/B3Fd9F6yzSm9Vjxw69+umcs5Qaw0HCkdxHA5iZcIYIjb1dVA8aKQ21mKUhBCDo6iI6oKmIfK7auUP6rzi+dquIizq9vnqbc7CznkfDsYuC9kdFrkGxdGcuOiK0rvJyyxybHUtjV/zHDCU1RuRN3cFDN3lsC6xmeu+amTVFmOk047PfyxlP2Nn0m8nkXmGVO53brAViS/DCD9ffInke/9Z3fcBPoa+P2L/MZid79TXMbuw+XfeJ6n85toIpo3vQwvQFJwXcR6WBIzRbdwv/Fgi4ILiXuyuQxvTa5OYW55B8731+Ig8fGMQTyvmQJ5zLVbM9O+lWglCTbbzAcNQnByJpIfxaVDR8gydjMc4mcZOykR8mejW15T1OScnp9xlx56I+rzY+gCvqrlp4NFviK7I+ai8YQiYUvuioGtrVV+xWfPA+7mBYS2PSSi09x/BnXwR+o2h4viQu9SRYaf+7VI/fsuDEBjQr18bX5tW3pddyuFb36WSIjL6OWae4s2h44wYV9ZPZ3DkPq0snxaR5mDtfy0Tpe6puauV+htq7oRp3LsXqVOpAMq+1OdqyY3iKPmn/6StiTCyKlrXjtKEGY0uPbNGJGR2eu4f29jarTg134gUmEq5ZpPdN6rV8JWukOovVjZX/t1MLDTK6Ot30tvbLrtp1aPk+0qbfENE/XulsXq+K7buXTZaLrHJ8pcDwD7xPWNXfxd2W6u1MHi4Crsg62rdsIiaMxsWWvZqWSdsHXdS7zcbtEwvaeog9jxjNPX0ZR7qCqD7VpLzzmgDlu2bW5HINZ3ZGrrTj8G1bl2V6oy+nZWU1ldu6f9IIcUCFXZXrMvXWw9XYsqGqe2HjQDhwtUTjk0HNF2qbK/7lG0ymw7totWiq0ns3/NDft43VPp2kq67tlfo/THay5sMxzNpyvLZdidfNUrsdOonOy84lWIUCGoUnYmnh8JJaYr6am/JBu1g2FpZX+RLGeJ22lfpEZdvIayrrihA8AXL1SRVcxPK1h/DoAFr9paLH9UNbArdwej2OdsQSJw/fTTYaBsfRHjQS1hh1wfB2cJsC0Y/TjkqPs6eJxa52QN5tMCzYfSpMXxt6uHZUVnqeAtz5TrHnqyNLX8eVM3glRXmQp9KSaCEz8evcYspOg5d486pHQOhsOKr66G9OBVD11XPqlv7LowLPPgRg7fCB7qyjQPHPu8A57zyelgnuSM6Laferv/tQyF9av0J+YBKlTPr2zRshWvw+Pr0E/uV8wIscnS75TTHE3a5KzINAFMMxeDs3t08kBGr/u8B7jJ4JoWoE0dSeNjaPr2ZCU+snqrMJNURRP2KU/+QiGJ16t0gaWZ3ZOzF2PHDKjEMPfIRpHC5Z0mgGWEi+Q6srBb8vjNomJgH1CripkylEzuv/1viE23oeqoLhtzptSl23pr95g4fE6RzAmsrqXDvVFkKDjdIXTUAkU8hLPwrKHPToZYdzCptNT6AWIOkVJ6/vCs1JBJbmnrg4YcKgHk/NaxzmC10XUtHc4YQcKgsLKGDkNGvucS4YtTAuleilh+Mhfp0JA9fGulzgBVNb3fpkynFDxpyAV/3JxKxwDpiosRPrOIqpouP0thZSE6Qy6q6sP2KGkalVTkgkW/GWV01mlZvLafdIKV07p0wv2g3FLEApa0Wjy9BGHLdRYgPU8Gx6eXDpHSJfJY/mXMwqtq+pz6wUGHfAQXVfW2HEXhfHQRoJbhe61gdm4Msqqly8YZoskdakm1ZQORuwRd1Wtakp66jSZW1tFnV40LYOeh0bKyuljy21PLdAeT1OcEm3doT8a3/J3YmY9IWAi29LjccjzBm5Plh/nt/PmZfbiULdEyt+md6ZoLqNk8uebxBR7jNzd/0YacKnrOgd8PVZ04JBb2WmLU2qlWzvfWhbei/F32qF/dsC20sAldO9sgR6AULBGLllXzON+nRTnbTNsXX5teXljmD1N2oRXVHeqPsmhbUKt7u3b/TaXaYR7FKulKPwmFVqgrFd0W3dzL6g4QjiLdhR387l48ZKLA90EDJZ9gbevC10fNX6od8usXCMRN7Jp2qP2LJ5P9XblD3ww1//BFlsf5eXFLtjD1OdwBUbuf2w3rqPBPgCDKrmRhLmz7cwkaE82Se0cRMOqAwxNKOpLvNuDYzIuteuu516gzO/eNb4IdcDsUF8Kh3eaPmXiLB3bbsgw8jYR3SNGj3+LjCuPz/rMs5AXT2nMawD/xKzyp7I9oVqbl3Bnz8ofkcf6DIJRoUa6IyV005bAbqht5yjdyphmBPFPzbcIZ5h8Te9eLLaN+7x2WQ/NjCYNIzho4V3rba2g4ICIR86VmcGQwBUB8OFptGYQ5wdhxI5WG0zEkD5B/HgEz5DwHHmvWvHoGMUnjSIenCQTbGObjzC5p8vhmie67S5EhZDEhlgf4JW6Lx7mXYNNGd2wEzc8kpdUsSsX3tlune4ZWm4c9iYlJs5ILBexFT81dG80foN68j15Wo0/Vx7MaLUWgmBNCl7Hd0K/PIE9XPB+/O1Pe/pmf//Sr3222hjGzYfMjZ449joaZiP0U0SbcobDv5nm0L/MJdoVdSuLnHJQKF/f3glWM87Y1CL/WUiRX/xRZdhg+BXOyt0Y9PVPV8ry3tmK9iBk+TZ2fAI6WYM1taZbhap30Q58BKWixaEi3KXN/626rYgcuJjAukfVBC16Se3rNoFY3iLTGwSJoBksg2ko1sMADdaNtUeQt0QFsrSG+6G0GpXc8fdvbzSJoBgd4RAvswbwLMWCqiM4Hf7neCL2Y1beYGWnsPA1JeIOvRPOwnXJRGyUVgyDYePMg0XYzC338HwyxAa8XNBbwrZQzqhrm9RfSNgK+ZNtghFbUVCg3BjIf8Ug2MeiTYG6Y1Vy4RL4BQQC9ORgQpJ0TtnojxK+pCgpKblv6bXAAFWqrMQghhkEuVH+eMmTSoe5EvbocDWekhb54wrSUELpqkO/jcGdA8clVZQ64CstlaJkxA5CDFB45EotPQhLChuYm4YNnN7Q9kmWFbqAYewIj5SybCyLHPSVR2SmK+cJXdkF06PCCUDftj55tNMckuqkDvdO1AQ5lxlb70Laab/VoRZj6uEFG3RiuDwRBPJ9VJNbmpncPhCRzmCPUIyGHeRURMrdMHucS4UEn8BIB+mdIGGOG8sHgkR/vCs1RFzO4oRgxsOYJ1OGGyrjHUqUvEcpAqSniMh+uBe7MwgQmHfqogEiLwEjk2+vMl3P1+tfS75IxMANeZxV5GG9eI9997/Ru9FkohC/fMD3Xqmyt/Svq8K5ngJ1L+ws1WAZRuwHmeI1U3mjxWuSwJcUa5YyG0JDG35c66g3FycfeQ0uPs78z5BBtV5jKGDamLWOc/Ju6d6bsC4K02Dv2lStO/NrLvbh9hTVWoYUq6U4XFOjoAdWmfSFX0smGgOKhRZUSj86cgnjlXFgwN2KOxmZJ+4VJnRhTCEk7kt/aZqWl7Wt3Hu3UkPgaFtrqqsfQdLiUwTgcgRkJZux1CwP/5dbOMJquDYjwv2rMt0JHcCgc+0D5BJ5RZFIjZFNPoZEJWdSsceKhRfBMQKLYark67EQ+Rs46niukORz6jba+Xuc8GoRb03CqJku84U8w+YtoXMHHoav59QbW4vllMpjT8RCMYU8SrtSJXUsWXJJmLV75x37WpsKLYCh7KnefvHYMczy0YBIzXrEeezAr1zq7FbmR7AEj40MRzeuKHCexGK1SEBqRgSWUQN2UgK85jgsBQFaXeaRQTyOLIWtLMOZIbpCzWvGi6PsH50w9W19GSqzGa8DqzVX0ES7DKJKaD/mnXV+255L448rxJ3+YGajFmo7nCMQLUqy9unomYvPWPI/y4RkZehC8xASpkyz9sjCKlnkgQzt1pl61XLhyAC8FapM0xrcySMNTVk6XnSztMvSayCuCeLMLBryoPDk4q1FnmjIs2xPFcy1jIWaJevIORukv1U48YLuELx7fQTJyu91yyfv1pssvI2kbB+7P4ysaf4XwT331VpqTNsfyxsBnH2+/W+LghuesT1z6rx8aP9ZtxWNGY2nEI9SBE7kQ2UAMbvlSOGdAUPQg+SMjsUYul1qQnk1V1jTPyD8JYgZIdZSWJLpd+bSqfbMa7VF7DNYOEbQpNXbeOR1/6NU0Z+0xHSQlsdVyFuWYdJnUPMaq0gf+yNlTRG5ILQpeiA6GVEa3PQOrPrUsDNqghrHxFU9YupgjkZaGpo+swZcIfwOjmNI1EaTZON71u0xIXUe8i/GeTx31LjDtFbU9AaNnJMlBxDTkaKiu4+Vptop+UjPgc0fcVJs2POrdnlx/kwvdbKWYVGqICA+pGdInRPJxas3Z75pHP8UO/Ugv9O/Fu388d06YUh0ljdhmD9W2WxeRkFeJw2VVQ/qkT3lrCuOKOSknbWSnn2ejPt8lm+sp1Yjisi0+QlEttkfFyvxPHUwk4yl31Tg1z9/WGnt014gG1esxCzNAMPwbVz4E8PfqTUzp5ke1igKW2PjU5VB6gSI3k8EFZmuyedJzfCiPHHx5CbPTgJmC5MD0MHac+5enkx2NGXhfWCffMGoBcLsIJYHN9vg6KEVbpj1LVL+cpunLBeiR3HKJrHJLsChk6q1F7EIx11TbfhhqX5KIyAIsqAU8Zov+TVswhrG0MWcqEnzqyEFGj+o8aL0FhNpATVUbnQgrr8+gfr7nCddN4skESR1CSfdDxl1qZYhVSeBU6kbk/MKmbw+iuGh9kEbJ9t3FhoTn/LCN1Q0FD0WBYKc46HfStppT2LbgBeQvsydcjgnUtDeEzfYH1znrpyssN4+OUNMIqaZxEHklJWZuBzh123j7ju3gERSiVSH2I4frgTarUXvfRne0hWxtrQ3bVMurndq+fSL6NvNEmt9N7C/IqV/VZE5uhftTsoRUf6eMJymioOxk3tCaI+/LGrTf5xd63cDfipWyrB2jpqVlmCD9Fi5sFI2f6xSL0UjwcMLOVvu2e+RsvNlHYUGrwOqm/kDCBkUrjNKjULuEkHqohuwl6chvVIFIL3O69Rm2P6I6qXBtsJUDArWjxbRpKdgCjLybFzVxG/l2F6wSAD1FEAWRY4pw9zi5NPtHWTV1JgwhWTSIsdIqFA2+jEJWaDztAtsjyDl3QYxY9DmebGjSz1YkUBifirOmbRRMpex1kp9NCiaVbmBbOpkrO9Q9m/eI68kKQPUlb+xIf6Asda5NmKJ6ZcOeGbO4fatrwwb6A2hX4rpaOEQJq5Hwt3NIdz8ChrOzc9rjRpWglR7/CBBwxNUdjyEevKlHSQeEQ4S7WXD1qn/vEkb9bbGly/mTYjOovCXY7fTK1cBKYhpmMNnFh323IyABBGPdH8Azl0NkLojjb8yj+hNZt8IhkFxGVrpKlE3xQg/LhzwEevnmozNijE+Pd9w/iU9gf9/xL8Sjnwaw5nnh46KAXU4gswA9vDqgDR0W18gcHLfAphf4ybH2rVcIYszO7KmxzngFpS4PWCzdxDHUelgG1MS1sMTcuLfGHf7PoHX1TkQI5BC2tMJ1Nuk2Ys2yQkIkkWxnWsi2xySfZ/TFKd4Uzq8gDjByoCjBAh1+G85Pctg71Yj+QLnGDy/IjcufvO4Fcu6dMHTLHrRoUMvThYOvGDodMv9barXo+MKSr/lyuUi17wCOqnqJWAzcFJNdaoTVZNuqe20uLsamWY/MPbYGQYikAfQh7KllzsZpjgZpTLj94oV9KwQqz7kQ/ZMpvhuNI8wNQ9CInxhSxuiRMNIM+SJkG5tIKZMsw6+wE7eqMRmp/kL4W6dFKSezO4w/3VDLyLdVdZlgH3CTatWWeJFs1BBsbHf26s8a8CmCmgllAqzsszYB7BHFcp6iQ/m54y2vPv1lUcSTGmLhybLBloDJ7VOmv4ONIGFvWdTmb2ZFalg1Lm0jJayfIO7e+IdEb8EEWOzmHlDFcMo1WD2VMOseuQf1MDaRykKIOjVGDOixcX1ZOOJGyoQPQg6XGoEd4xQSQyLtUpg/2hfgMZXDeW8gyfRnB9hTT+a8gf7cNs9nRhf9ndiaAHF1QgIExEFBX9BQ6LrEMj6KBWqttjKoiR8OzmRHqKeWSKrZwlFQ59MDm2lb2kA3i2VuAnR+HIYxbhsFsUHpXir3YR9HhI+U0IKve/bHPWDMZTuaP8UIcQXUMsTUhuePae8vYUXU9nleOxjqx9NMuKWvrh/r9SmVFJSFQ8+EkjjrPjs01ua6LjYUuNoNNZjfdiSriI7Fjf3jPT1I9aBiH5eH4CtJwZ9m7E223StfmDhe3wYNKCPgXW7BzMEVFHsp4sszKSek4eZkYroiYWk5XqK1FOJVwiKjdvN9J7qXvhQjVtoKGLAHRYcLKYoG3QqmOQHj8hBQtAoxuF2breNYaeEBsrgV1p4QcNfnI+pJtgJa39tZH76jt/CZtqSQgqTGxXC+1guo5n1xaiApavX8XCwxippjNuDXF1reTNWTrvbn1xFmJmngRK7WQux5wjSbbtt+m78UOvNQaqEGo1kD8f0eRJDod0nPolrHrYLmnM4azNYws5a3OxtJLMmwFIAwtvJlP/rxuxopQjx7aDJ/QRkhIKymD4ImsiuxuQ2hKJJOiHsjwE3x0xQre5YpeSvAGdlJWUIUhgSmjS0fymRQMNGCEG8omv+8vGGxw1pOQBqIlpOwTZ3T12kEjxH5E1mbfBa07+KDel5hFqSyGmaghnr4Sv4sqPjiOagUTpIG+Gx4md89nG/LTMYAnA4zW8n3yT0smzXZOYHuqYY3Lu7wcm7YlcKQ16ILLyLxIzOe1omjU8q5VA5vOnm9bpHBPgltUjzMVpCHs4kpWOQ8tSHor2DdsEPb63WlfDghR5qYI75puajEevjsgc4gxc+Na/r/tFxw+b/KVncb+k05WG05NF5nNHSjSeubKX3tk49cx4gX53PHBhhCwn83EXv39+mqN4NeZ6i8kTSlkBCCjNoMNJFq+X+KINFFVDtVROBizIdlAhyeFwIC61a4l378X2a/rYZzlv04pj/IytWFpen7bUvqCcP4/yUoBt08JsAKgBRNRFVavxq1rluscQrwpA3rkiqnJjUpjXC2HC7YN2XU6H0UK2Z0evktrdwjR3hvjHfjZZaHgewODIeLHiM5t63ogMQhGLvOUA3wz+f6p3pJh3qYfmILn4dajXpVr4/71yyfjVp2FYktrVBITZexJB/4wltpK38jcPhHMuOq75+71XQwH6hXjhsx+qYlkBuQt2uWrchzqjpFHhBLwiJ4XBEDpQ9uREzVZpGXAg6M+iBJvaKS5kJAi9VzxLqBJY7fz4dOmJ3HFUcsEglU5sJIS/hWSUQethor7mkiBkOb+fdo1xly22dPWnCNKBezZP9sdLBkE+ZJc5+USm9OGlUcZQdQ5KK6emjM8T8wAIkJ9vROKJ7GuGyG7BvAdIs3MnSQ1b6k5R34Q71x0cpoRHAel8y69ti7MbKGH7q/ja7pG3kmtzIjSv8sAJ2WgENgKzNch18DCEc2KHTQJKQuq4XUuo5e5G9vscLq6b0mQMGJ0n2z8rXEV3BDDg1XofRwEgWIlyw4KZtEkUx5oc+8EnLbIFXFr9F/96Yw9gvTyLt/mCu5+gLRZqtk7oDDZnj2UkefF+erPqJxooaP/ng9jQGddp2t1KffcMlsPW/lubOt039mI/V3lzw9xtN/ITw9eHCarF6HTv7FHJzczcHpHRycInBYUFs1megbMCeYJtaIbeXtO4kEqanixT/V8VNg4PdR0tA3pJutlYRH+dRfEn/u4Nav7Ec2+TCGh3duwn0QBt53/Nip1sh492hm8EU8tbMnL5+OvPLI/9x8IRMlwZTjgRvyPgkfd62+T5GcXGX3IyUQ+RaCqQ9VCxKmXXiyuQ6x4/iae5pMVVxx3sbvoQexwIA7zJ2IcHwIRSwN/xsyb7mFTaBYGVKPEShMuTSvJajlovF8zKVATWraLNOQNSPCAUfzOLYrKeYNpThnFT8YjKyZlbQptGAb2McByje2SkrzT2YGj2yW8ngf5BN6t88m9d9+cD8X7VcW3gXXzaDI0Jqf7QjT7BhX2UFY16NvZI1rC4mqebav6Om8Y1QBN8AqzqwHKvt40LtJgn2p41dxfYHK5avkRxvbtPybE0uXn9ZYLLVgG+PqJnyp9sqDbchGvQi7P5QcAFT39ep7GgvN1sfANj7ReyRxqKvUC5HvoLXGSGst802seP1Y1UjivpAKqwRVXoMCwWKSYql5ZRCHYqMk02nHlUhQlCIYFiumewQmG/x8+vs+E+P+aO8HKS21yrFLzFmlAvdgP6rJWw+4Xa8YOknYaFT9DfkiM369jxj5GEFkTmC+MlHCz+NdevYE3maOU2hLRYRVeR39hRhxqA3cMq529cCHBvVhRFLxfEplAKvhTCRFYVH3wTSESl8NLS5hxRpDPcthd/rYbEqD8fRPzwqMT1H4u3Kvu7oeN1n4+DPsQarymNfWtMnW7o07oofExyQWZ2o+KhohW5BAHIXJAOM0iPAee/2FfU9XvveuKQdnBdcCvXw6NE7yRWYMgw9AVi2ZqOvlLhqtVmBGo6RjUBUcmYbI9CgPztI3D8bCCvj5+74MKbF46W31AolsrIgmNEpdRNZGYkBHvhvF2AiRP9NnKdMuQ7VIIC5GfBSRahXPm41sQ9tBlyIhbCXEbJubBHX6gOuPS0M9mkdZQpJ8o8+eJLL7pmlu5fbhrl3VvrGr1kjlqdXXl1TESZZPW4btsdGki+CVV1eUDsr5LPQ+OV+qHtQJ11qrgfaG9moOh2jNsZEc+2LIRuhyfEQnQobiPRfaiWOvj99A0WMenhhyV8l+vNqQczRT1klHdNu+TPYjV0YUzu7mHOLZ/Jz2sgaCn0GvDLFO894KAvidg9tnNLwChSsyRAlUwG+c+xG56q633WPqmIV5kTAH+YkLeE9dnesoZoJxzr5RIyI92DWU6paBTIakFCzv3ukysaOnxdTXLVGjFJlBE+i7V+ZkVEqFPRO/3YD7zmbXzHL4qoRZqt00jEpPszp2mo5EHoCFQtzLT4CPud/NFSbMCixkFDoOOD53MYWYcDU9S0azJuMAVx1KLMBr1cwCfUwwyEJGfT1TokE8luLL5COKz/QkqctCi6d76Nr7Nsj2xC1QONuLIXSRx9X7YZbcxwKgNE19tVGARRfYANt9EKTIJpYQbAf5PqC5BoBNe5u4FHuhpC4bya8Hv3nEO2vSGoSlbcJYCVjNGxcZfxbJ2z92TK9HK83Qqu10Ua9Bex2keehCWwzf8fVdF8tPLPmnXO179skxwiCZlH+aj/9PzKRJfjdm4o/hz8jRvdg/ZtGA8vX+JTT/UEBXsIFdAhsi9Q+CFdll+dnWev9wxHfqYfpnfGPWfCz+8cboD9re6wY8jusjvjwgcekU8qjc+KxtbOgWOzxO6GCAhR0Nkm2Fm9umiRUz/vYS4tieKS/a8cMTNSzheOyyMH2tA1KtP4r4ZzL5A1wk9ZUcWq5pJnh/ntkxkhavvOS2CeHdE1tJB0r7axcHOs7tzB4fjkRcxnt82VtKYOPDWu392poJ+Lg4JZtrwiPNau245yDsMB974kRKW27iw7tp55lWvblPzGgsJsYN41MoVO1qWMapXMwIRdomBAthi81NwbD0b9/kqzztIQ4SwjVv1ZRdPgxqkk0DNZQycXVx9FcP4C9K8FTdtd96YyHDF04pz+ExSEur71Z4XkuNQ9Y1Sax4r153q+Xibbdl6o8liTmCxkcugL5dLc9JPBu7haCx+BqfHZCxv+aeMLDAUR046pa1/6qtnJxnqMGLZMnSN9t84OBj8AKZ59KaUANd/8X0XfbvIuPdd+hphgBBnlaE0C+/ZdkvspI/634bj18fz+uD7vEygYG+ablbepxnBvg1m5lUePuiESz/HjMqCD+7R3aZp139+paiK8bdMFBt2c2vkqxbwS4i3Mio3hxXm9edIlfKb6+FBUqNf43kpVKGD8GSD8P5E49KNHLYx2SjVnDmPmEF56TtDGndI5lu/5QR+Sgckao021hvbuEimi2InrSolKWeHO2XIniEjXjFA/Vg7t6mfnurKYOmT8cqRAiHHNSKAW2IMReWjcK3Wk9EHib2t4LM/EIH9/ausljjGeTvDMeHhV6I4EoLzWDLDmNLuDpioPDPtUhHEzM8aG5iAyG2UZRyjVKSPQnIO7otk+ufBU//+RycYuZiZqpZ/y5mo9voRjfkqSnmH996PRjlty7qkva+2CxMBuSlZoOa7P6JBr8RW7+5JRJtCyRCWsL4HTzZW1rprGV269pEfDKL31QeHclYAA85YpfKEmjNys8L2flXoGPV+laHP9gxIyvxuDKOD+q05t98bEdawvh8Ed5gG8sL4+n4NZ2t3sqdeTjRurE/7ni8GEAU2M7mmNdiQkhKAAa4oAnMOYPrzPoS4KN8gcXusnCOOyvOE3OerfNcnafgPEPnXGdR7eZJeQExv5p5UDtVL3T2m4cQxNqLfXH/Aub5KLNUBKL/uD78I4sIjzH3fIuBwJgZaTTyYtQQ/a3o3pD6ce29TmwUkloTPC4QldkDjQrh7W8jhyIaH9T4Qcu8BLm9HQ0LklPz/PCyniUk2Y7DOvqLBlUOoe2jN23B4Mcn6sw/12XwJR7hmEdAuLqkf7yU317qwdzw/qirSU2PLPdAmSIpWgRuvPMpSm9WZ/7PWRY+GTaOKVMe1ebeeoR0/qPOs3kGwmkfe8QRblYnQrZndcsOBXQzXxFBzUovTbg3y2De5fzN3RXuf8rJvFUDnM/Q5nnBsv8HI+n5s0ePITHurRz0misp4XPyoSVqfr9HGC27a9JOb6aDtYdbKK/4wYdLwg4+OkZXGtU2+1/XPfpgY3P163CM6HAUzKJtXNUI5z1Cs5Fcgna8Uig+XVLJkyoXtZ46Cp3GKBEd/cWiz3YRCTfeVBtH987NdIjzhLgi99XZk9wn0pkKAqjBoywC8M32WxmUvEGZM7711Rvjr7DRiZ0SiuJ1krnMbTwz0ENUq7zbFxbiXRSCbTKGpxvrDRzozVVt2zu8Q0OhH/xQYYZXu5Wo/HqUcrEct0wzfgCSE+y7KrTqtpLRvtt+RHlgT1uGLdwNbCViTTLLXVOd2htZo2Amk063VwIJXmldXox8afHPceCLWeDa+C1RZvkCwhf6YYVHgJno2zahTr6nkrmYvoxjxhwOBNxB+pP+LkBCcwzv1gXrdyZkvxhIePVM8DpyvWoRdUrRUZ8CC9ytFIsUDMVlaqDcTPOVjRTZqTuXc9WGlBKBVX97RRm3Z3VAwYQsYYCwwLQH6SHg27uBra2R84815ZzCZUwAo72qIwxUiSAn12lut1nUf+fivPOwxljHX48D4F+SvZeQki9YFhvV+jFinqM816yNKgM/SLJ1mUsAj03ebaoq/whANx2tn2zPDa7ijRf1Cf+znQ8Y2Pph11WA6COxVfTX4cDyRerpCzw0/mdW7aJLza2USP+7G5FAw2kEsKyV8sdnwfTwezPv5/m54+mgpHbnWR5VwbVEslX1TUePCGefhgcgbZNaLAdW8IG9s7II/K/xvz7dSzXxA0zkTo3nigmqrzPxPhvcPk1rVN5UKwb9GLXbqtDyXKUojHhN1E8D3+XEkQywUCbczrntxmc5ALCQPug4T3WMcypSY2c8ALFztbAMt2q8EaFziaFcvtCEcTO7dv4hTGR0CHugv/vyKcSwU8WI62f3Pj922vNDXrAIwm0u/f2RQ47MfqgCYcoRadkzUxEvlmzSRuQLCkNhx0DPXO2eTJSdbvpiyS/+xhHXtGFhsdXTvICJIAicjdiA9ms/hc8z+r3yiChXy1QqTmPKkiYDpnL1Z/mZP1sGUfmte76sS+gqVPwbVvI7M1yxdeTV3eJNdU2NDNA/55tNivbKoWfYxbm0tYO3vOxoN0eI31+tHQn4Vlj9bVlj4ouijO60Wj9lSfChYDph5HdldYNpoJvxvGL5K0/FmOD1AN4X4tohrdLZ854XErerMpP7OkV5vWph1xola//IBabP44wFtDm7Fi64BgBDZfliKO+lwhAk/fqU9K526X6QvylWmt1IiKkpi++QaK81Mf1H/AVUsvJK0VR/BZHWwmU4OEOC9p6fQY6v98jfNiafeMHIH8BPt81dbI7ItOCSwdevVBHKBxdJzGMd6lcCg9plTfRErVSKr6hSTFQXfsaIGkr7pE9Z3+DG6vaEBGFKw/y9BVeFf+DzDqA6anl4SkA9WE9PD65bLYLwMIY+jD5Y+A3zY1rz3nrjs6pAMT8MpKWqtl23v9tku7DsAOJd7xvT1NfWPJNxJF73Yf8nkG2/Y+xCSP36VLO24rQh9w5QvO01NJE1FdBTFn8yBUeBj+oNutrOPlb9/GdnRclxwo2h97ML3yJvAjcuYChrEpArNcU/L3v3w3PlYb3SKANm444aa4P1JPjr0/ZTbqiv4lmnM458CjjmJIZ8upfR3v+iSYU7VPvSjxRtfpaUFvqKjt/sUg1CveelwsdBcuM41LIBUVfJCB/A0yuh3a8IG2QS/WSJT3+JUocglM1akotUli1CoRNysFtQ+F6bLcDnQVXmdapyhqNnnqd3THcE/L5jWu94Jrf/O+W2PxXq1mFWt5y66PKOz7lpTyRZ/rpsf5x1gByAZqlkqY3R9mHYPLhXvuTgItUq8RFu4Kgt6KvUEr9wizspvvlwrxk7sRTl7fHtpqZcrAvYiJgf/QwuVFS7kE851pm+my1TCL01dejfrob8ohCqr3Pus0QLY3RrK9bQURlGT/PF5mKMMZLmH3lLphgdWupZY6VAZ3HOWFh8XVSaxC3rY0vh+u1syXOcygkeayGjIvLu0U3mExmAK+Rug5qEM+nOhNT9gGJVDlWpBvsS+bBuAfK2SR7UznVtlyahMzF3DnNSmhtt0rCH1Vq7W881F/P1NN0Q/2Gyk1z4pINmRU72Qg5/0F+q/E8VJz6m2v+9YPMHOPmhhvGrQxZMjdtR9dqt1O1Nsd/3W+p/vfj3GO/P5qQ+BLo/J07gVLoEzSdtLOfyw+OiX8zR6/Wz//3ZzAmEz+Xv0IjvoZ7x0yYiehMuPnAXa6aSvwHMhr1Q8oKYPJ5+VCB+FmJnieivDYiRf6DRjFQP7Jg63vdoTaSJ2o8oPgJp/zyPWJEjcjjIJRhtVL5iRVRahG0m+K21Q6ZEGEHJNPdbLyvxFfxLBE6eLWIbBy2/AtXWR8/kaBkxvqrOQIHmDghNaZ8vemcXIpO9S9LuOUvzN1KECVevPzt6L2ETQj3ORaU1CtEkBiihBIX4eZSTBLESKu2xgD7IznNjHHE0RUg08U99HqhK2+HIK8qrVae3jfN1sax7lg75Un73/E3Rp5PVQFfu57GW7YgSmQMmR3d5SAt88CzQV90I/l7U8rIHRVwbOQ5AbzIHpC956ocqW0YIcJKpqb+S+glHnHtXSWV9qT2rkA0Ofl0EJdj0JrkOCzkVe07BZYa/J+tPij/0XFnYZNj6CYIUVkwK5578x/Rz/97XB7JX3YedLGBXAB2NToer3UXdR2gcaapHLVctGQOVHPBUISFn2yYF/tLflfqBWDbxlgmlXjUt8N8T3a5Kkjg7oovU8rWCGbsESqsCMHiRJVIrVqNBS0oq22m7OLRtmMzj9FU6ofsgG/ubce2f5t1Dc3AVjpxOWZHfIvRweV8tJFgHJOGg7pPBw3US8cN7leQfrkjhkE/g+q7Bul2PrOTv6uqETC15oWA0it6ybFNGa3yBomn3tEMEiEZPQBDmSYe+bKRdA/p8TH8JVmjdPT1R5ETd8qC9+iB/t2xyanVWB66notvCDB0I/q4gJOmcND/IoHaN2g9nxeMCk7Q5Ez6oCvWZMpUoqTHi7SYThqk628zjRfkuIMLP4k5ch5VuLJKzu47Up2sFvozZvzjbHX2kOLSleFEmrxzxUspueSmNBFy8RP3e4qPZ9iZHr/wpqTkPgIfcdPyQc2vzcHaw98vEdcUmr2Q9rH1wK2ekhCxUvjhGO1gVnYdjb8SvAs68w6QHbL63/71QzzvJ9rOrW7lAymU7Pp5DGM+gthoM4xzIGSD/4hE68SGynXcSp2+zwoG4AeERVIOwfURFuwSQhJ0K9D5m334obG5f3w3p1mTaQsOf3f5o7w1P3L/bPhIAVxW90osyhris7MPVlJhEJ7XZeHwnCvVOoPhI1Zat23vTrZKsLhPa/qoFxP3ZJmey6ci+sfIDUWSmlkqqDTQTcrXrUFWy7kBjPYog5l3eBy9gmIi3PgmifP+28kW6MCY7iuT7UYdmfwdJyK3EaVA/Z6rqloc5LalpXjbRLmvF7osSTCZnn773M403flxuXMLvjbUljX4xoz3J3iWKl3SrMx6EdPL4aZidDOjN/tnZ3qYB9cW/N699HK0BaDXeHGLHRPw7lzdYZFnOWgSoCQ8ZCEQTImdWS1r+9mcH0TonAYnX/I9yPFCoaS0hV7WQkUoumyv0YuSsdiiF+pcqNUYr1N13GQPKpDSRAaHuRdlW5KY73YwcNrFNAExCceukSuQJw/0Ln3sJmdJSDY+ZEb6rHceAoxQN82kIBwi1XQSdv4KNMsIG08W8Gcis6XMAvNGr6oaiapqtSBDwkPVCO7phPJe9Hkgh06J3v09tKHl8A5j87+vkDlcPJQd0qwtYktqivlUrElmaKBADJV9UWwgbP8jsCSa3WmsTNhJxcY5xpfEWlxlv7XdvHpoGQxPPGAOTupnU6Ube+6/qzqP/IlPTCyhG+KxpE9AgDW2tMrNRcKphE9/ypzfi1q9UtWLt7kZj0ki5GGGWUiral9I0fKrIkIpyEx4/+0WYbA4dcIynzpLppCJrvMpeipxDmLi0kJBzDOTX+AnF9wiTZ4Ar8Sq7kSdbv+SvD9U6t4W1ZLtmv1H9andf16DFHR++Y0EZEGQJkaeFIOTbJDxPX1NMSLj2IEDb25VxBJm/awXKuced7uhLJHAo6OlB4emCDT5loMtMjqkNB5LnrZhmsKi+xtnGNPnds9O6raBjGOeeBoHaMYuPDXl9JRNrLZdxDvpypaZNA8PRwCHd1OHELb2k9mXvO5dB+0GBye5+PCAJ5/6vVCf2BwvEE5NPbU907f99lvBe6ZblALYTDWXWmmqlX4Pv1pzhCN2e+r4VmlN0BkyOtTOzLmrRemqJhd0JQKmXi8TV0ch6e1D0r2hyv1SugaXkmfha3koGb+n61twEPD5yNnH0hhsAe+Jjpgd67k8snz8WRC6Gs7PlHRsaEdft4F3R2FKIIR+0YcgZigJj8xQjE2hvln0KkwhdRtvV/hE6TtHba3RGUTDlztni5ovheP26k59w9XDOcqZ1myWsOsVoDyGwN4dC1fYgkXHucgQK5fsvuzwtqTd4rDaFcG4GID4eMQPFxPZf9YMlKEURxkUXy5EnbkcilrcjzaMm6YbVz7CGi++8pcofp6IVlIu87jeRDstpVEwD7J7XUXFueBXEOoxjVMDfeFKJ3yDo9lNtaFIvwtcXgnZjDJBo7PmL8Jj5PGcIqcgQ1lzyIp9VvJi7q/DBQ0b03oIaENtD5IuvUnzoG7u551YQO/mXUyamq3ZmuyuFQcDzVDzPt1MKkw3B6+OI/ZjG4zFybSLPI+idx7zazKiAfdrHRuBbjwYYuJi1iOZ+3Exv+/7NyLghYmo3nwGwioRdrrWrCtRuN/WbKheHs2KvNaf6/SavN/ZtIYu5Q24Bg21522pIHmvgIcW8PvbkCVacjPyHN4M4WypUFwq9jrlZC99ZgJkwU3utwN5R5yeVh9OoprRFK1mFkXfZNHXyNCsmt8pDjxCmTGByaxuVznW5Lhq9dVc03wVlESHX3IWWbg8AonBseLBnKs2RSv2AJRVZlMe7M6JfG3fFcE5gZDq//5shQyHpGwOV/+LLHKDuQWujvGqDNQoESLhRXmQS/ngLUWi06nPJX2sAC+nASocKFyzm02s9U6l3qa8nVuV7c4lfsVrBFhZLffHtjI79vfi6YyxJur49pf1hHVKFo2mU+pQi+eFdv2pX+7gboPajF2+EjagMJ/XU5Ksmzb3SJBlXWm059ba2+OHxyMnTsKjJ6S86Xg2N5rRV1v56rvPp9ty5/0HvOWhc2oUKONDDcyvfuhbDQoIPnT+/vgMo6jzPqMCb+ZMly56ngP7WXD4y3gdzw4+HUxDqqQdCLjvIyffv5gYwLqPp30ovVkVCns0NEPg6WZ9q7K3Uzvlh0tbBb9erygYJ3dFeqPvDwPZXHbNbI/pMmG2rkji40fPW0LcxS5YNmKouxS6Ziz7QuzCNQNoBE35CNrTdQ9RsP+WFQJi3kx0z1JOxg3Z1WLyzhnfBAGxziUBeoopcMyXPTH2LwsBLzmDBYXvK8Lzjij4II0DIeVnftFFIhJDtpF1RcOoDfPkrtQ7sWBXGLRq8XNeb1keBzPvtdE7acmIgNH1vb1+GU6vnPciEf0cU8tB8F09FD3DqgxV/KXULSvePQmdUUBkiZNNX9O4HBfQ9bLcWKvYA37+N+03gpz3Rd6maXR97ChQAV0qmXu1QkuaxqZARd0dtCc5Oclgcwno6UOj/kDffOC6zh7mRKNfIkqCwrpMtEDcBztxVN8D7vF90JRfeW51lkRZULf1w0huOuSZCFaMNso0NkqngAJgpaIYL9oYv8kzX49NBTyR2iHKdHZY1qD97hiwfagPrnwautyF9ojK2L+a4FiLjx8clYap1eruB5UHPChgdaOFqXax4kS6Z7nZY/o0APLwhs3WO2gzZkChkbDA2L3bRQPcDw4fO5la9ezYKHDYAbvCBI8EHXfcbVbuSupXZM6NSEIx25NYp8pso+PNDsLjFZlmYNSFJlh3DRH/m/RgTgeGZwy9hFLSKE/7hv2r74TGNmCmzjBaHi/uRaaYq47ZHibfPIpnkX9qxZ6rb30QucUnP7pUj7++bpiRT4Gk7iRh/xOnhb5lbL/J8Wt7nA+Wdz3CWWabdU9lHQ2mn48/87xjgjTVU3ikn+I49eLb0f3Pmuxp3kD3gd/Mjs3LwN52dRvF8K3xi9TwOiLKpbcLyG7ynxd0Xg6TutP407VXGrS1zNpxAZfu8ejVv2oPUK4ufw/Inx2k1UqBPLXrGQ0+m1d2itMszbolV2+YPxvMvmVaN+0qjegkgQyMNDLQdHRTlQfk4dahQaUAUk5tATQloULtoFayUTfvcwMRO82vCORtf+8Piovgio1Yc+8skxxAzS1+9MX1jBUBMJ44UIB6GRkfPZpl8xdtEjPolLCvQKdNjU1COguNVliP11t65+q8MksagJZWTdAIbkCLgl688+7v+C/N74NpftGpHEyuIEyD4Vxu+NaGqr6ggII4SKfG/XYphrHGiwKKWbmSidyotir3xDz7SZ1k4rcrlIoCv+ITZ2DGBeZDpSLCjq7bgwgAmhb73CTvXICgWyIrNUkng5n/oPFNaiFRzLXr/GfdGx0KKiwv1OvYwnNO9JQzyQqTvlP1ic99Zutgcx4X4InzRtjHYsXGc7MAGllt/qFBIEXsvY7WFWzRkc4m1tSC1j0BVSuPt9DtpMP2qK13nlc/zRmw98+u2Rj0zfDw0f0VaYdGcP34/MaaDQtClK/Ty7RVGfks/vI9qz1h6zvDmNhz5B95Q5yni/Wy+HvwZXDqFI6A/W9B0S928T7h0t2JMi7ekeP81/3+amvkmqVfAs8lsPufr5mET6t05MOH8jrnDlVcN7Mo8fwerPeAwniMIczqkXwhzEMXvGgjTIyET/T6Zyr4EKzrvWsUwT3UbDbhm22ZgD7YdksP4RSA3SAKOOzdY15uEFqgNRh4i0nxmAZT6GQGyEJ8z/O0dd9hsyPHNcNzPTZy4tOXyxOJHTjLXljFTeXD4wc7Oc8CnnQPZ+GkLJ5EzYmbY6O9RxLZsiTskPMKiuxcd77kwW5Lu6FA+VONDP053cMYZyCbhOvZe2ySiasjh6gH52g5YnIsxJQx+Pl67fBieHVxAkPvEv4i4IXHJAlpsjT1XUEkn+nHzeMkTzW0zm8m8KYm08ESIGxedJwP/f1l6zD8h6AxRzeqAmGW6OdlHt1zkuz5YfKbqm6HsA5j4h+zxAbFQZUXVWGBkISSfKp5gpSVeE6GhEVeT8xWRA9Z9QwBesQX8UmLY5hRNlcz2K/ZXbmcpVNImed7BzAscTZFvJyQXny76/iclupR2QsI0E3kIZaUd3CaJGF9LQq7LOGunIIsn7aY4qij9AKjGrM6C7QD4FIsyjdO1vdsbzTXpjs5lSrbbhAvagRAnMuAOADPNbRXblF8AwrS9XubYr/oiaSjgaWBW1CKVVb+0W7dIEfSSQ+la/NZ5YJKmtb/7Vflm1eTbP9IrazEl5bqlvOfSGtJUF9zr4YZESa0SNzxWa7w3YQ4q+hu1RG4KHCo4scEFEfy8/PJnv5iMS5NX1VIbmw8dTQGSdBfdngxd3P4ylDXJULyHBAqEdBLaOt8Dinvaqjhw36/ryGt+dUCE5YCstSYuKJzh4YzzAa0PB9K56bQy32fRWnJsGucyTbayhEBstlzB8oMvJTCbLyk0pHORnx8qWN1eWgXs+DBZB3tHEYpHmtdIk0nyeeFSh9DRY4b+eIUkoni4Qrd8K+QLJAzGtx+flJmGq1B75BKeA+avMpO2Rpo8Jb2FVp8McLNXKAgSiMCIp0MT8vuL8NTF3x5IBkDH4Fo/SyClkJ22QLBu76cUrRUTxlRT961fnqiNvUDqw0maDfAs1VLL6YAWb8j11DItdi12ucC0RuuCkrKc5dpkDRWOSQEyO9jT7DpO/fP+vxdZ3k6M56SW0Esn958R9tIj+8ZFjQSlZKsBMx23LwFXVYgt3W5rke4jk9j4I2CXlWVwy6Tm3D4u6UAryWEC3/AzeY1LPheP+B/erCNwGXbWoH9aCu3Yf9Jpt5qzGge+EWgN91AT2XPuzyPVKle6KsFsiST73zwODaBfmLxuPjV7p3zSZnEea3NtrM21sbY9B3CcLjI7oMZKXWudvngvTWrfcfsVQxKmEDgh2nvDLKNUUCZkkicnkVgluiSmIWk1lOrSwvFrwZi70RyEMsMpdaPEt1iJ7D3O56WzdYHG/JbjNLm/rVdh/ca9wWqk+Q/Sg5ol/qBmcTyoK5UJv7vdT6CtRcPwaO+Wg8HYNAN62djHxqhYZLBaMgYoMJK37NbqzWOW7b4Hi2IGu63CWby0ulEPEX5KIZH8YhXjSyITPp4EGohJ8OZteWZYfMz1YWLuMIjBtLDowXQsixYo7ZeNNUaw6q3T49z1sCj3h5QcXMqwgo/0m1PawXW4Jz/eYyyM9S5+wieukUBsMCDgZiyKuMf3u/VuGw5YGGM7Bt/u+EZ0bCij7/GBdS7ry4Tvr7vg/10PjdQvzw+lbjcuE2mWnyx8IQD4hLi4rNArZGN7y5AEswMk8S5+JuGQEJc4uYvIdPHzSfkV3fI37O60naWYbpLbCQY0S0d7a98QKd2kcaXafDBOq2mm4PZM1/UD22Y02dnrZ/yjOqEOmX0JOl4GhPoHDG/4nVtE0wiK0HGNwptTn/C1JCEinOJOkxHLUn1AxxX26rJczswuUWPiTypxoIHjRs8jy3KFROQ2dmATUXwhT7rs95T8IO9y2VcxC/Sc/aj64QKkR13VS7xyIQ1Co2mO3MKjev/MRJDpnts3QU6PumkoDDYRIFarkhUhnVUcSkGFPvb0W1PQDy7FLLDq3Etj6fi8mJ9cis4+RHamv1mZHgLVgMJceozafzTTxOmoCbEpZ+ss0x3awFm4Ht28F/fqZOatmZ1R2tarDIyncwyvZr+kSK+T2M4cPjQvXA3vuEbu8hWpqmJ2giqryRlx4+VpXcTjLhv4qlrJNxssNWmR6hIsOwT4M6HwDJAxXYukMao+Nh/RVKzMrri45SoBXqZtAGwgnpHNcQAqfpjsYAGupIzQJXIDiPcdzDB0QONoUxmY+BJaoL8EIOHAqglpwPWc4bO8fsVrKCPMRhpHHF3uBBL6kZ+om69Hglw53YCze+LzG4qWAeK2mks3/mtpgymHhx544KsM0+K83nscAlpmgtjMJnmHJOUM/NF6iCWWXyuQcfqSQ8EhmW7UgEROjK5zOzOSqqrT+vHKutTpIgJkZg6BjHc+llPY5WZnRL5odCpa+VTYDtiBPbx+s80dWk4syBa4FrkxkySGG5DRY98THJCgDpxnxudgyCLR90k2T6QA1Gy8EvLC0cKGc4KRAsDP8U2iMrUinSIzepUXXa5B3+SEb6gd+Ajy3Su6WysD+Z0bLh+DByhyb6ySyxnduXt5ZSLrIfpoq8XJFstjENOYsuIcf1qviNiAC3r54DrBvhejBiFfWoFossVxVAXVMSpMONJlRUNc1ky3DawULEbiWuZZ6rXkJHV35nzhh0D4OnVjZeWD1kH4dt3XKvzSMlljy94P3eE1RQyGMfds7SB35RSs+lqwZGteugTOYIgeld4TzftgiUEoajgspuIDUe7o74NEQ8G18TDH91Nc3jfYcXO9m6sbpxSDN2ZssGSQABCLgxI73c5KvunFhWeVJJ77KHcyfojWjIo4nxt5vsDivL82127ntB+qZFHvAb/92Y12Gd4hJIPloZzzyYRk8csm9mFx5/MxjYLwX+Mmb9npuZxxMKhviytZMt2GCbiT97+ebfVGbTQDKYmCpC8CKfToXvpxSgR3Cx62iqfXnXA3/6Lb80c9RZmFMhDz47f3Ty7FwFFC+roIGOx/qliM7BZVGwB9Cza6bayf0/PI3+qicSQVNNhGlbNvtbOK7DdREEMOM7DCrE6otVD6S/NUhxsXgIBF3di9cigqtft9AHXw7EGlYdsW1OG79NEpg/mcz5plxlKQksfYcj9C58fYDnm8LjlvnmnekhjK+MSxfKBX2F9qb1+FPYvu9lvgFDt/dUeGsZseVEc7eDQ5QfrxY31uEUc1CF5CsirfQ6oIRyhWpbUwTlVhHuVqoUtWJp5YpWqNxWqa0zBk/RNlbgPkr7uxsZFgprzk+zvWt+GisBfSGvD9+BOGMEJin0Yn2TtQnqFEnNk8kaHou85efiXvNMP1zKWN3owjGzm5bWDodgiff8NV5VzcTatnpjQlr8kw+FTv3QlWDIyQjs4Xj7afxIt8d7yF8OhIGhHkfHIhxOSWOIvDFuXr70eCwgUfxOneSJPqeLzzMgSqMMPl1nhL2ScBxGtTF+ZIWFzTdl6v8uOQbxnxFg/CjWhtLBHfr6yZwS/FYStwXBMVCTqmeMcdv9pZcfEmElNYJd9RGwploByUUHDp6krgjUceu4QxPF8PBQGUJ9WuKIwSwQsjeTHsnGwurPkpMXx+/P/pezucbeWcl1C+huchZstGgPVBIieqXgUxpFmP5uPFsqaYZy5MHm20CRBsRBrGqS3mMT7sgBgXhq4ojIfuFnRCgVpPmcwVLsHiyIp4SVPUVcDXZj9WxgPbhRpoCjA1Go9qp47uDjM7317piesVJUjTYs1LjCEXVhOjSwVhDk6GpcO0HeP2B6qFKQAfK0+zHTnZCyXlAjiuxolx49qgCw1kK5v1FB8U5+Ucof5dpHhpzWIh14RxhuQGoQCReVW4sdGJ7apzTbedROcTw2wj4gDx4ITEJfHgH3NFpUbgvGtHdTFpo5qSv57e6O2Pi0qAyi/IpdOur0VVnj/vw10Qp+YXkqM6XbsaELNcTcvmnj6/9Cavg25cN6zTkeTFXT9rH5mnImppXEvmAXBsQlQF+j8vxIYbuBuXBM2XscXNz2m4mv2Ihme8uQP4LMvW8LB7cQ4itybHJKY9vUTyW3gMClg6e0ZZfh/87zaHLaSqzU/Eueg2kJ/gBk+yHxhxmLlsEC4/bX0qBspekhs8W73CmNyxvwVBFP/xPNbvA2NuPNYu2L7AO+Nr7v3MAoE1Obr6BjLzrNgd1KuLfXSa1++/oI7s3n7lrgMFR85SDbzxYMb8jUiofnWp+wPcTJiqN6xgfZq9bURVngAGsi/fNGIvkIHu0r3p71EjXjSNenlQsPOmE2qMMgYlrB9Bldi+jX6Zf71G9/991zc8jKoRjbFRj/R8R+K64ObDYrg1gdC6DVXs3WyqNkvYoNn7GAuLbDxzM71ePzLyTSKjE06/scHQHLxhTgW9elAivO6MR9huOPuLQ0H/7BdY8S38RJjAA4g1wKzsDf3nMiWATkhNSqDQmo0WysdGgCOEYElo+t3KlEMp0gVJvvV8BQZ8odtujdFQUrt4G17Bzs1722oQXPUBXFvut47sca9xjjAxm+dJsMplu8XmQ9pqtStR64n90rwSCijABVXNu/GLihc2wwnqQkTXeD9Ty4LXvHYwthB245no/+iTfaJzRHdGudzH2CfOqhNQeP8HOTdlC0tiCXAwkwi9Cq1CeneH6B+eqZbk/UHCxNWqr/5UMm0psPS7JHbbg1Sw/gAC/x+93/sdQyQ9AFz/lN89B616fXtNSUEg7+ypxwmvHkK2yiTUmWW7SA7jKssOWh7Y06Z4ocQvbY4ICpshJWGrvN+/XXBjV1sg4GNYQonRPqZLS6+h+X4sSLdwjlMee6YuEccugdsCSxdpFVtq3MUFMpBGQT8m9IKJ7gWFOQBZ+JdoiUZaizF4r1CUNz7CjYDp2Dk5vATzCPceWeEHiKBDtJPZB0lSU+g6Oe8k/stZC4M4qiynE5tikBM++ynPIQuOppentr1nZ3Oje1zbZB+n0PvzjW7iTKB0pkXs7XDihRApUoJEbWLdZmFUNibRduf7MQPOixDZK7Y9MJjX1sx5OdSY8P7eqpHd63vK6VrUHfrz3NDbLMEStZUfI2YyGCKnzVVYKF6szC1qOMV7SxmxUqHB0vxlMQ81GUezpGbUdIBeVQuJwnivZYZQs/CLiso1WX7buh0/yIfCSU3O5AxkCpi3TjKoyGeQWfEDQLR15H/y68DYhDCiLzBSg5xqjvNL4fyuCjA7R1LlcBOfm0mNlyz1OI7tAouyUWAObm9fJxJI/lBQBkFuv53wIx4XhkqKkrGy3HzAIaDWU/QwL9vFMNjpP7jmyiQFlgosTkRmzAZ3RbcEo0mE5O+jHHCorwoDJdmmMHABnSN3A5CwWLNzyhItat11plmrJkvWekvlpTz8W6d1GzYO7lKcbsLGnn4zt5pHM2yY5zAlM0CXSs61TnPle5sjzuPXChTg1B8qs7jLAfeptnwAfUrzA4QyNfSpyD3LlwhNxu/yMQuYwFoQV4x0Sf13CXGxNdcMkGdor+BBJyGqktRtT8LtCTqNp7txcStjbJNGJA2euBTdHENdQuknqG/Nqmo3zra3rv3Q5p6BsfmGJMKqkxd7tKP05+iTvg1SyUJGpYt7B7a1rR51nuHiRi+oZlnlozC3jaoM6BFcOoGt4Ik1wGLLbYRfBXxOAaW0g9mc6e73JnKKulGEMZukRqsTCUYi5SNmXyGVgSk/N7aJxAn76wdOEXi6S2DjM6mM1aHN3e2zrMk7hRsyeNNkDOSg7N5mDxQG/3Xbrblhsxd+DryA3NG37r+FdtcfC31RgqRSvh57VkCY4aCdZFWhAC2ESZScSpr/jSZpjWGKM0Py/3ts5EvLBCySTUBaU1RgHeBB3wAsQHSyBVUBmZNO2ClSt2WCzlVFZ5FjDRHIWIRSGoKaWjFlmNIpNcERf3cqbIFwqEigF/lFR1wh73VqgMrQgWwWHCaaY+5/dsxQ0buTMoUBrjUz4qDxrbYxKGEjkS4M9NjQYkdZX3UkO4bxvVKZSjJ5IxD5ShXgnY1DHCpjB6YJOZi8TdFwmbrQhiEFZYPHxTRK2cIO2Y04LrOCfIgkNwHx6TJs5p8QmFdrqZr6nPfKy+a3GXhYB/w/1XkK3I5B0gB8SDRw/OWQ8JLolf8PglWSWgtyTrZSqKhiPyAfEpqmSEwt/FUWNhih0GcVhLacfFMEEMr+uwbgOLAwcVLiVbac3/zBuQIPq4JXq1h9fIVCkhUXE5RQu2tpqvXPs+GEQyY4ZVTN+ABzcFOQsgJDFSHr7IopwxZ/qK2I47eBBzliO5ekpMHf8iDaQDIcErBWJCSrXDAU22wnCCspqShB4CNJDIvW890QuQBb6+8iXg2tGKJwfevTWanTPNkS2HbAlZOeQ1LpuM+mb9XTiDXKtW+U3rDKtmt+s1O3P/WIDD5KSP3S2OuXh2B7aaWu5T+KlGfWy1mpDf+ygpsnvKXei2w7usKTnocnZJItRA9n7n69RnAFGuJA83pdddNWW3pudRNtrjZgI5uy0RtvmMAMGDXyKMXRYplPHV4oocbtNHO/sEvudievMONJHWZqMOhoewGyR7+AGVdRyqcA1LMqlF0OcrKBzf32OxRKi+BTqckGDruLaHKFTsIFwqCD8BouYrj2NXrOqhlfXO9iXY4Z9kO4Nzffrkt8766POKFhwcHVAZMa0QkGQ52rnBg1EYOeqsBzCZYc03jmV3hdQLMQ+h06rCOua14aSsVi6pbq4xj+ZHdVFG0uKjttfBBOpFFTAgVvn4aj67Ui05fblgKKvYxAwZeY8n/6wgijo+Sq5rCK+52mNj0f55eQwxjh7W9BzRBLnEUHGEhgtoQ+GVt2hEiXxwgn5Y9dWbJSK5nsFl7shwuNBfMDQM1D8mqG0qIDrIw/rxuln8D3LqJN7heYi3nmt0kmD2lbfusBy7aU+0Sfq7y44OpKzPYBP4OyMyP22pxPELaJY2QDvUqNA12OpRGuSpYve8ZycmEnS4GEEPp3Rj5bRiSOrBT5Vefo7o5Yc5VM7S1eSoxPd0UAuUh6jIF8PwPbXVWbGtfz1MSLm2ljslvWDKKQOVnKB0iCKwR7mfTvX4Ko6kikZY4eNjnYbddjwygd4UiHJNp5IDwB/zBHgst2M61QEjSPtCyuGQULU+nz+v55bUP9z0n3A4z9on2PGMAxnPtPRxZe2x1umoPWwr+OqGwvnMVwl9VoBc3HvWMXt0jfxVYW5xP6G3B2Sr2fdHnosc1l5cgXqaVuCqQco8diSAyDXkskyVEUiuI0n6Udv9KwSLPhwQVFEra7Hi1VdcCR8/xEv0h19nuUXDh6aGJ1V8+Lm+wdrym7CLZFGIz3auYh4kDYauwoEkepSq1beCL59+2yuj96RkppSdfNa2RNCf+UcPP02/eHqbscihjm2TBrXca/GoJ5jLP5cf59t+13qMG1acz4N8J6x4/suuPYzx4ufypL6SR0k2gq5Frk1dw7erSj59x6ZzIe3LASXptDH/RL6t+lRBFgObpMJbhcXVeOPuEgPYfMzWmFrgHKq4zJWnLd++q5TzN0e7b4MnMuCKW0dmMcInlCXIS4rKhBAiLEx+/AdOqJ3hge/7j05Hrgre7v2g0mMLHrnGeWiHYpQf5PO716PsWM5ip3dHsVbZsaiclq+dLkj62Axa77AgdhAs7Dgg5Qikc/va/n2uTz40+4SE6fHAahS4nz+Oca0pKH27p/NUu3jEXWTegdcujKKGFZHj5jV/ARPWl6XQsbd2ZO9YrwBYJmN8oBXw6QJd7Q71gU7ATKjElLqwa4g+Cpydr9FQyQkRm1X4zuGlRmqyuq0u1H3NM4X/3y0XDgzPeP+WF0S1y+uk+NHwqhTSTwtKXw6XA+Q2ZTYqjiqu3G8ebzH5FHKhH29DSYz2mlp15Gq1e6Nruv2MHOVGAnS+72tkVzrcgS634OyU9DjS2HAjB8rXSqtK6JPQBu3GMM9wgScf3codb46rBojxZ6OUsTCgg8oS+7XvqJlvAgzjnw4dTqliFzsdkYZhqKjcHORc6lrfrAnY/8p0UBnYmB9J5nMEEKmvjspdQBz8cIFaFPwC3+c6h1sv+Rv2sVkaqU9RpXCX5W00wNgkm5VkqWzuokZOrzA2TKz6XlPszk5JJXdkTfioiX3QzLjik2LIzrHAfrXQv1Cgf5cKVSbsswPSNrg8TBR0sRhxnNvkhiiei6aUJvNSqJPhY0/rZ86vzo2wrfZ3POoMazBE9M0TY0JKWJzRA2ifu4JyKCBqcXKma0iRf1h4J0AjDb1dILg4P1l9Wy2qKGFRHmZFeRB5qBdYmL6+FuRJkjOYAhY+oLUeUI1yVsLDgyRDveB0juxiW4pL8JFEUG/WegOwViVLYmUGMkWJUot24Uw3h86lh8b/kkS5xCGHWlOUTwCqepr+isW1aEQPOIu5EDPaLaxBG+L8cR1QOwRHkpk6SZWx18yE1PpIZlFBRpidFz9jmlbXdE7stM9gWhesAPCUFON8anO03PTXGpby7WUzJOqDUGh4GLmNGoM3DwL/4cUwy1ytS150x4TyGB8WMdIhAm3+YOtu5sfUPcKEH+hgqaQqpfOvk/dSXI8IpRbsINNFlNZjKYjGcQFvyGs59ry3WxJN3OlsTt+LY1RzlYrbl8l7eerXLHPJJ7hqwfLXbiNaFe8DC3Lrpl1KeAx470H/hsRSKgq03DP3/eAEsK+UmJyjO+oXFgpGS3O2vu0AYyE1fW+CHGoP2mTv7kiuEkAA+MMNtU10BTngiUd72wx4a7xFfHCIV38hVOHuHC3Zsx7GgDdvO25pIxo+VgrNwlCdOuhIF12/vt8eS3uf/VNCDtAOf7J+F9YMgong1OO37rGfH6JDiAiYBGz+ZrxjSe/Fyx0TNnCHbetAo6a6ql8EG0gKVlZj8ymLyVRqfRZHjU02KY+lcVv7jBoDoKmQIonOJHRGaZTD3P0FSFMX7QSIvq6ZBdOspqYamYlRg/JDishopl2HGvni3BbjulrlSlwcpHWC26vrimypafUMkCbxzSP45w6clKrYTeO2kgqtvt3RvF+4RGfOB0PV5x5UqSiZx4PnFe6Z1dmqP/fMNWK+kU7GPt7bDk/oyuDXiP0g+Rtmn7QUAj9+3CkkdbJzn0aa3zrdfyosLRwxq5H/blnRWkixvgkQEs7NHE6kMq94GsTLml99PL1JJkYjZ7k0B3dA6v4N6EFJuMAFHzwSg5IZhuPDVs6szyQOUwBVbQSPjSfV5j2CDpUblvLNMwijRxZNG3ohnCseTMcmCj7NV5fZIjgCVXvIKlDgXBdAap+4rBRq6w0l/je5f4OBDSkqfRU0N+3l/aHSk1mEwq6qCBAlEYGmMoadWkOCBMaccz1LUG6WPwtvO3zAD+h52ucIc+qIHu5DAzdKIgHc46sAhMl9FZO8Q1sd+uYHwtT3V+sumIT4ukZ10ih0JP6eBnaFmb+7hWL1eFaZXgLFSmyacFWh+VVCEVoems8y1uXpDkdlGMoEKkl7kC4CJM7QZSAbH+UTr0Jes1C7dIwuwmmG/k0aMW1zpfUA9d3SVUyfKwP06KeXBT0h3BlnWWigvOVlf7ns+hp9p31/LQkDvrs6twY72jFOJWb1rnXJ5OaVD2pBpcMDlJrbGlulp5vguGlTHimfhSr3rPjakbxopWXaU7YNjeF4Ek5GxrIlpeIhS0O7IEWxp52Tna5x99vD1OvdMTULE/k24sho5AGd1RndYpv0qF1Y2imJHRoeRdedpz77iHceoldm6aXzr96Oy8l73oZiwnxGxghQq07Usbo8EDD6HVh/5vrdv0WAkJfiRX5cPytcpLW5YP6KisNGX3WuBtW25yPnzYeo/OVMrBMxnfP6jiT5YANNWqVDuSSeEbeqFUl2fBSE4mm48uV1qlWtd8PSQYqJZ9zRMUanK8sHXkdZQlzGCz0ofJEoRhsasA6R2QvtBSTp1y45GHvzynq9P4EEA9ByATnAga/ohNUzhkYaz3VGeSc/XVlOQkQyVWMFuuYm5AMOjbI6sxp4bLnfxbJ5FMJQ9SIcwatzkT37iFLgEGRnEk66AWV5Fe8QT2W3OAHgsk4Qy8NuXx/zspgO60FdHZD0l8kTuu9khWWImr2GVRKyswpRLhQQ9pd2u2Sm3tgTAsmdIdQ9V+IY55u2QWDJoMPg+j2WNmEwNl6Q9+fFoiTvqPqJh6i/Yd39ZTaIWbp6JIcXBaZ2OfqttT5DrlYonOYipaODgigdSOGRQJbG0QbRUEMPxAKrgsAnZ+tMc6eUzs9pk/bg3YB+IABVZMQbw4DzJ5Jfhu2tJJ4Sonm0tmAPHkSUpTrXzxHJVugLMZTOrI2NEPv6GIHdZQDaXAqGNsWT/ibWQfH66Ysv66OBkXqOue8Ly6rj5z9eZqqKFO9UMRZTJYp3mbXsJlI5am5ZvetqoDucowAoK/L7i5ZveqBLWWD8SUPy7f+2S4C5RJiezO9yKV626Q6evFVxV7p5SXCbKlGYN9WTdsGvwo4hrZg/5n9FnSEO7dgjN3daBOxnUqf/c9Sv/WjvpckuGZAWz4OTuBIzfBf+tn4ScQH/vhysLhdleufh+ltGyTrl4D7so6wpdbFHy8/tV/AHr74dNHxosfr5tFIpT9S6eQlrR3X3JOMG0LPNs7dxsSq/WyzGOoXTmFRmR7PuszH5vhDGXHch3X8DpPjX/J8RRLY3rPGbpL4T6e9Nq9qPO4T2w+tN0nsMs4Grlaw2NrbxRBOPNaUENdZksUvS7Hs7TKie/9IdJr9j6cMPaYUdlumLrvWKSRTy+RUxYFh5T74PomiFD721eAMY49x+qnwk9elIXAlNfePTCjLLzibum2v5PEBuplKl68Cus/xibl0Y/aJQuZaIcbO+g5O5Jjyr/OW4S5YbcF+4ITjBeKBzvB1Nk5FBNk4ZUJsn5/wo0puziw2+1osL4UBWWfPwC5KntSqDTtIWKXpkxP0tAPcq5r5n8DTYYT37bfh5WwoWho2kkP2CmHlgknUwAktheidjw4/Uzg8NMOh/G7wNh/OoUUfjr/KK397eBLPchJL1bbbDL4OjIFGVXeE0R1os1B7KvxVY7QLPJXr2HHA9uHERjO+MLEl4d4JJAmt9VxiBxWqglLphxT91RGStfQKd2rP6m8Z9Vn+f+m859f8zWlm0t5ccvv1Q69NJOHiUBubo1tfoaWT2UIw5a1thXNSncoUmXWdXSA2CLk3tF7546aVZ7QtQ/VNDsL4EYhYTb/lIkQfG98SWAYWmTMTShbk4Qfy11k80jK/laNfWYyUEAtWsnnfMbCfYIrI/2rTDmOL1CessZfi06agP3n1y0y9gHyf9PCE/b2N5/x6w3ixas/9z/Ad2v1jPTfJcO/VaNEK7Dzx9e4s1dptoW88QYNKMXqXazVxg2M4AmHmqkJG9p5xjDfVHjei1jbTr18XGKsh2TkgPZ1/KTKNHUf3e5VaQlo8qeKkX0xfWZ0EU9zrUMtjWnqhECWhPVFnurOWs/WRHEP4FMtu9BkrJL0oVvieC+FHmHUGVxeEhVSTsHwU9o8AY9hgpSHYGXrcIfT1Fb+uASiNt5Dl0zdz+1AYbb6y10prr7y0gJiPtlJ4l4ctd/vUUFpkC3UmMRf8C6L1J+5jMHRasfShichdcpb5rtTHmE2nshgtiwyS62PM0yP4hWYiW/96FRVGTIc65CiLCehj0fZRE09SEc7sEXpj3EB2sKoNm11+AZhccCWbA1lx6Tw3ZqhXqdE6TqZbjw9VvomDzfIkXIq7YHLnRYPTt2dAbbBBF/A+NIfe+vSS6P+zjDsEOC6d29pwWUujMeZuI45Zetr7CGhEOimMTB7hi9j6UlMB9OHBNTjIQB12e/rW4qFE7OMGFrVdcD2JuR7P1I+MNJ5XZkVaDs5F5Q3ZN8ZzkNc/VZ/hv9uMlGaQ05sBJBY1L9xExqM6AWieO+rwGqa3Ko4HPX60J+Apdjwk9fwGy20V4gA80/BUTIgPmwLtfKzjmdcplIOsjucS52mu+K9aTdh/ieUwRlT4LuOl9U1JKyWIlKVN+q1+fDHPsZ5E/iFFI2clNmxsMCejzrch3MHPoiEOle4icmBqlifqxfhgwmQcqiaoI/jSkwWUqmVTZbVmPzWU27Tbwb+tcfU/EbTek/vnlwil9ZrHzrUS0yQ8WrD9CwW+qtgoS76ByTcskj05uMxFrn+ZJ177ZBsxFwtY8o4axcrVq2Q+ngP0k7y7UJVmjuUJWWamb5AkMMZAAmpmZBiI09bXT16KzYB5S1fWdUW7UYlLyqB9eVBzBx3N5GrW5GEQXItwf0Y/xk3mPI8pOLLhTRRE9zvAONYJVex0vtFdL7t/3hKOpRydCKFf0XWBMJYb5VYerW/Dx7w7fk+/cL9cma0X8/6AKrOePs3Ddh08rJu6xbd4u+SxHNwFofsbemylGs0buc1/60Fyh9gNjblDV7w912H8eHUmxV1wDjeOqhusV1gTKmphq2u6R6K7Rqc051zy/lZzw/2+VPAJhYKqFdXvReioT21xHAMs+CeeOWnHFty7oiShombJ8p/rty+adf12j2OZw77mhr+qifdBd5ig9DqLtcX+WeOZvlBQQVseJMIyheWGWM7HLWiSbq54ubwcA4i6JRWD3dMTKLQgZAEDHfJT/VkMBL78cRDxdLxgbjAeGac42K96xtMSV2MzPkM58j42JUTbDEkGSQx2Ce4fu/qnpz1CFt2gC/3nLjINBh5IRl/DW/QlsX8QNwHUObrmb8Kp9Ns95M2HGDgU07syy5tS8ZsWHXyWYKH9916xkAXKJ+kyyPYeiCN2TWrqcyVRFKsF5VvUWGfq15DFV+1LzZK+4Z7XcMT3MBRTvEYB21VpYe1kKasDyb1t6TiNvBgReGNQ0SM7VxxSfpoc+NqLU0Y6225wmCaNrwwXVSGHoBxT351K7v1qIn6BzJnRVogbq44R9U/sKFW7+DLLnVl+Ev49AYYENfc39/7r8nkftSvoU0RctQKtMhC3kG0cHpttFmbXftsSV7Yy/A21oYeSBZ41keRqfTU8pypllpooUVqWHtL3iiMAw/4zB/fxnOp7gxgt8J6tFPqGAIFKhoCf05pIJvURZXT2xzRw0lMN5Vm2sVz14RCI2wEjtieLsG3ngYZXbeb/n+JCnoO10tyQesaMfRl+hV1eyS/9sevT7OqPliVjyWIBd+mrPXuRtFlriHV2yrVEk8dJQaxyFUovz3yuHDV5eZjT3qNiOukGdAqra7sGRp32bjoLx3dC431D6Rh7RcgvWriENz5ChUeiAo64IHUIM473AYvwvpg/kHrvPgFt3X/BZExcBW2+wylxkjz1SO2jG3+v5MnHiHM5xx3DtuJ9cSTsI5nWcr6cJLjQLcT7cgqIy38PADedoEh2fBDOdrXVHP3W52S8sIcH3hEiEV78NT/POdLqcrXCKs8EXqDPuinj5RDQovMQu3fhVqEyJF+bqO2Ec9vjaN9bnu/Slp1l0ycU7pAKoSGZ8IZmKIbtvBY3QnjcYZpb1jcTYt3F29qqsNn/Apwd1aH8PCi8GgMp8HMFLTqvQxgHZSBH0oTwO0sfvX8PdzA41VXYyf7OlzavxGDe8bY3RtIb1faLz3n7qcXFYULWXCG2HBbQrJX9mLfwuay22OZb926J6Bcvbe1I4JuTUSDxEOi+1/gssplHK0X1t0YJF15NCytDTij0Frj1y00QjveQEm+fZQO80SBQODfL8VqMjHgtHk4JpefGTi7+aPq4IG9A86Eyv4r32puOcrC9HhuVRKugXC6mB+uX1FybmepPg4w8/iwpyud/80F6kf7LrAsbxGNaSsT9ZpFeHv7TF3FqgDQIq5MF5eBYdV1kxgFzPc0G8TFA3qyy3Zegg9IukEH2hIzmgV4fP2StvD4R8vRITHmY9PO57MjKjkSvk6f/TNZ6G87oCQQEq8pLr2Z3Py6Iel84KaYX3l4fwTDO09BWHI3xUQ4IC7wejd179zrMOUt0zt5Vpuo3rt/8PF6dNL68dobLMLZb/aTrwq5drXO/9ZnaIczDl84RYe67lRiN1FqVtOal/SJp6mNnDEIawklxqjc5VSYSgyyhCV/o/LKM9yEmZcHsCKWI04zMPPnuKxmYRx2XFzTCv6VXqgkCWM592DCdGx6MThxVvlIexRZD5u/ic8vh0l+ZG9PUfua0j/AxxWAbVZkLHsuqId0XJeJotV5auUiBfGJlpBw8/16kbNuHP0gOXQmhrKlStEjmS+t76lk11081V6y+F1O2cEHzBsnPFY11RyQLzObGcUf5HFKP/84ROllnmx6u0Kw41Do5M3rE5Uzmjz3RuLNHdSv/XE1DGSyI91nJ09oop1uQMAsaCH7c4bnpiLkS3ORz0exGUivhskeZJTszQCXsLtaevb218dwYPSCYWl73A3srYo2emf2cDrsNDzSUqE1ks4HDorZQ8qBgwuv9QNRQJE1f1tYklVVrCDF9s9xAW5WSTAd0Pc6QCI/ptrd9fQ2q2fj8KChu8X63jl4rD+luMJxUK46bPOaD2zB2+cAQ9OuHyZZ1lXvQ9U89QaFbAvh8pmyDil+A4RAFcqkG64k3FLu7KGVyqOd/7/MIltteIhqXT759jmAGNSDpex1F0KVuSjYTq91Bvhee66h96KP65CLnDZLXY51wRd4L7U0vhnGder1dltktWBqZ4ACH7YjJ/w4J+r9OcZv6tpuoRKhV4i8cxJy760PR68sgUQcTx9KloJcWFy6luuL43CW8Gk436voIcleJOXj+QhEoTPo4/eIUqiNyWLBshUEhuuUMySww9Het1IkeXRkhJbv5DFSYFtFWRQSyJi0vEnAzgq2aJsiL92wDPHeqMu5B9ao7uBlKPWeLOUSPKIgQ0nGTLvWzDDK2imz/QKAsXLXLKcAI2KX8jE52PzyOcCG0ShODTM/TTRyTsMns8jN5HtBeMqy6ihNQZZOZ8av0rFnljO1sCSnzojG58SFuCJ3sSQcR6S6KfWu14iGG8IkOYnyq9qziNURMwgSjQiwZbUce+z2MtRpHpywmfDAfvEUbwW1lyFQmEyZEyf/jr7GGwMGtTJG7p3/dc14QBU7VJbSaolBFVH17ueILulsVCXQMJDo4z7GTJDEfXfCgLg2yhcOmd2okFEJRFhxHlB745zamCUoNMk7xDv/4n8tzw3m2rC0r7Ja5VC1urV2IDrMA+xxV/Mh7szka/F/3Sdo4y8B4EHmR2YMtmYLdbGd7+qsbLAQh3ps2DxnqSrYI6phwAMcE1BK+FImTFDumzavuVRJqYR13k0AZa8V1G4uGhMwLkRkuf2A7NOqsL6YWAStKL3LlzG8e3TN7DPbuosUtESzM/slfbbqolZQ53jCSfJVLOUXxZHLI1evqWbarh3dgAAMTxfl4QmzHC5Wv143nnaxnbRPkZ1TtZQbxjVjqtwW0cpTYtfBv6Ofg4P3tiXu8fdP0PjMN44/4uxk/JHwfMPVlRm7GvaQnJ2Sc1/2tr5Vbvbr1ZQ3NBKt58GVNb9ARdHJiRO7FNSbXLrjDVom5n3vC7F4gWRw0lw1GCCgzZyhdqUs4Y6JAlrZeDfLu3q93xJqaAOpveFHPscps5oO0AORqQ2O3uwo2XXIEA5P/WYz1/rXxh7/y7WospS9bQA=","base64")).toString()),ZW)});var hBe=_((yXt,pBe)=>{var oY=Symbol("arg flag"),Yc=class t extends Error{constructor(e,r){super(e),this.name="ArgError",this.code=r,Object.setPrototypeOf(this,t.prototype)}};function UD(t,{argv:e=process.argv.slice(2),permissive:r=!1,stopAtPositional:s=!1}={}){if(!t)throw new Yc("argument specification object is required","ARG_CONFIG_NO_SPEC");let a={_:[]},n={},c={};for(let f of Object.keys(t)){if(!f)throw new Yc("argument key cannot be an empty string","ARG_CONFIG_EMPTY_KEY");if(f[0]!=="-")throw new Yc(`argument key must start with '-' but found: '${f}'`,"ARG_CONFIG_NONOPT_KEY");if(f.length===1)throw new Yc(`argument key must have a name; singular '-' keys are not allowed: ${f}`,"ARG_CONFIG_NONAME_KEY");if(typeof t[f]=="string"){n[f]=t[f];continue}let p=t[f],h=!1;if(Array.isArray(p)&&p.length===1&&typeof p[0]=="function"){let[E]=p;p=(C,S,b=[])=>(b.push(E(C,S,b[b.length-1])),b),h=E===Boolean||E[oY]===!0}else if(typeof p=="function")h=p===Boolean||p[oY]===!0;else throw new Yc(`type missing or not a function or valid array type: ${f}`,"ARG_CONFIG_VAD_TYPE");if(f[1]!=="-"&&f.length>2)throw new Yc(`short argument keys (with a single hyphen) must have only one character: ${f}`,"ARG_CONFIG_SHORTOPT_TOOLONG");c[f]=[p,h]}for(let f=0,p=e.length;f0){a._=a._.concat(e.slice(f));break}if(h==="--"){a._=a._.concat(e.slice(f+1));break}if(h.length>1&&h[0]==="-"){let E=h[1]==="-"||h.length===2?[h]:h.slice(1).split("").map(C=>`-${C}`);for(let C=0;C1&&e[f+1][0]==="-"&&!(e[f+1].match(/^-?\d*(\.(?=\d))?\d*$/)&&(N===Number||typeof BigInt<"u"&&N===BigInt))){let W=b===T?"":` (alias for ${T})`;throw new Yc(`option requires argument: ${b}${W}`,"ARG_MISSING_REQUIRED_LONGARG")}a[T]=N(e[f+1],T,a[T]),++f}else a[T]=N(I,T,a[T])}}else a._.push(h)}return a}UD.flag=t=>(t[oY]=!0,t);UD.COUNT=UD.flag((t,e,r)=>(r||0)+1);UD.ArgError=Yc;pBe.exports=UD});var wBe=_((JXt,CBe)=>{var uY;CBe.exports=()=>(typeof uY>"u"&&(uY=Ie("zlib").brotliDecompressSync(Buffer.from("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","base64")).toString()),uY)});var PBe=_((dY,mY)=>{(function(t){dY&&typeof dY=="object"&&typeof mY<"u"?mY.exports=t():typeof define=="function"&&define.amd?define([],t):typeof window<"u"?window.isWindows=t():typeof global<"u"?global.isWindows=t():typeof self<"u"?self.isWindows=t():this.isWindows=t()})(function(){"use strict";return function(){return process&&(process.platform==="win32"||/^(msys|cygwin)$/.test(process.env.OSTYPE))}})});var QBe=_((Y$t,kBe)=>{"use strict";yY.ifExists=mdt;var Dw=Ie("util"),Vc=Ie("path"),bBe=PBe(),hdt=/^#!\s*(?:\/usr\/bin\/env)?\s*([^ \t]+)(.*)$/,gdt={createPwshFile:!0,createCmdFile:bBe(),fs:Ie("fs")},ddt=new Map([[".js","node"],[".cjs","node"],[".mjs","node"],[".cmd","cmd"],[".bat","cmd"],[".ps1","pwsh"],[".sh","sh"]]);function xBe(t){let e={...gdt,...t},r=e.fs;return e.fs_={chmod:r.chmod?Dw.promisify(r.chmod):async()=>{},mkdir:Dw.promisify(r.mkdir),readFile:Dw.promisify(r.readFile),stat:Dw.promisify(r.stat),unlink:Dw.promisify(r.unlink),writeFile:Dw.promisify(r.writeFile)},e}async function yY(t,e,r){let s=xBe(r);await s.fs_.stat(t),await Edt(t,e,s)}function mdt(t,e,r){return yY(t,e,r).catch(()=>{})}function ydt(t,e){return e.fs_.unlink(t).catch(()=>{})}async function Edt(t,e,r){let s=await vdt(t,r);return await Idt(e,r),Cdt(t,e,s,r)}function Idt(t,e){return e.fs_.mkdir(Vc.dirname(t),{recursive:!0})}function Cdt(t,e,r,s){let a=xBe(s),n=[{generator:Pdt,extension:""}];return a.createCmdFile&&n.push({generator:Ddt,extension:".cmd"}),a.createPwshFile&&n.push({generator:bdt,extension:".ps1"}),Promise.all(n.map(c=>Sdt(t,e+c.extension,r,c.generator,a)))}function wdt(t,e){return ydt(t,e)}function Bdt(t,e){return xdt(t,e)}async function vdt(t,e){let a=(await e.fs_.readFile(t,"utf8")).trim().split(/\r*\n/)[0].match(hdt);if(!a){let n=Vc.extname(t).toLowerCase();return{program:ddt.get(n)||null,additionalArgs:""}}return{program:a[1],additionalArgs:a[2]}}async function Sdt(t,e,r,s,a){let n=a.preserveSymlinks?"--preserve-symlinks":"",c=[r.additionalArgs,n].filter(f=>f).join(" ");return a=Object.assign({},a,{prog:r.program,args:c}),await wdt(e,a),await a.fs_.writeFile(e,s(t,e,a),"utf8"),Bdt(e,a)}function Ddt(t,e,r){let a=Vc.relative(Vc.dirname(e),t).split("/").join("\\"),n=Vc.isAbsolute(a)?`"${a}"`:`"%~dp0\\${a}"`,c,f=r.prog,p=r.args||"",h=EY(r.nodePath).win32;f?(c=`"%~dp0\\${f}.exe"`,a=n):(f=n,p="",a="");let E=r.progArgs?`${r.progArgs.join(" ")} `:"",C=h?`@SET NODE_PATH=${h}\r `:"";return c?C+=`@IF EXIST ${c} (\r ${c} ${p} ${a} ${E}%*\r ) ELSE (\r @SETLOCAL\r @SET PATHEXT=%PATHEXT:;.JS;=;%\r ${f} ${p} ${a} ${E}%*\r )\r `:C+=`@${f} ${p} ${a} ${E}%*\r `,C}function Pdt(t,e,r){let s=Vc.relative(Vc.dirname(e),t),a=r.prog&&r.prog.split("\\").join("/"),n;s=s.split("\\").join("/");let c=Vc.isAbsolute(s)?`"${s}"`:`"$basedir/${s}"`,f=r.args||"",p=EY(r.nodePath).posix;a?(n=`"$basedir/${r.prog}"`,s=c):(a=c,f="",s="");let h=r.progArgs?`${r.progArgs.join(" ")} `:"",E=`#!/bin/sh basedir=$(dirname "$(echo "$0" | sed -e 's,\\\\,/,g')") case \`uname\` in *CYGWIN*) basedir=\`cygpath -w "$basedir"\`;; esac `,C=r.nodePath?`export NODE_PATH="${p}" `:"";return n?E+=`${C}if [ -x ${n} ]; then exec ${n} ${f} ${s} ${h}"$@" else exec ${a} ${f} ${s} ${h}"$@" fi `:E+=`${C}${a} ${f} ${s} ${h}"$@" exit $? `,E}function bdt(t,e,r){let s=Vc.relative(Vc.dirname(e),t),a=r.prog&&r.prog.split("\\").join("/"),n=a&&`"${a}$exe"`,c;s=s.split("\\").join("/");let f=Vc.isAbsolute(s)?`"${s}"`:`"$basedir/${s}"`,p=r.args||"",h=EY(r.nodePath),E=h.win32,C=h.posix;n?(c=`"$basedir/${r.prog}$exe"`,s=f):(n=f,p="",s="");let S=r.progArgs?`${r.progArgs.join(" ")} `:"",b=`#!/usr/bin/env pwsh $basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent $exe="" ${r.nodePath?`$env_node_path=$env:NODE_PATH $env:NODE_PATH="${E}" `:""}if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) { # Fix case when both the Windows and Linux builds of Node # are installed in the same directory $exe=".exe" }`;return r.nodePath&&(b+=` else { $env:NODE_PATH="${C}" }`),c?b+=` $ret=0 if (Test-Path ${c}) { # Support pipeline input if ($MyInvocation.ExpectingInput) { $input | & ${c} ${p} ${s} ${S}$args } else { & ${c} ${p} ${s} ${S}$args } $ret=$LASTEXITCODE } else { # Support pipeline input if ($MyInvocation.ExpectingInput) { $input | & ${n} ${p} ${s} ${S}$args } else { & ${n} ${p} ${s} ${S}$args } $ret=$LASTEXITCODE } ${r.nodePath?`$env:NODE_PATH=$env_node_path `:""}exit $ret `:b+=` # Support pipeline input if ($MyInvocation.ExpectingInput) { $input | & ${n} ${p} ${s} ${S}$args } else { & ${n} ${p} ${s} ${S}$args } ${r.nodePath?`$env:NODE_PATH=$env_node_path `:""}exit $LASTEXITCODE `,b}function xdt(t,e){return e.fs_.chmod(t,493)}function EY(t){if(!t)return{win32:"",posix:""};let e=typeof t=="string"?t.split(Vc.delimiter):Array.from(t),r={};for(let s=0;s`/mnt/${f.toLowerCase()}`):e[s];r.win32=r.win32?`${r.win32};${a}`:a,r.posix=r.posix?`${r.posix}:${n}`:n,r[s]={win32:a,posix:n}}return r}kBe.exports=yY});var TY=_((Ctr,zBe)=>{zBe.exports=Ie("stream")});var eve=_((wtr,$Be)=>{"use strict";function ZBe(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(t);e&&(s=s.filter(function(a){return Object.getOwnPropertyDescriptor(t,a).enumerable})),r.push.apply(r,s)}return r}function cmt(t){for(var e=1;e0?this.tail.next=s:this.head=s,this.tail=s,++this.length}},{key:"unshift",value:function(r){var s={data:r,next:this.head};this.length===0&&(this.tail=s),this.head=s,++this.length}},{key:"shift",value:function(){if(this.length!==0){var r=this.head.data;return this.length===1?this.head=this.tail=null:this.head=this.head.next,--this.length,r}}},{key:"clear",value:function(){this.head=this.tail=null,this.length=0}},{key:"join",value:function(r){if(this.length===0)return"";for(var s=this.head,a=""+s.data;s=s.next;)a+=r+s.data;return a}},{key:"concat",value:function(r){if(this.length===0)return AN.alloc(0);for(var s=AN.allocUnsafe(r>>>0),a=this.head,n=0;a;)dmt(a.data,s,n),n+=a.data.length,a=a.next;return s}},{key:"consume",value:function(r,s){var a;return rc.length?c.length:r;if(f===c.length?n+=c:n+=c.slice(0,r),r-=f,r===0){f===c.length?(++a,s.next?this.head=s.next:this.head=this.tail=null):(this.head=s,s.data=c.slice(f));break}++a}return this.length-=a,n}},{key:"_getBuffer",value:function(r){var s=AN.allocUnsafe(r),a=this.head,n=1;for(a.data.copy(s),r-=a.data.length;a=a.next;){var c=a.data,f=r>c.length?c.length:r;if(c.copy(s,s.length-r,0,f),r-=f,r===0){f===c.length?(++n,a.next?this.head=a.next:this.head=this.tail=null):(this.head=a,a.data=c.slice(f));break}++n}return this.length-=n,s}},{key:gmt,value:function(r,s){return FY(this,cmt({},s,{depth:0,customInspect:!1}))}}]),t}()});var OY=_((Btr,rve)=>{"use strict";function mmt(t,e){var r=this,s=this._readableState&&this._readableState.destroyed,a=this._writableState&&this._writableState.destroyed;return s||a?(e?e(t):t&&(this._writableState?this._writableState.errorEmitted||(this._writableState.errorEmitted=!0,process.nextTick(NY,this,t)):process.nextTick(NY,this,t)),this):(this._readableState&&(this._readableState.destroyed=!0),this._writableState&&(this._writableState.destroyed=!0),this._destroy(t||null,function(n){!e&&n?r._writableState?r._writableState.errorEmitted?process.nextTick(pN,r):(r._writableState.errorEmitted=!0,process.nextTick(tve,r,n)):process.nextTick(tve,r,n):e?(process.nextTick(pN,r),e(n)):process.nextTick(pN,r)}),this)}function tve(t,e){NY(t,e),pN(t)}function pN(t){t._writableState&&!t._writableState.emitClose||t._readableState&&!t._readableState.emitClose||t.emit("close")}function ymt(){this._readableState&&(this._readableState.destroyed=!1,this._readableState.reading=!1,this._readableState.ended=!1,this._readableState.endEmitted=!1),this._writableState&&(this._writableState.destroyed=!1,this._writableState.ended=!1,this._writableState.ending=!1,this._writableState.finalCalled=!1,this._writableState.prefinished=!1,this._writableState.finished=!1,this._writableState.errorEmitted=!1)}function NY(t,e){t.emit("error",e)}function Emt(t,e){var r=t._readableState,s=t._writableState;r&&r.autoDestroy||s&&s.autoDestroy?t.destroy(e):t.emit("error",e)}rve.exports={destroy:mmt,undestroy:ymt,errorOrDestroy:Emt}});var lg=_((vtr,sve)=>{"use strict";var ive={};function Kc(t,e,r){r||(r=Error);function s(n,c,f){return typeof e=="string"?e:e(n,c,f)}class a extends r{constructor(c,f,p){super(s(c,f,p))}}a.prototype.name=r.name,a.prototype.code=t,ive[t]=a}function nve(t,e){if(Array.isArray(t)){let r=t.length;return t=t.map(s=>String(s)),r>2?`one of ${e} ${t.slice(0,r-1).join(", ")}, or `+t[r-1]:r===2?`one of ${e} ${t[0]} or ${t[1]}`:`of ${e} ${t[0]}`}else return`of ${e} ${String(t)}`}function Imt(t,e,r){return t.substr(!r||r<0?0:+r,e.length)===e}function Cmt(t,e,r){return(r===void 0||r>t.length)&&(r=t.length),t.substring(r-e.length,r)===e}function wmt(t,e,r){return typeof r!="number"&&(r=0),r+e.length>t.length?!1:t.indexOf(e,r)!==-1}Kc("ERR_INVALID_OPT_VALUE",function(t,e){return'The value "'+e+'" is invalid for option "'+t+'"'},TypeError);Kc("ERR_INVALID_ARG_TYPE",function(t,e,r){let s;typeof e=="string"&&Imt(e,"not ")?(s="must not be",e=e.replace(/^not /,"")):s="must be";let a;if(Cmt(t," argument"))a=`The ${t} ${s} ${nve(e,"type")}`;else{let n=wmt(t,".")?"property":"argument";a=`The "${t}" ${n} ${s} ${nve(e,"type")}`}return a+=`. Received type ${typeof r}`,a},TypeError);Kc("ERR_STREAM_PUSH_AFTER_EOF","stream.push() after EOF");Kc("ERR_METHOD_NOT_IMPLEMENTED",function(t){return"The "+t+" method is not implemented"});Kc("ERR_STREAM_PREMATURE_CLOSE","Premature close");Kc("ERR_STREAM_DESTROYED",function(t){return"Cannot call "+t+" after a stream was destroyed"});Kc("ERR_MULTIPLE_CALLBACK","Callback called multiple times");Kc("ERR_STREAM_CANNOT_PIPE","Cannot pipe, not readable");Kc("ERR_STREAM_WRITE_AFTER_END","write after end");Kc("ERR_STREAM_NULL_VALUES","May not write null values to stream",TypeError);Kc("ERR_UNKNOWN_ENCODING",function(t){return"Unknown encoding: "+t},TypeError);Kc("ERR_STREAM_UNSHIFT_AFTER_END_EVENT","stream.unshift() after end event");sve.exports.codes=ive});var LY=_((Str,ove)=>{"use strict";var Bmt=lg().codes.ERR_INVALID_OPT_VALUE;function vmt(t,e,r){return t.highWaterMark!=null?t.highWaterMark:e?t[r]:null}function Smt(t,e,r,s){var a=vmt(e,s,r);if(a!=null){if(!(isFinite(a)&&Math.floor(a)===a)||a<0){var n=s?r:"highWaterMark";throw new Bmt(n,a)}return Math.floor(a)}return t.objectMode?16:16*1024}ove.exports={getHighWaterMark:Smt}});var ave=_((Dtr,MY)=>{typeof Object.create=="function"?MY.exports=function(e,r){r&&(e.super_=r,e.prototype=Object.create(r.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}))}:MY.exports=function(e,r){if(r){e.super_=r;var s=function(){};s.prototype=r.prototype,e.prototype=new s,e.prototype.constructor=e}}});var cg=_((Ptr,_Y)=>{try{if(UY=Ie("util"),typeof UY.inherits!="function")throw"";_Y.exports=UY.inherits}catch{_Y.exports=ave()}var UY});var cve=_((btr,lve)=>{lve.exports=Ie("util").deprecate});var GY=_((xtr,gve)=>{"use strict";gve.exports=Yi;function fve(t){var e=this;this.next=null,this.entry=null,this.finish=function(){Xmt(e,t)}}var Rw;Yi.WritableState=XD;var Dmt={deprecate:cve()},Ave=TY(),gN=Ie("buffer").Buffer,Pmt=global.Uint8Array||function(){};function bmt(t){return gN.from(t)}function xmt(t){return gN.isBuffer(t)||t instanceof Pmt}var jY=OY(),kmt=LY(),Qmt=kmt.getHighWaterMark,ug=lg().codes,Rmt=ug.ERR_INVALID_ARG_TYPE,Tmt=ug.ERR_METHOD_NOT_IMPLEMENTED,Fmt=ug.ERR_MULTIPLE_CALLBACK,Nmt=ug.ERR_STREAM_CANNOT_PIPE,Omt=ug.ERR_STREAM_DESTROYED,Lmt=ug.ERR_STREAM_NULL_VALUES,Mmt=ug.ERR_STREAM_WRITE_AFTER_END,Umt=ug.ERR_UNKNOWN_ENCODING,Tw=jY.errorOrDestroy;cg()(Yi,Ave);function _mt(){}function XD(t,e,r){Rw=Rw||Ym(),t=t||{},typeof r!="boolean"&&(r=e instanceof Rw),this.objectMode=!!t.objectMode,r&&(this.objectMode=this.objectMode||!!t.writableObjectMode),this.highWaterMark=Qmt(this,t,"writableHighWaterMark",r),this.finalCalled=!1,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1,this.destroyed=!1;var s=t.decodeStrings===!1;this.decodeStrings=!s,this.defaultEncoding=t.defaultEncoding||"utf8",this.length=0,this.writing=!1,this.corked=0,this.sync=!0,this.bufferProcessing=!1,this.onwrite=function(a){Vmt(e,a)},this.writecb=null,this.writelen=0,this.bufferedRequest=null,this.lastBufferedRequest=null,this.pendingcb=0,this.prefinished=!1,this.errorEmitted=!1,this.emitClose=t.emitClose!==!1,this.autoDestroy=!!t.autoDestroy,this.bufferedRequestCount=0,this.corkedRequestsFree=new fve(this)}XD.prototype.getBuffer=function(){for(var e=this.bufferedRequest,r=[];e;)r.push(e),e=e.next;return r};(function(){try{Object.defineProperty(XD.prototype,"buffer",{get:Dmt.deprecate(function(){return this.getBuffer()},"_writableState.buffer is deprecated. Use _writableState.getBuffer instead.","DEP0003")})}catch{}})();var hN;typeof Symbol=="function"&&Symbol.hasInstance&&typeof Function.prototype[Symbol.hasInstance]=="function"?(hN=Function.prototype[Symbol.hasInstance],Object.defineProperty(Yi,Symbol.hasInstance,{value:function(e){return hN.call(this,e)?!0:this!==Yi?!1:e&&e._writableState instanceof XD}})):hN=function(e){return e instanceof this};function Yi(t){Rw=Rw||Ym();var e=this instanceof Rw;if(!e&&!hN.call(Yi,this))return new Yi(t);this._writableState=new XD(t,this,e),this.writable=!0,t&&(typeof t.write=="function"&&(this._write=t.write),typeof t.writev=="function"&&(this._writev=t.writev),typeof t.destroy=="function"&&(this._destroy=t.destroy),typeof t.final=="function"&&(this._final=t.final)),Ave.call(this)}Yi.prototype.pipe=function(){Tw(this,new Nmt)};function Hmt(t,e){var r=new Mmt;Tw(t,r),process.nextTick(e,r)}function jmt(t,e,r,s){var a;return r===null?a=new Lmt:typeof r!="string"&&!e.objectMode&&(a=new Rmt("chunk",["string","Buffer"],r)),a?(Tw(t,a),process.nextTick(s,a),!1):!0}Yi.prototype.write=function(t,e,r){var s=this._writableState,a=!1,n=!s.objectMode&&xmt(t);return n&&!gN.isBuffer(t)&&(t=bmt(t)),typeof e=="function"&&(r=e,e=null),n?e="buffer":e||(e=s.defaultEncoding),typeof r!="function"&&(r=_mt),s.ending?Hmt(this,r):(n||jmt(this,s,t,r))&&(s.pendingcb++,a=qmt(this,s,n,t,e,r)),a};Yi.prototype.cork=function(){this._writableState.corked++};Yi.prototype.uncork=function(){var t=this._writableState;t.corked&&(t.corked--,!t.writing&&!t.corked&&!t.bufferProcessing&&t.bufferedRequest&&pve(this,t))};Yi.prototype.setDefaultEncoding=function(e){if(typeof e=="string"&&(e=e.toLowerCase()),!(["hex","utf8","utf-8","ascii","binary","base64","ucs2","ucs-2","utf16le","utf-16le","raw"].indexOf((e+"").toLowerCase())>-1))throw new Umt(e);return this._writableState.defaultEncoding=e,this};Object.defineProperty(Yi.prototype,"writableBuffer",{enumerable:!1,get:function(){return this._writableState&&this._writableState.getBuffer()}});function Gmt(t,e,r){return!t.objectMode&&t.decodeStrings!==!1&&typeof e=="string"&&(e=gN.from(e,r)),e}Object.defineProperty(Yi.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}});function qmt(t,e,r,s,a,n){if(!r){var c=Gmt(e,s,a);s!==c&&(r=!0,a="buffer",s=c)}var f=e.objectMode?1:s.length;e.length+=f;var p=e.length{"use strict";var $mt=Object.keys||function(t){var e=[];for(var r in t)e.push(r);return e};mve.exports=dA;var dve=YY(),WY=GY();cg()(dA,dve);for(qY=$mt(WY.prototype),dN=0;dN{var yN=Ie("buffer"),ah=yN.Buffer;function yve(t,e){for(var r in t)e[r]=t[r]}ah.from&&ah.alloc&&ah.allocUnsafe&&ah.allocUnsafeSlow?Eve.exports=yN:(yve(yN,VY),VY.Buffer=Fw);function Fw(t,e,r){return ah(t,e,r)}yve(ah,Fw);Fw.from=function(t,e,r){if(typeof t=="number")throw new TypeError("Argument must not be a number");return ah(t,e,r)};Fw.alloc=function(t,e,r){if(typeof t!="number")throw new TypeError("Argument must be a number");var s=ah(t);return e!==void 0?typeof r=="string"?s.fill(e,r):s.fill(e):s.fill(0),s};Fw.allocUnsafe=function(t){if(typeof t!="number")throw new TypeError("Argument must be a number");return ah(t)};Fw.allocUnsafeSlow=function(t){if(typeof t!="number")throw new TypeError("Argument must be a number");return yN.SlowBuffer(t)}});var zY=_(wve=>{"use strict";var KY=Ive().Buffer,Cve=KY.isEncoding||function(t){switch(t=""+t,t&&t.toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":case"raw":return!0;default:return!1}};function ryt(t){if(!t)return"utf8";for(var e;;)switch(t){case"utf8":case"utf-8":return"utf8";case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return"utf16le";case"latin1":case"binary":return"latin1";case"base64":case"ascii":case"hex":return t;default:if(e)return;t=(""+t).toLowerCase(),e=!0}}function nyt(t){var e=ryt(t);if(typeof e!="string"&&(KY.isEncoding===Cve||!Cve(t)))throw new Error("Unknown encoding: "+t);return e||t}wve.StringDecoder=$D;function $D(t){this.encoding=nyt(t);var e;switch(this.encoding){case"utf16le":this.text=cyt,this.end=uyt,e=4;break;case"utf8":this.fillLast=oyt,e=4;break;case"base64":this.text=fyt,this.end=Ayt,e=3;break;default:this.write=pyt,this.end=hyt;return}this.lastNeed=0,this.lastTotal=0,this.lastChar=KY.allocUnsafe(e)}$D.prototype.write=function(t){if(t.length===0)return"";var e,r;if(this.lastNeed){if(e=this.fillLast(t),e===void 0)return"";r=this.lastNeed,this.lastNeed=0}else r=0;return r>5===6?2:t>>4===14?3:t>>3===30?4:t>>6===2?-1:-2}function iyt(t,e,r){var s=e.length-1;if(s=0?(a>0&&(t.lastNeed=a-1),a):--s=0?(a>0&&(t.lastNeed=a-2),a):--s=0?(a>0&&(a===2?a=0:t.lastNeed=a-3),a):0))}function syt(t,e,r){if((e[0]&192)!==128)return t.lastNeed=0,"\uFFFD";if(t.lastNeed>1&&e.length>1){if((e[1]&192)!==128)return t.lastNeed=1,"\uFFFD";if(t.lastNeed>2&&e.length>2&&(e[2]&192)!==128)return t.lastNeed=2,"\uFFFD"}}function oyt(t){var e=this.lastTotal-this.lastNeed,r=syt(this,t,e);if(r!==void 0)return r;if(this.lastNeed<=t.length)return t.copy(this.lastChar,e,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal);t.copy(this.lastChar,e,0,t.length),this.lastNeed-=t.length}function ayt(t,e){var r=iyt(this,t,e);if(!this.lastNeed)return t.toString("utf8",e);this.lastTotal=r;var s=t.length-(r-this.lastNeed);return t.copy(this.lastChar,0,s),t.toString("utf8",e,s)}function lyt(t){var e=t&&t.length?this.write(t):"";return this.lastNeed?e+"\uFFFD":e}function cyt(t,e){if((t.length-e)%2===0){var r=t.toString("utf16le",e);if(r){var s=r.charCodeAt(r.length-1);if(s>=55296&&s<=56319)return this.lastNeed=2,this.lastTotal=4,this.lastChar[0]=t[t.length-2],this.lastChar[1]=t[t.length-1],r.slice(0,-1)}return r}return this.lastNeed=1,this.lastTotal=2,this.lastChar[0]=t[t.length-1],t.toString("utf16le",e,t.length-1)}function uyt(t){var e=t&&t.length?this.write(t):"";if(this.lastNeed){var r=this.lastTotal-this.lastNeed;return e+this.lastChar.toString("utf16le",0,r)}return e}function fyt(t,e){var r=(t.length-e)%3;return r===0?t.toString("base64",e):(this.lastNeed=3-r,this.lastTotal=3,r===1?this.lastChar[0]=t[t.length-1]:(this.lastChar[0]=t[t.length-2],this.lastChar[1]=t[t.length-1]),t.toString("base64",e,t.length-r))}function Ayt(t){var e=t&&t.length?this.write(t):"";return this.lastNeed?e+this.lastChar.toString("base64",0,3-this.lastNeed):e}function pyt(t){return t.toString(this.encoding)}function hyt(t){return t&&t.length?this.write(t):""}});var EN=_((Rtr,Sve)=>{"use strict";var Bve=lg().codes.ERR_STREAM_PREMATURE_CLOSE;function gyt(t){var e=!1;return function(){if(!e){e=!0;for(var r=arguments.length,s=new Array(r),a=0;a{"use strict";var IN;function fg(t,e,r){return e in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}var yyt=EN(),Ag=Symbol("lastResolve"),Vm=Symbol("lastReject"),eP=Symbol("error"),CN=Symbol("ended"),Jm=Symbol("lastPromise"),ZY=Symbol("handlePromise"),Km=Symbol("stream");function pg(t,e){return{value:t,done:e}}function Eyt(t){var e=t[Ag];if(e!==null){var r=t[Km].read();r!==null&&(t[Jm]=null,t[Ag]=null,t[Vm]=null,e(pg(r,!1)))}}function Iyt(t){process.nextTick(Eyt,t)}function Cyt(t,e){return function(r,s){t.then(function(){if(e[CN]){r(pg(void 0,!0));return}e[ZY](r,s)},s)}}var wyt=Object.getPrototypeOf(function(){}),Byt=Object.setPrototypeOf((IN={get stream(){return this[Km]},next:function(){var e=this,r=this[eP];if(r!==null)return Promise.reject(r);if(this[CN])return Promise.resolve(pg(void 0,!0));if(this[Km].destroyed)return new Promise(function(c,f){process.nextTick(function(){e[eP]?f(e[eP]):c(pg(void 0,!0))})});var s=this[Jm],a;if(s)a=new Promise(Cyt(s,this));else{var n=this[Km].read();if(n!==null)return Promise.resolve(pg(n,!1));a=new Promise(this[ZY])}return this[Jm]=a,a}},fg(IN,Symbol.asyncIterator,function(){return this}),fg(IN,"return",function(){var e=this;return new Promise(function(r,s){e[Km].destroy(null,function(a){if(a){s(a);return}r(pg(void 0,!0))})})}),IN),wyt),vyt=function(e){var r,s=Object.create(Byt,(r={},fg(r,Km,{value:e,writable:!0}),fg(r,Ag,{value:null,writable:!0}),fg(r,Vm,{value:null,writable:!0}),fg(r,eP,{value:null,writable:!0}),fg(r,CN,{value:e._readableState.endEmitted,writable:!0}),fg(r,ZY,{value:function(n,c){var f=s[Km].read();f?(s[Jm]=null,s[Ag]=null,s[Vm]=null,n(pg(f,!1))):(s[Ag]=n,s[Vm]=c)},writable:!0}),r));return s[Jm]=null,yyt(e,function(a){if(a&&a.code!=="ERR_STREAM_PREMATURE_CLOSE"){var n=s[Vm];n!==null&&(s[Jm]=null,s[Ag]=null,s[Vm]=null,n(a)),s[eP]=a;return}var c=s[Ag];c!==null&&(s[Jm]=null,s[Ag]=null,s[Vm]=null,c(pg(void 0,!0))),s[CN]=!0}),e.on("readable",Iyt.bind(null,s)),s};Dve.exports=vyt});var Qve=_((Ftr,kve)=>{"use strict";function bve(t,e,r,s,a,n,c){try{var f=t[n](c),p=f.value}catch(h){r(h);return}f.done?e(p):Promise.resolve(p).then(s,a)}function Syt(t){return function(){var e=this,r=arguments;return new Promise(function(s,a){var n=t.apply(e,r);function c(p){bve(n,s,a,c,f,"next",p)}function f(p){bve(n,s,a,c,f,"throw",p)}c(void 0)})}}function xve(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(t);e&&(s=s.filter(function(a){return Object.getOwnPropertyDescriptor(t,a).enumerable})),r.push.apply(r,s)}return r}function Dyt(t){for(var e=1;e{"use strict";Hve.exports=bn;var Nw;bn.ReadableState=Nve;var Ntr=Ie("events").EventEmitter,Fve=function(e,r){return e.listeners(r).length},rP=TY(),wN=Ie("buffer").Buffer,kyt=global.Uint8Array||function(){};function Qyt(t){return wN.from(t)}function Ryt(t){return wN.isBuffer(t)||t instanceof kyt}var XY=Ie("util"),cn;XY&&XY.debuglog?cn=XY.debuglog("stream"):cn=function(){};var Tyt=eve(),sV=OY(),Fyt=LY(),Nyt=Fyt.getHighWaterMark,BN=lg().codes,Oyt=BN.ERR_INVALID_ARG_TYPE,Lyt=BN.ERR_STREAM_PUSH_AFTER_EOF,Myt=BN.ERR_METHOD_NOT_IMPLEMENTED,Uyt=BN.ERR_STREAM_UNSHIFT_AFTER_END_EVENT,Ow,$Y,eV;cg()(bn,rP);var tP=sV.errorOrDestroy,tV=["error","close","destroy","pause","resume"];function _yt(t,e,r){if(typeof t.prependListener=="function")return t.prependListener(e,r);!t._events||!t._events[e]?t.on(e,r):Array.isArray(t._events[e])?t._events[e].unshift(r):t._events[e]=[r,t._events[e]]}function Nve(t,e,r){Nw=Nw||Ym(),t=t||{},typeof r!="boolean"&&(r=e instanceof Nw),this.objectMode=!!t.objectMode,r&&(this.objectMode=this.objectMode||!!t.readableObjectMode),this.highWaterMark=Nyt(this,t,"readableHighWaterMark",r),this.buffer=new Tyt,this.length=0,this.pipes=null,this.pipesCount=0,this.flowing=null,this.ended=!1,this.endEmitted=!1,this.reading=!1,this.sync=!0,this.needReadable=!1,this.emittedReadable=!1,this.readableListening=!1,this.resumeScheduled=!1,this.paused=!0,this.emitClose=t.emitClose!==!1,this.autoDestroy=!!t.autoDestroy,this.destroyed=!1,this.defaultEncoding=t.defaultEncoding||"utf8",this.awaitDrain=0,this.readingMore=!1,this.decoder=null,this.encoding=null,t.encoding&&(Ow||(Ow=zY().StringDecoder),this.decoder=new Ow(t.encoding),this.encoding=t.encoding)}function bn(t){if(Nw=Nw||Ym(),!(this instanceof bn))return new bn(t);var e=this instanceof Nw;this._readableState=new Nve(t,this,e),this.readable=!0,t&&(typeof t.read=="function"&&(this._read=t.read),typeof t.destroy=="function"&&(this._destroy=t.destroy)),rP.call(this)}Object.defineProperty(bn.prototype,"destroyed",{enumerable:!1,get:function(){return this._readableState===void 0?!1:this._readableState.destroyed},set:function(e){this._readableState&&(this._readableState.destroyed=e)}});bn.prototype.destroy=sV.destroy;bn.prototype._undestroy=sV.undestroy;bn.prototype._destroy=function(t,e){e(t)};bn.prototype.push=function(t,e){var r=this._readableState,s;return r.objectMode?s=!0:typeof t=="string"&&(e=e||r.defaultEncoding,e!==r.encoding&&(t=wN.from(t,e),e=""),s=!0),Ove(this,t,e,!1,s)};bn.prototype.unshift=function(t){return Ove(this,t,null,!0,!1)};function Ove(t,e,r,s,a){cn("readableAddChunk",e);var n=t._readableState;if(e===null)n.reading=!1,Gyt(t,n);else{var c;if(a||(c=Hyt(n,e)),c)tP(t,c);else if(n.objectMode||e&&e.length>0)if(typeof e!="string"&&!n.objectMode&&Object.getPrototypeOf(e)!==wN.prototype&&(e=Qyt(e)),s)n.endEmitted?tP(t,new Uyt):rV(t,n,e,!0);else if(n.ended)tP(t,new Lyt);else{if(n.destroyed)return!1;n.reading=!1,n.decoder&&!r?(e=n.decoder.write(e),n.objectMode||e.length!==0?rV(t,n,e,!1):iV(t,n)):rV(t,n,e,!1)}else s||(n.reading=!1,iV(t,n))}return!n.ended&&(n.length=Rve?t=Rve:(t--,t|=t>>>1,t|=t>>>2,t|=t>>>4,t|=t>>>8,t|=t>>>16,t++),t}function Tve(t,e){return t<=0||e.length===0&&e.ended?0:e.objectMode?1:t!==t?e.flowing&&e.length?e.buffer.head.data.length:e.length:(t>e.highWaterMark&&(e.highWaterMark=jyt(t)),t<=e.length?t:e.ended?e.length:(e.needReadable=!0,0))}bn.prototype.read=function(t){cn("read",t),t=parseInt(t,10);var e=this._readableState,r=t;if(t!==0&&(e.emittedReadable=!1),t===0&&e.needReadable&&((e.highWaterMark!==0?e.length>=e.highWaterMark:e.length>0)||e.ended))return cn("read: emitReadable",e.length,e.ended),e.length===0&&e.ended?nV(this):vN(this),null;if(t=Tve(t,e),t===0&&e.ended)return e.length===0&&nV(this),null;var s=e.needReadable;cn("need readable",s),(e.length===0||e.length-t0?a=Uve(t,e):a=null,a===null?(e.needReadable=e.length<=e.highWaterMark,t=0):(e.length-=t,e.awaitDrain=0),e.length===0&&(e.ended||(e.needReadable=!0),r!==t&&e.ended&&nV(this)),a!==null&&this.emit("data",a),a};function Gyt(t,e){if(cn("onEofChunk"),!e.ended){if(e.decoder){var r=e.decoder.end();r&&r.length&&(e.buffer.push(r),e.length+=e.objectMode?1:r.length)}e.ended=!0,e.sync?vN(t):(e.needReadable=!1,e.emittedReadable||(e.emittedReadable=!0,Lve(t)))}}function vN(t){var e=t._readableState;cn("emitReadable",e.needReadable,e.emittedReadable),e.needReadable=!1,e.emittedReadable||(cn("emitReadable",e.flowing),e.emittedReadable=!0,process.nextTick(Lve,t))}function Lve(t){var e=t._readableState;cn("emitReadable_",e.destroyed,e.length,e.ended),!e.destroyed&&(e.length||e.ended)&&(t.emit("readable"),e.emittedReadable=!1),e.needReadable=!e.flowing&&!e.ended&&e.length<=e.highWaterMark,oV(t)}function iV(t,e){e.readingMore||(e.readingMore=!0,process.nextTick(qyt,t,e))}function qyt(t,e){for(;!e.reading&&!e.ended&&(e.length1&&_ve(s.pipes,t)!==-1)&&!h&&(cn("false write response, pause",s.awaitDrain),s.awaitDrain++),r.pause())}function S(N){cn("onerror",N),T(),t.removeListener("error",S),Fve(t,"error")===0&&tP(t,N)}_yt(t,"error",S);function b(){t.removeListener("finish",I),T()}t.once("close",b);function I(){cn("onfinish"),t.removeListener("close",b),T()}t.once("finish",I);function T(){cn("unpipe"),r.unpipe(t)}return t.emit("pipe",r),s.flowing||(cn("pipe resume"),r.resume()),t};function Wyt(t){return function(){var r=t._readableState;cn("pipeOnDrain",r.awaitDrain),r.awaitDrain&&r.awaitDrain--,r.awaitDrain===0&&Fve(t,"data")&&(r.flowing=!0,oV(t))}}bn.prototype.unpipe=function(t){var e=this._readableState,r={hasUnpiped:!1};if(e.pipesCount===0)return this;if(e.pipesCount===1)return t&&t!==e.pipes?this:(t||(t=e.pipes),e.pipes=null,e.pipesCount=0,e.flowing=!1,t&&t.emit("unpipe",this,r),this);if(!t){var s=e.pipes,a=e.pipesCount;e.pipes=null,e.pipesCount=0,e.flowing=!1;for(var n=0;n0,s.flowing!==!1&&this.resume()):t==="readable"&&!s.endEmitted&&!s.readableListening&&(s.readableListening=s.needReadable=!0,s.flowing=!1,s.emittedReadable=!1,cn("on readable",s.length,s.reading),s.length?vN(this):s.reading||process.nextTick(Yyt,this)),r};bn.prototype.addListener=bn.prototype.on;bn.prototype.removeListener=function(t,e){var r=rP.prototype.removeListener.call(this,t,e);return t==="readable"&&process.nextTick(Mve,this),r};bn.prototype.removeAllListeners=function(t){var e=rP.prototype.removeAllListeners.apply(this,arguments);return(t==="readable"||t===void 0)&&process.nextTick(Mve,this),e};function Mve(t){var e=t._readableState;e.readableListening=t.listenerCount("readable")>0,e.resumeScheduled&&!e.paused?e.flowing=!0:t.listenerCount("data")>0&&t.resume()}function Yyt(t){cn("readable nexttick read 0"),t.read(0)}bn.prototype.resume=function(){var t=this._readableState;return t.flowing||(cn("resume"),t.flowing=!t.readableListening,Vyt(this,t)),t.paused=!1,this};function Vyt(t,e){e.resumeScheduled||(e.resumeScheduled=!0,process.nextTick(Jyt,t,e))}function Jyt(t,e){cn("resume",e.reading),e.reading||t.read(0),e.resumeScheduled=!1,t.emit("resume"),oV(t),e.flowing&&!e.reading&&t.read(0)}bn.prototype.pause=function(){return cn("call pause flowing=%j",this._readableState.flowing),this._readableState.flowing!==!1&&(cn("pause"),this._readableState.flowing=!1,this.emit("pause")),this._readableState.paused=!0,this};function oV(t){var e=t._readableState;for(cn("flow",e.flowing);e.flowing&&t.read()!==null;);}bn.prototype.wrap=function(t){var e=this,r=this._readableState,s=!1;t.on("end",function(){if(cn("wrapped end"),r.decoder&&!r.ended){var c=r.decoder.end();c&&c.length&&e.push(c)}e.push(null)}),t.on("data",function(c){if(cn("wrapped data"),r.decoder&&(c=r.decoder.write(c)),!(r.objectMode&&c==null)&&!(!r.objectMode&&(!c||!c.length))){var f=e.push(c);f||(s=!0,t.pause())}});for(var a in t)this[a]===void 0&&typeof t[a]=="function"&&(this[a]=function(f){return function(){return t[f].apply(t,arguments)}}(a));for(var n=0;n=e.length?(e.decoder?r=e.buffer.join(""):e.buffer.length===1?r=e.buffer.first():r=e.buffer.concat(e.length),e.buffer.clear()):r=e.buffer.consume(t,e.decoder),r}function nV(t){var e=t._readableState;cn("endReadable",e.endEmitted),e.endEmitted||(e.ended=!0,process.nextTick(Kyt,e,t))}function Kyt(t,e){if(cn("endReadableNT",t.endEmitted,t.length),!t.endEmitted&&t.length===0&&(t.endEmitted=!0,e.readable=!1,e.emit("end"),t.autoDestroy)){var r=e._writableState;(!r||r.autoDestroy&&r.finished)&&e.destroy()}}typeof Symbol=="function"&&(bn.from=function(t,e){return eV===void 0&&(eV=Qve()),eV(bn,t,e)});function _ve(t,e){for(var r=0,s=t.length;r{"use strict";Gve.exports=lh;var SN=lg().codes,zyt=SN.ERR_METHOD_NOT_IMPLEMENTED,Zyt=SN.ERR_MULTIPLE_CALLBACK,Xyt=SN.ERR_TRANSFORM_ALREADY_TRANSFORMING,$yt=SN.ERR_TRANSFORM_WITH_LENGTH_0,DN=Ym();cg()(lh,DN);function eEt(t,e){var r=this._transformState;r.transforming=!1;var s=r.writecb;if(s===null)return this.emit("error",new Zyt);r.writechunk=null,r.writecb=null,e!=null&&this.push(e),s(t);var a=this._readableState;a.reading=!1,(a.needReadable||a.length{"use strict";Wve.exports=nP;var qve=aV();cg()(nP,qve);function nP(t){if(!(this instanceof nP))return new nP(t);qve.call(this,t)}nP.prototype._transform=function(t,e,r){r(null,t)}});var Zve=_((Utr,zve)=>{"use strict";var lV;function rEt(t){var e=!1;return function(){e||(e=!0,t.apply(void 0,arguments))}}var Kve=lg().codes,nEt=Kve.ERR_MISSING_ARGS,iEt=Kve.ERR_STREAM_DESTROYED;function Vve(t){if(t)throw t}function sEt(t){return t.setHeader&&typeof t.abort=="function"}function oEt(t,e,r,s){s=rEt(s);var a=!1;t.on("close",function(){a=!0}),lV===void 0&&(lV=EN()),lV(t,{readable:e,writable:r},function(c){if(c)return s(c);a=!0,s()});var n=!1;return function(c){if(!a&&!n){if(n=!0,sEt(t))return t.abort();if(typeof t.destroy=="function")return t.destroy();s(c||new iEt("pipe"))}}}function Jve(t){t()}function aEt(t,e){return t.pipe(e)}function lEt(t){return!t.length||typeof t[t.length-1]!="function"?Vve:t.pop()}function cEt(){for(var t=arguments.length,e=new Array(t),r=0;r0;return oEt(c,p,h,function(E){a||(a=E),E&&n.forEach(Jve),!p&&(n.forEach(Jve),s(a))})});return e.reduce(aEt)}zve.exports=cEt});var Lw=_((zc,sP)=>{var iP=Ie("stream");process.env.READABLE_STREAM==="disable"&&iP?(sP.exports=iP.Readable,Object.assign(sP.exports,iP),sP.exports.Stream=iP):(zc=sP.exports=YY(),zc.Stream=iP||zc,zc.Readable=zc,zc.Writable=GY(),zc.Duplex=Ym(),zc.Transform=aV(),zc.PassThrough=Yve(),zc.finished=EN(),zc.pipeline=Zve())});var eSe=_((_tr,$ve)=>{"use strict";var{Buffer:cf}=Ie("buffer"),Xve=Symbol.for("BufferList");function Ci(t){if(!(this instanceof Ci))return new Ci(t);Ci._init.call(this,t)}Ci._init=function(e){Object.defineProperty(this,Xve,{value:!0}),this._bufs=[],this.length=0,e&&this.append(e)};Ci.prototype._new=function(e){return new Ci(e)};Ci.prototype._offset=function(e){if(e===0)return[0,0];let r=0;for(let s=0;sthis.length||e<0)return;let r=this._offset(e);return this._bufs[r[0]][r[1]]};Ci.prototype.slice=function(e,r){return typeof e=="number"&&e<0&&(e+=this.length),typeof r=="number"&&r<0&&(r+=this.length),this.copy(null,0,e,r)};Ci.prototype.copy=function(e,r,s,a){if((typeof s!="number"||s<0)&&(s=0),(typeof a!="number"||a>this.length)&&(a=this.length),s>=this.length||a<=0)return e||cf.alloc(0);let n=!!e,c=this._offset(s),f=a-s,p=f,h=n&&r||0,E=c[1];if(s===0&&a===this.length){if(!n)return this._bufs.length===1?this._bufs[0]:cf.concat(this._bufs,this.length);for(let C=0;CS)this._bufs[C].copy(e,h,E),h+=S;else{this._bufs[C].copy(e,h,E,E+p),h+=S;break}p-=S,E&&(E=0)}return e.length>h?e.slice(0,h):e};Ci.prototype.shallowSlice=function(e,r){if(e=e||0,r=typeof r!="number"?this.length:r,e<0&&(e+=this.length),r<0&&(r+=this.length),e===r)return this._new();let s=this._offset(e),a=this._offset(r),n=this._bufs.slice(s[0],a[0]+1);return a[1]===0?n.pop():n[n.length-1]=n[n.length-1].slice(0,a[1]),s[1]!==0&&(n[0]=n[0].slice(s[1])),this._new(n)};Ci.prototype.toString=function(e,r,s){return this.slice(r,s).toString(e)};Ci.prototype.consume=function(e){if(e=Math.trunc(e),Number.isNaN(e)||e<=0)return this;for(;this._bufs.length;)if(e>=this._bufs[0].length)e-=this._bufs[0].length,this.length-=this._bufs[0].length,this._bufs.shift();else{this._bufs[0]=this._bufs[0].slice(e),this.length-=e;break}return this};Ci.prototype.duplicate=function(){let e=this._new();for(let r=0;rthis.length?this.length:e;let s=this._offset(e),a=s[0],n=s[1];for(;a=t.length){let p=c.indexOf(t,n);if(p!==-1)return this._reverseOffset([a,p]);n=c.length-t.length+1}else{let p=this._reverseOffset([a,n]);if(this._match(p,t))return p;n++}n=0}return-1};Ci.prototype._match=function(t,e){if(this.length-t{"use strict";var cV=Lw().Duplex,uEt=cg(),oP=eSe();function ra(t){if(!(this instanceof ra))return new ra(t);if(typeof t=="function"){this._callback=t;let e=function(s){this._callback&&(this._callback(s),this._callback=null)}.bind(this);this.on("pipe",function(s){s.on("error",e)}),this.on("unpipe",function(s){s.removeListener("error",e)}),t=null}oP._init.call(this,t),cV.call(this)}uEt(ra,cV);Object.assign(ra.prototype,oP.prototype);ra.prototype._new=function(e){return new ra(e)};ra.prototype._write=function(e,r,s){this._appendBuffer(e),typeof s=="function"&&s()};ra.prototype._read=function(e){if(!this.length)return this.push(null);e=Math.min(e,this.length),this.push(this.slice(0,e)),this.consume(e)};ra.prototype.end=function(e){cV.prototype.end.call(this,e),this._callback&&(this._callback(null,this.slice()),this._callback=null)};ra.prototype._destroy=function(e,r){this._bufs.length=0,this.length=0,r(e)};ra.prototype._isBufferList=function(e){return e instanceof ra||e instanceof oP||ra.isBufferList(e)};ra.isBufferList=oP.isBufferList;PN.exports=ra;PN.exports.BufferListStream=ra;PN.exports.BufferList=oP});var AV=_(Uw=>{var fEt=Buffer.alloc,AEt="0000000000000000000",pEt="7777777777777777777",rSe=48,nSe=Buffer.from("ustar\0","binary"),hEt=Buffer.from("00","binary"),gEt=Buffer.from("ustar ","binary"),dEt=Buffer.from(" \0","binary"),mEt=parseInt("7777",8),aP=257,fV=263,yEt=function(t,e,r){return typeof t!="number"?r:(t=~~t,t>=e?e:t>=0||(t+=e,t>=0)?t:0)},EEt=function(t){switch(t){case 0:return"file";case 1:return"link";case 2:return"symlink";case 3:return"character-device";case 4:return"block-device";case 5:return"directory";case 6:return"fifo";case 7:return"contiguous-file";case 72:return"pax-header";case 55:return"pax-global-header";case 27:return"gnu-long-link-path";case 28:case 30:return"gnu-long-path"}return null},IEt=function(t){switch(t){case"file":return 0;case"link":return 1;case"symlink":return 2;case"character-device":return 3;case"block-device":return 4;case"directory":return 5;case"fifo":return 6;case"contiguous-file":return 7;case"pax-header":return 72}return 0},iSe=function(t,e,r,s){for(;re?pEt.slice(0,e)+" ":AEt.slice(0,e-t.length)+t+" "};function CEt(t){var e;if(t[0]===128)e=!0;else if(t[0]===255)e=!1;else return null;for(var r=[],s=t.length-1;s>0;s--){var a=t[s];e?r.push(a):r.push(255-a)}var n=0,c=r.length;for(s=0;s=Math.pow(10,r)&&r++,e+r+t};Uw.decodeLongPath=function(t,e){return Mw(t,0,t.length,e)};Uw.encodePax=function(t){var e="";t.name&&(e+=uV(" path="+t.name+` `)),t.linkname&&(e+=uV(" linkpath="+t.linkname+` `));var r=t.pax;if(r)for(var s in r)e+=uV(" "+s+"="+r[s]+` `);return Buffer.from(e)};Uw.decodePax=function(t){for(var e={};t.length;){for(var r=0;r100;){var a=r.indexOf("/");if(a===-1)return null;s+=s?"/"+r.slice(0,a):r.slice(0,a),r=r.slice(a+1)}return Buffer.byteLength(r)>100||Buffer.byteLength(s)>155||t.linkname&&Buffer.byteLength(t.linkname)>100?null:(e.write(r),e.write(hg(t.mode&mEt,6),100),e.write(hg(t.uid,6),108),e.write(hg(t.gid,6),116),e.write(hg(t.size,11),124),e.write(hg(t.mtime.getTime()/1e3|0,11),136),e[156]=rSe+IEt(t.type),t.linkname&&e.write(t.linkname,157),nSe.copy(e,aP),hEt.copy(e,fV),t.uname&&e.write(t.uname,265),t.gname&&e.write(t.gname,297),e.write(hg(t.devmajor||0,6),329),e.write(hg(t.devminor||0,6),337),s&&e.write(s,345),e.write(hg(sSe(e),6),148),e)};Uw.decode=function(t,e,r){var s=t[156]===0?0:t[156]-rSe,a=Mw(t,0,100,e),n=gg(t,100,8),c=gg(t,108,8),f=gg(t,116,8),p=gg(t,124,12),h=gg(t,136,12),E=EEt(s),C=t[157]===0?null:Mw(t,157,100,e),S=Mw(t,265,32),b=Mw(t,297,32),I=gg(t,329,8),T=gg(t,337,8),N=sSe(t);if(N===8*32)return null;if(N!==gg(t,148,8))throw new Error("Invalid tar header. Maybe the tar is corrupted or it needs to be gunzipped?");if(nSe.compare(t,aP,aP+6)===0)t[345]&&(a=Mw(t,345,155,e)+"/"+a);else if(!(gEt.compare(t,aP,aP+6)===0&&dEt.compare(t,fV,fV+2)===0)){if(!r)throw new Error("Invalid tar header: unknown format.")}return s===0&&a&&a[a.length-1]==="/"&&(s=5),{name:a,mode:n,uid:c,gid:f,size:p,mtime:new Date(1e3*h),type:E,linkname:C,uname:S,gname:b,devmajor:I,devminor:T}}});var ASe=_((Gtr,fSe)=>{var aSe=Ie("util"),wEt=tSe(),lP=AV(),lSe=Lw().Writable,cSe=Lw().PassThrough,uSe=function(){},oSe=function(t){return t&=511,t&&512-t},BEt=function(t,e){var r=new bN(t,e);return r.end(),r},vEt=function(t,e){return e.path&&(t.name=e.path),e.linkpath&&(t.linkname=e.linkpath),e.size&&(t.size=parseInt(e.size,10)),t.pax=e,t},bN=function(t,e){this._parent=t,this.offset=e,cSe.call(this,{autoDestroy:!1})};aSe.inherits(bN,cSe);bN.prototype.destroy=function(t){this._parent.destroy(t)};var ch=function(t){if(!(this instanceof ch))return new ch(t);lSe.call(this,t),t=t||{},this._offset=0,this._buffer=wEt(),this._missing=0,this._partial=!1,this._onparse=uSe,this._header=null,this._stream=null,this._overflow=null,this._cb=null,this._locked=!1,this._destroyed=!1,this._pax=null,this._paxGlobal=null,this._gnuLongPath=null,this._gnuLongLinkPath=null;var e=this,r=e._buffer,s=function(){e._continue()},a=function(S){if(e._locked=!1,S)return e.destroy(S);e._stream||s()},n=function(){e._stream=null;var S=oSe(e._header.size);S?e._parse(S,c):e._parse(512,C),e._locked||s()},c=function(){e._buffer.consume(oSe(e._header.size)),e._parse(512,C),s()},f=function(){var S=e._header.size;e._paxGlobal=lP.decodePax(r.slice(0,S)),r.consume(S),n()},p=function(){var S=e._header.size;e._pax=lP.decodePax(r.slice(0,S)),e._paxGlobal&&(e._pax=Object.assign({},e._paxGlobal,e._pax)),r.consume(S),n()},h=function(){var S=e._header.size;this._gnuLongPath=lP.decodeLongPath(r.slice(0,S),t.filenameEncoding),r.consume(S),n()},E=function(){var S=e._header.size;this._gnuLongLinkPath=lP.decodeLongPath(r.slice(0,S),t.filenameEncoding),r.consume(S),n()},C=function(){var S=e._offset,b;try{b=e._header=lP.decode(r.slice(0,512),t.filenameEncoding,t.allowUnknownFormat)}catch(I){e.emit("error",I)}if(r.consume(512),!b){e._parse(512,C),s();return}if(b.type==="gnu-long-path"){e._parse(b.size,h),s();return}if(b.type==="gnu-long-link-path"){e._parse(b.size,E),s();return}if(b.type==="pax-global-header"){e._parse(b.size,f),s();return}if(b.type==="pax-header"){e._parse(b.size,p),s();return}if(e._gnuLongPath&&(b.name=e._gnuLongPath,e._gnuLongPath=null),e._gnuLongLinkPath&&(b.linkname=e._gnuLongLinkPath,e._gnuLongLinkPath=null),e._pax&&(e._header=b=vEt(b,e._pax),e._pax=null),e._locked=!0,!b.size||b.type==="directory"){e._parse(512,C),e.emit("entry",b,BEt(e,S),a);return}e._stream=new bN(e,S),e.emit("entry",b,e._stream,a),e._parse(b.size,n),s()};this._onheader=C,this._parse(512,C)};aSe.inherits(ch,lSe);ch.prototype.destroy=function(t){this._destroyed||(this._destroyed=!0,t&&this.emit("error",t),this.emit("close"),this._stream&&this._stream.emit("close"))};ch.prototype._parse=function(t,e){this._destroyed||(this._offset+=t,this._missing=t,e===this._onheader&&(this._partial=!1),this._onparse=e)};ch.prototype._continue=function(){if(!this._destroyed){var t=this._cb;this._cb=uSe,this._overflow?this._write(this._overflow,void 0,t):t()}};ch.prototype._write=function(t,e,r){if(!this._destroyed){var s=this._stream,a=this._buffer,n=this._missing;if(t.length&&(this._partial=!0),t.lengthn&&(c=t.slice(n),t=t.slice(0,n)),s?s.end(t):a.append(t),this._overflow=c,this._onparse()}};ch.prototype._final=function(t){if(this._partial)return this.destroy(new Error("Unexpected end of data"));t()};fSe.exports=ch});var hSe=_((qtr,pSe)=>{pSe.exports=Ie("fs").constants||Ie("constants")});var ESe=_((Wtr,ySe)=>{var _w=hSe(),gSe=aH(),kN=cg(),SEt=Buffer.alloc,dSe=Lw().Readable,Hw=Lw().Writable,DEt=Ie("string_decoder").StringDecoder,xN=AV(),PEt=parseInt("755",8),bEt=parseInt("644",8),mSe=SEt(1024),hV=function(){},pV=function(t,e){e&=511,e&&t.push(mSe.slice(0,512-e))};function xEt(t){switch(t&_w.S_IFMT){case _w.S_IFBLK:return"block-device";case _w.S_IFCHR:return"character-device";case _w.S_IFDIR:return"directory";case _w.S_IFIFO:return"fifo";case _w.S_IFLNK:return"symlink"}return"file"}var QN=function(t){Hw.call(this),this.written=0,this._to=t,this._destroyed=!1};kN(QN,Hw);QN.prototype._write=function(t,e,r){if(this.written+=t.length,this._to.push(t))return r();this._to._drain=r};QN.prototype.destroy=function(){this._destroyed||(this._destroyed=!0,this.emit("close"))};var RN=function(){Hw.call(this),this.linkname="",this._decoder=new DEt("utf-8"),this._destroyed=!1};kN(RN,Hw);RN.prototype._write=function(t,e,r){this.linkname+=this._decoder.write(t),r()};RN.prototype.destroy=function(){this._destroyed||(this._destroyed=!0,this.emit("close"))};var cP=function(){Hw.call(this),this._destroyed=!1};kN(cP,Hw);cP.prototype._write=function(t,e,r){r(new Error("No body allowed for this entry"))};cP.prototype.destroy=function(){this._destroyed||(this._destroyed=!0,this.emit("close"))};var mA=function(t){if(!(this instanceof mA))return new mA(t);dSe.call(this,t),this._drain=hV,this._finalized=!1,this._finalizing=!1,this._destroyed=!1,this._stream=null};kN(mA,dSe);mA.prototype.entry=function(t,e,r){if(this._stream)throw new Error("already piping an entry");if(!(this._finalized||this._destroyed)){typeof e=="function"&&(r=e,e=null),r||(r=hV);var s=this;if((!t.size||t.type==="symlink")&&(t.size=0),t.type||(t.type=xEt(t.mode)),t.mode||(t.mode=t.type==="directory"?PEt:bEt),t.uid||(t.uid=0),t.gid||(t.gid=0),t.mtime||(t.mtime=new Date),typeof e=="string"&&(e=Buffer.from(e)),Buffer.isBuffer(e)){t.size=e.length,this._encode(t);var a=this.push(e);return pV(s,t.size),a?process.nextTick(r):this._drain=r,new cP}if(t.type==="symlink"&&!t.linkname){var n=new RN;return gSe(n,function(f){if(f)return s.destroy(),r(f);t.linkname=n.linkname,s._encode(t),r()}),n}if(this._encode(t),t.type!=="file"&&t.type!=="contiguous-file")return process.nextTick(r),new cP;var c=new QN(this);return this._stream=c,gSe(c,function(f){if(s._stream=null,f)return s.destroy(),r(f);if(c.written!==t.size)return s.destroy(),r(new Error("size mismatch"));pV(s,t.size),s._finalizing&&s.finalize(),r()}),c}};mA.prototype.finalize=function(){if(this._stream){this._finalizing=!0;return}this._finalized||(this._finalized=!0,this.push(mSe),this.push(null))};mA.prototype.destroy=function(t){this._destroyed||(this._destroyed=!0,t&&this.emit("error",t),this.emit("close"),this._stream&&this._stream.destroy&&this._stream.destroy())};mA.prototype._encode=function(t){if(!t.pax){var e=xN.encode(t);if(e){this.push(e);return}}this._encodePax(t)};mA.prototype._encodePax=function(t){var e=xN.encodePax({name:t.name,linkname:t.linkname,pax:t.pax}),r={name:"PaxHeader",mode:t.mode,uid:t.uid,gid:t.gid,size:e.length,mtime:t.mtime,type:"pax-header",linkname:t.linkname&&"PaxHeader",uname:t.uname,gname:t.gname,devmajor:t.devmajor,devminor:t.devminor};this.push(xN.encode(r)),this.push(e),pV(this,e.length),r.size=t.size,r.type=t.type,this.push(xN.encode(r))};mA.prototype._read=function(t){var e=this._drain;this._drain=hV,e()};ySe.exports=mA});var ISe=_(gV=>{gV.extract=ASe();gV.pack=ESe()});var TSe=_(Ra=>{"use strict";var jEt=Ra&&Ra.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(Ra,"__esModule",{value:!0});Ra.Minipass=Ra.isWritable=Ra.isReadable=Ra.isStream=void 0;var bSe=typeof process=="object"&&process?process:{stdout:null,stderr:null},PV=Ie("node:events"),RSe=jEt(Ie("node:stream")),GEt=Ie("node:string_decoder"),qEt=t=>!!t&&typeof t=="object"&&(t instanceof HN||t instanceof RSe.default||(0,Ra.isReadable)(t)||(0,Ra.isWritable)(t));Ra.isStream=qEt;var WEt=t=>!!t&&typeof t=="object"&&t instanceof PV.EventEmitter&&typeof t.pipe=="function"&&t.pipe!==RSe.default.Writable.prototype.pipe;Ra.isReadable=WEt;var YEt=t=>!!t&&typeof t=="object"&&t instanceof PV.EventEmitter&&typeof t.write=="function"&&typeof t.end=="function";Ra.isWritable=YEt;var uh=Symbol("EOF"),fh=Symbol("maybeEmitEnd"),dg=Symbol("emittedEnd"),NN=Symbol("emittingEnd"),uP=Symbol("emittedError"),ON=Symbol("closed"),xSe=Symbol("read"),LN=Symbol("flush"),kSe=Symbol("flushChunk"),uf=Symbol("encoding"),Gw=Symbol("decoder"),Ks=Symbol("flowing"),fP=Symbol("paused"),qw=Symbol("resume"),zs=Symbol("buffer"),Qa=Symbol("pipes"),Zs=Symbol("bufferLength"),CV=Symbol("bufferPush"),MN=Symbol("bufferShift"),na=Symbol("objectMode"),es=Symbol("destroyed"),wV=Symbol("error"),BV=Symbol("emitData"),QSe=Symbol("emitEnd"),vV=Symbol("emitEnd2"),EA=Symbol("async"),SV=Symbol("abort"),UN=Symbol("aborted"),AP=Symbol("signal"),zm=Symbol("dataListeners"),rc=Symbol("discarded"),pP=t=>Promise.resolve().then(t),VEt=t=>t(),JEt=t=>t==="end"||t==="finish"||t==="prefinish",KEt=t=>t instanceof ArrayBuffer||!!t&&typeof t=="object"&&t.constructor&&t.constructor.name==="ArrayBuffer"&&t.byteLength>=0,zEt=t=>!Buffer.isBuffer(t)&&ArrayBuffer.isView(t),_N=class{src;dest;opts;ondrain;constructor(e,r,s){this.src=e,this.dest=r,this.opts=s,this.ondrain=()=>e[qw](),this.dest.on("drain",this.ondrain)}unpipe(){this.dest.removeListener("drain",this.ondrain)}proxyErrors(e){}end(){this.unpipe(),this.opts.end&&this.dest.end()}},DV=class extends _N{unpipe(){this.src.removeListener("error",this.proxyErrors),super.unpipe()}constructor(e,r,s){super(e,r,s),this.proxyErrors=a=>r.emit("error",a),e.on("error",this.proxyErrors)}},ZEt=t=>!!t.objectMode,XEt=t=>!t.objectMode&&!!t.encoding&&t.encoding!=="buffer",HN=class extends PV.EventEmitter{[Ks]=!1;[fP]=!1;[Qa]=[];[zs]=[];[na];[uf];[EA];[Gw];[uh]=!1;[dg]=!1;[NN]=!1;[ON]=!1;[uP]=null;[Zs]=0;[es]=!1;[AP];[UN]=!1;[zm]=0;[rc]=!1;writable=!0;readable=!0;constructor(...e){let r=e[0]||{};if(super(),r.objectMode&&typeof r.encoding=="string")throw new TypeError("Encoding and objectMode may not be used together");ZEt(r)?(this[na]=!0,this[uf]=null):XEt(r)?(this[uf]=r.encoding,this[na]=!1):(this[na]=!1,this[uf]=null),this[EA]=!!r.async,this[Gw]=this[uf]?new GEt.StringDecoder(this[uf]):null,r&&r.debugExposeBuffer===!0&&Object.defineProperty(this,"buffer",{get:()=>this[zs]}),r&&r.debugExposePipes===!0&&Object.defineProperty(this,"pipes",{get:()=>this[Qa]});let{signal:s}=r;s&&(this[AP]=s,s.aborted?this[SV]():s.addEventListener("abort",()=>this[SV]()))}get bufferLength(){return this[Zs]}get encoding(){return this[uf]}set encoding(e){throw new Error("Encoding must be set at instantiation time")}setEncoding(e){throw new Error("Encoding must be set at instantiation time")}get objectMode(){return this[na]}set objectMode(e){throw new Error("objectMode must be set at instantiation time")}get async(){return this[EA]}set async(e){this[EA]=this[EA]||!!e}[SV](){this[UN]=!0,this.emit("abort",this[AP]?.reason),this.destroy(this[AP]?.reason)}get aborted(){return this[UN]}set aborted(e){}write(e,r,s){if(this[UN])return!1;if(this[uh])throw new Error("write after end");if(this[es])return this.emit("error",Object.assign(new Error("Cannot call write after a stream was destroyed"),{code:"ERR_STREAM_DESTROYED"})),!0;typeof r=="function"&&(s=r,r="utf8"),r||(r="utf8");let a=this[EA]?pP:VEt;if(!this[na]&&!Buffer.isBuffer(e)){if(zEt(e))e=Buffer.from(e.buffer,e.byteOffset,e.byteLength);else if(KEt(e))e=Buffer.from(e);else if(typeof e!="string")throw new Error("Non-contiguous data written to non-objectMode stream")}return this[na]?(this[Ks]&&this[Zs]!==0&&this[LN](!0),this[Ks]?this.emit("data",e):this[CV](e),this[Zs]!==0&&this.emit("readable"),s&&a(s),this[Ks]):e.length?(typeof e=="string"&&!(r===this[uf]&&!this[Gw]?.lastNeed)&&(e=Buffer.from(e,r)),Buffer.isBuffer(e)&&this[uf]&&(e=this[Gw].write(e)),this[Ks]&&this[Zs]!==0&&this[LN](!0),this[Ks]?this.emit("data",e):this[CV](e),this[Zs]!==0&&this.emit("readable"),s&&a(s),this[Ks]):(this[Zs]!==0&&this.emit("readable"),s&&a(s),this[Ks])}read(e){if(this[es])return null;if(this[rc]=!1,this[Zs]===0||e===0||e&&e>this[Zs])return this[fh](),null;this[na]&&(e=null),this[zs].length>1&&!this[na]&&(this[zs]=[this[uf]?this[zs].join(""):Buffer.concat(this[zs],this[Zs])]);let r=this[xSe](e||null,this[zs][0]);return this[fh](),r}[xSe](e,r){if(this[na])this[MN]();else{let s=r;e===s.length||e===null?this[MN]():typeof s=="string"?(this[zs][0]=s.slice(e),r=s.slice(0,e),this[Zs]-=e):(this[zs][0]=s.subarray(e),r=s.subarray(0,e),this[Zs]-=e)}return this.emit("data",r),!this[zs].length&&!this[uh]&&this.emit("drain"),r}end(e,r,s){return typeof e=="function"&&(s=e,e=void 0),typeof r=="function"&&(s=r,r="utf8"),e!==void 0&&this.write(e,r),s&&this.once("end",s),this[uh]=!0,this.writable=!1,(this[Ks]||!this[fP])&&this[fh](),this}[qw](){this[es]||(!this[zm]&&!this[Qa].length&&(this[rc]=!0),this[fP]=!1,this[Ks]=!0,this.emit("resume"),this[zs].length?this[LN]():this[uh]?this[fh]():this.emit("drain"))}resume(){return this[qw]()}pause(){this[Ks]=!1,this[fP]=!0,this[rc]=!1}get destroyed(){return this[es]}get flowing(){return this[Ks]}get paused(){return this[fP]}[CV](e){this[na]?this[Zs]+=1:this[Zs]+=e.length,this[zs].push(e)}[MN](){return this[na]?this[Zs]-=1:this[Zs]-=this[zs][0].length,this[zs].shift()}[LN](e=!1){do;while(this[kSe](this[MN]())&&this[zs].length);!e&&!this[zs].length&&!this[uh]&&this.emit("drain")}[kSe](e){return this.emit("data",e),this[Ks]}pipe(e,r){if(this[es])return e;this[rc]=!1;let s=this[dg];return r=r||{},e===bSe.stdout||e===bSe.stderr?r.end=!1:r.end=r.end!==!1,r.proxyErrors=!!r.proxyErrors,s?r.end&&e.end():(this[Qa].push(r.proxyErrors?new DV(this,e,r):new _N(this,e,r)),this[EA]?pP(()=>this[qw]()):this[qw]()),e}unpipe(e){let r=this[Qa].find(s=>s.dest===e);r&&(this[Qa].length===1?(this[Ks]&&this[zm]===0&&(this[Ks]=!1),this[Qa]=[]):this[Qa].splice(this[Qa].indexOf(r),1),r.unpipe())}addListener(e,r){return this.on(e,r)}on(e,r){let s=super.on(e,r);if(e==="data")this[rc]=!1,this[zm]++,!this[Qa].length&&!this[Ks]&&this[qw]();else if(e==="readable"&&this[Zs]!==0)super.emit("readable");else if(JEt(e)&&this[dg])super.emit(e),this.removeAllListeners(e);else if(e==="error"&&this[uP]){let a=r;this[EA]?pP(()=>a.call(this,this[uP])):a.call(this,this[uP])}return s}removeListener(e,r){return this.off(e,r)}off(e,r){let s=super.off(e,r);return e==="data"&&(this[zm]=this.listeners("data").length,this[zm]===0&&!this[rc]&&!this[Qa].length&&(this[Ks]=!1)),s}removeAllListeners(e){let r=super.removeAllListeners(e);return(e==="data"||e===void 0)&&(this[zm]=0,!this[rc]&&!this[Qa].length&&(this[Ks]=!1)),r}get emittedEnd(){return this[dg]}[fh](){!this[NN]&&!this[dg]&&!this[es]&&this[zs].length===0&&this[uh]&&(this[NN]=!0,this.emit("end"),this.emit("prefinish"),this.emit("finish"),this[ON]&&this.emit("close"),this[NN]=!1)}emit(e,...r){let s=r[0];if(e!=="error"&&e!=="close"&&e!==es&&this[es])return!1;if(e==="data")return!this[na]&&!s?!1:this[EA]?(pP(()=>this[BV](s)),!0):this[BV](s);if(e==="end")return this[QSe]();if(e==="close"){if(this[ON]=!0,!this[dg]&&!this[es])return!1;let n=super.emit("close");return this.removeAllListeners("close"),n}else if(e==="error"){this[uP]=s,super.emit(wV,s);let n=!this[AP]||this.listeners("error").length?super.emit("error",s):!1;return this[fh](),n}else if(e==="resume"){let n=super.emit("resume");return this[fh](),n}else if(e==="finish"||e==="prefinish"){let n=super.emit(e);return this.removeAllListeners(e),n}let a=super.emit(e,...r);return this[fh](),a}[BV](e){for(let s of this[Qa])s.dest.write(e)===!1&&this.pause();let r=this[rc]?!1:super.emit("data",e);return this[fh](),r}[QSe](){return this[dg]?!1:(this[dg]=!0,this.readable=!1,this[EA]?(pP(()=>this[vV]()),!0):this[vV]())}[vV](){if(this[Gw]){let r=this[Gw].end();if(r){for(let s of this[Qa])s.dest.write(r);this[rc]||super.emit("data",r)}}for(let r of this[Qa])r.end();let e=super.emit("end");return this.removeAllListeners("end"),e}async collect(){let e=Object.assign([],{dataLength:0});this[na]||(e.dataLength=0);let r=this.promise();return this.on("data",s=>{e.push(s),this[na]||(e.dataLength+=s.length)}),await r,e}async concat(){if(this[na])throw new Error("cannot concat in objectMode");let e=await this.collect();return this[uf]?e.join(""):Buffer.concat(e,e.dataLength)}async promise(){return new Promise((e,r)=>{this.on(es,()=>r(new Error("stream destroyed"))),this.on("error",s=>r(s)),this.on("end",()=>e())})}[Symbol.asyncIterator](){this[rc]=!1;let e=!1,r=async()=>(this.pause(),e=!0,{value:void 0,done:!0});return{next:()=>{if(e)return r();let a=this.read();if(a!==null)return Promise.resolve({done:!1,value:a});if(this[uh])return r();let n,c,f=C=>{this.off("data",p),this.off("end",h),this.off(es,E),r(),c(C)},p=C=>{this.off("error",f),this.off("end",h),this.off(es,E),this.pause(),n({value:C,done:!!this[uh]})},h=()=>{this.off("error",f),this.off("data",p),this.off(es,E),r(),n({done:!0,value:void 0})},E=()=>f(new Error("stream destroyed"));return new Promise((C,S)=>{c=S,n=C,this.once(es,E),this.once("error",f),this.once("end",h),this.once("data",p)})},throw:r,return:r,[Symbol.asyncIterator](){return this}}}[Symbol.iterator](){this[rc]=!1;let e=!1,r=()=>(this.pause(),this.off(wV,r),this.off(es,r),this.off("end",r),e=!0,{done:!0,value:void 0}),s=()=>{if(e)return r();let a=this.read();return a===null?r():{done:!1,value:a}};return this.once("end",r),this.once(wV,r),this.once(es,r),{next:s,throw:r,return:r,[Symbol.iterator](){return this}}}destroy(e){if(this[es])return e?this.emit("error",e):this.emit(es),this;this[es]=!0,this[rc]=!0,this[zs].length=0,this[Zs]=0;let r=this;return typeof r.close=="function"&&!this[ON]&&r.close(),e?this.emit("error",e):this.emit(es),this}static get isStream(){return Ra.isStream}};Ra.Minipass=HN});var OSe=_((prr,IA)=>{"use strict";var gP=Ie("crypto"),{Minipass:$Et}=TSe(),xV=["sha512","sha384","sha256"],QV=["sha512"],eIt=/^[a-z0-9+/]+(?:=?=?)$/i,tIt=/^([a-z0-9]+)-([^?]+)([?\S*]*)$/,rIt=/^([a-z0-9]+)-([A-Za-z0-9+/=]{44,88})(\?[\x21-\x7E]*)?$/,nIt=/^[\x21-\x7E]+$/,dP=t=>t?.length?`?${t.join("?")}`:"",kV=class extends $Et{#t;#r;#i;constructor(e){super(),this.size=0,this.opts=e,this.#e(),e?.algorithms?this.algorithms=[...e.algorithms]:this.algorithms=[...QV],this.algorithm!==null&&!this.algorithms.includes(this.algorithm)&&this.algorithms.push(this.algorithm),this.hashes=this.algorithms.map(gP.createHash)}#e(){this.sri=this.opts?.integrity?nc(this.opts?.integrity,this.opts):null,this.expectedSize=this.opts?.size,this.sri?this.sri.isHash?(this.goodSri=!0,this.algorithm=this.sri.algorithm):(this.goodSri=!this.sri.isEmpty(),this.algorithm=this.sri.pickAlgorithm(this.opts)):this.algorithm=null,this.digests=this.goodSri?this.sri[this.algorithm]:null,this.optString=dP(this.opts?.options)}on(e,r){return e==="size"&&this.#r?r(this.#r):e==="integrity"&&this.#t?r(this.#t):e==="verified"&&this.#i?r(this.#i):super.on(e,r)}emit(e,r){return e==="end"&&this.#n(),super.emit(e,r)}write(e){return this.size+=e.length,this.hashes.forEach(r=>r.update(e)),super.write(e)}#n(){this.goodSri||this.#e();let e=nc(this.hashes.map((s,a)=>`${this.algorithms[a]}-${s.digest("base64")}${this.optString}`).join(" "),this.opts),r=this.goodSri&&e.match(this.sri,this.opts);if(typeof this.expectedSize=="number"&&this.size!==this.expectedSize){let s=new Error(`stream size mismatch when checking ${this.sri}. Wanted: ${this.expectedSize} Found: ${this.size}`);s.code="EBADSIZE",s.found=this.size,s.expected=this.expectedSize,s.sri=this.sri,this.emit("error",s)}else if(this.sri&&!r){let s=new Error(`${this.sri} integrity checksum failed when using ${this.algorithm}: wanted ${this.digests} but got ${e}. (${this.size} bytes)`);s.code="EINTEGRITY",s.found=e,s.expected=this.digests,s.algorithm=this.algorithm,s.sri=this.sri,this.emit("error",s)}else this.#r=this.size,this.emit("size",this.size),this.#t=e,this.emit("integrity",e),r&&(this.#i=r,this.emit("verified",r))}},Ah=class{get isHash(){return!0}constructor(e,r){let s=r?.strict;this.source=e.trim(),this.digest="",this.algorithm="",this.options=[];let a=this.source.match(s?rIt:tIt);if(!a||s&&!xV.includes(a[1]))return;this.algorithm=a[1],this.digest=a[2];let n=a[3];n&&(this.options=n.slice(1).split("?"))}hexDigest(){return this.digest&&Buffer.from(this.digest,"base64").toString("hex")}toJSON(){return this.toString()}match(e,r){let s=nc(e,r);if(!s)return!1;if(s.isIntegrity){let a=s.pickAlgorithm(r,[this.algorithm]);if(!a)return!1;let n=s[a].find(c=>c.digest===this.digest);return n||!1}return s.digest===this.digest?s:!1}toString(e){return e?.strict&&!(xV.includes(this.algorithm)&&this.digest.match(eIt)&&this.options.every(r=>r.match(nIt)))?"":`${this.algorithm}-${this.digest}${dP(this.options)}`}};function FSe(t,e,r,s){let a=t!=="",n=!1,c="",f=s.length-1;for(let h=0;hs[a].find(c=>n.digest===c.digest)))throw new Error("hashes do not match, cannot update integrity")}else this[a]=s[a]}match(e,r){let s=nc(e,r);if(!s)return!1;let a=s.pickAlgorithm(r,Object.keys(this));return!!a&&this[a]&&s[a]&&this[a].find(n=>s[a].find(c=>n.digest===c.digest))||!1}pickAlgorithm(e,r){let s=e?.pickAlgorithm||fIt,a=Object.keys(this).filter(n=>r?.length?r.includes(n):!0);return a.length?a.reduce((n,c)=>s(n,c)||n):null}};IA.exports.parse=nc;function nc(t,e){if(!t)return null;if(typeof t=="string")return bV(t,e);if(t.algorithm&&t.digest){let r=new Zm;return r[t.algorithm]=[t],bV(hP(r,e),e)}else return bV(hP(t,e),e)}function bV(t,e){if(e?.single)return new Ah(t,e);let r=t.trim().split(/\s+/).reduce((s,a)=>{let n=new Ah(a,e);if(n.algorithm&&n.digest){let c=n.algorithm;s[c]||(s[c]=[]),s[c].push(n)}return s},new Zm);return r.isEmpty()?null:r}IA.exports.stringify=hP;function hP(t,e){return t.algorithm&&t.digest?Ah.prototype.toString.call(t,e):typeof t=="string"?hP(nc(t,e),e):Zm.prototype.toString.call(t,e)}IA.exports.fromHex=iIt;function iIt(t,e,r){let s=dP(r?.options);return nc(`${e}-${Buffer.from(t,"hex").toString("base64")}${s}`,r)}IA.exports.fromData=sIt;function sIt(t,e){let r=e?.algorithms||[...QV],s=dP(e?.options);return r.reduce((a,n)=>{let c=gP.createHash(n).update(t).digest("base64"),f=new Ah(`${n}-${c}${s}`,e);if(f.algorithm&&f.digest){let p=f.algorithm;a[p]||(a[p]=[]),a[p].push(f)}return a},new Zm)}IA.exports.fromStream=oIt;function oIt(t,e){let r=RV(e);return new Promise((s,a)=>{t.pipe(r),t.on("error",a),r.on("error",a);let n;r.on("integrity",c=>{n=c}),r.on("end",()=>s(n)),r.resume()})}IA.exports.checkData=aIt;function aIt(t,e,r){if(e=nc(e,r),!e||!Object.keys(e).length){if(r?.error)throw Object.assign(new Error("No valid integrity hashes to check against"),{code:"EINTEGRITY"});return!1}let s=e.pickAlgorithm(r),a=gP.createHash(s).update(t).digest("base64"),n=nc({algorithm:s,digest:a}),c=n.match(e,r);if(r=r||{},c||!r.error)return c;if(typeof r.size=="number"&&t.length!==r.size){let f=new Error(`data size mismatch when checking ${e}. Wanted: ${r.size} Found: ${t.length}`);throw f.code="EBADSIZE",f.found=t.length,f.expected=r.size,f.sri=e,f}else{let f=new Error(`Integrity checksum failed when using ${s}: Wanted ${e}, but got ${n}. (${t.length} bytes)`);throw f.code="EINTEGRITY",f.found=n,f.expected=e,f.algorithm=s,f.sri=e,f}}IA.exports.checkStream=lIt;function lIt(t,e,r){if(r=r||Object.create(null),r.integrity=e,e=nc(e,r),!e||!Object.keys(e).length)return Promise.reject(Object.assign(new Error("No valid integrity hashes to check against"),{code:"EINTEGRITY"}));let s=RV(r);return new Promise((a,n)=>{t.pipe(s),t.on("error",n),s.on("error",n);let c;s.on("verified",f=>{c=f}),s.on("end",()=>a(c)),s.resume()})}IA.exports.integrityStream=RV;function RV(t=Object.create(null)){return new kV(t)}IA.exports.create=cIt;function cIt(t){let e=t?.algorithms||[...QV],r=dP(t?.options),s=e.map(gP.createHash);return{update:function(a,n){return s.forEach(c=>c.update(a,n)),this},digest:function(){return e.reduce((n,c)=>{let f=s.shift().digest("base64"),p=new Ah(`${c}-${f}${r}`,t);if(p.algorithm&&p.digest){let h=p.algorithm;n[h]||(n[h]=[]),n[h].push(p)}return n},new Zm)}}}var uIt=gP.getHashes(),NSe=["md5","whirlpool","sha1","sha224","sha256","sha384","sha512","sha3","sha3-256","sha3-384","sha3-512","sha3_256","sha3_384","sha3_512"].filter(t=>uIt.includes(t));function fIt(t,e){return NSe.indexOf(t.toLowerCase())>=NSe.indexOf(e.toLowerCase())?t:e}});var TV=_(mg=>{"use strict";Object.defineProperty(mg,"__esModule",{value:!0});mg.Signature=mg.Envelope=void 0;mg.Envelope={fromJSON(t){return{payload:jN(t.payload)?Buffer.from(LSe(t.payload)):Buffer.alloc(0),payloadType:jN(t.payloadType)?globalThis.String(t.payloadType):"",signatures:globalThis.Array.isArray(t?.signatures)?t.signatures.map(e=>mg.Signature.fromJSON(e)):[]}},toJSON(t){let e={};return t.payload.length!==0&&(e.payload=MSe(t.payload)),t.payloadType!==""&&(e.payloadType=t.payloadType),t.signatures?.length&&(e.signatures=t.signatures.map(r=>mg.Signature.toJSON(r))),e}};mg.Signature={fromJSON(t){return{sig:jN(t.sig)?Buffer.from(LSe(t.sig)):Buffer.alloc(0),keyid:jN(t.keyid)?globalThis.String(t.keyid):""}},toJSON(t){let e={};return t.sig.length!==0&&(e.sig=MSe(t.sig)),t.keyid!==""&&(e.keyid=t.keyid),e}};function LSe(t){return Uint8Array.from(globalThis.Buffer.from(t,"base64"))}function MSe(t){return globalThis.Buffer.from(t).toString("base64")}function jN(t){return t!=null}});var _Se=_(GN=>{"use strict";Object.defineProperty(GN,"__esModule",{value:!0});GN.Timestamp=void 0;GN.Timestamp={fromJSON(t){return{seconds:USe(t.seconds)?globalThis.String(t.seconds):"0",nanos:USe(t.nanos)?globalThis.Number(t.nanos):0}},toJSON(t){let e={};return t.seconds!=="0"&&(e.seconds=t.seconds),t.nanos!==0&&(e.nanos=Math.round(t.nanos)),e}};function USe(t){return t!=null}});var Ww=_(Ur=>{"use strict";Object.defineProperty(Ur,"__esModule",{value:!0});Ur.TimeRange=Ur.X509CertificateChain=Ur.SubjectAlternativeName=Ur.X509Certificate=Ur.DistinguishedName=Ur.ObjectIdentifierValuePair=Ur.ObjectIdentifier=Ur.PublicKeyIdentifier=Ur.PublicKey=Ur.RFC3161SignedTimestamp=Ur.LogId=Ur.MessageSignature=Ur.HashOutput=Ur.SubjectAlternativeNameType=Ur.PublicKeyDetails=Ur.HashAlgorithm=void 0;Ur.hashAlgorithmFromJSON=jSe;Ur.hashAlgorithmToJSON=GSe;Ur.publicKeyDetailsFromJSON=qSe;Ur.publicKeyDetailsToJSON=WSe;Ur.subjectAlternativeNameTypeFromJSON=YSe;Ur.subjectAlternativeNameTypeToJSON=VSe;var AIt=_Se(),yl;(function(t){t[t.HASH_ALGORITHM_UNSPECIFIED=0]="HASH_ALGORITHM_UNSPECIFIED",t[t.SHA2_256=1]="SHA2_256",t[t.SHA2_384=2]="SHA2_384",t[t.SHA2_512=3]="SHA2_512",t[t.SHA3_256=4]="SHA3_256",t[t.SHA3_384=5]="SHA3_384"})(yl||(Ur.HashAlgorithm=yl={}));function jSe(t){switch(t){case 0:case"HASH_ALGORITHM_UNSPECIFIED":return yl.HASH_ALGORITHM_UNSPECIFIED;case 1:case"SHA2_256":return yl.SHA2_256;case 2:case"SHA2_384":return yl.SHA2_384;case 3:case"SHA2_512":return yl.SHA2_512;case 4:case"SHA3_256":return yl.SHA3_256;case 5:case"SHA3_384":return yl.SHA3_384;default:throw new globalThis.Error("Unrecognized enum value "+t+" for enum HashAlgorithm")}}function GSe(t){switch(t){case yl.HASH_ALGORITHM_UNSPECIFIED:return"HASH_ALGORITHM_UNSPECIFIED";case yl.SHA2_256:return"SHA2_256";case yl.SHA2_384:return"SHA2_384";case yl.SHA2_512:return"SHA2_512";case yl.SHA3_256:return"SHA3_256";case yl.SHA3_384:return"SHA3_384";default:throw new globalThis.Error("Unrecognized enum value "+t+" for enum HashAlgorithm")}}var rn;(function(t){t[t.PUBLIC_KEY_DETAILS_UNSPECIFIED=0]="PUBLIC_KEY_DETAILS_UNSPECIFIED",t[t.PKCS1_RSA_PKCS1V5=1]="PKCS1_RSA_PKCS1V5",t[t.PKCS1_RSA_PSS=2]="PKCS1_RSA_PSS",t[t.PKIX_RSA_PKCS1V5=3]="PKIX_RSA_PKCS1V5",t[t.PKIX_RSA_PSS=4]="PKIX_RSA_PSS",t[t.PKIX_RSA_PKCS1V15_2048_SHA256=9]="PKIX_RSA_PKCS1V15_2048_SHA256",t[t.PKIX_RSA_PKCS1V15_3072_SHA256=10]="PKIX_RSA_PKCS1V15_3072_SHA256",t[t.PKIX_RSA_PKCS1V15_4096_SHA256=11]="PKIX_RSA_PKCS1V15_4096_SHA256",t[t.PKIX_RSA_PSS_2048_SHA256=16]="PKIX_RSA_PSS_2048_SHA256",t[t.PKIX_RSA_PSS_3072_SHA256=17]="PKIX_RSA_PSS_3072_SHA256",t[t.PKIX_RSA_PSS_4096_SHA256=18]="PKIX_RSA_PSS_4096_SHA256",t[t.PKIX_ECDSA_P256_HMAC_SHA_256=6]="PKIX_ECDSA_P256_HMAC_SHA_256",t[t.PKIX_ECDSA_P256_SHA_256=5]="PKIX_ECDSA_P256_SHA_256",t[t.PKIX_ECDSA_P384_SHA_384=12]="PKIX_ECDSA_P384_SHA_384",t[t.PKIX_ECDSA_P521_SHA_512=13]="PKIX_ECDSA_P521_SHA_512",t[t.PKIX_ED25519=7]="PKIX_ED25519",t[t.PKIX_ED25519_PH=8]="PKIX_ED25519_PH",t[t.LMS_SHA256=14]="LMS_SHA256",t[t.LMOTS_SHA256=15]="LMOTS_SHA256"})(rn||(Ur.PublicKeyDetails=rn={}));function qSe(t){switch(t){case 0:case"PUBLIC_KEY_DETAILS_UNSPECIFIED":return rn.PUBLIC_KEY_DETAILS_UNSPECIFIED;case 1:case"PKCS1_RSA_PKCS1V5":return rn.PKCS1_RSA_PKCS1V5;case 2:case"PKCS1_RSA_PSS":return rn.PKCS1_RSA_PSS;case 3:case"PKIX_RSA_PKCS1V5":return rn.PKIX_RSA_PKCS1V5;case 4:case"PKIX_RSA_PSS":return rn.PKIX_RSA_PSS;case 9:case"PKIX_RSA_PKCS1V15_2048_SHA256":return rn.PKIX_RSA_PKCS1V15_2048_SHA256;case 10:case"PKIX_RSA_PKCS1V15_3072_SHA256":return rn.PKIX_RSA_PKCS1V15_3072_SHA256;case 11:case"PKIX_RSA_PKCS1V15_4096_SHA256":return rn.PKIX_RSA_PKCS1V15_4096_SHA256;case 16:case"PKIX_RSA_PSS_2048_SHA256":return rn.PKIX_RSA_PSS_2048_SHA256;case 17:case"PKIX_RSA_PSS_3072_SHA256":return rn.PKIX_RSA_PSS_3072_SHA256;case 18:case"PKIX_RSA_PSS_4096_SHA256":return rn.PKIX_RSA_PSS_4096_SHA256;case 6:case"PKIX_ECDSA_P256_HMAC_SHA_256":return rn.PKIX_ECDSA_P256_HMAC_SHA_256;case 5:case"PKIX_ECDSA_P256_SHA_256":return rn.PKIX_ECDSA_P256_SHA_256;case 12:case"PKIX_ECDSA_P384_SHA_384":return rn.PKIX_ECDSA_P384_SHA_384;case 13:case"PKIX_ECDSA_P521_SHA_512":return rn.PKIX_ECDSA_P521_SHA_512;case 7:case"PKIX_ED25519":return rn.PKIX_ED25519;case 8:case"PKIX_ED25519_PH":return rn.PKIX_ED25519_PH;case 14:case"LMS_SHA256":return rn.LMS_SHA256;case 15:case"LMOTS_SHA256":return rn.LMOTS_SHA256;default:throw new globalThis.Error("Unrecognized enum value "+t+" for enum PublicKeyDetails")}}function WSe(t){switch(t){case rn.PUBLIC_KEY_DETAILS_UNSPECIFIED:return"PUBLIC_KEY_DETAILS_UNSPECIFIED";case rn.PKCS1_RSA_PKCS1V5:return"PKCS1_RSA_PKCS1V5";case rn.PKCS1_RSA_PSS:return"PKCS1_RSA_PSS";case rn.PKIX_RSA_PKCS1V5:return"PKIX_RSA_PKCS1V5";case rn.PKIX_RSA_PSS:return"PKIX_RSA_PSS";case rn.PKIX_RSA_PKCS1V15_2048_SHA256:return"PKIX_RSA_PKCS1V15_2048_SHA256";case rn.PKIX_RSA_PKCS1V15_3072_SHA256:return"PKIX_RSA_PKCS1V15_3072_SHA256";case rn.PKIX_RSA_PKCS1V15_4096_SHA256:return"PKIX_RSA_PKCS1V15_4096_SHA256";case rn.PKIX_RSA_PSS_2048_SHA256:return"PKIX_RSA_PSS_2048_SHA256";case rn.PKIX_RSA_PSS_3072_SHA256:return"PKIX_RSA_PSS_3072_SHA256";case rn.PKIX_RSA_PSS_4096_SHA256:return"PKIX_RSA_PSS_4096_SHA256";case rn.PKIX_ECDSA_P256_HMAC_SHA_256:return"PKIX_ECDSA_P256_HMAC_SHA_256";case rn.PKIX_ECDSA_P256_SHA_256:return"PKIX_ECDSA_P256_SHA_256";case rn.PKIX_ECDSA_P384_SHA_384:return"PKIX_ECDSA_P384_SHA_384";case rn.PKIX_ECDSA_P521_SHA_512:return"PKIX_ECDSA_P521_SHA_512";case rn.PKIX_ED25519:return"PKIX_ED25519";case rn.PKIX_ED25519_PH:return"PKIX_ED25519_PH";case rn.LMS_SHA256:return"LMS_SHA256";case rn.LMOTS_SHA256:return"LMOTS_SHA256";default:throw new globalThis.Error("Unrecognized enum value "+t+" for enum PublicKeyDetails")}}var CA;(function(t){t[t.SUBJECT_ALTERNATIVE_NAME_TYPE_UNSPECIFIED=0]="SUBJECT_ALTERNATIVE_NAME_TYPE_UNSPECIFIED",t[t.EMAIL=1]="EMAIL",t[t.URI=2]="URI",t[t.OTHER_NAME=3]="OTHER_NAME"})(CA||(Ur.SubjectAlternativeNameType=CA={}));function YSe(t){switch(t){case 0:case"SUBJECT_ALTERNATIVE_NAME_TYPE_UNSPECIFIED":return CA.SUBJECT_ALTERNATIVE_NAME_TYPE_UNSPECIFIED;case 1:case"EMAIL":return CA.EMAIL;case 2:case"URI":return CA.URI;case 3:case"OTHER_NAME":return CA.OTHER_NAME;default:throw new globalThis.Error("Unrecognized enum value "+t+" for enum SubjectAlternativeNameType")}}function VSe(t){switch(t){case CA.SUBJECT_ALTERNATIVE_NAME_TYPE_UNSPECIFIED:return"SUBJECT_ALTERNATIVE_NAME_TYPE_UNSPECIFIED";case CA.EMAIL:return"EMAIL";case CA.URI:return"URI";case CA.OTHER_NAME:return"OTHER_NAME";default:throw new globalThis.Error("Unrecognized enum value "+t+" for enum SubjectAlternativeNameType")}}Ur.HashOutput={fromJSON(t){return{algorithm:ds(t.algorithm)?jSe(t.algorithm):0,digest:ds(t.digest)?Buffer.from(Xm(t.digest)):Buffer.alloc(0)}},toJSON(t){let e={};return t.algorithm!==0&&(e.algorithm=GSe(t.algorithm)),t.digest.length!==0&&(e.digest=$m(t.digest)),e}};Ur.MessageSignature={fromJSON(t){return{messageDigest:ds(t.messageDigest)?Ur.HashOutput.fromJSON(t.messageDigest):void 0,signature:ds(t.signature)?Buffer.from(Xm(t.signature)):Buffer.alloc(0)}},toJSON(t){let e={};return t.messageDigest!==void 0&&(e.messageDigest=Ur.HashOutput.toJSON(t.messageDigest)),t.signature.length!==0&&(e.signature=$m(t.signature)),e}};Ur.LogId={fromJSON(t){return{keyId:ds(t.keyId)?Buffer.from(Xm(t.keyId)):Buffer.alloc(0)}},toJSON(t){let e={};return t.keyId.length!==0&&(e.keyId=$m(t.keyId)),e}};Ur.RFC3161SignedTimestamp={fromJSON(t){return{signedTimestamp:ds(t.signedTimestamp)?Buffer.from(Xm(t.signedTimestamp)):Buffer.alloc(0)}},toJSON(t){let e={};return t.signedTimestamp.length!==0&&(e.signedTimestamp=$m(t.signedTimestamp)),e}};Ur.PublicKey={fromJSON(t){return{rawBytes:ds(t.rawBytes)?Buffer.from(Xm(t.rawBytes)):void 0,keyDetails:ds(t.keyDetails)?qSe(t.keyDetails):0,validFor:ds(t.validFor)?Ur.TimeRange.fromJSON(t.validFor):void 0}},toJSON(t){let e={};return t.rawBytes!==void 0&&(e.rawBytes=$m(t.rawBytes)),t.keyDetails!==0&&(e.keyDetails=WSe(t.keyDetails)),t.validFor!==void 0&&(e.validFor=Ur.TimeRange.toJSON(t.validFor)),e}};Ur.PublicKeyIdentifier={fromJSON(t){return{hint:ds(t.hint)?globalThis.String(t.hint):""}},toJSON(t){let e={};return t.hint!==""&&(e.hint=t.hint),e}};Ur.ObjectIdentifier={fromJSON(t){return{id:globalThis.Array.isArray(t?.id)?t.id.map(e=>globalThis.Number(e)):[]}},toJSON(t){let e={};return t.id?.length&&(e.id=t.id.map(r=>Math.round(r))),e}};Ur.ObjectIdentifierValuePair={fromJSON(t){return{oid:ds(t.oid)?Ur.ObjectIdentifier.fromJSON(t.oid):void 0,value:ds(t.value)?Buffer.from(Xm(t.value)):Buffer.alloc(0)}},toJSON(t){let e={};return t.oid!==void 0&&(e.oid=Ur.ObjectIdentifier.toJSON(t.oid)),t.value.length!==0&&(e.value=$m(t.value)),e}};Ur.DistinguishedName={fromJSON(t){return{organization:ds(t.organization)?globalThis.String(t.organization):"",commonName:ds(t.commonName)?globalThis.String(t.commonName):""}},toJSON(t){let e={};return t.organization!==""&&(e.organization=t.organization),t.commonName!==""&&(e.commonName=t.commonName),e}};Ur.X509Certificate={fromJSON(t){return{rawBytes:ds(t.rawBytes)?Buffer.from(Xm(t.rawBytes)):Buffer.alloc(0)}},toJSON(t){let e={};return t.rawBytes.length!==0&&(e.rawBytes=$m(t.rawBytes)),e}};Ur.SubjectAlternativeName={fromJSON(t){return{type:ds(t.type)?YSe(t.type):0,identity:ds(t.regexp)?{$case:"regexp",regexp:globalThis.String(t.regexp)}:ds(t.value)?{$case:"value",value:globalThis.String(t.value)}:void 0}},toJSON(t){let e={};return t.type!==0&&(e.type=VSe(t.type)),t.identity?.$case==="regexp"?e.regexp=t.identity.regexp:t.identity?.$case==="value"&&(e.value=t.identity.value),e}};Ur.X509CertificateChain={fromJSON(t){return{certificates:globalThis.Array.isArray(t?.certificates)?t.certificates.map(e=>Ur.X509Certificate.fromJSON(e)):[]}},toJSON(t){let e={};return t.certificates?.length&&(e.certificates=t.certificates.map(r=>Ur.X509Certificate.toJSON(r))),e}};Ur.TimeRange={fromJSON(t){return{start:ds(t.start)?HSe(t.start):void 0,end:ds(t.end)?HSe(t.end):void 0}},toJSON(t){let e={};return t.start!==void 0&&(e.start=t.start.toISOString()),t.end!==void 0&&(e.end=t.end.toISOString()),e}};function Xm(t){return Uint8Array.from(globalThis.Buffer.from(t,"base64"))}function $m(t){return globalThis.Buffer.from(t).toString("base64")}function pIt(t){let e=(globalThis.Number(t.seconds)||0)*1e3;return e+=(t.nanos||0)/1e6,new globalThis.Date(e)}function HSe(t){return t instanceof globalThis.Date?t:typeof t=="string"?new globalThis.Date(t):pIt(AIt.Timestamp.fromJSON(t))}function ds(t){return t!=null}});var FV=_(ms=>{"use strict";Object.defineProperty(ms,"__esModule",{value:!0});ms.TransparencyLogEntry=ms.InclusionPromise=ms.InclusionProof=ms.Checkpoint=ms.KindVersion=void 0;var JSe=Ww();ms.KindVersion={fromJSON(t){return{kind:Ta(t.kind)?globalThis.String(t.kind):"",version:Ta(t.version)?globalThis.String(t.version):""}},toJSON(t){let e={};return t.kind!==""&&(e.kind=t.kind),t.version!==""&&(e.version=t.version),e}};ms.Checkpoint={fromJSON(t){return{envelope:Ta(t.envelope)?globalThis.String(t.envelope):""}},toJSON(t){let e={};return t.envelope!==""&&(e.envelope=t.envelope),e}};ms.InclusionProof={fromJSON(t){return{logIndex:Ta(t.logIndex)?globalThis.String(t.logIndex):"0",rootHash:Ta(t.rootHash)?Buffer.from(qN(t.rootHash)):Buffer.alloc(0),treeSize:Ta(t.treeSize)?globalThis.String(t.treeSize):"0",hashes:globalThis.Array.isArray(t?.hashes)?t.hashes.map(e=>Buffer.from(qN(e))):[],checkpoint:Ta(t.checkpoint)?ms.Checkpoint.fromJSON(t.checkpoint):void 0}},toJSON(t){let e={};return t.logIndex!=="0"&&(e.logIndex=t.logIndex),t.rootHash.length!==0&&(e.rootHash=WN(t.rootHash)),t.treeSize!=="0"&&(e.treeSize=t.treeSize),t.hashes?.length&&(e.hashes=t.hashes.map(r=>WN(r))),t.checkpoint!==void 0&&(e.checkpoint=ms.Checkpoint.toJSON(t.checkpoint)),e}};ms.InclusionPromise={fromJSON(t){return{signedEntryTimestamp:Ta(t.signedEntryTimestamp)?Buffer.from(qN(t.signedEntryTimestamp)):Buffer.alloc(0)}},toJSON(t){let e={};return t.signedEntryTimestamp.length!==0&&(e.signedEntryTimestamp=WN(t.signedEntryTimestamp)),e}};ms.TransparencyLogEntry={fromJSON(t){return{logIndex:Ta(t.logIndex)?globalThis.String(t.logIndex):"0",logId:Ta(t.logId)?JSe.LogId.fromJSON(t.logId):void 0,kindVersion:Ta(t.kindVersion)?ms.KindVersion.fromJSON(t.kindVersion):void 0,integratedTime:Ta(t.integratedTime)?globalThis.String(t.integratedTime):"0",inclusionPromise:Ta(t.inclusionPromise)?ms.InclusionPromise.fromJSON(t.inclusionPromise):void 0,inclusionProof:Ta(t.inclusionProof)?ms.InclusionProof.fromJSON(t.inclusionProof):void 0,canonicalizedBody:Ta(t.canonicalizedBody)?Buffer.from(qN(t.canonicalizedBody)):Buffer.alloc(0)}},toJSON(t){let e={};return t.logIndex!=="0"&&(e.logIndex=t.logIndex),t.logId!==void 0&&(e.logId=JSe.LogId.toJSON(t.logId)),t.kindVersion!==void 0&&(e.kindVersion=ms.KindVersion.toJSON(t.kindVersion)),t.integratedTime!=="0"&&(e.integratedTime=t.integratedTime),t.inclusionPromise!==void 0&&(e.inclusionPromise=ms.InclusionPromise.toJSON(t.inclusionPromise)),t.inclusionProof!==void 0&&(e.inclusionProof=ms.InclusionProof.toJSON(t.inclusionProof)),t.canonicalizedBody.length!==0&&(e.canonicalizedBody=WN(t.canonicalizedBody)),e}};function qN(t){return Uint8Array.from(globalThis.Buffer.from(t,"base64"))}function WN(t){return globalThis.Buffer.from(t).toString("base64")}function Ta(t){return t!=null}});var NV=_(Zc=>{"use strict";Object.defineProperty(Zc,"__esModule",{value:!0});Zc.Bundle=Zc.VerificationMaterial=Zc.TimestampVerificationData=void 0;var KSe=TV(),wA=Ww(),zSe=FV();Zc.TimestampVerificationData={fromJSON(t){return{rfc3161Timestamps:globalThis.Array.isArray(t?.rfc3161Timestamps)?t.rfc3161Timestamps.map(e=>wA.RFC3161SignedTimestamp.fromJSON(e)):[]}},toJSON(t){let e={};return t.rfc3161Timestamps?.length&&(e.rfc3161Timestamps=t.rfc3161Timestamps.map(r=>wA.RFC3161SignedTimestamp.toJSON(r))),e}};Zc.VerificationMaterial={fromJSON(t){return{content:yg(t.publicKey)?{$case:"publicKey",publicKey:wA.PublicKeyIdentifier.fromJSON(t.publicKey)}:yg(t.x509CertificateChain)?{$case:"x509CertificateChain",x509CertificateChain:wA.X509CertificateChain.fromJSON(t.x509CertificateChain)}:yg(t.certificate)?{$case:"certificate",certificate:wA.X509Certificate.fromJSON(t.certificate)}:void 0,tlogEntries:globalThis.Array.isArray(t?.tlogEntries)?t.tlogEntries.map(e=>zSe.TransparencyLogEntry.fromJSON(e)):[],timestampVerificationData:yg(t.timestampVerificationData)?Zc.TimestampVerificationData.fromJSON(t.timestampVerificationData):void 0}},toJSON(t){let e={};return t.content?.$case==="publicKey"?e.publicKey=wA.PublicKeyIdentifier.toJSON(t.content.publicKey):t.content?.$case==="x509CertificateChain"?e.x509CertificateChain=wA.X509CertificateChain.toJSON(t.content.x509CertificateChain):t.content?.$case==="certificate"&&(e.certificate=wA.X509Certificate.toJSON(t.content.certificate)),t.tlogEntries?.length&&(e.tlogEntries=t.tlogEntries.map(r=>zSe.TransparencyLogEntry.toJSON(r))),t.timestampVerificationData!==void 0&&(e.timestampVerificationData=Zc.TimestampVerificationData.toJSON(t.timestampVerificationData)),e}};Zc.Bundle={fromJSON(t){return{mediaType:yg(t.mediaType)?globalThis.String(t.mediaType):"",verificationMaterial:yg(t.verificationMaterial)?Zc.VerificationMaterial.fromJSON(t.verificationMaterial):void 0,content:yg(t.messageSignature)?{$case:"messageSignature",messageSignature:wA.MessageSignature.fromJSON(t.messageSignature)}:yg(t.dsseEnvelope)?{$case:"dsseEnvelope",dsseEnvelope:KSe.Envelope.fromJSON(t.dsseEnvelope)}:void 0}},toJSON(t){let e={};return t.mediaType!==""&&(e.mediaType=t.mediaType),t.verificationMaterial!==void 0&&(e.verificationMaterial=Zc.VerificationMaterial.toJSON(t.verificationMaterial)),t.content?.$case==="messageSignature"?e.messageSignature=wA.MessageSignature.toJSON(t.content.messageSignature):t.content?.$case==="dsseEnvelope"&&(e.dsseEnvelope=KSe.Envelope.toJSON(t.content.dsseEnvelope)),e}};function yg(t){return t!=null}});var OV=_(Ti=>{"use strict";Object.defineProperty(Ti,"__esModule",{value:!0});Ti.ClientTrustConfig=Ti.SigningConfig=Ti.TrustedRoot=Ti.CertificateAuthority=Ti.TransparencyLogInstance=void 0;var El=Ww();Ti.TransparencyLogInstance={fromJSON(t){return{baseUrl:ia(t.baseUrl)?globalThis.String(t.baseUrl):"",hashAlgorithm:ia(t.hashAlgorithm)?(0,El.hashAlgorithmFromJSON)(t.hashAlgorithm):0,publicKey:ia(t.publicKey)?El.PublicKey.fromJSON(t.publicKey):void 0,logId:ia(t.logId)?El.LogId.fromJSON(t.logId):void 0,checkpointKeyId:ia(t.checkpointKeyId)?El.LogId.fromJSON(t.checkpointKeyId):void 0}},toJSON(t){let e={};return t.baseUrl!==""&&(e.baseUrl=t.baseUrl),t.hashAlgorithm!==0&&(e.hashAlgorithm=(0,El.hashAlgorithmToJSON)(t.hashAlgorithm)),t.publicKey!==void 0&&(e.publicKey=El.PublicKey.toJSON(t.publicKey)),t.logId!==void 0&&(e.logId=El.LogId.toJSON(t.logId)),t.checkpointKeyId!==void 0&&(e.checkpointKeyId=El.LogId.toJSON(t.checkpointKeyId)),e}};Ti.CertificateAuthority={fromJSON(t){return{subject:ia(t.subject)?El.DistinguishedName.fromJSON(t.subject):void 0,uri:ia(t.uri)?globalThis.String(t.uri):"",certChain:ia(t.certChain)?El.X509CertificateChain.fromJSON(t.certChain):void 0,validFor:ia(t.validFor)?El.TimeRange.fromJSON(t.validFor):void 0}},toJSON(t){let e={};return t.subject!==void 0&&(e.subject=El.DistinguishedName.toJSON(t.subject)),t.uri!==""&&(e.uri=t.uri),t.certChain!==void 0&&(e.certChain=El.X509CertificateChain.toJSON(t.certChain)),t.validFor!==void 0&&(e.validFor=El.TimeRange.toJSON(t.validFor)),e}};Ti.TrustedRoot={fromJSON(t){return{mediaType:ia(t.mediaType)?globalThis.String(t.mediaType):"",tlogs:globalThis.Array.isArray(t?.tlogs)?t.tlogs.map(e=>Ti.TransparencyLogInstance.fromJSON(e)):[],certificateAuthorities:globalThis.Array.isArray(t?.certificateAuthorities)?t.certificateAuthorities.map(e=>Ti.CertificateAuthority.fromJSON(e)):[],ctlogs:globalThis.Array.isArray(t?.ctlogs)?t.ctlogs.map(e=>Ti.TransparencyLogInstance.fromJSON(e)):[],timestampAuthorities:globalThis.Array.isArray(t?.timestampAuthorities)?t.timestampAuthorities.map(e=>Ti.CertificateAuthority.fromJSON(e)):[]}},toJSON(t){let e={};return t.mediaType!==""&&(e.mediaType=t.mediaType),t.tlogs?.length&&(e.tlogs=t.tlogs.map(r=>Ti.TransparencyLogInstance.toJSON(r))),t.certificateAuthorities?.length&&(e.certificateAuthorities=t.certificateAuthorities.map(r=>Ti.CertificateAuthority.toJSON(r))),t.ctlogs?.length&&(e.ctlogs=t.ctlogs.map(r=>Ti.TransparencyLogInstance.toJSON(r))),t.timestampAuthorities?.length&&(e.timestampAuthorities=t.timestampAuthorities.map(r=>Ti.CertificateAuthority.toJSON(r))),e}};Ti.SigningConfig={fromJSON(t){return{mediaType:ia(t.mediaType)?globalThis.String(t.mediaType):"",caUrl:ia(t.caUrl)?globalThis.String(t.caUrl):"",oidcUrl:ia(t.oidcUrl)?globalThis.String(t.oidcUrl):"",tlogUrls:globalThis.Array.isArray(t?.tlogUrls)?t.tlogUrls.map(e=>globalThis.String(e)):[],tsaUrls:globalThis.Array.isArray(t?.tsaUrls)?t.tsaUrls.map(e=>globalThis.String(e)):[]}},toJSON(t){let e={};return t.mediaType!==""&&(e.mediaType=t.mediaType),t.caUrl!==""&&(e.caUrl=t.caUrl),t.oidcUrl!==""&&(e.oidcUrl=t.oidcUrl),t.tlogUrls?.length&&(e.tlogUrls=t.tlogUrls),t.tsaUrls?.length&&(e.tsaUrls=t.tsaUrls),e}};Ti.ClientTrustConfig={fromJSON(t){return{mediaType:ia(t.mediaType)?globalThis.String(t.mediaType):"",trustedRoot:ia(t.trustedRoot)?Ti.TrustedRoot.fromJSON(t.trustedRoot):void 0,signingConfig:ia(t.signingConfig)?Ti.SigningConfig.fromJSON(t.signingConfig):void 0}},toJSON(t){let e={};return t.mediaType!==""&&(e.mediaType=t.mediaType),t.trustedRoot!==void 0&&(e.trustedRoot=Ti.TrustedRoot.toJSON(t.trustedRoot)),t.signingConfig!==void 0&&(e.signingConfig=Ti.SigningConfig.toJSON(t.signingConfig)),e}};function ia(t){return t!=null}});var $Se=_(Vr=>{"use strict";Object.defineProperty(Vr,"__esModule",{value:!0});Vr.Input=Vr.Artifact=Vr.ArtifactVerificationOptions_ObserverTimestampOptions=Vr.ArtifactVerificationOptions_TlogIntegratedTimestampOptions=Vr.ArtifactVerificationOptions_TimestampAuthorityOptions=Vr.ArtifactVerificationOptions_CtlogOptions=Vr.ArtifactVerificationOptions_TlogOptions=Vr.ArtifactVerificationOptions=Vr.PublicKeyIdentities=Vr.CertificateIdentities=Vr.CertificateIdentity=void 0;var ZSe=NV(),Eg=Ww(),XSe=OV();Vr.CertificateIdentity={fromJSON(t){return{issuer:gi(t.issuer)?globalThis.String(t.issuer):"",san:gi(t.san)?Eg.SubjectAlternativeName.fromJSON(t.san):void 0,oids:globalThis.Array.isArray(t?.oids)?t.oids.map(e=>Eg.ObjectIdentifierValuePair.fromJSON(e)):[]}},toJSON(t){let e={};return t.issuer!==""&&(e.issuer=t.issuer),t.san!==void 0&&(e.san=Eg.SubjectAlternativeName.toJSON(t.san)),t.oids?.length&&(e.oids=t.oids.map(r=>Eg.ObjectIdentifierValuePair.toJSON(r))),e}};Vr.CertificateIdentities={fromJSON(t){return{identities:globalThis.Array.isArray(t?.identities)?t.identities.map(e=>Vr.CertificateIdentity.fromJSON(e)):[]}},toJSON(t){let e={};return t.identities?.length&&(e.identities=t.identities.map(r=>Vr.CertificateIdentity.toJSON(r))),e}};Vr.PublicKeyIdentities={fromJSON(t){return{publicKeys:globalThis.Array.isArray(t?.publicKeys)?t.publicKeys.map(e=>Eg.PublicKey.fromJSON(e)):[]}},toJSON(t){let e={};return t.publicKeys?.length&&(e.publicKeys=t.publicKeys.map(r=>Eg.PublicKey.toJSON(r))),e}};Vr.ArtifactVerificationOptions={fromJSON(t){return{signers:gi(t.certificateIdentities)?{$case:"certificateIdentities",certificateIdentities:Vr.CertificateIdentities.fromJSON(t.certificateIdentities)}:gi(t.publicKeys)?{$case:"publicKeys",publicKeys:Vr.PublicKeyIdentities.fromJSON(t.publicKeys)}:void 0,tlogOptions:gi(t.tlogOptions)?Vr.ArtifactVerificationOptions_TlogOptions.fromJSON(t.tlogOptions):void 0,ctlogOptions:gi(t.ctlogOptions)?Vr.ArtifactVerificationOptions_CtlogOptions.fromJSON(t.ctlogOptions):void 0,tsaOptions:gi(t.tsaOptions)?Vr.ArtifactVerificationOptions_TimestampAuthorityOptions.fromJSON(t.tsaOptions):void 0,integratedTsOptions:gi(t.integratedTsOptions)?Vr.ArtifactVerificationOptions_TlogIntegratedTimestampOptions.fromJSON(t.integratedTsOptions):void 0,observerOptions:gi(t.observerOptions)?Vr.ArtifactVerificationOptions_ObserverTimestampOptions.fromJSON(t.observerOptions):void 0}},toJSON(t){let e={};return t.signers?.$case==="certificateIdentities"?e.certificateIdentities=Vr.CertificateIdentities.toJSON(t.signers.certificateIdentities):t.signers?.$case==="publicKeys"&&(e.publicKeys=Vr.PublicKeyIdentities.toJSON(t.signers.publicKeys)),t.tlogOptions!==void 0&&(e.tlogOptions=Vr.ArtifactVerificationOptions_TlogOptions.toJSON(t.tlogOptions)),t.ctlogOptions!==void 0&&(e.ctlogOptions=Vr.ArtifactVerificationOptions_CtlogOptions.toJSON(t.ctlogOptions)),t.tsaOptions!==void 0&&(e.tsaOptions=Vr.ArtifactVerificationOptions_TimestampAuthorityOptions.toJSON(t.tsaOptions)),t.integratedTsOptions!==void 0&&(e.integratedTsOptions=Vr.ArtifactVerificationOptions_TlogIntegratedTimestampOptions.toJSON(t.integratedTsOptions)),t.observerOptions!==void 0&&(e.observerOptions=Vr.ArtifactVerificationOptions_ObserverTimestampOptions.toJSON(t.observerOptions)),e}};Vr.ArtifactVerificationOptions_TlogOptions={fromJSON(t){return{threshold:gi(t.threshold)?globalThis.Number(t.threshold):0,performOnlineVerification:gi(t.performOnlineVerification)?globalThis.Boolean(t.performOnlineVerification):!1,disable:gi(t.disable)?globalThis.Boolean(t.disable):!1}},toJSON(t){let e={};return t.threshold!==0&&(e.threshold=Math.round(t.threshold)),t.performOnlineVerification!==!1&&(e.performOnlineVerification=t.performOnlineVerification),t.disable!==!1&&(e.disable=t.disable),e}};Vr.ArtifactVerificationOptions_CtlogOptions={fromJSON(t){return{threshold:gi(t.threshold)?globalThis.Number(t.threshold):0,disable:gi(t.disable)?globalThis.Boolean(t.disable):!1}},toJSON(t){let e={};return t.threshold!==0&&(e.threshold=Math.round(t.threshold)),t.disable!==!1&&(e.disable=t.disable),e}};Vr.ArtifactVerificationOptions_TimestampAuthorityOptions={fromJSON(t){return{threshold:gi(t.threshold)?globalThis.Number(t.threshold):0,disable:gi(t.disable)?globalThis.Boolean(t.disable):!1}},toJSON(t){let e={};return t.threshold!==0&&(e.threshold=Math.round(t.threshold)),t.disable!==!1&&(e.disable=t.disable),e}};Vr.ArtifactVerificationOptions_TlogIntegratedTimestampOptions={fromJSON(t){return{threshold:gi(t.threshold)?globalThis.Number(t.threshold):0,disable:gi(t.disable)?globalThis.Boolean(t.disable):!1}},toJSON(t){let e={};return t.threshold!==0&&(e.threshold=Math.round(t.threshold)),t.disable!==!1&&(e.disable=t.disable),e}};Vr.ArtifactVerificationOptions_ObserverTimestampOptions={fromJSON(t){return{threshold:gi(t.threshold)?globalThis.Number(t.threshold):0,disable:gi(t.disable)?globalThis.Boolean(t.disable):!1}},toJSON(t){let e={};return t.threshold!==0&&(e.threshold=Math.round(t.threshold)),t.disable!==!1&&(e.disable=t.disable),e}};Vr.Artifact={fromJSON(t){return{data:gi(t.artifactUri)?{$case:"artifactUri",artifactUri:globalThis.String(t.artifactUri)}:gi(t.artifact)?{$case:"artifact",artifact:Buffer.from(hIt(t.artifact))}:gi(t.artifactDigest)?{$case:"artifactDigest",artifactDigest:Eg.HashOutput.fromJSON(t.artifactDigest)}:void 0}},toJSON(t){let e={};return t.data?.$case==="artifactUri"?e.artifactUri=t.data.artifactUri:t.data?.$case==="artifact"?e.artifact=gIt(t.data.artifact):t.data?.$case==="artifactDigest"&&(e.artifactDigest=Eg.HashOutput.toJSON(t.data.artifactDigest)),e}};Vr.Input={fromJSON(t){return{artifactTrustRoot:gi(t.artifactTrustRoot)?XSe.TrustedRoot.fromJSON(t.artifactTrustRoot):void 0,artifactVerificationOptions:gi(t.artifactVerificationOptions)?Vr.ArtifactVerificationOptions.fromJSON(t.artifactVerificationOptions):void 0,bundle:gi(t.bundle)?ZSe.Bundle.fromJSON(t.bundle):void 0,artifact:gi(t.artifact)?Vr.Artifact.fromJSON(t.artifact):void 0}},toJSON(t){let e={};return t.artifactTrustRoot!==void 0&&(e.artifactTrustRoot=XSe.TrustedRoot.toJSON(t.artifactTrustRoot)),t.artifactVerificationOptions!==void 0&&(e.artifactVerificationOptions=Vr.ArtifactVerificationOptions.toJSON(t.artifactVerificationOptions)),t.bundle!==void 0&&(e.bundle=ZSe.Bundle.toJSON(t.bundle)),t.artifact!==void 0&&(e.artifact=Vr.Artifact.toJSON(t.artifact)),e}};function hIt(t){return Uint8Array.from(globalThis.Buffer.from(t,"base64"))}function gIt(t){return globalThis.Buffer.from(t).toString("base64")}function gi(t){return t!=null}});var mP=_(Xc=>{"use strict";var dIt=Xc&&Xc.__createBinding||(Object.create?function(t,e,r,s){s===void 0&&(s=r);var a=Object.getOwnPropertyDescriptor(e,r);(!a||("get"in a?!e.__esModule:a.writable||a.configurable))&&(a={enumerable:!0,get:function(){return e[r]}}),Object.defineProperty(t,s,a)}:function(t,e,r,s){s===void 0&&(s=r),t[s]=e[r]}),Yw=Xc&&Xc.__exportStar||function(t,e){for(var r in t)r!=="default"&&!Object.prototype.hasOwnProperty.call(e,r)&&dIt(e,t,r)};Object.defineProperty(Xc,"__esModule",{value:!0});Yw(TV(),Xc);Yw(NV(),Xc);Yw(Ww(),Xc);Yw(FV(),Xc);Yw(OV(),Xc);Yw($Se(),Xc)});var YN=_(Il=>{"use strict";Object.defineProperty(Il,"__esModule",{value:!0});Il.BUNDLE_V03_MEDIA_TYPE=Il.BUNDLE_V03_LEGACY_MEDIA_TYPE=Il.BUNDLE_V02_MEDIA_TYPE=Il.BUNDLE_V01_MEDIA_TYPE=void 0;Il.isBundleWithCertificateChain=mIt;Il.isBundleWithPublicKey=yIt;Il.isBundleWithMessageSignature=EIt;Il.isBundleWithDsseEnvelope=IIt;Il.BUNDLE_V01_MEDIA_TYPE="application/vnd.dev.sigstore.bundle+json;version=0.1";Il.BUNDLE_V02_MEDIA_TYPE="application/vnd.dev.sigstore.bundle+json;version=0.2";Il.BUNDLE_V03_LEGACY_MEDIA_TYPE="application/vnd.dev.sigstore.bundle+json;version=0.3";Il.BUNDLE_V03_MEDIA_TYPE="application/vnd.dev.sigstore.bundle.v0.3+json";function mIt(t){return t.verificationMaterial.content.$case==="x509CertificateChain"}function yIt(t){return t.verificationMaterial.content.$case==="publicKey"}function EIt(t){return t.content.$case==="messageSignature"}function IIt(t){return t.content.$case==="dsseEnvelope"}});var tDe=_(JN=>{"use strict";Object.defineProperty(JN,"__esModule",{value:!0});JN.toMessageSignatureBundle=wIt;JN.toDSSEBundle=BIt;var CIt=mP(),VN=YN();function wIt(t){return{mediaType:t.certificateChain?VN.BUNDLE_V02_MEDIA_TYPE:VN.BUNDLE_V03_MEDIA_TYPE,content:{$case:"messageSignature",messageSignature:{messageDigest:{algorithm:CIt.HashAlgorithm.SHA2_256,digest:t.digest},signature:t.signature}},verificationMaterial:eDe(t)}}function BIt(t){return{mediaType:t.certificateChain?VN.BUNDLE_V02_MEDIA_TYPE:VN.BUNDLE_V03_MEDIA_TYPE,content:{$case:"dsseEnvelope",dsseEnvelope:vIt(t)},verificationMaterial:eDe(t)}}function vIt(t){return{payloadType:t.artifactType,payload:t.artifact,signatures:[SIt(t)]}}function SIt(t){return{keyid:t.keyHint||"",sig:t.signature}}function eDe(t){return{content:DIt(t),tlogEntries:[],timestampVerificationData:{rfc3161Timestamps:[]}}}function DIt(t){return t.certificate?t.certificateChain?{$case:"x509CertificateChain",x509CertificateChain:{certificates:[{rawBytes:t.certificate}]}}:{$case:"certificate",certificate:{rawBytes:t.certificate}}:{$case:"publicKey",publicKey:{hint:t.keyHint||""}}}});var MV=_(KN=>{"use strict";Object.defineProperty(KN,"__esModule",{value:!0});KN.ValidationError=void 0;var LV=class extends Error{constructor(e,r){super(e),this.fields=r}};KN.ValidationError=LV});var UV=_(ey=>{"use strict";Object.defineProperty(ey,"__esModule",{value:!0});ey.assertBundle=PIt;ey.assertBundleV01=rDe;ey.isBundleV01=bIt;ey.assertBundleV02=xIt;ey.assertBundleLatest=kIt;var zN=MV();function PIt(t){let e=ZN(t);if(e.length>0)throw new zN.ValidationError("invalid bundle",e)}function rDe(t){let e=[];if(e.push(...ZN(t)),e.push(...QIt(t)),e.length>0)throw new zN.ValidationError("invalid v0.1 bundle",e)}function bIt(t){try{return rDe(t),!0}catch{return!1}}function xIt(t){let e=[];if(e.push(...ZN(t)),e.push(...nDe(t)),e.length>0)throw new zN.ValidationError("invalid v0.2 bundle",e)}function kIt(t){let e=[];if(e.push(...ZN(t)),e.push(...nDe(t)),e.push(...RIt(t)),e.length>0)throw new zN.ValidationError("invalid bundle",e)}function ZN(t){let e=[];if((t.mediaType===void 0||!t.mediaType.match(/^application\/vnd\.dev\.sigstore\.bundle\+json;version=\d\.\d/)&&!t.mediaType.match(/^application\/vnd\.dev\.sigstore\.bundle\.v\d\.\d\+json/))&&e.push("mediaType"),t.content===void 0)e.push("content");else switch(t.content.$case){case"messageSignature":t.content.messageSignature.messageDigest===void 0?e.push("content.messageSignature.messageDigest"):t.content.messageSignature.messageDigest.digest.length===0&&e.push("content.messageSignature.messageDigest.digest"),t.content.messageSignature.signature.length===0&&e.push("content.messageSignature.signature");break;case"dsseEnvelope":t.content.dsseEnvelope.payload.length===0&&e.push("content.dsseEnvelope.payload"),t.content.dsseEnvelope.signatures.length!==1?e.push("content.dsseEnvelope.signatures"):t.content.dsseEnvelope.signatures[0].sig.length===0&&e.push("content.dsseEnvelope.signatures[0].sig");break}if(t.verificationMaterial===void 0)e.push("verificationMaterial");else{if(t.verificationMaterial.content===void 0)e.push("verificationMaterial.content");else switch(t.verificationMaterial.content.$case){case"x509CertificateChain":t.verificationMaterial.content.x509CertificateChain.certificates.length===0&&e.push("verificationMaterial.content.x509CertificateChain.certificates"),t.verificationMaterial.content.x509CertificateChain.certificates.forEach((r,s)=>{r.rawBytes.length===0&&e.push(`verificationMaterial.content.x509CertificateChain.certificates[${s}].rawBytes`)});break;case"certificate":t.verificationMaterial.content.certificate.rawBytes.length===0&&e.push("verificationMaterial.content.certificate.rawBytes");break}t.verificationMaterial.tlogEntries===void 0?e.push("verificationMaterial.tlogEntries"):t.verificationMaterial.tlogEntries.length>0&&t.verificationMaterial.tlogEntries.forEach((r,s)=>{r.logId===void 0&&e.push(`verificationMaterial.tlogEntries[${s}].logId`),r.kindVersion===void 0&&e.push(`verificationMaterial.tlogEntries[${s}].kindVersion`)})}return e}function QIt(t){let e=[];return t.verificationMaterial&&t.verificationMaterial.tlogEntries?.length>0&&t.verificationMaterial.tlogEntries.forEach((r,s)=>{r.inclusionPromise===void 0&&e.push(`verificationMaterial.tlogEntries[${s}].inclusionPromise`)}),e}function nDe(t){let e=[];return t.verificationMaterial&&t.verificationMaterial.tlogEntries?.length>0&&t.verificationMaterial.tlogEntries.forEach((r,s)=>{r.inclusionProof===void 0?e.push(`verificationMaterial.tlogEntries[${s}].inclusionProof`):r.inclusionProof.checkpoint===void 0&&e.push(`verificationMaterial.tlogEntries[${s}].inclusionProof.checkpoint`)}),e}function RIt(t){let e=[];return t.verificationMaterial?.content?.$case==="x509CertificateChain"&&e.push("verificationMaterial.content.$case"),e}});var sDe=_(BA=>{"use strict";Object.defineProperty(BA,"__esModule",{value:!0});BA.envelopeToJSON=BA.envelopeFromJSON=BA.bundleToJSON=BA.bundleFromJSON=void 0;var XN=mP(),iDe=YN(),_V=UV(),TIt=t=>{let e=XN.Bundle.fromJSON(t);switch(e.mediaType){case iDe.BUNDLE_V01_MEDIA_TYPE:(0,_V.assertBundleV01)(e);break;case iDe.BUNDLE_V02_MEDIA_TYPE:(0,_V.assertBundleV02)(e);break;default:(0,_V.assertBundleLatest)(e);break}return e};BA.bundleFromJSON=TIt;var FIt=t=>XN.Bundle.toJSON(t);BA.bundleToJSON=FIt;var NIt=t=>XN.Envelope.fromJSON(t);BA.envelopeFromJSON=NIt;var OIt=t=>XN.Envelope.toJSON(t);BA.envelopeToJSON=OIt});var EP=_(Zr=>{"use strict";Object.defineProperty(Zr,"__esModule",{value:!0});Zr.isBundleV01=Zr.assertBundleV02=Zr.assertBundleV01=Zr.assertBundleLatest=Zr.assertBundle=Zr.envelopeToJSON=Zr.envelopeFromJSON=Zr.bundleToJSON=Zr.bundleFromJSON=Zr.ValidationError=Zr.isBundleWithPublicKey=Zr.isBundleWithMessageSignature=Zr.isBundleWithDsseEnvelope=Zr.isBundleWithCertificateChain=Zr.BUNDLE_V03_MEDIA_TYPE=Zr.BUNDLE_V03_LEGACY_MEDIA_TYPE=Zr.BUNDLE_V02_MEDIA_TYPE=Zr.BUNDLE_V01_MEDIA_TYPE=Zr.toMessageSignatureBundle=Zr.toDSSEBundle=void 0;var oDe=tDe();Object.defineProperty(Zr,"toDSSEBundle",{enumerable:!0,get:function(){return oDe.toDSSEBundle}});Object.defineProperty(Zr,"toMessageSignatureBundle",{enumerable:!0,get:function(){return oDe.toMessageSignatureBundle}});var Ig=YN();Object.defineProperty(Zr,"BUNDLE_V01_MEDIA_TYPE",{enumerable:!0,get:function(){return Ig.BUNDLE_V01_MEDIA_TYPE}});Object.defineProperty(Zr,"BUNDLE_V02_MEDIA_TYPE",{enumerable:!0,get:function(){return Ig.BUNDLE_V02_MEDIA_TYPE}});Object.defineProperty(Zr,"BUNDLE_V03_LEGACY_MEDIA_TYPE",{enumerable:!0,get:function(){return Ig.BUNDLE_V03_LEGACY_MEDIA_TYPE}});Object.defineProperty(Zr,"BUNDLE_V03_MEDIA_TYPE",{enumerable:!0,get:function(){return Ig.BUNDLE_V03_MEDIA_TYPE}});Object.defineProperty(Zr,"isBundleWithCertificateChain",{enumerable:!0,get:function(){return Ig.isBundleWithCertificateChain}});Object.defineProperty(Zr,"isBundleWithDsseEnvelope",{enumerable:!0,get:function(){return Ig.isBundleWithDsseEnvelope}});Object.defineProperty(Zr,"isBundleWithMessageSignature",{enumerable:!0,get:function(){return Ig.isBundleWithMessageSignature}});Object.defineProperty(Zr,"isBundleWithPublicKey",{enumerable:!0,get:function(){return Ig.isBundleWithPublicKey}});var LIt=MV();Object.defineProperty(Zr,"ValidationError",{enumerable:!0,get:function(){return LIt.ValidationError}});var $N=sDe();Object.defineProperty(Zr,"bundleFromJSON",{enumerable:!0,get:function(){return $N.bundleFromJSON}});Object.defineProperty(Zr,"bundleToJSON",{enumerable:!0,get:function(){return $N.bundleToJSON}});Object.defineProperty(Zr,"envelopeFromJSON",{enumerable:!0,get:function(){return $N.envelopeFromJSON}});Object.defineProperty(Zr,"envelopeToJSON",{enumerable:!0,get:function(){return $N.envelopeToJSON}});var yP=UV();Object.defineProperty(Zr,"assertBundle",{enumerable:!0,get:function(){return yP.assertBundle}});Object.defineProperty(Zr,"assertBundleLatest",{enumerable:!0,get:function(){return yP.assertBundleLatest}});Object.defineProperty(Zr,"assertBundleV01",{enumerable:!0,get:function(){return yP.assertBundleV01}});Object.defineProperty(Zr,"assertBundleV02",{enumerable:!0,get:function(){return yP.assertBundleV02}});Object.defineProperty(Zr,"isBundleV01",{enumerable:!0,get:function(){return yP.isBundleV01}})});var IP=_(tO=>{"use strict";Object.defineProperty(tO,"__esModule",{value:!0});tO.ByteStream=void 0;var HV=class extends Error{},eO=class t{constructor(e){this.start=0,e?(this.buf=e,this.view=Buffer.from(e)):(this.buf=new ArrayBuffer(0),this.view=Buffer.from(this.buf))}get buffer(){return this.view.subarray(0,this.start)}get length(){return this.view.byteLength}get position(){return this.start}seek(e){this.start=e}slice(e,r){let s=e+r;if(s>this.length)throw new HV("request past end of buffer");return this.view.subarray(e,s)}appendChar(e){this.ensureCapacity(1),this.view[this.start]=e,this.start+=1}appendUint16(e){this.ensureCapacity(2);let r=new Uint16Array([e]),s=new Uint8Array(r.buffer);this.view[this.start]=s[1],this.view[this.start+1]=s[0],this.start+=2}appendUint24(e){this.ensureCapacity(3);let r=new Uint32Array([e]),s=new Uint8Array(r.buffer);this.view[this.start]=s[2],this.view[this.start+1]=s[1],this.view[this.start+2]=s[0],this.start+=3}appendView(e){this.ensureCapacity(e.length),this.view.set(e,this.start),this.start+=e.length}getBlock(e){if(e<=0)return Buffer.alloc(0);if(this.start+e>this.view.length)throw new Error("request past end of buffer");let r=this.view.subarray(this.start,this.start+e);return this.start+=e,r}getUint8(){return this.getBlock(1)[0]}getUint16(){let e=this.getBlock(2);return e[0]<<8|e[1]}ensureCapacity(e){if(this.start+e>this.view.byteLength){let r=t.BLOCK_SIZE+(e>t.BLOCK_SIZE?e:0);this.realloc(this.view.byteLength+r)}}realloc(e){let r=new ArrayBuffer(e),s=Buffer.from(r);s.set(this.view),this.buf=r,this.view=s}};tO.ByteStream=eO;eO.BLOCK_SIZE=1024});var rO=_(Vw=>{"use strict";Object.defineProperty(Vw,"__esModule",{value:!0});Vw.ASN1TypeError=Vw.ASN1ParseError=void 0;var jV=class extends Error{};Vw.ASN1ParseError=jV;var GV=class extends Error{};Vw.ASN1TypeError=GV});var lDe=_(nO=>{"use strict";Object.defineProperty(nO,"__esModule",{value:!0});nO.decodeLength=MIt;nO.encodeLength=UIt;var aDe=rO();function MIt(t){let e=t.getUint8();if(!(e&128))return e;let r=e&127;if(r>6)throw new aDe.ASN1ParseError("length exceeds 6 byte limit");let s=0;for(let a=0;a0n;)r.unshift(Number(e&255n)),e=e>>8n;return Buffer.from([128|r.length,...r])}});var uDe=_(Cg=>{"use strict";Object.defineProperty(Cg,"__esModule",{value:!0});Cg.parseInteger=jIt;Cg.parseStringASCII=cDe;Cg.parseTime=GIt;Cg.parseOID=qIt;Cg.parseBoolean=WIt;Cg.parseBitString=YIt;var _It=/^(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})(\.\d{3})?Z$/,HIt=/^(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})(\.\d{3})?Z$/;function jIt(t){let e=0,r=t.length,s=t[e],a=s>127,n=a?255:0;for(;s==n&&++e=50?1900:2e3,s[1]=a.toString()}return new Date(`${s[1]}-${s[2]}-${s[3]}T${s[4]}:${s[5]}:${s[6]}Z`)}function qIt(t){let e=0,r=t.length,s=t[e++],a=Math.floor(s/40),n=s%40,c=`${a}.${n}`,f=0;for(;e=f;--p)a.push(c>>p&1)}return a}});var ADe=_(iO=>{"use strict";Object.defineProperty(iO,"__esModule",{value:!0});iO.ASN1Tag=void 0;var fDe=rO(),ty={BOOLEAN:1,INTEGER:2,BIT_STRING:3,OCTET_STRING:4,OBJECT_IDENTIFIER:6,SEQUENCE:16,SET:17,PRINTABLE_STRING:19,UTC_TIME:23,GENERALIZED_TIME:24},qV={UNIVERSAL:0,APPLICATION:1,CONTEXT_SPECIFIC:2,PRIVATE:3},WV=class{constructor(e){if(this.number=e&31,this.constructed=(e&32)===32,this.class=e>>6,this.number===31)throw new fDe.ASN1ParseError("long form tags not supported");if(this.class===qV.UNIVERSAL&&this.number===0)throw new fDe.ASN1ParseError("unsupported tag 0x00")}isUniversal(){return this.class===qV.UNIVERSAL}isContextSpecific(e){let r=this.class===qV.CONTEXT_SPECIFIC;return e!==void 0?r&&this.number===e:r}isBoolean(){return this.isUniversal()&&this.number===ty.BOOLEAN}isInteger(){return this.isUniversal()&&this.number===ty.INTEGER}isBitString(){return this.isUniversal()&&this.number===ty.BIT_STRING}isOctetString(){return this.isUniversal()&&this.number===ty.OCTET_STRING}isOID(){return this.isUniversal()&&this.number===ty.OBJECT_IDENTIFIER}isUTCTime(){return this.isUniversal()&&this.number===ty.UTC_TIME}isGeneralizedTime(){return this.isUniversal()&&this.number===ty.GENERALIZED_TIME}toDER(){return this.number|(this.constructed?32:0)|this.class<<6}};iO.ASN1Tag=WV});var dDe=_(oO=>{"use strict";Object.defineProperty(oO,"__esModule",{value:!0});oO.ASN1Obj=void 0;var YV=IP(),ry=rO(),hDe=lDe(),Jw=uDe(),VIt=ADe(),sO=class{constructor(e,r,s){this.tag=e,this.value=r,this.subs=s}static parseBuffer(e){return gDe(new YV.ByteStream(e))}toDER(){let e=new YV.ByteStream;if(this.subs.length>0)for(let a of this.subs)e.appendView(a.toDER());else e.appendView(this.value);let r=e.buffer,s=new YV.ByteStream;return s.appendChar(this.tag.toDER()),s.appendView((0,hDe.encodeLength)(r.length)),s.appendView(r),s.buffer}toBoolean(){if(!this.tag.isBoolean())throw new ry.ASN1TypeError("not a boolean");return(0,Jw.parseBoolean)(this.value)}toInteger(){if(!this.tag.isInteger())throw new ry.ASN1TypeError("not an integer");return(0,Jw.parseInteger)(this.value)}toOID(){if(!this.tag.isOID())throw new ry.ASN1TypeError("not an OID");return(0,Jw.parseOID)(this.value)}toDate(){switch(!0){case this.tag.isUTCTime():return(0,Jw.parseTime)(this.value,!0);case this.tag.isGeneralizedTime():return(0,Jw.parseTime)(this.value,!1);default:throw new ry.ASN1TypeError("not a date")}}toBitString(){if(!this.tag.isBitString())throw new ry.ASN1TypeError("not a bit string");return(0,Jw.parseBitString)(this.value)}};oO.ASN1Obj=sO;function gDe(t){let e=new VIt.ASN1Tag(t.getUint8()),r=(0,hDe.decodeLength)(t),s=t.slice(t.position,r),a=t.position,n=[];if(e.constructed)n=pDe(t,r);else if(e.isOctetString())try{n=pDe(t,r)}catch{}return n.length===0&&t.seek(a+r),new sO(e,s,n)}function pDe(t,e){let r=t.position+e;if(r>t.length)throw new ry.ASN1ParseError("invalid length");let s=[];for(;t.position{"use strict";Object.defineProperty(aO,"__esModule",{value:!0});aO.ASN1Obj=void 0;var JIt=dDe();Object.defineProperty(aO,"ASN1Obj",{enumerable:!0,get:function(){return JIt.ASN1Obj}})});var Kw=_(wg=>{"use strict";var KIt=wg&&wg.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(wg,"__esModule",{value:!0});wg.createPublicKey=zIt;wg.digest=ZIt;wg.verify=XIt;wg.bufferEqual=$It;var CP=KIt(Ie("crypto"));function zIt(t,e="spki"){return typeof t=="string"?CP.default.createPublicKey(t):CP.default.createPublicKey({key:t,format:"der",type:e})}function ZIt(t,...e){let r=CP.default.createHash(t);for(let s of e)r.update(s);return r.digest()}function XIt(t,e,r,s){try{return CP.default.verify(s,t,e,r)}catch{return!1}}function $It(t,e){try{return CP.default.timingSafeEqual(t,e)}catch{return!1}}});var mDe=_(VV=>{"use strict";Object.defineProperty(VV,"__esModule",{value:!0});VV.preAuthEncoding=tCt;var eCt="DSSEv1";function tCt(t,e){let r=[eCt,t.length,t,e.length,""].join(" ");return Buffer.concat([Buffer.from(r,"ascii"),e])}});var IDe=_(cO=>{"use strict";Object.defineProperty(cO,"__esModule",{value:!0});cO.base64Encode=rCt;cO.base64Decode=nCt;var yDe="base64",EDe="utf-8";function rCt(t){return Buffer.from(t,EDe).toString(yDe)}function nCt(t){return Buffer.from(t,yDe).toString(EDe)}});var CDe=_(KV=>{"use strict";Object.defineProperty(KV,"__esModule",{value:!0});KV.canonicalize=JV;function JV(t){let e="";if(t===null||typeof t!="object"||t.toJSON!=null)e+=JSON.stringify(t);else if(Array.isArray(t)){e+="[";let r=!0;t.forEach(s=>{r||(e+=","),r=!1,e+=JV(s)}),e+="]"}else{e+="{";let r=!0;Object.keys(t).sort().forEach(s=>{r||(e+=","),r=!1,e+=JSON.stringify(s),e+=":",e+=JV(t[s])}),e+="}"}return e}});var zV=_(uO=>{"use strict";Object.defineProperty(uO,"__esModule",{value:!0});uO.toDER=oCt;uO.fromDER=aCt;var iCt=/-----BEGIN (.*)-----/,sCt=/-----END (.*)-----/;function oCt(t){let e="";return t.split(` `).forEach(r=>{r.match(iCt)||r.match(sCt)||(e+=r)}),Buffer.from(e,"base64")}function aCt(t,e="CERTIFICATE"){let s=t.toString("base64").match(/.{1,64}/g)||"";return[`-----BEGIN ${e}-----`,...s,`-----END ${e}-----`].join(` `).concat(` `)}});var fO=_(zw=>{"use strict";Object.defineProperty(zw,"__esModule",{value:!0});zw.SHA2_HASH_ALGOS=zw.ECDSA_SIGNATURE_ALGOS=void 0;zw.ECDSA_SIGNATURE_ALGOS={"1.2.840.10045.4.3.1":"sha224","1.2.840.10045.4.3.2":"sha256","1.2.840.10045.4.3.3":"sha384","1.2.840.10045.4.3.4":"sha512"};zw.SHA2_HASH_ALGOS={"2.16.840.1.101.3.4.2.1":"sha256","2.16.840.1.101.3.4.2.2":"sha384","2.16.840.1.101.3.4.2.3":"sha512"}});var XV=_(AO=>{"use strict";Object.defineProperty(AO,"__esModule",{value:!0});AO.RFC3161TimestampVerificationError=void 0;var ZV=class extends Error{};AO.RFC3161TimestampVerificationError=ZV});var BDe=_(vA=>{"use strict";var lCt=vA&&vA.__createBinding||(Object.create?function(t,e,r,s){s===void 0&&(s=r);var a=Object.getOwnPropertyDescriptor(e,r);(!a||("get"in a?!e.__esModule:a.writable||a.configurable))&&(a={enumerable:!0,get:function(){return e[r]}}),Object.defineProperty(t,s,a)}:function(t,e,r,s){s===void 0&&(s=r),t[s]=e[r]}),cCt=vA&&vA.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),uCt=vA&&vA.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(t!=null)for(var r in t)r!=="default"&&Object.prototype.hasOwnProperty.call(t,r)&&lCt(e,t,r);return cCt(e,t),e};Object.defineProperty(vA,"__esModule",{value:!0});vA.TSTInfo=void 0;var wDe=uCt(Kw()),fCt=fO(),ACt=XV(),$V=class{constructor(e){this.root=e}get version(){return this.root.subs[0].toInteger()}get genTime(){return this.root.subs[4].toDate()}get messageImprintHashAlgorithm(){let e=this.messageImprintObj.subs[0].subs[0].toOID();return fCt.SHA2_HASH_ALGOS[e]}get messageImprintHashedMessage(){return this.messageImprintObj.subs[1].value}get raw(){return this.root.toDER()}verify(e){let r=wDe.digest(this.messageImprintHashAlgorithm,e);if(!wDe.bufferEqual(r,this.messageImprintHashedMessage))throw new ACt.RFC3161TimestampVerificationError("message imprint does not match artifact")}get messageImprintObj(){return this.root.subs[2]}};vA.TSTInfo=$V});var SDe=_(SA=>{"use strict";var pCt=SA&&SA.__createBinding||(Object.create?function(t,e,r,s){s===void 0&&(s=r);var a=Object.getOwnPropertyDescriptor(e,r);(!a||("get"in a?!e.__esModule:a.writable||a.configurable))&&(a={enumerable:!0,get:function(){return e[r]}}),Object.defineProperty(t,s,a)}:function(t,e,r,s){s===void 0&&(s=r),t[s]=e[r]}),hCt=SA&&SA.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),gCt=SA&&SA.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(t!=null)for(var r in t)r!=="default"&&Object.prototype.hasOwnProperty.call(t,r)&&pCt(e,t,r);return hCt(e,t),e};Object.defineProperty(SA,"__esModule",{value:!0});SA.RFC3161Timestamp=void 0;var dCt=lO(),e7=gCt(Kw()),vDe=fO(),wP=XV(),mCt=BDe(),yCt="1.2.840.113549.1.7.2",ECt="1.2.840.113549.1.9.16.1.4",ICt="1.2.840.113549.1.9.4",t7=class t{constructor(e){this.root=e}static parse(e){let r=dCt.ASN1Obj.parseBuffer(e);return new t(r)}get status(){return this.pkiStatusInfoObj.subs[0].toInteger()}get contentType(){return this.contentTypeObj.toOID()}get eContentType(){return this.eContentTypeObj.toOID()}get signingTime(){return this.tstInfo.genTime}get signerIssuer(){return this.signerSidObj.subs[0].value}get signerSerialNumber(){return this.signerSidObj.subs[1].value}get signerDigestAlgorithm(){let e=this.signerDigestAlgorithmObj.subs[0].toOID();return vDe.SHA2_HASH_ALGOS[e]}get signatureAlgorithm(){let e=this.signatureAlgorithmObj.subs[0].toOID();return vDe.ECDSA_SIGNATURE_ALGOS[e]}get signatureValue(){return this.signatureValueObj.value}get tstInfo(){return new mCt.TSTInfo(this.eContentObj.subs[0].subs[0])}verify(e,r){if(!this.timeStampTokenObj)throw new wP.RFC3161TimestampVerificationError("timeStampToken is missing");if(this.contentType!==yCt)throw new wP.RFC3161TimestampVerificationError(`incorrect content type: ${this.contentType}`);if(this.eContentType!==ECt)throw new wP.RFC3161TimestampVerificationError(`incorrect encapsulated content type: ${this.eContentType}`);this.tstInfo.verify(e),this.verifyMessageDigest(),this.verifySignature(r)}verifyMessageDigest(){let e=e7.digest(this.signerDigestAlgorithm,this.tstInfo.raw),r=this.messageDigestAttributeObj.subs[1].subs[0].value;if(!e7.bufferEqual(e,r))throw new wP.RFC3161TimestampVerificationError("signed data does not match tstInfo")}verifySignature(e){let r=this.signedAttrsObj.toDER();if(r[0]=49,!e7.verify(r,e,this.signatureValue,this.signatureAlgorithm))throw new wP.RFC3161TimestampVerificationError("signature verification failed")}get pkiStatusInfoObj(){return this.root.subs[0]}get timeStampTokenObj(){return this.root.subs[1]}get contentTypeObj(){return this.timeStampTokenObj.subs[0]}get signedDataObj(){return this.timeStampTokenObj.subs.find(r=>r.tag.isContextSpecific(0)).subs[0]}get encapContentInfoObj(){return this.signedDataObj.subs[2]}get signerInfosObj(){let e=this.signedDataObj;return e.subs[e.subs.length-1]}get signerInfoObj(){return this.signerInfosObj.subs[0]}get eContentTypeObj(){return this.encapContentInfoObj.subs[0]}get eContentObj(){return this.encapContentInfoObj.subs[1]}get signedAttrsObj(){return this.signerInfoObj.subs.find(r=>r.tag.isContextSpecific(0))}get messageDigestAttributeObj(){return this.signedAttrsObj.subs.find(r=>r.subs[0].tag.isOID()&&r.subs[0].toOID()===ICt)}get signerSidObj(){return this.signerInfoObj.subs[1]}get signerDigestAlgorithmObj(){return this.signerInfoObj.subs[2]}get signatureAlgorithmObj(){return this.signerInfoObj.subs[4]}get signatureValueObj(){return this.signerInfoObj.subs[5]}};SA.RFC3161Timestamp=t7});var DDe=_(pO=>{"use strict";Object.defineProperty(pO,"__esModule",{value:!0});pO.RFC3161Timestamp=void 0;var CCt=SDe();Object.defineProperty(pO,"RFC3161Timestamp",{enumerable:!0,get:function(){return CCt.RFC3161Timestamp}})});var bDe=_(DA=>{"use strict";var wCt=DA&&DA.__createBinding||(Object.create?function(t,e,r,s){s===void 0&&(s=r);var a=Object.getOwnPropertyDescriptor(e,r);(!a||("get"in a?!e.__esModule:a.writable||a.configurable))&&(a={enumerable:!0,get:function(){return e[r]}}),Object.defineProperty(t,s,a)}:function(t,e,r,s){s===void 0&&(s=r),t[s]=e[r]}),BCt=DA&&DA.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),vCt=DA&&DA.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(t!=null)for(var r in t)r!=="default"&&Object.prototype.hasOwnProperty.call(t,r)&&wCt(e,t,r);return BCt(e,t),e};Object.defineProperty(DA,"__esModule",{value:!0});DA.SignedCertificateTimestamp=void 0;var SCt=vCt(Kw()),PDe=IP(),r7=class t{constructor(e){this.version=e.version,this.logID=e.logID,this.timestamp=e.timestamp,this.extensions=e.extensions,this.hashAlgorithm=e.hashAlgorithm,this.signatureAlgorithm=e.signatureAlgorithm,this.signature=e.signature}get datetime(){return new Date(Number(this.timestamp.readBigInt64BE()))}get algorithm(){switch(this.hashAlgorithm){case 0:return"none";case 1:return"md5";case 2:return"sha1";case 3:return"sha224";case 4:return"sha256";case 5:return"sha384";case 6:return"sha512";default:return"unknown"}}verify(e,r){let s=new PDe.ByteStream;return s.appendChar(this.version),s.appendChar(0),s.appendView(this.timestamp),s.appendUint16(1),s.appendView(e),s.appendUint16(this.extensions.byteLength),this.extensions.byteLength>0&&s.appendView(this.extensions),SCt.verify(s.buffer,r,this.signature,this.algorithm)}static parse(e){let r=new PDe.ByteStream(e),s=r.getUint8(),a=r.getBlock(32),n=r.getBlock(8),c=r.getUint16(),f=r.getBlock(c),p=r.getUint8(),h=r.getUint8(),E=r.getUint16(),C=r.getBlock(E);if(r.position!==e.length)throw new Error("SCT buffer length mismatch");return new t({version:s,logID:a,timestamp:n,extensions:f,hashAlgorithm:p,signatureAlgorithm:h,signature:C})}};DA.SignedCertificateTimestamp=r7});var c7=_(sa=>{"use strict";Object.defineProperty(sa,"__esModule",{value:!0});sa.X509SCTExtension=sa.X509SubjectKeyIDExtension=sa.X509AuthorityKeyIDExtension=sa.X509SubjectAlternativeNameExtension=sa.X509KeyUsageExtension=sa.X509BasicConstraintsExtension=sa.X509Extension=void 0;var DCt=IP(),PCt=bDe(),ph=class{constructor(e){this.root=e}get oid(){return this.root.subs[0].toOID()}get critical(){return this.root.subs.length===3?this.root.subs[1].toBoolean():!1}get value(){return this.extnValueObj.value}get valueObj(){return this.extnValueObj}get extnValueObj(){return this.root.subs[this.root.subs.length-1]}};sa.X509Extension=ph;var n7=class extends ph{get isCA(){return this.sequence.subs[0]?.toBoolean()??!1}get pathLenConstraint(){return this.sequence.subs.length>1?this.sequence.subs[1].toInteger():void 0}get sequence(){return this.extnValueObj.subs[0]}};sa.X509BasicConstraintsExtension=n7;var i7=class extends ph{get digitalSignature(){return this.bitString[0]===1}get keyCertSign(){return this.bitString[5]===1}get crlSign(){return this.bitString[6]===1}get bitString(){return this.extnValueObj.subs[0].toBitString()}};sa.X509KeyUsageExtension=i7;var s7=class extends ph{get rfc822Name(){return this.findGeneralName(1)?.value.toString("ascii")}get uri(){return this.findGeneralName(6)?.value.toString("ascii")}otherName(e){let r=this.findGeneralName(0);return r===void 0||r.subs[0].toOID()!==e?void 0:r.subs[1].subs[0].value.toString("ascii")}findGeneralName(e){return this.generalNames.find(r=>r.tag.isContextSpecific(e))}get generalNames(){return this.extnValueObj.subs[0].subs}};sa.X509SubjectAlternativeNameExtension=s7;var o7=class extends ph{get keyIdentifier(){return this.findSequenceMember(0)?.value}findSequenceMember(e){return this.sequence.subs.find(r=>r.tag.isContextSpecific(e))}get sequence(){return this.extnValueObj.subs[0]}};sa.X509AuthorityKeyIDExtension=o7;var a7=class extends ph{get keyIdentifier(){return this.extnValueObj.subs[0].value}};sa.X509SubjectKeyIDExtension=a7;var l7=class extends ph{constructor(e){super(e)}get signedCertificateTimestamps(){let e=this.extnValueObj.subs[0].value,r=new DCt.ByteStream(e),s=r.getUint16()+2,a=[];for(;r.position{"use strict";var bCt=ic&&ic.__createBinding||(Object.create?function(t,e,r,s){s===void 0&&(s=r);var a=Object.getOwnPropertyDescriptor(e,r);(!a||("get"in a?!e.__esModule:a.writable||a.configurable))&&(a={enumerable:!0,get:function(){return e[r]}}),Object.defineProperty(t,s,a)}:function(t,e,r,s){s===void 0&&(s=r),t[s]=e[r]}),xCt=ic&&ic.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),kDe=ic&&ic.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(t!=null)for(var r in t)r!=="default"&&Object.prototype.hasOwnProperty.call(t,r)&&bCt(e,t,r);return xCt(e,t),e};Object.defineProperty(ic,"__esModule",{value:!0});ic.X509Certificate=ic.EXTENSION_OID_SCT=void 0;var kCt=lO(),xDe=kDe(Kw()),QCt=fO(),RCt=kDe(zV()),ny=c7(),TCt="2.5.29.14",FCt="2.5.29.15",NCt="2.5.29.17",OCt="2.5.29.19",LCt="2.5.29.35";ic.EXTENSION_OID_SCT="1.3.6.1.4.1.11129.2.4.2";var u7=class t{constructor(e){this.root=e}static parse(e){let r=typeof e=="string"?RCt.toDER(e):e,s=kCt.ASN1Obj.parseBuffer(r);return new t(s)}get tbsCertificate(){return this.tbsCertificateObj}get version(){return`v${(this.versionObj.subs[0].toInteger()+BigInt(1)).toString()}`}get serialNumber(){return this.serialNumberObj.value}get notBefore(){return this.validityObj.subs[0].toDate()}get notAfter(){return this.validityObj.subs[1].toDate()}get issuer(){return this.issuerObj.value}get subject(){return this.subjectObj.value}get publicKey(){return this.subjectPublicKeyInfoObj.toDER()}get signatureAlgorithm(){let e=this.signatureAlgorithmObj.subs[0].toOID();return QCt.ECDSA_SIGNATURE_ALGOS[e]}get signatureValue(){return this.signatureValueObj.value.subarray(1)}get subjectAltName(){let e=this.extSubjectAltName;return e?.uri||e?.rfc822Name}get extensions(){return this.extensionsObj?.subs[0]?.subs||[]}get extKeyUsage(){let e=this.findExtension(FCt);return e?new ny.X509KeyUsageExtension(e):void 0}get extBasicConstraints(){let e=this.findExtension(OCt);return e?new ny.X509BasicConstraintsExtension(e):void 0}get extSubjectAltName(){let e=this.findExtension(NCt);return e?new ny.X509SubjectAlternativeNameExtension(e):void 0}get extAuthorityKeyID(){let e=this.findExtension(LCt);return e?new ny.X509AuthorityKeyIDExtension(e):void 0}get extSubjectKeyID(){let e=this.findExtension(TCt);return e?new ny.X509SubjectKeyIDExtension(e):void 0}get extSCT(){let e=this.findExtension(ic.EXTENSION_OID_SCT);return e?new ny.X509SCTExtension(e):void 0}get isCA(){let e=this.extBasicConstraints?.isCA||!1;return this.extKeyUsage?e&&this.extKeyUsage.keyCertSign:e}extension(e){let r=this.findExtension(e);return r?new ny.X509Extension(r):void 0}verify(e){let r=e?.publicKey||this.publicKey,s=xDe.createPublicKey(r);return xDe.verify(this.tbsCertificate.toDER(),s,this.signatureValue,this.signatureAlgorithm)}validForDate(e){return this.notBefore<=e&&e<=this.notAfter}equals(e){return this.root.toDER().equals(e.root.toDER())}clone(){let e=this.root.toDER(),r=Buffer.alloc(e.length);return e.copy(r),t.parse(r)}findExtension(e){return this.extensions.find(r=>r.subs[0].toOID()===e)}get tbsCertificateObj(){return this.root.subs[0]}get signatureAlgorithmObj(){return this.root.subs[1]}get signatureValueObj(){return this.root.subs[2]}get versionObj(){return this.tbsCertificateObj.subs[0]}get serialNumberObj(){return this.tbsCertificateObj.subs[1]}get issuerObj(){return this.tbsCertificateObj.subs[3]}get validityObj(){return this.tbsCertificateObj.subs[4]}get subjectObj(){return this.tbsCertificateObj.subs[5]}get subjectPublicKeyInfoObj(){return this.tbsCertificateObj.subs[6]}get extensionsObj(){return this.tbsCertificateObj.subs.find(e=>e.tag.isContextSpecific(3))}};ic.X509Certificate=u7});var TDe=_(Bg=>{"use strict";Object.defineProperty(Bg,"__esModule",{value:!0});Bg.X509SCTExtension=Bg.X509Certificate=Bg.EXTENSION_OID_SCT=void 0;var RDe=QDe();Object.defineProperty(Bg,"EXTENSION_OID_SCT",{enumerable:!0,get:function(){return RDe.EXTENSION_OID_SCT}});Object.defineProperty(Bg,"X509Certificate",{enumerable:!0,get:function(){return RDe.X509Certificate}});var MCt=c7();Object.defineProperty(Bg,"X509SCTExtension",{enumerable:!0,get:function(){return MCt.X509SCTExtension}})});var Cl=_(Jn=>{"use strict";var UCt=Jn&&Jn.__createBinding||(Object.create?function(t,e,r,s){s===void 0&&(s=r);var a=Object.getOwnPropertyDescriptor(e,r);(!a||("get"in a?!e.__esModule:a.writable||a.configurable))&&(a={enumerable:!0,get:function(){return e[r]}}),Object.defineProperty(t,s,a)}:function(t,e,r,s){s===void 0&&(s=r),t[s]=e[r]}),_Ct=Jn&&Jn.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),BP=Jn&&Jn.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(t!=null)for(var r in t)r!=="default"&&Object.prototype.hasOwnProperty.call(t,r)&&UCt(e,t,r);return _Ct(e,t),e};Object.defineProperty(Jn,"__esModule",{value:!0});Jn.X509SCTExtension=Jn.X509Certificate=Jn.EXTENSION_OID_SCT=Jn.ByteStream=Jn.RFC3161Timestamp=Jn.pem=Jn.json=Jn.encoding=Jn.dsse=Jn.crypto=Jn.ASN1Obj=void 0;var HCt=lO();Object.defineProperty(Jn,"ASN1Obj",{enumerable:!0,get:function(){return HCt.ASN1Obj}});Jn.crypto=BP(Kw());Jn.dsse=BP(mDe());Jn.encoding=BP(IDe());Jn.json=BP(CDe());Jn.pem=BP(zV());var jCt=DDe();Object.defineProperty(Jn,"RFC3161Timestamp",{enumerable:!0,get:function(){return jCt.RFC3161Timestamp}});var GCt=IP();Object.defineProperty(Jn,"ByteStream",{enumerable:!0,get:function(){return GCt.ByteStream}});var f7=TDe();Object.defineProperty(Jn,"EXTENSION_OID_SCT",{enumerable:!0,get:function(){return f7.EXTENSION_OID_SCT}});Object.defineProperty(Jn,"X509Certificate",{enumerable:!0,get:function(){return f7.X509Certificate}});Object.defineProperty(Jn,"X509SCTExtension",{enumerable:!0,get:function(){return f7.X509SCTExtension}})});var FDe=_(A7=>{"use strict";Object.defineProperty(A7,"__esModule",{value:!0});A7.extractJWTSubject=WCt;var qCt=Cl();function WCt(t){let e=t.split(".",3),r=JSON.parse(qCt.encoding.base64Decode(e[1]));switch(r.iss){case"https://accounts.google.com":case"https://oauth2.sigstore.dev/auth":return r.email;default:return r.sub}}});var NDe=_((Zrr,YCt)=>{YCt.exports={name:"@sigstore/sign",version:"3.1.0",description:"Sigstore signing library",main:"dist/index.js",types:"dist/index.d.ts",scripts:{clean:"shx rm -rf dist *.tsbuildinfo",build:"tsc --build",test:"jest"},files:["dist"],author:"bdehamer@github.com",license:"Apache-2.0",repository:{type:"git",url:"git+https://github.com/sigstore/sigstore-js.git"},bugs:{url:"https://github.com/sigstore/sigstore-js/issues"},homepage:"https://github.com/sigstore/sigstore-js/tree/main/packages/sign#readme",publishConfig:{provenance:!0},devDependencies:{"@sigstore/jest":"^0.0.0","@sigstore/mock":"^0.10.0","@sigstore/rekor-types":"^3.0.0","@types/make-fetch-happen":"^10.0.4","@types/promise-retry":"^1.1.6"},dependencies:{"@sigstore/bundle":"^3.1.0","@sigstore/core":"^2.0.0","@sigstore/protobuf-specs":"^0.4.0","make-fetch-happen":"^14.0.2","proc-log":"^5.0.0","promise-retry":"^2.0.1"},engines:{node:"^18.17.0 || >=20.5.0"}}});var LDe=_(Zw=>{"use strict";var VCt=Zw&&Zw.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(Zw,"__esModule",{value:!0});Zw.getUserAgent=void 0;var ODe=VCt(Ie("os")),JCt=()=>{let t=NDe().version,e=process.version,r=ODe.default.platform(),s=ODe.default.arch();return`sigstore-js/${t} (Node ${e}) (${r}/${s})`};Zw.getUserAgent=JCt});var vg=_(Vi=>{"use strict";var KCt=Vi&&Vi.__createBinding||(Object.create?function(t,e,r,s){s===void 0&&(s=r);var a=Object.getOwnPropertyDescriptor(e,r);(!a||("get"in a?!e.__esModule:a.writable||a.configurable))&&(a={enumerable:!0,get:function(){return e[r]}}),Object.defineProperty(t,s,a)}:function(t,e,r,s){s===void 0&&(s=r),t[s]=e[r]}),zCt=Vi&&Vi.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),MDe=Vi&&Vi.__importStar||function(){var t=function(e){return t=Object.getOwnPropertyNames||function(r){var s=[];for(var a in r)Object.prototype.hasOwnProperty.call(r,a)&&(s[s.length]=a);return s},t(e)};return function(e){if(e&&e.__esModule)return e;var r={};if(e!=null)for(var s=t(e),a=0;a{"use strict";Object.defineProperty(hO,"__esModule",{value:!0});hO.BaseBundleBuilder=void 0;var p7=class{constructor(e){this.signer=e.signer,this.witnesses=e.witnesses}async create(e){let r=await this.prepare(e).then(f=>this.signer.sign(f)),s=await this.package(e,r),a=await Promise.all(this.witnesses.map(f=>f.testify(s.content,ZCt(r.key)))),n=[],c=[];return a.forEach(({tlogEntries:f,rfc3161Timestamps:p})=>{n.push(...f??[]),c.push(...p??[])}),s.verificationMaterial.tlogEntries=n,s.verificationMaterial.timestampVerificationData={rfc3161Timestamps:c},s}async prepare(e){return e.data}};hO.BaseBundleBuilder=p7;function ZCt(t){switch(t.$case){case"publicKey":return t.publicKey;case"x509Certificate":return t.certificate}}});var d7=_(PA=>{"use strict";var XCt=PA&&PA.__createBinding||(Object.create?function(t,e,r,s){s===void 0&&(s=r);var a=Object.getOwnPropertyDescriptor(e,r);(!a||("get"in a?!e.__esModule:a.writable||a.configurable))&&(a={enumerable:!0,get:function(){return e[r]}}),Object.defineProperty(t,s,a)}:function(t,e,r,s){s===void 0&&(s=r),t[s]=e[r]}),$Ct=PA&&PA.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),ewt=PA&&PA.__importStar||function(){var t=function(e){return t=Object.getOwnPropertyNames||function(r){var s=[];for(var a in r)Object.prototype.hasOwnProperty.call(r,a)&&(s[s.length]=a);return s},t(e)};return function(e){if(e&&e.__esModule)return e;var r={};if(e!=null)for(var s=t(e),a=0;a{"use strict";Object.defineProperty(gO,"__esModule",{value:!0});gO.DSSEBundleBuilder=void 0;var nwt=vg(),iwt=h7(),swt=d7(),m7=class extends iwt.BaseBundleBuilder{constructor(e){super(e),this.certificateChain=e.certificateChain??!1}async prepare(e){let r=_De(e);return nwt.dsse.preAuthEncoding(r.type,r.data)}async package(e,r){return(0,swt.toDSSEBundle)(_De(e),r,this.certificateChain)}};gO.DSSEBundleBuilder=m7;function _De(t){return{...t,type:t.type??""}}});var jDe=_(dO=>{"use strict";Object.defineProperty(dO,"__esModule",{value:!0});dO.MessageSignatureBundleBuilder=void 0;var owt=h7(),awt=d7(),y7=class extends owt.BaseBundleBuilder{constructor(e){super(e)}async package(e,r){return(0,awt.toMessageSignatureBundle)(e,r)}};dO.MessageSignatureBundleBuilder=y7});var GDe=_(Xw=>{"use strict";Object.defineProperty(Xw,"__esModule",{value:!0});Xw.MessageSignatureBundleBuilder=Xw.DSSEBundleBuilder=void 0;var lwt=HDe();Object.defineProperty(Xw,"DSSEBundleBuilder",{enumerable:!0,get:function(){return lwt.DSSEBundleBuilder}});var cwt=jDe();Object.defineProperty(Xw,"MessageSignatureBundleBuilder",{enumerable:!0,get:function(){return cwt.MessageSignatureBundleBuilder}})});var yO=_(mO=>{"use strict";Object.defineProperty(mO,"__esModule",{value:!0});mO.HTTPError=void 0;var E7=class extends Error{constructor({status:e,message:r,location:s}){super(`(${e}) ${r}`),this.statusCode=e,this.location=s}};mO.HTTPError=E7});var $w=_(SP=>{"use strict";Object.defineProperty(SP,"__esModule",{value:!0});SP.InternalError=void 0;SP.internalError=fwt;var uwt=yO(),EO=class extends Error{constructor({code:e,message:r,cause:s}){super(r),this.name=this.constructor.name,this.cause=s,this.code=e}};SP.InternalError=EO;function fwt(t,e,r){throw t instanceof uwt.HTTPError&&(r+=` - ${t.message}`),new EO({code:e,message:r,cause:t})}});var IO=_((anr,qDe)=>{qDe.exports=fetch});var WDe=_(e1=>{"use strict";var Awt=e1&&e1.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(e1,"__esModule",{value:!0});e1.CIContextProvider=void 0;var pwt=Awt(IO()),hwt=[gwt,dwt],I7=class{constructor(e="sigstore"){this.audience=e}async getToken(){return Promise.any(hwt.map(e=>e(this.audience))).catch(()=>Promise.reject("CI: no tokens available"))}};e1.CIContextProvider=I7;async function gwt(t){if(!process.env.ACTIONS_ID_TOKEN_REQUEST_URL||!process.env.ACTIONS_ID_TOKEN_REQUEST_TOKEN)return Promise.reject("no token available");let e=new URL(process.env.ACTIONS_ID_TOKEN_REQUEST_URL);return e.searchParams.append("audience",t),(await(0,pwt.default)(e.href,{retry:2,headers:{Accept:"application/json",Authorization:`Bearer ${process.env.ACTIONS_ID_TOKEN_REQUEST_TOKEN}`}})).json().then(s=>s.value)}async function dwt(){return process.env.SIGSTORE_ID_TOKEN?process.env.SIGSTORE_ID_TOKEN:Promise.reject("no token available")}});var YDe=_(CO=>{"use strict";Object.defineProperty(CO,"__esModule",{value:!0});CO.CIContextProvider=void 0;var mwt=WDe();Object.defineProperty(CO,"CIContextProvider",{enumerable:!0,get:function(){return mwt.CIContextProvider}})});var JDe=_((unr,VDe)=>{var ywt=Symbol("proc-log.meta");VDe.exports={META:ywt,output:{LEVELS:["standard","error","buffer","flush"],KEYS:{standard:"standard",error:"error",buffer:"buffer",flush:"flush"},standard:function(...t){return process.emit("output","standard",...t)},error:function(...t){return process.emit("output","error",...t)},buffer:function(...t){return process.emit("output","buffer",...t)},flush:function(...t){return process.emit("output","flush",...t)}},log:{LEVELS:["notice","error","warn","info","verbose","http","silly","timing","pause","resume"],KEYS:{notice:"notice",error:"error",warn:"warn",info:"info",verbose:"verbose",http:"http",silly:"silly",timing:"timing",pause:"pause",resume:"resume"},error:function(...t){return process.emit("log","error",...t)},notice:function(...t){return process.emit("log","notice",...t)},warn:function(...t){return process.emit("log","warn",...t)},info:function(...t){return process.emit("log","info",...t)},verbose:function(...t){return process.emit("log","verbose",...t)},http:function(...t){return process.emit("log","http",...t)},silly:function(...t){return process.emit("log","silly",...t)},timing:function(...t){return process.emit("log","timing",...t)},pause:function(){return process.emit("log","pause")},resume:function(){return process.emit("log","resume")}},time:{LEVELS:["start","end"],KEYS:{start:"start",end:"end"},start:function(t,e){process.emit("time","start",t);function r(){return process.emit("time","end",t)}if(typeof e=="function"){let s=e();return s&&s.finally?s.finally(r):(r(),s)}return r},end:function(t){return process.emit("time","end",t)}},input:{LEVELS:["start","end","read"],KEYS:{start:"start",end:"end",read:"read"},start:function(t){process.emit("input","start");function e(){return process.emit("input","end")}if(typeof t=="function"){let r=t();return r&&r.finally?r.finally(e):(e(),r)}return e},end:function(){return process.emit("input","end")},read:function(...t){let e,r,s=new Promise((a,n)=>{e=a,r=n});return process.emit("input","read",e,r,...t),s}}}});var ZDe=_((fnr,zDe)=>{"use strict";function KDe(t,e){for(let r in e)Object.defineProperty(t,r,{value:e[r],enumerable:!0,configurable:!0});return t}function Ewt(t,e,r){if(!t||typeof t=="string")throw new TypeError("Please pass an Error to err-code");r||(r={}),typeof e=="object"&&(r=e,e=void 0),e!=null&&(r.code=e);try{return KDe(t,r)}catch{r.message=t.message,r.stack=t.stack;let a=function(){};return a.prototype=Object.create(Object.getPrototypeOf(t)),KDe(new a,r)}}zDe.exports=Ewt});var $De=_((Anr,XDe)=>{function $c(t,e){typeof e=="boolean"&&(e={forever:e}),this._originalTimeouts=JSON.parse(JSON.stringify(t)),this._timeouts=t,this._options=e||{},this._maxRetryTime=e&&e.maxRetryTime||1/0,this._fn=null,this._errors=[],this._attempts=1,this._operationTimeout=null,this._operationTimeoutCb=null,this._timeout=null,this._operationStart=null,this._options.forever&&(this._cachedTimeouts=this._timeouts.slice(0))}XDe.exports=$c;$c.prototype.reset=function(){this._attempts=1,this._timeouts=this._originalTimeouts};$c.prototype.stop=function(){this._timeout&&clearTimeout(this._timeout),this._timeouts=[],this._cachedTimeouts=null};$c.prototype.retry=function(t){if(this._timeout&&clearTimeout(this._timeout),!t)return!1;var e=new Date().getTime();if(t&&e-this._operationStart>=this._maxRetryTime)return this._errors.unshift(new Error("RetryOperation timeout occurred")),!1;this._errors.push(t);var r=this._timeouts.shift();if(r===void 0)if(this._cachedTimeouts)this._errors.splice(this._errors.length-1,this._errors.length),this._timeouts=this._cachedTimeouts.slice(0),r=this._timeouts.shift();else return!1;var s=this,a=setTimeout(function(){s._attempts++,s._operationTimeoutCb&&(s._timeout=setTimeout(function(){s._operationTimeoutCb(s._attempts)},s._operationTimeout),s._options.unref&&s._timeout.unref()),s._fn(s._attempts)},r);return this._options.unref&&a.unref(),!0};$c.prototype.attempt=function(t,e){this._fn=t,e&&(e.timeout&&(this._operationTimeout=e.timeout),e.cb&&(this._operationTimeoutCb=e.cb));var r=this;this._operationTimeoutCb&&(this._timeout=setTimeout(function(){r._operationTimeoutCb()},r._operationTimeout)),this._operationStart=new Date().getTime(),this._fn(this._attempts)};$c.prototype.try=function(t){console.log("Using RetryOperation.try() is deprecated"),this.attempt(t)};$c.prototype.start=function(t){console.log("Using RetryOperation.start() is deprecated"),this.attempt(t)};$c.prototype.start=$c.prototype.try;$c.prototype.errors=function(){return this._errors};$c.prototype.attempts=function(){return this._attempts};$c.prototype.mainError=function(){if(this._errors.length===0)return null;for(var t={},e=null,r=0,s=0;s=r&&(e=a,r=c)}return e}});var ePe=_(iy=>{var Iwt=$De();iy.operation=function(t){var e=iy.timeouts(t);return new Iwt(e,{forever:t&&t.forever,unref:t&&t.unref,maxRetryTime:t&&t.maxRetryTime})};iy.timeouts=function(t){if(t instanceof Array)return[].concat(t);var e={retries:10,factor:2,minTimeout:1*1e3,maxTimeout:1/0,randomize:!1};for(var r in t)e[r]=t[r];if(e.minTimeout>e.maxTimeout)throw new Error("minTimeout is greater than maxTimeout");for(var s=[],a=0;a{tPe.exports=ePe()});var sPe=_((gnr,iPe)=>{"use strict";var Cwt=ZDe(),wwt=rPe(),Bwt=Object.prototype.hasOwnProperty;function nPe(t){return t&&t.code==="EPROMISERETRY"&&Bwt.call(t,"retried")}function vwt(t,e){var r,s;return typeof t=="object"&&typeof e=="function"&&(r=e,e=t,t=r),s=wwt.operation(e),new Promise(function(a,n){s.attempt(function(c){Promise.resolve().then(function(){return t(function(f){throw nPe(f)&&(f=f.retried),Cwt(new Error("Retrying"),"EPROMISERETRY",{retried:f})},c)}).then(a,function(f){nPe(f)&&(f=f.retried,s.retry(f||new Error))||n(f)})})})}iPe.exports=vwt});var wO=_(DP=>{"use strict";var aPe=DP&&DP.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(DP,"__esModule",{value:!0});DP.fetchWithRetry=Owt;var Swt=Ie("http2"),Dwt=aPe(IO()),oPe=JDe(),Pwt=aPe(sPe()),bwt=vg(),xwt=yO(),{HTTP2_HEADER_LOCATION:kwt,HTTP2_HEADER_CONTENT_TYPE:Qwt,HTTP2_HEADER_USER_AGENT:Rwt,HTTP_STATUS_INTERNAL_SERVER_ERROR:Twt,HTTP_STATUS_TOO_MANY_REQUESTS:Fwt,HTTP_STATUS_REQUEST_TIMEOUT:Nwt}=Swt.constants;async function Owt(t,e){return(0,Pwt.default)(async(r,s)=>{let a=e.method||"POST",n={[Rwt]:bwt.ua.getUserAgent(),...e.headers},c=await(0,Dwt.default)(t,{method:a,headers:n,body:e.body,timeout:e.timeout,retry:!1}).catch(f=>(oPe.log.http("fetch",`${a} ${t} attempt ${s} failed with ${f}`),r(f)));if(c.ok)return c;{let f=await Lwt(c);if(oPe.log.http("fetch",`${a} ${t} attempt ${s} failed with ${c.status}`),Mwt(c.status))return r(f);throw f}},Uwt(e.retry))}var Lwt=async t=>{let e=t.statusText,r=t.headers.get(kwt)||void 0;if(t.headers.get(Qwt)?.includes("application/json"))try{e=(await t.json()).message||e}catch{}return new xwt.HTTPError({status:t.status,message:e,location:r})},Mwt=t=>[Nwt,Fwt].includes(t)||t>=Twt,Uwt=t=>typeof t=="boolean"?{retries:t?1:0}:typeof t=="number"?{retries:t}:{retries:0,...t}});var lPe=_(BO=>{"use strict";Object.defineProperty(BO,"__esModule",{value:!0});BO.Fulcio=void 0;var _wt=wO(),C7=class{constructor(e){this.options=e}async createSigningCertificate(e){let{baseURL:r,retry:s,timeout:a}=this.options,n=`${r}/api/v2/signingCert`;return(await(0,_wt.fetchWithRetry)(n,{headers:{"Content-Type":"application/json"},body:JSON.stringify(e),timeout:a,retry:s})).json()}};BO.Fulcio=C7});var cPe=_(vO=>{"use strict";Object.defineProperty(vO,"__esModule",{value:!0});vO.CAClient=void 0;var Hwt=$w(),jwt=lPe(),w7=class{constructor(e){this.fulcio=new jwt.Fulcio({baseURL:e.fulcioBaseURL,retry:e.retry,timeout:e.timeout})}async createSigningCertificate(e,r,s){let a=Gwt(e,r,s);try{let n=await this.fulcio.createSigningCertificate(a);return(n.signedCertificateEmbeddedSct?n.signedCertificateEmbeddedSct:n.signedCertificateDetachedSct).chain.certificates}catch(n){(0,Hwt.internalError)(n,"CA_CREATE_SIGNING_CERTIFICATE_ERROR","error creating signing certificate")}}};vO.CAClient=w7;function Gwt(t,e,r){return{credentials:{oidcIdentityToken:t},publicKeyRequest:{publicKey:{algorithm:"ECDSA",content:e},proofOfPossession:r.toString("base64")}}}});var fPe=_(t1=>{"use strict";var qwt=t1&&t1.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(t1,"__esModule",{value:!0});t1.EphemeralSigner=void 0;var uPe=qwt(Ie("crypto")),Wwt="ec",Ywt="P-256",B7=class{constructor(){this.keypair=uPe.default.generateKeyPairSync(Wwt,{namedCurve:Ywt})}async sign(e){let r=uPe.default.sign(null,e,this.keypair.privateKey),s=this.keypair.publicKey.export({format:"pem",type:"spki"}).toString("ascii");return{signature:r,key:{$case:"publicKey",publicKey:s}}}};t1.EphemeralSigner=B7});var APe=_(sy=>{"use strict";Object.defineProperty(sy,"__esModule",{value:!0});sy.FulcioSigner=sy.DEFAULT_FULCIO_URL=void 0;var v7=$w(),Vwt=vg(),Jwt=cPe(),Kwt=fPe();sy.DEFAULT_FULCIO_URL="https://fulcio.sigstore.dev";var S7=class{constructor(e){this.ca=new Jwt.CAClient({...e,fulcioBaseURL:e.fulcioBaseURL||sy.DEFAULT_FULCIO_URL}),this.identityProvider=e.identityProvider,this.keyHolder=e.keyHolder||new Kwt.EphemeralSigner}async sign(e){let r=await this.getIdentityToken(),s;try{s=Vwt.oidc.extractJWTSubject(r)}catch(f){throw new v7.InternalError({code:"IDENTITY_TOKEN_PARSE_ERROR",message:`invalid identity token: ${r}`,cause:f})}let a=await this.keyHolder.sign(Buffer.from(s));if(a.key.$case!=="publicKey")throw new v7.InternalError({code:"CA_CREATE_SIGNING_CERTIFICATE_ERROR",message:"unexpected format for signing key"});let n=await this.ca.createSigningCertificate(r,a.key.publicKey,a.signature);return{signature:(await this.keyHolder.sign(e)).signature,key:{$case:"x509Certificate",certificate:n[0]}}}async getIdentityToken(){try{return await this.identityProvider.getToken()}catch(e){throw new v7.InternalError({code:"IDENTITY_TOKEN_READ_ERROR",message:"error retrieving identity token",cause:e})}}};sy.FulcioSigner=S7});var hPe=_(r1=>{"use strict";Object.defineProperty(r1,"__esModule",{value:!0});r1.FulcioSigner=r1.DEFAULT_FULCIO_URL=void 0;var pPe=APe();Object.defineProperty(r1,"DEFAULT_FULCIO_URL",{enumerable:!0,get:function(){return pPe.DEFAULT_FULCIO_URL}});Object.defineProperty(r1,"FulcioSigner",{enumerable:!0,get:function(){return pPe.FulcioSigner}})});var mPe=_(SO=>{"use strict";Object.defineProperty(SO,"__esModule",{value:!0});SO.Rekor=void 0;var gPe=wO(),D7=class{constructor(e){this.options=e}async createEntry(e){let{baseURL:r,timeout:s,retry:a}=this.options,n=`${r}/api/v1/log/entries`,f=await(await(0,gPe.fetchWithRetry)(n,{headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify(e),timeout:s,retry:a})).json();return dPe(f)}async getEntry(e){let{baseURL:r,timeout:s,retry:a}=this.options,n=`${r}/api/v1/log/entries/${e}`,f=await(await(0,gPe.fetchWithRetry)(n,{method:"GET",headers:{Accept:"application/json"},timeout:s,retry:a})).json();return dPe(f)}};SO.Rekor=D7;function dPe(t){let e=Object.entries(t);if(e.length!=1)throw new Error("Received multiple entries in Rekor response");let[r,s]=e[0];return{...s,uuid:r}}});var EPe=_(DO=>{"use strict";Object.defineProperty(DO,"__esModule",{value:!0});DO.TLogClient=void 0;var yPe=$w(),zwt=yO(),Zwt=mPe(),P7=class{constructor(e){this.fetchOnConflict=e.fetchOnConflict??!1,this.rekor=new Zwt.Rekor({baseURL:e.rekorBaseURL,retry:e.retry,timeout:e.timeout})}async createEntry(e){let r;try{r=await this.rekor.createEntry(e)}catch(s){if(Xwt(s)&&this.fetchOnConflict){let a=s.location.split("/").pop()||"";try{r=await this.rekor.getEntry(a)}catch(n){(0,yPe.internalError)(n,"TLOG_FETCH_ENTRY_ERROR","error fetching tlog entry")}}else(0,yPe.internalError)(s,"TLOG_CREATE_ENTRY_ERROR","error creating tlog entry")}return r}};DO.TLogClient=P7;function Xwt(t){return t instanceof zwt.HTTPError&&t.statusCode===409&&t.location!==void 0}});var IPe=_(b7=>{"use strict";Object.defineProperty(b7,"__esModule",{value:!0});b7.toProposedEntry=e1t;var $wt=EP(),Sg=vg(),PP="sha256";function e1t(t,e,r="dsse"){switch(t.$case){case"dsseEnvelope":return r==="intoto"?n1t(t.dsseEnvelope,e):r1t(t.dsseEnvelope,e);case"messageSignature":return t1t(t.messageSignature,e)}}function t1t(t,e){let r=t.messageDigest.digest.toString("hex"),s=t.signature.toString("base64"),a=Sg.encoding.base64Encode(e);return{apiVersion:"0.0.1",kind:"hashedrekord",spec:{data:{hash:{algorithm:PP,value:r}},signature:{content:s,publicKey:{content:a}}}}}function r1t(t,e){let r=JSON.stringify((0,$wt.envelopeToJSON)(t)),s=Sg.encoding.base64Encode(e);return{apiVersion:"0.0.1",kind:"dsse",spec:{proposedContent:{envelope:r,verifiers:[s]}}}}function n1t(t,e){let r=Sg.crypto.digest(PP,t.payload).toString("hex"),s=i1t(t,e),a=Sg.encoding.base64Encode(t.payload.toString("base64")),n=Sg.encoding.base64Encode(t.signatures[0].sig.toString("base64")),c=t.signatures[0].keyid,f=Sg.encoding.base64Encode(e),p={payloadType:t.payloadType,payload:a,signatures:[{sig:n,publicKey:f}]};return c.length>0&&(p.signatures[0].keyid=c),{apiVersion:"0.0.2",kind:"intoto",spec:{content:{envelope:p,hash:{algorithm:PP,value:s},payloadHash:{algorithm:PP,value:r}}}}}function i1t(t,e){let r={payloadType:t.payloadType,payload:t.payload.toString("base64"),signatures:[{sig:t.signatures[0].sig.toString("base64"),publicKey:e}]};return t.signatures[0].keyid.length>0&&(r.signatures[0].keyid=t.signatures[0].keyid),Sg.crypto.digest(PP,Sg.json.canonicalize(r)).toString("hex")}});var CPe=_(oy=>{"use strict";Object.defineProperty(oy,"__esModule",{value:!0});oy.RekorWitness=oy.DEFAULT_REKOR_URL=void 0;var s1t=vg(),o1t=EPe(),a1t=IPe();oy.DEFAULT_REKOR_URL="https://rekor.sigstore.dev";var x7=class{constructor(e){this.entryType=e.entryType,this.tlog=new o1t.TLogClient({...e,rekorBaseURL:e.rekorBaseURL||oy.DEFAULT_REKOR_URL})}async testify(e,r){let s=(0,a1t.toProposedEntry)(e,r,this.entryType),a=await this.tlog.createEntry(s);return l1t(a)}};oy.RekorWitness=x7;function l1t(t){let e=Buffer.from(t.logID,"hex"),r=s1t.encoding.base64Decode(t.body),s=JSON.parse(r),a=t?.verification?.signedEntryTimestamp?c1t(t.verification.signedEntryTimestamp):void 0,n=t?.verification?.inclusionProof?u1t(t.verification.inclusionProof):void 0;return{tlogEntries:[{logIndex:t.logIndex.toString(),logId:{keyId:e},integratedTime:t.integratedTime.toString(),kindVersion:{kind:s.kind,version:s.apiVersion},inclusionPromise:a,inclusionProof:n,canonicalizedBody:Buffer.from(t.body,"base64")}]}}function c1t(t){return{signedEntryTimestamp:Buffer.from(t,"base64")}}function u1t(t){return{logIndex:t.logIndex.toString(),treeSize:t.treeSize.toString(),rootHash:Buffer.from(t.rootHash,"hex"),hashes:t.hashes.map(e=>Buffer.from(e,"hex")),checkpoint:{envelope:t.checkpoint}}}});var wPe=_(PO=>{"use strict";Object.defineProperty(PO,"__esModule",{value:!0});PO.TimestampAuthority=void 0;var f1t=wO(),k7=class{constructor(e){this.options=e}async createTimestamp(e){let{baseURL:r,timeout:s,retry:a}=this.options,n=`${r}/api/v1/timestamp`;return(await(0,f1t.fetchWithRetry)(n,{headers:{"Content-Type":"application/json"},body:JSON.stringify(e),timeout:s,retry:a})).buffer()}};PO.TimestampAuthority=k7});var vPe=_(bO=>{"use strict";Object.defineProperty(bO,"__esModule",{value:!0});bO.TSAClient=void 0;var A1t=$w(),p1t=wPe(),h1t=vg(),BPe="sha256",Q7=class{constructor(e){this.tsa=new p1t.TimestampAuthority({baseURL:e.tsaBaseURL,retry:e.retry,timeout:e.timeout})}async createTimestamp(e){let r={artifactHash:h1t.crypto.digest(BPe,e).toString("base64"),hashAlgorithm:BPe};try{return await this.tsa.createTimestamp(r)}catch(s){(0,A1t.internalError)(s,"TSA_CREATE_TIMESTAMP_ERROR","error creating timestamp")}}};bO.TSAClient=Q7});var SPe=_(xO=>{"use strict";Object.defineProperty(xO,"__esModule",{value:!0});xO.TSAWitness=void 0;var g1t=vPe(),R7=class{constructor(e){this.tsa=new g1t.TSAClient({tsaBaseURL:e.tsaBaseURL,retry:e.retry,timeout:e.timeout})}async testify(e){let r=d1t(e);return{rfc3161Timestamps:[{signedTimestamp:await this.tsa.createTimestamp(r)}]}}};xO.TSAWitness=R7;function d1t(t){switch(t.$case){case"dsseEnvelope":return t.dsseEnvelope.signatures[0].sig;case"messageSignature":return t.messageSignature.signature}}});var PPe=_(Dg=>{"use strict";Object.defineProperty(Dg,"__esModule",{value:!0});Dg.TSAWitness=Dg.RekorWitness=Dg.DEFAULT_REKOR_URL=void 0;var DPe=CPe();Object.defineProperty(Dg,"DEFAULT_REKOR_URL",{enumerable:!0,get:function(){return DPe.DEFAULT_REKOR_URL}});Object.defineProperty(Dg,"RekorWitness",{enumerable:!0,get:function(){return DPe.RekorWitness}});var m1t=SPe();Object.defineProperty(Dg,"TSAWitness",{enumerable:!0,get:function(){return m1t.TSAWitness}})});var F7=_(ys=>{"use strict";Object.defineProperty(ys,"__esModule",{value:!0});ys.TSAWitness=ys.RekorWitness=ys.DEFAULT_REKOR_URL=ys.FulcioSigner=ys.DEFAULT_FULCIO_URL=ys.CIContextProvider=ys.InternalError=ys.MessageSignatureBundleBuilder=ys.DSSEBundleBuilder=void 0;var bPe=GDe();Object.defineProperty(ys,"DSSEBundleBuilder",{enumerable:!0,get:function(){return bPe.DSSEBundleBuilder}});Object.defineProperty(ys,"MessageSignatureBundleBuilder",{enumerable:!0,get:function(){return bPe.MessageSignatureBundleBuilder}});var y1t=$w();Object.defineProperty(ys,"InternalError",{enumerable:!0,get:function(){return y1t.InternalError}});var E1t=YDe();Object.defineProperty(ys,"CIContextProvider",{enumerable:!0,get:function(){return E1t.CIContextProvider}});var xPe=hPe();Object.defineProperty(ys,"DEFAULT_FULCIO_URL",{enumerable:!0,get:function(){return xPe.DEFAULT_FULCIO_URL}});Object.defineProperty(ys,"FulcioSigner",{enumerable:!0,get:function(){return xPe.FulcioSigner}});var T7=PPe();Object.defineProperty(ys,"DEFAULT_REKOR_URL",{enumerable:!0,get:function(){return T7.DEFAULT_REKOR_URL}});Object.defineProperty(ys,"RekorWitness",{enumerable:!0,get:function(){return T7.RekorWitness}});Object.defineProperty(ys,"TSAWitness",{enumerable:!0,get:function(){return T7.TSAWitness}})});var QPe=_(bP=>{"use strict";var kPe=bP&&bP.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(bP,"__esModule",{value:!0});bP.appDataPath=C1t;var I1t=kPe(Ie("os")),n1=kPe(Ie("path"));function C1t(t){let e=I1t.default.homedir();switch(process.platform){case"darwin":{let r=n1.default.join(e,"Library","Application Support");return n1.default.join(r,t)}case"win32":{let r=process.env.LOCALAPPDATA||n1.default.join(e,"AppData","Local");return n1.default.join(r,t,"Data")}default:{let r=process.env.XDG_DATA_HOME||n1.default.join(e,".local","share");return n1.default.join(r,t)}}}});var bA=_(wl=>{"use strict";Object.defineProperty(wl,"__esModule",{value:!0});wl.UnsupportedAlgorithmError=wl.CryptoError=wl.LengthOrHashMismatchError=wl.UnsignedMetadataError=wl.RepositoryError=wl.ValueError=void 0;var N7=class extends Error{};wl.ValueError=N7;var xP=class extends Error{};wl.RepositoryError=xP;var O7=class extends xP{};wl.UnsignedMetadataError=O7;var L7=class extends xP{};wl.LengthOrHashMismatchError=L7;var kO=class extends Error{};wl.CryptoError=kO;var M7=class extends kO{};wl.UnsupportedAlgorithmError=M7});var TPe=_(Pg=>{"use strict";Object.defineProperty(Pg,"__esModule",{value:!0});Pg.isDefined=w1t;Pg.isObject=RPe;Pg.isStringArray=B1t;Pg.isObjectArray=v1t;Pg.isStringRecord=S1t;Pg.isObjectRecord=D1t;function w1t(t){return t!==void 0}function RPe(t){return typeof t=="object"&&t!==null}function B1t(t){return Array.isArray(t)&&t.every(e=>typeof e=="string")}function v1t(t){return Array.isArray(t)&&t.every(RPe)}function S1t(t){return typeof t=="object"&&t!==null&&Object.keys(t).every(e=>typeof e=="string")&&Object.values(t).every(e=>typeof e=="string")}function D1t(t){return typeof t=="object"&&t!==null&&Object.keys(t).every(e=>typeof e=="string")&&Object.values(t).every(e=>typeof e=="object"&&e!==null)}});var _7=_((Fnr,OPe)=>{var FPe=",",P1t=":",b1t="[",x1t="]",k1t="{",Q1t="}";function U7(t){let e=[];if(typeof t=="string")e.push(NPe(t));else if(typeof t=="boolean")e.push(JSON.stringify(t));else if(Number.isInteger(t))e.push(JSON.stringify(t));else if(t===null)e.push(JSON.stringify(t));else if(Array.isArray(t)){e.push(b1t);let r=!0;t.forEach(s=>{r||e.push(FPe),r=!1,e.push(U7(s))}),e.push(x1t)}else if(typeof t=="object"){e.push(k1t);let r=!0;Object.keys(t).sort().forEach(s=>{r||e.push(FPe),r=!1,e.push(NPe(s)),e.push(P1t),e.push(U7(t[s]))}),e.push(Q1t)}else throw new TypeError("cannot encode "+t.toString());return e.join("")}function NPe(t){return'"'+t.replace(/\\/g,"\\\\").replace(/"/g,'\\"')+'"'}OPe.exports={canonicalize:U7}});var LPe=_(i1=>{"use strict";var R1t=i1&&i1.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(i1,"__esModule",{value:!0});i1.verifySignature=void 0;var T1t=_7(),F1t=R1t(Ie("crypto")),N1t=(t,e,r)=>{let s=Buffer.from((0,T1t.canonicalize)(t));return F1t.default.verify(void 0,s,e,Buffer.from(r,"hex"))};i1.verifySignature=N1t});var ff=_(eu=>{"use strict";var O1t=eu&&eu.__createBinding||(Object.create?function(t,e,r,s){s===void 0&&(s=r);var a=Object.getOwnPropertyDescriptor(e,r);(!a||("get"in a?!e.__esModule:a.writable||a.configurable))&&(a={enumerable:!0,get:function(){return e[r]}}),Object.defineProperty(t,s,a)}:function(t,e,r,s){s===void 0&&(s=r),t[s]=e[r]}),L1t=eu&&eu.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),MPe=eu&&eu.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(t!=null)for(var r in t)r!=="default"&&Object.prototype.hasOwnProperty.call(t,r)&&O1t(e,t,r);return L1t(e,t),e};Object.defineProperty(eu,"__esModule",{value:!0});eu.crypto=eu.guard=void 0;eu.guard=MPe(TPe());eu.crypto=MPe(LPe())});var ay=_(hh=>{"use strict";var M1t=hh&&hh.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(hh,"__esModule",{value:!0});hh.Signed=hh.MetadataKind=void 0;hh.isMetadataKind=_1t;var U1t=M1t(Ie("util")),kP=bA(),H7=ff(),UPe=["1","0","31"],j7;(function(t){t.Root="root",t.Timestamp="timestamp",t.Snapshot="snapshot",t.Targets="targets"})(j7||(hh.MetadataKind=j7={}));function _1t(t){return typeof t=="string"&&Object.values(j7).includes(t)}var G7=class t{constructor(e){this.specVersion=e.specVersion||UPe.join(".");let r=this.specVersion.split(".");if(!(r.length===2||r.length===3)||!r.every(s=>H1t(s)))throw new kP.ValueError("Failed to parse specVersion");if(r[0]!=UPe[0])throw new kP.ValueError("Unsupported specVersion");this.expires=e.expires,this.version=e.version,this.unrecognizedFields=e.unrecognizedFields||{}}equals(e){return e instanceof t?this.specVersion===e.specVersion&&this.expires===e.expires&&this.version===e.version&&U1t.default.isDeepStrictEqual(this.unrecognizedFields,e.unrecognizedFields):!1}isExpired(e){return e||(e=new Date),e>=new Date(this.expires)}static commonFieldsFromJSON(e){let{spec_version:r,expires:s,version:a,...n}=e;if(H7.guard.isDefined(r)){if(typeof r!="string")throw new TypeError("spec_version must be a string")}else throw new kP.ValueError("spec_version is not defined");if(H7.guard.isDefined(s)){if(typeof s!="string")throw new TypeError("expires must be a string")}else throw new kP.ValueError("expires is not defined");if(H7.guard.isDefined(a)){if(typeof a!="number")throw new TypeError("version must be a number")}else throw new kP.ValueError("version is not defined");return{specVersion:r,expires:s,version:a,unrecognizedFields:n}}};hh.Signed=G7;function H1t(t){return!isNaN(Number(t))}});var QP=_(xg=>{"use strict";var _Pe=xg&&xg.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(xg,"__esModule",{value:!0});xg.TargetFile=xg.MetaFile=void 0;var HPe=_Pe(Ie("crypto")),RO=_Pe(Ie("util")),bg=bA(),QO=ff(),q7=class t{constructor(e){if(e.version<=0)throw new bg.ValueError("Metafile version must be at least 1");e.length!==void 0&&jPe(e.length),this.version=e.version,this.length=e.length,this.hashes=e.hashes,this.unrecognizedFields=e.unrecognizedFields||{}}equals(e){return e instanceof t?this.version===e.version&&this.length===e.length&&RO.default.isDeepStrictEqual(this.hashes,e.hashes)&&RO.default.isDeepStrictEqual(this.unrecognizedFields,e.unrecognizedFields):!1}verify(e){if(this.length!==void 0&&e.length!==this.length)throw new bg.LengthOrHashMismatchError(`Expected length ${this.length} but got ${e.length}`);this.hashes&&Object.entries(this.hashes).forEach(([r,s])=>{let a;try{a=HPe.default.createHash(r)}catch{throw new bg.LengthOrHashMismatchError(`Hash algorithm ${r} not supported`)}let n=a.update(e).digest("hex");if(n!==s)throw new bg.LengthOrHashMismatchError(`Expected hash ${s} but got ${n}`)})}toJSON(){let e={version:this.version,...this.unrecognizedFields};return this.length!==void 0&&(e.length=this.length),this.hashes&&(e.hashes=this.hashes),e}static fromJSON(e){let{version:r,length:s,hashes:a,...n}=e;if(typeof r!="number")throw new TypeError("version must be a number");if(QO.guard.isDefined(s)&&typeof s!="number")throw new TypeError("length must be a number");if(QO.guard.isDefined(a)&&!QO.guard.isStringRecord(a))throw new TypeError("hashes must be string keys and values");return new t({version:r,length:s,hashes:a,unrecognizedFields:n})}};xg.MetaFile=q7;var W7=class t{constructor(e){jPe(e.length),this.length=e.length,this.path=e.path,this.hashes=e.hashes,this.unrecognizedFields=e.unrecognizedFields||{}}get custom(){let e=this.unrecognizedFields.custom;return!e||Array.isArray(e)||typeof e!="object"?{}:e}equals(e){return e instanceof t?this.length===e.length&&this.path===e.path&&RO.default.isDeepStrictEqual(this.hashes,e.hashes)&&RO.default.isDeepStrictEqual(this.unrecognizedFields,e.unrecognizedFields):!1}async verify(e){let r=0,s=Object.keys(this.hashes).reduce((a,n)=>{try{a[n]=HPe.default.createHash(n)}catch{throw new bg.LengthOrHashMismatchError(`Hash algorithm ${n} not supported`)}return a},{});for await(let a of e)r+=a.length,Object.values(s).forEach(n=>{n.update(a)});if(r!==this.length)throw new bg.LengthOrHashMismatchError(`Expected length ${this.length} but got ${r}`);Object.entries(s).forEach(([a,n])=>{let c=this.hashes[a],f=n.digest("hex");if(f!==c)throw new bg.LengthOrHashMismatchError(`Expected hash ${c} but got ${f}`)})}toJSON(){return{length:this.length,hashes:this.hashes,...this.unrecognizedFields}}static fromJSON(e,r){let{length:s,hashes:a,...n}=r;if(typeof s!="number")throw new TypeError("length must be a number");if(!QO.guard.isStringRecord(a))throw new TypeError("hashes must have string keys and values");return new t({length:s,path:e,hashes:a,unrecognizedFields:n})}};xg.TargetFile=W7;function jPe(t){if(t<0)throw new bg.ValueError("Length must be at least 0")}});var GPe=_(Y7=>{"use strict";Object.defineProperty(Y7,"__esModule",{value:!0});Y7.encodeOIDString=G1t;var j1t=6;function G1t(t){let e=t.split("."),r=parseInt(e[0],10)*40+parseInt(e[1],10),s=[];e.slice(2).forEach(n=>{let c=q1t(parseInt(n,10));s.push(...c)});let a=Buffer.from([r,...s]);return Buffer.from([j1t,a.length,...a])}function q1t(t){let e=[],r=0;for(;t>0;)e.unshift(t&127|r),t>>=7,r=128;return e}});var VPe=_(TP=>{"use strict";var W1t=TP&&TP.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(TP,"__esModule",{value:!0});TP.getPublicKey=K1t;var s1=W1t(Ie("crypto")),RP=bA(),V7=GPe(),TO=48,qPe=3,WPe=0,Y1t="1.3.101.112",V1t="1.2.840.10045.2.1",J1t="1.2.840.10045.3.1.7",J7="-----BEGIN PUBLIC KEY-----";function K1t(t){switch(t.keyType){case"rsa":return z1t(t);case"ed25519":return Z1t(t);case"ecdsa":case"ecdsa-sha2-nistp256":case"ecdsa-sha2-nistp384":return X1t(t);default:throw new RP.UnsupportedAlgorithmError(`Unsupported key type: ${t.keyType}`)}}function z1t(t){if(!t.keyVal.startsWith(J7))throw new RP.CryptoError("Invalid key format");let e=s1.default.createPublicKey(t.keyVal);switch(t.scheme){case"rsassa-pss-sha256":return{key:e,padding:s1.default.constants.RSA_PKCS1_PSS_PADDING};default:throw new RP.UnsupportedAlgorithmError(`Unsupported RSA scheme: ${t.scheme}`)}}function Z1t(t){let e;if(t.keyVal.startsWith(J7))e=s1.default.createPublicKey(t.keyVal);else{if(!YPe(t.keyVal))throw new RP.CryptoError("Invalid key format");e=s1.default.createPublicKey({key:$1t.hexToDER(t.keyVal),format:"der",type:"spki"})}return{key:e}}function X1t(t){let e;if(t.keyVal.startsWith(J7))e=s1.default.createPublicKey(t.keyVal);else{if(!YPe(t.keyVal))throw new RP.CryptoError("Invalid key format");e=s1.default.createPublicKey({key:e2t.hexToDER(t.keyVal),format:"der",type:"spki"})}return{key:e}}var $1t={hexToDER:t=>{let e=Buffer.from(t,"hex"),r=(0,V7.encodeOIDString)(Y1t),s=Buffer.concat([Buffer.concat([Buffer.from([TO]),Buffer.from([r.length]),r]),Buffer.concat([Buffer.from([qPe]),Buffer.from([e.length+1]),Buffer.from([WPe]),e])]);return Buffer.concat([Buffer.from([TO]),Buffer.from([s.length]),s])}},e2t={hexToDER:t=>{let e=Buffer.from(t,"hex"),r=Buffer.concat([Buffer.from([qPe]),Buffer.from([e.length+1]),Buffer.from([WPe]),e]),s=Buffer.concat([(0,V7.encodeOIDString)(V1t),(0,V7.encodeOIDString)(J1t)]),a=Buffer.concat([Buffer.from([TO]),Buffer.from([s.length]),s]);return Buffer.concat([Buffer.from([TO]),Buffer.from([a.length+r.length]),a,r])}},YPe=t=>/^[0-9a-fA-F]+$/.test(t)});var FO=_(o1=>{"use strict";var t2t=o1&&o1.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(o1,"__esModule",{value:!0});o1.Key=void 0;var JPe=t2t(Ie("util")),FP=bA(),KPe=ff(),r2t=VPe(),K7=class t{constructor(e){let{keyID:r,keyType:s,scheme:a,keyVal:n,unrecognizedFields:c}=e;this.keyID=r,this.keyType=s,this.scheme=a,this.keyVal=n,this.unrecognizedFields=c||{}}verifySignature(e){let r=e.signatures[this.keyID];if(!r)throw new FP.UnsignedMetadataError("no signature for key found in metadata");if(!this.keyVal.public)throw new FP.UnsignedMetadataError("no public key found");let s=(0,r2t.getPublicKey)({keyType:this.keyType,scheme:this.scheme,keyVal:this.keyVal.public}),a=e.signed.toJSON();try{if(!KPe.crypto.verifySignature(a,s,r.sig))throw new FP.UnsignedMetadataError(`failed to verify ${this.keyID} signature`)}catch(n){throw n instanceof FP.UnsignedMetadataError?n:new FP.UnsignedMetadataError(`failed to verify ${this.keyID} signature`)}}equals(e){return e instanceof t?this.keyID===e.keyID&&this.keyType===e.keyType&&this.scheme===e.scheme&&JPe.default.isDeepStrictEqual(this.keyVal,e.keyVal)&&JPe.default.isDeepStrictEqual(this.unrecognizedFields,e.unrecognizedFields):!1}toJSON(){return{keytype:this.keyType,scheme:this.scheme,keyval:this.keyVal,...this.unrecognizedFields}}static fromJSON(e,r){let{keytype:s,scheme:a,keyval:n,...c}=r;if(typeof s!="string")throw new TypeError("keytype must be a string");if(typeof a!="string")throw new TypeError("scheme must be a string");if(!KPe.guard.isStringRecord(n))throw new TypeError("keyval must be a string record");return new t({keyID:e,keyType:s,scheme:a,keyVal:n,unrecognizedFields:c})}};o1.Key=K7});var ebe=_((jnr,$Pe)=>{"use strict";$Pe.exports=ZPe;function ZPe(t,e,r){t instanceof RegExp&&(t=zPe(t,r)),e instanceof RegExp&&(e=zPe(e,r));var s=XPe(t,e,r);return s&&{start:s[0],end:s[1],pre:r.slice(0,s[0]),body:r.slice(s[0]+t.length,s[1]),post:r.slice(s[1]+e.length)}}function zPe(t,e){var r=e.match(t);return r?r[0]:null}ZPe.range=XPe;function XPe(t,e,r){var s,a,n,c,f,p=r.indexOf(t),h=r.indexOf(e,p+1),E=p;if(p>=0&&h>0){for(s=[],n=r.length;E>=0&&!f;)E==p?(s.push(E),p=r.indexOf(t,E+1)):s.length==1?f=[s.pop(),h]:(a=s.pop(),a=0?p:h;s.length&&(f=[n,c])}return f}});var lbe=_((Gnr,abe)=>{var tbe=ebe();abe.exports=s2t;var rbe="\0SLASH"+Math.random()+"\0",nbe="\0OPEN"+Math.random()+"\0",Z7="\0CLOSE"+Math.random()+"\0",ibe="\0COMMA"+Math.random()+"\0",sbe="\0PERIOD"+Math.random()+"\0";function z7(t){return parseInt(t,10)==t?parseInt(t,10):t.charCodeAt(0)}function n2t(t){return t.split("\\\\").join(rbe).split("\\{").join(nbe).split("\\}").join(Z7).split("\\,").join(ibe).split("\\.").join(sbe)}function i2t(t){return t.split(rbe).join("\\").split(nbe).join("{").split(Z7).join("}").split(ibe).join(",").split(sbe).join(".")}function obe(t){if(!t)return[""];var e=[],r=tbe("{","}",t);if(!r)return t.split(",");var s=r.pre,a=r.body,n=r.post,c=s.split(",");c[c.length-1]+="{"+a+"}";var f=obe(n);return n.length&&(c[c.length-1]+=f.shift(),c.push.apply(c,f)),e.push.apply(e,c),e}function s2t(t){return t?(t.substr(0,2)==="{}"&&(t="\\{\\}"+t.substr(2)),NP(n2t(t),!0).map(i2t)):[]}function o2t(t){return"{"+t+"}"}function a2t(t){return/^-?0\d/.test(t)}function l2t(t,e){return t<=e}function c2t(t,e){return t>=e}function NP(t,e){var r=[],s=tbe("{","}",t);if(!s)return[t];var a=s.pre,n=s.post.length?NP(s.post,!1):[""];if(/\$$/.test(s.pre))for(var c=0;c=0;if(!E&&!C)return s.post.match(/,.*\}/)?(t=s.pre+"{"+s.body+Z7+s.post,NP(t)):[t];var S;if(E)S=s.body.split(/\.\./);else if(S=obe(s.body),S.length===1&&(S=NP(S[0],!1).map(o2t),S.length===1))return n.map(function(Ce){return s.pre+S[0]+Ce});var b;if(E){var I=z7(S[0]),T=z7(S[1]),N=Math.max(S[0].length,S[1].length),U=S.length==3?Math.abs(z7(S[2])):1,W=l2t,ee=T0){var pe=new Array(me+1).join("0");ue<0?le="-"+pe+le.slice(1):le=pe+le}}b.push(le)}}else{b=[];for(var Be=0;Be{"use strict";Object.defineProperty(NO,"__esModule",{value:!0});NO.assertValidPattern=void 0;var u2t=1024*64,f2t=t=>{if(typeof t!="string")throw new TypeError("invalid pattern");if(t.length>u2t)throw new TypeError("pattern is too long")};NO.assertValidPattern=f2t});var fbe=_(OO=>{"use strict";Object.defineProperty(OO,"__esModule",{value:!0});OO.parseClass=void 0;var A2t={"[:alnum:]":["\\p{L}\\p{Nl}\\p{Nd}",!0],"[:alpha:]":["\\p{L}\\p{Nl}",!0],"[:ascii:]":["\\x00-\\x7f",!1],"[:blank:]":["\\p{Zs}\\t",!0],"[:cntrl:]":["\\p{Cc}",!0],"[:digit:]":["\\p{Nd}",!0],"[:graph:]":["\\p{Z}\\p{C}",!0,!0],"[:lower:]":["\\p{Ll}",!0],"[:print:]":["\\p{C}",!0],"[:punct:]":["\\p{P}",!0],"[:space:]":["\\p{Z}\\t\\r\\n\\v\\f",!0],"[:upper:]":["\\p{Lu}",!0],"[:word:]":["\\p{L}\\p{Nl}\\p{Nd}\\p{Pc}",!0],"[:xdigit:]":["A-Fa-f0-9",!1]},OP=t=>t.replace(/[[\]\\-]/g,"\\$&"),p2t=t=>t.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&"),ube=t=>t.join(""),h2t=(t,e)=>{let r=e;if(t.charAt(r)!=="[")throw new Error("not in a brace expression");let s=[],a=[],n=r+1,c=!1,f=!1,p=!1,h=!1,E=r,C="";e:for(;nC?s.push(OP(C)+"-"+OP(T)):T===C&&s.push(OP(T)),C="",n++;continue}if(t.startsWith("-]",n+1)){s.push(OP(T+"-")),n+=2;continue}if(t.startsWith("-",n+1)){C=T,n+=2;continue}s.push(OP(T)),n++}if(E{"use strict";Object.defineProperty(LO,"__esModule",{value:!0});LO.unescape=void 0;var g2t=(t,{windowsPathsNoEscape:e=!1}={})=>e?t.replace(/\[([^\/\\])\]/g,"$1"):t.replace(/((?!\\).|^)\[([^\/\\])\]/g,"$1$2").replace(/\\([^\/])/g,"$1");LO.unescape=g2t});var eJ=_(HO=>{"use strict";Object.defineProperty(HO,"__esModule",{value:!0});HO.AST=void 0;var d2t=fbe(),UO=MO(),m2t=new Set(["!","?","+","*","@"]),Abe=t=>m2t.has(t),y2t="(?!(?:^|/)\\.\\.?(?:$|/))",_O="(?!\\.)",E2t=new Set(["[","."]),I2t=new Set(["..","."]),C2t=new Set("().*{}+?[]^$\\!"),w2t=t=>t.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&"),$7="[^/]",pbe=$7+"*?",hbe=$7+"+?",X7=class t{type;#t;#r;#i=!1;#e=[];#n;#o;#l;#a=!1;#s;#c;#f=!1;constructor(e,r,s={}){this.type=e,e&&(this.#r=!0),this.#n=r,this.#t=this.#n?this.#n.#t:this,this.#s=this.#t===this?s:this.#t.#s,this.#l=this.#t===this?[]:this.#t.#l,e==="!"&&!this.#t.#a&&this.#l.push(this),this.#o=this.#n?this.#n.#e.length:0}get hasMagic(){if(this.#r!==void 0)return this.#r;for(let e of this.#e)if(typeof e!="string"&&(e.type||e.hasMagic))return this.#r=!0;return this.#r}toString(){return this.#c!==void 0?this.#c:this.type?this.#c=this.type+"("+this.#e.map(e=>String(e)).join("|")+")":this.#c=this.#e.map(e=>String(e)).join("")}#p(){if(this!==this.#t)throw new Error("should only call on root");if(this.#a)return this;this.toString(),this.#a=!0;let e;for(;e=this.#l.pop();){if(e.type!=="!")continue;let r=e,s=r.#n;for(;s;){for(let a=r.#o+1;!s.type&&atypeof r=="string"?r:r.toJSON()):[this.type,...this.#e.map(r=>r.toJSON())];return this.isStart()&&!this.type&&e.unshift([]),this.isEnd()&&(this===this.#t||this.#t.#a&&this.#n?.type==="!")&&e.push({}),e}isStart(){if(this.#t===this)return!0;if(!this.#n?.isStart())return!1;if(this.#o===0)return!0;let e=this.#n;for(let r=0;r{let[I,T,N,U]=typeof b=="string"?t.#h(b,this.#r,p):b.toRegExpSource(e);return this.#r=this.#r||N,this.#i=this.#i||U,I}).join(""),E="";if(this.isStart()&&typeof this.#e[0]=="string"&&!(this.#e.length===1&&I2t.has(this.#e[0]))){let I=E2t,T=r&&I.has(h.charAt(0))||h.startsWith("\\.")&&I.has(h.charAt(2))||h.startsWith("\\.\\.")&&I.has(h.charAt(4)),N=!r&&!e&&I.has(h.charAt(0));E=T?y2t:N?_O:""}let C="";return this.isEnd()&&this.#t.#a&&this.#n?.type==="!"&&(C="(?:$|\\/)"),[E+h+C,(0,UO.unescape)(h),this.#r=!!this.#r,this.#i]}let s=this.type==="*"||this.type==="+",a=this.type==="!"?"(?:(?!(?:":"(?:",n=this.#A(r);if(this.isStart()&&this.isEnd()&&!n&&this.type!=="!"){let p=this.toString();return this.#e=[p],this.type=null,this.#r=void 0,[p,(0,UO.unescape)(this.toString()),!1,!1]}let c=!s||e||r||!_O?"":this.#A(!0);c===n&&(c=""),c&&(n=`(?:${n})(?:${c})*?`);let f="";if(this.type==="!"&&this.#f)f=(this.isStart()&&!r?_O:"")+hbe;else{let p=this.type==="!"?"))"+(this.isStart()&&!r&&!e?_O:"")+pbe+")":this.type==="@"?")":this.type==="?"?")?":this.type==="+"&&c?")":this.type==="*"&&c?")?":`)${this.type}`;f=a+n+p}return[f,(0,UO.unescape)(n),this.#r=!!this.#r,this.#i]}#A(e){return this.#e.map(r=>{if(typeof r=="string")throw new Error("string type in extglob ast??");let[s,a,n,c]=r.toRegExpSource(e);return this.#i=this.#i||c,s}).filter(r=>!(this.isStart()&&this.isEnd())||!!r).join("|")}static#h(e,r,s=!1){let a=!1,n="",c=!1;for(let f=0;f{"use strict";Object.defineProperty(jO,"__esModule",{value:!0});jO.escape=void 0;var B2t=(t,{windowsPathsNoEscape:e=!1}={})=>e?t.replace(/[?*()[\]]/g,"[$&]"):t.replace(/[?*()[\]\\]/g,"\\$&");jO.escape=B2t});var Cbe=_(pr=>{"use strict";var v2t=pr&&pr.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(pr,"__esModule",{value:!0});pr.unescape=pr.escape=pr.AST=pr.Minimatch=pr.match=pr.makeRe=pr.braceExpand=pr.defaults=pr.filter=pr.GLOBSTAR=pr.sep=pr.minimatch=void 0;var S2t=v2t(lbe()),GO=cbe(),mbe=eJ(),D2t=tJ(),P2t=MO(),b2t=(t,e,r={})=>((0,GO.assertValidPattern)(e),!r.nocomment&&e.charAt(0)==="#"?!1:new ly(e,r).match(t));pr.minimatch=b2t;var x2t=/^\*+([^+@!?\*\[\(]*)$/,k2t=t=>e=>!e.startsWith(".")&&e.endsWith(t),Q2t=t=>e=>e.endsWith(t),R2t=t=>(t=t.toLowerCase(),e=>!e.startsWith(".")&&e.toLowerCase().endsWith(t)),T2t=t=>(t=t.toLowerCase(),e=>e.toLowerCase().endsWith(t)),F2t=/^\*+\.\*+$/,N2t=t=>!t.startsWith(".")&&t.includes("."),O2t=t=>t!=="."&&t!==".."&&t.includes("."),L2t=/^\.\*+$/,M2t=t=>t!=="."&&t!==".."&&t.startsWith("."),U2t=/^\*+$/,_2t=t=>t.length!==0&&!t.startsWith("."),H2t=t=>t.length!==0&&t!=="."&&t!=="..",j2t=/^\?+([^+@!?\*\[\(]*)?$/,G2t=([t,e=""])=>{let r=ybe([t]);return e?(e=e.toLowerCase(),s=>r(s)&&s.toLowerCase().endsWith(e)):r},q2t=([t,e=""])=>{let r=Ebe([t]);return e?(e=e.toLowerCase(),s=>r(s)&&s.toLowerCase().endsWith(e)):r},W2t=([t,e=""])=>{let r=Ebe([t]);return e?s=>r(s)&&s.endsWith(e):r},Y2t=([t,e=""])=>{let r=ybe([t]);return e?s=>r(s)&&s.endsWith(e):r},ybe=([t])=>{let e=t.length;return r=>r.length===e&&!r.startsWith(".")},Ebe=([t])=>{let e=t.length;return r=>r.length===e&&r!=="."&&r!==".."},Ibe=typeof process=="object"&&process?typeof process.env=="object"&&process.env&&process.env.__MINIMATCH_TESTING_PLATFORM__||process.platform:"posix",gbe={win32:{sep:"\\"},posix:{sep:"/"}};pr.sep=Ibe==="win32"?gbe.win32.sep:gbe.posix.sep;pr.minimatch.sep=pr.sep;pr.GLOBSTAR=Symbol("globstar **");pr.minimatch.GLOBSTAR=pr.GLOBSTAR;var V2t="[^/]",J2t=V2t+"*?",K2t="(?:(?!(?:\\/|^)(?:\\.{1,2})($|\\/)).)*?",z2t="(?:(?!(?:\\/|^)\\.).)*?",Z2t=(t,e={})=>r=>(0,pr.minimatch)(r,t,e);pr.filter=Z2t;pr.minimatch.filter=pr.filter;var tu=(t,e={})=>Object.assign({},t,e),X2t=t=>{if(!t||typeof t!="object"||!Object.keys(t).length)return pr.minimatch;let e=pr.minimatch;return Object.assign((s,a,n={})=>e(s,a,tu(t,n)),{Minimatch:class extends e.Minimatch{constructor(a,n={}){super(a,tu(t,n))}static defaults(a){return e.defaults(tu(t,a)).Minimatch}},AST:class extends e.AST{constructor(a,n,c={}){super(a,n,tu(t,c))}static fromGlob(a,n={}){return e.AST.fromGlob(a,tu(t,n))}},unescape:(s,a={})=>e.unescape(s,tu(t,a)),escape:(s,a={})=>e.escape(s,tu(t,a)),filter:(s,a={})=>e.filter(s,tu(t,a)),defaults:s=>e.defaults(tu(t,s)),makeRe:(s,a={})=>e.makeRe(s,tu(t,a)),braceExpand:(s,a={})=>e.braceExpand(s,tu(t,a)),match:(s,a,n={})=>e.match(s,a,tu(t,n)),sep:e.sep,GLOBSTAR:pr.GLOBSTAR})};pr.defaults=X2t;pr.minimatch.defaults=pr.defaults;var $2t=(t,e={})=>((0,GO.assertValidPattern)(t),e.nobrace||!/\{(?:(?!\{).)*\}/.test(t)?[t]:(0,S2t.default)(t));pr.braceExpand=$2t;pr.minimatch.braceExpand=pr.braceExpand;var eBt=(t,e={})=>new ly(t,e).makeRe();pr.makeRe=eBt;pr.minimatch.makeRe=pr.makeRe;var tBt=(t,e,r={})=>{let s=new ly(e,r);return t=t.filter(a=>s.match(a)),s.options.nonull&&!t.length&&t.push(e),t};pr.match=tBt;pr.minimatch.match=pr.match;var dbe=/[?*]|[+@!]\(.*?\)|\[|\]/,rBt=t=>t.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&"),ly=class{options;set;pattern;windowsPathsNoEscape;nonegate;negate;comment;empty;preserveMultipleSlashes;partial;globSet;globParts;nocase;isWindows;platform;windowsNoMagicRoot;regexp;constructor(e,r={}){(0,GO.assertValidPattern)(e),r=r||{},this.options=r,this.pattern=e,this.platform=r.platform||Ibe,this.isWindows=this.platform==="win32",this.windowsPathsNoEscape=!!r.windowsPathsNoEscape||r.allowWindowsEscape===!1,this.windowsPathsNoEscape&&(this.pattern=this.pattern.replace(/\\/g,"/")),this.preserveMultipleSlashes=!!r.preserveMultipleSlashes,this.regexp=null,this.negate=!1,this.nonegate=!!r.nonegate,this.comment=!1,this.empty=!1,this.partial=!!r.partial,this.nocase=!!this.options.nocase,this.windowsNoMagicRoot=r.windowsNoMagicRoot!==void 0?r.windowsNoMagicRoot:!!(this.isWindows&&this.nocase),this.globSet=[],this.globParts=[],this.set=[],this.make()}hasMagic(){if(this.options.magicalBraces&&this.set.length>1)return!0;for(let e of this.set)for(let r of e)if(typeof r!="string")return!0;return!1}debug(...e){}make(){let e=this.pattern,r=this.options;if(!r.nocomment&&e.charAt(0)==="#"){this.comment=!0;return}if(!e){this.empty=!0;return}this.parseNegate(),this.globSet=[...new Set(this.braceExpand())],r.debug&&(this.debug=(...n)=>console.error(...n)),this.debug(this.pattern,this.globSet);let s=this.globSet.map(n=>this.slashSplit(n));this.globParts=this.preprocess(s),this.debug(this.pattern,this.globParts);let a=this.globParts.map((n,c,f)=>{if(this.isWindows&&this.windowsNoMagicRoot){let p=n[0]===""&&n[1]===""&&(n[2]==="?"||!dbe.test(n[2]))&&!dbe.test(n[3]),h=/^[a-z]:/i.test(n[0]);if(p)return[...n.slice(0,4),...n.slice(4).map(E=>this.parse(E))];if(h)return[n[0],...n.slice(1).map(E=>this.parse(E))]}return n.map(p=>this.parse(p))});if(this.debug(this.pattern,a),this.set=a.filter(n=>n.indexOf(!1)===-1),this.isWindows)for(let n=0;n=2?(e=this.firstPhasePreProcess(e),e=this.secondPhasePreProcess(e)):r>=1?e=this.levelOneOptimize(e):e=this.adjascentGlobstarOptimize(e),e}adjascentGlobstarOptimize(e){return e.map(r=>{let s=-1;for(;(s=r.indexOf("**",s+1))!==-1;){let a=s;for(;r[a+1]==="**";)a++;a!==s&&r.splice(s,a-s)}return r})}levelOneOptimize(e){return e.map(r=>(r=r.reduce((s,a)=>{let n=s[s.length-1];return a==="**"&&n==="**"?s:a===".."&&n&&n!==".."&&n!=="."&&n!=="**"?(s.pop(),s):(s.push(a),s)},[]),r.length===0?[""]:r))}levelTwoFileOptimize(e){Array.isArray(e)||(e=this.slashSplit(e));let r=!1;do{if(r=!1,!this.preserveMultipleSlashes){for(let a=1;aa&&s.splice(a+1,c-a);let f=s[a+1],p=s[a+2],h=s[a+3];if(f!==".."||!p||p==="."||p===".."||!h||h==="."||h==="..")continue;r=!0,s.splice(a,1);let E=s.slice(0);E[a]="**",e.push(E),a--}if(!this.preserveMultipleSlashes){for(let c=1;cr.length)}partsMatch(e,r,s=!1){let a=0,n=0,c=[],f="";for(;aee?r=r.slice(ie):ee>ie&&(e=e.slice(ee)))}}let{optimizationLevel:n=1}=this.options;n>=2&&(e=this.levelTwoFileOptimize(e)),this.debug("matchOne",this,{file:e,pattern:r}),this.debug("matchOne",e.length,r.length);for(var c=0,f=0,p=e.length,h=r.length;c>> no match, partial?`,e,S,r,b),S===p))}let T;if(typeof E=="string"?(T=C===E,this.debug("string match",E,C,T)):(T=E.test(C),this.debug("pattern match",E,C,T)),!T)return!1}if(c===p&&f===h)return!0;if(c===p)return s;if(f===h)return c===p-1&&e[c]==="";throw new Error("wtf?")}braceExpand(){return(0,pr.braceExpand)(this.pattern,this.options)}parse(e){(0,GO.assertValidPattern)(e);let r=this.options;if(e==="**")return pr.GLOBSTAR;if(e==="")return"";let s,a=null;(s=e.match(U2t))?a=r.dot?H2t:_2t:(s=e.match(x2t))?a=(r.nocase?r.dot?T2t:R2t:r.dot?Q2t:k2t)(s[1]):(s=e.match(j2t))?a=(r.nocase?r.dot?q2t:G2t:r.dot?W2t:Y2t)(s):(s=e.match(F2t))?a=r.dot?O2t:N2t:(s=e.match(L2t))&&(a=M2t);let n=mbe.AST.fromGlob(e,this.options).toMMPattern();return a&&typeof n=="object"&&Reflect.defineProperty(n,"test",{value:a}),n}makeRe(){if(this.regexp||this.regexp===!1)return this.regexp;let e=this.set;if(!e.length)return this.regexp=!1,this.regexp;let r=this.options,s=r.noglobstar?J2t:r.dot?K2t:z2t,a=new Set(r.nocase?["i"]:[]),n=e.map(p=>{let h=p.map(E=>{if(E instanceof RegExp)for(let C of E.flags.split(""))a.add(C);return typeof E=="string"?rBt(E):E===pr.GLOBSTAR?pr.GLOBSTAR:E._src});return h.forEach((E,C)=>{let S=h[C+1],b=h[C-1];E!==pr.GLOBSTAR||b===pr.GLOBSTAR||(b===void 0?S!==void 0&&S!==pr.GLOBSTAR?h[C+1]="(?:\\/|"+s+"\\/)?"+S:h[C]=s:S===void 0?h[C-1]=b+"(?:\\/|"+s+")?":S!==pr.GLOBSTAR&&(h[C-1]=b+"(?:\\/|\\/"+s+"\\/)"+S,h[C+1]=pr.GLOBSTAR))}),h.filter(E=>E!==pr.GLOBSTAR).join("/")}).join("|"),[c,f]=e.length>1?["(?:",")"]:["",""];n="^"+c+n+f+"$",this.negate&&(n="^(?!"+n+").+$");try{this.regexp=new RegExp(n,[...a].join(""))}catch{this.regexp=!1}return this.regexp}slashSplit(e){return this.preserveMultipleSlashes?e.split("/"):this.isWindows&&/^\/\/[^\/]+/.test(e)?["",...e.split(/\/+/)]:e.split(/\/+/)}match(e,r=this.partial){if(this.debug("match",e,this.pattern),this.comment)return!1;if(this.empty)return e==="";if(e==="/"&&r)return!0;let s=this.options;this.isWindows&&(e=e.split("\\").join("/"));let a=this.slashSplit(e);this.debug(this.pattern,"split",a);let n=this.set;this.debug(this.pattern,"set",n);let c=a[a.length-1];if(!c)for(let f=a.length-2;!c&&f>=0;f--)c=a[f];for(let f=0;f{"use strict";var wbe=ru&&ru.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(ru,"__esModule",{value:!0});ru.SuccinctRoles=ru.DelegatedRole=ru.Role=ru.TOP_LEVEL_ROLE_NAMES=void 0;var Bbe=wbe(Ie("crypto")),oBt=Cbe(),qO=wbe(Ie("util")),WO=bA(),cy=ff();ru.TOP_LEVEL_ROLE_NAMES=["root","targets","snapshot","timestamp"];var LP=class t{constructor(e){let{keyIDs:r,threshold:s,unrecognizedFields:a}=e;if(aBt(r))throw new WO.ValueError("duplicate key IDs found");if(s<1)throw new WO.ValueError("threshold must be at least 1");this.keyIDs=r,this.threshold=s,this.unrecognizedFields=a||{}}equals(e){return e instanceof t?this.threshold===e.threshold&&qO.default.isDeepStrictEqual(this.keyIDs,e.keyIDs)&&qO.default.isDeepStrictEqual(this.unrecognizedFields,e.unrecognizedFields):!1}toJSON(){return{keyids:this.keyIDs,threshold:this.threshold,...this.unrecognizedFields}}static fromJSON(e){let{keyids:r,threshold:s,...a}=e;if(!cy.guard.isStringArray(r))throw new TypeError("keyids must be an array");if(typeof s!="number")throw new TypeError("threshold must be a number");return new t({keyIDs:r,threshold:s,unrecognizedFields:a})}};ru.Role=LP;function aBt(t){return new Set(t).size!==t.length}var rJ=class t extends LP{constructor(e){super(e);let{name:r,terminating:s,paths:a,pathHashPrefixes:n}=e;if(this.name=r,this.terminating=s,e.paths&&e.pathHashPrefixes)throw new WO.ValueError("paths and pathHashPrefixes are mutually exclusive");this.paths=a,this.pathHashPrefixes=n}equals(e){return e instanceof t?super.equals(e)&&this.name===e.name&&this.terminating===e.terminating&&qO.default.isDeepStrictEqual(this.paths,e.paths)&&qO.default.isDeepStrictEqual(this.pathHashPrefixes,e.pathHashPrefixes):!1}isDelegatedPath(e){if(this.paths)return this.paths.some(r=>cBt(e,r));if(this.pathHashPrefixes){let s=Bbe.default.createHash("sha256").update(e).digest("hex");return this.pathHashPrefixes.some(a=>s.startsWith(a))}return!1}toJSON(){let e={...super.toJSON(),name:this.name,terminating:this.terminating};return this.paths&&(e.paths=this.paths),this.pathHashPrefixes&&(e.path_hash_prefixes=this.pathHashPrefixes),e}static fromJSON(e){let{keyids:r,threshold:s,name:a,terminating:n,paths:c,path_hash_prefixes:f,...p}=e;if(!cy.guard.isStringArray(r))throw new TypeError("keyids must be an array of strings");if(typeof s!="number")throw new TypeError("threshold must be a number");if(typeof a!="string")throw new TypeError("name must be a string");if(typeof n!="boolean")throw new TypeError("terminating must be a boolean");if(cy.guard.isDefined(c)&&!cy.guard.isStringArray(c))throw new TypeError("paths must be an array of strings");if(cy.guard.isDefined(f)&&!cy.guard.isStringArray(f))throw new TypeError("path_hash_prefixes must be an array of strings");return new t({keyIDs:r,threshold:s,name:a,terminating:n,paths:c,pathHashPrefixes:f,unrecognizedFields:p})}};ru.DelegatedRole=rJ;var lBt=(t,e)=>t.map((r,s)=>[r,e[s]]);function cBt(t,e){let r=t.split("/"),s=e.split("/");return s.length!=r.length?!1:lBt(r,s).every(([a,n])=>(0,oBt.minimatch)(a,n))}var nJ=class t extends LP{constructor(e){super(e);let{bitLength:r,namePrefix:s}=e;if(r<=0||r>32)throw new WO.ValueError("bitLength must be between 1 and 32");this.bitLength=r,this.namePrefix=s,this.numberOfBins=Math.pow(2,r),this.suffixLen=(this.numberOfBins-1).toString(16).length}equals(e){return e instanceof t?super.equals(e)&&this.bitLength===e.bitLength&&this.namePrefix===e.namePrefix:!1}getRoleForTarget(e){let a=Bbe.default.createHash("sha256").update(e).digest().subarray(0,4),n=32-this.bitLength,f=(a.readUInt32BE()>>>n).toString(16).padStart(this.suffixLen,"0");return`${this.namePrefix}-${f}`}*getRoles(){for(let e=0;e{"use strict";var uBt=a1&&a1.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(a1,"__esModule",{value:!0});a1.Root=void 0;var vbe=uBt(Ie("util")),sJ=ay(),Sbe=bA(),fBt=FO(),YO=iJ(),VO=ff(),oJ=class t extends sJ.Signed{constructor(e){if(super(e),this.type=sJ.MetadataKind.Root,this.keys=e.keys||{},this.consistentSnapshot=e.consistentSnapshot??!0,!e.roles)this.roles=YO.TOP_LEVEL_ROLE_NAMES.reduce((r,s)=>({...r,[s]:new YO.Role({keyIDs:[],threshold:1})}),{});else{let r=new Set(Object.keys(e.roles));if(!YO.TOP_LEVEL_ROLE_NAMES.every(s=>r.has(s)))throw new Sbe.ValueError("missing top-level role");this.roles=e.roles}}addKey(e,r){if(!this.roles[r])throw new Sbe.ValueError(`role ${r} does not exist`);this.roles[r].keyIDs.includes(e.keyID)||this.roles[r].keyIDs.push(e.keyID),this.keys[e.keyID]=e}equals(e){return e instanceof t?super.equals(e)&&this.consistentSnapshot===e.consistentSnapshot&&vbe.default.isDeepStrictEqual(this.keys,e.keys)&&vbe.default.isDeepStrictEqual(this.roles,e.roles):!1}toJSON(){return{_type:this.type,spec_version:this.specVersion,version:this.version,expires:this.expires,keys:ABt(this.keys),roles:pBt(this.roles),consistent_snapshot:this.consistentSnapshot,...this.unrecognizedFields}}static fromJSON(e){let{unrecognizedFields:r,...s}=sJ.Signed.commonFieldsFromJSON(e),{keys:a,roles:n,consistent_snapshot:c,...f}=r;if(typeof c!="boolean")throw new TypeError("consistent_snapshot must be a boolean");return new t({...s,keys:hBt(a),roles:gBt(n),consistentSnapshot:c,unrecognizedFields:f})}};a1.Root=oJ;function ABt(t){return Object.entries(t).reduce((e,[r,s])=>({...e,[r]:s.toJSON()}),{})}function pBt(t){return Object.entries(t).reduce((e,[r,s])=>({...e,[r]:s.toJSON()}),{})}function hBt(t){let e;if(VO.guard.isDefined(t)){if(!VO.guard.isObjectRecord(t))throw new TypeError("keys must be an object");e=Object.entries(t).reduce((r,[s,a])=>({...r,[s]:fBt.Key.fromJSON(s,a)}),{})}return e}function gBt(t){let e;if(VO.guard.isDefined(t)){if(!VO.guard.isObjectRecord(t))throw new TypeError("roles must be an object");e=Object.entries(t).reduce((r,[s,a])=>({...r,[s]:YO.Role.fromJSON(a)}),{})}return e}});var cJ=_(JO=>{"use strict";Object.defineProperty(JO,"__esModule",{value:!0});JO.Signature=void 0;var lJ=class t{constructor(e){let{keyID:r,sig:s}=e;this.keyID=r,this.sig=s}toJSON(){return{keyid:this.keyID,sig:this.sig}}static fromJSON(e){let{keyid:r,sig:s}=e;if(typeof r!="string")throw new TypeError("keyid must be a string");if(typeof s!="string")throw new TypeError("sig must be a string");return new t({keyID:r,sig:s})}};JO.Signature=lJ});var AJ=_(l1=>{"use strict";var dBt=l1&&l1.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(l1,"__esModule",{value:!0});l1.Snapshot=void 0;var mBt=dBt(Ie("util")),uJ=ay(),Pbe=QP(),Dbe=ff(),fJ=class t extends uJ.Signed{constructor(e){super(e),this.type=uJ.MetadataKind.Snapshot,this.meta=e.meta||{"targets.json":new Pbe.MetaFile({version:1})}}equals(e){return e instanceof t?super.equals(e)&&mBt.default.isDeepStrictEqual(this.meta,e.meta):!1}toJSON(){return{_type:this.type,meta:yBt(this.meta),spec_version:this.specVersion,version:this.version,expires:this.expires,...this.unrecognizedFields}}static fromJSON(e){let{unrecognizedFields:r,...s}=uJ.Signed.commonFieldsFromJSON(e),{meta:a,...n}=r;return new t({...s,meta:EBt(a),unrecognizedFields:n})}};l1.Snapshot=fJ;function yBt(t){return Object.entries(t).reduce((e,[r,s])=>({...e,[r]:s.toJSON()}),{})}function EBt(t){let e;if(Dbe.guard.isDefined(t))if(Dbe.guard.isObjectRecord(t))e=Object.entries(t).reduce((r,[s,a])=>({...r,[s]:Pbe.MetaFile.fromJSON(a)}),{});else throw new TypeError("meta field is malformed");return e}});var bbe=_(c1=>{"use strict";var IBt=c1&&c1.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(c1,"__esModule",{value:!0});c1.Delegations=void 0;var KO=IBt(Ie("util")),CBt=bA(),wBt=FO(),pJ=iJ(),zO=ff(),hJ=class t{constructor(e){if(this.keys=e.keys,this.unrecognizedFields=e.unrecognizedFields||{},e.roles&&Object.keys(e.roles).some(r=>pJ.TOP_LEVEL_ROLE_NAMES.includes(r)))throw new CBt.ValueError("Delegated role name conflicts with top-level role name");this.succinctRoles=e.succinctRoles,this.roles=e.roles}equals(e){return e instanceof t?KO.default.isDeepStrictEqual(this.keys,e.keys)&&KO.default.isDeepStrictEqual(this.roles,e.roles)&&KO.default.isDeepStrictEqual(this.unrecognizedFields,e.unrecognizedFields)&&KO.default.isDeepStrictEqual(this.succinctRoles,e.succinctRoles):!1}*rolesForTarget(e){if(this.roles)for(let r of Object.values(this.roles))r.isDelegatedPath(e)&&(yield{role:r.name,terminating:r.terminating});else this.succinctRoles&&(yield{role:this.succinctRoles.getRoleForTarget(e),terminating:!0})}toJSON(){let e={keys:BBt(this.keys),...this.unrecognizedFields};return this.roles?e.roles=vBt(this.roles):this.succinctRoles&&(e.succinct_roles=this.succinctRoles.toJSON()),e}static fromJSON(e){let{keys:r,roles:s,succinct_roles:a,...n}=e,c;return zO.guard.isObject(a)&&(c=pJ.SuccinctRoles.fromJSON(a)),new t({keys:SBt(r),roles:DBt(s),unrecognizedFields:n,succinctRoles:c})}};c1.Delegations=hJ;function BBt(t){return Object.entries(t).reduce((e,[r,s])=>({...e,[r]:s.toJSON()}),{})}function vBt(t){return Object.values(t).map(e=>e.toJSON())}function SBt(t){if(!zO.guard.isObjectRecord(t))throw new TypeError("keys is malformed");return Object.entries(t).reduce((e,[r,s])=>({...e,[r]:wBt.Key.fromJSON(r,s)}),{})}function DBt(t){let e;if(zO.guard.isDefined(t)){if(!zO.guard.isObjectArray(t))throw new TypeError("roles is malformed");e=t.reduce((r,s)=>{let a=pJ.DelegatedRole.fromJSON(s);return{...r,[a.name]:a}},{})}return e}});var mJ=_(u1=>{"use strict";var PBt=u1&&u1.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(u1,"__esModule",{value:!0});u1.Targets=void 0;var xbe=PBt(Ie("util")),gJ=ay(),bBt=bbe(),xBt=QP(),ZO=ff(),dJ=class t extends gJ.Signed{constructor(e){super(e),this.type=gJ.MetadataKind.Targets,this.targets=e.targets||{},this.delegations=e.delegations}addTarget(e){this.targets[e.path]=e}equals(e){return e instanceof t?super.equals(e)&&xbe.default.isDeepStrictEqual(this.targets,e.targets)&&xbe.default.isDeepStrictEqual(this.delegations,e.delegations):!1}toJSON(){let e={_type:this.type,spec_version:this.specVersion,version:this.version,expires:this.expires,targets:kBt(this.targets),...this.unrecognizedFields};return this.delegations&&(e.delegations=this.delegations.toJSON()),e}static fromJSON(e){let{unrecognizedFields:r,...s}=gJ.Signed.commonFieldsFromJSON(e),{targets:a,delegations:n,...c}=r;return new t({...s,targets:QBt(a),delegations:RBt(n),unrecognizedFields:c})}};u1.Targets=dJ;function kBt(t){return Object.entries(t).reduce((e,[r,s])=>({...e,[r]:s.toJSON()}),{})}function QBt(t){let e;if(ZO.guard.isDefined(t))if(ZO.guard.isObjectRecord(t))e=Object.entries(t).reduce((r,[s,a])=>({...r,[s]:xBt.TargetFile.fromJSON(s,a)}),{});else throw new TypeError("targets must be an object");return e}function RBt(t){let e;if(ZO.guard.isDefined(t))if(ZO.guard.isObject(t))e=bBt.Delegations.fromJSON(t);else throw new TypeError("delegations must be an object");return e}});var CJ=_(XO=>{"use strict";Object.defineProperty(XO,"__esModule",{value:!0});XO.Timestamp=void 0;var yJ=ay(),kbe=QP(),EJ=ff(),IJ=class t extends yJ.Signed{constructor(e){super(e),this.type=yJ.MetadataKind.Timestamp,this.snapshotMeta=e.snapshotMeta||new kbe.MetaFile({version:1})}equals(e){return e instanceof t?super.equals(e)&&this.snapshotMeta.equals(e.snapshotMeta):!1}toJSON(){return{_type:this.type,spec_version:this.specVersion,version:this.version,expires:this.expires,meta:{"snapshot.json":this.snapshotMeta.toJSON()},...this.unrecognizedFields}}static fromJSON(e){let{unrecognizedFields:r,...s}=yJ.Signed.commonFieldsFromJSON(e),{meta:a,...n}=r;return new t({...s,snapshotMeta:TBt(a),unrecognizedFields:n})}};XO.Timestamp=IJ;function TBt(t){let e;if(EJ.guard.isDefined(t)){let r=t["snapshot.json"];if(!EJ.guard.isDefined(r)||!EJ.guard.isObject(r))throw new TypeError("missing snapshot.json in meta");e=kbe.MetaFile.fromJSON(r)}return e}});var Rbe=_(A1=>{"use strict";var FBt=A1&&A1.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(A1,"__esModule",{value:!0});A1.Metadata=void 0;var NBt=_7(),Qbe=FBt(Ie("util")),f1=ay(),MP=bA(),OBt=aJ(),LBt=cJ(),MBt=AJ(),UBt=mJ(),_Bt=CJ(),wJ=ff(),BJ=class t{constructor(e,r,s){this.signed=e,this.signatures=r||{},this.unrecognizedFields=s||{}}sign(e,r=!0){let s=Buffer.from((0,NBt.canonicalize)(this.signed.toJSON())),a=e(s);r||(this.signatures={}),this.signatures[a.keyID]=a}verifyDelegate(e,r){let s,a={};switch(this.signed.type){case f1.MetadataKind.Root:a=this.signed.keys,s=this.signed.roles[e];break;case f1.MetadataKind.Targets:if(!this.signed.delegations)throw new MP.ValueError(`No delegations found for ${e}`);a=this.signed.delegations.keys,this.signed.delegations.roles?s=this.signed.delegations.roles[e]:this.signed.delegations.succinctRoles&&this.signed.delegations.succinctRoles.isDelegatedRole(e)&&(s=this.signed.delegations.succinctRoles);break;default:throw new TypeError("invalid metadata type")}if(!s)throw new MP.ValueError(`no delegation found for ${e}`);let n=new Set;if(s.keyIDs.forEach(c=>{let f=a[c];if(f)try{f.verifySignature(r),n.add(f.keyID)}catch{}}),n.sizer.toJSON()),signed:this.signed.toJSON(),...this.unrecognizedFields}}static fromJSON(e,r){let{signed:s,signatures:a,...n}=r;if(!wJ.guard.isDefined(s)||!wJ.guard.isObject(s))throw new TypeError("signed is not defined");if(e!==s._type)throw new MP.ValueError(`expected '${e}', got ${s._type}`);if(!wJ.guard.isObjectArray(a))throw new TypeError("signatures is not an array");let c;switch(e){case f1.MetadataKind.Root:c=OBt.Root.fromJSON(s);break;case f1.MetadataKind.Timestamp:c=_Bt.Timestamp.fromJSON(s);break;case f1.MetadataKind.Snapshot:c=MBt.Snapshot.fromJSON(s);break;case f1.MetadataKind.Targets:c=UBt.Targets.fromJSON(s);break;default:throw new TypeError("invalid metadata type")}let f={};return a.forEach(p=>{let h=LBt.Signature.fromJSON(p);if(f[h.keyID])throw new MP.ValueError(`multiple signatures found for keyid: ${h.keyID}`);f[h.keyID]=h}),new t(c,f,n)}};A1.Metadata=BJ});var $O=_(Fi=>{"use strict";Object.defineProperty(Fi,"__esModule",{value:!0});Fi.Timestamp=Fi.Targets=Fi.Snapshot=Fi.Signature=Fi.Root=Fi.Metadata=Fi.Key=Fi.TargetFile=Fi.MetaFile=Fi.ValueError=Fi.MetadataKind=void 0;var HBt=ay();Object.defineProperty(Fi,"MetadataKind",{enumerable:!0,get:function(){return HBt.MetadataKind}});var jBt=bA();Object.defineProperty(Fi,"ValueError",{enumerable:!0,get:function(){return jBt.ValueError}});var Tbe=QP();Object.defineProperty(Fi,"MetaFile",{enumerable:!0,get:function(){return Tbe.MetaFile}});Object.defineProperty(Fi,"TargetFile",{enumerable:!0,get:function(){return Tbe.TargetFile}});var GBt=FO();Object.defineProperty(Fi,"Key",{enumerable:!0,get:function(){return GBt.Key}});var qBt=Rbe();Object.defineProperty(Fi,"Metadata",{enumerable:!0,get:function(){return qBt.Metadata}});var WBt=aJ();Object.defineProperty(Fi,"Root",{enumerable:!0,get:function(){return WBt.Root}});var YBt=cJ();Object.defineProperty(Fi,"Signature",{enumerable:!0,get:function(){return YBt.Signature}});var VBt=AJ();Object.defineProperty(Fi,"Snapshot",{enumerable:!0,get:function(){return VBt.Snapshot}});var JBt=mJ();Object.defineProperty(Fi,"Targets",{enumerable:!0,get:function(){return JBt.Targets}});var KBt=CJ();Object.defineProperty(Fi,"Timestamp",{enumerable:!0,get:function(){return KBt.Timestamp}})});var Nbe=_((air,Fbe)=>{var p1=1e3,h1=p1*60,g1=h1*60,uy=g1*24,zBt=uy*7,ZBt=uy*365.25;Fbe.exports=function(t,e){e=e||{};var r=typeof t;if(r==="string"&&t.length>0)return XBt(t);if(r==="number"&&isFinite(t))return e.long?evt(t):$Bt(t);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(t))};function XBt(t){if(t=String(t),!(t.length>100)){var e=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(t);if(e){var r=parseFloat(e[1]),s=(e[2]||"ms").toLowerCase();switch(s){case"years":case"year":case"yrs":case"yr":case"y":return r*ZBt;case"weeks":case"week":case"w":return r*zBt;case"days":case"day":case"d":return r*uy;case"hours":case"hour":case"hrs":case"hr":case"h":return r*g1;case"minutes":case"minute":case"mins":case"min":case"m":return r*h1;case"seconds":case"second":case"secs":case"sec":case"s":return r*p1;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return r;default:return}}}}function $Bt(t){var e=Math.abs(t);return e>=uy?Math.round(t/uy)+"d":e>=g1?Math.round(t/g1)+"h":e>=h1?Math.round(t/h1)+"m":e>=p1?Math.round(t/p1)+"s":t+"ms"}function evt(t){var e=Math.abs(t);return e>=uy?eL(t,e,uy,"day"):e>=g1?eL(t,e,g1,"hour"):e>=h1?eL(t,e,h1,"minute"):e>=p1?eL(t,e,p1,"second"):t+" ms"}function eL(t,e,r,s){var a=e>=r*1.5;return Math.round(t/r)+" "+s+(a?"s":"")}});var vJ=_((lir,Obe)=>{function tvt(t){r.debug=r,r.default=r,r.coerce=p,r.disable=c,r.enable=a,r.enabled=f,r.humanize=Nbe(),r.destroy=h,Object.keys(t).forEach(E=>{r[E]=t[E]}),r.names=[],r.skips=[],r.formatters={};function e(E){let C=0;for(let S=0;S{if(le==="%%")return"%";ie++;let pe=r.formatters[me];if(typeof pe=="function"){let Be=N[ie];le=pe.call(U,Be),N.splice(ie,1),ie--}return le}),r.formatArgs.call(U,N),(U.log||r.log).apply(U,N)}return T.namespace=E,T.useColors=r.useColors(),T.color=r.selectColor(E),T.extend=s,T.destroy=r.destroy,Object.defineProperty(T,"enabled",{enumerable:!0,configurable:!1,get:()=>S!==null?S:(b!==r.namespaces&&(b=r.namespaces,I=r.enabled(E)),I),set:N=>{S=N}}),typeof r.init=="function"&&r.init(T),T}function s(E,C){let S=r(this.namespace+(typeof C>"u"?":":C)+E);return S.log=this.log,S}function a(E){r.save(E),r.namespaces=E,r.names=[],r.skips=[];let C=(typeof E=="string"?E:"").trim().replace(" ",",").split(",").filter(Boolean);for(let S of C)S[0]==="-"?r.skips.push(S.slice(1)):r.names.push(S)}function n(E,C){let S=0,b=0,I=-1,T=0;for(;S"-"+C)].join(",");return r.enable(""),E}function f(E){for(let C of r.skips)if(n(E,C))return!1;for(let C of r.names)if(n(E,C))return!0;return!1}function p(E){return E instanceof Error?E.stack||E.message:E}function h(){console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.")}return r.enable(r.load()),r}Obe.exports=tvt});var Lbe=_((sc,tL)=>{sc.formatArgs=nvt;sc.save=ivt;sc.load=svt;sc.useColors=rvt;sc.storage=ovt();sc.destroy=(()=>{let t=!1;return()=>{t||(t=!0,console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."))}})();sc.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"];function rvt(){if(typeof window<"u"&&window.process&&(window.process.type==="renderer"||window.process.__nwjs))return!0;if(typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/))return!1;let t;return typeof document<"u"&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||typeof window<"u"&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||typeof navigator<"u"&&navigator.userAgent&&(t=navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/))&&parseInt(t[1],10)>=31||typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)}function nvt(t){if(t[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+t[0]+(this.useColors?"%c ":" ")+"+"+tL.exports.humanize(this.diff),!this.useColors)return;let e="color: "+this.color;t.splice(1,0,e,"color: inherit");let r=0,s=0;t[0].replace(/%[a-zA-Z%]/g,a=>{a!=="%%"&&(r++,a==="%c"&&(s=r))}),t.splice(s,0,e)}sc.log=console.debug||console.log||(()=>{});function ivt(t){try{t?sc.storage.setItem("debug",t):sc.storage.removeItem("debug")}catch{}}function svt(){let t;try{t=sc.storage.getItem("debug")}catch{}return!t&&typeof process<"u"&&"env"in process&&(t=process.env.DEBUG),t}function ovt(){try{return localStorage}catch{}}tL.exports=vJ()(sc);var{formatters:avt}=tL.exports;avt.j=function(t){try{return JSON.stringify(t)}catch(e){return"[UnexpectedJSONParseError]: "+e.message}}});var Ube=_((Xs,nL)=>{var lvt=Ie("tty"),rL=Ie("util");Xs.init=gvt;Xs.log=Avt;Xs.formatArgs=uvt;Xs.save=pvt;Xs.load=hvt;Xs.useColors=cvt;Xs.destroy=rL.deprecate(()=>{},"Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.");Xs.colors=[6,2,3,4,5,1];try{let t=Ie("supports-color");t&&(t.stderr||t).level>=2&&(Xs.colors=[20,21,26,27,32,33,38,39,40,41,42,43,44,45,56,57,62,63,68,69,74,75,76,77,78,79,80,81,92,93,98,99,112,113,128,129,134,135,148,149,160,161,162,163,164,165,166,167,168,169,170,171,172,173,178,179,184,185,196,197,198,199,200,201,202,203,204,205,206,207,208,209,214,215,220,221])}catch{}Xs.inspectOpts=Object.keys(process.env).filter(t=>/^debug_/i.test(t)).reduce((t,e)=>{let r=e.substring(6).toLowerCase().replace(/_([a-z])/g,(a,n)=>n.toUpperCase()),s=process.env[e];return/^(yes|on|true|enabled)$/i.test(s)?s=!0:/^(no|off|false|disabled)$/i.test(s)?s=!1:s==="null"?s=null:s=Number(s),t[r]=s,t},{});function cvt(){return"colors"in Xs.inspectOpts?!!Xs.inspectOpts.colors:lvt.isatty(process.stderr.fd)}function uvt(t){let{namespace:e,useColors:r}=this;if(r){let s=this.color,a="\x1B[3"+(s<8?s:"8;5;"+s),n=` ${a};1m${e} \x1B[0m`;t[0]=n+t[0].split(` `).join(` `+n),t.push(a+"m+"+nL.exports.humanize(this.diff)+"\x1B[0m")}else t[0]=fvt()+e+" "+t[0]}function fvt(){return Xs.inspectOpts.hideDate?"":new Date().toISOString()+" "}function Avt(...t){return process.stderr.write(rL.formatWithOptions(Xs.inspectOpts,...t)+` `)}function pvt(t){t?process.env.DEBUG=t:delete process.env.DEBUG}function hvt(){return process.env.DEBUG}function gvt(t){t.inspectOpts={};let e=Object.keys(Xs.inspectOpts);for(let r=0;re.trim()).join(" ")};Mbe.O=function(t){return this.inspectOpts.colors=this.useColors,rL.inspect(t,this.inspectOpts)}});var DJ=_((cir,SJ)=>{typeof process>"u"||process.type==="renderer"||process.browser===!0||process.__nwjs?SJ.exports=Lbe():SJ.exports=Ube()});var sL=_(Ji=>{"use strict";Object.defineProperty(Ji,"__esModule",{value:!0});Ji.DownloadHTTPError=Ji.DownloadLengthMismatchError=Ji.DownloadError=Ji.ExpiredMetadataError=Ji.EqualVersionError=Ji.BadVersionError=Ji.RepositoryError=Ji.PersistError=Ji.RuntimeError=Ji.ValueError=void 0;var PJ=class extends Error{};Ji.ValueError=PJ;var bJ=class extends Error{};Ji.RuntimeError=bJ;var xJ=class extends Error{};Ji.PersistError=xJ;var UP=class extends Error{};Ji.RepositoryError=UP;var iL=class extends UP{};Ji.BadVersionError=iL;var kJ=class extends iL{};Ji.EqualVersionError=kJ;var QJ=class extends UP{};Ji.ExpiredMetadataError=QJ;var _P=class extends Error{};Ji.DownloadError=_P;var RJ=class extends _P{};Ji.DownloadLengthMismatchError=RJ;var TJ=class extends _P{constructor(e,r){super(e),this.statusCode=r}};Ji.DownloadHTTPError=TJ});var Hbe=_(d1=>{"use strict";var NJ=d1&&d1.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(d1,"__esModule",{value:!0});d1.withTempFile=void 0;var FJ=NJ(Ie("fs/promises")),dvt=NJ(Ie("os")),_be=NJ(Ie("path")),mvt=async t=>yvt(async e=>t(_be.default.join(e,"tempfile")));d1.withTempFile=mvt;var yvt=async t=>{let e=await FJ.default.realpath(dvt.default.tmpdir()),r=await FJ.default.mkdtemp(e+_be.default.sep);try{return await t(r)}finally{await FJ.default.rm(r,{force:!0,recursive:!0,maxRetries:3})}}});var LJ=_(kg=>{"use strict";var aL=kg&&kg.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(kg,"__esModule",{value:!0});kg.DefaultFetcher=kg.BaseFetcher=void 0;var Evt=aL(DJ()),jbe=aL(Ie("fs")),Ivt=aL(IO()),Cvt=aL(Ie("util")),Gbe=sL(),wvt=Hbe(),Bvt=(0,Evt.default)("tuf:fetch"),oL=class{async downloadFile(e,r,s){return(0,wvt.withTempFile)(async a=>{let n=await this.fetch(e),c=0,f=jbe.default.createWriteStream(a);try{for await(let p of n){let h=Buffer.from(p);if(c+=h.length,c>r)throw new Gbe.DownloadLengthMismatchError("Max length reached");await vvt(f,h)}}finally{await Cvt.default.promisify(f.close).bind(f)()}return s(a)})}async downloadBytes(e,r){return this.downloadFile(e,r,async s=>{let a=jbe.default.createReadStream(s),n=[];for await(let c of a)n.push(c);return Buffer.concat(n)})}};kg.BaseFetcher=oL;var OJ=class extends oL{constructor(e={}){super(),this.timeout=e.timeout,this.retry=e.retry}async fetch(e){Bvt("GET %s",e);let r=await(0,Ivt.default)(e,{timeout:this.timeout,retry:this.retry});if(!r.ok||!r?.body)throw new Gbe.DownloadHTTPError("Failed to download",r.status);return r.body}};kg.DefaultFetcher=OJ;var vvt=async(t,e)=>new Promise((r,s)=>{t.write(e,a=>{a&&s(a),r(!0)})})});var qbe=_(lL=>{"use strict";Object.defineProperty(lL,"__esModule",{value:!0});lL.defaultConfig=void 0;lL.defaultConfig={maxRootRotations:256,maxDelegations:32,rootMaxLength:512e3,timestampMaxLength:16384,snapshotMaxLength:2e6,targetsMaxLength:5e6,prefixTargetsWithHash:!0,fetchTimeout:1e5,fetchRetries:void 0,fetchRetry:2}});var Wbe=_(cL=>{"use strict";Object.defineProperty(cL,"__esModule",{value:!0});cL.TrustedMetadataStore=void 0;var Es=$O(),_i=sL(),MJ=class{constructor(e){this.trustedSet={},this.referenceTime=new Date,this.loadTrustedRoot(e)}get root(){if(!this.trustedSet.root)throw new ReferenceError("No trusted root metadata");return this.trustedSet.root}get timestamp(){return this.trustedSet.timestamp}get snapshot(){return this.trustedSet.snapshot}get targets(){return this.trustedSet.targets}getRole(e){return this.trustedSet[e]}updateRoot(e){let r=JSON.parse(e.toString("utf8")),s=Es.Metadata.fromJSON(Es.MetadataKind.Root,r);if(s.signed.type!=Es.MetadataKind.Root)throw new _i.RepositoryError(`Expected 'root', got ${s.signed.type}`);if(this.root.verifyDelegate(Es.MetadataKind.Root,s),s.signed.version!=this.root.signed.version+1)throw new _i.BadVersionError(`Expected version ${this.root.signed.version+1}, got ${s.signed.version}`);return s.verifyDelegate(Es.MetadataKind.Root,s),this.trustedSet.root=s,s}updateTimestamp(e){if(this.snapshot)throw new _i.RuntimeError("Cannot update timestamp after snapshot");if(this.root.signed.isExpired(this.referenceTime))throw new _i.ExpiredMetadataError("Final root.json is expired");let r=JSON.parse(e.toString("utf8")),s=Es.Metadata.fromJSON(Es.MetadataKind.Timestamp,r);if(s.signed.type!=Es.MetadataKind.Timestamp)throw new _i.RepositoryError(`Expected 'timestamp', got ${s.signed.type}`);if(this.root.verifyDelegate(Es.MetadataKind.Timestamp,s),this.timestamp){if(s.signed.version{let p=n.signed.meta[c];if(!p)throw new _i.RepositoryError(`Missing file ${c} in new snapshot`);if(p.version{"use strict";Object.defineProperty(UJ,"__esModule",{value:!0});UJ.join=Dvt;var Svt=Ie("url");function Dvt(t,e){return new Svt.URL(Pvt(t)+bvt(e)).toString()}function Pvt(t){return t.endsWith("/")?t:t+"/"}function bvt(t){return t.startsWith("/")?t.slice(1):t}});var Vbe=_(nu=>{"use strict";var xvt=nu&&nu.__createBinding||(Object.create?function(t,e,r,s){s===void 0&&(s=r);var a=Object.getOwnPropertyDescriptor(e,r);(!a||("get"in a?!e.__esModule:a.writable||a.configurable))&&(a={enumerable:!0,get:function(){return e[r]}}),Object.defineProperty(t,s,a)}:function(t,e,r,s){s===void 0&&(s=r),t[s]=e[r]}),kvt=nu&&nu.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),jJ=nu&&nu.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(t!=null)for(var r in t)r!=="default"&&Object.prototype.hasOwnProperty.call(t,r)&&xvt(e,t,r);return kvt(e,t),e},Qvt=nu&&nu.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(nu,"__esModule",{value:!0});nu.Updater=void 0;var xA=$O(),Rvt=Qvt(DJ()),m1=jJ(Ie("fs")),uL=jJ(Ie("path")),Tvt=qbe(),fy=sL(),Fvt=LJ(),Nvt=Wbe(),HP=jJ(Ybe()),_J=(0,Rvt.default)("tuf:cache"),HJ=class{constructor(e){let{metadataDir:r,metadataBaseUrl:s,targetDir:a,targetBaseUrl:n,fetcher:c,config:f}=e;this.dir=r,this.metadataBaseUrl=s,this.targetDir=a,this.targetBaseUrl=n,this.forceCache=e.forceCache??!1;let p=this.loadLocalMetadata(xA.MetadataKind.Root);this.trustedSet=new Nvt.TrustedMetadataStore(p),this.config={...Tvt.defaultConfig,...f},this.fetcher=c||new Fvt.DefaultFetcher({timeout:this.config.fetchTimeout,retry:this.config.fetchRetries??this.config.fetchRetry})}async refresh(){if(this.forceCache)try{await this.loadTimestamp({checkRemote:!1})}catch{await this.loadRoot(),await this.loadTimestamp()}else await this.loadRoot(),await this.loadTimestamp();await this.loadSnapshot(),await this.loadTargets(xA.MetadataKind.Targets,xA.MetadataKind.Root)}async getTargetInfo(e){return this.trustedSet.targets||await this.refresh(),this.preorderDepthFirstWalk(e)}async downloadTarget(e,r,s){let a=r||this.generateTargetPath(e);if(!s){if(!this.targetBaseUrl)throw new fy.ValueError("Target base URL not set");s=this.targetBaseUrl}let n=e.path;if(this.trustedSet.root.signed.consistentSnapshot&&this.config.prefixTargetsWithHash){let p=Object.values(e.hashes),{dir:h,base:E}=uL.parse(n),C=`${p[0]}.${E}`;n=h?`${h}/${C}`:C}let f=HP.join(s,n);return await this.fetcher.downloadFile(f,e.length,async p=>{await e.verify(m1.createReadStream(p)),_J("WRITE %s",a),m1.copyFileSync(p,a)}),a}async findCachedTarget(e,r){r||(r=this.generateTargetPath(e));try{if(m1.existsSync(r))return await e.verify(m1.createReadStream(r)),r}catch{return}}loadLocalMetadata(e){let r=uL.join(this.dir,`${e}.json`);return _J("READ %s",r),m1.readFileSync(r)}async loadRoot(){let r=this.trustedSet.root.signed.version+1,s=r+this.config.maxRootRotations;for(let a=r;a0;){let{roleName:a,parentRoleName:n}=r.pop();if(s.has(a))continue;let c=(await this.loadTargets(a,n))?.signed;if(!c)continue;let f=c.targets?.[e];if(f)return f;if(s.add(a),c.delegations){let p=[],h=c.delegations.rolesForTarget(e);for(let{role:E,terminating:C}of h)if(p.push({roleName:E,parentRoleName:a}),C){r.splice(0);break}p.reverse(),r.push(...p)}}}generateTargetPath(e){if(!this.targetDir)throw new fy.ValueError("Target directory not set");let r=encodeURIComponent(e.path);return uL.join(this.targetDir,r)}persistMetadata(e,r){let s=encodeURIComponent(e);try{let a=uL.join(this.dir,`${s}.json`);_J("WRITE %s",a),m1.writeFileSync(a,r.toString("utf8"))}catch(a){throw new fy.PersistError(`Failed to persist metadata ${s} error: ${a}`)}}};nu.Updater=HJ});var Jbe=_(Qg=>{"use strict";Object.defineProperty(Qg,"__esModule",{value:!0});Qg.Updater=Qg.BaseFetcher=Qg.TargetFile=void 0;var Ovt=$O();Object.defineProperty(Qg,"TargetFile",{enumerable:!0,get:function(){return Ovt.TargetFile}});var Lvt=LJ();Object.defineProperty(Qg,"BaseFetcher",{enumerable:!0,get:function(){return Lvt.BaseFetcher}});var Mvt=Vbe();Object.defineProperty(Qg,"Updater",{enumerable:!0,get:function(){return Mvt.Updater}})});var qJ=_(fL=>{"use strict";Object.defineProperty(fL,"__esModule",{value:!0});fL.TUFError=void 0;var GJ=class extends Error{constructor({code:e,message:r,cause:s}){super(r),this.code=e,this.cause=s,this.name=this.constructor.name}};fL.TUFError=GJ});var Kbe=_(jP=>{"use strict";var Uvt=jP&&jP.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(jP,"__esModule",{value:!0});jP.readTarget=Hvt;var _vt=Uvt(Ie("fs")),AL=qJ();async function Hvt(t,e){let r=await jvt(t,e);return new Promise((s,a)=>{_vt.default.readFile(r,"utf-8",(n,c)=>{n?a(new AL.TUFError({code:"TUF_READ_TARGET_ERROR",message:`error reading target ${r}`,cause:n})):s(c)})})}async function jvt(t,e){let r;try{r=await t.getTargetInfo(e)}catch(a){throw new AL.TUFError({code:"TUF_REFRESH_METADATA_ERROR",message:"error refreshing TUF metadata",cause:a})}if(!r)throw new AL.TUFError({code:"TUF_FIND_TARGET_ERROR",message:`target ${e} not found`});let s=await t.findCachedTarget(r);if(!s)try{s=await t.downloadTarget(r)}catch(a){throw new AL.TUFError({code:"TUF_DOWNLOAD_TARGET_ERROR",message:`error downloading target ${s}`,cause:a})}return s}});var zbe=_((Iir,Gvt)=>{Gvt.exports={"https://tuf-repo-cdn.sigstore.dev":{"root.json":"ewogInNpZ25hdHVyZXMiOiBbCiAgewogICAia2V5aWQiOiAiNmYyNjAwODlkNTkyM2RhZjIwMTY2Y2E2NTdjNTQzYWY2MTgzNDZhYjk3MTg4NGE5OTk2MmIwMTk4OGJiZTBjMyIsCiAgICJzaWciOiAiMzA0NjAyMjEwMDhhYjFmNmYxN2Q0ZjllNmQ3ZGNmMWM4ODkxMmI2YjUzY2MxMDM4ODY0NGFlMWYwOWJjMzdhMDgyY2QwNjAwM2UwMjIxMDBlMTQ1ZWY0YzdiNzgyZDRlODEwN2I1MzQzN2U2NjlkMDQ3Njg5MmNlOTk5OTAzYWUzM2QxNDQ0ODM2Njk5NmU3IgogIH0sCiAgewogICAia2V5aWQiOiAiZTcxYTU0ZDU0MzgzNWJhODZhZGFkOTQ2MDM3OWM3NjQxZmI4NzI2ZDE2NGVhNzY2ODAxYTFjNTIyYWJhN2VhMiIsCiAgICJzaWciOiAiMzA0NTAyMjEwMGM3NjhiMmY4NmRhOTk1NjkwMTljMTYwYTA4MWRhNTRhZTM2YzM0YzBhMzEyMGQzY2I2OWI1M2I3ZDExMzc1OGUwMjIwNGY2NzE1MThmNjE3YjIwZDQ2NTM3ZmFlNmMzYjYzYmFlODkxM2Y0ZjE5NjIxNTYxMDVjYzRmMDE5YWMzNWM2YSIKICB9LAogIHsKICAgImtleWlkIjogIjIyZjRjYWVjNmQ4ZTZmOTU1NWFmNjZiM2Q0YzNjYjA2YTNiYjIzZmRjN2UzOWM5MTZjNjFmNDYyZTZmNTJiMDYiLAogICAic2lnIjogIjMwNDUwMjIxMDBiNDQzNGU2OTk1ZDM2OGQyM2U3NDc1OWFjZDBjYjkwMTNjODNhNWQzNTExZjBmOTk3ZWM1NGM0NTZhZTQzNTBhMDIyMDE1YjBlMjY1ZDE4MmQyYjYxZGM3NGUxNTVkOThiM2MzZmJlNTY0YmEwNTI4NmFhMTRjOGRmMDJjOWI3NTY1MTYiCiAgfSwKICB7CiAgICJrZXlpZCI6ICI2MTY0MzgzODEyNWI0NDBiNDBkYjY5NDJmNWNiNWEzMWMwZGMwNDM2ODMxNmViMmFhYTU4Yjk1OTA0YTU4MjIyIiwKICAgInNpZyI6ICIzMDQ1MDIyMTAwODJjNTg0MTFkOTg5ZWI5Zjg2MTQxMDg1N2Q0MjM4MTU5MGVjOTQyNGRiZGFhNTFlNzhlZDEzNTE1NDMxOTA0ZTAyMjAxMTgxODVkYTZhNmMyOTQ3MTMxYzE3Nzk3ZTJiYjc2MjBjZTI2ZTVmMzAxZDFjZWFjNWYyYTdlNThmOWRjZjJlIgogIH0sCiAgewogICAia2V5aWQiOiAiYTY4N2U1YmY0ZmFiODJiMGVlNThkNDZlMDVjOTUzNTE0NWEyYzlhZmI0NThmNDNkNDJiNDVjYTBmZGNlMmE3MCIsCiAgICJzaWciOiAiMzA0NjAyMjEwMGM3ODUxMzg1NGNhZTljMzJlYWE2Yjg4ZTE4OTEyZjQ4MDA2YzI3NTdhMjU4ZjkxNzMxMmNhYmE3NTk0OGViOWUwMjIxMDBkOWUxYjRjZTBhZGZlOWZkMmUyMTQ4ZDdmYTI3YTJmNDBiYTExMjJiZDY5ZGE3NjEyZDhkMTc3NmIwMTNjOTFkIgogIH0sCiAgewogICAia2V5aWQiOiAiZmRmYTgzYTA3YjVhODM1ODliODdkZWQ0MWY3N2YzOWQyMzJhZDkxZjdjY2U1Mjg2OGRhY2QwNmJhMDg5ODQ5ZiIsCiAgICJzaWciOiAiMzA0NTAyMjA1NjQ4M2EyZDVkOWVhOWNlYzZlMTFlYWRmYjMzYzQ4NGI2MTQyOThmYWNhMTVhY2YxYzQzMWIxMWVkN2Y3MzRjMDIyMTAwZDBjMWQ3MjZhZjkyYTg3ZTRlNjY0NTljYTVhZGYzOGEwNWI0NGUxZjk0MzE4NDIzZjk1NGJhZThiY2E1YmIyZSIKICB9LAogIHsKICAgImtleWlkIjogImUyZjU5YWNiOTQ4ODUxOTQwN2UxOGNiZmM5MzI5NTEwYmUwM2MwNGFjYTk5MjlkMmYwMzAxMzQzZmVjODU1MjMiLAogICAic2lnIjogIjMwNDYwMjIxMDBkMDA0ZGU4ODAyNGMzMmRjNTY1M2E5ZjQ4NDNjZmM1MjE1NDI3MDQ4YWQ5NjAwZDJjZjljOTY5ZTZlZGZmM2QyMDIyMTAwZDllYmI3OThmNWZjNjZhZjEwODk5ZGVjZTAxNGE4NjI4Y2NmM2M1NDAyY2Q0YTQyNzAyMDc0NzJmOGY2ZTcxMiIKICB9LAogIHsKICAgImtleWlkIjogIjNjMzQ0YWEwNjhmZDRjYzRlODdkYzUwYjYxMmMwMjQzMWZiYzc3MWU5NTAwMzk5MzY4M2EyYjBiZjI2MGNmMGUiLAogICAic2lnIjogIjMwNDYwMjIxMDBiN2IwOTk5NmM0NWNhMmQ0YjA1NjAzZTU2YmFlZmEyOTcxOGEwYjcxMTQ3Y2Y4YzZlNjYzNDliYWE2MTQ3N2RmMDIyMTAwYzRkYTgwYzcxN2I0ZmE3YmJhMGZkNWM3MmRhOGEwNDk5MzU4YjAxMzU4YjIzMDlmNDFkMTQ1NmVhMWU3ZTFkOSIKICB9LAogIHsKICAgImtleWlkIjogImVjODE2Njk3MzRlMDE3OTk2YzViODVmM2QwMmMzZGUxZGQ0NjM3YTE1MjAxOWZlMWFmMTI1ZDJmOTM2OGI5NWUiLAogICAic2lnIjogIjMwNDYwMjIxMDBiZTk3ODJjMzA3NDRlNDExYTgyZmE4NWI1MTM4ZDYwMWNlMTQ4YmMxOTI1OGFlYzY0ZTdlYzI0NDc4ZjM4ODEyMDIyMTAwY2FlZjYzZGNhZjFhNGI5YTUwMGQzYmQwZTNmMTY0ZWMxOGYxYjYzZDdhOTQ2MGQ5YWNhYjEwNjZkYjBmMDE2ZCIKICB9LAogIHsKICAgImtleWlkIjogIjFlMWQ2NWNlOThiMTBhZGRhZDQ3NjRmZWJmN2RkYTJkMDQzNmIzZDNhMzg5MzU3OWMwZGRkYWVhMjBlNTQ4NDkiLAogICAic2lnIjogIjMwNDUwMjIwNzQ2ZWMzZjg1MzRjZTU1NTMxZDBkMDFmZjY0OTY0ZWY0NDBkMWU3ZDJjNGMxNDI0MDliOGU5NzY5ZjFhZGE2ZjAyMjEwMGUzYjkyOWZjZDkzZWExOGZlYWEwODI1ODg3YTcyMTA0ODk4NzlhNjY3ODBjMDdhODNmNGJkNDZlMmYwOWFiM2IiCiAgfQogXSwKICJzaWduZWQiOiB7CiAgIl90eXBlIjogInJvb3QiLAogICJjb25zaXN0ZW50X3NuYXBzaG90IjogdHJ1ZSwKICAiZXhwaXJlcyI6ICIyMDI1LTAyLTE5VDA4OjA0OjMyWiIsCiAgImtleXMiOiB7CiAgICIyMmY0Y2FlYzZkOGU2Zjk1NTVhZjY2YjNkNGMzY2IwNmEzYmIyM2ZkYzdlMzljOTE2YzYxZjQ2MmU2ZjUyYjA2IjogewogICAgImtleWlkX2hhc2hfYWxnb3JpdGhtcyI6IFsKICAgICAic2hhMjU2IiwKICAgICAic2hhNTEyIgogICAgXSwKICAgICJrZXl0eXBlIjogImVjZHNhIiwKICAgICJrZXl2YWwiOiB7CiAgICAgInB1YmxpYyI6ICItLS0tLUJFR0lOIFBVQkxJQyBLRVktLS0tLVxuTUZrd0V3WUhLb1pJemowQ0FRWUlLb1pJemowREFRY0RRZ0FFekJ6Vk9tSENQb2pNVkxTSTM2NFdpaVY4TlByRFxuNklnUnhWbGlza3ovdit5M0pFUjVtY1ZHY09ObGlEY1dNQzVKMmxmSG1qUE5QaGI0SDd4bThMemZTQT09XG4tLS0tLUVORCBQVUJMSUMgS0VZLS0tLS1cbiIKICAgIH0sCiAgICAic2NoZW1lIjogImVjZHNhLXNoYTItbmlzdHAyNTYiLAogICAgIngtdHVmLW9uLWNpLWtleW93bmVyIjogIkBzYW50aWFnb3RvcnJlcyIKICAgfSwKICAgIjYxNjQzODM4MTI1YjQ0MGI0MGRiNjk0MmY1Y2I1YTMxYzBkYzA0MzY4MzE2ZWIyYWFhNThiOTU5MDRhNTgyMjIiOiB7CiAgICAia2V5aWRfaGFzaF9hbGdvcml0aG1zIjogWwogICAgICJzaGEyNTYiLAogICAgICJzaGE1MTIiCiAgICBdLAogICAgImtleXR5cGUiOiAiZWNkc2EiLAogICAgImtleXZhbCI6IHsKICAgICAicHVibGljIjogIi0tLS0tQkVHSU4gUFVCTElDIEtFWS0tLS0tXG5NRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUVpbmlrU3NBUW1Za05lSDVlWXEvQ25JekxhYWNPXG54bFNhYXdRRE93cUt5L3RDcXhxNXh4UFNKYzIxSzRXSWhzOUd5T2tLZnp1ZVkzR0lMemNNSlo0Y1d3PT1cbi0tLS0tRU5EIFBVQkxJQyBLRVktLS0tLVxuIgogICAgfSwKICAgICJzY2hlbWUiOiAiZWNkc2Etc2hhMi1uaXN0cDI1NiIsCiAgICAieC10dWYtb24tY2kta2V5b3duZXIiOiAiQGJvYmNhbGxhd2F5IgogICB9LAogICAiNmYyNjAwODlkNTkyM2RhZjIwMTY2Y2E2NTdjNTQzYWY2MTgzNDZhYjk3MTg4NGE5OTk2MmIwMTk4OGJiZTBjMyI6IHsKICAgICJrZXlpZF9oYXNoX2FsZ29yaXRobXMiOiBbCiAgICAgInNoYTI1NiIsCiAgICAgInNoYTUxMiIKICAgIF0sCiAgICAia2V5dHlwZSI6ICJlY2RzYSIsCiAgICAia2V5dmFsIjogewogICAgICJwdWJsaWMiOiAiLS0tLS1CRUdJTiBQVUJMSUMgS0VZLS0tLS1cbk1Ga3dFd1lIS29aSXpqMENBUVlJS29aSXpqMERBUWNEUWdBRXk4WEtzbWhCWURJOEpjMEd3ekJ4ZUtheDBjbTVcblNUS0VVNjVIUEZ1blVuNDFzVDhwaTBGak00SWtIei9ZVW13bUxVTzBXdDdseGhqNkJrTElLNHFZQXc9PVxuLS0tLS1FTkQgUFVCTElDIEtFWS0tLS0tXG4iCiAgICB9LAogICAgInNjaGVtZSI6ICJlY2RzYS1zaGEyLW5pc3RwMjU2IiwKICAgICJ4LXR1Zi1vbi1jaS1rZXlvd25lciI6ICJAZGxvcmVuYyIKICAgfSwKICAgIjcyNDdmMGRiYWQ4NWIxNDdlMTg2M2JhZGU3NjEyNDNjYzc4NWRjYjdhYTQxMGU3MTA1ZGQzZDJiNjFhMzZkMmMiOiB7CiAgICAia2V5aWRfaGFzaF9hbGdvcml0aG1zIjogWwogICAgICJzaGEyNTYiLAogICAgICJzaGE1MTIiCiAgICBdLAogICAgImtleXR5cGUiOiAiZWNkc2EiLAogICAgImtleXZhbCI6IHsKICAgICAicHVibGljIjogIi0tLS0tQkVHSU4gUFVCTElDIEtFWS0tLS0tXG5NRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUVXUmlHcjUraiszSjVTc0grWnRyNW5FMkgyd083XG5CVituTzNzOTNnTGNhMThxVE96SFkxb1d5QUdEeWtNU3NHVFVCU3Q5RCtBbjBLZktzRDJtZlNNNDJRPT1cbi0tLS0tRU5EIFBVQkxJQyBLRVktLS0tLVxuIgogICAgfSwKICAgICJzY2hlbWUiOiAiZWNkc2Etc2hhMi1uaXN0cDI1NiIsCiAgICAieC10dWYtb24tY2ktb25saW5lLXVyaSI6ICJnY3BrbXM6Ly9wcm9qZWN0cy9zaWdzdG9yZS1yb290LXNpZ25pbmcvbG9jYXRpb25zL2dsb2JhbC9rZXlSaW5ncy9yb290L2NyeXB0b0tleXMvdGltZXN0YW1wIgogICB9LAogICAiYTY4N2U1YmY0ZmFiODJiMGVlNThkNDZlMDVjOTUzNTE0NWEyYzlhZmI0NThmNDNkNDJiNDVjYTBmZGNlMmE3MCI6IHsKICAgICJrZXlpZF9oYXNoX2FsZ29yaXRobXMiOiBbCiAgICAgInNoYTI1NiIsCiAgICAgInNoYTUxMiIKICAgIF0sCiAgICAia2V5dHlwZSI6ICJlY2RzYSIsCiAgICAia2V5dmFsIjogewogICAgICJwdWJsaWMiOiAiLS0tLS1CRUdJTiBQVUJMSUMgS0VZLS0tLS1cbk1Ga3dFd1lIS29aSXpqMENBUVlJS29aSXpqMERBUWNEUWdBRTBnaHJoOTJMdzFZcjNpZEdWNVdxQ3RNREI4Q3hcbitEOGhkQzR3MlpMTklwbFZSb1ZHTHNrWWEzZ2hlTXlPamlKOGtQaTE1YVEyLy83UCtvajdVdkpQR3c9PVxuLS0tLS1FTkQgUFVCTElDIEtFWS0tLS0tXG4iCiAgICB9LAogICAgInNjaGVtZSI6ICJlY2RzYS1zaGEyLW5pc3RwMjU2IiwKICAgICJ4LXR1Zi1vbi1jaS1rZXlvd25lciI6ICJAam9zaHVhZ2wiCiAgIH0sCiAgICJlNzFhNTRkNTQzODM1YmE4NmFkYWQ5NDYwMzc5Yzc2NDFmYjg3MjZkMTY0ZWE3NjY4MDFhMWM1MjJhYmE3ZWEyIjogewogICAgImtleWlkX2hhc2hfYWxnb3JpdGhtcyI6IFsKICAgICAic2hhMjU2IiwKICAgICAic2hhNTEyIgogICAgXSwKICAgICJrZXl0eXBlIjogImVjZHNhIiwKICAgICJrZXl2YWwiOiB7CiAgICAgInB1YmxpYyI6ICItLS0tLUJFR0lOIFBVQkxJQyBLRVktLS0tLVxuTUZrd0V3WUhLb1pJemowQ0FRWUlLb1pJemowREFRY0RRZ0FFRVhzejNTWlhGYjhqTVY0Mmo2cEpseWpialI4S1xuTjNCd29jZXhxNkxNSWI1cXNXS09RdkxOMTZOVWVmTGM0SHN3T291bVJzVlZhYWpTcFFTNmZvYmtSdz09XG4tLS0tLUVORCBQVUJMSUMgS0VZLS0tLS1cbiIKICAgIH0sCiAgICAic2NoZW1lIjogImVjZHNhLXNoYTItbmlzdHAyNTYiLAogICAgIngtdHVmLW9uLWNpLWtleW93bmVyIjogIkBtbm02NzgiCiAgIH0KICB9LAogICJyb2xlcyI6IHsKICAgInJvb3QiOiB7CiAgICAia2V5aWRzIjogWwogICAgICI2ZjI2MDA4OWQ1OTIzZGFmMjAxNjZjYTY1N2M1NDNhZjYxODM0NmFiOTcxODg0YTk5OTYyYjAxOTg4YmJlMGMzIiwKICAgICAiZTcxYTU0ZDU0MzgzNWJhODZhZGFkOTQ2MDM3OWM3NjQxZmI4NzI2ZDE2NGVhNzY2ODAxYTFjNTIyYWJhN2VhMiIsCiAgICAgIjIyZjRjYWVjNmQ4ZTZmOTU1NWFmNjZiM2Q0YzNjYjA2YTNiYjIzZmRjN2UzOWM5MTZjNjFmNDYyZTZmNTJiMDYiLAogICAgICI2MTY0MzgzODEyNWI0NDBiNDBkYjY5NDJmNWNiNWEzMWMwZGMwNDM2ODMxNmViMmFhYTU4Yjk1OTA0YTU4MjIyIiwKICAgICAiYTY4N2U1YmY0ZmFiODJiMGVlNThkNDZlMDVjOTUzNTE0NWEyYzlhZmI0NThmNDNkNDJiNDVjYTBmZGNlMmE3MCIKICAgIF0sCiAgICAidGhyZXNob2xkIjogMwogICB9LAogICAic25hcHNob3QiOiB7CiAgICAia2V5aWRzIjogWwogICAgICI3MjQ3ZjBkYmFkODViMTQ3ZTE4NjNiYWRlNzYxMjQzY2M3ODVkY2I3YWE0MTBlNzEwNWRkM2QyYjYxYTM2ZDJjIgogICAgXSwKICAgICJ0aHJlc2hvbGQiOiAxLAogICAgIngtdHVmLW9uLWNpLWV4cGlyeS1wZXJpb2QiOiAzNjUwLAogICAgIngtdHVmLW9uLWNpLXNpZ25pbmctcGVyaW9kIjogMzY1CiAgIH0sCiAgICJ0YXJnZXRzIjogewogICAgImtleWlkcyI6IFsKICAgICAiNmYyNjAwODlkNTkyM2RhZjIwMTY2Y2E2NTdjNTQzYWY2MTgzNDZhYjk3MTg4NGE5OTk2MmIwMTk4OGJiZTBjMyIsCiAgICAgImU3MWE1NGQ1NDM4MzViYTg2YWRhZDk0NjAzNzljNzY0MWZiODcyNmQxNjRlYTc2NjgwMWExYzUyMmFiYTdlYTIiLAogICAgICIyMmY0Y2FlYzZkOGU2Zjk1NTVhZjY2YjNkNGMzY2IwNmEzYmIyM2ZkYzdlMzljOTE2YzYxZjQ2MmU2ZjUyYjA2IiwKICAgICAiNjE2NDM4MzgxMjViNDQwYjQwZGI2OTQyZjVjYjVhMzFjMGRjMDQzNjgzMTZlYjJhYWE1OGI5NTkwNGE1ODIyMiIsCiAgICAgImE2ODdlNWJmNGZhYjgyYjBlZTU4ZDQ2ZTA1Yzk1MzUxNDVhMmM5YWZiNDU4ZjQzZDQyYjQ1Y2EwZmRjZTJhNzAiCiAgICBdLAogICAgInRocmVzaG9sZCI6IDMKICAgfSwKICAgInRpbWVzdGFtcCI6IHsKICAgICJrZXlpZHMiOiBbCiAgICAgIjcyNDdmMGRiYWQ4NWIxNDdlMTg2M2JhZGU3NjEyNDNjYzc4NWRjYjdhYTQxMGU3MTA1ZGQzZDJiNjFhMzZkMmMiCiAgICBdLAogICAgInRocmVzaG9sZCI6IDEsCiAgICAieC10dWYtb24tY2ktZXhwaXJ5LXBlcmlvZCI6IDcsCiAgICAieC10dWYtb24tY2ktc2lnbmluZy1wZXJpb2QiOiA0CiAgIH0KICB9LAogICJzcGVjX3ZlcnNpb24iOiAiMS4wIiwKICAidmVyc2lvbiI6IDEwLAogICJ4LXR1Zi1vbi1jaS1leHBpcnktcGVyaW9kIjogMTgyLAogICJ4LXR1Zi1vbi1jaS1zaWduaW5nLXBlcmlvZCI6IDMxCiB9Cn0=",targets:{"trusted_root.json":"ewogICJtZWRpYVR5cGUiOiAiYXBwbGljYXRpb24vdm5kLmRldi5zaWdzdG9yZS50cnVzdGVkcm9vdCtqc29uO3ZlcnNpb249MC4xIiwKICAidGxvZ3MiOiBbCiAgICB7CiAgICAgICJiYXNlVXJsIjogImh0dHBzOi8vcmVrb3Iuc2lnc3RvcmUuZGV2IiwKICAgICAgImhhc2hBbGdvcml0aG0iOiAiU0hBMl8yNTYiLAogICAgICAicHVibGljS2V5IjogewogICAgICAgICJyYXdCeXRlcyI6ICJNRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUUyRzJZKzJ0YWJkVFY1QmNHaUJJeDBhOWZBRndya0JibUxTR3RrczRMM3FYNnlZWTB6dWZCbmhDOFVyL2l5NTVHaFdQLzlBL2JZMkxoQzMwTTkrUll0dz09IiwKICAgICAgICAia2V5RGV0YWlscyI6ICJQS0lYX0VDRFNBX1AyNTZfU0hBXzI1NiIsCiAgICAgICAgInZhbGlkRm9yIjogewogICAgICAgICAgInN0YXJ0IjogIjIwMjEtMDEtMTJUMTE6NTM6MjcuMDAwWiIKICAgICAgICB9CiAgICAgIH0sCiAgICAgICJsb2dJZCI6IHsKICAgICAgICAia2V5SWQiOiAid05JOWF0UUdseitWV2ZPNkxSeWdINFFVZlkvOFc0UkZ3aVQ1aTVXUmdCMD0iCiAgICAgIH0KICAgIH0KICBdLAogICJjZXJ0aWZpY2F0ZUF1dGhvcml0aWVzIjogWwogICAgewogICAgICAic3ViamVjdCI6IHsKICAgICAgICAib3JnYW5pemF0aW9uIjogInNpZ3N0b3JlLmRldiIsCiAgICAgICAgImNvbW1vbk5hbWUiOiAic2lnc3RvcmUiCiAgICAgIH0sCiAgICAgICJ1cmkiOiAiaHR0cHM6Ly9mdWxjaW8uc2lnc3RvcmUuZGV2IiwKICAgICAgImNlcnRDaGFpbiI6IHsKICAgICAgICAiY2VydGlmaWNhdGVzIjogWwogICAgICAgICAgewogICAgICAgICAgICAicmF3Qnl0ZXMiOiAiTUlJQitEQ0NBWDZnQXdJQkFnSVROVmtEWm9DaW9mUERzeTdkZm02Z2VMYnVoekFLQmdncWhrak9QUVFEQXpBcU1SVXdFd1lEVlFRS0V3eHphV2R6ZEc5eVpTNWtaWFl4RVRBUEJnTlZCQU1UQ0hOcFozTjBiM0psTUI0WERUSXhNRE13TnpBek1qQXlPVm9YRFRNeE1ESXlNekF6TWpBeU9Wb3dLakVWTUJNR0ExVUVDaE1NYzJsbmMzUnZjbVV1WkdWMk1SRXdEd1lEVlFRREV3aHphV2R6ZEc5eVpUQjJNQkFHQnlxR1NNNDlBZ0VHQlN1QkJBQWlBMklBQkxTeUE3SWk1aytwTk84WkVXWTB5bGVtV0Rvd09rTmEza0wrR1pFNVo1R1dlaEw5L0E5YlJOQTNSYnJzWjVpMEpjYXN0YVJMN1NwNWZwL2pENWR4cWMvVWRUVm5sdlMxNmFuKzJZZnN3ZS9RdUxvbFJVQ3JjT0UyKzJpQTUrdHpkNk5tTUdRd0RnWURWUjBQQVFIL0JBUURBZ0VHTUJJR0ExVWRFd0VCL3dRSU1BWUJBZjhDQVFFd0hRWURWUjBPQkJZRUZNakZIUUJCbWlRcE1sRWs2dzJ1U3UxS0J0UHNNQjhHQTFVZEl3UVlNQmFBRk1qRkhRQkJtaVFwTWxFazZ3MnVTdTFLQnRQc01Bb0dDQ3FHU000OUJBTURBMmdBTUdVQ01IOGxpV0pmTXVpNnZYWEJoakRnWTRNd3NsbU4vVEp4VmUvODNXckZvbXdtTmYwNTZ5MVg0OEY5YzRtM2Ezb3pYQUl4QUtqUmF5NS9hai9qc0tLR0lrbVFhdGpJOHV1cEhyLytDeEZ2YUpXbXBZcU5rTERHUlUrOW9yemg1aEkyUnJjdWFRPT0iCiAgICAgICAgICB9CiAgICAgICAgXQogICAgICB9LAogICAgICAidmFsaWRGb3IiOiB7CiAgICAgICAgInN0YXJ0IjogIjIwMjEtMDMtMDdUMDM6MjA6MjkuMDAwWiIsCiAgICAgICAgImVuZCI6ICIyMDIyLTEyLTMxVDIzOjU5OjU5Ljk5OVoiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJzdWJqZWN0IjogewogICAgICAgICJvcmdhbml6YXRpb24iOiAic2lnc3RvcmUuZGV2IiwKICAgICAgICAiY29tbW9uTmFtZSI6ICJzaWdzdG9yZSIKICAgICAgfSwKICAgICAgInVyaSI6ICJodHRwczovL2Z1bGNpby5zaWdzdG9yZS5kZXYiLAogICAgICAiY2VydENoYWluIjogewogICAgICAgICJjZXJ0aWZpY2F0ZXMiOiBbCiAgICAgICAgICB7CiAgICAgICAgICAgICJyYXdCeXRlcyI6ICJNSUlDR2pDQ0FhR2dBd0lCQWdJVUFMblZpVmZuVTBickphc21Sa0hybi9VbmZhUXdDZ1lJS29aSXpqMEVBd013S2pFVk1CTUdBMVVFQ2hNTWMybG5jM1J2Y21VdVpHVjJNUkV3RHdZRFZRUURFd2h6YVdkemRHOXlaVEFlRncweU1qQTBNVE15TURBMk1UVmFGdzB6TVRFd01EVXhNelUyTlRoYU1EY3hGVEFUQmdOVkJBb1RESE5wWjNOMGIzSmxMbVJsZGpFZU1Cd0dBMVVFQXhNVmMybG5jM1J2Y21VdGFXNTBaWEp0WldScFlYUmxNSFl3RUFZSEtvWkl6ajBDQVFZRks0RUVBQ0lEWWdBRThSVlMveXNIK05PdnVEWnlQSVp0aWxnVUY5TmxhcllwQWQ5SFAxdkJCSDFVNUNWNzdMU1M3czBaaUg0bkU3SHY3cHRTNkx2dlIvU1RrNzk4TFZnTXpMbEo0SGVJZkYzdEhTYWV4TGNZcFNBU3Ixa1MwTi9SZ0JKei85aldDaVhubzNzd2VUQU9CZ05WSFE4QkFmOEVCQU1DQVFZd0V3WURWUjBsQkF3d0NnWUlLd1lCQlFVSEF3TXdFZ1lEVlIwVEFRSC9CQWd3QmdFQi93SUJBREFkQmdOVkhRNEVGZ1FVMzlQcHoxWWtFWmI1cU5qcEtGV2l4aTRZWkQ4d0h3WURWUjBqQkJnd0ZvQVVXTUFlWDVGRnBXYXBlc3lRb1pNaTBDckZ4Zm93Q2dZSUtvWkl6ajBFQXdNRFp3QXdaQUl3UENzUUs0RFlpWllEUElhRGk1SEZLbmZ4WHg2QVNTVm1FUmZzeW5ZQmlYMlg2U0pSblpVODQvOURaZG5GdnZ4bUFqQk90NlFwQmxjNEovMER4dmtUQ3FwY2x2emlMNkJDQ1BuamRsSUIzUHUzQnhzUG15Z1VZN0lpMnpiZENkbGlpb3c9IgogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgInJhd0J5dGVzIjogIk1JSUI5ekNDQVh5Z0F3SUJBZ0lVQUxaTkFQRmR4SFB3amVEbG9Ed3lZQ2hBTy80d0NnWUlLb1pJemowRUF3TXdLakVWTUJNR0ExVUVDaE1NYzJsbmMzUnZjbVV1WkdWMk1SRXdEd1lEVlFRREV3aHphV2R6ZEc5eVpUQWVGdzB5TVRFd01EY3hNelUyTlRsYUZ3MHpNVEV3TURVeE16VTJOVGhhTUNveEZUQVRCZ05WQkFvVERITnBaM04wYjNKbExtUmxkakVSTUE4R0ExVUVBeE1JYzJsbmMzUnZjbVV3ZGpBUUJnY3Foa2pPUFFJQkJnVXJnUVFBSWdOaUFBVDdYZUZUNHJiM1BRR3dTNElhanRMazMvT2xucGdhbmdhQmNsWXBzWUJyNWkrNHluQjA3Y2ViM0xQME9JT1pkeGV4WDY5YzVpVnV5SlJRK0h6MDV5aStVRjN1QldBbEhwaVM1c2gwK0gyR0hFN1NYcmsxRUM1bTFUcjE5TDlnZzkyall6QmhNQTRHQTFVZER3RUIvd1FFQXdJQkJqQVBCZ05WSFJNQkFmOEVCVEFEQVFIL01CMEdBMVVkRGdRV0JCUll3QjVma1VXbFpxbDZ6SkNoa3lMUUtzWEYrakFmQmdOVkhTTUVHREFXZ0JSWXdCNWZrVVdsWnFsNnpKQ2hreUxRS3NYRitqQUtCZ2dxaGtqT1BRUURBd05wQURCbUFqRUFqMW5IZVhacCsxM05XQk5hK0VEc0RQOEcxV1dnMXRDTVdQL1dIUHFwYVZvMGpoc3dlTkZaZ1NzMGVFN3dZSTRxQWpFQTJXQjlvdDk4c0lrb0YzdlpZZGQzL1Z0V0I1YjlUTk1lYTdJeC9zdEo1VGZjTExlQUJMRTRCTkpPc1E0dm5CSEoiCiAgICAgICAgICB9CiAgICAgICAgXQogICAgICB9LAogICAgICAidmFsaWRGb3IiOiB7CiAgICAgICAgInN0YXJ0IjogIjIwMjItMDQtMTNUMjA6MDY6MTUuMDAwWiIKICAgICAgfQogICAgfQogIF0sCiAgImN0bG9ncyI6IFsKICAgIHsKICAgICAgImJhc2VVcmwiOiAiaHR0cHM6Ly9jdGZlLnNpZ3N0b3JlLmRldi90ZXN0IiwKICAgICAgImhhc2hBbGdvcml0aG0iOiAiU0hBMl8yNTYiLAogICAgICAicHVibGljS2V5IjogewogICAgICAgICJyYXdCeXRlcyI6ICJNRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUViZndSK1JKdWRYc2NnUkJScEtYMVhGRHkzUHl1ZER4ei9TZm5SaTFmVDhla3BmQmQyTzF1b3o3anIzWjhuS3p4QTY5RVVRK2VGQ0ZJM3pldWJQV1U3dz09IiwKICAgICAgICAia2V5RGV0YWlscyI6ICJQS0lYX0VDRFNBX1AyNTZfU0hBXzI1NiIsCiAgICAgICAgInZhbGlkRm9yIjogewogICAgICAgICAgInN0YXJ0IjogIjIwMjEtMDMtMTRUMDA6MDA6MDAuMDAwWiIsCiAgICAgICAgICAiZW5kIjogIjIwMjItMTAtMzFUMjM6NTk6NTkuOTk5WiIKICAgICAgICB9CiAgICAgIH0sCiAgICAgICJsb2dJZCI6IHsKICAgICAgICAia2V5SWQiOiAiQ0dDUzhDaFMvMmhGMGRGcko0U2NSV2NZckJZOXd6alNiZWE4SWdZMmIzST0iCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJiYXNlVXJsIjogImh0dHBzOi8vY3RmZS5zaWdzdG9yZS5kZXYvMjAyMiIsCiAgICAgICJoYXNoQWxnb3JpdGhtIjogIlNIQTJfMjU2IiwKICAgICAgInB1YmxpY0tleSI6IHsKICAgICAgICAicmF3Qnl0ZXMiOiAiTUZrd0V3WUhLb1pJemowQ0FRWUlLb1pJemowREFRY0RRZ0FFaVBTbEZpMENtRlRmRWpDVXFGOUh1Q0VjWVhOS0FhWWFsSUptQlo4eXllelBqVHFoeHJLQnBNbmFvY1Z0TEpCSTFlTTN1WG5RelFHQUpkSjRnczlGeXc9PSIsCiAgICAgICAgImtleURldGFpbHMiOiAiUEtJWF9FQ0RTQV9QMjU2X1NIQV8yNTYiLAogICAgICAgICJ2YWxpZEZvciI6IHsKICAgICAgICAgICJzdGFydCI6ICIyMDIyLTEwLTIwVDAwOjAwOjAwLjAwMFoiCiAgICAgICAgfQogICAgICB9LAogICAgICAibG9nSWQiOiB7CiAgICAgICAgImtleUlkIjogIjNUMHdhc2JIRVRKakdSNGNtV2MzQXFKS1hyamVQSzMvaDRweWdDOHA3bzQ9IgogICAgICB9CiAgICB9CiAgXSwKICAidGltZXN0YW1wQXV0aG9yaXRpZXMiOiBbCiAgICB7CiAgICAgICJzdWJqZWN0IjogewogICAgICAgICJvcmdhbml6YXRpb24iOiAiR2l0SHViLCBJbmMuIiwKICAgICAgICAiY29tbW9uTmFtZSI6ICJJbnRlcm5hbCBTZXJ2aWNlcyBSb290IgogICAgICB9LAogICAgICAiY2VydENoYWluIjogewogICAgICAgICJjZXJ0aWZpY2F0ZXMiOiBbCiAgICAgICAgICB7CiAgICAgICAgICAgICJyYXdCeXRlcyI6ICJNSUlCM0RDQ0FXS2dBd0lCQWdJVWNoa05zSDM2WGEwNGIxTHFJYytxcjlEVmVjTXdDZ1lJS29aSXpqMEVBd013TWpFVk1CTUdBMVVFQ2hNTVIybDBTSFZpTENCSmJtTXVNUmt3RndZRFZRUURFeEJVVTBFZ2FXNTBaWEp0WldScFlYUmxNQjRYRFRJek1EUXhOREF3TURBd01Gb1hEVEkwTURReE16QXdNREF3TUZvd01qRVZNQk1HQTFVRUNoTU1SMmwwU0hWaUxDQkpibU11TVJrd0Z3WURWUVFERXhCVVUwRWdWR2x0WlhOMFlXMXdhVzVuTUZrd0V3WUhLb1pJemowQ0FRWUlLb1pJemowREFRY0RRZ0FFVUQ1Wk5iU3FZTWQ2cjhxcE9PRVg5aWJHblpUOUdzdVhPaHIvZjhVOUZKdWdCR0V4S1lwNDBPVUxTMGVyalpXN3hWOXhWNTJObkpmNU9lRHE0ZTVaS3FOV01GUXdEZ1lEVlIwUEFRSC9CQVFEQWdlQU1CTUdBMVVkSlFRTU1Bb0dDQ3NHQVFVRkJ3TUlNQXdHQTFVZEV3RUIvd1FDTUFBd0h3WURWUjBqQkJnd0ZvQVVhVzFSdWRPZ1Z0MGxlcVkwV0tZYnVQcjQ3d0F3Q2dZSUtvWkl6ajBFQXdNRGFBQXdaUUl3YlVIOUh2RDRlakNaSk9XUW5xQWxrcVVSbGx2dTlNOCtWcUxiaVJLK3pTZlpDWndzaWxqUm44TVFRUlNrWEVFNUFqRUFnK1Z4cXRvamZWZnU4RGh6emhDeDlHS0VUYkpIYjE5aVY3Mm1NS1ViREFGbXpaNmJROGI1NFpiOHRpZHk1YVdlIgogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgInJhd0J5dGVzIjogIk1JSUNFRENDQVpXZ0F3SUJBZ0lVWDhaTzVRWFA3dk40ZE1RNWU5c1UzbnViOE9nd0NnWUlLb1pJemowRUF3TXdPREVWTUJNR0ExVUVDaE1NUjJsMFNIVmlMQ0JKYm1NdU1SOHdIUVlEVlFRREV4WkpiblJsY201aGJDQlRaWEoyYVdObGN5QlNiMjkwTUI0WERUSXpNRFF4TkRBd01EQXdNRm9YRFRJNE1EUXhNakF3TURBd01Gb3dNakVWTUJNR0ExVUVDaE1NUjJsMFNIVmlMQ0JKYm1NdU1Sa3dGd1lEVlFRREV4QlVVMEVnYVc1MFpYSnRaV1JwWVhSbE1IWXdFQVlIS29aSXpqMENBUVlGSzRFRUFDSURZZ0FFdk1MWS9kVFZidklKWUFOQXVzekV3Sm5RRTFsbGZ0eW55TUtJTWhoNDhIbXFiVnI1eWd5YnpzTFJMVktiQldPZFoyMWFlSnorZ1ppeXRaZXRxY3lGOVdsRVI1TkVNZjZKVjdaTm9qUXB4SHE0UkhHb0dTY2VRdi9xdlRpWnhFREtvMll3WkRBT0JnTlZIUThCQWY4RUJBTUNBUVl3RWdZRFZSMFRBUUgvQkFnd0JnRUIvd0lCQURBZEJnTlZIUTRFRmdRVWFXMVJ1ZE9nVnQwbGVxWTBXS1lidVByNDd3QXdId1lEVlIwakJCZ3dGb0FVOU5ZWWxvYm5BRzRjMC9xanh5SC9scS93eitRd0NnWUlLb1pJemowRUF3TURhUUF3WmdJeEFLMUIxODV5Z0NySVlGbElzM0dqc3dqbndTTUc2TFk4d29MVmRha0tEWnhWYThmOGNxTXMxRGhjeEowKzA5dzk1UUl4QU8rdEJ6Wms3dmpVSjlpSmdENFI2WldUeFFXS3FObTc0ak85OW8rbzlzdjRGSS9TWlRaVEZ5TW4wSUpFSGRObXlBPT0iCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAicmF3Qnl0ZXMiOiAiTUlJQjlEQ0NBWHFnQXdJQkFnSVVhL0pBa2RVaks0SlV3c3F0YWlSSkdXaHFMU293Q2dZSUtvWkl6ajBFQXdNd09ERVZNQk1HQTFVRUNoTU1SMmwwU0hWaUxDQkpibU11TVI4d0hRWURWUVFERXhaSmJuUmxjbTVoYkNCVFpYSjJhV05sY3lCU2IyOTBNQjRYRFRJek1EUXhOREF3TURBd01Gb1hEVE16TURReE1UQXdNREF3TUZvd09ERVZNQk1HQTFVRUNoTU1SMmwwU0hWaUxDQkpibU11TVI4d0hRWURWUVFERXhaSmJuUmxjbTVoYkNCVFpYSjJhV05sY3lCU2IyOTBNSFl3RUFZSEtvWkl6ajBDQVFZRks0RUVBQ0lEWWdBRWY5akZBWHh6NGt4NjhBSFJNT2tGQmhmbERjTVR2emFYejR4L0ZDY1hqSi8xcUVLb24vcVBJR25hVVJza0R0eU5iTkRPcGVKVERERnF0NDhpTVBybnpweDZJWndxZW1mVUpONHhCRVpmemErcFl0L2l5b2QrOXRacjIwUlJXU3YvbzBVd1F6QU9CZ05WSFE4QkFmOEVCQU1DQVFZd0VnWURWUjBUQVFIL0JBZ3dCZ0VCL3dJQkFqQWRCZ05WSFE0RUZnUVU5TllZbG9ibkFHNGMwL3FqeHlIL2xxL3d6K1F3Q2dZSUtvWkl6ajBFQXdNRGFBQXdaUUl4QUxaTFo4QmdSWHpLeExNTU45VklsTytlNGhyQm5OQmdGN3R6N0hucm93djJOZXRaRXJJQUNLRnltQmx2V0R2dE1BSXdaTytraTZzc1ExYnNabzk4TzhtRUFmMk5aN2lpQ2dERFUwVndqZWNvNnp5ZWgwekJUczkvN2dWNkFITlE1M3hEIgogICAgICAgICAgfQogICAgICAgIF0KICAgICAgfSwKICAgICAgInZhbGlkRm9yIjogewogICAgICAgICJzdGFydCI6ICIyMDIzLTA0LTE0VDAwOjAwOjAwLjAwMFoiCiAgICAgIH0KICAgIH0KICBdCn0K","registry.npmjs.org%2Fkeys.json":"ewogICAgImtleXMiOiBbCiAgICAgICAgewogICAgICAgICAgICAia2V5SWQiOiAiU0hBMjU2OmpsM2J3c3d1ODBQampva0NnaDBvMnc1YzJVNExoUUFFNTdnajljejFrekEiLAogICAgICAgICAgICAia2V5VXNhZ2UiOiAibnBtOnNpZ25hdHVyZXMiLAogICAgICAgICAgICAicHVibGljS2V5IjogewogICAgICAgICAgICAgICAgInJhd0J5dGVzIjogIk1Ga3dFd1lIS29aSXpqMENBUVlJS29aSXpqMERBUWNEUWdBRTFPbGIzek1BRkZ4WEtIaUlrUU81Y0ozWWhsNWk2VVBwK0lodXRlQkpidUhjQTVVb2dLbzBFV3RsV3dXNktTYUtvVE5FWUw3SmxDUWlWbmtoQmt0VWdnPT0iLAogICAgICAgICAgICAgICAgImtleURldGFpbHMiOiAiUEtJWF9FQ0RTQV9QMjU2X1NIQV8yNTYiLAogICAgICAgICAgICAgICAgInZhbGlkRm9yIjogewogICAgICAgICAgICAgICAgICAgICJzdGFydCI6ICIxOTk5LTAxLTAxVDAwOjAwOjAwLjAwMFoiLAogICAgICAgICAgICAgICAgICAgICJlbmQiOiAiMjAyNS0wMS0yOVQwMDowMDowMC4wMDBaIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgICJrZXlJZCI6ICJTSEEyNTY6amwzYndzd3U4MFBqam9rQ2doMG8ydzVjMlU0TGhRQUU1N2dqOWN6MWt6QSIsCiAgICAgICAgICAgICJrZXlVc2FnZSI6ICJucG06YXR0ZXN0YXRpb25zIiwKICAgICAgICAgICAgInB1YmxpY0tleSI6IHsKICAgICAgICAgICAgICAgICJyYXdCeXRlcyI6ICJNRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUUxT2xiM3pNQUZGeFhLSGlJa1FPNWNKM1lobDVpNlVQcCtJaHV0ZUJKYnVIY0E1VW9nS28wRVd0bFd3VzZLU2FLb1RORVlMN0psQ1FpVm5raEJrdFVnZz09IiwKICAgICAgICAgICAgICAgICJrZXlEZXRhaWxzIjogIlBLSVhfRUNEU0FfUDI1Nl9TSEFfMjU2IiwKICAgICAgICAgICAgICAgICJ2YWxpZEZvciI6IHsKICAgICAgICAgICAgICAgICAgICAic3RhcnQiOiAiMjAyMi0xMi0wMVQwMDowMDowMC4wMDBaIiwKICAgICAgICAgICAgICAgICAgICAiZW5kIjogIjIwMjUtMDEtMjlUMDA6MDA6MDAuMDAwWiIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICAia2V5SWQiOiAiU0hBMjU2OkRoUTh3UjVBUEJ2RkhMRi8rVGMrQVl2UE9kVHBjSURxT2h4c0JIUndDN1UiLAogICAgICAgICAgICAia2V5VXNhZ2UiOiAibnBtOnNpZ25hdHVyZXMiLAogICAgICAgICAgICAicHVibGljS2V5IjogewogICAgICAgICAgICAgICAgInJhd0J5dGVzIjogIk1Ga3dFd1lIS29aSXpqMENBUVlJS29aSXpqMERBUWNEUWdBRVk2WWE3VysrN2FVUHp2TVRyZXpINlljeDNjK0hPS1lDY05HeWJKWlNDSnEvZmQ3UWE4dXVBS3RkSWtVUXRRaUVLRVJoQW1FNWxNTUpoUDhPa0RPYTJnPT0iLAogICAgICAgICAgICAgICAgImtleURldGFpbHMiOiAiUEtJWF9FQ0RTQV9QMjU2X1NIQV8yNTYiLAogICAgICAgICAgICAgICAgInZhbGlkRm9yIjogewogICAgICAgICAgICAgICAgICAgICJzdGFydCI6ICIyMDI1LTAxLTEzVDAwOjAwOjAwLjAwMFoiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgImtleUlkIjogIlNIQTI1NjpEaFE4d1I1QVBCdkZITEYvK1RjK0FZdlBPZFRwY0lEcU9oeHNCSFJ3QzdVIiwKICAgICAgICAgICAgImtleVVzYWdlIjogIm5wbTphdHRlc3RhdGlvbnMiLAogICAgICAgICAgICAicHVibGljS2V5IjogewogICAgICAgICAgICAgICAgInJhd0J5dGVzIjogIk1Ga3dFd1lIS29aSXpqMENBUVlJS29aSXpqMERBUWNEUWdBRVk2WWE3VysrN2FVUHp2TVRyZXpINlljeDNjK0hPS1lDY05HeWJKWlNDSnEvZmQ3UWE4dXVBS3RkSWtVUXRRaUVLRVJoQW1FNWxNTUpoUDhPa0RPYTJnPT0iLAogICAgICAgICAgICAgICAgImtleURldGFpbHMiOiAiUEtJWF9FQ0RTQV9QMjU2X1NIQV8yNTYiLAogICAgICAgICAgICAgICAgInZhbGlkRm9yIjogewogICAgICAgICAgICAgICAgICAgICJzdGFydCI6ICIyMDI1LTAxLTEzVDAwOjAwOjAwLjAwMFoiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICBdCn0K"}}}});var Xbe=_(y1=>{"use strict";var Zbe=y1&&y1.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(y1,"__esModule",{value:!0});y1.TUFClient=void 0;var Rg=Zbe(Ie("fs")),GP=Zbe(Ie("path")),qvt=Jbe(),Wvt=pL(),Yvt=Kbe(),YJ="targets",WJ=class{constructor(e){let r=new URL(e.mirrorURL),s=encodeURIComponent(r.host+r.pathname.replace(/\/$/,"")),a=GP.default.join(e.cachePath,s);Vvt(a),Jvt({cachePath:a,mirrorURL:e.mirrorURL,tufRootPath:e.rootPath,forceInit:e.forceInit}),this.updater=Kvt({mirrorURL:e.mirrorURL,cachePath:a,forceCache:e.forceCache,retry:e.retry,timeout:e.timeout})}async refresh(){return this.updater.refresh()}getTarget(e){return(0,Yvt.readTarget)(this.updater,e)}};y1.TUFClient=WJ;function Vvt(t){let e=GP.default.join(t,YJ);Rg.default.existsSync(t)||Rg.default.mkdirSync(t,{recursive:!0}),Rg.default.existsSync(e)||Rg.default.mkdirSync(e)}function Jvt({cachePath:t,mirrorURL:e,tufRootPath:r,forceInit:s}){let a=GP.default.join(t,"root.json");if(!Rg.default.existsSync(a)||s)if(r)Rg.default.copyFileSync(r,a);else{let c=zbe()[e];if(!c)throw new Wvt.TUFError({code:"TUF_INIT_CACHE_ERROR",message:`No root.json found for mirror: ${e}`});Rg.default.writeFileSync(a,Buffer.from(c["root.json"],"base64")),Object.entries(c.targets).forEach(([f,p])=>{Rg.default.writeFileSync(GP.default.join(t,YJ,f),Buffer.from(p,"base64"))})}}function Kvt(t){let e={fetchTimeout:t.timeout,fetchRetry:t.retry};return new qvt.Updater({metadataBaseUrl:t.mirrorURL,targetBaseUrl:`${t.mirrorURL}/targets`,metadataDir:t.cachePath,targetDir:GP.default.join(t.cachePath,YJ),forceCache:t.forceCache,config:e})}});var pL=_(gh=>{"use strict";Object.defineProperty(gh,"__esModule",{value:!0});gh.TUFError=gh.DEFAULT_MIRROR_URL=void 0;gh.getTrustedRoot=nSt;gh.initTUF=iSt;var zvt=mP(),Zvt=QPe(),Xvt=Xbe();gh.DEFAULT_MIRROR_URL="https://tuf-repo-cdn.sigstore.dev";var $vt="sigstore-js",eSt={retries:2},tSt=5e3,rSt="trusted_root.json";async function nSt(t={}){let r=await $be(t).getTarget(rSt);return zvt.TrustedRoot.fromJSON(JSON.parse(r))}async function iSt(t={}){let e=$be(t);return e.refresh().then(()=>e)}function $be(t){return new Xvt.TUFClient({cachePath:t.cachePath||(0,Zvt.appDataPath)($vt),rootPath:t.rootPath,mirrorURL:t.mirrorURL||gh.DEFAULT_MIRROR_URL,retry:t.retry??eSt,timeout:t.timeout??tSt,forceCache:t.forceCache??!1,forceInit:t.forceInit??t.force??!1})}var sSt=qJ();Object.defineProperty(gh,"TUFError",{enumerable:!0,get:function(){return sSt.TUFError}})});var exe=_(hL=>{"use strict";Object.defineProperty(hL,"__esModule",{value:!0});hL.DSSESignatureContent=void 0;var qP=Cl(),VJ=class{constructor(e){this.env=e}compareDigest(e){return qP.crypto.bufferEqual(e,qP.crypto.digest("sha256",this.env.payload))}compareSignature(e){return qP.crypto.bufferEqual(e,this.signature)}verifySignature(e){return qP.crypto.verify(this.preAuthEncoding,e,this.signature)}get signature(){return this.env.signatures.length>0?this.env.signatures[0].sig:Buffer.from("")}get preAuthEncoding(){return qP.dsse.preAuthEncoding(this.env.payloadType,this.env.payload)}};hL.DSSESignatureContent=VJ});var txe=_(gL=>{"use strict";Object.defineProperty(gL,"__esModule",{value:!0});gL.MessageSignatureContent=void 0;var JJ=Cl(),KJ=class{constructor(e,r){this.signature=e.signature,this.messageDigest=e.messageDigest.digest,this.artifact=r}compareSignature(e){return JJ.crypto.bufferEqual(e,this.signature)}compareDigest(e){return JJ.crypto.bufferEqual(e,this.messageDigest)}verifySignature(e){return JJ.crypto.verify(this.artifact,e,this.signature)}};gL.MessageSignatureContent=KJ});var nxe=_(dL=>{"use strict";Object.defineProperty(dL,"__esModule",{value:!0});dL.toSignedEntity=lSt;dL.signatureContent=rxe;var zJ=Cl(),oSt=exe(),aSt=txe();function lSt(t,e){let{tlogEntries:r,timestampVerificationData:s}=t.verificationMaterial,a=[];for(let n of r)a.push({$case:"transparency-log",tlogEntry:n});for(let n of s?.rfc3161Timestamps??[])a.push({$case:"timestamp-authority",timestamp:zJ.RFC3161Timestamp.parse(n.signedTimestamp)});return{signature:rxe(t,e),key:cSt(t),tlogEntries:r,timestamps:a}}function rxe(t,e){switch(t.content.$case){case"dsseEnvelope":return new oSt.DSSESignatureContent(t.content.dsseEnvelope);case"messageSignature":return new aSt.MessageSignatureContent(t.content.messageSignature,e)}}function cSt(t){switch(t.verificationMaterial.content.$case){case"publicKey":return{$case:"public-key",hint:t.verificationMaterial.content.publicKey.hint};case"x509CertificateChain":return{$case:"certificate",certificate:zJ.X509Certificate.parse(t.verificationMaterial.content.x509CertificateChain.certificates[0].rawBytes)};case"certificate":return{$case:"certificate",certificate:zJ.X509Certificate.parse(t.verificationMaterial.content.certificate.rawBytes)}}}});var Eo=_(E1=>{"use strict";Object.defineProperty(E1,"__esModule",{value:!0});E1.PolicyError=E1.VerificationError=void 0;var mL=class extends Error{constructor({code:e,message:r,cause:s}){super(r),this.code=e,this.cause=s,this.name=this.constructor.name}},ZJ=class extends mL{};E1.VerificationError=ZJ;var XJ=class extends mL{};E1.PolicyError=XJ});var ixe=_(yL=>{"use strict";Object.defineProperty(yL,"__esModule",{value:!0});yL.filterCertAuthorities=uSt;yL.filterTLogAuthorities=fSt;function uSt(t,e){return t.filter(r=>r.validFor.start<=e.start&&r.validFor.end>=e.end)}function fSt(t,e){return t.filter(r=>e.logID&&!r.logID.equals(e.logID)?!1:r.validFor.start<=e.targetDate&&e.targetDate<=r.validFor.end)}});var py=_(Ay=>{"use strict";Object.defineProperty(Ay,"__esModule",{value:!0});Ay.filterTLogAuthorities=Ay.filterCertAuthorities=void 0;Ay.toTrustMaterial=pSt;var $J=Cl(),WP=mP(),ASt=Eo(),eK=new Date(0),tK=new Date(864e13),axe=ixe();Object.defineProperty(Ay,"filterCertAuthorities",{enumerable:!0,get:function(){return axe.filterCertAuthorities}});Object.defineProperty(Ay,"filterTLogAuthorities",{enumerable:!0,get:function(){return axe.filterTLogAuthorities}});function pSt(t,e){let r=typeof e=="function"?e:hSt(e);return{certificateAuthorities:t.certificateAuthorities.map(oxe),timestampAuthorities:t.timestampAuthorities.map(oxe),tlogs:t.tlogs.map(sxe),ctlogs:t.ctlogs.map(sxe),publicKey:r}}function sxe(t){let e=t.publicKey.keyDetails,r=e===WP.PublicKeyDetails.PKCS1_RSA_PKCS1V5||e===WP.PublicKeyDetails.PKIX_RSA_PKCS1V5||e===WP.PublicKeyDetails.PKIX_RSA_PKCS1V15_2048_SHA256||e===WP.PublicKeyDetails.PKIX_RSA_PKCS1V15_3072_SHA256||e===WP.PublicKeyDetails.PKIX_RSA_PKCS1V15_4096_SHA256?"pkcs1":"spki";return{logID:t.logId.keyId,publicKey:$J.crypto.createPublicKey(t.publicKey.rawBytes,r),validFor:{start:t.publicKey.validFor?.start||eK,end:t.publicKey.validFor?.end||tK}}}function oxe(t){return{certChain:t.certChain.certificates.map(e=>$J.X509Certificate.parse(e.rawBytes)),validFor:{start:t.validFor?.start||eK,end:t.validFor?.end||tK}}}function hSt(t){return e=>{let r=(t||{})[e];if(!r)throw new ASt.VerificationError({code:"PUBLIC_KEY_ERROR",message:`key not found: ${e}`});return{publicKey:$J.crypto.createPublicKey(r.rawBytes),validFor:s=>(r.validFor?.start||eK)<=s&&(r.validFor?.end||tK)>=s}}}});var rK=_(YP=>{"use strict";Object.defineProperty(YP,"__esModule",{value:!0});YP.CertificateChainVerifier=void 0;YP.verifyCertificateChain=dSt;var hy=Eo(),gSt=py();function dSt(t,e){let r=(0,gSt.filterCertAuthorities)(e,{start:t.notBefore,end:t.notAfter}),s;for(let a of r)try{return new EL({trustedCerts:a.certChain,untrustedCert:t}).verify()}catch(n){s=n}throw new hy.VerificationError({code:"CERTIFICATE_ERROR",message:"Failed to verify certificate chain",cause:s})}var EL=class{constructor(e){this.untrustedCert=e.untrustedCert,this.trustedCerts=e.trustedCerts,this.localCerts=mSt([...e.trustedCerts,e.untrustedCert])}verify(){let e=this.sort();return this.checkPath(e),e}sort(){let e=this.untrustedCert,r=this.buildPaths(e);if(r=r.filter(a=>a.some(n=>this.trustedCerts.includes(n))),r.length===0)throw new hy.VerificationError({code:"CERTIFICATE_ERROR",message:"no trusted certificate path found"});let s=r.reduce((a,n)=>a.length{if(s&&a.extSubjectKeyID){a.extSubjectKeyID.keyIdentifier.equals(s)&&r.push(a);return}a.subject.equals(e.issuer)&&r.push(a)}),r=r.filter(a=>{try{return e.verify(a)}catch{return!1}}),r)}checkPath(e){if(e.length<1)throw new hy.VerificationError({code:"CERTIFICATE_ERROR",message:"certificate chain must contain at least one certificate"});if(!e.slice(1).every(s=>s.isCA))throw new hy.VerificationError({code:"CERTIFICATE_ERROR",message:"intermediate certificate is not a CA"});for(let s=e.length-2;s>=0;s--)if(!e[s].issuer.equals(e[s+1].subject))throw new hy.VerificationError({code:"CERTIFICATE_ERROR",message:"incorrect certificate name chaining"});for(let s=0;s{"use strict";Object.defineProperty(nK,"__esModule",{value:!0});nK.verifySCTs=ISt;var IL=Cl(),ySt=Eo(),ESt=py();function ISt(t,e,r){let s,a=t.clone();for(let p=0;p{if(!(0,ESt.filterTLogAuthorities)(r,{logID:p.logID,targetDate:p.datetime}).some(C=>p.verify(n.buffer,C.publicKey)))throw new ySt.VerificationError({code:"CERTIFICATE_ERROR",message:"SCT verification failed"});return p.logID})}});var uxe=_(CL=>{"use strict";Object.defineProperty(CL,"__esModule",{value:!0});CL.verifyPublicKey=DSt;CL.verifyCertificate=PSt;var CSt=Cl(),cxe=Eo(),wSt=rK(),BSt=lxe(),vSt="1.3.6.1.4.1.57264.1.1",SSt="1.3.6.1.4.1.57264.1.8";function DSt(t,e,r){let s=r.publicKey(t);return e.forEach(a=>{if(!s.validFor(a))throw new cxe.VerificationError({code:"PUBLIC_KEY_ERROR",message:`Public key is not valid for timestamp: ${a.toISOString()}`})}),{key:s.publicKey}}function PSt(t,e,r){let s=(0,wSt.verifyCertificateChain)(t,r.certificateAuthorities);if(!e.every(n=>s.every(c=>c.validForDate(n))))throw new cxe.VerificationError({code:"CERTIFICATE_ERROR",message:"certificate is not valid or expired at the specified date"});return{scts:(0,BSt.verifySCTs)(s[0],s[1],r.ctlogs),signer:bSt(s[0])}}function bSt(t){let e,r=t.extension(SSt);r?e=r.valueObj.subs?.[0]?.value.toString("ascii"):e=t.extension(vSt)?.value.toString("ascii");let s={extensions:{issuer:e},subjectAlternativeName:t.subjectAltName};return{key:CSt.crypto.createPublicKey(t.publicKey),identity:s}}});var Axe=_(wL=>{"use strict";Object.defineProperty(wL,"__esModule",{value:!0});wL.verifySubjectAlternativeName=xSt;wL.verifyExtensions=kSt;var fxe=Eo();function xSt(t,e){if(e===void 0||!e.match(t))throw new fxe.PolicyError({code:"UNTRUSTED_SIGNER_ERROR",message:`certificate identity error - expected ${t}, got ${e}`})}function kSt(t,e={}){let r;for(r in t)if(e[r]!==t[r])throw new fxe.PolicyError({code:"UNTRUSTED_SIGNER_ERROR",message:`invalid certificate extension - expected ${r}=${t[r]}, got ${r}=${e[r]}`})}});var pxe=_(lK=>{"use strict";Object.defineProperty(lK,"__esModule",{value:!0});lK.verifyCheckpoint=TSt;var sK=Cl(),I1=Eo(),QSt=py(),iK=` `,RSt=/\u2014 (\S+) (\S+)\n/g;function TSt(t,e){let r=(0,QSt.filterTLogAuthorities)(e,{targetDate:new Date(Number(t.integratedTime)*1e3)}),s=t.inclusionProof,a=oK.fromString(s.checkpoint.envelope),n=aK.fromString(a.note);if(!FSt(a,r))throw new I1.VerificationError({code:"TLOG_INCLUSION_PROOF_ERROR",message:"invalid checkpoint signature"});if(!sK.crypto.bufferEqual(n.logHash,s.rootHash))throw new I1.VerificationError({code:"TLOG_INCLUSION_PROOF_ERROR",message:"root hash mismatch"})}function FSt(t,e){let r=Buffer.from(t.note,"utf-8");return t.signatures.every(s=>{let a=e.find(n=>sK.crypto.bufferEqual(n.logID.subarray(0,4),s.keyHint));return a?sK.crypto.verify(r,a.publicKey,s.signature):!1})}var oK=class t{constructor(e,r){this.note=e,this.signatures=r}static fromString(e){if(!e.includes(iK))throw new I1.VerificationError({code:"TLOG_INCLUSION_PROOF_ERROR",message:"missing checkpoint separator"});let r=e.indexOf(iK),s=e.slice(0,r+1),n=e.slice(r+iK.length).matchAll(RSt),c=Array.from(n,f=>{let[,p,h]=f,E=Buffer.from(h,"base64");if(E.length<5)throw new I1.VerificationError({code:"TLOG_INCLUSION_PROOF_ERROR",message:"malformed checkpoint signature"});return{name:p,keyHint:E.subarray(0,4),signature:E.subarray(4)}});if(c.length===0)throw new I1.VerificationError({code:"TLOG_INCLUSION_PROOF_ERROR",message:"no signatures found in checkpoint"});return new t(s,c)}},aK=class t{constructor(e,r,s,a){this.origin=e,this.logSize=r,this.logHash=s,this.rest=a}static fromString(e){let r=e.trimEnd().split(` `);if(r.length<3)throw new I1.VerificationError({code:"TLOG_INCLUSION_PROOF_ERROR",message:"too few lines in checkpoint header"});let s=r[0],a=BigInt(r[1]),n=Buffer.from(r[2],"base64"),c=r.slice(3);return new t(s,a,n,c)}}});var hxe=_(AK=>{"use strict";Object.defineProperty(AK,"__esModule",{value:!0});AK.verifyMerkleInclusion=LSt;var fK=Cl(),cK=Eo(),NSt=Buffer.from([0]),OSt=Buffer.from([1]);function LSt(t){let e=t.inclusionProof,r=BigInt(e.logIndex),s=BigInt(e.treeSize);if(r<0n||r>=s)throw new cK.VerificationError({code:"TLOG_INCLUSION_PROOF_ERROR",message:`invalid index: ${r}`});let{inner:a,border:n}=MSt(r,s);if(e.hashes.length!==a+n)throw new cK.VerificationError({code:"TLOG_INCLUSION_PROOF_ERROR",message:"invalid hash count"});let c=e.hashes.slice(0,a),f=e.hashes.slice(a),p=qSt(t.canonicalizedBody),h=_St(USt(p,c,r),f);if(!fK.crypto.bufferEqual(h,e.rootHash))throw new cK.VerificationError({code:"TLOG_INCLUSION_PROOF_ERROR",message:"calculated root hash does not match inclusion proof"})}function MSt(t,e){let r=HSt(t,e),s=jSt(t>>BigInt(r));return{inner:r,border:s}}function USt(t,e,r){return e.reduce((s,a,n)=>r>>BigInt(n)&BigInt(1)?uK(a,s):uK(s,a),t)}function _St(t,e){return e.reduce((r,s)=>uK(s,r),t)}function HSt(t,e){return GSt(t^e-BigInt(1))}function jSt(t){return t.toString(2).split("1").length-1}function GSt(t){return t===0n?0:t.toString(2).length}function uK(t,e){return fK.crypto.digest("sha256",OSt,t,e)}function qSt(t){return fK.crypto.digest("sha256",NSt,t)}});var dxe=_(pK=>{"use strict";Object.defineProperty(pK,"__esModule",{value:!0});pK.verifyTLogSET=VSt;var gxe=Cl(),WSt=Eo(),YSt=py();function VSt(t,e){if(!(0,YSt.filterTLogAuthorities)(e,{logID:t.logId.keyId,targetDate:new Date(Number(t.integratedTime)*1e3)}).some(a=>{let n=JSt(t),c=Buffer.from(gxe.json.canonicalize(n),"utf8"),f=t.inclusionPromise.signedEntryTimestamp;return gxe.crypto.verify(c,a.publicKey,f)}))throw new WSt.VerificationError({code:"TLOG_INCLUSION_PROMISE_ERROR",message:"inclusion promise could not be verified"})}function JSt(t){let{integratedTime:e,logIndex:r,logId:s,canonicalizedBody:a}=t;return{body:a.toString("base64"),integratedTime:Number(e),logIndex:Number(r),logID:s.keyId.toString("hex")}}});var mxe=_(dK=>{"use strict";Object.defineProperty(dK,"__esModule",{value:!0});dK.verifyRFC3161Timestamp=ZSt;var hK=Cl(),gK=Eo(),KSt=rK(),zSt=py();function ZSt(t,e,r){let s=t.signingTime;if(r=(0,zSt.filterCertAuthorities)(r,{start:s,end:s}),r=$St(r,{serialNumber:t.signerSerialNumber,issuer:t.signerIssuer}),!r.some(n=>{try{return XSt(t,e,n),!0}catch{return!1}}))throw new gK.VerificationError({code:"TIMESTAMP_ERROR",message:"timestamp could not be verified"})}function XSt(t,e,r){let[s,...a]=r.certChain,n=hK.crypto.createPublicKey(s.publicKey),c=t.signingTime;try{new KSt.CertificateChainVerifier({untrustedCert:s,trustedCerts:a}).verify()}catch{throw new gK.VerificationError({code:"TIMESTAMP_ERROR",message:"invalid certificate chain"})}if(!r.certChain.every(p=>p.validForDate(c)))throw new gK.VerificationError({code:"TIMESTAMP_ERROR",message:"timestamp was signed with an expired certificate"});t.verify(e,n)}function $St(t,e){return t.filter(r=>r.certChain.length>0&&hK.crypto.bufferEqual(r.certChain[0].serialNumber,e.serialNumber)&&hK.crypto.bufferEqual(r.certChain[0].issuer,e.issuer))}});var yxe=_(BL=>{"use strict";Object.defineProperty(BL,"__esModule",{value:!0});BL.verifyTSATimestamp=sDt;BL.verifyTLogTimestamp=oDt;var eDt=Eo(),tDt=pxe(),rDt=hxe(),nDt=dxe(),iDt=mxe();function sDt(t,e,r){return(0,iDt.verifyRFC3161Timestamp)(t,e,r),{type:"timestamp-authority",logID:t.signerSerialNumber,timestamp:t.signingTime}}function oDt(t,e){let r=!1;if(aDt(t)&&((0,nDt.verifyTLogSET)(t,e),r=!0),lDt(t)&&((0,rDt.verifyMerkleInclusion)(t),(0,tDt.verifyCheckpoint)(t,e),r=!0),!r)throw new eDt.VerificationError({code:"TLOG_MISSING_INCLUSION_ERROR",message:"inclusion could not be verified"});return{type:"transparency-log",logID:t.logId.keyId,timestamp:new Date(Number(t.integratedTime)*1e3)}}function aDt(t){return t.inclusionPromise!==void 0}function lDt(t){return t.inclusionProof!==void 0}});var Exe=_(mK=>{"use strict";Object.defineProperty(mK,"__esModule",{value:!0});mK.verifyDSSETLogBody=cDt;var vL=Eo();function cDt(t,e){switch(t.apiVersion){case"0.0.1":return uDt(t,e);default:throw new vL.VerificationError({code:"TLOG_BODY_ERROR",message:`unsupported dsse version: ${t.apiVersion}`})}}function uDt(t,e){if(t.spec.signatures?.length!==1)throw new vL.VerificationError({code:"TLOG_BODY_ERROR",message:"signature count mismatch"});let r=t.spec.signatures[0].signature;if(!e.compareSignature(Buffer.from(r,"base64")))throw new vL.VerificationError({code:"TLOG_BODY_ERROR",message:"tlog entry signature mismatch"});let s=t.spec.payloadHash?.value||"";if(!e.compareDigest(Buffer.from(s,"hex")))throw new vL.VerificationError({code:"TLOG_BODY_ERROR",message:"DSSE payload hash mismatch"})}});var Ixe=_(EK=>{"use strict";Object.defineProperty(EK,"__esModule",{value:!0});EK.verifyHashedRekordTLogBody=fDt;var yK=Eo();function fDt(t,e){switch(t.apiVersion){case"0.0.1":return ADt(t,e);default:throw new yK.VerificationError({code:"TLOG_BODY_ERROR",message:`unsupported hashedrekord version: ${t.apiVersion}`})}}function ADt(t,e){let r=t.spec.signature.content||"";if(!e.compareSignature(Buffer.from(r,"base64")))throw new yK.VerificationError({code:"TLOG_BODY_ERROR",message:"signature mismatch"});let s=t.spec.data.hash?.value||"";if(!e.compareDigest(Buffer.from(s,"hex")))throw new yK.VerificationError({code:"TLOG_BODY_ERROR",message:"digest mismatch"})}});var Cxe=_(IK=>{"use strict";Object.defineProperty(IK,"__esModule",{value:!0});IK.verifyIntotoTLogBody=pDt;var SL=Eo();function pDt(t,e){switch(t.apiVersion){case"0.0.2":return hDt(t,e);default:throw new SL.VerificationError({code:"TLOG_BODY_ERROR",message:`unsupported intoto version: ${t.apiVersion}`})}}function hDt(t,e){if(t.spec.content.envelope.signatures?.length!==1)throw new SL.VerificationError({code:"TLOG_BODY_ERROR",message:"signature count mismatch"});let r=gDt(t.spec.content.envelope.signatures[0].sig);if(!e.compareSignature(Buffer.from(r,"base64")))throw new SL.VerificationError({code:"TLOG_BODY_ERROR",message:"tlog entry signature mismatch"});let s=t.spec.content.payloadHash?.value||"";if(!e.compareDigest(Buffer.from(s,"hex")))throw new SL.VerificationError({code:"TLOG_BODY_ERROR",message:"DSSE payload hash mismatch"})}function gDt(t){return Buffer.from(t,"base64").toString("utf-8")}});var Bxe=_(CK=>{"use strict";Object.defineProperty(CK,"__esModule",{value:!0});CK.verifyTLogBody=EDt;var wxe=Eo(),dDt=Exe(),mDt=Ixe(),yDt=Cxe();function EDt(t,e){let{kind:r,version:s}=t.kindVersion,a=JSON.parse(t.canonicalizedBody.toString("utf8"));if(r!==a.kind||s!==a.apiVersion)throw new wxe.VerificationError({code:"TLOG_BODY_ERROR",message:`kind/version mismatch - expected: ${r}/${s}, received: ${a.kind}/${a.apiVersion}`});switch(a.kind){case"dsse":return(0,dDt.verifyDSSETLogBody)(a,e);case"intoto":return(0,yDt.verifyIntotoTLogBody)(a,e);case"hashedrekord":return(0,mDt.verifyHashedRekordTLogBody)(a,e);default:throw new wxe.VerificationError({code:"TLOG_BODY_ERROR",message:`unsupported kind: ${r}`})}}});var bxe=_(DL=>{"use strict";Object.defineProperty(DL,"__esModule",{value:!0});DL.Verifier=void 0;var IDt=Ie("util"),C1=Eo(),vxe=uxe(),Sxe=Axe(),Dxe=yxe(),CDt=Bxe(),wK=class{constructor(e,r={}){this.trustMaterial=e,this.options={ctlogThreshold:r.ctlogThreshold??1,tlogThreshold:r.tlogThreshold??1,tsaThreshold:r.tsaThreshold??0}}verify(e,r){let s=this.verifyTimestamps(e),a=this.verifySigningKey(e,s);return this.verifyTLogs(e),this.verifySignature(e,a),r&&this.verifyPolicy(r,a.identity||{}),a}verifyTimestamps(e){let r=0,s=0,a=e.timestamps.map(n=>{switch(n.$case){case"timestamp-authority":return s++,(0,Dxe.verifyTSATimestamp)(n.timestamp,e.signature.signature,this.trustMaterial.timestampAuthorities);case"transparency-log":return r++,(0,Dxe.verifyTLogTimestamp)(n.tlogEntry,this.trustMaterial.tlogs)}});if(Pxe(a))throw new C1.VerificationError({code:"TIMESTAMP_ERROR",message:"duplicate timestamp"});if(rn.timestamp)}verifySigningKey({key:e},r){switch(e.$case){case"public-key":return(0,vxe.verifyPublicKey)(e.hint,r,this.trustMaterial);case"certificate":{let s=(0,vxe.verifyCertificate)(e.certificate,r,this.trustMaterial);if(Pxe(s.scts))throw new C1.VerificationError({code:"CERTIFICATE_ERROR",message:"duplicate SCT"});if(s.scts.length(0,CDt.verifyTLogBody)(s,e))}verifySignature(e,r){if(!e.signature.verifySignature(r.key))throw new C1.VerificationError({code:"SIGNATURE_ERROR",message:"signature verification failed"})}verifyPolicy(e,r){e.subjectAlternativeName&&(0,Sxe.verifySubjectAlternativeName)(e.subjectAlternativeName,r.subjectAlternativeName),e.extensions&&(0,Sxe.verifyExtensions)(e.extensions,r.extensions)}};DL.Verifier=wK;function Pxe(t){for(let e=0;e{"use strict";Object.defineProperty(iu,"__esModule",{value:!0});iu.Verifier=iu.toTrustMaterial=iu.VerificationError=iu.PolicyError=iu.toSignedEntity=void 0;var wDt=nxe();Object.defineProperty(iu,"toSignedEntity",{enumerable:!0,get:function(){return wDt.toSignedEntity}});var xxe=Eo();Object.defineProperty(iu,"PolicyError",{enumerable:!0,get:function(){return xxe.PolicyError}});Object.defineProperty(iu,"VerificationError",{enumerable:!0,get:function(){return xxe.VerificationError}});var BDt=py();Object.defineProperty(iu,"toTrustMaterial",{enumerable:!0,get:function(){return BDt.toTrustMaterial}});var vDt=bxe();Object.defineProperty(iu,"Verifier",{enumerable:!0,get:function(){return vDt.Verifier}})});var kxe=_(Fa=>{"use strict";Object.defineProperty(Fa,"__esModule",{value:!0});Fa.DEFAULT_TIMEOUT=Fa.DEFAULT_RETRY=void 0;Fa.createBundleBuilder=PDt;Fa.createKeyFinder=bDt;Fa.createVerificationPolicy=xDt;var SDt=Cl(),w1=F7(),DDt=PL();Fa.DEFAULT_RETRY={retries:2};Fa.DEFAULT_TIMEOUT=5e3;function PDt(t,e){let r={signer:kDt(e),witnesses:RDt(e)};switch(t){case"messageSignature":return new w1.MessageSignatureBundleBuilder(r);case"dsseEnvelope":return new w1.DSSEBundleBuilder({...r,certificateChain:e.legacyCompatibility})}}function bDt(t){return e=>{let r=t(e);if(!r)throw new DDt.VerificationError({code:"PUBLIC_KEY_ERROR",message:`key not found: ${e}`});return{publicKey:SDt.crypto.createPublicKey(r),validFor:()=>!0}}}function xDt(t){let e={},r=t.certificateIdentityEmail||t.certificateIdentityURI;return r&&(e.subjectAlternativeName=r),t.certificateIssuer&&(e.extensions={issuer:t.certificateIssuer}),e}function kDt(t){return new w1.FulcioSigner({fulcioBaseURL:t.fulcioURL,identityProvider:t.identityProvider||QDt(t),retry:t.retry??Fa.DEFAULT_RETRY,timeout:t.timeout??Fa.DEFAULT_TIMEOUT})}function QDt(t){let e=t.identityToken;return e?{getToken:()=>Promise.resolve(e)}:new w1.CIContextProvider("sigstore")}function RDt(t){let e=[];return TDt(t)&&e.push(new w1.RekorWitness({rekorBaseURL:t.rekorURL,entryType:t.legacyCompatibility?"intoto":"dsse",fetchOnConflict:!1,retry:t.retry??Fa.DEFAULT_RETRY,timeout:t.timeout??Fa.DEFAULT_TIMEOUT})),FDt(t)&&e.push(new w1.TSAWitness({tsaBaseURL:t.tsaServerURL,retry:t.retry??Fa.DEFAULT_RETRY,timeout:t.timeout??Fa.DEFAULT_TIMEOUT})),e}function TDt(t){return t.tlogUpload!==!1}function FDt(t){return t.tsaServerURL!==void 0}});var Txe=_(su=>{"use strict";var NDt=su&&su.__createBinding||(Object.create?function(t,e,r,s){s===void 0&&(s=r);var a=Object.getOwnPropertyDescriptor(e,r);(!a||("get"in a?!e.__esModule:a.writable||a.configurable))&&(a={enumerable:!0,get:function(){return e[r]}}),Object.defineProperty(t,s,a)}:function(t,e,r,s){s===void 0&&(s=r),t[s]=e[r]}),ODt=su&&su.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),Qxe=su&&su.__importStar||function(){var t=function(e){return t=Object.getOwnPropertyNames||function(r){var s=[];for(var a in r)Object.prototype.hasOwnProperty.call(r,a)&&(s[s.length]=a);return s},t(e)};return function(e){if(e&&e.__esModule)return e;var r={};if(e!=null)for(var s=t(e),a=0;aa.verify(t,s))}async function Rxe(t={}){let e=await LDt.getTrustedRoot({mirrorURL:t.tufMirrorURL,rootPath:t.tufRootPath,cachePath:t.tufCachePath,forceCache:t.tufForceCache,retry:t.retry??B1.DEFAULT_RETRY,timeout:t.timeout??B1.DEFAULT_TIMEOUT}),r=t.keySelector?B1.createKeyFinder(t.keySelector):void 0,s=(0,BK.toTrustMaterial)(e,r),a={ctlogThreshold:t.ctLogThreshold,tlogThreshold:t.tlogThreshold},n=new BK.Verifier(s,a),c=B1.createVerificationPolicy(t);return{verify:(f,p)=>{let h=(0,vK.bundleFromJSON)(f),E=(0,BK.toSignedEntity)(h,p);n.verify(E,c)}}}});var Nxe=_(Ni=>{"use strict";Object.defineProperty(Ni,"__esModule",{value:!0});Ni.verify=Ni.sign=Ni.createVerifier=Ni.attest=Ni.VerificationError=Ni.PolicyError=Ni.TUFError=Ni.InternalError=Ni.DEFAULT_REKOR_URL=Ni.DEFAULT_FULCIO_URL=Ni.ValidationError=void 0;var HDt=EP();Object.defineProperty(Ni,"ValidationError",{enumerable:!0,get:function(){return HDt.ValidationError}});var SK=F7();Object.defineProperty(Ni,"DEFAULT_FULCIO_URL",{enumerable:!0,get:function(){return SK.DEFAULT_FULCIO_URL}});Object.defineProperty(Ni,"DEFAULT_REKOR_URL",{enumerable:!0,get:function(){return SK.DEFAULT_REKOR_URL}});Object.defineProperty(Ni,"InternalError",{enumerable:!0,get:function(){return SK.InternalError}});var jDt=pL();Object.defineProperty(Ni,"TUFError",{enumerable:!0,get:function(){return jDt.TUFError}});var Fxe=PL();Object.defineProperty(Ni,"PolicyError",{enumerable:!0,get:function(){return Fxe.PolicyError}});Object.defineProperty(Ni,"VerificationError",{enumerable:!0,get:function(){return Fxe.VerificationError}});var bL=Txe();Object.defineProperty(Ni,"attest",{enumerable:!0,get:function(){return bL.attest}});Object.defineProperty(Ni,"createVerifier",{enumerable:!0,get:function(){return bL.createVerifier}});Object.defineProperty(Ni,"sign",{enumerable:!0,get:function(){return bL.sign}});Object.defineProperty(Ni,"verify",{enumerable:!0,get:function(){return bL.verify}})});Dt();Ge();Dt();var pke=Ie("child_process"),hke=ut(Fd());Yt();var $I=new Map([]);var Gv={};Vt(Gv,{BaseCommand:()=>ft,WorkspaceRequiredError:()=>ar,getCli:()=>Bde,getDynamicLibs:()=>wde,getPluginConfiguration:()=>tC,openWorkspace:()=>eC,pluginCommands:()=>$I,runExit:()=>YT});Yt();var ft=class extends ot{constructor(){super(...arguments);this.cwd=ge.String("--cwd",{hidden:!0})}validateAndExecute(){if(typeof this.cwd<"u")throw new nt("The --cwd option is ambiguous when used anywhere else than the very first parameter provided in the command line, before even the command path");return super.validateAndExecute()}};Ge();Dt();Yt();var ar=class extends nt{constructor(e,r){let s=J.relative(e,r),a=J.join(e,Ut.fileName);super(`This command can only be run from within a workspace of your project (${s} isn't a workspace of ${a}).`)}};Ge();Dt();eA();wc();pv();Yt();var hat=ut(Ai());Ul();var wde=()=>new Map([["@yarnpkg/cli",Gv],["@yarnpkg/core",jv],["@yarnpkg/fslib",_2],["@yarnpkg/libzip",fv],["@yarnpkg/parsers",J2],["@yarnpkg/shell",mv],["clipanion",oB],["semver",hat],["typanion",Ea]]);Ge();async function eC(t,e){let{project:r,workspace:s}=await Rt.find(t,e);if(!s)throw new ar(r.cwd,e);return s}Ge();Dt();eA();wc();pv();Yt();var fbt=ut(Ai());Ul();var f5={};Vt(f5,{AddCommand:()=>sC,BinCommand:()=>oC,CacheCleanCommand:()=>aC,ClipanionCommand:()=>pC,ConfigCommand:()=>fC,ConfigGetCommand:()=>lC,ConfigSetCommand:()=>cC,ConfigUnsetCommand:()=>uC,DedupeCommand:()=>AC,EntryCommand:()=>gC,ExecCommand:()=>mC,ExplainCommand:()=>IC,ExplainPeerRequirementsCommand:()=>yC,HelpCommand:()=>hC,InfoCommand:()=>CC,LinkCommand:()=>BC,NodeCommand:()=>vC,PluginCheckCommand:()=>SC,PluginImportCommand:()=>bC,PluginImportSourcesCommand:()=>xC,PluginListCommand:()=>DC,PluginRemoveCommand:()=>kC,PluginRuntimeCommand:()=>QC,RebuildCommand:()=>RC,RemoveCommand:()=>TC,RunCommand:()=>NC,RunIndexCommand:()=>FC,SetResolutionCommand:()=>OC,SetVersionCommand:()=>EC,SetVersionSourcesCommand:()=>PC,UnlinkCommand:()=>LC,UpCommand:()=>MC,VersionCommand:()=>dC,WhyCommand:()=>UC,WorkspaceCommand:()=>qC,WorkspacesListCommand:()=>GC,YarnCommand:()=>wC,dedupeUtils:()=>tF,default:()=>bct,suggestUtils:()=>Zu});var Yye=ut(Fd());Ge();Ge();Ge();Yt();var uye=ut(Vv());Ul();var Zu={};Vt(Zu,{Modifier:()=>jq,Strategy:()=>$T,Target:()=>Jv,WorkspaceModifier:()=>sye,applyModifier:()=>Flt,extractDescriptorFromPath:()=>Gq,extractRangeModifier:()=>oye,fetchDescriptorFrom:()=>qq,findProjectDescriptors:()=>cye,getModifier:()=>Kv,getSuggestedDescriptors:()=>zv,makeWorkspaceDescriptor:()=>lye,toWorkspaceModifier:()=>aye});Ge();Ge();Dt();var Hq=ut(Ai()),Rlt="workspace:",Jv=(s=>(s.REGULAR="dependencies",s.DEVELOPMENT="devDependencies",s.PEER="peerDependencies",s))(Jv||{}),jq=(s=>(s.CARET="^",s.TILDE="~",s.EXACT="",s))(jq||{}),sye=(s=>(s.CARET="^",s.TILDE="~",s.EXACT="*",s))(sye||{}),$T=(n=>(n.KEEP="keep",n.REUSE="reuse",n.PROJECT="project",n.LATEST="latest",n.CACHE="cache",n))($T||{});function Kv(t,e){return t.exact?"":t.caret?"^":t.tilde?"~":e.configuration.get("defaultSemverRangePrefix")}var Tlt=/^([\^~]?)[0-9]+(?:\.[0-9]+){0,2}(?:-\S+)?$/;function oye(t,{project:e}){let r=t.match(Tlt);return r?r[1]:e.configuration.get("defaultSemverRangePrefix")}function Flt(t,e){let{protocol:r,source:s,params:a,selector:n}=G.parseRange(t.range);return Hq.default.valid(n)&&(n=`${e}${t.range}`),G.makeDescriptor(t,G.makeRange({protocol:r,source:s,params:a,selector:n}))}function aye(t){switch(t){case"^":return"^";case"~":return"~";case"":return"*";default:throw new Error(`Assertion failed: Unknown modifier: "${t}"`)}}function lye(t,e){return G.makeDescriptor(t.anchoredDescriptor,`${Rlt}${aye(e)}`)}async function cye(t,{project:e,target:r}){let s=new Map,a=n=>{let c=s.get(n.descriptorHash);return c||s.set(n.descriptorHash,c={descriptor:n,locators:[]}),c};for(let n of e.workspaces)if(r==="peerDependencies"){let c=n.manifest.peerDependencies.get(t.identHash);c!==void 0&&a(c).locators.push(n.anchoredLocator)}else{let c=n.manifest.dependencies.get(t.identHash),f=n.manifest.devDependencies.get(t.identHash);r==="devDependencies"?f!==void 0?a(f).locators.push(n.anchoredLocator):c!==void 0&&a(c).locators.push(n.anchoredLocator):c!==void 0?a(c).locators.push(n.anchoredLocator):f!==void 0&&a(f).locators.push(n.anchoredLocator)}return s}async function Gq(t,{cwd:e,workspace:r}){return await Olt(async s=>{J.isAbsolute(t)||(t=J.relative(r.cwd,J.resolve(e,t)),t.match(/^\.{0,2}\//)||(t=`./${t}`));let{project:a}=r,n=await qq(G.makeIdent(null,"archive"),t,{project:r.project,cache:s,workspace:r});if(!n)throw new Error("Assertion failed: The descriptor should have been found");let c=new ki,f=a.configuration.makeResolver(),p=a.configuration.makeFetcher(),h={checksums:a.storedChecksums,project:a,cache:s,fetcher:p,report:c,resolver:f},E=f.bindDescriptor(n,r.anchoredLocator,h),C=G.convertDescriptorToLocator(E),S=await p.fetch(C,h),b=await Ut.find(S.prefixPath,{baseFs:S.packageFs});if(!b.name)throw new Error("Target path doesn't have a name");return G.makeDescriptor(b.name,t)})}function Nlt(t){if(t.range==="unknown")return{type:"resolve",range:"latest"};if(Fr.validRange(t.range))return{type:"fixed",range:t.range};if(Mp.test(t.range))return{type:"resolve",range:t.range};let e=t.range.match(/^(?:jsr:|npm:)(.*)/);if(!e)return{type:"fixed",range:t.range};let[,r]=e,s=`${G.stringifyIdent(t)}@`;return r.startsWith(s)&&(r=r.slice(s.length)),Fr.validRange(r)?{type:"fixed",range:t.range}:Mp.test(r)?{type:"resolve",range:t.range}:{type:"fixed",range:t.range}}async function zv(t,{project:e,workspace:r,cache:s,target:a,fixed:n,modifier:c,strategies:f,maxResults:p=1/0}){if(!(p>=0))throw new Error(`Invalid maxResults (${p})`);let h=!n||t.range==="unknown"?Nlt(t):{type:"fixed",range:t.range};if(h.type==="fixed")return{suggestions:[{descriptor:t,name:`Use ${G.prettyDescriptor(e.configuration,t)}`,reason:"(unambiguous explicit request)"}],rejections:[]};let E=typeof r<"u"&&r!==null&&r.manifest[a].get(t.identHash)||null,C=[],S=[],b=async I=>{try{await I()}catch(T){S.push(T)}};for(let I of f){if(C.length>=p)break;switch(I){case"keep":await b(async()=>{E&&C.push({descriptor:E,name:`Keep ${G.prettyDescriptor(e.configuration,E)}`,reason:"(no changes)"})});break;case"reuse":await b(async()=>{for(let{descriptor:T,locators:N}of(await cye(t,{project:e,target:a})).values()){if(N.length===1&&N[0].locatorHash===r.anchoredLocator.locatorHash&&f.includes("keep"))continue;let U=`(originally used by ${G.prettyLocator(e.configuration,N[0])}`;U+=N.length>1?` and ${N.length-1} other${N.length>2?"s":""})`:")",C.push({descriptor:T,name:`Reuse ${G.prettyDescriptor(e.configuration,T)}`,reason:U})}});break;case"cache":await b(async()=>{for(let T of e.storedDescriptors.values())T.identHash===t.identHash&&C.push({descriptor:T,name:`Reuse ${G.prettyDescriptor(e.configuration,T)}`,reason:"(already used somewhere in the lockfile)"})});break;case"project":await b(async()=>{if(r.manifest.name!==null&&t.identHash===r.manifest.name.identHash)return;let T=e.tryWorkspaceByIdent(t);if(T===null)return;let N=lye(T,c);C.push({descriptor:N,name:`Attach ${G.prettyDescriptor(e.configuration,N)}`,reason:`(local workspace at ${he.pretty(e.configuration,T.relativeCwd,he.Type.PATH)})`})});break;case"latest":{let T=e.configuration.get("enableNetwork"),N=e.configuration.get("enableOfflineMode");await b(async()=>{if(a==="peerDependencies")C.push({descriptor:G.makeDescriptor(t,"*"),name:"Use *",reason:"(catch-all peer dependency pattern)"});else if(!T&&!N)C.push({descriptor:null,name:"Resolve from latest",reason:he.pretty(e.configuration,"(unavailable because enableNetwork is toggled off)","grey")});else{let U=await qq(t,h.range,{project:e,cache:s,workspace:r,modifier:c});U&&C.push({descriptor:U,name:`Use ${G.prettyDescriptor(e.configuration,U)}`,reason:`(resolved from ${N?"the cache":"latest"})`})}})}break}}return{suggestions:C.slice(0,p),rejections:S.slice(0,p)}}async function qq(t,e,{project:r,cache:s,workspace:a,preserveModifier:n=!0,modifier:c}){let f=r.configuration.normalizeDependency(G.makeDescriptor(t,e)),p=new ki,h=r.configuration.makeFetcher(),E=r.configuration.makeResolver(),C={project:r,fetcher:h,cache:s,checksums:r.storedChecksums,report:p,cacheOptions:{skipIntegrityCheck:!0}},S={...C,resolver:E,fetchOptions:C},b=E.bindDescriptor(f,a.anchoredLocator,S),I=await E.getCandidates(b,{},S);if(I.length===0)return null;let T=I[0],{protocol:N,source:U,params:W,selector:ee}=G.parseRange(G.convertToManifestRange(T.reference));if(N===r.configuration.get("defaultProtocol")&&(N=null),Hq.default.valid(ee)){let ie=ee;if(typeof c<"u")ee=c+ee;else if(n!==!1){let me=typeof n=="string"?n:f.range;ee=oye(me,{project:r})+ee}let ue=G.makeDescriptor(T,G.makeRange({protocol:N,source:U,params:W,selector:ee}));(await E.getCandidates(r.configuration.normalizeDependency(ue),{},S)).length!==1&&(ee=ie)}return G.makeDescriptor(T,G.makeRange({protocol:N,source:U,params:W,selector:ee}))}async function Olt(t){return await ce.mktempPromise(async e=>{let r=ze.create(e);return r.useWithSource(e,{enableMirror:!1,compressionLevel:0},e,{overwrite:!0}),await t(new Kr(e,{configuration:r,check:!1,immutable:!1}))})}var sC=class extends ft{constructor(){super(...arguments);this.json=ge.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.fixed=ge.Boolean("-F,--fixed",!1,{description:"Store dependency tags as-is instead of resolving them"});this.exact=ge.Boolean("-E,--exact",!1,{description:"Don't use any semver modifier on the resolved range"});this.tilde=ge.Boolean("-T,--tilde",!1,{description:"Use the `~` semver modifier on the resolved range"});this.caret=ge.Boolean("-C,--caret",!1,{description:"Use the `^` semver modifier on the resolved range"});this.dev=ge.Boolean("-D,--dev",!1,{description:"Add a package as a dev dependency"});this.peer=ge.Boolean("-P,--peer",!1,{description:"Add a package as a peer dependency"});this.optional=ge.Boolean("-O,--optional",!1,{description:"Add / upgrade a package to an optional regular / peer dependency"});this.preferDev=ge.Boolean("--prefer-dev",!1,{description:"Add / upgrade a package to a dev dependency"});this.interactive=ge.Boolean("-i,--interactive",{description:"Reuse the specified package from other workspaces in the project"});this.cached=ge.Boolean("--cached",!1,{description:"Reuse the highest version already used somewhere within the project"});this.mode=ge.String("--mode",{description:"Change what artifacts installs generate",validator:fo($l)});this.silent=ge.Boolean("--silent",{hidden:!0});this.packages=ge.Rest()}static{this.paths=[["add"]]}static{this.usage=ot.Usage({description:"add dependencies to the project",details:"\n This command adds a package to the package.json for the nearest workspace.\n\n - If it didn't exist before, the package will by default be added to the regular `dependencies` field, but this behavior can be overriden thanks to the `-D,--dev` flag (which will cause the dependency to be added to the `devDependencies` field instead) and the `-P,--peer` flag (which will do the same but for `peerDependencies`).\n\n - If the package was already listed in your dependencies, it will by default be upgraded whether it's part of your `dependencies` or `devDependencies` (it won't ever update `peerDependencies`, though).\n\n - If set, the `--prefer-dev` flag will operate as a more flexible `-D,--dev` in that it will add the package to your `devDependencies` if it isn't already listed in either `dependencies` or `devDependencies`, but it will also happily upgrade your `dependencies` if that's what you already use (whereas `-D,--dev` would throw an exception).\n\n - If set, the `-O,--optional` flag will add the package to the `optionalDependencies` field and, in combination with the `-P,--peer` flag, it will add the package as an optional peer dependency. If the package was already listed in your `dependencies`, it will be upgraded to `optionalDependencies`. If the package was already listed in your `peerDependencies`, in combination with the `-P,--peer` flag, it will be upgraded to an optional peer dependency: `\"peerDependenciesMeta\": { \"\": { \"optional\": true } }`\n\n - If the added package doesn't specify a range at all its `latest` tag will be resolved and the returned version will be used to generate a new semver range (using the `^` modifier by default unless otherwise configured via the `defaultSemverRangePrefix` configuration, or the `~` modifier if `-T,--tilde` is specified, or no modifier at all if `-E,--exact` is specified). Two exceptions to this rule: the first one is that if the package is a workspace then its local version will be used, and the second one is that if you use `-P,--peer` the default range will be `*` and won't be resolved at all.\n\n - If the added package specifies a range (such as `^1.0.0`, `latest`, or `rc`), Yarn will add this range as-is in the resulting package.json entry (in particular, tags such as `rc` will be encoded as-is rather than being converted into a semver range).\n\n If the `--cached` option is used, Yarn will preferably reuse the highest version already used somewhere within the project, even if through a transitive dependency.\n\n If the `-i,--interactive` option is used (or if the `preferInteractive` settings is toggled on) the command will first try to check whether other workspaces in the project use the specified package and, if so, will offer to reuse them.\n\n If the `--mode=` option is set, Yarn will change which artifacts are generated. The modes currently supported are:\n\n - `skip-build` will not run the build scripts at all. Note that this is different from setting `enableScripts` to false because the latter will disable build scripts, and thus affect the content of the artifacts generated on disk, whereas the former will just disable the build step - but not the scripts themselves, which just won't run.\n\n - `update-lockfile` will skip the link step altogether, and only fetch packages that are missing from the lockfile (or that have no associated checksums). This mode is typically used by tools like Renovate or Dependabot to keep a lockfile up-to-date without incurring the full install cost.\n\n For a compilation of all the supported protocols, please consult the dedicated page from our website: https://yarnpkg.com/protocols.\n ",examples:[["Add a regular package to the current workspace","$0 add lodash"],["Add a specific version for a package to the current workspace","$0 add lodash@1.2.3"],["Add a package from a GitHub repository (the master branch) to the current workspace using a URL","$0 add lodash@https://github.com/lodash/lodash"],["Add a package from a GitHub repository (the master branch) to the current workspace using the GitHub protocol","$0 add lodash@github:lodash/lodash"],["Add a package from a GitHub repository (the master branch) to the current workspace using the GitHub protocol (shorthand)","$0 add lodash@lodash/lodash"],["Add a package from a specific branch of a GitHub repository to the current workspace using the GitHub protocol (shorthand)","$0 add lodash-es@lodash/lodash#es"],["Add a local package (gzipped tarball format) to the current workspace","$0 add local-package-name@file:../path/to/local-package-name-v0.1.2.tgz"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Rt.find(r,this.context.cwd),n=await Kr.find(r);if(!a)throw new ar(s.cwd,this.context.cwd);await s.restoreInstallState({restoreResolutions:!1});let c=this.fixed,f=r.isInteractive({interactive:this.interactive,stdout:this.context.stdout}),p=f||r.get("preferReuse"),h=Kv(this,s),E=[p?"reuse":void 0,"project",this.cached?"cache":void 0,"latest"].filter(W=>typeof W<"u"),C=f?1/0:1,S=W=>{let ee=G.tryParseDescriptor(W.slice(4));return ee?ee.range==="unknown"?G.makeDescriptor(ee,`jsr:${G.stringifyIdent(ee)}@latest`):G.makeDescriptor(ee,`jsr:${ee.range}`):null},b=await Promise.all(this.packages.map(async W=>{let ee=W.match(/^\.{0,2}\//)?await Gq(W,{cwd:this.context.cwd,workspace:a}):W.startsWith("jsr:")?S(W):G.tryParseDescriptor(W),ie=W.match(/^(https?:|git@github)/);if(ie)throw new nt(`It seems you are trying to add a package using a ${he.pretty(r,`${ie[0]}...`,he.Type.RANGE)} url; we now require package names to be explicitly specified. Try running the command again with the package name prefixed: ${he.pretty(r,"yarn add",he.Type.CODE)} ${he.pretty(r,G.makeDescriptor(G.makeIdent(null,"my-package"),`${ie[0]}...`),he.Type.DESCRIPTOR)}`);if(!ee)throw new nt(`The ${he.pretty(r,W,he.Type.CODE)} string didn't match the required format (package-name@range). Did you perhaps forget to explicitly reference the package name?`);let ue=Llt(a,ee,{dev:this.dev,peer:this.peer,preferDev:this.preferDev,optional:this.optional});return await Promise.all(ue.map(async me=>{let pe=await zv(ee,{project:s,workspace:a,cache:n,fixed:c,target:me,modifier:h,strategies:E,maxResults:C});return{request:ee,suggestedDescriptors:pe,target:me}}))})).then(W=>W.flat()),I=await lA.start({configuration:r,stdout:this.context.stdout,suggestInstall:!1},async W=>{for(let{request:ee,suggestedDescriptors:{suggestions:ie,rejections:ue}}of b)if(ie.filter(me=>me.descriptor!==null).length===0){let[me]=ue;if(typeof me>"u")throw new Error("Assertion failed: Expected an error to have been set");s.configuration.get("enableNetwork")?W.reportError(27,`${G.prettyDescriptor(r,ee)} can't be resolved to a satisfying range`):W.reportError(27,`${G.prettyDescriptor(r,ee)} can't be resolved to a satisfying range (note: network resolution has been disabled)`),W.reportSeparator(),W.reportExceptionOnce(me)}});if(I.hasErrors())return I.exitCode();let T=!1,N=[],U=[];for(let{suggestedDescriptors:{suggestions:W},target:ee}of b){let ie,ue=W.filter(Be=>Be.descriptor!==null),le=ue[0].descriptor,me=ue.every(Be=>G.areDescriptorsEqual(Be.descriptor,le));ue.length===1||me?ie=le:(T=!0,{answer:ie}=await(0,uye.prompt)({type:"select",name:"answer",message:"Which range do you want to use?",choices:W.map(({descriptor:Be,name:Ce,reason:g})=>Be?{name:Ce,hint:g,descriptor:Be}:{name:Ce,hint:g,disabled:!0}),onCancel:()=>process.exit(130),result(Be){return this.find(Be,"descriptor")},stdin:this.context.stdin,stdout:this.context.stdout}));let pe=a.manifest[ee].get(ie.identHash);(typeof pe>"u"||pe.descriptorHash!==ie.descriptorHash)&&(a.manifest[ee].set(ie.identHash,ie),this.optional&&(ee==="dependencies"?a.manifest.ensureDependencyMeta({...ie,range:"unknown"}).optional=!0:ee==="peerDependencies"&&(a.manifest.ensurePeerDependencyMeta({...ie,range:"unknown"}).optional=!0)),typeof pe>"u"?N.push([a,ee,ie,E]):U.push([a,ee,pe,ie]))}return await r.triggerMultipleHooks(W=>W.afterWorkspaceDependencyAddition,N),await r.triggerMultipleHooks(W=>W.afterWorkspaceDependencyReplacement,U),T&&this.context.stdout.write(` `),await s.installWithNewReport({json:this.json,stdout:this.context.stdout,quiet:this.context.quiet},{cache:n,mode:this.mode})}};function Llt(t,e,{dev:r,peer:s,preferDev:a,optional:n}){let c=t.manifest.dependencies.has(e.identHash),f=t.manifest.devDependencies.has(e.identHash),p=t.manifest.peerDependencies.has(e.identHash);if((r||s)&&c)throw new nt(`Package "${G.prettyIdent(t.project.configuration,e)}" is already listed as a regular dependency - remove the -D,-P flags or remove it from your dependencies first`);if(!r&&!s&&p)throw new nt(`Package "${G.prettyIdent(t.project.configuration,e)}" is already listed as a peer dependency - use either of -D or -P, or remove it from your peer dependencies first`);if(n&&f)throw new nt(`Package "${G.prettyIdent(t.project.configuration,e)}" is already listed as a dev dependency - remove the -O flag or remove it from your dev dependencies first`);if(n&&!s&&p)throw new nt(`Package "${G.prettyIdent(t.project.configuration,e)}" is already listed as a peer dependency - remove the -O flag or add the -P flag or remove it from your peer dependencies first`);if((r||a)&&n)throw new nt(`Package "${G.prettyIdent(t.project.configuration,e)}" cannot simultaneously be a dev dependency and an optional dependency`);let h=[];return s&&h.push("peerDependencies"),(r||a)&&h.push("devDependencies"),n&&h.push("dependencies"),h.length>0?h:f?["devDependencies"]:p?["peerDependencies"]:["dependencies"]}Ge();Ge();Yt();var oC=class extends ft{constructor(){super(...arguments);this.verbose=ge.Boolean("-v,--verbose",!1,{description:"Print both the binary name and the locator of the package that provides the binary"});this.json=ge.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.name=ge.String({required:!1})}static{this.paths=[["bin"]]}static{this.usage=ot.Usage({description:"get the path to a binary script",details:` When used without arguments, this command will print the list of all the binaries available in the current workspace. Adding the \`-v,--verbose\` flag will cause the output to contain both the binary name and the locator of the package that provides the binary. When an argument is specified, this command will just print the path to the binary on the standard output and exit. Note that the reported path may be stored within a zip archive. `,examples:[["List all the available binaries","$0 bin"],["Print the path to a specific binary","$0 bin eslint"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,locator:a}=await Rt.find(r,this.context.cwd);if(await s.restoreInstallState(),this.name){let f=(await In.getPackageAccessibleBinaries(a,{project:s})).get(this.name);if(!f)throw new nt(`Couldn't find a binary named "${this.name}" for package "${G.prettyLocator(r,a)}"`);let[,p]=f;return this.context.stdout.write(`${p} `),0}return(await Ot.start({configuration:r,json:this.json,stdout:this.context.stdout},async c=>{let f=await In.getPackageAccessibleBinaries(a,{project:s}),h=Array.from(f.keys()).reduce((E,C)=>Math.max(E,C.length),0);for(let[E,[C,S]]of f)c.reportJson({name:E,source:G.stringifyIdent(C),path:S});if(this.verbose)for(let[E,[C]]of f)c.reportInfo(null,`${E.padEnd(h," ")} ${G.prettyLocator(r,C)}`);else for(let E of f.keys())c.reportInfo(null,E)})).exitCode()}};Ge();Dt();Yt();var aC=class extends ft{constructor(){super(...arguments);this.mirror=ge.Boolean("--mirror",!1,{description:"Remove the global cache files instead of the local cache files"});this.all=ge.Boolean("--all",!1,{description:"Remove both the global cache files and the local cache files of the current project"})}static{this.paths=[["cache","clean"],["cache","clear"]]}static{this.usage=ot.Usage({description:"remove the shared cache files",details:` This command will remove all the files from the cache. `,examples:[["Remove all the local archives","$0 cache clean"],["Remove all the archives stored in the ~/.yarn directory","$0 cache clean --mirror"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins);if(!r.get("enableCacheClean"))throw new nt("Cache cleaning is currently disabled. To enable it, set `enableCacheClean: true` in your configuration file. Note: Cache cleaning is typically not required and should be avoided when using Zero-Installs.");let s=await Kr.find(r);return(await Ot.start({configuration:r,stdout:this.context.stdout},async()=>{let n=(this.all||this.mirror)&&s.mirrorCwd!==null,c=!this.mirror;n&&(await ce.removePromise(s.mirrorCwd),await r.triggerHook(f=>f.cleanGlobalArtifacts,r)),c&&await ce.removePromise(s.cwd)})).exitCode()}};Ge();Yt();ql();var Wq=Ie("util"),lC=class extends ft{constructor(){super(...arguments);this.why=ge.Boolean("--why",!1,{description:"Print the explanation for why a setting has its value"});this.json=ge.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.unsafe=ge.Boolean("--no-redacted",!1,{description:"Don't redact secrets (such as tokens) from the output"});this.name=ge.String()}static{this.paths=[["config","get"]]}static{this.usage=ot.Usage({description:"read a configuration settings",details:` This command will print a configuration setting. Secrets (such as tokens) will be redacted from the output by default. If this behavior isn't desired, set the \`--no-redacted\` to get the untransformed value. `,examples:[["Print a simple configuration setting","yarn config get yarnPath"],["Print a complex configuration setting","yarn config get packageExtensions"],["Print a nested field from the configuration",`yarn config get 'npmScopes["my-company"].npmRegistryServer'`],["Print a token from the configuration","yarn config get npmAuthToken --no-redacted"],["Print a configuration setting as JSON","yarn config get packageExtensions --json"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),s=this.name.replace(/[.[].*$/,""),a=this.name.replace(/^[^.[]*/,"");if(typeof r.settings.get(s)>"u")throw new nt(`Couldn't find a configuration settings named "${s}"`);let c=r.getSpecial(s,{hideSecrets:!this.unsafe,getNativePaths:!0}),f=je.convertMapsToIndexableObjects(c),p=a?va(f,a):f,h=await Ot.start({configuration:r,includeFooter:!1,json:this.json,stdout:this.context.stdout},async E=>{E.reportJson(p)});if(!this.json){if(typeof p=="string")return this.context.stdout.write(`${p} `),h.exitCode();Wq.inspect.styles.name="cyan",this.context.stdout.write(`${(0,Wq.inspect)(p,{depth:1/0,colors:r.get("enableColors"),compact:!1})} `)}return h.exitCode()}};Ge();Yt();ql();var Yq=Ie("util"),cC=class extends ft{constructor(){super(...arguments);this.json=ge.Boolean("--json",!1,{description:"Set complex configuration settings to JSON values"});this.home=ge.Boolean("-H,--home",!1,{description:"Update the home configuration instead of the project configuration"});this.name=ge.String();this.value=ge.String()}static{this.paths=[["config","set"]]}static{this.usage=ot.Usage({description:"change a configuration settings",details:` This command will set a configuration setting. When used without the \`--json\` flag, it can only set a simple configuration setting (a string, a number, or a boolean). When used with the \`--json\` flag, it can set both simple and complex configuration settings, including Arrays and Objects. `,examples:[["Set a simple configuration setting (a string, a number, or a boolean)","yarn config set initScope myScope"],["Set a simple configuration setting (a string, a number, or a boolean) using the `--json` flag",'yarn config set initScope --json \\"myScope\\"'],["Set a complex configuration setting (an Array) using the `--json` flag",`yarn config set unsafeHttpWhitelist --json '["*.example.com", "example.com"]'`],["Set a complex configuration setting (an Object) using the `--json` flag",`yarn config set packageExtensions --json '{ "@babel/parser@*": { "dependencies": { "@babel/types": "*" } } }'`],["Set a nested configuration setting",'yarn config set npmScopes.company.npmRegistryServer "https://npm.example.com"'],["Set a nested configuration setting using indexed access for non-simple keys",`yarn config set 'npmRegistries["//npm.example.com"].npmAuthToken' "ffffffff-ffff-ffff-ffff-ffffffffffff"`]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),s=()=>{if(!r.projectCwd)throw new nt("This command must be run from within a project folder");return r.projectCwd},a=this.name.replace(/[.[].*$/,""),n=this.name.replace(/^[^.[]*\.?/,"");if(typeof r.settings.get(a)>"u")throw new nt(`Couldn't find a configuration settings named "${a}"`);if(a==="enableStrictSettings")throw new nt("This setting only affects the file it's in, and thus cannot be set from the CLI");let f=this.json?JSON.parse(this.value):this.value;await(this.home?I=>ze.updateHomeConfiguration(I):I=>ze.updateConfiguration(s(),I))(I=>{if(n){let T=f0(I);return Jd(T,this.name,f),T}else return{...I,[a]:f}});let E=(await ze.find(this.context.cwd,this.context.plugins)).getSpecial(a,{hideSecrets:!0,getNativePaths:!0}),C=je.convertMapsToIndexableObjects(E),S=n?va(C,n):C;return(await Ot.start({configuration:r,includeFooter:!1,stdout:this.context.stdout},async I=>{Yq.inspect.styles.name="cyan",I.reportInfo(0,`Successfully set ${this.name} to ${(0,Yq.inspect)(S,{depth:1/0,colors:r.get("enableColors"),compact:!1})}`)})).exitCode()}};Ge();Yt();ql();var uC=class extends ft{constructor(){super(...arguments);this.home=ge.Boolean("-H,--home",!1,{description:"Update the home configuration instead of the project configuration"});this.name=ge.String()}static{this.paths=[["config","unset"]]}static{this.usage=ot.Usage({description:"unset a configuration setting",details:` This command will unset a configuration setting. `,examples:[["Unset a simple configuration setting","yarn config unset initScope"],["Unset a complex configuration setting","yarn config unset packageExtensions"],["Unset a nested configuration setting","yarn config unset npmScopes.company.npmRegistryServer"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),s=()=>{if(!r.projectCwd)throw new nt("This command must be run from within a project folder");return r.projectCwd},a=this.name.replace(/[.[].*$/,""),n=this.name.replace(/^[^.[]*\.?/,"");if(typeof r.settings.get(a)>"u")throw new nt(`Couldn't find a configuration settings named "${a}"`);let f=this.home?h=>ze.updateHomeConfiguration(h):h=>ze.updateConfiguration(s(),h);return(await Ot.start({configuration:r,includeFooter:!1,stdout:this.context.stdout},async h=>{let E=!1;await f(C=>{if(!vB(C,this.name))return h.reportWarning(0,`Configuration doesn't contain setting ${this.name}; there is nothing to unset`),E=!0,C;let S=n?f0(C):{...C};return A0(S,this.name),S}),E||h.reportInfo(0,`Successfully unset ${this.name}`)})).exitCode()}};Ge();Dt();Yt();var eF=Ie("util"),fC=class extends ft{constructor(){super(...arguments);this.noDefaults=ge.Boolean("--no-defaults",!1,{description:"Omit the default values from the display"});this.json=ge.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.verbose=ge.Boolean("-v,--verbose",{hidden:!0});this.why=ge.Boolean("--why",{hidden:!0});this.names=ge.Rest()}static{this.paths=[["config"]]}static{this.usage=ot.Usage({description:"display the current configuration",details:` This command prints the current active configuration settings. `,examples:[["Print the active configuration settings","$0 config"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins,{strict:!1}),s=await SI({configuration:r,stdout:this.context.stdout,forceError:this.json},[{option:this.verbose,message:"The --verbose option is deprecated, the settings' descriptions are now always displayed"},{option:this.why,message:"The --why option is deprecated, the settings' sources are now always displayed"}]);if(s!==null)return s;let a=this.names.length>0?[...new Set(this.names)].sort():[...r.settings.keys()].sort(),n,c=await Ot.start({configuration:r,json:this.json,stdout:this.context.stdout,includeFooter:!1},async f=>{if(r.invalid.size>0&&!this.json){for(let[p,h]of r.invalid)f.reportError(34,`Invalid configuration key "${p}" in ${h}`);f.reportSeparator()}if(this.json)for(let p of a){if(this.noDefaults&&!r.sources.has(p))continue;let h=r.settings.get(p);typeof h>"u"&&f.reportError(34,`No configuration key named "${p}"`);let E=r.getSpecial(p,{hideSecrets:!0,getNativePaths:!0}),C=r.sources.get(p)??"",S=C&&C[0]!=="<"?fe.fromPortablePath(C):C;f.reportJson({key:p,effective:E,source:S,...h})}else{let p={breakLength:1/0,colors:r.get("enableColors"),maxArrayLength:2},h={},E={children:h};for(let C of a){if(this.noDefaults&&!r.sources.has(C))continue;let S=r.settings.get(C),b=r.sources.get(C)??"",I=r.getSpecial(C,{hideSecrets:!0,getNativePaths:!0}),T={Description:{label:"Description",value:he.tuple(he.Type.MARKDOWN,{text:S.description,format:this.cli.format(),paragraphs:!1})},Source:{label:"Source",value:he.tuple(b[0]==="<"?he.Type.CODE:he.Type.PATH,b)}};h[C]={value:he.tuple(he.Type.CODE,C),children:T};let N=(U,W)=>{for(let[ee,ie]of W)if(ie instanceof Map){let ue={};U[ee]={children:ue},N(ue,ie)}else U[ee]={label:ee,value:he.tuple(he.Type.NO_HINT,(0,eF.inspect)(ie,p))}};I instanceof Map?N(T,I):T.Value={label:"Value",value:he.tuple(he.Type.NO_HINT,(0,eF.inspect)(I,p))}}a.length!==1&&(n=void 0),xs.emitTree(E,{configuration:r,json:this.json,stdout:this.context.stdout,separators:2})}});if(!this.json&&typeof n<"u"){let f=a[0],p=(0,eF.inspect)(r.getSpecial(f,{hideSecrets:!0,getNativePaths:!0}),{colors:r.get("enableColors")});this.context.stdout.write(` `),this.context.stdout.write(`${p} `)}return c.exitCode()}};Ge();Yt();Ul();var tF={};Vt(tF,{Strategy:()=>Zv,acceptedStrategies:()=>Mlt,dedupe:()=>Vq});Ge();Ge();var fye=ut(Go()),Zv=(e=>(e.HIGHEST="highest",e))(Zv||{}),Mlt=new Set(Object.values(Zv)),Ult={highest:async(t,e,{resolver:r,fetcher:s,resolveOptions:a,fetchOptions:n})=>{let c=new Map;for(let[p,h]of t.storedResolutions){let E=t.storedDescriptors.get(p);if(typeof E>"u")throw new Error(`Assertion failed: The descriptor (${p}) should have been registered`);je.getSetWithDefault(c,E.identHash).add(h)}let f=new Map(je.mapAndFilter(t.storedDescriptors.values(),p=>G.isVirtualDescriptor(p)?je.mapAndFilter.skip:[p.descriptorHash,je.makeDeferred()]));for(let p of t.storedDescriptors.values()){let h=f.get(p.descriptorHash);if(typeof h>"u")throw new Error(`Assertion failed: The descriptor (${p.descriptorHash}) should have been registered`);let E=t.storedResolutions.get(p.descriptorHash);if(typeof E>"u")throw new Error(`Assertion failed: The resolution (${p.descriptorHash}) should have been registered`);let C=t.originalPackages.get(E);if(typeof C>"u")throw new Error(`Assertion failed: The package (${E}) should have been registered`);Promise.resolve().then(async()=>{let S=r.getResolutionDependencies(p,a),b=Object.fromEntries(await je.allSettledSafe(Object.entries(S).map(async([ee,ie])=>{let ue=f.get(ie.descriptorHash);if(typeof ue>"u")throw new Error(`Assertion failed: The descriptor (${ie.descriptorHash}) should have been registered`);let le=await ue.promise;if(!le)throw new Error("Assertion failed: Expected the dependency to have been through the dedupe process itself");return[ee,le.updatedPackage]})));if(e.length&&!fye.default.isMatch(G.stringifyIdent(p),e)||!r.shouldPersistResolution(C,a))return C;let I=c.get(p.identHash);if(typeof I>"u")throw new Error(`Assertion failed: The resolutions (${p.identHash}) should have been registered`);if(I.size===1)return C;let T=[...I].map(ee=>{let ie=t.originalPackages.get(ee);if(typeof ie>"u")throw new Error(`Assertion failed: The package (${ee}) should have been registered`);return ie}),N=await r.getSatisfying(p,b,T,a),U=N.locators?.[0];if(typeof U>"u"||!N.sorted)return C;let W=t.originalPackages.get(U.locatorHash);if(typeof W>"u")throw new Error(`Assertion failed: The package (${U.locatorHash}) should have been registered`);return W}).then(async S=>{let b=await t.preparePackage(S,{resolver:r,resolveOptions:a});h.resolve({descriptor:p,currentPackage:C,updatedPackage:S,resolvedPackage:b})}).catch(S=>{h.reject(S)})}return[...f.values()].map(p=>p.promise)}};async function Vq(t,{strategy:e,patterns:r,cache:s,report:a}){let{configuration:n}=t,c=new ki,f=n.makeResolver(),p=n.makeFetcher(),h={cache:s,checksums:t.storedChecksums,fetcher:p,project:t,report:c,cacheOptions:{skipIntegrityCheck:!0}},E={project:t,resolver:f,report:c,fetchOptions:h};return await a.startTimerPromise("Deduplication step",async()=>{let C=Ult[e],S=await C(t,r,{resolver:f,resolveOptions:E,fetcher:p,fetchOptions:h}),b=Ao.progressViaCounter(S.length);await a.reportProgress(b);let I=0;await Promise.all(S.map(U=>U.then(W=>{if(W===null||W.currentPackage.locatorHash===W.updatedPackage.locatorHash)return;I++;let{descriptor:ee,currentPackage:ie,updatedPackage:ue}=W;a.reportInfo(0,`${G.prettyDescriptor(n,ee)} can be deduped from ${G.prettyLocator(n,ie)} to ${G.prettyLocator(n,ue)}`),a.reportJson({descriptor:G.stringifyDescriptor(ee),currentResolution:G.stringifyLocator(ie),updatedResolution:G.stringifyLocator(ue)}),t.storedResolutions.set(ee.descriptorHash,ue.locatorHash)}).finally(()=>b.tick())));let T;switch(I){case 0:T="No packages";break;case 1:T="One package";break;default:T=`${I} packages`}let N=he.pretty(n,e,he.Type.CODE);return a.reportInfo(0,`${T} can be deduped using the ${N} strategy`),I})}var AC=class extends ft{constructor(){super(...arguments);this.strategy=ge.String("-s,--strategy","highest",{description:"The strategy to use when deduping dependencies",validator:fo(Zv)});this.check=ge.Boolean("-c,--check",!1,{description:"Exit with exit code 1 when duplicates are found, without persisting the dependency tree"});this.json=ge.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.mode=ge.String("--mode",{description:"Change what artifacts installs generate",validator:fo($l)});this.patterns=ge.Rest()}static{this.paths=[["dedupe"]]}static{this.usage=ot.Usage({description:"deduplicate dependencies with overlapping ranges",details:"\n Duplicates are defined as descriptors with overlapping ranges being resolved and locked to different locators. They are a natural consequence of Yarn's deterministic installs, but they can sometimes pile up and unnecessarily increase the size of your project.\n\n This command dedupes dependencies in the current project using different strategies (only one is implemented at the moment):\n\n - `highest`: Reuses (where possible) the locators with the highest versions. This means that dependencies can only be upgraded, never downgraded. It's also guaranteed that it never takes more than a single pass to dedupe the entire dependency tree.\n\n **Note:** Even though it never produces a wrong dependency tree, this command should be used with caution, as it modifies the dependency tree, which can sometimes cause problems when packages don't strictly follow semver recommendations. Because of this, it is recommended to also review the changes manually.\n\n If set, the `-c,--check` flag will only report the found duplicates, without persisting the modified dependency tree. If changes are found, the command will exit with a non-zero exit code, making it suitable for CI purposes.\n\n If the `--mode=` option is set, Yarn will change which artifacts are generated. The modes currently supported are:\n\n - `skip-build` will not run the build scripts at all. Note that this is different from setting `enableScripts` to false because the latter will disable build scripts, and thus affect the content of the artifacts generated on disk, whereas the former will just disable the build step - but not the scripts themselves, which just won't run.\n\n - `update-lockfile` will skip the link step altogether, and only fetch packages that are missing from the lockfile (or that have no associated checksums). This mode is typically used by tools like Renovate or Dependabot to keep a lockfile up-to-date without incurring the full install cost.\n\n This command accepts glob patterns as arguments (if valid Idents and supported by [micromatch](https://github.com/micromatch/micromatch)). Make sure to escape the patterns, to prevent your own shell from trying to expand them.\n\n ### In-depth explanation:\n\n Yarn doesn't deduplicate dependencies by default, otherwise installs wouldn't be deterministic and the lockfile would be useless. What it actually does is that it tries to not duplicate dependencies in the first place.\n\n **Example:** If `foo@^2.3.4` (a dependency of a dependency) has already been resolved to `foo@2.3.4`, running `yarn add foo@*`will cause Yarn to reuse `foo@2.3.4`, even if the latest `foo` is actually `foo@2.10.14`, thus preventing unnecessary duplication.\n\n Duplication happens when Yarn can't unlock dependencies that have already been locked inside the lockfile.\n\n **Example:** If `foo@^2.3.4` (a dependency of a dependency) has already been resolved to `foo@2.3.4`, running `yarn add foo@2.10.14` will cause Yarn to install `foo@2.10.14` because the existing resolution doesn't satisfy the range `2.10.14`. This behavior can lead to (sometimes) unwanted duplication, since now the lockfile contains 2 separate resolutions for the 2 `foo` descriptors, even though they have overlapping ranges, which means that the lockfile can be simplified so that both descriptors resolve to `foo@2.10.14`.\n ",examples:[["Dedupe all packages","$0 dedupe"],["Dedupe all packages using a specific strategy","$0 dedupe --strategy highest"],["Dedupe a specific package","$0 dedupe lodash"],["Dedupe all packages with the `@babel/*` scope","$0 dedupe '@babel/*'"],["Check for duplicates (can be used as a CI step)","$0 dedupe --check"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s}=await Rt.find(r,this.context.cwd),a=await Kr.find(r);await s.restoreInstallState({restoreResolutions:!1});let n=0,c=await Ot.start({configuration:r,includeFooter:!1,stdout:this.context.stdout,json:this.json},async f=>{n=await Vq(s,{strategy:this.strategy,patterns:this.patterns,cache:a,report:f})});return c.hasErrors()?c.exitCode():this.check?n?1:0:await s.installWithNewReport({json:this.json,stdout:this.context.stdout},{cache:a,mode:this.mode})}};Ge();Yt();var pC=class extends ft{static{this.paths=[["--clipanion=definitions"]]}async execute(){let{plugins:e}=await ze.find(this.context.cwd,this.context.plugins),r=[];for(let c of e){let{commands:f}=c[1];if(f){let h=Ca.from(f).definitions();r.push([c[0],h])}}let s=this.cli.definitions(),a=(c,f)=>c.split(" ").slice(1).join()===f.split(" ").slice(1).join(),n=Aye()["@yarnpkg/builder"].bundles.standard;for(let c of r){let f=c[1];for(let p of f)s.find(h=>a(h.path,p.path)).plugin={name:c[0],isDefault:n.includes(c[0])}}this.context.stdout.write(`${JSON.stringify(s,null,2)} `)}};var hC=class extends ft{static{this.paths=[["help"],["--help"],["-h"]]}async execute(){this.context.stdout.write(this.cli.usage(null))}};Ge();Dt();Yt();var gC=class extends ft{constructor(){super(...arguments);this.leadingArgument=ge.String();this.args=ge.Proxy()}async execute(){if(this.leadingArgument.match(/[\\/]/)&&!G.tryParseIdent(this.leadingArgument)){let r=J.resolve(this.context.cwd,fe.toPortablePath(this.leadingArgument));return await this.cli.run(this.args,{cwd:r})}else return await this.cli.run(["run",this.leadingArgument,...this.args])}};Ge();var dC=class extends ft{static{this.paths=[["-v"],["--version"]]}async execute(){this.context.stdout.write(`${fn||""} `)}};Ge();Ge();Yt();var mC=class extends ft{constructor(){super(...arguments);this.commandName=ge.String();this.args=ge.Proxy()}static{this.paths=[["exec"]]}static{this.usage=ot.Usage({description:"execute a shell script",details:` This command simply executes a shell script within the context of the root directory of the active workspace using the portable shell. It also makes sure to call it in a way that's compatible with the current project (for example, on PnP projects the environment will be setup in such a way that PnP will be correctly injected into the environment). `,examples:[["Execute a single shell command","$0 exec echo Hello World"],["Execute a shell script",'$0 exec "tsc & babel src --out-dir lib"']]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,locator:a}=await Rt.find(r,this.context.cwd);return await s.restoreInstallState(),await In.executePackageShellcode(a,this.commandName,this.args,{cwd:this.context.cwd,stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr,project:s})}};Ge();Yt();Ul();var yC=class extends ft{constructor(){super(...arguments);this.hash=ge.String({required:!1,validator:Nx(wE(),[X2(/^p[0-9a-f]{6}$/)])})}static{this.paths=[["explain","peer-requirements"]]}static{this.usage=ot.Usage({description:"explain a set of peer requirements",details:` A peer requirement represents all peer requests that a subject must satisfy when providing a requested package to requesters. When the hash argument is specified, this command prints a detailed explanation of the peer requirement corresponding to the hash and whether it is satisfied or not. When used without arguments, this command lists all peer requirements and the corresponding hash that can be used to get detailed information about a given requirement. **Note:** A hash is a seven-letter code consisting of the letter 'p' followed by six characters that can be obtained from peer dependency warnings or from the list of all peer requirements(\`yarn explain peer-requirements\`). `,examples:[["Explain the corresponding peer requirement for a hash","$0 explain peer-requirements p1a4ed"],["List all peer requirements","$0 explain peer-requirements"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s}=await Rt.find(r,this.context.cwd);return await s.restoreInstallState({restoreResolutions:!1}),await s.applyLightResolution(),typeof this.hash<"u"?await Hlt(this.hash,s,{stdout:this.context.stdout}):await jlt(s,{stdout:this.context.stdout})}};async function Hlt(t,e,r){let s=e.peerRequirementNodes.get(t);if(typeof s>"u")throw new Error(`No peerDependency requirements found for hash: "${t}"`);let a=new Set,n=p=>a.has(p.requester.locatorHash)?{value:he.tuple(he.Type.DEPENDENT,{locator:p.requester,descriptor:p.descriptor}),children:p.children.size>0?[{value:he.tuple(he.Type.NO_HINT,"...")}]:[]}:(a.add(p.requester.locatorHash),{value:he.tuple(he.Type.DEPENDENT,{locator:p.requester,descriptor:p.descriptor}),children:Object.fromEntries(Array.from(p.children.values(),h=>[G.stringifyLocator(h.requester),n(h)]))}),c=e.peerWarnings.find(p=>p.hash===t);return(await Ot.start({configuration:e.configuration,stdout:r.stdout,includeFooter:!1,includePrefix:!1},async p=>{let h=he.mark(e.configuration),E=c?h.Cross:h.Check;if(p.reportInfo(0,`Package ${he.pretty(e.configuration,s.subject,he.Type.LOCATOR)} is requested to provide ${he.pretty(e.configuration,s.ident,he.Type.IDENT)} by its descendants`),p.reportSeparator(),p.reportInfo(0,he.pretty(e.configuration,s.subject,he.Type.LOCATOR)),xs.emitTree({children:Object.fromEntries(Array.from(s.requests.values(),C=>[G.stringifyLocator(C.requester),n(C)]))},{configuration:e.configuration,stdout:r.stdout,json:!1}),p.reportSeparator(),s.provided.range==="missing:"){let C=c?"":" , but all peer requests are optional";p.reportInfo(0,`${E} Package ${he.pretty(e.configuration,s.subject,he.Type.LOCATOR)} does not provide ${he.pretty(e.configuration,s.ident,he.Type.IDENT)}${C}.`)}else{let C=e.storedResolutions.get(s.provided.descriptorHash);if(!C)throw new Error("Assertion failed: Expected the descriptor to be registered");let S=e.storedPackages.get(C);if(!S)throw new Error("Assertion failed: Expected the package to be registered");p.reportInfo(0,`${E} Package ${he.pretty(e.configuration,s.subject,he.Type.LOCATOR)} provides ${he.pretty(e.configuration,s.ident,he.Type.IDENT)} with version ${G.prettyReference(e.configuration,S.version??"0.0.0")}, ${c?"which does not satisfy all requests.":"which satisfies all requests"}`),c?.type===3&&(c.range?p.reportInfo(0,` The combined requested range is ${he.pretty(e.configuration,c.range,he.Type.RANGE)}`):p.reportInfo(0," Unfortunately, the requested ranges have no overlap"))}})).exitCode()}async function jlt(t,e){return(await Ot.start({configuration:t.configuration,stdout:e.stdout,includeFooter:!1,includePrefix:!1},async s=>{let a=he.mark(t.configuration),n=je.sortMap(t.peerRequirementNodes,[([,c])=>G.stringifyLocator(c.subject),([,c])=>G.stringifyIdent(c.ident)]);for(let[,c]of n.values()){if(!c.root)continue;let f=t.peerWarnings.find(E=>E.hash===c.hash),p=[...G.allPeerRequests(c)],h;if(p.length>2?h=` and ${p.length-1} other dependencies`:p.length===2?h=" and 1 other dependency":h="",c.provided.range!=="missing:"){let E=t.storedResolutions.get(c.provided.descriptorHash);if(!E)throw new Error("Assertion failed: Expected the resolution to have been registered");let C=t.storedPackages.get(E);if(!C)throw new Error("Assertion failed: Expected the provided package to have been registered");let S=`${he.pretty(t.configuration,c.hash,he.Type.CODE)} \u2192 ${f?a.Cross:a.Check} ${G.prettyLocator(t.configuration,c.subject)} provides ${G.prettyLocator(t.configuration,C)} to ${G.prettyLocator(t.configuration,p[0].requester)}${h}`;f?s.reportWarning(0,S):s.reportInfo(0,S)}else{let E=`${he.pretty(t.configuration,c.hash,he.Type.CODE)} \u2192 ${f?a.Cross:a.Check} ${G.prettyLocator(t.configuration,c.subject)} doesn't provide ${G.prettyIdent(t.configuration,c.ident)} to ${G.prettyLocator(t.configuration,p[0].requester)}${h}`;f?s.reportWarning(0,E):s.reportInfo(0,E)}}})).exitCode()}Ge();Yt();Ul();Ge();Ge();Dt();Yt();var pye=ut(Ai()),EC=class extends ft{constructor(){super(...arguments);this.useYarnPath=ge.Boolean("--yarn-path",{description:"Set the yarnPath setting even if the version can be accessed by Corepack"});this.onlyIfNeeded=ge.Boolean("--only-if-needed",!1,{description:"Only lock the Yarn version if it isn't already locked"});this.version=ge.String()}static{this.paths=[["set","version"]]}static{this.usage=ot.Usage({description:"lock the Yarn version used by the project",details:"\n This command will set a specific release of Yarn to be used by Corepack: https://nodejs.org/api/corepack.html.\n\n By default it only will set the `packageManager` field at the root of your project, but if the referenced release cannot be represented this way, if you already have `yarnPath` configured, or if you set the `--yarn-path` command line flag, then the release will also be downloaded from the Yarn GitHub repository, stored inside your project, and referenced via the `yarnPath` settings from your project `.yarnrc.yml` file.\n\n A very good use case for this command is to enforce the version of Yarn used by any single member of your team inside the same project - by doing this you ensure that you have control over Yarn upgrades and downgrades (including on your deployment servers), and get rid of most of the headaches related to someone using a slightly different version and getting different behavior.\n\n The version specifier can be:\n\n - a tag:\n - `latest` / `berry` / `stable` -> the most recent stable berry (`>=2.0.0`) release\n - `canary` -> the most recent canary (release candidate) berry (`>=2.0.0`) release\n - `classic` -> the most recent classic (`^0.x || ^1.x`) release\n\n - a semver range (e.g. `2.x`) -> the most recent version satisfying the range (limited to berry releases)\n\n - a semver version (e.g. `2.4.1`, `1.22.1`)\n\n - a local file referenced through either a relative or absolute path\n\n - `self` -> the version used to invoke the command\n ",examples:[["Download the latest release from the Yarn repository","$0 set version latest"],["Download the latest canary release from the Yarn repository","$0 set version canary"],["Download the latest classic release from the Yarn repository","$0 set version classic"],["Download the most recent Yarn 3 build","$0 set version 3.x"],["Download a specific Yarn 2 build","$0 set version 2.0.0-rc.30"],["Switch back to a specific Yarn 1 release","$0 set version 1.22.1"],["Use a release from the local filesystem","$0 set version ./yarn.cjs"],["Use a release from a URL","$0 set version https://repo.yarnpkg.com/3.1.0/packages/yarnpkg-cli/bin/yarn.js"],["Download the version used to invoke the command","$0 set version self"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins);if(this.onlyIfNeeded&&r.get("yarnPath")){let f=r.sources.get("yarnPath");if(!f)throw new Error("Assertion failed: Expected 'yarnPath' to have a source");let p=r.projectCwd??r.startingCwd;if(J.contains(p,f))return 0}let s=()=>{if(typeof fn>"u")throw new nt("The --install flag can only be used without explicit version specifier from the Yarn CLI");return`file://${process.argv[1]}`},a,n=(f,p)=>({version:p,url:f.replace(/\{\}/g,p)});if(this.version==="self")a={url:s(),version:fn??"self"};else if(this.version==="latest"||this.version==="berry"||this.version==="stable")a=n("https://repo.yarnpkg.com/{}/packages/yarnpkg-cli/bin/yarn.js",await Xv(r,"stable"));else if(this.version==="canary")a=n("https://repo.yarnpkg.com/{}/packages/yarnpkg-cli/bin/yarn.js",await Xv(r,"canary"));else if(this.version==="classic")a={url:"https://classic.yarnpkg.com/latest.js",version:"classic"};else if(this.version.match(/^https?:/))a={url:this.version,version:"remote"};else if(this.version.match(/^\.{0,2}[\\/]/)||fe.isAbsolute(this.version))a={url:`file://${J.resolve(fe.toPortablePath(this.version))}`,version:"file"};else if(Fr.satisfiesWithPrereleases(this.version,">=2.0.0"))a=n("https://repo.yarnpkg.com/{}/packages/yarnpkg-cli/bin/yarn.js",this.version);else if(Fr.satisfiesWithPrereleases(this.version,"^0.x || ^1.x"))a=n("https://github.com/yarnpkg/yarn/releases/download/v{}/yarn-{}.js",this.version);else if(Fr.validRange(this.version))a=n("https://repo.yarnpkg.com/{}/packages/yarnpkg-cli/bin/yarn.js",await Glt(r,this.version));else throw new nt(`Invalid version descriptor "${this.version}"`);return(await Ot.start({configuration:r,stdout:this.context.stdout,includeLogs:!this.context.quiet},async f=>{let p=async()=>{let h="file://";return a.url.startsWith(h)?(f.reportInfo(0,`Retrieving ${he.pretty(r,a.url,he.Type.PATH)}`),await ce.readFilePromise(a.url.slice(h.length))):(f.reportInfo(0,`Downloading ${he.pretty(r,a.url,he.Type.URL)}`),await ln.get(a.url,{configuration:r}))};await Jq(r,a.version,p,{report:f,useYarnPath:this.useYarnPath})})).exitCode()}};async function Glt(t,e){let s=(await ln.get("https://repo.yarnpkg.com/tags",{configuration:t,jsonResponse:!0})).tags.filter(a=>Fr.satisfiesWithPrereleases(a,e));if(s.length===0)throw new nt(`No matching release found for range ${he.pretty(t,e,he.Type.RANGE)}.`);return s[0]}async function Xv(t,e){let r=await ln.get("https://repo.yarnpkg.com/tags",{configuration:t,jsonResponse:!0});if(!r.latest[e])throw new nt(`Tag ${he.pretty(t,e,he.Type.RANGE)} not found`);return r.latest[e]}async function Jq(t,e,r,{report:s,useYarnPath:a}){let n,c=async()=>(typeof n>"u"&&(n=await r()),n);if(e===null){let ee=await c();await ce.mktempPromise(async ie=>{let ue=J.join(ie,"yarn.cjs");await ce.writeFilePromise(ue,ee);let{stdout:le}=await qr.execvp(process.execPath,[fe.fromPortablePath(ue),"--version"],{cwd:ie,env:{...t.env,YARN_IGNORE_PATH:"1"}});if(e=le.trim(),!pye.default.valid(e))throw new Error(`Invalid semver version. ${he.pretty(t,"yarn --version",he.Type.CODE)} returned: ${e}`)})}let f=t.projectCwd??t.startingCwd,p=J.resolve(f,".yarn/releases"),h=J.resolve(p,`yarn-${e}.cjs`),E=J.relative(t.startingCwd,h),C=je.isTaggedYarnVersion(e),S=t.get("yarnPath"),b=!C,I=b||!!S||!!a;if(a===!1){if(b)throw new jt(0,"You explicitly opted out of yarnPath usage in your command line, but the version you specified cannot be represented by Corepack");I=!1}else!I&&!process.env.COREPACK_ROOT&&(s.reportWarning(0,`You don't seem to have ${he.applyHyperlink(t,"Corepack","https://nodejs.org/api/corepack.html")} enabled; we'll have to rely on ${he.applyHyperlink(t,"yarnPath","https://yarnpkg.com/configuration/yarnrc#yarnPath")} instead`),I=!0);if(I){let ee=await c();s.reportInfo(0,`Saving the new release in ${he.pretty(t,E,"magenta")}`),await ce.removePromise(J.dirname(h)),await ce.mkdirPromise(J.dirname(h),{recursive:!0}),await ce.writeFilePromise(h,ee,{mode:493}),await ze.updateConfiguration(f,{yarnPath:J.relative(f,h)})}else await ce.removePromise(J.dirname(h)),await ze.updateConfiguration(f,{yarnPath:ze.deleteProperty});let T=await Ut.tryFind(f)||new Ut;T.packageManager=`yarn@${C?e:await Xv(t,"stable")}`;let N={};T.exportTo(N);let U=J.join(f,Ut.fileName),W=`${JSON.stringify(N,null,T.indent)} `;return await ce.changeFilePromise(U,W,{automaticNewlines:!0}),{bundleVersion:e}}function hye(t){return Br[jx(t)]}var qlt=/## (?YN[0-9]{4}) - `(?[A-Z_]+)`\n\n(?
(?:.(?!##))+)/gs;async function Wlt(t){let r=`https://repo.yarnpkg.com/${je.isTaggedYarnVersion(fn)?fn:await Xv(t,"canary")}/packages/docusaurus/docs/advanced/01-general-reference/error-codes.mdx`,s=await ln.get(r,{configuration:t});return new Map(Array.from(s.toString().matchAll(qlt),({groups:a})=>{if(!a)throw new Error("Assertion failed: Expected the match to have been successful");let n=hye(a.code);if(a.name!==n)throw new Error(`Assertion failed: Invalid error code data: Expected "${a.name}" to be named "${n}"`);return[a.code,a.details]}))}var IC=class extends ft{constructor(){super(...arguments);this.code=ge.String({required:!1,validator:$2(wE(),[X2(/^YN[0-9]{4}$/)])});this.json=ge.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"})}static{this.paths=[["explain"]]}static{this.usage=ot.Usage({description:"explain an error code",details:` When the code argument is specified, this command prints its name and its details. When used without arguments, this command lists all error codes and their names. `,examples:[["Explain an error code","$0 explain YN0006"],["List all error codes","$0 explain"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins);if(typeof this.code<"u"){let s=hye(this.code),a=he.pretty(r,s,he.Type.CODE),n=this.cli.format().header(`${this.code} - ${a}`),f=(await Wlt(r)).get(this.code),p=typeof f<"u"?he.jsonOrPretty(this.json,r,he.tuple(he.Type.MARKDOWN,{text:f,format:this.cli.format(),paragraphs:!0})):`This error code does not have a description. You can help us by editing this page on GitHub \u{1F642}: ${he.jsonOrPretty(this.json,r,he.tuple(he.Type.URL,"https://github.com/yarnpkg/berry/blob/master/packages/docusaurus/docs/advanced/01-general-reference/error-codes.mdx"))} `;this.json?this.context.stdout.write(`${JSON.stringify({code:this.code,name:s,details:p})} `):this.context.stdout.write(`${n} ${p} `)}else{let s={children:je.mapAndFilter(Object.entries(Br),([a,n])=>Number.isNaN(Number(a))?je.mapAndFilter.skip:{label:Yf(Number(a)),value:he.tuple(he.Type.CODE,n)})};xs.emitTree(s,{configuration:r,stdout:this.context.stdout,json:this.json})}}};Ge();Dt();Yt();var gye=ut(Go()),CC=class extends ft{constructor(){super(...arguments);this.all=ge.Boolean("-A,--all",!1,{description:"Print versions of a package from the whole project"});this.recursive=ge.Boolean("-R,--recursive",!1,{description:"Print information for all packages, including transitive dependencies"});this.extra=ge.Array("-X,--extra",[],{description:"An array of requests of extra data provided by plugins"});this.cache=ge.Boolean("--cache",!1,{description:"Print information about the cache entry of a package (path, size, checksum)"});this.dependents=ge.Boolean("--dependents",!1,{description:"Print all dependents for each matching package"});this.manifest=ge.Boolean("--manifest",!1,{description:"Print data obtained by looking at the package archive (license, homepage, ...)"});this.nameOnly=ge.Boolean("--name-only",!1,{description:"Only print the name for the matching packages"});this.virtuals=ge.Boolean("--virtuals",!1,{description:"Print each instance of the virtual packages"});this.json=ge.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.patterns=ge.Rest()}static{this.paths=[["info"]]}static{this.usage=ot.Usage({description:"see information related to packages",details:"\n This command prints various information related to the specified packages, accepting glob patterns.\n\n By default, if the locator reference is missing, Yarn will default to print the information about all the matching direct dependencies of the package for the active workspace. To instead print all versions of the package that are direct dependencies of any of your workspaces, use the `-A,--all` flag. Adding the `-R,--recursive` flag will also report transitive dependencies.\n\n Some fields will be hidden by default in order to keep the output readable, but can be selectively displayed by using additional options (`--dependents`, `--manifest`, `--virtuals`, ...) described in the option descriptions.\n\n Note that this command will only print the information directly related to the selected packages - if you wish to know why the package is there in the first place, use `yarn why` which will do just that (it also provides a `-R,--recursive` flag that may be of some help).\n ",examples:[["Show information about Lodash","$0 info lodash"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Rt.find(r,this.context.cwd),n=await Kr.find(r);if(!a&&!this.all)throw new ar(s.cwd,this.context.cwd);await s.restoreInstallState();let c=new Set(this.extra);this.cache&&c.add("cache"),this.dependents&&c.add("dependents"),this.manifest&&c.add("manifest");let f=(ie,{recursive:ue})=>{let le=ie.anchoredLocator.locatorHash,me=new Map,pe=[le];for(;pe.length>0;){let Be=pe.shift();if(me.has(Be))continue;let Ce=s.storedPackages.get(Be);if(typeof Ce>"u")throw new Error("Assertion failed: Expected the package to be registered");if(me.set(Be,Ce),G.isVirtualLocator(Ce)&&pe.push(G.devirtualizeLocator(Ce).locatorHash),!(!ue&&Be!==le))for(let g of Ce.dependencies.values()){let we=s.storedResolutions.get(g.descriptorHash);if(typeof we>"u")throw new Error("Assertion failed: Expected the resolution to be registered");pe.push(we)}}return me.values()},p=({recursive:ie})=>{let ue=new Map;for(let le of s.workspaces)for(let me of f(le,{recursive:ie}))ue.set(me.locatorHash,me);return ue.values()},h=({all:ie,recursive:ue})=>ie&&ue?s.storedPackages.values():ie?p({recursive:ue}):f(a,{recursive:ue}),E=({all:ie,recursive:ue})=>{let le=h({all:ie,recursive:ue}),me=this.patterns.map(Ce=>{let g=G.parseLocator(Ce),we=gye.default.makeRe(G.stringifyIdent(g)),ye=G.isVirtualLocator(g),Ae=ye?G.devirtualizeLocator(g):g;return se=>{let X=G.stringifyIdent(se);if(!we.test(X))return!1;if(g.reference==="unknown")return!0;let De=G.isVirtualLocator(se),Te=De?G.devirtualizeLocator(se):se;return!(ye&&De&&g.reference!==se.reference||Ae.reference!==Te.reference)}}),pe=je.sortMap([...le],Ce=>G.stringifyLocator(Ce));return{selection:pe.filter(Ce=>me.length===0||me.some(g=>g(Ce))),sortedLookup:pe}},{selection:C,sortedLookup:S}=E({all:this.all,recursive:this.recursive});if(C.length===0)throw new nt("No package matched your request");let b=new Map;if(this.dependents)for(let ie of S)for(let ue of ie.dependencies.values()){let le=s.storedResolutions.get(ue.descriptorHash);if(typeof le>"u")throw new Error("Assertion failed: Expected the resolution to be registered");je.getArrayWithDefault(b,le).push(ie)}let I=new Map;for(let ie of S){if(!G.isVirtualLocator(ie))continue;let ue=G.devirtualizeLocator(ie);je.getArrayWithDefault(I,ue.locatorHash).push(ie)}let T={},N={children:T},U=r.makeFetcher(),W={project:s,fetcher:U,cache:n,checksums:s.storedChecksums,report:new ki,cacheOptions:{skipIntegrityCheck:!0}},ee=[async(ie,ue,le)=>{if(!ue.has("manifest"))return;let me=await U.fetch(ie,W),pe;try{pe=await Ut.find(me.prefixPath,{baseFs:me.packageFs})}finally{me.releaseFs?.()}le("Manifest",{License:he.tuple(he.Type.NO_HINT,pe.license),Homepage:he.tuple(he.Type.URL,pe.raw.homepage??null)})},async(ie,ue,le)=>{if(!ue.has("cache"))return;let me=s.storedChecksums.get(ie.locatorHash)??null,pe=n.getLocatorPath(ie,me),Be;if(pe!==null)try{Be=await ce.statPromise(pe)}catch{}let Ce=typeof Be<"u"?[Be.size,he.Type.SIZE]:void 0;le("Cache",{Checksum:he.tuple(he.Type.NO_HINT,me),Path:he.tuple(he.Type.PATH,pe),Size:Ce})}];for(let ie of C){let ue=G.isVirtualLocator(ie);if(!this.virtuals&&ue)continue;let le={},me={value:[ie,he.Type.LOCATOR],children:le};if(T[G.stringifyLocator(ie)]=me,this.nameOnly){delete me.children;continue}let pe=I.get(ie.locatorHash);typeof pe<"u"&&(le.Instances={label:"Instances",value:he.tuple(he.Type.NUMBER,pe.length)}),le.Version={label:"Version",value:he.tuple(he.Type.NO_HINT,ie.version)};let Be=(g,we)=>{let ye={};if(le[g]=ye,Array.isArray(we))ye.children=we.map(Ae=>({value:Ae}));else{let Ae={};ye.children=Ae;for(let[se,X]of Object.entries(we))typeof X>"u"||(Ae[se]={label:se,value:X})}};if(!ue){for(let g of ee)await g(ie,c,Be);await r.triggerHook(g=>g.fetchPackageInfo,ie,c,Be)}ie.bin.size>0&&!ue&&Be("Exported Binaries",[...ie.bin.keys()].map(g=>he.tuple(he.Type.PATH,g)));let Ce=b.get(ie.locatorHash);typeof Ce<"u"&&Ce.length>0&&Be("Dependents",Ce.map(g=>he.tuple(he.Type.LOCATOR,g))),ie.dependencies.size>0&&!ue&&Be("Dependencies",[...ie.dependencies.values()].map(g=>{let we=s.storedResolutions.get(g.descriptorHash),ye=typeof we<"u"?s.storedPackages.get(we)??null:null;return he.tuple(he.Type.RESOLUTION,{descriptor:g,locator:ye})})),ie.peerDependencies.size>0&&ue&&Be("Peer dependencies",[...ie.peerDependencies.values()].map(g=>{let we=ie.dependencies.get(g.identHash),ye=typeof we<"u"?s.storedResolutions.get(we.descriptorHash)??null:null,Ae=ye!==null?s.storedPackages.get(ye)??null:null;return he.tuple(he.Type.RESOLUTION,{descriptor:g,locator:Ae})}))}xs.emitTree(N,{configuration:r,json:this.json,stdout:this.context.stdout,separators:this.nameOnly?0:2})}};Ge();Dt();wc();var rF=ut(Fd());Yt();var Kq=ut(Ai());Ul();var Ylt=[{selector:t=>t===-1,name:"nodeLinker",value:"node-modules"},{selector:t=>t!==-1&&t<8,name:"enableGlobalCache",value:!1},{selector:t=>t!==-1&&t<8,name:"compressionLevel",value:"mixed"}],wC=class extends ft{constructor(){super(...arguments);this.json=ge.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.immutable=ge.Boolean("--immutable",{description:"Abort with an error exit code if the lockfile was to be modified"});this.immutableCache=ge.Boolean("--immutable-cache",{description:"Abort with an error exit code if the cache folder was to be modified"});this.refreshLockfile=ge.Boolean("--refresh-lockfile",{description:"Refresh the package metadata stored in the lockfile"});this.checkCache=ge.Boolean("--check-cache",{description:"Always refetch the packages and ensure that their checksums are consistent"});this.checkResolutions=ge.Boolean("--check-resolutions",{description:"Validates that the package resolutions are coherent"});this.inlineBuilds=ge.Boolean("--inline-builds",{description:"Verbosely print the output of the build steps of dependencies"});this.mode=ge.String("--mode",{description:"Change what artifacts installs generate",validator:fo($l)});this.cacheFolder=ge.String("--cache-folder",{hidden:!0});this.frozenLockfile=ge.Boolean("--frozen-lockfile",{hidden:!0});this.ignoreEngines=ge.Boolean("--ignore-engines",{hidden:!0});this.nonInteractive=ge.Boolean("--non-interactive",{hidden:!0});this.preferOffline=ge.Boolean("--prefer-offline",{hidden:!0});this.production=ge.Boolean("--production",{hidden:!0});this.registry=ge.String("--registry",{hidden:!0});this.silent=ge.Boolean("--silent",{hidden:!0});this.networkTimeout=ge.String("--network-timeout",{hidden:!0})}static{this.paths=[["install"],ot.Default]}static{this.usage=ot.Usage({description:"install the project dependencies",details:"\n This command sets up your project if needed. The installation is split into four different steps that each have their own characteristics:\n\n - **Resolution:** First the package manager will resolve your dependencies. The exact way a dependency version is privileged over another isn't standardized outside of the regular semver guarantees. If a package doesn't resolve to what you would expect, check that all dependencies are correctly declared (also check our website for more information: ).\n\n - **Fetch:** Then we download all the dependencies if needed, and make sure that they're all stored within our cache (check the value of `cacheFolder` in `yarn config` to see where the cache files are stored).\n\n - **Link:** Then we send the dependency tree information to internal plugins tasked with writing them on the disk in some form (for example by generating the `.pnp.cjs` file you might know).\n\n - **Build:** Once the dependency tree has been written on the disk, the package manager will now be free to run the build scripts for all packages that might need it, in a topological order compatible with the way they depend on one another. See https://yarnpkg.com/advanced/lifecycle-scripts for detail.\n\n Note that running this command is not part of the recommended workflow. Yarn supports zero-installs, which means that as long as you store your cache and your `.pnp.cjs` file inside your repository, everything will work without requiring any install right after cloning your repository or switching branches.\n\n If the `--immutable` option is set (defaults to true on CI), Yarn will abort with an error exit code if the lockfile was to be modified (other paths can be added using the `immutablePatterns` configuration setting). For backward compatibility we offer an alias under the name of `--frozen-lockfile`, but it will be removed in a later release.\n\n If the `--immutable-cache` option is set, Yarn will abort with an error exit code if the cache folder was to be modified (either because files would be added, or because they'd be removed).\n\n If the `--refresh-lockfile` option is set, Yarn will keep the same resolution for the packages currently in the lockfile but will refresh their metadata. If used together with `--immutable`, it can validate that the lockfile information are consistent. This flag is enabled by default when Yarn detects it runs within a pull request context.\n\n If the `--check-cache` option is set, Yarn will always refetch the packages and will ensure that their checksum matches what's 1/ described in the lockfile 2/ inside the existing cache files (if present). This is recommended as part of your CI workflow if you're both following the Zero-Installs model and accepting PRs from third-parties, as they'd otherwise have the ability to alter the checked-in packages before submitting them.\n\n If the `--inline-builds` option is set, Yarn will verbosely print the output of the build steps of your dependencies (instead of writing them into individual files). This is likely useful mostly for debug purposes only when using Docker-like environments.\n\n If the `--mode=` option is set, Yarn will change which artifacts are generated. The modes currently supported are:\n\n - `skip-build` will not run the build scripts at all. Note that this is different from setting `enableScripts` to false because the latter will disable build scripts, and thus affect the content of the artifacts generated on disk, whereas the former will just disable the build step - but not the scripts themselves, which just won't run.\n\n - `update-lockfile` will skip the link step altogether, and only fetch packages that are missing from the lockfile (or that have no associated checksums). This mode is typically used by tools like Renovate or Dependabot to keep a lockfile up-to-date without incurring the full install cost.\n ",examples:[["Install the project","$0 install"],["Validate a project when using Zero-Installs","$0 install --immutable --immutable-cache"],["Validate a project when using Zero-Installs (slightly safer if you accept external PRs)","$0 install --immutable --immutable-cache --check-cache"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins);typeof this.inlineBuilds<"u"&&r.useWithSource("",{enableInlineBuilds:this.inlineBuilds},r.startingCwd,{overwrite:!0});let s=!!process.env.FUNCTION_TARGET||!!process.env.GOOGLE_RUNTIME,a=await SI({configuration:r,stdout:this.context.stdout},[{option:this.ignoreEngines,message:"The --ignore-engines option is deprecated; engine checking isn't a core feature anymore",error:!rF.default.VERCEL},{option:this.registry,message:"The --registry option is deprecated; prefer setting npmRegistryServer in your .yarnrc.yml file"},{option:this.preferOffline,message:"The --prefer-offline flag is deprecated; use the --cached flag with 'yarn add' instead",error:!rF.default.VERCEL},{option:this.production,message:"The --production option is deprecated on 'install'; use 'yarn workspaces focus' instead",error:!0},{option:this.nonInteractive,message:"The --non-interactive option is deprecated",error:!s},{option:this.frozenLockfile,message:"The --frozen-lockfile option is deprecated; use --immutable and/or --immutable-cache instead",callback:()=>this.immutable=this.frozenLockfile},{option:this.cacheFolder,message:"The cache-folder option has been deprecated; use rc settings instead",error:!rF.default.NETLIFY}]);if(a!==null)return a;let n=this.mode==="update-lockfile";if(n&&(this.immutable||this.immutableCache))throw new nt(`${he.pretty(r,"--immutable",he.Type.CODE)} and ${he.pretty(r,"--immutable-cache",he.Type.CODE)} cannot be used with ${he.pretty(r,"--mode=update-lockfile",he.Type.CODE)}`);let c=(this.immutable??r.get("enableImmutableInstalls"))&&!n,f=this.immutableCache&&!n;if(r.projectCwd!==null){let T=await Ot.start({configuration:r,json:this.json,stdout:this.context.stdout,includeFooter:!1},async N=>{let U=!1;await Klt(r,c)&&(N.reportInfo(48,"Automatically removed core plugins that are now builtins \u{1F44D}"),U=!0),await Jlt(r,c)&&(N.reportInfo(48,"Automatically fixed merge conflicts \u{1F44D}"),U=!0),U&&N.reportSeparator()});if(T.hasErrors())return T.exitCode()}if(r.projectCwd!==null){let T=await Ot.start({configuration:r,json:this.json,stdout:this.context.stdout,includeFooter:!1},async N=>{if(ze.telemetry?.isNew)ze.telemetry.commitTips(),N.reportInfo(65,"Yarn will periodically gather anonymous telemetry: https://yarnpkg.com/advanced/telemetry"),N.reportInfo(65,`Run ${he.pretty(r,"yarn config set --home enableTelemetry 0",he.Type.CODE)} to disable`),N.reportSeparator();else if(ze.telemetry?.shouldShowTips){let U=await ln.get("https://repo.yarnpkg.com/tags",{configuration:r,jsonResponse:!0}).catch(()=>null);if(U!==null){let W=null;if(fn!==null){let ie=Kq.default.prerelease(fn)?"canary":"stable",ue=U.latest[ie];Kq.default.gt(ue,fn)&&(W=[ie,ue])}if(W)ze.telemetry.commitTips(),N.reportInfo(88,`${he.applyStyle(r,`A new ${W[0]} version of Yarn is available:`,he.Style.BOLD)} ${G.prettyReference(r,W[1])}!`),N.reportInfo(88,`Upgrade now by running ${he.pretty(r,`yarn set version ${W[1]}`,he.Type.CODE)}`),N.reportSeparator();else{let ee=ze.telemetry.selectTip(U.tips);ee&&(N.reportInfo(89,he.pretty(r,ee.message,he.Type.MARKDOWN_INLINE)),ee.url&&N.reportInfo(89,`Learn more at ${ee.url}`),N.reportSeparator())}}}});if(T.hasErrors())return T.exitCode()}let{project:p,workspace:h}=await Rt.find(r,this.context.cwd),E=p.lockfileLastVersion;if(E!==null){let T=await Ot.start({configuration:r,json:this.json,stdout:this.context.stdout,includeFooter:!1},async N=>{let U={};for(let W of Ylt)W.selector(E)&&typeof r.sources.get(W.name)>"u"&&(r.use("",{[W.name]:W.value},p.cwd,{overwrite:!0}),U[W.name]=W.value);Object.keys(U).length>0&&(await ze.updateConfiguration(p.cwd,U),N.reportInfo(87,"Migrated your project to the latest Yarn version \u{1F680}"),N.reportSeparator())});if(T.hasErrors())return T.exitCode()}let C=await Kr.find(r,{immutable:f,check:this.checkCache});if(!h)throw new ar(p.cwd,this.context.cwd);await p.restoreInstallState({restoreResolutions:!1});let S=r.get("enableHardenedMode");S&&typeof r.sources.get("enableHardenedMode")>"u"&&await Ot.start({configuration:r,json:this.json,stdout:this.context.stdout,includeFooter:!1},async T=>{T.reportWarning(0,"Yarn detected that the current workflow is executed from a public pull request. For safety the hardened mode has been enabled."),T.reportWarning(0,`It will prevent malicious lockfile manipulations, in exchange for a slower install time. You can opt-out if necessary; check our ${he.applyHyperlink(r,"documentation","https://yarnpkg.com/features/security#hardened-mode")} for more details.`),T.reportSeparator()}),(this.refreshLockfile??S)&&(p.lockfileNeedsRefresh=!0);let b=this.checkResolutions??S;return(await Ot.start({configuration:r,json:this.json,stdout:this.context.stdout,forceSectionAlignment:!0,includeLogs:!0,includeVersion:!0},async T=>{await p.install({cache:C,report:T,immutable:c,checkResolutions:b,mode:this.mode})})).exitCode()}},Vlt="<<<<<<<";async function Jlt(t,e){if(!t.projectCwd)return!1;let r=J.join(t.projectCwd,Er.lockfile);if(!await ce.existsPromise(r)||!(await ce.readFilePromise(r,"utf8")).includes(Vlt))return!1;if(e)throw new jt(47,"Cannot autofix a lockfile when running an immutable install");let a=await qr.execvp("git",["rev-parse","MERGE_HEAD","HEAD"],{cwd:t.projectCwd});if(a.code!==0&&(a=await qr.execvp("git",["rev-parse","REBASE_HEAD","HEAD"],{cwd:t.projectCwd})),a.code!==0&&(a=await qr.execvp("git",["rev-parse","CHERRY_PICK_HEAD","HEAD"],{cwd:t.projectCwd})),a.code!==0)throw new jt(83,"Git returned an error when trying to find the commits pertaining to the conflict");let n=await Promise.all(a.stdout.trim().split(/\n/).map(async f=>{let p=await qr.execvp("git",["show",`${f}:./${Er.lockfile}`],{cwd:t.projectCwd});if(p.code!==0)throw new jt(83,`Git returned an error when trying to access the lockfile content in ${f}`);try{return as(p.stdout)}catch{throw new jt(46,"A variant of the conflicting lockfile failed to parse")}}));n=n.filter(f=>!!f.__metadata);for(let f of n){if(f.__metadata.version<7)for(let p of Object.keys(f)){if(p==="__metadata")continue;let h=G.parseDescriptor(p,!0),E=t.normalizeDependency(h),C=G.stringifyDescriptor(E);C!==p&&(f[C]=f[p],delete f[p])}for(let p of Object.keys(f)){if(p==="__metadata")continue;let h=f[p].checksum;typeof h>"u"||h.includes("/")||(f[p].checksum=`${f.__metadata.cacheKey}/${h}`)}}let c=Object.assign({},...n);c.__metadata.version=`${Math.min(...n.map(f=>parseInt(f.__metadata.version??0)))}`,c.__metadata.cacheKey="merged";for(let[f,p]of Object.entries(c))typeof p=="string"&&delete c[f];return await ce.changeFilePromise(r,nl(c),{automaticNewlines:!0}),!0}async function Klt(t,e){if(!t.projectCwd)return!1;let r=[],s=J.join(t.projectCwd,".yarn/plugins/@yarnpkg");return await ze.updateConfiguration(t.projectCwd,{plugins:n=>{if(!Array.isArray(n))return n;let c=n.filter(f=>{if(!f.path)return!0;let p=J.resolve(t.projectCwd,f.path),h=ov.has(f.spec)&&J.contains(s,p);return h&&r.push(p),!h});return c.length===0?ze.deleteProperty:c.length===n.length?n:c}},{immutable:e})?(await Promise.all(r.map(async n=>{await ce.removePromise(n)})),!0):!1}Ge();Dt();Yt();var BC=class extends ft{constructor(){super(...arguments);this.all=ge.Boolean("-A,--all",!1,{description:"Link all workspaces belonging to the target projects to the current one"});this.private=ge.Boolean("-p,--private",!1,{description:"Also link private workspaces belonging to the target projects to the current one"});this.relative=ge.Boolean("-r,--relative",!1,{description:"Link workspaces using relative paths instead of absolute paths"});this.destinations=ge.Rest()}static{this.paths=[["link"]]}static{this.usage=ot.Usage({description:"connect the local project to another one",details:"\n This command will set a new `resolutions` field in the project-level manifest and point it to the workspace at the specified location (even if part of another project).\n ",examples:[["Register one or more remote workspaces for use in the current project","$0 link ~/ts-loader ~/jest"],["Register all workspaces from a remote project for use in the current project","$0 link ~/jest --all"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Rt.find(r,this.context.cwd),n=await Kr.find(r);if(!a)throw new ar(s.cwd,this.context.cwd);await s.restoreInstallState({restoreResolutions:!1});let c=s.topLevelWorkspace,f=[];for(let p of this.destinations){let h=J.resolve(this.context.cwd,fe.toPortablePath(p)),E=await ze.find(h,this.context.plugins,{useRc:!1,strict:!1}),{project:C,workspace:S}=await Rt.find(E,h);if(s.cwd===C.cwd)throw new nt(`Invalid destination '${p}'; Can't link the project to itself`);if(!S)throw new ar(C.cwd,h);if(this.all){let b=!1;for(let I of C.workspaces)I.manifest.name&&(!I.manifest.private||this.private)&&(f.push(I),b=!0);if(!b)throw new nt(`No workspace found to be linked in the target project: ${p}`)}else{if(!S.manifest.name)throw new nt(`The target workspace at '${p}' doesn't have a name and thus cannot be linked`);if(S.manifest.private&&!this.private)throw new nt(`The target workspace at '${p}' is marked private - use the --private flag to link it anyway`);f.push(S)}}for(let p of f){let h=G.stringifyIdent(p.anchoredLocator),E=this.relative?J.relative(s.cwd,p.cwd):p.cwd;c.manifest.resolutions.push({pattern:{descriptor:{fullName:h}},reference:`portal:${E}`})}return await s.installWithNewReport({stdout:this.context.stdout},{cache:n})}};Yt();var vC=class extends ft{constructor(){super(...arguments);this.args=ge.Proxy()}static{this.paths=[["node"]]}static{this.usage=ot.Usage({description:"run node with the hook already setup",details:` This command simply runs Node. It also makes sure to call it in a way that's compatible with the current project (for example, on PnP projects the environment will be setup in such a way that PnP will be correctly injected into the environment). The Node process will use the exact same version of Node as the one used to run Yarn itself, which might be a good way to ensure that your commands always use a consistent Node version. `,examples:[["Run a Node script","$0 node ./my-script.js"]]})}async execute(){return this.cli.run(["exec","node",...this.args])}};Ge();Yt();var SC=class extends ft{constructor(){super(...arguments);this.json=ge.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"})}static{this.paths=[["plugin","check"]]}static{this.usage=ot.Usage({category:"Plugin-related commands",description:"find all third-party plugins that differ from their own spec",details:` Check only the plugins from https. If this command detects any plugin differences in the CI environment, it will throw an error. `,examples:[["find all third-party plugins that differ from their own spec","$0 plugin check"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),s=await ze.findRcFiles(this.context.cwd);return(await Ot.start({configuration:r,json:this.json,stdout:this.context.stdout},async n=>{for(let c of s)if(c.data?.plugins)for(let f of c.data.plugins){if(!f.checksum||!f.spec.match(/^https?:/))continue;let p=await ln.get(f.spec,{configuration:r}),h=Nn.makeHash(p);if(f.checksum===h)continue;let E=he.pretty(r,f.path,he.Type.PATH),C=he.pretty(r,f.spec,he.Type.URL),S=`${E} is different from the file provided by ${C}`;n.reportJson({...f,newChecksum:h}),n.reportError(0,S)}})).exitCode()}};Ge();Ge();Dt();Yt();var Iye=Ie("os");Ge();Dt();Yt();var dye=Ie("os");Ge();wc();Yt();var zlt="https://raw.githubusercontent.com/yarnpkg/berry/master/plugins.yml";async function Sm(t,e){let r=await ln.get(zlt,{configuration:t}),s=as(r.toString());return Object.fromEntries(Object.entries(s).filter(([a,n])=>!e||Fr.satisfiesWithPrereleases(e,n.range??"<4.0.0-rc.1")))}var DC=class extends ft{constructor(){super(...arguments);this.json=ge.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"})}static{this.paths=[["plugin","list"]]}static{this.usage=ot.Usage({category:"Plugin-related commands",description:"list the available official plugins",details:"\n This command prints the plugins available directly from the Yarn repository. Only those plugins can be referenced by name in `yarn plugin import`.\n ",examples:[["List the official plugins","$0 plugin list"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins);return(await Ot.start({configuration:r,json:this.json,stdout:this.context.stdout},async a=>{let n=await Sm(r,fn);for(let[c,{experimental:f,...p}]of Object.entries(n)){let h=c;f&&(h+=" [experimental]"),a.reportJson({name:c,experimental:f,...p}),a.reportInfo(null,h)}})).exitCode()}};var Zlt=/^[0-9]+$/,Xlt=process.platform==="win32";function mye(t){return Zlt.test(t)?`pull/${t}/head`:t}var $lt=({repository:t,branch:e},r)=>[["git","init",fe.fromPortablePath(r)],["git","remote","add","origin",t],["git","fetch","origin","--depth=1",mye(e)],["git","reset","--hard","FETCH_HEAD"]],ect=({branch:t})=>[["git","fetch","origin","--depth=1",mye(t),"--force"],["git","reset","--hard","FETCH_HEAD"],["git","clean","-dfx","-e","packages/yarnpkg-cli/bundles"]],tct=({plugins:t,noMinify:e},r,s)=>[["yarn","build:cli",...new Array().concat(...t.map(a=>["--plugin",J.resolve(s,a)])),...e?["--no-minify"]:[],"|"],[Xlt?"move":"mv","packages/yarnpkg-cli/bundles/yarn.js",fe.fromPortablePath(r),"|"]],PC=class extends ft{constructor(){super(...arguments);this.installPath=ge.String("--path",{description:"The path where the repository should be cloned to"});this.repository=ge.String("--repository","https://github.com/yarnpkg/berry.git",{description:"The repository that should be cloned"});this.branch=ge.String("--branch","master",{description:"The branch of the repository that should be cloned"});this.plugins=ge.Array("--plugin",[],{description:"An array of additional plugins that should be included in the bundle"});this.dryRun=ge.Boolean("-n,--dry-run",!1,{description:"If set, the bundle will be built but not added to the project"});this.noMinify=ge.Boolean("--no-minify",!1,{description:"Build a bundle for development (debugging) - non-minified and non-mangled"});this.force=ge.Boolean("-f,--force",!1,{description:"Always clone the repository instead of trying to fetch the latest commits"});this.skipPlugins=ge.Boolean("--skip-plugins",!1,{description:"Skip updating the contrib plugins"})}static{this.paths=[["set","version","from","sources"]]}static{this.usage=ot.Usage({description:"build Yarn from master",details:` This command will clone the Yarn repository into a temporary folder, then build it. The resulting bundle will then be copied into the local project. By default, it also updates all contrib plugins to the same commit the bundle is built from. This behavior can be disabled by using the \`--skip-plugins\` flag. `,examples:[["Build Yarn from master","$0 set version from sources"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s}=await Rt.find(r,this.context.cwd),a=typeof this.installPath<"u"?J.resolve(this.context.cwd,fe.toPortablePath(this.installPath)):J.resolve(fe.toPortablePath((0,dye.tmpdir)()),"yarnpkg-sources",Nn.makeHash(this.repository).slice(0,6));return(await Ot.start({configuration:r,stdout:this.context.stdout},async c=>{await zq(this,{configuration:r,report:c,target:a}),c.reportSeparator(),c.reportInfo(0,"Building a fresh bundle"),c.reportSeparator();let f=await qr.execvp("git",["rev-parse","--short","HEAD"],{cwd:a,strict:!0}),p=J.join(a,`packages/yarnpkg-cli/bundles/yarn-${f.stdout.trim()}.js`);ce.existsSync(p)||(await $v(tct(this,p,a),{configuration:r,context:this.context,target:a}),c.reportSeparator());let h=await ce.readFilePromise(p);if(!this.dryRun){let{bundleVersion:E}=await Jq(r,null,async()=>h,{report:c});this.skipPlugins||await rct(this,E,{project:s,report:c,target:a})}})).exitCode()}};async function $v(t,{configuration:e,context:r,target:s}){for(let[a,...n]of t){let c=n[n.length-1]==="|";if(c&&n.pop(),c)await qr.pipevp(a,n,{cwd:s,stdin:r.stdin,stdout:r.stdout,stderr:r.stderr,strict:!0});else{r.stdout.write(`${he.pretty(e,` $ ${[a,...n].join(" ")}`,"grey")} `);try{await qr.execvp(a,n,{cwd:s,strict:!0})}catch(f){throw r.stdout.write(f.stdout||f.stack),f}}}}async function zq(t,{configuration:e,report:r,target:s}){let a=!1;if(!t.force&&ce.existsSync(J.join(s,".git"))){r.reportInfo(0,"Fetching the latest commits"),r.reportSeparator();try{await $v(ect(t),{configuration:e,context:t.context,target:s}),a=!0}catch{r.reportSeparator(),r.reportWarning(0,"Repository update failed; we'll try to regenerate it")}}a||(r.reportInfo(0,"Cloning the remote repository"),r.reportSeparator(),await ce.removePromise(s),await ce.mkdirPromise(s,{recursive:!0}),await $v($lt(t,s),{configuration:e,context:t.context,target:s}))}async function rct(t,e,{project:r,report:s,target:a}){let n=await Sm(r.configuration,e),c=new Set(Object.keys(n));for(let f of r.configuration.plugins.keys())c.has(f)&&await Zq(f,t,{project:r,report:s,target:a})}Ge();Ge();Dt();Yt();var yye=ut(Ai()),Eye=Ie("vm");var bC=class extends ft{constructor(){super(...arguments);this.name=ge.String();this.checksum=ge.Boolean("--checksum",!0,{description:"Whether to care if this plugin is modified"})}static{this.paths=[["plugin","import"]]}static{this.usage=ot.Usage({category:"Plugin-related commands",description:"download a plugin",details:` This command downloads the specified plugin from its remote location and updates the configuration to reference it in further CLI invocations. Three types of plugin references are accepted: - If the plugin is stored within the Yarn repository, it can be referenced by name. - Third-party plugins can be referenced directly through their public urls. - Local plugins can be referenced by their path on the disk. If the \`--no-checksum\` option is set, Yarn will no longer care if the plugin is modified. Plugins cannot be downloaded from the npm registry, and aren't allowed to have dependencies (they need to be bundled into a single file, possibly thanks to the \`@yarnpkg/builder\` package). `,examples:[['Download and activate the "@yarnpkg/plugin-exec" plugin',"$0 plugin import @yarnpkg/plugin-exec"],['Download and activate the "@yarnpkg/plugin-exec" plugin (shorthand)',"$0 plugin import exec"],["Download and activate a community plugin","$0 plugin import https://example.org/path/to/plugin.js"],["Activate a local plugin","$0 plugin import ./path/to/plugin.js"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins);return(await Ot.start({configuration:r,stdout:this.context.stdout},async a=>{let{project:n}=await Rt.find(r,this.context.cwd),c,f;if(this.name.match(/^\.{0,2}[\\/]/)||fe.isAbsolute(this.name)){let p=J.resolve(this.context.cwd,fe.toPortablePath(this.name));a.reportInfo(0,`Reading ${he.pretty(r,p,he.Type.PATH)}`),c=J.relative(n.cwd,p),f=await ce.readFilePromise(p)}else{let p;if(this.name.match(/^https?:/)){try{new URL(this.name)}catch{throw new jt(52,`Plugin specifier "${this.name}" is neither a plugin name nor a valid url`)}c=this.name,p=this.name}else{let h=G.parseLocator(this.name.replace(/^((@yarnpkg\/)?plugin-)?/,"@yarnpkg/plugin-"));if(h.reference!=="unknown"&&!yye.default.valid(h.reference))throw new jt(0,"Official plugins only accept strict version references. Use an explicit URL if you wish to download them from another location.");let E=G.stringifyIdent(h),C=await Sm(r,fn);if(!Object.hasOwn(C,E)){let S=`Couldn't find a plugin named ${G.prettyIdent(r,h)} on the remote registry. `;throw r.plugins.has(E)?S+=`A plugin named ${G.prettyIdent(r,h)} is already installed; possibly attempting to import a built-in plugin.`:S+=`Note that only the plugins referenced on our website (${he.pretty(r,"https://github.com/yarnpkg/berry/blob/master/plugins.yml",he.Type.URL)}) can be referenced by their name; any other plugin will have to be referenced through its public url (for example ${he.pretty(r,"https://github.com/yarnpkg/berry/raw/master/packages/plugin-typescript/bin/%40yarnpkg/plugin-typescript.js",he.Type.URL)}).`,new jt(51,S)}c=E,p=C[E].url,h.reference!=="unknown"?p=p.replace(/\/master\//,`/${E}/${h.reference}/`):fn!==null&&(p=p.replace(/\/master\//,`/@yarnpkg/cli/${fn}/`))}a.reportInfo(0,`Downloading ${he.pretty(r,p,"green")}`),f=await ln.get(p,{configuration:r})}await Xq(c,f,{checksum:this.checksum,project:n,report:a})})).exitCode()}};async function Xq(t,e,{checksum:r=!0,project:s,report:a}){let{configuration:n}=s,c={},f={exports:c};(0,Eye.runInNewContext)(e.toString(),{module:f,exports:c});let h=`.yarn/plugins/${f.exports.name}.cjs`,E=J.resolve(s.cwd,h);a.reportInfo(0,`Saving the new plugin in ${he.pretty(n,h,"magenta")}`),await ce.mkdirPromise(J.dirname(E),{recursive:!0}),await ce.writeFilePromise(E,e);let C={path:h,spec:t};r&&(C.checksum=Nn.makeHash(e)),await ze.addPlugin(s.cwd,[C])}var nct=({pluginName:t,noMinify:e},r)=>[["yarn",`build:${t}`,...e?["--no-minify"]:[],"|"]],xC=class extends ft{constructor(){super(...arguments);this.installPath=ge.String("--path",{description:"The path where the repository should be cloned to"});this.repository=ge.String("--repository","https://github.com/yarnpkg/berry.git",{description:"The repository that should be cloned"});this.branch=ge.String("--branch","master",{description:"The branch of the repository that should be cloned"});this.noMinify=ge.Boolean("--no-minify",!1,{description:"Build a plugin for development (debugging) - non-minified and non-mangled"});this.force=ge.Boolean("-f,--force",!1,{description:"Always clone the repository instead of trying to fetch the latest commits"});this.name=ge.String()}static{this.paths=[["plugin","import","from","sources"]]}static{this.usage=ot.Usage({category:"Plugin-related commands",description:"build a plugin from sources",details:` This command clones the Yarn repository into a temporary folder, builds the specified contrib plugin and updates the configuration to reference it in further CLI invocations. The plugins can be referenced by their short name if sourced from the official Yarn repository. `,examples:[['Build and activate the "@yarnpkg/plugin-exec" plugin',"$0 plugin import from sources @yarnpkg/plugin-exec"],['Build and activate the "@yarnpkg/plugin-exec" plugin (shorthand)',"$0 plugin import from sources exec"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),s=typeof this.installPath<"u"?J.resolve(this.context.cwd,fe.toPortablePath(this.installPath)):J.resolve(fe.toPortablePath((0,Iye.tmpdir)()),"yarnpkg-sources",Nn.makeHash(this.repository).slice(0,6));return(await Ot.start({configuration:r,stdout:this.context.stdout},async n=>{let{project:c}=await Rt.find(r,this.context.cwd),f=G.parseIdent(this.name.replace(/^((@yarnpkg\/)?plugin-)?/,"@yarnpkg/plugin-")),p=G.stringifyIdent(f),h=await Sm(r,fn);if(!Object.hasOwn(h,p))throw new jt(51,`Couldn't find a plugin named "${p}" on the remote registry. Note that only the plugins referenced on our website (https://github.com/yarnpkg/berry/blob/master/plugins.yml) can be built and imported from sources.`);let E=p;await zq(this,{configuration:r,report:n,target:s}),await Zq(E,this,{project:c,report:n,target:s})})).exitCode()}};async function Zq(t,{context:e,noMinify:r},{project:s,report:a,target:n}){let c=t.replace(/@yarnpkg\//,""),{configuration:f}=s;a.reportSeparator(),a.reportInfo(0,`Building a fresh ${c}`),a.reportSeparator(),await $v(nct({pluginName:c,noMinify:r},n),{configuration:f,context:e,target:n}),a.reportSeparator();let p=J.resolve(n,`packages/${c}/bundles/${t}.js`),h=await ce.readFilePromise(p);await Xq(t,h,{project:s,report:a})}Ge();Dt();Yt();var kC=class extends ft{constructor(){super(...arguments);this.name=ge.String()}static{this.paths=[["plugin","remove"]]}static{this.usage=ot.Usage({category:"Plugin-related commands",description:"remove a plugin",details:` This command deletes the specified plugin from the .yarn/plugins folder and removes it from the configuration. **Note:** The plugins have to be referenced by their name property, which can be obtained using the \`yarn plugin runtime\` command. Shorthands are not allowed. `,examples:[["Remove a plugin imported from the Yarn repository","$0 plugin remove @yarnpkg/plugin-typescript"],["Remove a plugin imported from a local file","$0 plugin remove my-local-plugin"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s}=await Rt.find(r,this.context.cwd);return(await Ot.start({configuration:r,stdout:this.context.stdout},async n=>{let c=this.name,f=G.parseIdent(c);if(!r.plugins.has(c))throw new nt(`${G.prettyIdent(r,f)} isn't referenced by the current configuration`);let p=`.yarn/plugins/${c}.cjs`,h=J.resolve(s.cwd,p);ce.existsSync(h)&&(n.reportInfo(0,`Removing ${he.pretty(r,p,he.Type.PATH)}...`),await ce.removePromise(h)),n.reportInfo(0,"Updating the configuration..."),await ze.updateConfiguration(s.cwd,{plugins:E=>{if(!Array.isArray(E))return E;let C=E.filter(S=>S.path!==p);return C.length===0?ze.deleteProperty:C.length===E.length?E:C}})})).exitCode()}};Ge();Yt();var QC=class extends ft{constructor(){super(...arguments);this.json=ge.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"})}static{this.paths=[["plugin","runtime"]]}static{this.usage=ot.Usage({category:"Plugin-related commands",description:"list the active plugins",details:` This command prints the currently active plugins. Will be displayed both builtin plugins and external plugins. `,examples:[["List the currently active plugins","$0 plugin runtime"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins);return(await Ot.start({configuration:r,json:this.json,stdout:this.context.stdout},async a=>{for(let n of r.plugins.keys()){let c=this.context.plugins.plugins.has(n),f=n;c&&(f+=" [builtin]"),a.reportJson({name:n,builtin:c}),a.reportInfo(null,`${f}`)}})).exitCode()}};Ge();Ge();Yt();var RC=class extends ft{constructor(){super(...arguments);this.idents=ge.Rest()}static{this.paths=[["rebuild"]]}static{this.usage=ot.Usage({description:"rebuild the project's native packages",details:` This command will automatically cause Yarn to forget about previous compilations of the given packages and to run them again. Note that while Yarn forgets the compilation, the previous artifacts aren't erased from the filesystem and may affect the next builds (in good or bad). To avoid this, you may remove the .yarn/unplugged folder, or any other relevant location where packages might have been stored (Yarn may offer a way to do that automatically in the future). By default all packages will be rebuilt, but you can filter the list by specifying the names of the packages you want to clear from memory. `,examples:[["Rebuild all packages","$0 rebuild"],["Rebuild fsevents only","$0 rebuild fsevents"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Rt.find(r,this.context.cwd),n=await Kr.find(r);if(!a)throw new ar(s.cwd,this.context.cwd);let c=new Set;for(let f of this.idents)c.add(G.parseIdent(f).identHash);if(await s.restoreInstallState({restoreResolutions:!1}),await s.resolveEverything({cache:n,report:new ki}),c.size>0)for(let f of s.storedPackages.values())c.has(f.identHash)&&(s.storedBuildState.delete(f.locatorHash),s.skippedBuilds.delete(f.locatorHash));else s.storedBuildState.clear(),s.skippedBuilds.clear();return await s.installWithNewReport({stdout:this.context.stdout,quiet:this.context.quiet},{cache:n})}};Ge();Ge();Ge();Yt();var $q=ut(Go());Ul();var TC=class extends ft{constructor(){super(...arguments);this.all=ge.Boolean("-A,--all",!1,{description:"Apply the operation to all workspaces from the current project"});this.mode=ge.String("--mode",{description:"Change what artifacts installs generate",validator:fo($l)});this.patterns=ge.Rest()}static{this.paths=[["remove"]]}static{this.usage=ot.Usage({description:"remove dependencies from the project",details:` This command will remove the packages matching the specified patterns from the current workspace. If the \`--mode=\` option is set, Yarn will change which artifacts are generated. The modes currently supported are: - \`skip-build\` will not run the build scripts at all. Note that this is different from setting \`enableScripts\` to false because the latter will disable build scripts, and thus affect the content of the artifacts generated on disk, whereas the former will just disable the build step - but not the scripts themselves, which just won't run. - \`update-lockfile\` will skip the link step altogether, and only fetch packages that are missing from the lockfile (or that have no associated checksums). This mode is typically used by tools like Renovate or Dependabot to keep a lockfile up-to-date without incurring the full install cost. This command accepts glob patterns as arguments (if valid Idents and supported by [micromatch](https://github.com/micromatch/micromatch)). Make sure to escape the patterns, to prevent your own shell from trying to expand them. `,examples:[["Remove a dependency from the current project","$0 remove lodash"],["Remove a dependency from all workspaces at once","$0 remove lodash --all"],["Remove all dependencies starting with `eslint-`","$0 remove 'eslint-*'"],["Remove all dependencies with the `@babel` scope","$0 remove '@babel/*'"],["Remove all dependencies matching `react-dom` or `react-helmet`","$0 remove 'react-{dom,helmet}'"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Rt.find(r,this.context.cwd),n=await Kr.find(r);if(!a)throw new ar(s.cwd,this.context.cwd);await s.restoreInstallState({restoreResolutions:!1});let c=this.all?s.workspaces:[a],f=["dependencies","devDependencies","peerDependencies"],p=[],h=!1,E=[];for(let I of this.patterns){let T=!1,N=G.parseIdent(I);for(let U of c){let W=[...U.manifest.peerDependenciesMeta.keys()];for(let ee of(0,$q.default)(W,I))U.manifest.peerDependenciesMeta.delete(ee),h=!0,T=!0;for(let ee of f){let ie=U.manifest.getForScope(ee),ue=[...ie.values()].map(le=>G.stringifyIdent(le));for(let le of(0,$q.default)(ue,G.stringifyIdent(N))){let{identHash:me}=G.parseIdent(le),pe=ie.get(me);if(typeof pe>"u")throw new Error("Assertion failed: Expected the descriptor to be registered");U.manifest[ee].delete(me),E.push([U,ee,pe]),h=!0,T=!0}}}T||p.push(I)}let C=p.length>1?"Patterns":"Pattern",S=p.length>1?"don't":"doesn't",b=this.all?"any":"this";if(p.length>0)throw new nt(`${C} ${he.prettyList(r,p,he.Type.CODE)} ${S} match any packages referenced by ${b} workspace`);return h?(await r.triggerMultipleHooks(I=>I.afterWorkspaceDependencyRemoval,E),await s.installWithNewReport({stdout:this.context.stdout},{cache:n,mode:this.mode})):0}};Ge();Ge();Yt();var Cye=Ie("util"),FC=class extends ft{constructor(){super(...arguments);this.json=ge.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"})}static{this.paths=[["run"]]}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Rt.find(r,this.context.cwd);if(!a)throw new ar(s.cwd,this.context.cwd);return(await Ot.start({configuration:r,stdout:this.context.stdout,json:this.json},async c=>{let f=a.manifest.scripts,p=je.sortMap(f.keys(),C=>C),h={breakLength:1/0,colors:r.get("enableColors"),maxArrayLength:2},E=p.reduce((C,S)=>Math.max(C,S.length),0);for(let[C,S]of f.entries())c.reportInfo(null,`${C.padEnd(E," ")} ${(0,Cye.inspect)(S,h)}`),c.reportJson({name:C,script:S})})).exitCode()}};Ge();Ge();Yt();var NC=class extends ft{constructor(){super(...arguments);this.inspect=ge.String("--inspect",!1,{tolerateBoolean:!0,description:"Forwarded to the underlying Node process when executing a binary"});this.inspectBrk=ge.String("--inspect-brk",!1,{tolerateBoolean:!0,description:"Forwarded to the underlying Node process when executing a binary"});this.topLevel=ge.Boolean("-T,--top-level",!1,{description:"Check the root workspace for scripts and/or binaries instead of the current one"});this.binariesOnly=ge.Boolean("-B,--binaries-only",!1,{description:"Ignore any user defined scripts and only check for binaries"});this.require=ge.String("--require",{description:"Forwarded to the underlying Node process when executing a binary"});this.silent=ge.Boolean("--silent",{hidden:!0});this.scriptName=ge.String();this.args=ge.Proxy()}static{this.paths=[["run"]]}static{this.usage=ot.Usage({description:"run a script defined in the package.json",details:` This command will run a tool. The exact tool that will be executed will depend on the current state of your workspace: - If the \`scripts\` field from your local package.json contains a matching script name, its definition will get executed. - Otherwise, if one of the local workspace's dependencies exposes a binary with a matching name, this binary will get executed. - Otherwise, if the specified name contains a colon character and if one of the workspaces in the project contains exactly one script with a matching name, then this script will get executed. Whatever happens, the cwd of the spawned process will be the workspace that declares the script (which makes it possible to call commands cross-workspaces using the third syntax). `,examples:[["Run the tests from the local workspace","$0 run test"],['Same thing, but without the "run" keyword',"$0 test"],["Inspect Webpack while running","$0 run --inspect-brk webpack"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,workspace:a,locator:n}=await Rt.find(r,this.context.cwd);await s.restoreInstallState();let c=this.topLevel?s.topLevelWorkspace.anchoredLocator:n;if(!this.binariesOnly&&await In.hasPackageScript(c,this.scriptName,{project:s}))return await In.executePackageScript(c,this.scriptName,this.args,{project:s,stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr});let f=await In.getPackageAccessibleBinaries(c,{project:s});if(f.get(this.scriptName)){let h=[];return this.inspect&&(typeof this.inspect=="string"?h.push(`--inspect=${this.inspect}`):h.push("--inspect")),this.inspectBrk&&(typeof this.inspectBrk=="string"?h.push(`--inspect-brk=${this.inspectBrk}`):h.push("--inspect-brk")),this.require&&h.push(`--require=${this.require}`),await In.executePackageAccessibleBinary(c,this.scriptName,this.args,{cwd:this.context.cwd,project:s,stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr,nodeArgs:h,packageAccessibleBinaries:f})}if(!this.topLevel&&!this.binariesOnly&&a&&this.scriptName.includes(":")){let E=(await Promise.all(s.workspaces.map(async C=>C.manifest.scripts.has(this.scriptName)?C:null))).filter(C=>C!==null);if(E.length===1)return await In.executeWorkspaceScript(E[0],this.scriptName,this.args,{stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr})}if(this.topLevel)throw this.scriptName==="node-gyp"?new nt(`Couldn't find a script name "${this.scriptName}" in the top-level (used by ${G.prettyLocator(r,n)}). This typically happens because some package depends on "node-gyp" to build itself, but didn't list it in their dependencies. To fix that, please run "yarn add node-gyp" into your top-level workspace. You also can open an issue on the repository of the specified package to suggest them to use an optional peer dependency.`):new nt(`Couldn't find a script name "${this.scriptName}" in the top-level (used by ${G.prettyLocator(r,n)}).`);{if(this.scriptName==="global")throw new nt("The 'yarn global' commands have been removed in 2.x - consider using 'yarn dlx' or a third-party plugin instead");let h=[this.scriptName].concat(this.args);for(let[E,C]of $I)for(let S of C)if(h.length>=S.length&&JSON.stringify(h.slice(0,S.length))===JSON.stringify(S))throw new nt(`Couldn't find a script named "${this.scriptName}", but a matching command can be found in the ${E} plugin. You can install it with "yarn plugin import ${E}".`);throw new nt(`Couldn't find a script named "${this.scriptName}".`)}}};Ge();Ge();Yt();var OC=class extends ft{constructor(){super(...arguments);this.descriptor=ge.String();this.resolution=ge.String()}static{this.paths=[["set","resolution"]]}static{this.usage=ot.Usage({description:"enforce a package resolution",details:'\n This command updates the resolution table so that `descriptor` is resolved by `resolution`.\n\n Note that by default this command only affect the current resolution table - meaning that this "manual override" will disappear if you remove the lockfile, or if the package disappear from the table. If you wish to make the enforced resolution persist whatever happens, edit the `resolutions` field in your top-level manifest.\n\n Note that no attempt is made at validating that `resolution` is a valid resolution entry for `descriptor`.\n ',examples:[["Force all instances of lodash@npm:^1.2.3 to resolve to 1.5.0","$0 set resolution lodash@npm:^1.2.3 npm:1.5.0"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Rt.find(r,this.context.cwd),n=await Kr.find(r);if(await s.restoreInstallState({restoreResolutions:!1}),!a)throw new ar(s.cwd,this.context.cwd);let c=G.parseDescriptor(this.descriptor,!0),f=G.makeDescriptor(c,this.resolution);return s.storedDescriptors.set(c.descriptorHash,c),s.storedDescriptors.set(f.descriptorHash,f),s.resolutionAliases.set(c.descriptorHash,f.descriptorHash),await s.installWithNewReport({stdout:this.context.stdout},{cache:n})}};Ge();Dt();Yt();var wye=ut(Go()),LC=class extends ft{constructor(){super(...arguments);this.all=ge.Boolean("-A,--all",!1,{description:"Unlink all workspaces belonging to the target project from the current one"});this.leadingArguments=ge.Rest()}static{this.paths=[["unlink"]]}static{this.usage=ot.Usage({description:"disconnect the local project from another one",details:` This command will remove any resolutions in the project-level manifest that would have been added via a yarn link with similar arguments. `,examples:[["Unregister a remote workspace in the current project","$0 unlink ~/ts-loader"],["Unregister all workspaces from a remote project in the current project","$0 unlink ~/jest --all"],["Unregister all previously linked workspaces","$0 unlink --all"],["Unregister all workspaces matching a glob","$0 unlink '@babel/*' 'pkg-{a,b}'"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Rt.find(r,this.context.cwd),n=await Kr.find(r);if(!a)throw new ar(s.cwd,this.context.cwd);let c=s.topLevelWorkspace,f=new Set;if(this.leadingArguments.length===0&&this.all)for(let{pattern:p,reference:h}of c.manifest.resolutions)h.startsWith("portal:")&&f.add(p.descriptor.fullName);if(this.leadingArguments.length>0)for(let p of this.leadingArguments){let h=J.resolve(this.context.cwd,fe.toPortablePath(p));if(je.isPathLike(p)){let E=await ze.find(h,this.context.plugins,{useRc:!1,strict:!1}),{project:C,workspace:S}=await Rt.find(E,h);if(!S)throw new ar(C.cwd,h);if(this.all){for(let b of C.workspaces)b.manifest.name&&f.add(G.stringifyIdent(b.anchoredLocator));if(f.size===0)throw new nt("No workspace found to be unlinked in the target project")}else{if(!S.manifest.name)throw new nt("The target workspace doesn't have a name and thus cannot be unlinked");f.add(G.stringifyIdent(S.anchoredLocator))}}else{let E=[...c.manifest.resolutions.map(({pattern:C})=>C.descriptor.fullName)];for(let C of(0,wye.default)(E,p))f.add(C)}}return c.manifest.resolutions=c.manifest.resolutions.filter(({pattern:p})=>!f.has(p.descriptor.fullName)),await s.installWithNewReport({stdout:this.context.stdout,quiet:this.context.quiet},{cache:n})}};Ge();Ge();Ge();Yt();var Bye=ut(Vv()),e5=ut(Go());Ul();var MC=class extends ft{constructor(){super(...arguments);this.interactive=ge.Boolean("-i,--interactive",{description:"Offer various choices, depending on the detected upgrade paths"});this.fixed=ge.Boolean("-F,--fixed",!1,{description:"Store dependency tags as-is instead of resolving them"});this.exact=ge.Boolean("-E,--exact",!1,{description:"Don't use any semver modifier on the resolved range"});this.tilde=ge.Boolean("-T,--tilde",!1,{description:"Use the `~` semver modifier on the resolved range"});this.caret=ge.Boolean("-C,--caret",!1,{description:"Use the `^` semver modifier on the resolved range"});this.recursive=ge.Boolean("-R,--recursive",!1,{description:"Resolve again ALL resolutions for those packages"});this.mode=ge.String("--mode",{description:"Change what artifacts installs generate",validator:fo($l)});this.patterns=ge.Rest()}static{this.paths=[["up"]]}static{this.usage=ot.Usage({description:"upgrade dependencies across the project",details:"\n This command upgrades the packages matching the list of specified patterns to their latest available version across the whole project (regardless of whether they're part of `dependencies` or `devDependencies` - `peerDependencies` won't be affected). This is a project-wide command: all workspaces will be upgraded in the process.\n\n If `-R,--recursive` is set the command will change behavior and no other switch will be allowed. When operating under this mode `yarn up` will force all ranges matching the selected packages to be resolved again (often to the highest available versions) before being stored in the lockfile. It however won't touch your manifests anymore, so depending on your needs you might want to run both `yarn up` and `yarn up -R` to cover all bases.\n\n If `-i,--interactive` is set (or if the `preferInteractive` settings is toggled on) the command will offer various choices, depending on the detected upgrade paths. Some upgrades require this flag in order to resolve ambiguities.\n\n The, `-C,--caret`, `-E,--exact` and `-T,--tilde` options have the same meaning as in the `add` command (they change the modifier used when the range is missing or a tag, and are ignored when the range is explicitly set).\n\n If the `--mode=` option is set, Yarn will change which artifacts are generated. The modes currently supported are:\n\n - `skip-build` will not run the build scripts at all. Note that this is different from setting `enableScripts` to false because the latter will disable build scripts, and thus affect the content of the artifacts generated on disk, whereas the former will just disable the build step - but not the scripts themselves, which just won't run.\n\n - `update-lockfile` will skip the link step altogether, and only fetch packages that are missing from the lockfile (or that have no associated checksums). This mode is typically used by tools like Renovate or Dependabot to keep a lockfile up-to-date without incurring the full install cost.\n\n Generally you can see `yarn up` as a counterpart to what was `yarn upgrade --latest` in Yarn 1 (ie it ignores the ranges previously listed in your manifests), but unlike `yarn upgrade` which only upgraded dependencies in the current workspace, `yarn up` will upgrade all workspaces at the same time.\n\n This command accepts glob patterns as arguments (if valid Descriptors and supported by [micromatch](https://github.com/micromatch/micromatch)). Make sure to escape the patterns, to prevent your own shell from trying to expand them.\n\n **Note:** The ranges have to be static, only the package scopes and names can contain glob patterns.\n ",examples:[["Upgrade all instances of lodash to the latest release","$0 up lodash"],["Upgrade all instances of lodash to the latest release, but ask confirmation for each","$0 up lodash -i"],["Upgrade all instances of lodash to 1.2.3","$0 up lodash@1.2.3"],["Upgrade all instances of packages with the `@babel` scope to the latest release","$0 up '@babel/*'"],["Upgrade all instances of packages containing the word `jest` to the latest release","$0 up '*jest*'"],["Upgrade all instances of packages with the `@babel` scope to 7.0.0","$0 up '@babel/*@7.0.0'"]]})}static{this.schema=[tB("recursive",qf.Forbids,["interactive","exact","tilde","caret"],{ignore:[void 0,!1]})]}async execute(){return this.recursive?await this.executeUpRecursive():await this.executeUpClassic()}async executeUpRecursive(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Rt.find(r,this.context.cwd),n=await Kr.find(r);if(!a)throw new ar(s.cwd,this.context.cwd);await s.restoreInstallState({restoreResolutions:!1});let c=[...s.storedDescriptors.values()],f=c.map(E=>G.stringifyIdent(E)),p=new Set;for(let E of this.patterns){if(G.parseDescriptor(E).range!=="unknown")throw new nt("Ranges aren't allowed when using --recursive");for(let C of(0,e5.default)(f,E)){let S=G.parseIdent(C);p.add(S.identHash)}}let h=c.filter(E=>p.has(E.identHash));for(let E of h)s.storedDescriptors.delete(E.descriptorHash),s.storedResolutions.delete(E.descriptorHash);return await s.installWithNewReport({stdout:this.context.stdout},{cache:n,mode:this.mode})}async executeUpClassic(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Rt.find(r,this.context.cwd),n=await Kr.find(r);if(!a)throw new ar(s.cwd,this.context.cwd);await s.restoreInstallState({restoreResolutions:!1});let c=this.fixed,f=r.isInteractive({interactive:this.interactive,stdout:this.context.stdout}),p=Kv(this,s),h=f?["keep","reuse","project","latest"]:["project","latest"],E=[],C=[];for(let N of this.patterns){let U=!1,W=G.parseDescriptor(N),ee=G.stringifyIdent(W);for(let ie of s.workspaces)for(let ue of["dependencies","devDependencies"]){let me=[...ie.manifest.getForScope(ue).values()].map(Be=>G.stringifyIdent(Be)),pe=ee==="*"?me:(0,e5.default)(me,ee);for(let Be of pe){let Ce=G.parseIdent(Be),g=ie.manifest[ue].get(Ce.identHash);if(typeof g>"u")throw new Error("Assertion failed: Expected the descriptor to be registered");let we=G.makeDescriptor(Ce,W.range);E.push(Promise.resolve().then(async()=>[ie,ue,g,await zv(we,{project:s,workspace:ie,cache:n,target:ue,fixed:c,modifier:p,strategies:h})])),U=!0}}U||C.push(N)}if(C.length>1)throw new nt(`Patterns ${he.prettyList(r,C,he.Type.CODE)} don't match any packages referenced by any workspace`);if(C.length>0)throw new nt(`Pattern ${he.prettyList(r,C,he.Type.CODE)} doesn't match any packages referenced by any workspace`);let S=await Promise.all(E),b=await lA.start({configuration:r,stdout:this.context.stdout,suggestInstall:!1},async N=>{for(let[,,U,{suggestions:W,rejections:ee}]of S){let ie=W.filter(ue=>ue.descriptor!==null);if(ie.length===0){let[ue]=ee;if(typeof ue>"u")throw new Error("Assertion failed: Expected an error to have been set");let le=this.cli.error(ue);s.configuration.get("enableNetwork")?N.reportError(27,`${G.prettyDescriptor(r,U)} can't be resolved to a satisfying range ${le}`):N.reportError(27,`${G.prettyDescriptor(r,U)} can't be resolved to a satisfying range (note: network resolution has been disabled) ${le}`)}else ie.length>1&&!f&&N.reportError(27,`${G.prettyDescriptor(r,U)} has multiple possible upgrade strategies; use -i to disambiguate manually`)}});if(b.hasErrors())return b.exitCode();let I=!1,T=[];for(let[N,U,,{suggestions:W}]of S){let ee,ie=W.filter(pe=>pe.descriptor!==null),ue=ie[0].descriptor,le=ie.every(pe=>G.areDescriptorsEqual(pe.descriptor,ue));ie.length===1||le?ee=ue:(I=!0,{answer:ee}=await(0,Bye.prompt)({type:"select",name:"answer",message:`Which range do you want to use in ${G.prettyWorkspace(r,N)} \u276F ${U}?`,choices:W.map(({descriptor:pe,name:Be,reason:Ce})=>pe?{name:Be,hint:Ce,descriptor:pe}:{name:Be,hint:Ce,disabled:!0}),onCancel:()=>process.exit(130),result(pe){return this.find(pe,"descriptor")},stdin:this.context.stdin,stdout:this.context.stdout}));let me=N.manifest[U].get(ee.identHash);if(typeof me>"u")throw new Error("Assertion failed: This descriptor should have a matching entry");if(me.descriptorHash!==ee.descriptorHash)N.manifest[U].set(ee.identHash,ee),T.push([N,U,me,ee]);else{let pe=r.makeResolver(),Be={project:s,resolver:pe},Ce=r.normalizeDependency(me),g=pe.bindDescriptor(Ce,N.anchoredLocator,Be);s.forgetResolution(g)}}return await r.triggerMultipleHooks(N=>N.afterWorkspaceDependencyReplacement,T),I&&this.context.stdout.write(` `),await s.installWithNewReport({stdout:this.context.stdout},{cache:n,mode:this.mode})}};Ge();Ge();Ge();Yt();var UC=class extends ft{constructor(){super(...arguments);this.recursive=ge.Boolean("-R,--recursive",!1,{description:"List, for each workspace, what are all the paths that lead to the dependency"});this.json=ge.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.peers=ge.Boolean("--peers",!1,{description:"Also print the peer dependencies that match the specified name"});this.package=ge.String()}static{this.paths=[["why"]]}static{this.usage=ot.Usage({description:"display the reason why a package is needed",details:` This command prints the exact reasons why a package appears in the dependency tree. If \`-R,--recursive\` is set, the listing will go in depth and will list, for each workspaces, what are all the paths that lead to the dependency. Note that the display is somewhat optimized in that it will not print the package listing twice for a single package, so if you see a leaf named "Foo" when looking for "Bar", it means that "Foo" already got printed higher in the tree. `,examples:[["Explain why lodash is used in your project","$0 why lodash"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Rt.find(r,this.context.cwd);if(!a)throw new ar(s.cwd,this.context.cwd);await s.restoreInstallState();let n=G.parseIdent(this.package).identHash,c=this.recursive?sct(s,n,{configuration:r,peers:this.peers}):ict(s,n,{configuration:r,peers:this.peers});xs.emitTree(c,{configuration:r,stdout:this.context.stdout,json:this.json,separators:1})}};function ict(t,e,{configuration:r,peers:s}){let a=je.sortMap(t.storedPackages.values(),f=>G.stringifyLocator(f)),n={},c={children:n};for(let f of a){let p={};for(let E of f.dependencies.values()){if(!s&&f.peerDependencies.has(E.identHash))continue;let C=t.storedResolutions.get(E.descriptorHash);if(!C)throw new Error("Assertion failed: The resolution should have been registered");let S=t.storedPackages.get(C);if(!S)throw new Error("Assertion failed: The package should have been registered");if(S.identHash!==e)continue;{let I=G.stringifyLocator(f);n[I]={value:[f,he.Type.LOCATOR],children:p}}let b=G.stringifyLocator(S);p[b]={value:[{descriptor:E,locator:S},he.Type.DEPENDENT]}}}return c}function sct(t,e,{configuration:r,peers:s}){let a=je.sortMap(t.workspaces,S=>G.stringifyLocator(S.anchoredLocator)),n=new Set,c=new Set,f=S=>{if(n.has(S.locatorHash))return c.has(S.locatorHash);if(n.add(S.locatorHash),S.identHash===e)return c.add(S.locatorHash),!0;let b=!1;S.identHash===e&&(b=!0);for(let I of S.dependencies.values()){if(!s&&S.peerDependencies.has(I.identHash))continue;let T=t.storedResolutions.get(I.descriptorHash);if(!T)throw new Error("Assertion failed: The resolution should have been registered");let N=t.storedPackages.get(T);if(!N)throw new Error("Assertion failed: The package should have been registered");f(N)&&(b=!0)}return b&&c.add(S.locatorHash),b};for(let S of a)f(S.anchoredPackage);let p=new Set,h={},E={children:h},C=(S,b,I)=>{if(!c.has(S.locatorHash))return;let T=I!==null?he.tuple(he.Type.DEPENDENT,{locator:S,descriptor:I}):he.tuple(he.Type.LOCATOR,S),N={},U={value:T,children:N},W=G.stringifyLocator(S);if(b[W]=U,!(I!==null&&t.tryWorkspaceByLocator(S))&&!p.has(S.locatorHash)){p.add(S.locatorHash);for(let ee of S.dependencies.values()){if(!s&&S.peerDependencies.has(ee.identHash))continue;let ie=t.storedResolutions.get(ee.descriptorHash);if(!ie)throw new Error("Assertion failed: The resolution should have been registered");let ue=t.storedPackages.get(ie);if(!ue)throw new Error("Assertion failed: The package should have been registered");C(ue,N,ee)}}};for(let S of a)C(S.anchoredPackage,h,null);return E}Ge();var u5={};Vt(u5,{GitFetcher:()=>tS,GitResolver:()=>rS,default:()=>Dct,gitUtils:()=>ka});Ge();Dt();var ka={};Vt(ka,{TreeishProtocols:()=>eS,clone:()=>c5,fetchBase:()=>qye,fetchChangedFiles:()=>Wye,fetchChangedWorkspaces:()=>vct,fetchRoot:()=>Gye,isGitUrl:()=>jC,lsRemote:()=>jye,normalizeLocator:()=>Bct,normalizeRepoUrl:()=>_C,resolveUrl:()=>l5,splitRepoUrl:()=>W0,validateRepoUrl:()=>a5});Ge();Dt();Yt();ql();var _ye=ut(Lye()),HC=ut(Ie("querystring")),s5=ut(Ai());function i5(t,e,r){let s=t.indexOf(r);return t.lastIndexOf(e,s>-1?s:1/0)}function Mye(t){try{return new URL(t)}catch{return}}function Cct(t){let e=i5(t,"@","#"),r=i5(t,":","#");return r>e&&(t=`${t.slice(0,r)}/${t.slice(r+1)}`),i5(t,":","#")===-1&&t.indexOf("//")===-1&&(t=`ssh://${t}`),t}function Uye(t){return Mye(t)||Mye(Cct(t))}function _C(t,{git:e=!1}={}){if(t=t.replace(/^git\+https:/,"https:"),t=t.replace(/^(?:github:|https:\/\/github\.com\/|git:\/\/github\.com\/)?(?!\.{1,2}\/)([a-zA-Z0-9._-]+)\/(?!\.{1,2}(?:#|$))([a-zA-Z0-9._-]+?)(?:\.git)?(#.*)?$/,"https://github.com/$1/$2.git$3"),t=t.replace(/^https:\/\/github\.com\/(?!\.{1,2}\/)([a-zA-Z0-9._-]+)\/(?!\.{1,2}(?:#|$))([a-zA-Z0-9._-]+?)\/tarball\/(.+)?$/,"https://github.com/$1/$2.git#$3"),e){let r=Uye(t);r&&(t=r.href),t=t.replace(/^git\+([^:]+):/,"$1:")}return t}function Hye(){return{...process.env,GIT_SSH_COMMAND:process.env.GIT_SSH_COMMAND||`${process.env.GIT_SSH||"ssh"} -o BatchMode=yes`}}var wct=[/^ssh:/,/^git(?:\+[^:]+)?:/,/^(?:git\+)?https?:[^#]+\/[^#]+(?:\.git)(?:#.*)?$/,/^git@[^#]+\/[^#]+\.git(?:#.*)?$/,/^(?:github:|https:\/\/github\.com\/)?(?!\.{1,2}\/)([a-zA-Z._0-9-]+)\/(?!\.{1,2}(?:#|$))([a-zA-Z._0-9-]+?)(?:\.git)?(?:#.*)?$/,/^https:\/\/github\.com\/(?!\.{1,2}\/)([a-zA-Z0-9._-]+)\/(?!\.{1,2}(?:#|$))([a-zA-Z0-9._-]+?)\/tarball\/(.+)?$/],eS=(a=>(a.Commit="commit",a.Head="head",a.Tag="tag",a.Semver="semver",a))(eS||{});function jC(t){return t?wct.some(e=>!!t.match(e)):!1}function W0(t){t=_C(t);let e=t.indexOf("#");if(e===-1)return{repo:t,treeish:{protocol:"head",request:"HEAD"},extra:{}};let r=t.slice(0,e),s=t.slice(e+1);if(s.match(/^[a-z]+=/)){let a=HC.default.parse(s);for(let[p,h]of Object.entries(a))if(typeof h!="string")throw new Error(`Assertion failed: The ${p} parameter must be a literal string`);let n=Object.values(eS).find(p=>Object.hasOwn(a,p)),[c,f]=typeof n<"u"?[n,a[n]]:["head","HEAD"];for(let p of Object.values(eS))delete a[p];return{repo:r,treeish:{protocol:c,request:f},extra:a}}else{let a=s.indexOf(":"),[n,c]=a===-1?[null,s]:[s.slice(0,a),s.slice(a+1)];return{repo:r,treeish:{protocol:n,request:c},extra:{}}}}function Bct(t){return G.makeLocator(t,_C(t.reference))}function a5(t,{configuration:e}){let r=_C(t,{git:!0});if(!ln.getNetworkSettings(`https://${(0,_ye.default)(r).resource}`,{configuration:e}).enableNetwork)throw new jt(80,`Request to '${r}' has been blocked because of your configuration settings`);return r}async function jye(t,e){let r=a5(t,{configuration:e}),s=await o5("listing refs",["ls-remote",r],{cwd:e.startingCwd,env:Hye()},{configuration:e,normalizedRepoUrl:r}),a=new Map,n=/^([a-f0-9]{40})\t([^\n]+)/gm,c;for(;(c=n.exec(s.stdout))!==null;)a.set(c[2],c[1]);return a}async function l5(t,e){let{repo:r,treeish:{protocol:s,request:a},extra:n}=W0(t),c=await jye(r,e),f=(h,E)=>{switch(h){case"commit":{if(!E.match(/^[a-f0-9]{40}$/))throw new Error("Invalid commit hash");return HC.default.stringify({...n,commit:E})}case"head":{let C=c.get(E==="HEAD"?E:`refs/heads/${E}`);if(typeof C>"u")throw new Error(`Unknown head ("${E}")`);return HC.default.stringify({...n,commit:C})}case"tag":{let C=c.get(`refs/tags/${E}`);if(typeof C>"u")throw new Error(`Unknown tag ("${E}")`);return HC.default.stringify({...n,commit:C})}case"semver":{let C=Fr.validRange(E);if(!C)throw new Error(`Invalid range ("${E}")`);let S=new Map([...c.entries()].filter(([I])=>I.startsWith("refs/tags/")).map(([I,T])=>[s5.default.parse(I.slice(10)),T]).filter(I=>I[0]!==null)),b=s5.default.maxSatisfying([...S.keys()],C);if(b===null)throw new Error(`No matching range ("${E}")`);return HC.default.stringify({...n,commit:S.get(b)})}case null:{let C;if((C=p("commit",E))!==null||(C=p("tag",E))!==null||(C=p("head",E))!==null)return C;throw E.match(/^[a-f0-9]+$/)?new Error(`Couldn't resolve "${E}" as either a commit, a tag, or a head - if a commit, use the 40-characters commit hash`):new Error(`Couldn't resolve "${E}" as either a commit, a tag, or a head`)}default:throw new Error(`Invalid Git resolution protocol ("${h}")`)}},p=(h,E)=>{try{return f(h,E)}catch{return null}};return _C(`${r}#${f(s,a)}`)}async function c5(t,e){return await e.getLimit("cloneConcurrency")(async()=>{let{repo:r,treeish:{protocol:s,request:a}}=W0(t);if(s!=="commit")throw new Error("Invalid treeish protocol when cloning");let n=a5(r,{configuration:e}),c=await ce.mktempPromise(),f={cwd:c,env:Hye()};return await o5("cloning the repository",["clone","-c core.autocrlf=false",n,fe.fromPortablePath(c)],f,{configuration:e,normalizedRepoUrl:n}),await o5("switching branch",["checkout",`${a}`],f,{configuration:e,normalizedRepoUrl:n}),c})}async function Gye(t){let e,r=t;do{if(e=r,await ce.existsPromise(J.join(e,".git")))return e;r=J.dirname(e)}while(r!==e);return null}async function qye(t,{baseRefs:e}){if(e.length===0)throw new nt("Can't run this command with zero base refs specified.");let r=[];for(let f of e){let{code:p}=await qr.execvp("git",["merge-base",f,"HEAD"],{cwd:t});p===0&&r.push(f)}if(r.length===0)throw new nt(`No ancestor could be found between any of HEAD and ${e.join(", ")}`);let{stdout:s}=await qr.execvp("git",["merge-base","HEAD",...r],{cwd:t,strict:!0}),a=s.trim(),{stdout:n}=await qr.execvp("git",["show","--quiet","--pretty=format:%s",a],{cwd:t,strict:!0}),c=n.trim();return{hash:a,title:c}}async function Wye(t,{base:e,project:r}){let s=je.buildIgnorePattern(r.configuration.get("changesetIgnorePatterns")),{stdout:a}=await qr.execvp("git",["diff","--name-only",`${e}`],{cwd:t,strict:!0}),n=a.split(/\r\n|\r|\n/).filter(h=>h.length>0).map(h=>J.resolve(t,fe.toPortablePath(h))),{stdout:c}=await qr.execvp("git",["ls-files","--others","--exclude-standard"],{cwd:t,strict:!0}),f=c.split(/\r\n|\r|\n/).filter(h=>h.length>0).map(h=>J.resolve(t,fe.toPortablePath(h))),p=[...new Set([...n,...f].sort())];return s?p.filter(h=>!J.relative(r.cwd,h).match(s)):p}async function vct({ref:t,project:e}){if(e.configuration.projectCwd===null)throw new nt("This command can only be run from within a Yarn project");let r=[J.resolve(e.cwd,Er.lockfile),J.resolve(e.cwd,e.configuration.get("cacheFolder")),J.resolve(e.cwd,e.configuration.get("installStatePath")),J.resolve(e.cwd,e.configuration.get("virtualFolder"))];await e.configuration.triggerHook(c=>c.populateYarnPaths,e,c=>{c!=null&&r.push(c)});let s=await Gye(e.configuration.projectCwd);if(s==null)throw new nt("This command can only be run on Git repositories");let a=await qye(s,{baseRefs:typeof t=="string"?[t]:e.configuration.get("changesetBaseRefs")}),n=await Wye(s,{base:a.hash,project:e});return new Set(je.mapAndFilter(n,c=>{let f=e.tryWorkspaceByFilePath(c);return f===null?je.mapAndFilter.skip:r.some(p=>c.startsWith(p))?je.mapAndFilter.skip:f}))}async function o5(t,e,r,{configuration:s,normalizedRepoUrl:a}){try{return await qr.execvp("git",e,{...r,strict:!0})}catch(n){if(!(n instanceof qr.ExecError))throw n;let c=n.reportExtra,f=n.stderr.toString();throw new jt(1,`Failed ${t}`,p=>{p.reportError(1,` ${he.prettyField(s,{label:"Repository URL",value:he.tuple(he.Type.URL,a)})}`);for(let h of f.matchAll(/^(.+?): (.*)$/gm)){let[,E,C]=h;E=E.toLowerCase();let S=E==="error"?"Error":`${PB(E)} Error`;p.reportError(1,` ${he.prettyField(s,{label:S,value:he.tuple(he.Type.NO_HINT,C)})}`)}c?.(p)})}}var tS=class{supports(e,r){return jC(e.reference)}getLocalPath(e,r){return null}async fetch(e,r){let s=r.checksums.get(e.locatorHash)||null,a=new Map(r.checksums);a.set(e.locatorHash,s);let n={...r,checksums:a},c=await this.downloadHosted(e,n);if(c!==null)return c;let[f,p,h]=await r.cache.fetchPackageFromCache(e,s,{onHit:()=>r.report.reportCacheHit(e),onMiss:()=>r.report.reportCacheMiss(e,`${G.prettyLocator(r.project.configuration,e)} can't be found in the cache and will be fetched from the remote repository`),loader:()=>this.cloneFromRemote(e,n),...r.cacheOptions});return{packageFs:f,releaseFs:p,prefixPath:G.getIdentVendorPath(e),checksum:h}}async downloadHosted(e,r){return r.project.configuration.reduceHook(s=>s.fetchHostedRepository,null,e,r)}async cloneFromRemote(e,r){let s=W0(e.reference),a=await c5(e.reference,r.project.configuration),n=J.resolve(a,s.extra.cwd??vt.dot),c=J.join(n,"package.tgz");await In.prepareExternalProject(n,c,{configuration:r.project.configuration,report:r.report,workspace:s.extra.workspace,locator:e});let f=await ce.readFilePromise(c);return await je.releaseAfterUseAsync(async()=>await ps.convertToZip(f,{configuration:r.project.configuration,prefixPath:G.getIdentVendorPath(e),stripComponents:1}))}};Ge();Ge();var rS=class{supportsDescriptor(e,r){return jC(e.range)}supportsLocator(e,r){return jC(e.reference)}shouldPersistResolution(e,r){return!0}bindDescriptor(e,r,s){return e}getResolutionDependencies(e,r){return{}}async getCandidates(e,r,s){let a=await l5(e.range,s.project.configuration);return[G.makeLocator(e,a)]}async getSatisfying(e,r,s,a){let n=W0(e.range);return{locators:s.filter(f=>{if(f.identHash!==e.identHash)return!1;let p=W0(f.reference);return!(n.repo!==p.repo||n.treeish.protocol==="commit"&&n.treeish.request!==p.treeish.request)}),sorted:!1}}async resolve(e,r){if(!r.fetchOptions)throw new Error("Assertion failed: This resolver cannot be used unless a fetcher is configured");let s=await r.fetchOptions.fetcher.fetch(e,r.fetchOptions),a=await je.releaseAfterUseAsync(async()=>await Ut.find(s.prefixPath,{baseFs:s.packageFs}),s.releaseFs);return{...e,version:a.version||"0.0.0",languageName:a.languageName||r.project.configuration.get("defaultLanguageName"),linkType:"HARD",conditions:a.getConditions(),dependencies:r.project.configuration.normalizeDependencyMap(a.dependencies),peerDependencies:a.peerDependencies,dependenciesMeta:a.dependenciesMeta,peerDependenciesMeta:a.peerDependenciesMeta,bin:a.bin}}};var Sct={configuration:{changesetBaseRefs:{description:"The base git refs that the current HEAD is compared against when detecting changes. Supports git branches, tags, and commits.",type:"STRING",isArray:!0,isNullable:!1,default:["master","origin/master","upstream/master","main","origin/main","upstream/main"]},changesetIgnorePatterns:{description:"Array of glob patterns; files matching them will be ignored when fetching the changed files",type:"STRING",default:[],isArray:!0},cloneConcurrency:{description:"Maximal number of concurrent clones",type:"NUMBER",default:2}},fetchers:[tS],resolvers:[rS]};var Dct=Sct;Yt();var GC=class extends ft{constructor(){super(...arguments);this.since=ge.String("--since",{description:"Only include workspaces that have been changed since the specified ref.",tolerateBoolean:!0});this.recursive=ge.Boolean("-R,--recursive",!1,{description:"Find packages via dependencies/devDependencies instead of using the workspaces field"});this.noPrivate=ge.Boolean("--no-private",{description:"Exclude workspaces that have the private field set to true"});this.verbose=ge.Boolean("-v,--verbose",!1,{description:"Also return the cross-dependencies between workspaces"});this.json=ge.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"})}static{this.paths=[["workspaces","list"]]}static{this.usage=ot.Usage({category:"Workspace-related commands",description:"list all available workspaces",details:"\n This command will print the list of all workspaces in the project.\n\n - If `--since` is set, Yarn will only list workspaces that have been modified since the specified ref. By default Yarn will use the refs specified by the `changesetBaseRefs` configuration option.\n\n - If `-R,--recursive` is set, Yarn will find workspaces to run the command on by recursively evaluating `dependencies` and `devDependencies` fields, instead of looking at the `workspaces` fields.\n\n - If `--no-private` is set, Yarn will not list any workspaces that have the `private` field set to `true`.\n\n - If both the `-v,--verbose` and `--json` options are set, Yarn will also return the cross-dependencies between each workspaces (useful when you wish to automatically generate Buck / Bazel rules).\n "})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s}=await Rt.find(r,this.context.cwd);return(await Ot.start({configuration:r,json:this.json,stdout:this.context.stdout},async n=>{let c=this.since?await ka.fetchChangedWorkspaces({ref:this.since,project:s}):s.workspaces,f=new Set(c);if(this.recursive)for(let p of[...c].map(h=>h.getRecursiveWorkspaceDependents()))for(let h of p)f.add(h);for(let p of f){let{manifest:h}=p;if(h.private&&this.noPrivate)continue;let E;if(this.verbose){let C=new Set,S=new Set;for(let b of Ut.hardDependencies)for(let[I,T]of h.getForScope(b)){let N=s.tryWorkspaceByDescriptor(T);N===null?s.workspacesByIdent.has(I)&&S.add(T):C.add(N)}E={workspaceDependencies:Array.from(C).map(b=>b.relativeCwd),mismatchedWorkspaceDependencies:Array.from(S).map(b=>G.stringifyDescriptor(b))}}n.reportInfo(null,`${p.relativeCwd}`),n.reportJson({location:p.relativeCwd,name:h.name?G.stringifyIdent(h.name):null,...E})}})).exitCode()}};Ge();Ge();Yt();var qC=class extends ft{constructor(){super(...arguments);this.workspaceName=ge.String();this.commandName=ge.String();this.args=ge.Proxy()}static{this.paths=[["workspace"]]}static{this.usage=ot.Usage({category:"Workspace-related commands",description:"run a command within the specified workspace",details:` This command will run a given sub-command on a single workspace. `,examples:[["Add a package to a single workspace","yarn workspace components add -D react"],["Run build script on a single workspace","yarn workspace components run build"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Rt.find(r,this.context.cwd);if(!a)throw new ar(s.cwd,this.context.cwd);let n=s.workspaces,c=new Map(n.map(p=>[G.stringifyIdent(p.anchoredLocator),p])),f=c.get(this.workspaceName);if(f===void 0){let p=Array.from(c.keys()).sort();throw new nt(`Workspace '${this.workspaceName}' not found. Did you mean any of the following: - ${p.join(` - `)}?`)}return this.cli.run([this.commandName,...this.args],{cwd:f.cwd})}};var Pct={configuration:{enableImmutableInstalls:{description:"If true (the default on CI), prevents the install command from modifying the lockfile",type:"BOOLEAN",default:Yye.isCI},defaultSemverRangePrefix:{description:"The default save prefix: '^', '~' or ''",type:"STRING",values:["^","~",""],default:"^"},preferReuse:{description:"If true, `yarn add` will attempt to reuse the most common dependency range in other workspaces.",type:"BOOLEAN",default:!1}},commands:[aC,lC,cC,uC,OC,PC,EC,GC,pC,hC,gC,dC,sC,oC,fC,AC,mC,yC,IC,CC,wC,BC,LC,vC,SC,xC,bC,kC,DC,QC,RC,TC,FC,NC,MC,UC,qC]},bct=Pct;var d5={};Vt(d5,{default:()=>kct});Ge();var Qt={optional:!0},A5=[["@tailwindcss/aspect-ratio@<0.2.1",{peerDependencies:{tailwindcss:"^2.0.2"}}],["@tailwindcss/line-clamp@<0.2.1",{peerDependencies:{tailwindcss:"^2.0.2"}}],["@fullhuman/postcss-purgecss@3.1.3 || 3.1.3-alpha.0",{peerDependencies:{postcss:"^8.0.0"}}],["@samverschueren/stream-to-observable@<0.3.1",{peerDependenciesMeta:{rxjs:Qt,zenObservable:Qt}}],["any-observable@<0.5.1",{peerDependenciesMeta:{rxjs:Qt,zenObservable:Qt}}],["@pm2/agent@<1.0.4",{dependencies:{debug:"*"}}],["debug@<4.2.0",{peerDependenciesMeta:{"supports-color":Qt}}],["got@<11",{dependencies:{"@types/responselike":"^1.0.0","@types/keyv":"^3.1.1"}}],["cacheable-lookup@<4.1.2",{dependencies:{"@types/keyv":"^3.1.1"}}],["http-link-dataloader@*",{peerDependencies:{graphql:"^0.13.1 || ^14.0.0"}}],["typescript-language-server@*",{dependencies:{"vscode-jsonrpc":"^5.0.1","vscode-languageserver-protocol":"^3.15.0"}}],["postcss-syntax@*",{peerDependenciesMeta:{"postcss-html":Qt,"postcss-jsx":Qt,"postcss-less":Qt,"postcss-markdown":Qt,"postcss-scss":Qt}}],["jss-plugin-rule-value-function@<=10.1.1",{dependencies:{"tiny-warning":"^1.0.2"}}],["ink-select-input@<4.1.0",{peerDependencies:{react:"^16.8.2"}}],["license-webpack-plugin@<2.3.18",{peerDependenciesMeta:{webpack:Qt}}],["snowpack@>=3.3.0",{dependencies:{"node-gyp":"^7.1.0"}}],["promise-inflight@*",{peerDependenciesMeta:{bluebird:Qt}}],["reactcss@*",{peerDependencies:{react:"*"}}],["react-color@<=2.19.0",{peerDependencies:{react:"*"}}],["gatsby-plugin-i18n@*",{dependencies:{ramda:"^0.24.1"}}],["useragent@^2.0.0",{dependencies:{request:"^2.88.0",yamlparser:"0.0.x",semver:"5.5.x"}}],["@apollographql/apollo-tools@<=0.5.2",{peerDependencies:{graphql:"^14.2.1 || ^15.0.0"}}],["material-table@^2.0.0",{dependencies:{"@babel/runtime":"^7.11.2"}}],["@babel/parser@*",{dependencies:{"@babel/types":"^7.8.3"}}],["fork-ts-checker-webpack-plugin@<=6.3.4",{peerDependencies:{eslint:">= 6",typescript:">= 2.7",webpack:">= 4","vue-template-compiler":"*"},peerDependenciesMeta:{eslint:Qt,"vue-template-compiler":Qt}}],["rc-animate@<=3.1.1",{peerDependencies:{react:">=16.9.0","react-dom":">=16.9.0"}}],["react-bootstrap-table2-paginator@*",{dependencies:{classnames:"^2.2.6"}}],["react-draggable@<=4.4.3",{peerDependencies:{react:">= 16.3.0","react-dom":">= 16.3.0"}}],["apollo-upload-client@<14",{peerDependencies:{graphql:"14 - 15"}}],["react-instantsearch-core@<=6.7.0",{peerDependencies:{algoliasearch:">= 3.1 < 5"}}],["react-instantsearch-dom@<=6.7.0",{dependencies:{"react-fast-compare":"^3.0.0"}}],["ws@<7.2.1",{peerDependencies:{bufferutil:"^4.0.1","utf-8-validate":"^5.0.2"},peerDependenciesMeta:{bufferutil:Qt,"utf-8-validate":Qt}}],["react-portal@<4.2.2",{peerDependencies:{"react-dom":"^15.0.0-0 || ^16.0.0-0 || ^17.0.0-0"}}],["react-scripts@<=4.0.1",{peerDependencies:{react:"*"}}],["testcafe@<=1.10.1",{dependencies:{"@babel/plugin-transform-for-of":"^7.12.1","@babel/runtime":"^7.12.5"}}],["testcafe-legacy-api@<=4.2.0",{dependencies:{"testcafe-hammerhead":"^17.0.1","read-file-relative":"^1.2.0"}}],["@google-cloud/firestore@<=4.9.3",{dependencies:{protobufjs:"^6.8.6"}}],["gatsby-source-apiserver@*",{dependencies:{"babel-polyfill":"^6.26.0"}}],["@webpack-cli/package-utils@<=1.0.1-alpha.4",{dependencies:{"cross-spawn":"^7.0.3"}}],["gatsby-remark-prismjs@<3.3.28",{dependencies:{lodash:"^4"}}],["gatsby-plugin-favicon@*",{peerDependencies:{webpack:"*"}}],["gatsby-plugin-sharp@<=4.6.0-next.3",{dependencies:{debug:"^4.3.1"}}],["gatsby-react-router-scroll@<=5.6.0-next.0",{dependencies:{"prop-types":"^15.7.2"}}],["@rebass/forms@*",{dependencies:{"@styled-system/should-forward-prop":"^5.0.0"},peerDependencies:{react:"^16.8.6"}}],["rebass@*",{peerDependencies:{react:"^16.8.6"}}],["@ant-design/react-slick@<=0.28.3",{peerDependencies:{react:">=16.0.0"}}],["mqtt@<4.2.7",{dependencies:{duplexify:"^4.1.1"}}],["vue-cli-plugin-vuetify@<=2.0.3",{dependencies:{semver:"^6.3.0"},peerDependenciesMeta:{"sass-loader":Qt,"vuetify-loader":Qt}}],["vue-cli-plugin-vuetify@<=2.0.4",{dependencies:{"null-loader":"^3.0.0"}}],["vue-cli-plugin-vuetify@>=2.4.3",{peerDependencies:{vue:"*"}}],["@vuetify/cli-plugin-utils@<=0.0.4",{dependencies:{semver:"^6.3.0"},peerDependenciesMeta:{"sass-loader":Qt}}],["@vue/cli-plugin-typescript@<=5.0.0-alpha.0",{dependencies:{"babel-loader":"^8.1.0"}}],["@vue/cli-plugin-typescript@<=5.0.0-beta.0",{dependencies:{"@babel/core":"^7.12.16"},peerDependencies:{"vue-template-compiler":"^2.0.0"},peerDependenciesMeta:{"vue-template-compiler":Qt}}],["cordova-ios@<=6.3.0",{dependencies:{underscore:"^1.9.2"}}],["cordova-lib@<=10.0.1",{dependencies:{underscore:"^1.9.2"}}],["git-node-fs@*",{peerDependencies:{"js-git":"^0.7.8"},peerDependenciesMeta:{"js-git":Qt}}],["consolidate@<0.16.0",{peerDependencies:{mustache:"^3.0.0"},peerDependenciesMeta:{mustache:Qt}}],["consolidate@<=0.16.0",{peerDependencies:{velocityjs:"^2.0.1",tinyliquid:"^0.2.34","liquid-node":"^3.0.1",jade:"^1.11.0","then-jade":"*",dust:"^0.3.0","dustjs-helpers":"^1.7.4","dustjs-linkedin":"^2.7.5",swig:"^1.4.2","swig-templates":"^2.0.3","razor-tmpl":"^1.3.1",atpl:">=0.7.6",liquor:"^0.0.5",twig:"^1.15.2",ejs:"^3.1.5",eco:"^1.1.0-rc-3",jazz:"^0.0.18",jqtpl:"~1.1.0",hamljs:"^0.6.2",hamlet:"^0.3.3",whiskers:"^0.4.0","haml-coffee":"^1.14.1","hogan.js":"^3.0.2",templayed:">=0.2.3",handlebars:"^4.7.6",underscore:"^1.11.0",lodash:"^4.17.20",pug:"^3.0.0","then-pug":"*",qejs:"^3.0.5",walrus:"^0.10.1",mustache:"^4.0.1",just:"^0.1.8",ect:"^0.5.9",mote:"^0.2.0",toffee:"^0.3.6",dot:"^1.1.3","bracket-template":"^1.1.5",ractive:"^1.3.12",nunjucks:"^3.2.2",htmling:"^0.0.8","babel-core":"^6.26.3",plates:"~0.4.11","react-dom":"^16.13.1",react:"^16.13.1","arc-templates":"^0.5.3",vash:"^0.13.0",slm:"^2.0.0",marko:"^3.14.4",teacup:"^2.0.0","coffee-script":"^1.12.7",squirrelly:"^5.1.0",twing:"^5.0.2"},peerDependenciesMeta:{velocityjs:Qt,tinyliquid:Qt,"liquid-node":Qt,jade:Qt,"then-jade":Qt,dust:Qt,"dustjs-helpers":Qt,"dustjs-linkedin":Qt,swig:Qt,"swig-templates":Qt,"razor-tmpl":Qt,atpl:Qt,liquor:Qt,twig:Qt,ejs:Qt,eco:Qt,jazz:Qt,jqtpl:Qt,hamljs:Qt,hamlet:Qt,whiskers:Qt,"haml-coffee":Qt,"hogan.js":Qt,templayed:Qt,handlebars:Qt,underscore:Qt,lodash:Qt,pug:Qt,"then-pug":Qt,qejs:Qt,walrus:Qt,mustache:Qt,just:Qt,ect:Qt,mote:Qt,toffee:Qt,dot:Qt,"bracket-template":Qt,ractive:Qt,nunjucks:Qt,htmling:Qt,"babel-core":Qt,plates:Qt,"react-dom":Qt,react:Qt,"arc-templates":Qt,vash:Qt,slm:Qt,marko:Qt,teacup:Qt,"coffee-script":Qt,squirrelly:Qt,twing:Qt}}],["vue-loader@<=16.3.3",{peerDependencies:{"@vue/compiler-sfc":"^3.0.8",webpack:"^4.1.0 || ^5.0.0-0"},peerDependenciesMeta:{"@vue/compiler-sfc":Qt}}],["vue-loader@^16.7.0",{peerDependencies:{"@vue/compiler-sfc":"^3.0.8",vue:"^3.2.13"},peerDependenciesMeta:{"@vue/compiler-sfc":Qt,vue:Qt}}],["scss-parser@<=1.0.5",{dependencies:{lodash:"^4.17.21"}}],["query-ast@<1.0.5",{dependencies:{lodash:"^4.17.21"}}],["redux-thunk@<=2.3.0",{peerDependencies:{redux:"^4.0.0"}}],["skypack@<=0.3.2",{dependencies:{tar:"^6.1.0"}}],["@npmcli/metavuln-calculator@<2.0.0",{dependencies:{"json-parse-even-better-errors":"^2.3.1"}}],["bin-links@<2.3.0",{dependencies:{"mkdirp-infer-owner":"^1.0.2"}}],["rollup-plugin-polyfill-node@<=0.8.0",{peerDependencies:{rollup:"^1.20.0 || ^2.0.0"}}],["snowpack@<3.8.6",{dependencies:{"magic-string":"^0.25.7"}}],["elm-webpack-loader@*",{dependencies:{temp:"^0.9.4"}}],["winston-transport@<=4.4.0",{dependencies:{logform:"^2.2.0"}}],["jest-vue-preprocessor@*",{dependencies:{"@babel/core":"7.8.7","@babel/template":"7.8.6"},peerDependencies:{pug:"^2.0.4"},peerDependenciesMeta:{pug:Qt}}],["redux-persist@*",{peerDependencies:{react:">=16"},peerDependenciesMeta:{react:Qt}}],["sodium@>=3",{dependencies:{"node-gyp":"^3.8.0"}}],["babel-plugin-graphql-tag@<=3.1.0",{peerDependencies:{graphql:"^14.0.0 || ^15.0.0"}}],["@playwright/test@<=1.14.1",{dependencies:{"jest-matcher-utils":"^26.4.2"}}],...["babel-plugin-remove-graphql-queries@<3.14.0-next.1","babel-preset-gatsby-package@<1.14.0-next.1","create-gatsby@<1.14.0-next.1","gatsby-admin@<0.24.0-next.1","gatsby-cli@<3.14.0-next.1","gatsby-core-utils@<2.14.0-next.1","gatsby-design-tokens@<3.14.0-next.1","gatsby-legacy-polyfills@<1.14.0-next.1","gatsby-plugin-benchmark-reporting@<1.14.0-next.1","gatsby-plugin-graphql-config@<0.23.0-next.1","gatsby-plugin-image@<1.14.0-next.1","gatsby-plugin-mdx@<2.14.0-next.1","gatsby-plugin-netlify-cms@<5.14.0-next.1","gatsby-plugin-no-sourcemaps@<3.14.0-next.1","gatsby-plugin-page-creator@<3.14.0-next.1","gatsby-plugin-preact@<5.14.0-next.1","gatsby-plugin-preload-fonts@<2.14.0-next.1","gatsby-plugin-schema-snapshot@<2.14.0-next.1","gatsby-plugin-styletron@<6.14.0-next.1","gatsby-plugin-subfont@<3.14.0-next.1","gatsby-plugin-utils@<1.14.0-next.1","gatsby-recipes@<0.25.0-next.1","gatsby-source-shopify@<5.6.0-next.1","gatsby-source-wikipedia@<3.14.0-next.1","gatsby-transformer-screenshot@<3.14.0-next.1","gatsby-worker@<0.5.0-next.1"].map(t=>[t,{dependencies:{"@babel/runtime":"^7.14.8"}}]),["gatsby-core-utils@<2.14.0-next.1",{dependencies:{got:"8.3.2"}}],["gatsby-plugin-gatsby-cloud@<=3.1.0-next.0",{dependencies:{"gatsby-core-utils":"^2.13.0-next.0"}}],["gatsby-plugin-gatsby-cloud@<=3.2.0-next.1",{peerDependencies:{webpack:"*"}}],["babel-plugin-remove-graphql-queries@<=3.14.0-next.1",{dependencies:{"gatsby-core-utils":"^2.8.0-next.1"}}],["gatsby-plugin-netlify@3.13.0-next.1",{dependencies:{"gatsby-core-utils":"^2.13.0-next.0"}}],["clipanion-v3-codemod@<=0.2.0",{peerDependencies:{jscodeshift:"^0.11.0"}}],["react-live@*",{peerDependencies:{"react-dom":"*",react:"*"}}],["webpack@<4.44.1",{peerDependenciesMeta:{"webpack-cli":Qt,"webpack-command":Qt}}],["webpack@<5.0.0-beta.23",{peerDependenciesMeta:{"webpack-cli":Qt}}],["webpack-dev-server@<3.10.2",{peerDependenciesMeta:{"webpack-cli":Qt}}],["@docusaurus/responsive-loader@<1.5.0",{peerDependenciesMeta:{sharp:Qt,jimp:Qt}}],["eslint-module-utils@*",{peerDependenciesMeta:{"eslint-import-resolver-node":Qt,"eslint-import-resolver-typescript":Qt,"eslint-import-resolver-webpack":Qt,"@typescript-eslint/parser":Qt}}],["eslint-plugin-import@*",{peerDependenciesMeta:{"@typescript-eslint/parser":Qt}}],["critters-webpack-plugin@<3.0.2",{peerDependenciesMeta:{"html-webpack-plugin":Qt}}],["terser@<=5.10.0",{dependencies:{acorn:"^8.5.0"}}],["babel-preset-react-app@10.0.x <10.0.2",{dependencies:{"@babel/plugin-proposal-private-property-in-object":"^7.16.7"}}],["eslint-config-react-app@*",{peerDependenciesMeta:{typescript:Qt}}],["@vue/eslint-config-typescript@<11.0.0",{peerDependenciesMeta:{typescript:Qt}}],["unplugin-vue2-script-setup@<0.9.1",{peerDependencies:{"@vue/composition-api":"^1.4.3","@vue/runtime-dom":"^3.2.26"}}],["@cypress/snapshot@*",{dependencies:{debug:"^3.2.7"}}],["auto-relay@<=0.14.0",{peerDependencies:{"reflect-metadata":"^0.1.13"}}],["vue-template-babel-compiler@<1.2.0",{peerDependencies:{"vue-template-compiler":"^2.6.0"}}],["@parcel/transformer-image@<2.5.0",{peerDependencies:{"@parcel/core":"*"}}],["@parcel/transformer-js@<2.5.0",{peerDependencies:{"@parcel/core":"*"}}],["parcel@*",{peerDependenciesMeta:{"@parcel/core":Qt}}],["react-scripts@*",{peerDependencies:{eslint:"*"}}],["focus-trap-react@^8.0.0",{dependencies:{tabbable:"^5.3.2"}}],["react-rnd@<10.3.7",{peerDependencies:{react:">=16.3.0","react-dom":">=16.3.0"}}],["connect-mongo@<5.0.0",{peerDependencies:{"express-session":"^1.17.1"}}],["vue-i18n@<9",{peerDependencies:{vue:"^2"}}],["vue-router@<4",{peerDependencies:{vue:"^2"}}],["unified@<10",{dependencies:{"@types/unist":"^2.0.0"}}],["react-github-btn@<=1.3.0",{peerDependencies:{react:">=16.3.0"}}],["react-dev-utils@*",{peerDependencies:{typescript:">=2.7",webpack:">=4"},peerDependenciesMeta:{typescript:Qt}}],["@asyncapi/react-component@<=1.0.0-next.39",{peerDependencies:{react:">=16.8.0","react-dom":">=16.8.0"}}],["xo@*",{peerDependencies:{webpack:">=1.11.0"},peerDependenciesMeta:{webpack:Qt}}],["babel-plugin-remove-graphql-queries@<=4.20.0-next.0",{dependencies:{"@babel/types":"^7.15.4"}}],["gatsby-plugin-page-creator@<=4.20.0-next.1",{dependencies:{"fs-extra":"^10.1.0"}}],["gatsby-plugin-utils@<=3.14.0-next.1",{dependencies:{fastq:"^1.13.0"},peerDependencies:{graphql:"^15.0.0"}}],["gatsby-plugin-mdx@<3.1.0-next.1",{dependencies:{mkdirp:"^1.0.4"}}],["gatsby-plugin-mdx@^2",{peerDependencies:{gatsby:"^3.0.0-next"}}],["fdir@<=5.2.0",{peerDependencies:{picomatch:"2.x"},peerDependenciesMeta:{picomatch:Qt}}],["babel-plugin-transform-typescript-metadata@<=0.3.2",{peerDependencies:{"@babel/core":"^7","@babel/traverse":"^7"},peerDependenciesMeta:{"@babel/traverse":Qt}}],["graphql-compose@>=9.0.10",{peerDependencies:{graphql:"^14.2.0 || ^15.0.0 || ^16.0.0"}}],["vite-plugin-vuetify@<=1.0.2",{peerDependencies:{vue:"^3.0.0"}}],["webpack-plugin-vuetify@<=2.0.1",{peerDependencies:{vue:"^3.2.6"}}],["eslint-import-resolver-vite@<2.0.1",{dependencies:{debug:"^4.3.4",resolve:"^1.22.8"}}],["notistack@^3.0.0",{dependencies:{csstype:"^3.0.10"}}],["@fastify/type-provider-typebox@^5.0.0",{peerDependencies:{fastify:"^5.0.0"}}],["@fastify/type-provider-typebox@^4.0.0",{peerDependencies:{fastify:"^4.0.0"}}]];var p5;function Vye(){return typeof p5>"u"&&(p5=Ie("zlib").brotliDecompressSync(Buffer.from("G7weAByFTVk3Vs7UfHhq4yykgEM7pbW7TI43SG2S5tvGrwHBAzdz+s/npQ6tgEvobvxisrPIadkXeUAJotBn5bDZ5kAhcRqsIHe3F75Walet5hNalwgFDtxb0BiDUjiUQkjG0yW2hto9HPgiCkm316d6bC0kST72YN7D7rfkhCE9x4J0XwB0yavalxpUu2t9xszHrmtwalOxT7VslsxWcB1qpqZwERUra4psWhTV8BgwWeizurec82Caf1ABL11YMfbf8FJ9JBceZOkgmvrQPbC9DUldX/yMbmX06UQluCEjSwUoyO+EZPIjofr+/oAZUck2enraRD+oWLlnlYnj8xB+gwSo9lmmks4fXv574qSqcWA6z21uYkzMu3EWj+K23RxeQlLqiE35/rC8GcS4CGkKHKKq+zAIQwD9iRDNfiAqueLLpicFFrNsAI4zeTD/eO9MHcnRa5m8UT+M2+V+AkFST4BlKneiAQRSdST8KEAIyFlULt6wa9EBd0Ds28VmpaxquJdVt+nwdEs5xUskI13OVtFyY0UrQIRAlCuvvWivvlSKQfTO+2Q8OyUR1W5RvetaPz4jD27hdtwHFFA1Ptx6Ee/t2cY2rg2G46M1pNDRf2pWhvpy8pqMnuI3++4OF3+7OFIWXGjh+o7Nr2jNvbiYcQdQS1h903/jVFgOpA0yJ78z+x759bFA0rq+6aY5qPB4FzS3oYoLupDUhD9nDz6F6H7hpnlMf18KNKDu4IKjTWwrAnY6MFQw1W6ymOALHlFyCZmQhldg1MQHaMVVQTVgDC60TfaBqG++Y8PEoFhN/PBTZT175KNP/BlHDYGOOBmnBdzqJKplZ/ljiVG0ZBzfqeBRrrUkn6rA54462SgiliKoYVnbeptMdXNfAuaupIEi0bApF10TlgHfmEJAPUVidRVFyDupSem5po5vErPqWKhKbUIp0LozpYsIKK57dM/HKr+nguF+7924IIWMICkQ8JUigs9D+W+c4LnNoRtPPKNRUiCYmP+Jfo2lfKCKw8qpraEeWU3uiNRO6zcyKQoXPR5htmzzLznke7b4YbXW3I1lIRzmgG02Udb58U+7TpwyN7XymCgH+wuPDthZVQvRZuEP+SnLtMicz9m5zASWOBiAcLmkuFlTKuHspSIhCBD0yUPKcxu81A+4YD78rA2vtwsUEday9WNyrShyrl60rWmA+SmbYZkQOwFJWArxRYYc5jGhA5ikxYw1rx3ei4NmeX/lKiwpZ9Ln1tV2Ae7sArvxuVLbJjqJRjW1vFXAyHpvLG+8MJ6T2Ubx5M2KDa2SN6vuIGxJ9WQM9Mk3Q7aCNiZONXllhqq24DmoLbQfW2rYWsOgHWjtOmIQMyMKdiHZDjoyIq5+U700nZ6odJAoYXPQBvFNiQ78d5jaXliBqLTJEqUCwi+LiH2mx92EmNKDsJL74Z613+3lf20pxkV1+erOrjj8pW00vsPaahKUM+05ssd5uwM7K482KWEf3TCwlg/o3e5ngto7qSMz7YteIgCsF1UOcsLk7F7MxWbvrPMY473ew0G+noVL8EPbkmEMftMSeL6HFub/zy+2JQ==","base64")).toString()),p5}var h5;function Jye(){return typeof h5>"u"&&(h5=Ie("zlib").brotliDecompressSync(Buffer.from("G8MSIIzURnVBnObTcvb3XE6v2S9Qgc2K801Oa5otNKEtK8BINZNcaQHy+9/vf/WXBimwutXC33P2DPc64pps5rz7NGGWaOKNSPL4Y2KRE8twut2lFOIN+OXPtRmPMRhMTILib2bEQx43az2I5d3YS8Roa5UZpF/ujHb3Djd3GDvYUfvFYSUQ39vb2cmifp/rgB4J/65JK3wRBTvMBoNBmn3mbXC63/gbBkW/2IRPri0O8bcsRBsmarF328pAln04nyJFkwUAvNu934supAqLtyerZZpJ8I8suJHhf/ocMV+scKwa8NOiDKIPXw6Ex/EEZD6TEGaW8N5zvNHYF10l6Lfooj7D5W2k3dgvQSbp2Wv8TGOayS978gxlOLVjTGXs66ozewbrjwElLtyrYNnWTfzzdEutgROUFPVMhnMoy8EjJLLlWwIEoySxliim9kYW30JUHiPVyjt0iAw/ZpPmCbUCltYPnq6ZNblIKhTNhqS/oqC9iya5sGKZTOVsTEg34n92uZTf2iPpcZih8rPW8CzA+adIGmyCPcKdLMsBLShd+zuEbTrqpwuh+DLmracZcjPC5Sdf5odDAhKpFuOsQS67RT+1VgWWygSv3YwxDnylc04/PYuaMeIzhBkLrvs7e/OUzRTF56MmfY6rI63QtEjEQzq637zQqJ39nNhu3NmoRRhW/086bHGBUtx0PE0j3aEGvkdh9WJC8y8j8mqqke9/dQ5la+Q3ba4RlhvTbnfQhPDDab3tUifkjKuOsp13mXEmO00Mu88F/M67R7LXfoFDFLNtgCSWjWX+3Jn1371pJTK9xPBiMJafvDjtFyAzu8rxeQ0TKMQXNPs5xxiBOd+BRJP8KP88XPtJIbZKh/cdW8KvBUkpqKpGoiIaA32c3/JnQr4efXt85mXvidOvn/eU3Pase1typLYBalJ14mCso9h79nuMOuCa/kZAOkJHmTjP5RM2WNoPasZUAnT1TAE/NH25hUxcQv6hQWR/m1PKk4ooXMcM4SR1iYU3fUohvqk4RY2hbmTVVIXv6TvqO+0doOjgeVFAcom+RlwJQmOVH7pr1Q9LoJT6n1DeQEB+NHygsATbIwTcOKZlJsY8G4+suX1uQLjUWwLjjs0mvSvZcLTpIGAekeR7GCgl8eo3ndAqEe2XCav4huliHjdbIPBsGJuPX7lrO9HX1UbXRH5opOe1x6JsOSgHZR+EaxuXVhpLLxm6jk1LJtZfHSc6BKPun3CpYYVMJGwEUyk8MTGG0XL5MfEwaXpnc9TKnBmlGn6nHiGREc3ysn47XIBDzA+YvFdjZzVIEDcKGpS6PbUJehFRjEne8D0lVU1XuRtlgszq6pTNlQ/3MzNOEgCWPyTct22V2mEi2krizn5VDo9B19/X2DB3hCGRMM7ONbtnAcIx/OWB1u5uPbW1gsH8irXxT/IzG0PoXWYjhbMsH3KTuoOl5o17PulcgvsfTSnKFM354GWI8luqZnrswWjiXy3G+Vbyo1KMopFmmvBwNELgaS8z8dNZchx/Cl/xjddxhMcyqtzFyONb2Zdu90NkI8pAeufe7YlXrp53v8Dj/l8vWeVspRKBGXScBBPI/HinSTGmLDOGGOCIyH0JFdOZx0gWsacNlQLJMIrBhqRxXxHF/5pseWwejlAAvZ3klZSDSYY8mkToaWejXhgNomeGtx1DTLEUFMRkgF5yFB22WYdJnaWN14r1YJj81hGi45+jrADS5nYRhCiSlCJJ1nL8pYX+HDSMhdTEWyRcgHVp/IsUIZYMfT+YYncUQPgcxNGCHfZ88vDdrcUuaGIl6zhAsiaq7R5dfqrqXH/JcBhfjT8D0azayIyEz75Nxp6YkcyDxlJq3EXnJUpqDohJJOysL1t1uNiHESlvsxPb5cpbW0+ICZqJmUZus1BMW0F5IVBODLIo2zHHjA0=","base64")).toString()),h5}var g5;function Kye(){return typeof g5>"u"&&(g5=Ie("zlib").brotliDecompressSync(Buffer.from("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","base64")).toString()),g5}var zye=new Map([[G.makeIdent(null,"fsevents").identHash,Vye],[G.makeIdent(null,"resolve").identHash,Jye],[G.makeIdent(null,"typescript").identHash,Kye]]),xct={hooks:{registerPackageExtensions:async(t,e)=>{for(let[r,s]of A5)e(G.parseDescriptor(r,!0),s)},getBuiltinPatch:async(t,e)=>{let r="compat/";if(!e.startsWith(r))return;let s=G.parseIdent(e.slice(r.length)),a=zye.get(s.identHash)?.();return typeof a<"u"?a:null},reduceDependency:async(t,e,r,s)=>typeof zye.get(t.identHash)>"u"?t:G.makeDescriptor(t,G.makeRange({protocol:"patch:",source:G.stringifyDescriptor(t),selector:`optional!builtin`,params:null}))}},kct=xct;var T5={};Vt(T5,{ConstraintsCheckCommand:()=>XC,ConstraintsQueryCommand:()=>zC,ConstraintsSourceCommand:()=>ZC,default:()=>Kct});Ge();Ge();iS();var YC=class{constructor(e){this.project=e}createEnvironment(){let e=new WC(["cwd","ident"]),r=new WC(["workspace","type","ident"]),s=new WC(["ident"]),a={manifestUpdates:new Map,reportedErrors:new Map},n=new Map,c=new Map;for(let f of this.project.storedPackages.values()){let p=Array.from(f.peerDependencies.values(),h=>[G.stringifyIdent(h),h.range]);n.set(f.locatorHash,{workspace:null,ident:G.stringifyIdent(f),version:f.version,dependencies:new Map,peerDependencies:new Map(p.filter(([h])=>f.peerDependenciesMeta.get(h)?.optional!==!0)),optionalPeerDependencies:new Map(p.filter(([h])=>f.peerDependenciesMeta.get(h)?.optional===!0))})}for(let f of this.project.storedPackages.values()){let p=n.get(f.locatorHash);p.dependencies=new Map(Array.from(f.dependencies.values(),h=>{let E=this.project.storedResolutions.get(h.descriptorHash);if(typeof E>"u")throw new Error("Assertion failed: The resolution should have been registered");let C=n.get(E);if(typeof C>"u")throw new Error("Assertion failed: The package should have been registered");return[G.stringifyIdent(h),C]})),p.dependencies.delete(p.ident)}for(let f of this.project.workspaces){let p=G.stringifyIdent(f.anchoredLocator),h=f.manifest.exportTo({}),E=n.get(f.anchoredLocator.locatorHash);if(typeof E>"u")throw new Error("Assertion failed: The package should have been registered");let C=(T,N,{caller:U=fs.getCaller()}={})=>{let W=nS(T),ee=je.getMapWithDefault(a.manifestUpdates,f.cwd),ie=je.getMapWithDefault(ee,W),ue=je.getSetWithDefault(ie,N);U!==null&&ue.add(U)},S=T=>C(T,void 0,{caller:fs.getCaller()}),b=T=>{je.getArrayWithDefault(a.reportedErrors,f.cwd).push(T)},I=e.insert({cwd:f.relativeCwd,ident:p,manifest:h,pkg:E,set:C,unset:S,error:b});c.set(f,I);for(let T of Ut.allDependencies)for(let N of f.manifest[T].values()){let U=G.stringifyIdent(N),W=()=>{C([T,U],void 0,{caller:fs.getCaller()})},ee=ue=>{C([T,U],ue,{caller:fs.getCaller()})},ie=null;if(T!=="peerDependencies"&&(T!=="dependencies"||!f.manifest.devDependencies.has(N.identHash))){let ue=f.anchoredPackage.dependencies.get(N.identHash);if(ue){if(typeof ue>"u")throw new Error("Assertion failed: The dependency should have been registered");let le=this.project.storedResolutions.get(ue.descriptorHash);if(typeof le>"u")throw new Error("Assertion failed: The resolution should have been registered");let me=n.get(le);if(typeof me>"u")throw new Error("Assertion failed: The package should have been registered");ie=me}}r.insert({workspace:I,ident:U,range:N.range,type:T,resolution:ie,update:ee,delete:W,error:b})}}for(let f of this.project.storedPackages.values()){let p=this.project.tryWorkspaceByLocator(f);if(!p)continue;let h=c.get(p);if(typeof h>"u")throw new Error("Assertion failed: The workspace should have been registered");let E=n.get(f.locatorHash);if(typeof E>"u")throw new Error("Assertion failed: The package should have been registered");E.workspace=h}return{workspaces:e,dependencies:r,packages:s,result:a}}async process(){let e=this.createEnvironment(),r={Yarn:{workspace:a=>e.workspaces.find(a)[0]??null,workspaces:a=>e.workspaces.find(a),dependency:a=>e.dependencies.find(a)[0]??null,dependencies:a=>e.dependencies.find(a),package:a=>e.packages.find(a)[0]??null,packages:a=>e.packages.find(a)}},s=await this.project.loadUserConfig();return s?.constraints?(await s.constraints(r),e.result):null}};Ge();Ge();Yt();var zC=class extends ft{constructor(){super(...arguments);this.json=ge.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.query=ge.String()}static{this.paths=[["constraints","query"]]}static{this.usage=ot.Usage({category:"Constraints-related commands",description:"query the constraints fact database",details:` This command will output all matches to the given prolog query. `,examples:[["List all dependencies throughout the workspace","yarn constraints query 'workspace_has_dependency(_, DependencyName, _, _).'"]]})}async execute(){let{Constraints:r}=await Promise.resolve().then(()=>(lS(),aS)),s=await ze.find(this.context.cwd,this.context.plugins),{project:a}=await Rt.find(s,this.context.cwd),n=await r.find(a),c=this.query;return c.endsWith(".")||(c=`${c}.`),(await Ot.start({configuration:s,json:this.json,stdout:this.context.stdout},async p=>{for await(let h of n.query(c)){let E=Array.from(Object.entries(h)),C=E.length,S=E.reduce((b,[I])=>Math.max(b,I.length),0);for(let b=0;b(lS(),aS)),s=await ze.find(this.context.cwd,this.context.plugins),{project:a}=await Rt.find(s,this.context.cwd),n=await r.find(a);this.context.stdout.write(this.verbose?n.fullSource:n.source)}};Ge();Ge();Yt();iS();var XC=class extends ft{constructor(){super(...arguments);this.fix=ge.Boolean("--fix",!1,{description:"Attempt to automatically fix unambiguous issues, following a multi-pass process"});this.json=ge.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"})}static{this.paths=[["constraints"]]}static{this.usage=ot.Usage({category:"Constraints-related commands",description:"check that the project constraints are met",details:` This command will run constraints on your project and emit errors for each one that is found but isn't met. If any error is emitted the process will exit with a non-zero exit code. If the \`--fix\` flag is used, Yarn will attempt to automatically fix the issues the best it can, following a multi-pass process (with a maximum of 10 iterations). Some ambiguous patterns cannot be autofixed, in which case you'll have to manually specify the right resolution. For more information as to how to write constraints, please consult our dedicated page on our website: https://yarnpkg.com/features/constraints. `,examples:[["Check that all constraints are satisfied","yarn constraints"],["Autofix all unmet constraints","yarn constraints --fix"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s}=await Rt.find(r,this.context.cwd);await s.restoreInstallState();let a=await s.loadUserConfig(),n;if(a?.constraints)n=new YC(s);else{let{Constraints:h}=await Promise.resolve().then(()=>(lS(),aS));n=await h.find(s)}let c,f=!1,p=!1;for(let h=this.fix?10:1;h>0;--h){let E=await n.process();if(!E)break;let{changedWorkspaces:C,remainingErrors:S}=nF(s,E,{fix:this.fix}),b=[];for(let[I,T]of C){let N=I.manifest.indent;I.manifest=new Ut,I.manifest.indent=N,I.manifest.load(T),b.push(I.persistManifest())}if(await Promise.all(b),!(C.size>0&&h>1)){c=Zye(S,{configuration:r}),f=!1,p=!0;for(let[,I]of S)for(let T of I)T.fixable?f=!0:p=!1}}if(c.children.length===0)return 0;if(f){let h=p?`Those errors can all be fixed by running ${he.pretty(r,"yarn constraints --fix",he.Type.CODE)}`:`Errors prefixed by '\u2699' can be fixed by running ${he.pretty(r,"yarn constraints --fix",he.Type.CODE)}`;await Ot.start({configuration:r,stdout:this.context.stdout,includeNames:!1,includeFooter:!1},async E=>{E.reportInfo(0,h),E.reportSeparator()})}return c.children=je.sortMap(c.children,h=>h.value[1]),xs.emitTree(c,{configuration:r,stdout:this.context.stdout,json:this.json,separators:1}),1}};iS();var Jct={configuration:{enableConstraintsChecks:{description:"If true, constraints will run during installs",type:"BOOLEAN",default:!1},constraintsPath:{description:"The path of the constraints file.",type:"ABSOLUTE_PATH",default:"./constraints.pro"}},commands:[zC,ZC,XC],hooks:{async validateProjectAfterInstall(t,{reportError:e}){if(!t.configuration.get("enableConstraintsChecks"))return;let r=await t.loadUserConfig(),s;if(r?.constraints)s=new YC(t);else{let{Constraints:c}=await Promise.resolve().then(()=>(lS(),aS));s=await c.find(t)}let a=await s.process();if(!a)return;let{remainingErrors:n}=nF(t,a);if(n.size!==0)if(t.configuration.isCI)for(let[c,f]of n)for(let p of f)e(84,`${he.pretty(t.configuration,c.anchoredLocator,he.Type.IDENT)}: ${p.text}`);else e(84,`Constraint check failed; run ${he.pretty(t.configuration,"yarn constraints",he.Type.CODE)} for more details`)}}},Kct=Jct;var F5={};Vt(F5,{CreateCommand:()=>$C,DlxCommand:()=>ew,default:()=>Zct});Ge();Yt();var $C=class extends ft{constructor(){super(...arguments);this.pkg=ge.String("-p,--package",{description:"The package to run the provided command from"});this.quiet=ge.Boolean("-q,--quiet",!1,{description:"Only report critical errors instead of printing the full install logs"});this.command=ge.String();this.args=ge.Proxy()}static{this.paths=[["create"]]}async execute(){let r=[];this.pkg&&r.push("--package",this.pkg),this.quiet&&r.push("--quiet");let s=this.command.replace(/^(@[^@/]+)(@|$)/,"$1/create$2"),a=G.parseDescriptor(s),n=a.name.match(/^create(-|$)/)?a:a.scope?G.makeIdent(a.scope,`create-${a.name}`):G.makeIdent(null,`create-${a.name}`),c=G.stringifyIdent(n);return a.range!=="unknown"&&(c+=`@${a.range}`),this.cli.run(["dlx",...r,c,...this.args])}};Ge();Ge();Dt();Yt();var ew=class extends ft{constructor(){super(...arguments);this.packages=ge.Array("-p,--package",{description:"The package(s) to install before running the command"});this.quiet=ge.Boolean("-q,--quiet",!1,{description:"Only report critical errors instead of printing the full install logs"});this.command=ge.String();this.args=ge.Proxy()}static{this.paths=[["dlx"]]}static{this.usage=ot.Usage({description:"run a package in a temporary environment",details:"\n This command will install a package within a temporary environment, and run its binary script if it contains any. The binary will run within the current cwd.\n\n By default Yarn will download the package named `command`, but this can be changed through the use of the `-p,--package` flag which will instruct Yarn to still run the same command but from a different package.\n\n Using `yarn dlx` as a replacement of `yarn add` isn't recommended, as it makes your project non-deterministic (Yarn doesn't keep track of the packages installed through `dlx` - neither their name, nor their version).\n ",examples:[["Use create-vite to scaffold a new Vite project","yarn dlx create-vite"],["Install multiple packages for a single command",`yarn dlx -p typescript -p ts-node ts-node --transpile-only -e "console.log('hello!')"`]]})}async execute(){return ze.telemetry=null,await ce.mktempPromise(async r=>{let s=J.join(r,`dlx-${process.pid}`);await ce.mkdirPromise(s),await ce.writeFilePromise(J.join(s,"package.json"),`{} `),await ce.writeFilePromise(J.join(s,"yarn.lock"),"");let a=J.join(s,".yarnrc.yml"),n=await ze.findProjectCwd(this.context.cwd),f={enableGlobalCache:!(await ze.find(this.context.cwd,null,{strict:!1})).get("enableGlobalCache"),enableTelemetry:!1,logFilters:[{code:Yf(68),level:he.LogLevel.Discard}]},p=n!==null?J.join(n,".yarnrc.yml"):null;p!==null&&ce.existsSync(p)?(await ce.copyFilePromise(p,a),await ze.updateConfiguration(s,N=>{let U=je.toMerged(N,f);return Array.isArray(N.plugins)&&(U.plugins=N.plugins.map(W=>{let ee=typeof W=="string"?W:W.path,ie=fe.isAbsolute(ee)?ee:fe.resolve(fe.fromPortablePath(n),ee);return typeof W=="string"?ie:{path:ie,spec:W.spec}})),U})):await ce.writeJsonPromise(a,f);let h=this.packages??[this.command],E=G.parseDescriptor(this.command).name,C=await this.cli.run(["add","--fixed","--",...h],{cwd:s,quiet:this.quiet});if(C!==0)return C;this.quiet||this.context.stdout.write(` `);let S=await ze.find(s,this.context.plugins),{project:b,workspace:I}=await Rt.find(S,s);if(I===null)throw new ar(b.cwd,s);await b.restoreInstallState();let T=await In.getWorkspaceAccessibleBinaries(I);return T.has(E)===!1&&T.size===1&&typeof this.packages>"u"&&(E=Array.from(T)[0][0]),await In.executeWorkspaceAccessibleBinary(I,E,this.args,{packageAccessibleBinaries:T,cwd:this.context.cwd,stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr})})}};var zct={commands:[$C,ew]},Zct=zct;var L5={};Vt(L5,{ExecFetcher:()=>uS,ExecResolver:()=>fS,default:()=>eut,execUtils:()=>aF});Ge();Ge();Dt();var cA="exec:";var aF={};Vt(aF,{loadGeneratorFile:()=>cS,makeLocator:()=>O5,makeSpec:()=>BEe,parseSpec:()=>N5});Ge();Dt();function N5(t){let{params:e,selector:r}=G.parseRange(t),s=fe.toPortablePath(r);return{parentLocator:e&&typeof e.locator=="string"?G.parseLocator(e.locator):null,path:s}}function BEe({parentLocator:t,path:e,generatorHash:r,protocol:s}){let a=t!==null?{locator:G.stringifyLocator(t)}:{},n=typeof r<"u"?{hash:r}:{};return G.makeRange({protocol:s,source:e,selector:e,params:{...n,...a}})}function O5(t,{parentLocator:e,path:r,generatorHash:s,protocol:a}){return G.makeLocator(t,BEe({parentLocator:e,path:r,generatorHash:s,protocol:a}))}async function cS(t,e,r){let{parentLocator:s,path:a}=G.parseFileStyleRange(t,{protocol:e}),n=J.isAbsolute(a)?{packageFs:new Sn(vt.root),prefixPath:vt.dot,localPath:vt.root}:await r.fetcher.fetch(s,r),c=n.localPath?{packageFs:new Sn(vt.root),prefixPath:J.relative(vt.root,n.localPath)}:n;n!==c&&n.releaseFs&&n.releaseFs();let f=c.packageFs,p=J.join(c.prefixPath,a);return await f.readFilePromise(p,"utf8")}var uS=class{supports(e,r){return!!e.reference.startsWith(cA)}getLocalPath(e,r){let{parentLocator:s,path:a}=G.parseFileStyleRange(e.reference,{protocol:cA});if(J.isAbsolute(a))return a;let n=r.fetcher.getLocalPath(s,r);return n===null?null:J.resolve(n,a)}async fetch(e,r){let s=r.checksums.get(e.locatorHash)||null,[a,n,c]=await r.cache.fetchPackageFromCache(e,s,{onHit:()=>r.report.reportCacheHit(e),onMiss:()=>r.report.reportCacheMiss(e),loader:()=>this.fetchFromDisk(e,r),...r.cacheOptions});return{packageFs:a,releaseFs:n,prefixPath:G.getIdentVendorPath(e),localPath:this.getLocalPath(e,r),checksum:c}}async fetchFromDisk(e,r){let s=await cS(e.reference,cA,r);return ce.mktempPromise(async a=>{let n=J.join(a,"generator.js");return await ce.writeFilePromise(n,s),ce.mktempPromise(async c=>{if(await this.generatePackage(c,e,n,r),!ce.existsSync(J.join(c,"build")))throw new Error("The script should have generated a build directory");return await ps.makeArchiveFromDirectory(J.join(c,"build"),{prefixPath:G.getIdentVendorPath(e),compressionLevel:r.project.configuration.get("compressionLevel")})})})}async generatePackage(e,r,s,a){return await ce.mktempPromise(async n=>{let c=await In.makeScriptEnv({project:a.project,binFolder:n}),f=J.join(e,"runtime.js");return await ce.mktempPromise(async p=>{let h=J.join(p,"buildfile.log"),E=J.join(e,"generator"),C=J.join(e,"build");await ce.mkdirPromise(E),await ce.mkdirPromise(C);let S={tempDir:fe.fromPortablePath(E),buildDir:fe.fromPortablePath(C),locator:G.stringifyLocator(r)};await ce.writeFilePromise(f,` // Expose 'Module' as a global variable Object.defineProperty(global, 'Module', { get: () => require('module'), configurable: true, enumerable: false, }); // Expose non-hidden built-in modules as global variables for (const name of Module.builtinModules.filter((name) => name !== 'module' && !name.startsWith('_'))) { Object.defineProperty(global, name, { get: () => require(name), configurable: true, enumerable: false, }); } // Expose the 'execEnv' global variable Object.defineProperty(global, 'execEnv', { value: { ...${JSON.stringify(S)}, }, enumerable: true, }); `);let b=c.NODE_OPTIONS||"",I=/\s*--require\s+\S*\.pnp\.c?js\s*/g;b=b.replace(I," ").trim(),c.NODE_OPTIONS=b;let{stdout:T,stderr:N}=a.project.configuration.getSubprocessStreams(h,{header:`# This file contains the result of Yarn generating a package (${G.stringifyLocator(r)}) `,prefix:G.prettyLocator(a.project.configuration,r),report:a.report}),{code:U}=await qr.pipevp(process.execPath,["--require",fe.fromPortablePath(f),fe.fromPortablePath(s),G.stringifyIdent(r)],{cwd:e,env:c,stdin:null,stdout:T,stderr:N});if(U!==0)throw ce.detachTemp(p),new Error(`Package generation failed (exit code ${U}, logs can be found here: ${he.pretty(a.project.configuration,h,he.Type.PATH)})`)})})}};Ge();Ge();var Xct=2,fS=class{supportsDescriptor(e,r){return!!e.range.startsWith(cA)}supportsLocator(e,r){return!!e.reference.startsWith(cA)}shouldPersistResolution(e,r){return!1}bindDescriptor(e,r,s){return G.bindDescriptor(e,{locator:G.stringifyLocator(r)})}getResolutionDependencies(e,r){return{}}async getCandidates(e,r,s){if(!s.fetchOptions)throw new Error("Assertion failed: This resolver cannot be used unless a fetcher is configured");let{path:a,parentLocator:n}=N5(e.range);if(n===null)throw new Error("Assertion failed: The descriptor should have been bound");let c=await cS(G.makeRange({protocol:cA,source:a,selector:a,params:{locator:G.stringifyLocator(n)}}),cA,s.fetchOptions),f=Nn.makeHash(`${Xct}`,c).slice(0,6);return[O5(e,{parentLocator:n,path:a,generatorHash:f,protocol:cA})]}async getSatisfying(e,r,s,a){let[n]=await this.getCandidates(e,r,a);return{locators:s.filter(c=>c.locatorHash===n.locatorHash),sorted:!1}}async resolve(e,r){if(!r.fetchOptions)throw new Error("Assertion failed: This resolver cannot be used unless a fetcher is configured");let s=await r.fetchOptions.fetcher.fetch(e,r.fetchOptions),a=await je.releaseAfterUseAsync(async()=>await Ut.find(s.prefixPath,{baseFs:s.packageFs}),s.releaseFs);return{...e,version:a.version||"0.0.0",languageName:a.languageName||r.project.configuration.get("defaultLanguageName"),linkType:"HARD",conditions:a.getConditions(),dependencies:r.project.configuration.normalizeDependencyMap(a.dependencies),peerDependencies:a.peerDependencies,dependenciesMeta:a.dependenciesMeta,peerDependenciesMeta:a.peerDependenciesMeta,bin:a.bin}}};var $ct={fetchers:[uS],resolvers:[fS]},eut=$ct;var U5={};Vt(U5,{FileFetcher:()=>gS,FileResolver:()=>dS,TarballFileFetcher:()=>mS,TarballFileResolver:()=>yS,default:()=>nut,fileUtils:()=>xm});Ge();Dt();var tw=/^(?:[a-zA-Z]:[\\/]|\.{0,2}\/)/,AS=/^[^?]*\.(?:tar\.gz|tgz)(?:::.*)?$/,$i="file:";var xm={};Vt(xm,{fetchArchiveFromLocator:()=>hS,makeArchiveFromLocator:()=>lF,makeBufferFromLocator:()=>M5,makeLocator:()=>rw,makeSpec:()=>vEe,parseSpec:()=>pS});Ge();Dt();function pS(t){let{params:e,selector:r}=G.parseRange(t),s=fe.toPortablePath(r);return{parentLocator:e&&typeof e.locator=="string"?G.parseLocator(e.locator):null,path:s}}function vEe({parentLocator:t,path:e,hash:r,protocol:s}){let a=t!==null?{locator:G.stringifyLocator(t)}:{},n=typeof r<"u"?{hash:r}:{};return G.makeRange({protocol:s,source:e,selector:e,params:{...n,...a}})}function rw(t,{parentLocator:e,path:r,hash:s,protocol:a}){return G.makeLocator(t,vEe({parentLocator:e,path:r,hash:s,protocol:a}))}async function hS(t,e){let{parentLocator:r,path:s}=G.parseFileStyleRange(t.reference,{protocol:$i}),a=J.isAbsolute(s)?{packageFs:new Sn(vt.root),prefixPath:vt.dot,localPath:vt.root}:await e.fetcher.fetch(r,e),n=a.localPath?{packageFs:new Sn(vt.root),prefixPath:J.relative(vt.root,a.localPath)}:a;a!==n&&a.releaseFs&&a.releaseFs();let c=n.packageFs,f=J.join(n.prefixPath,s);return await je.releaseAfterUseAsync(async()=>await c.readFilePromise(f),n.releaseFs)}async function lF(t,{protocol:e,fetchOptions:r,inMemory:s=!1}){let{parentLocator:a,path:n}=G.parseFileStyleRange(t.reference,{protocol:e}),c=J.isAbsolute(n)?{packageFs:new Sn(vt.root),prefixPath:vt.dot,localPath:vt.root}:await r.fetcher.fetch(a,r),f=c.localPath?{packageFs:new Sn(vt.root),prefixPath:J.relative(vt.root,c.localPath)}:c;c!==f&&c.releaseFs&&c.releaseFs();let p=f.packageFs,h=J.join(f.prefixPath,n);return await je.releaseAfterUseAsync(async()=>await ps.makeArchiveFromDirectory(h,{baseFs:p,prefixPath:G.getIdentVendorPath(t),compressionLevel:r.project.configuration.get("compressionLevel"),inMemory:s}),f.releaseFs)}async function M5(t,{protocol:e,fetchOptions:r}){return(await lF(t,{protocol:e,fetchOptions:r,inMemory:!0})).getBufferAndClose()}var gS=class{supports(e,r){return!!e.reference.startsWith($i)}getLocalPath(e,r){let{parentLocator:s,path:a}=G.parseFileStyleRange(e.reference,{protocol:$i});if(J.isAbsolute(a))return a;let n=r.fetcher.getLocalPath(s,r);return n===null?null:J.resolve(n,a)}async fetch(e,r){let s=r.checksums.get(e.locatorHash)||null,[a,n,c]=await r.cache.fetchPackageFromCache(e,s,{onHit:()=>r.report.reportCacheHit(e),onMiss:()=>r.report.reportCacheMiss(e,`${G.prettyLocator(r.project.configuration,e)} can't be found in the cache and will be fetched from the disk`),loader:()=>this.fetchFromDisk(e,r),...r.cacheOptions});return{packageFs:a,releaseFs:n,prefixPath:G.getIdentVendorPath(e),localPath:this.getLocalPath(e,r),checksum:c}}async fetchFromDisk(e,r){return lF(e,{protocol:$i,fetchOptions:r})}};Ge();Ge();var tut=2,dS=class{supportsDescriptor(e,r){return e.range.match(tw)?!0:!!e.range.startsWith($i)}supportsLocator(e,r){return!!e.reference.startsWith($i)}shouldPersistResolution(e,r){return!1}bindDescriptor(e,r,s){return tw.test(e.range)&&(e=G.makeDescriptor(e,`${$i}${e.range}`)),G.bindDescriptor(e,{locator:G.stringifyLocator(r)})}getResolutionDependencies(e,r){return{}}async getCandidates(e,r,s){if(!s.fetchOptions)throw new Error("Assertion failed: This resolver cannot be used unless a fetcher is configured");let{path:a,parentLocator:n}=pS(e.range);if(n===null)throw new Error("Assertion failed: The descriptor should have been bound");let c=await M5(G.makeLocator(e,G.makeRange({protocol:$i,source:a,selector:a,params:{locator:G.stringifyLocator(n)}})),{protocol:$i,fetchOptions:s.fetchOptions}),f=Nn.makeHash(`${tut}`,c).slice(0,6);return[rw(e,{parentLocator:n,path:a,hash:f,protocol:$i})]}async getSatisfying(e,r,s,a){let[n]=await this.getCandidates(e,r,a);return{locators:s.filter(c=>c.locatorHash===n.locatorHash),sorted:!1}}async resolve(e,r){if(!r.fetchOptions)throw new Error("Assertion failed: This resolver cannot be used unless a fetcher is configured");let s=await r.fetchOptions.fetcher.fetch(e,r.fetchOptions),a=await je.releaseAfterUseAsync(async()=>await Ut.find(s.prefixPath,{baseFs:s.packageFs}),s.releaseFs);return{...e,version:a.version||"0.0.0",languageName:a.languageName||r.project.configuration.get("defaultLanguageName"),linkType:"HARD",conditions:a.getConditions(),dependencies:r.project.configuration.normalizeDependencyMap(a.dependencies),peerDependencies:a.peerDependencies,dependenciesMeta:a.dependenciesMeta,peerDependenciesMeta:a.peerDependenciesMeta,bin:a.bin}}};Ge();var mS=class{supports(e,r){return AS.test(e.reference)?!!e.reference.startsWith($i):!1}getLocalPath(e,r){return null}async fetch(e,r){let s=r.checksums.get(e.locatorHash)||null,[a,n,c]=await r.cache.fetchPackageFromCache(e,s,{onHit:()=>r.report.reportCacheHit(e),onMiss:()=>r.report.reportCacheMiss(e,`${G.prettyLocator(r.project.configuration,e)} can't be found in the cache and will be fetched from the disk`),loader:()=>this.fetchFromDisk(e,r),...r.cacheOptions});return{packageFs:a,releaseFs:n,prefixPath:G.getIdentVendorPath(e),checksum:c}}async fetchFromDisk(e,r){let s=await hS(e,r);return await ps.convertToZip(s,{configuration:r.project.configuration,prefixPath:G.getIdentVendorPath(e),stripComponents:1})}};Ge();Ge();Ge();var yS=class{supportsDescriptor(e,r){return AS.test(e.range)?!!(e.range.startsWith($i)||tw.test(e.range)):!1}supportsLocator(e,r){return AS.test(e.reference)?!!e.reference.startsWith($i):!1}shouldPersistResolution(e,r){return!1}bindDescriptor(e,r,s){return tw.test(e.range)&&(e=G.makeDescriptor(e,`${$i}${e.range}`)),G.bindDescriptor(e,{locator:G.stringifyLocator(r)})}getResolutionDependencies(e,r){return{}}async getCandidates(e,r,s){if(!s.fetchOptions)throw new Error("Assertion failed: This resolver cannot be used unless a fetcher is configured");let{path:a,parentLocator:n}=pS(e.range);if(n===null)throw new Error("Assertion failed: The descriptor should have been bound");let c=rw(e,{parentLocator:n,path:a,hash:"",protocol:$i}),f=await hS(c,s.fetchOptions),p=Nn.makeHash(f).slice(0,6);return[rw(e,{parentLocator:n,path:a,hash:p,protocol:$i})]}async getSatisfying(e,r,s,a){let[n]=await this.getCandidates(e,r,a);return{locators:s.filter(c=>c.locatorHash===n.locatorHash),sorted:!1}}async resolve(e,r){if(!r.fetchOptions)throw new Error("Assertion failed: This resolver cannot be used unless a fetcher is configured");let s=await r.fetchOptions.fetcher.fetch(e,r.fetchOptions),a=await je.releaseAfterUseAsync(async()=>await Ut.find(s.prefixPath,{baseFs:s.packageFs}),s.releaseFs);return{...e,version:a.version||"0.0.0",languageName:a.languageName||r.project.configuration.get("defaultLanguageName"),linkType:"HARD",conditions:a.getConditions(),dependencies:r.project.configuration.normalizeDependencyMap(a.dependencies),peerDependencies:a.peerDependencies,dependenciesMeta:a.dependenciesMeta,peerDependenciesMeta:a.peerDependenciesMeta,bin:a.bin}}};var rut={fetchers:[mS,gS],resolvers:[yS,dS]},nut=rut;var j5={};Vt(j5,{GithubFetcher:()=>ES,default:()=>sut,githubUtils:()=>cF});Ge();Dt();var cF={};Vt(cF,{invalidGithubUrlMessage:()=>PEe,isGithubUrl:()=>_5,parseGithubUrl:()=>H5});var SEe=ut(Ie("querystring")),DEe=[/^https?:\/\/(?:([^/]+?)@)?github.com\/([^/#]+)\/([^/#]+)\/tarball\/([^/#]+)(?:#(.*))?$/,/^https?:\/\/(?:([^/]+?)@)?github.com\/([^/#]+)\/([^/#]+?)(?:\.git)?(?:#(.*))?$/];function _5(t){return t?DEe.some(e=>!!t.match(e)):!1}function H5(t){let e;for(let f of DEe)if(e=t.match(f),e)break;if(!e)throw new Error(PEe(t));let[,r,s,a,n="master"]=e,{commit:c}=SEe.default.parse(n);return n=c||n.replace(/[^:]*:/,""),{auth:r,username:s,reponame:a,treeish:n}}function PEe(t){return`Input cannot be parsed as a valid GitHub URL ('${t}').`}var ES=class{supports(e,r){return!!_5(e.reference)}getLocalPath(e,r){return null}async fetch(e,r){let s=r.checksums.get(e.locatorHash)||null,[a,n,c]=await r.cache.fetchPackageFromCache(e,s,{onHit:()=>r.report.reportCacheHit(e),onMiss:()=>r.report.reportCacheMiss(e,`${G.prettyLocator(r.project.configuration,e)} can't be found in the cache and will be fetched from GitHub`),loader:()=>this.fetchFromNetwork(e,r),...r.cacheOptions});return{packageFs:a,releaseFs:n,prefixPath:G.getIdentVendorPath(e),checksum:c}}async fetchFromNetwork(e,r){let s=await ln.get(this.getLocatorUrl(e,r),{configuration:r.project.configuration});return await ce.mktempPromise(async a=>{let n=new Sn(a);await ps.extractArchiveTo(s,n,{stripComponents:1});let c=ka.splitRepoUrl(e.reference),f=J.join(a,"package.tgz");await In.prepareExternalProject(a,f,{configuration:r.project.configuration,report:r.report,workspace:c.extra.workspace,locator:e});let p=await ce.readFilePromise(f);return await ps.convertToZip(p,{configuration:r.project.configuration,prefixPath:G.getIdentVendorPath(e),stripComponents:1})})}getLocatorUrl(e,r){let{auth:s,username:a,reponame:n,treeish:c}=H5(e.reference);return`https://${s?`${s}@`:""}github.com/${a}/${n}/archive/${c}.tar.gz`}};var iut={hooks:{async fetchHostedRepository(t,e,r){if(t!==null)return t;let s=new ES;if(!s.supports(e,r))return null;try{return await s.fetch(e,r)}catch{return null}}}},sut=iut;var G5={};Vt(G5,{TarballHttpFetcher:()=>CS,TarballHttpResolver:()=>wS,default:()=>aut});Ge();function IS(t){let e;try{e=new URL(t)}catch{return!1}return!(e.protocol!=="http:"&&e.protocol!=="https:"||!e.pathname.match(/(\.tar\.gz|\.tgz|\/[^.]+)$/))}var CS=class{supports(e,r){return IS(e.reference)}getLocalPath(e,r){return null}async fetch(e,r){let s=r.checksums.get(e.locatorHash)||null,[a,n,c]=await r.cache.fetchPackageFromCache(e,s,{onHit:()=>r.report.reportCacheHit(e),onMiss:()=>r.report.reportCacheMiss(e,`${G.prettyLocator(r.project.configuration,e)} can't be found in the cache and will be fetched from the remote server`),loader:()=>this.fetchFromNetwork(e,r),...r.cacheOptions});return{packageFs:a,releaseFs:n,prefixPath:G.getIdentVendorPath(e),checksum:c}}async fetchFromNetwork(e,r){let s=await ln.get(e.reference,{configuration:r.project.configuration});return await ps.convertToZip(s,{configuration:r.project.configuration,prefixPath:G.getIdentVendorPath(e),stripComponents:1})}};Ge();Ge();var wS=class{supportsDescriptor(e,r){return IS(e.range)}supportsLocator(e,r){return IS(e.reference)}shouldPersistResolution(e,r){return!0}bindDescriptor(e,r,s){return e}getResolutionDependencies(e,r){return{}}async getCandidates(e,r,s){return[G.convertDescriptorToLocator(e)]}async getSatisfying(e,r,s,a){let[n]=await this.getCandidates(e,r,a);return{locators:s.filter(c=>c.locatorHash===n.locatorHash),sorted:!1}}async resolve(e,r){if(!r.fetchOptions)throw new Error("Assertion failed: This resolver cannot be used unless a fetcher is configured");let s=await r.fetchOptions.fetcher.fetch(e,r.fetchOptions),a=await je.releaseAfterUseAsync(async()=>await Ut.find(s.prefixPath,{baseFs:s.packageFs}),s.releaseFs);return{...e,version:a.version||"0.0.0",languageName:a.languageName||r.project.configuration.get("defaultLanguageName"),linkType:"HARD",conditions:a.getConditions(),dependencies:r.project.configuration.normalizeDependencyMap(a.dependencies),peerDependencies:a.peerDependencies,dependenciesMeta:a.dependenciesMeta,peerDependenciesMeta:a.peerDependenciesMeta,bin:a.bin}}};var out={fetchers:[CS],resolvers:[wS]},aut=out;var q5={};Vt(q5,{InitCommand:()=>z0,InitInitializerCommand:()=>nw,default:()=>cut});Yt();Ge();Ge();Dt();Yt();var z0=class extends ft{constructor(){super(...arguments);this.private=ge.Boolean("-p,--private",!1,{description:"Initialize a private package"});this.workspace=ge.Boolean("-w,--workspace",!1,{description:"Initialize a workspace root with a `packages/` directory"});this.install=ge.String("-i,--install",!1,{tolerateBoolean:!0,description:"Initialize a package with a specific bundle that will be locked in the project"});this.name=ge.String("-n,--name",{description:"Initialize a package with the given name"});this.usev2=ge.Boolean("-2",!1,{hidden:!0});this.yes=ge.Boolean("-y,--yes",{hidden:!0})}static{this.paths=[["init"]]}static{this.usage=ot.Usage({description:"create a new package",details:"\n This command will setup a new package in your local directory.\n\n If the `-p,--private` or `-w,--workspace` options are set, the package will be private by default.\n\n If the `-w,--workspace` option is set, the package will be configured to accept a set of workspaces in the `packages/` directory.\n\n If the `-i,--install` option is given a value, Yarn will first download it using `yarn set version` and only then forward the init call to the newly downloaded bundle. Without arguments, the downloaded bundle will be `latest`.\n\n The initial settings of the manifest can be changed by using the `initScope` and `initFields` configuration values. Additionally, Yarn will generate an EditorConfig file whose rules can be altered via `initEditorConfig`, and will initialize a Git repository in the current directory.\n ",examples:[["Create a new package in the local directory","yarn init"],["Create a new private package in the local directory","yarn init -p"],["Create a new package and store the Yarn release inside","yarn init -i=latest"],["Create a new private package and defines it as a workspace root","yarn init -w"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),s=typeof this.install=="string"?this.install:this.usev2||this.install===!0?"latest":null;return s!==null?await this.executeProxy(r,s):await this.executeRegular(r)}async executeProxy(r,s){if(r.projectCwd!==null&&r.projectCwd!==this.context.cwd)throw new nt("Cannot use the --install flag from within a project subdirectory");ce.existsSync(this.context.cwd)||await ce.mkdirPromise(this.context.cwd,{recursive:!0});let a=J.join(this.context.cwd,Er.lockfile);ce.existsSync(a)||await ce.writeFilePromise(a,"");let n=await this.cli.run(["set","version",s],{quiet:!0});if(n!==0)return n;let c=[];return this.private&&c.push("-p"),this.workspace&&c.push("-w"),this.name&&c.push(`-n=${this.name}`),this.yes&&c.push("-y"),await ce.mktempPromise(async f=>{let{code:p}=await qr.pipevp("yarn",["init",...c],{cwd:this.context.cwd,stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr,env:await In.makeScriptEnv({binFolder:f})});return p})}async initialize(){}async executeRegular(r){let s=null;try{s=(await Rt.find(r,this.context.cwd)).project}catch{s=null}ce.existsSync(this.context.cwd)||await ce.mkdirPromise(this.context.cwd,{recursive:!0});let a=await Ut.tryFind(this.context.cwd),n=a??new Ut,c=Object.fromEntries(r.get("initFields").entries());n.load(c),n.name=n.name??G.makeIdent(r.get("initScope"),this.name??J.basename(this.context.cwd)),n.packageManager=fn&&je.isTaggedYarnVersion(fn)?`yarn@${fn}`:null,(!a&&this.workspace||this.private)&&(n.private=!0),this.workspace&&n.workspaceDefinitions.length===0&&(await ce.mkdirPromise(J.join(this.context.cwd,"packages"),{recursive:!0}),n.workspaceDefinitions=[{pattern:"packages/*"}]);let f={};n.exportTo(f);let p=J.join(this.context.cwd,Ut.fileName);await ce.changeFilePromise(p,`${JSON.stringify(f,null,2)} `,{automaticNewlines:!0});let h=[p],E=J.join(this.context.cwd,"README.md");if(ce.existsSync(E)||(await ce.writeFilePromise(E,`# ${G.stringifyIdent(n.name)} `),h.push(E)),!s||s.cwd===this.context.cwd){let C=J.join(this.context.cwd,Er.lockfile);ce.existsSync(C)||(await ce.writeFilePromise(C,""),h.push(C));let b=[".yarn/*","!.yarn/patches","!.yarn/plugins","!.yarn/releases","!.yarn/sdks","!.yarn/versions","","# Whether you use PnP or not, the node_modules folder is often used to store","# build artifacts that should be gitignored","node_modules","","# Swap the comments on the following lines if you wish to use zero-installs","# In that case, don't forget to run `yarn config set enableGlobalCache false`!","# Documentation here: https://yarnpkg.com/features/caching#zero-installs","","#!.yarn/cache",".pnp.*"].map(ue=>`${ue} `).join(""),I=J.join(this.context.cwd,".gitignore");ce.existsSync(I)||(await ce.writeFilePromise(I,b),h.push(I));let N=["/.yarn/** linguist-vendored","/.yarn/releases/* binary","/.yarn/plugins/**/* binary","/.pnp.* binary linguist-generated"].map(ue=>`${ue} `).join(""),U=J.join(this.context.cwd,".gitattributes");ce.existsSync(U)||(await ce.writeFilePromise(U,N),h.push(U));let W={"*":{charset:"utf-8",endOfLine:"lf",indentSize:2,indentStyle:"space",insertFinalNewline:!0}};je.mergeIntoTarget(W,r.get("initEditorConfig"));let ee=`root = true `;for(let[ue,le]of Object.entries(W)){ee+=` [${ue}] `;for(let[me,pe]of Object.entries(le)){let Be=me.replace(/[A-Z]/g,Ce=>`_${Ce.toLowerCase()}`);ee+=`${Be} = ${pe} `}}let ie=J.join(this.context.cwd,".editorconfig");ce.existsSync(ie)||(await ce.writeFilePromise(ie,ee),h.push(ie)),await this.cli.run(["install"],{quiet:!0}),await this.initialize(),ce.existsSync(J.join(this.context.cwd,".git"))||(await qr.execvp("git",["init"],{cwd:this.context.cwd}),await qr.execvp("git",["add","--",...h],{cwd:this.context.cwd}),await qr.execvp("git",["commit","--allow-empty","-m","First commit"],{cwd:this.context.cwd}))}}};var nw=class extends z0{constructor(){super(...arguments);this.initializer=ge.String();this.argv=ge.Proxy()}static{this.paths=[["init"]]}async initialize(){this.context.stdout.write(` `),await this.cli.run(["dlx",this.initializer,...this.argv],{quiet:!0})}};var lut={configuration:{initScope:{description:"Scope used when creating packages via the init command",type:"STRING",default:null},initFields:{description:"Additional fields to set when creating packages via the init command",type:"MAP",valueDefinition:{description:"",type:"ANY"}},initEditorConfig:{description:"Extra rules to define in the generator editorconfig",type:"MAP",valueDefinition:{description:"",type:"ANY"}}},commands:[z0,nw]},cut=lut;var HW={};Vt(HW,{SearchCommand:()=>Iw,UpgradeInteractiveCommand:()=>Cw,default:()=>ygt});Ge();var xEe=ut(Ie("os"));function iw({stdout:t}){if(xEe.default.endianness()==="BE")throw new Error("Interactive commands cannot be used on big-endian systems because ink depends on yoga-layout-prebuilt which only supports little-endian architectures");if(!t.isTTY)throw new Error("Interactive commands can only be used inside a TTY environment")}Yt();var HIe=ut(l9()),c9={appId:"OFCNCOG2CU",apiKey:"6fe4476ee5a1832882e326b506d14126",indexName:"npm-search"},oAt=(0,HIe.default)(c9.appId,c9.apiKey).initIndex(c9.indexName),u9=async(t,e=0)=>await oAt.search(t,{analyticsTags:["yarn-plugin-interactive-tools"],attributesToRetrieve:["name","version","owner","repository","humanDownloadsLast30Days"],page:e,hitsPerPage:10});var CD=["regular","dev","peer"],Iw=class extends ft{static{this.paths=[["search"]]}static{this.usage=ot.Usage({category:"Interactive commands",description:"open the search interface",details:` This command opens a fullscreen terminal interface where you can search for and install packages from the npm registry. `,examples:[["Open the search window","yarn search"]]})}async execute(){iw(this.context);let{Gem:e}=await Promise.resolve().then(()=>(qF(),kW)),{ScrollableItems:r}=await Promise.resolve().then(()=>(JF(),VF)),{useKeypress:s}=await Promise.resolve().then(()=>(yD(),m2e)),{useMinistore:a}=await Promise.resolve().then(()=>(OW(),NW)),{renderForm:n}=await Promise.resolve().then(()=>(XF(),ZF)),{default:c}=await Promise.resolve().then(()=>ut(P2e())),{Box:f,Text:p}=await Promise.resolve().then(()=>ut(Wc())),{default:h,useEffect:E,useState:C}=await Promise.resolve().then(()=>ut(hn())),S=await ze.find(this.context.cwd,this.context.plugins),b=()=>h.createElement(f,{flexDirection:"row"},h.createElement(f,{flexDirection:"column",width:48},h.createElement(f,null,h.createElement(p,null,"Press ",h.createElement(p,{bold:!0,color:"cyanBright"},""),"/",h.createElement(p,{bold:!0,color:"cyanBright"},"")," to move between packages.")),h.createElement(f,null,h.createElement(p,null,"Press ",h.createElement(p,{bold:!0,color:"cyanBright"},"")," to select a package.")),h.createElement(f,null,h.createElement(p,null,"Press ",h.createElement(p,{bold:!0,color:"cyanBright"},"")," again to change the target."))),h.createElement(f,{flexDirection:"column"},h.createElement(f,{marginLeft:1},h.createElement(p,null,"Press ",h.createElement(p,{bold:!0,color:"cyanBright"},"")," to install the selected packages.")),h.createElement(f,{marginLeft:1},h.createElement(p,null,"Press ",h.createElement(p,{bold:!0,color:"cyanBright"},"")," to abort.")))),I=()=>h.createElement(h.Fragment,null,h.createElement(f,{width:15},h.createElement(p,{bold:!0,underline:!0,color:"gray"},"Owner")),h.createElement(f,{width:11},h.createElement(p,{bold:!0,underline:!0,color:"gray"},"Version")),h.createElement(f,{width:10},h.createElement(p,{bold:!0,underline:!0,color:"gray"},"Downloads"))),T=()=>h.createElement(f,{width:17},h.createElement(p,{bold:!0,underline:!0,color:"gray"},"Target")),N=({hit:pe,active:Be})=>{let[Ce,g]=a(pe.name,null);s({active:Be},(Ae,se)=>{if(se.name!=="space")return;if(!Ce){g(CD[0]);return}let X=CD.indexOf(Ce)+1;X===CD.length?g(null):g(CD[X])},[Ce,g]);let we=G.parseIdent(pe.name),ye=G.prettyIdent(S,we);return h.createElement(f,null,h.createElement(f,{width:45},h.createElement(p,{bold:!0,wrap:"wrap"},ye)),h.createElement(f,{width:14,marginLeft:1},h.createElement(p,{bold:!0,wrap:"truncate"},pe.owner.name)),h.createElement(f,{width:10,marginLeft:1},h.createElement(p,{italic:!0,wrap:"truncate"},pe.version)),h.createElement(f,{width:16,marginLeft:1},h.createElement(p,null,pe.humanDownloadsLast30Days)))},U=({name:pe,active:Be})=>{let[Ce]=a(pe,null),g=G.parseIdent(pe);return h.createElement(f,null,h.createElement(f,{width:47},h.createElement(p,{bold:!0}," - ",G.prettyIdent(S,g))),CD.map(we=>h.createElement(f,{key:we,width:14,marginLeft:1},h.createElement(p,null," ",h.createElement(e,{active:Ce===we})," ",h.createElement(p,{bold:!0},we)))))},W=()=>h.createElement(f,{marginTop:1},h.createElement(p,null,"Powered by Algolia.")),ie=await n(({useSubmit:pe})=>{let Be=a();pe(Be);let Ce=Array.from(Be.keys()).filter(j=>Be.get(j)!==null),[g,we]=C(""),[ye,Ae]=C(0),[se,X]=C([]),De=j=>{j.match(/\t| /)||we(j)},Te=async()=>{Ae(0);let j=await u9(g);j.query===g&&X(j.hits)},mt=async()=>{let j=await u9(g,ye+1);j.query===g&&j.page-1===ye&&(Ae(j.page),X([...se,...j.hits]))};return E(()=>{g?Te():X([])},[g]),h.createElement(f,{flexDirection:"column"},h.createElement(b,null),h.createElement(f,{flexDirection:"row",marginTop:1},h.createElement(p,{bold:!0},"Search: "),h.createElement(f,{width:41},h.createElement(c,{value:g,onChange:De,placeholder:"i.e. babel, webpack, react...",showCursor:!1})),h.createElement(I,null)),se.length?h.createElement(r,{radius:2,loop:!1,children:se.map(j=>h.createElement(N,{key:j.name,hit:j,active:!1})),willReachEnd:mt}):h.createElement(p,{color:"gray"},"Start typing..."),h.createElement(f,{flexDirection:"row",marginTop:1},h.createElement(f,{width:49},h.createElement(p,{bold:!0},"Selected:")),h.createElement(T,null)),Ce.length?Ce.map(j=>h.createElement(U,{key:j,name:j,active:!1})):h.createElement(p,{color:"gray"},"No selected packages..."),h.createElement(W,null))},{},{stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr});if(typeof ie>"u")return 1;let ue=Array.from(ie.keys()).filter(pe=>ie.get(pe)==="regular"),le=Array.from(ie.keys()).filter(pe=>ie.get(pe)==="dev"),me=Array.from(ie.keys()).filter(pe=>ie.get(pe)==="peer");return ue.length&&await this.cli.run(["add",...ue]),le.length&&await this.cli.run(["add","--dev",...le]),me&&await this.cli.run(["add","--peer",...me]),0}};Ge();Yt();GG();var F2e=ut(Ai()),T2e=/^((?:[\^~]|>=?)?)([0-9]+)(\.[0-9]+)(\.[0-9]+)((?:-\S+)?)$/;function N2e(t,e){return t.length>0?[t.slice(0,e)].concat(N2e(t.slice(e),e)):[]}var Cw=class extends ft{static{this.paths=[["upgrade-interactive"]]}static{this.usage=ot.Usage({category:"Interactive commands",description:"open the upgrade interface",details:` This command opens a fullscreen terminal interface where you can see any out of date packages used by your application, their status compared to the latest versions available on the remote registry, and select packages to upgrade. `,examples:[["Open the upgrade window","yarn upgrade-interactive"]]})}async execute(){iw(this.context);let{ItemOptions:e}=await Promise.resolve().then(()=>(R2e(),Q2e)),{Pad:r}=await Promise.resolve().then(()=>(_W(),k2e)),{ScrollableItems:s}=await Promise.resolve().then(()=>(JF(),VF)),{useMinistore:a}=await Promise.resolve().then(()=>(OW(),NW)),{renderForm:n}=await Promise.resolve().then(()=>(XF(),ZF)),{Box:c,Text:f}=await Promise.resolve().then(()=>ut(Wc())),{default:p,useEffect:h,useRef:E,useState:C}=await Promise.resolve().then(()=>ut(hn())),S=await ze.find(this.context.cwd,this.context.plugins),{project:b,workspace:I}=await Rt.find(S,this.context.cwd),T=await Kr.find(S);if(!I)throw new ar(b.cwd,this.context.cwd);await b.restoreInstallState({restoreResolutions:!1});let N=this.context.stdout.rows-7,U=(we,ye)=>{let Ae=pde(we,ye),se="";for(let X of Ae)X.added?se+=he.pretty(S,X.value,"green"):X.removed||(se+=X.value);return se},W=(we,ye)=>{if(we===ye)return ye;let Ae=G.parseRange(we),se=G.parseRange(ye),X=Ae.selector.match(T2e),De=se.selector.match(T2e);if(!X||!De)return U(we,ye);let Te=["gray","red","yellow","green","magenta"],mt=null,j="";for(let rt=1;rt{let se=await Zu.fetchDescriptorFrom(we,Ae,{project:b,cache:T,preserveModifier:ye,workspace:I});return se!==null?se.range:we.range},ie=async we=>{let ye=F2e.default.valid(we.range)?`^${we.range}`:we.range,[Ae,se]=await Promise.all([ee(we,we.range,ye).catch(()=>null),ee(we,we.range,"latest").catch(()=>null)]),X=[{value:null,label:we.range}];return Ae&&Ae!==we.range?X.push({value:Ae,label:W(we.range,Ae)}):X.push({value:null,label:""}),se&&se!==Ae&&se!==we.range?X.push({value:se,label:W(we.range,se)}):X.push({value:null,label:""}),X},ue=()=>p.createElement(c,{flexDirection:"row"},p.createElement(c,{flexDirection:"column",width:49},p.createElement(c,{marginLeft:1},p.createElement(f,null,"Press ",p.createElement(f,{bold:!0,color:"cyanBright"},""),"/",p.createElement(f,{bold:!0,color:"cyanBright"},"")," to select packages.")),p.createElement(c,{marginLeft:1},p.createElement(f,null,"Press ",p.createElement(f,{bold:!0,color:"cyanBright"},""),"/",p.createElement(f,{bold:!0,color:"cyanBright"},"")," to select versions."))),p.createElement(c,{flexDirection:"column"},p.createElement(c,{marginLeft:1},p.createElement(f,null,"Press ",p.createElement(f,{bold:!0,color:"cyanBright"},"")," to install.")),p.createElement(c,{marginLeft:1},p.createElement(f,null,"Press ",p.createElement(f,{bold:!0,color:"cyanBright"},"")," to abort.")))),le=()=>p.createElement(c,{flexDirection:"row",paddingTop:1,paddingBottom:1},p.createElement(c,{width:50},p.createElement(f,{bold:!0},p.createElement(f,{color:"greenBright"},"?")," Pick the packages you want to upgrade.")),p.createElement(c,{width:17},p.createElement(f,{bold:!0,underline:!0,color:"gray"},"Current")),p.createElement(c,{width:17},p.createElement(f,{bold:!0,underline:!0,color:"gray"},"Range")),p.createElement(c,{width:17},p.createElement(f,{bold:!0,underline:!0,color:"gray"},"Latest"))),me=({active:we,descriptor:ye,suggestions:Ae})=>{let[se,X]=a(ye.descriptorHash,null),De=G.stringifyIdent(ye),Te=Math.max(0,45-De.length);return p.createElement(p.Fragment,null,p.createElement(c,null,p.createElement(c,{width:45},p.createElement(f,{bold:!0},G.prettyIdent(S,ye)),p.createElement(r,{active:we,length:Te})),p.createElement(e,{active:we,options:Ae,value:se,skewer:!0,onChange:X,sizes:[17,17,17]})))},pe=({dependencies:we})=>{let[ye,Ae]=C(we.map(()=>null)),se=E(!0),X=async De=>{let Te=await ie(De);return Te.filter(mt=>mt.label!=="").length<=1?null:{descriptor:De,suggestions:Te}};return h(()=>()=>{se.current=!1},[]),h(()=>{let De=Math.trunc(N*1.75),Te=we.slice(0,De),mt=we.slice(De),j=N2e(mt,N),rt=Te.map(X).reduce(async(Fe,Ne)=>{await Fe;let be=await Ne;be!==null&&se.current&&Ae(Ve=>{let ke=Ve.findIndex(Ue=>Ue===null),it=[...Ve];return it[ke]=be,it})},Promise.resolve());j.reduce((Fe,Ne)=>Promise.all(Ne.map(be=>Promise.resolve().then(()=>X(be)))).then(async be=>{be=be.filter(Ve=>Ve!==null),await Fe,se.current&&Ae(Ve=>{let ke=Ve.findIndex(it=>it===null);return Ve.slice(0,ke).concat(be).concat(Ve.slice(ke+be.length))})}),rt).then(()=>{se.current&&Ae(Fe=>Fe.filter(Ne=>Ne!==null))})},[]),ye.length?p.createElement(s,{radius:N>>1,children:ye.map((De,Te)=>De!==null?p.createElement(me,{key:Te,active:!1,descriptor:De.descriptor,suggestions:De.suggestions}):p.createElement(f,{key:Te},"Loading..."))}):p.createElement(f,null,"No upgrades found")},Ce=await n(({useSubmit:we})=>{we(a());let ye=new Map;for(let se of b.workspaces)for(let X of["dependencies","devDependencies"])for(let De of se.manifest[X].values())b.tryWorkspaceByDescriptor(De)===null&&(De.range.startsWith("link:")||ye.set(De.descriptorHash,De));let Ae=je.sortMap(ye.values(),se=>G.stringifyDescriptor(se));return p.createElement(c,{flexDirection:"column"},p.createElement(ue,null),p.createElement(le,null),p.createElement(pe,{dependencies:Ae}))},{},{stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr});if(typeof Ce>"u")return 1;let g=!1;for(let we of b.workspaces)for(let ye of["dependencies","devDependencies"]){let Ae=we.manifest[ye];for(let se of Ae.values()){let X=Ce.get(se.descriptorHash);typeof X<"u"&&X!==null&&(Ae.set(se.identHash,G.makeDescriptor(se,X)),g=!0)}}return g?await b.installWithNewReport({quiet:this.context.quiet,stdout:this.context.stdout},{cache:T}):0}};var mgt={commands:[Iw,Cw]},ygt=mgt;var GW={};Vt(GW,{default:()=>wgt});Ge();var BD="jsr:";Ge();Ge();function ww(t){let e=t.range.slice(4);if(Fr.validRange(e))return G.makeDescriptor(t,`npm:${G.stringifyIdent(G.wrapIdentIntoScope(t,"jsr"))}@${e}`);let r=G.tryParseDescriptor(e,!0);if(r!==null)return G.makeDescriptor(t,`npm:${G.stringifyIdent(G.wrapIdentIntoScope(r,"jsr"))}@${r.range}`);throw new Error(`Invalid range: ${t.range}`)}function Bw(t){return G.makeLocator(G.wrapIdentIntoScope(t,"jsr"),`npm:${t.reference.slice(4)}`)}function jW(t){return G.makeLocator(G.unwrapIdentFromScope(t,"jsr"),`jsr:${t.reference.slice(4)}`)}var $F=class{supports(e,r){return e.reference.startsWith(BD)}getLocalPath(e,r){let s=Bw(e);return r.fetcher.getLocalPath(s,r)}fetch(e,r){let s=Bw(e);return r.fetcher.fetch(s,r)}};var eN=class{supportsDescriptor(e,r){return!!e.range.startsWith(BD)}supportsLocator(e,r){return!!e.reference.startsWith(BD)}shouldPersistResolution(e,r){let s=Bw(e);return r.resolver.shouldPersistResolution(s,r)}bindDescriptor(e,r,s){return e}getResolutionDependencies(e,r){return{inner:ww(e)}}async getCandidates(e,r,s){let a=s.project.configuration.normalizeDependency(ww(e));return(await s.resolver.getCandidates(a,r,s)).map(c=>jW(c))}async getSatisfying(e,r,s,a){let n=a.project.configuration.normalizeDependency(ww(e));return a.resolver.getSatisfying(n,r,s,a)}async resolve(e,r){let s=Bw(e),a=await r.resolver.resolve(s,r);return{...a,...jW(a)}}};var Egt=["dependencies","devDependencies","peerDependencies"];function Igt(t,e){for(let r of Egt)for(let s of t.manifest.getForScope(r).values()){if(!s.range.startsWith("jsr:"))continue;let a=ww(s),n=r==="dependencies"?G.makeDescriptor(s,"unknown"):null,c=n!==null&&t.manifest.ensureDependencyMeta(n).optional?"optionalDependencies":r;e[c][G.stringifyIdent(s)]=a.range}}var Cgt={hooks:{beforeWorkspacePacking:Igt},resolvers:[eN],fetchers:[$F]},wgt=Cgt;var qW={};Vt(qW,{LinkFetcher:()=>vD,LinkResolver:()=>SD,PortalFetcher:()=>DD,PortalResolver:()=>PD,default:()=>vgt});Ge();Dt();var rh="portal:",nh="link:";var vD=class{supports(e,r){return!!e.reference.startsWith(nh)}getLocalPath(e,r){let{parentLocator:s,path:a}=G.parseFileStyleRange(e.reference,{protocol:nh});if(J.isAbsolute(a))return a;let n=r.fetcher.getLocalPath(s,r);return n===null?null:J.resolve(n,a)}async fetch(e,r){let{parentLocator:s,path:a}=G.parseFileStyleRange(e.reference,{protocol:nh}),n=J.isAbsolute(a)?{packageFs:new Sn(vt.root),prefixPath:vt.dot,localPath:vt.root}:await r.fetcher.fetch(s,r),c=n.localPath?{packageFs:new Sn(vt.root),prefixPath:J.relative(vt.root,n.localPath),localPath:vt.root}:n;n!==c&&n.releaseFs&&n.releaseFs();let f=c.packageFs,p=J.resolve(c.localPath??c.packageFs.getRealPath(),c.prefixPath,a);return n.localPath?{packageFs:new Sn(p,{baseFs:f}),releaseFs:c.releaseFs,prefixPath:vt.dot,discardFromLookup:!0,localPath:p}:{packageFs:new Hf(p,{baseFs:f}),releaseFs:c.releaseFs,prefixPath:vt.dot,discardFromLookup:!0}}};Ge();Dt();var SD=class{supportsDescriptor(e,r){return!!e.range.startsWith(nh)}supportsLocator(e,r){return!!e.reference.startsWith(nh)}shouldPersistResolution(e,r){return!1}bindDescriptor(e,r,s){return G.bindDescriptor(e,{locator:G.stringifyLocator(r)})}getResolutionDependencies(e,r){return{}}async getCandidates(e,r,s){let a=e.range.slice(nh.length);return[G.makeLocator(e,`${nh}${fe.toPortablePath(a)}`)]}async getSatisfying(e,r,s,a){let[n]=await this.getCandidates(e,r,a);return{locators:s.filter(c=>c.locatorHash===n.locatorHash),sorted:!1}}async resolve(e,r){return{...e,version:"0.0.0",languageName:r.project.configuration.get("defaultLanguageName"),linkType:"SOFT",conditions:null,dependencies:new Map,peerDependencies:new Map,dependenciesMeta:new Map,peerDependenciesMeta:new Map,bin:new Map}}};Ge();Dt();var DD=class{supports(e,r){return!!e.reference.startsWith(rh)}getLocalPath(e,r){let{parentLocator:s,path:a}=G.parseFileStyleRange(e.reference,{protocol:rh});if(J.isAbsolute(a))return a;let n=r.fetcher.getLocalPath(s,r);return n===null?null:J.resolve(n,a)}async fetch(e,r){let{parentLocator:s,path:a}=G.parseFileStyleRange(e.reference,{protocol:rh}),n=J.isAbsolute(a)?{packageFs:new Sn(vt.root),prefixPath:vt.dot,localPath:vt.root}:await r.fetcher.fetch(s,r),c=n.localPath?{packageFs:new Sn(vt.root),prefixPath:J.relative(vt.root,n.localPath),localPath:vt.root}:n;n!==c&&n.releaseFs&&n.releaseFs();let f=c.packageFs,p=J.resolve(c.localPath??c.packageFs.getRealPath(),c.prefixPath,a);return n.localPath?{packageFs:new Sn(p,{baseFs:f}),releaseFs:c.releaseFs,prefixPath:vt.dot,localPath:p}:{packageFs:new Hf(p,{baseFs:f}),releaseFs:c.releaseFs,prefixPath:vt.dot}}};Ge();Ge();Dt();var PD=class{supportsDescriptor(e,r){return!!e.range.startsWith(rh)}supportsLocator(e,r){return!!e.reference.startsWith(rh)}shouldPersistResolution(e,r){return!1}bindDescriptor(e,r,s){return G.bindDescriptor(e,{locator:G.stringifyLocator(r)})}getResolutionDependencies(e,r){return{}}async getCandidates(e,r,s){let a=e.range.slice(rh.length);return[G.makeLocator(e,`${rh}${fe.toPortablePath(a)}`)]}async getSatisfying(e,r,s,a){let[n]=await this.getCandidates(e,r,a);return{locators:s.filter(c=>c.locatorHash===n.locatorHash),sorted:!1}}async resolve(e,r){if(!r.fetchOptions)throw new Error("Assertion failed: This resolver cannot be used unless a fetcher is configured");let s=await r.fetchOptions.fetcher.fetch(e,r.fetchOptions),a=await je.releaseAfterUseAsync(async()=>await Ut.find(s.prefixPath,{baseFs:s.packageFs}),s.releaseFs);return{...e,version:a.version||"0.0.0",languageName:a.languageName||r.project.configuration.get("defaultLanguageName"),linkType:"SOFT",conditions:a.getConditions(),dependencies:r.project.configuration.normalizeDependencyMap(a.dependencies),peerDependencies:a.peerDependencies,dependenciesMeta:a.dependenciesMeta,peerDependenciesMeta:a.peerDependenciesMeta,bin:a.bin}}};var Bgt={fetchers:[vD,DD],resolvers:[SD,PD]},vgt=Bgt;var PY={};Vt(PY,{NodeModulesLinker:()=>jD,NodeModulesMode:()=>BY,PnpLooseLinker:()=>GD,default:()=>Hdt});Dt();Ge();Dt();Dt();var YW=(t,e)=>`${t}@${e}`,O2e=(t,e)=>{let r=e.indexOf("#"),s=r>=0?e.substring(r+1):e;return YW(t,s)};var M2e=(t,e={})=>{let r=e.debugLevel||Number(process.env.NM_DEBUG_LEVEL||-1),s=e.check||r>=9,a=e.hoistingLimits||new Map,n={check:s,debugLevel:r,hoistingLimits:a,fastLookupPossible:!0},c;n.debugLevel>=0&&(c=Date.now());let f=Qgt(t,n),p=!1,h=0;do{let E=VW(f,[f],new Set([f.locator]),new Map,n);p=E.anotherRoundNeeded||E.isGraphChanged,n.fastLookupPossible=!1,h++}while(p);if(n.debugLevel>=0&&console.log(`hoist time: ${Date.now()-c}ms, rounds: ${h}`),n.debugLevel>=1){let E=bD(f);if(VW(f,[f],new Set([f.locator]),new Map,n).isGraphChanged)throw new Error(`The hoisting result is not terminal, prev tree: ${E}, next tree: ${bD(f)}`);let S=U2e(f);if(S)throw new Error(`${S}, after hoisting finished: ${bD(f)}`)}return n.debugLevel>=2&&console.log(bD(f)),Rgt(f)},Sgt=t=>{let e=t[t.length-1],r=new Map,s=new Set,a=n=>{if(!s.has(n)){s.add(n);for(let c of n.hoistedDependencies.values())r.set(c.name,c);for(let c of n.dependencies.values())n.peerNames.has(c.name)||a(c)}};return a(e),r},Dgt=t=>{let e=t[t.length-1],r=new Map,s=new Set,a=new Set,n=(c,f)=>{if(s.has(c))return;s.add(c);for(let h of c.hoistedDependencies.values())if(!f.has(h.name)){let E;for(let C of t)E=C.dependencies.get(h.name),E&&r.set(E.name,E)}let p=new Set;for(let h of c.dependencies.values())p.add(h.name);for(let h of c.dependencies.values())c.peerNames.has(h.name)||n(h,p)};return n(e,a),r},L2e=(t,e)=>{if(e.decoupled)return e;let{name:r,references:s,ident:a,locator:n,dependencies:c,originalDependencies:f,hoistedDependencies:p,peerNames:h,reasons:E,isHoistBorder:C,hoistPriority:S,dependencyKind:b,hoistedFrom:I,hoistedTo:T}=e,N={name:r,references:new Set(s),ident:a,locator:n,dependencies:new Map(c),originalDependencies:new Map(f),hoistedDependencies:new Map(p),peerNames:new Set(h),reasons:new Map(E),decoupled:!0,isHoistBorder:C,hoistPriority:S,dependencyKind:b,hoistedFrom:new Map(I),hoistedTo:new Map(T)},U=N.dependencies.get(r);return U&&U.ident==N.ident&&N.dependencies.set(r,N),t.dependencies.set(N.name,N),N},Pgt=(t,e)=>{let r=new Map([[t.name,[t.ident]]]);for(let a of t.dependencies.values())t.peerNames.has(a.name)||r.set(a.name,[a.ident]);let s=Array.from(e.keys());s.sort((a,n)=>{let c=e.get(a),f=e.get(n);if(f.hoistPriority!==c.hoistPriority)return f.hoistPriority-c.hoistPriority;{let p=c.dependents.size+c.peerDependents.size;return f.dependents.size+f.peerDependents.size-p}});for(let a of s){let n=a.substring(0,a.indexOf("@",1)),c=a.substring(n.length+1);if(!t.peerNames.has(n)){let f=r.get(n);f||(f=[],r.set(n,f)),f.indexOf(c)<0&&f.push(c)}}return r},WW=t=>{let e=new Set,r=(s,a=new Set)=>{if(!a.has(s)){a.add(s);for(let n of s.peerNames)if(!t.peerNames.has(n)){let c=t.dependencies.get(n);c&&!e.has(c)&&r(c,a)}e.add(s)}};for(let s of t.dependencies.values())t.peerNames.has(s.name)||r(s);return e},VW=(t,e,r,s,a,n=new Set)=>{let c=e[e.length-1];if(n.has(c))return{anotherRoundNeeded:!1,isGraphChanged:!1};n.add(c);let f=Tgt(c),p=Pgt(c,f),h=t==c?new Map:a.fastLookupPossible?Sgt(e):Dgt(e),E,C=!1,S=!1,b=new Map(Array.from(p.entries()).map(([T,N])=>[T,N[0]])),I=new Map;do{let T=kgt(t,e,r,h,b,p,s,I,a);T.isGraphChanged&&(S=!0),T.anotherRoundNeeded&&(C=!0),E=!1;for(let[N,U]of p)U.length>1&&!c.dependencies.has(N)&&(b.delete(N),U.shift(),b.set(N,U[0]),E=!0)}while(E);for(let T of c.dependencies.values())if(!c.peerNames.has(T.name)&&!r.has(T.locator)){r.add(T.locator);let N=VW(t,[...e,T],r,I,a);N.isGraphChanged&&(S=!0),N.anotherRoundNeeded&&(C=!0),r.delete(T.locator)}return{anotherRoundNeeded:C,isGraphChanged:S}},bgt=t=>{for(let[e,r]of t.dependencies)if(!t.peerNames.has(e)&&r.ident!==t.ident)return!0;return!1},xgt=(t,e,r,s,a,n,c,f,{outputReason:p,fastLookupPossible:h})=>{let E,C=null,S=new Set;p&&(E=`${Array.from(e).map(N=>yo(N)).join("\u2192")}`);let b=r[r.length-1],T=!(s.ident===b.ident);if(p&&!T&&(C="- self-reference"),T&&(T=s.dependencyKind!==1,p&&!T&&(C="- workspace")),T&&s.dependencyKind===2&&(T=!bgt(s),p&&!T&&(C="- external soft link with unhoisted dependencies")),T&&(T=!t.peerNames.has(s.name),p&&!T&&(C=`- cannot shadow peer: ${yo(t.originalDependencies.get(s.name).locator)} at ${E}`)),T){let N=!1,U=a.get(s.name);if(N=!U||U.ident===s.ident,p&&!N&&(C=`- filled by: ${yo(U.locator)} at ${E}`),N)for(let W=r.length-1;W>=1;W--){let ie=r[W].dependencies.get(s.name);if(ie&&ie.ident!==s.ident){N=!1;let ue=f.get(b);ue||(ue=new Set,f.set(b,ue)),ue.add(s.name),p&&(C=`- filled by ${yo(ie.locator)} at ${r.slice(0,W).map(le=>yo(le.locator)).join("\u2192")}`);break}}T=N}if(T&&(T=n.get(s.name)===s.ident,p&&!T&&(C=`- filled by: ${yo(c.get(s.name)[0])} at ${E}`)),T){let N=!0,U=new Set(s.peerNames);for(let W=r.length-1;W>=1;W--){let ee=r[W];for(let ie of U){if(ee.peerNames.has(ie)&&ee.originalDependencies.has(ie))continue;let ue=ee.dependencies.get(ie);ue&&t.dependencies.get(ie)!==ue&&(W===r.length-1?S.add(ue):(S=null,N=!1,p&&(C=`- peer dependency ${yo(ue.locator)} from parent ${yo(ee.locator)} was not hoisted to ${E}`))),U.delete(ie)}if(!N)break}T=N}if(T&&!h)for(let N of s.hoistedDependencies.values()){let U=a.get(N.name)||t.dependencies.get(N.name);if(!U||N.ident!==U.ident){T=!1,p&&(C=`- previously hoisted dependency mismatch, needed: ${yo(N.locator)}, available: ${yo(U?.locator)}`);break}}return S!==null&&S.size>0?{isHoistable:2,dependsOn:S,reason:C}:{isHoistable:T?0:1,reason:C}},tN=t=>`${t.name}@${t.locator}`,kgt=(t,e,r,s,a,n,c,f,p)=>{let h=e[e.length-1],E=new Set,C=!1,S=!1,b=(U,W,ee,ie,ue)=>{if(E.has(ie))return;let le=[...W,tN(ie)],me=[...ee,tN(ie)],pe=new Map,Be=new Map;for(let Ae of WW(ie)){let se=xgt(h,r,[h,...U,ie],Ae,s,a,n,f,{outputReason:p.debugLevel>=2,fastLookupPossible:p.fastLookupPossible});if(Be.set(Ae,se),se.isHoistable===2)for(let X of se.dependsOn){let De=pe.get(X.name)||new Set;De.add(Ae.name),pe.set(X.name,De)}}let Ce=new Set,g=(Ae,se,X)=>{if(!Ce.has(Ae)){Ce.add(Ae),Be.set(Ae,{isHoistable:1,reason:X});for(let De of pe.get(Ae.name)||[])g(ie.dependencies.get(De),se,p.debugLevel>=2?`- peer dependency ${yo(Ae.locator)} from parent ${yo(ie.locator)} was not hoisted`:"")}};for(let[Ae,se]of Be)se.isHoistable===1&&g(Ae,se,se.reason);let we=!1;for(let Ae of Be.keys())if(!Ce.has(Ae)){S=!0;let se=c.get(ie);se&&se.has(Ae.name)&&(C=!0),we=!0,ie.dependencies.delete(Ae.name),ie.hoistedDependencies.set(Ae.name,Ae),ie.reasons.delete(Ae.name);let X=h.dependencies.get(Ae.name);if(p.debugLevel>=2){let De=Array.from(W).concat([ie.locator]).map(mt=>yo(mt)).join("\u2192"),Te=h.hoistedFrom.get(Ae.name);Te||(Te=[],h.hoistedFrom.set(Ae.name,Te)),Te.push(De),ie.hoistedTo.set(Ae.name,Array.from(e).map(mt=>yo(mt.locator)).join("\u2192"))}if(!X)h.ident!==Ae.ident&&(h.dependencies.set(Ae.name,Ae),ue.add(Ae));else for(let De of Ae.references)X.references.add(De)}if(ie.dependencyKind===2&&we&&(C=!0),p.check){let Ae=U2e(t);if(Ae)throw new Error(`${Ae}, after hoisting dependencies of ${[h,...U,ie].map(se=>yo(se.locator)).join("\u2192")}: ${bD(t)}`)}let ye=WW(ie);for(let Ae of ye)if(Ce.has(Ae)){let se=Be.get(Ae);if((a.get(Ae.name)===Ae.ident||!ie.reasons.has(Ae.name))&&se.isHoistable!==0&&ie.reasons.set(Ae.name,se.reason),!Ae.isHoistBorder&&me.indexOf(tN(Ae))<0){E.add(ie);let De=L2e(ie,Ae);b([...U,ie],le,me,De,T),E.delete(ie)}}},I,T=new Set(WW(h)),N=Array.from(e).map(U=>tN(U));do{I=T,T=new Set;for(let U of I){if(U.locator===h.locator||U.isHoistBorder)continue;let W=L2e(h,U);b([],Array.from(r),N,W,T)}}while(T.size>0);return{anotherRoundNeeded:C,isGraphChanged:S}},U2e=t=>{let e=[],r=new Set,s=new Set,a=(n,c,f)=>{if(r.has(n)||(r.add(n),s.has(n)))return;let p=new Map(c);for(let h of n.dependencies.values())n.peerNames.has(h.name)||p.set(h.name,h);for(let h of n.originalDependencies.values()){let E=p.get(h.name),C=()=>`${Array.from(s).concat([n]).map(S=>yo(S.locator)).join("\u2192")}`;if(n.peerNames.has(h.name)){let S=c.get(h.name);(S!==E||!S||S.ident!==h.ident)&&e.push(`${C()} - broken peer promise: expected ${h.ident} but found ${S&&S.ident}`)}else{let S=f.hoistedFrom.get(n.name),b=n.hoistedTo.get(h.name),I=`${S?` hoisted from ${S.join(", ")}`:""}`,T=`${b?` hoisted to ${b}`:""}`,N=`${C()}${I}`;E?E.ident!==h.ident&&e.push(`${N} - broken require promise for ${h.name}${T}: expected ${h.ident}, but found: ${E.ident}`):e.push(`${N} - broken require promise: no required dependency ${h.name}${T} found`)}}s.add(n);for(let h of n.dependencies.values())n.peerNames.has(h.name)||a(h,p,n);s.delete(n)};return a(t,t.dependencies,t),e.join(` `)},Qgt=(t,e)=>{let{identName:r,name:s,reference:a,peerNames:n}=t,c={name:s,references:new Set([a]),locator:YW(r,a),ident:O2e(r,a),dependencies:new Map,originalDependencies:new Map,hoistedDependencies:new Map,peerNames:new Set(n),reasons:new Map,decoupled:!0,isHoistBorder:!0,hoistPriority:0,dependencyKind:1,hoistedFrom:new Map,hoistedTo:new Map},f=new Map([[t,c]]),p=(h,E)=>{let C=f.get(h),S=!!C;if(!C){let{name:b,identName:I,reference:T,peerNames:N,hoistPriority:U,dependencyKind:W}=h,ee=e.hoistingLimits.get(E.locator);C={name:b,references:new Set([T]),locator:YW(I,T),ident:O2e(I,T),dependencies:new Map,originalDependencies:new Map,hoistedDependencies:new Map,peerNames:new Set(N),reasons:new Map,decoupled:!0,isHoistBorder:ee?ee.has(b):!1,hoistPriority:U||0,dependencyKind:W||0,hoistedFrom:new Map,hoistedTo:new Map},f.set(h,C)}if(E.dependencies.set(h.name,C),E.originalDependencies.set(h.name,C),S){let b=new Set,I=T=>{if(!b.has(T)){b.add(T),T.decoupled=!1;for(let N of T.dependencies.values())T.peerNames.has(N.name)||I(N)}};I(C)}else for(let b of h.dependencies)p(b,C)};for(let h of t.dependencies)p(h,c);return c},JW=t=>t.substring(0,t.indexOf("@",1)),Rgt=t=>{let e={name:t.name,identName:JW(t.locator),references:new Set(t.references),dependencies:new Set},r=new Set([t]),s=(a,n,c)=>{let f=r.has(a),p;if(n===a)p=c;else{let{name:h,references:E,locator:C}=a;p={name:h,identName:JW(C),references:E,dependencies:new Set}}if(c.dependencies.add(p),!f){r.add(a);for(let h of a.dependencies.values())a.peerNames.has(h.name)||s(h,a,p);r.delete(a)}};for(let a of t.dependencies.values())s(a,t,e);return e},Tgt=t=>{let e=new Map,r=new Set([t]),s=c=>`${c.name}@${c.ident}`,a=c=>{let f=s(c),p=e.get(f);return p||(p={dependents:new Set,peerDependents:new Set,hoistPriority:0},e.set(f,p)),p},n=(c,f)=>{let p=!!r.has(f);if(a(f).dependents.add(c.ident),!p){r.add(f);for(let E of f.dependencies.values()){let C=a(E);C.hoistPriority=Math.max(C.hoistPriority,E.hoistPriority),f.peerNames.has(E.name)?C.peerDependents.add(f.ident):n(f,E)}}};for(let c of t.dependencies.values())t.peerNames.has(c.name)||n(t,c);return e},yo=t=>{if(!t)return"none";let e=t.indexOf("@",1),r=t.substring(0,e);r.endsWith("$wsroot$")&&(r=`wh:${r.replace("$wsroot$","")}`);let s=t.substring(e+1);if(s==="workspace:.")return".";if(s){let a=(s.indexOf("#")>0?s.split("#")[1]:s).replace("npm:","");return s.startsWith("virtual")&&(r=`v:${r}`),a.startsWith("workspace")&&(r=`w:${r}`,a=""),`${r}${a?`@${a}`:""}`}else return`${r}`};var bD=t=>{let e=0,r=(a,n,c="")=>{if(e>5e4||n.has(a))return"";e++;let f=Array.from(a.dependencies.values()).sort((h,E)=>h.name===E.name?0:h.name>E.name?1:-1),p="";n.add(a);for(let h=0;h":"")+(S!==E.name?`a:${E.name}:`:"")+yo(E.locator)+(C?` ${C}`:"")} `,p+=r(E,n,`${c}${h5e4?` Tree is too large, part of the tree has been dunped `:"")};var xD=(s=>(s.WORKSPACES="workspaces",s.DEPENDENCIES="dependencies",s.NONE="none",s))(xD||{}),_2e="node_modules",rg="$wsroot$";var kD=(t,e)=>{let{packageTree:r,hoistingLimits:s,errors:a,preserveSymlinksRequired:n}=Ngt(t,e),c=null;if(a.length===0){let f=M2e(r,{hoistingLimits:s});c=Lgt(t,f,e)}return{tree:c,errors:a,preserveSymlinksRequired:n}},pA=t=>`${t.name}@${t.reference}`,zW=t=>{let e=new Map;for(let[r,s]of t.entries())if(!s.dirList){let a=e.get(s.locator);a||(a={target:s.target,linkType:s.linkType,locations:[],aliases:s.aliases},e.set(s.locator,a)),a.locations.push(r)}for(let r of e.values())r.locations=r.locations.sort((s,a)=>{let n=s.split(J.delimiter).length,c=a.split(J.delimiter).length;return a===s?0:n!==c?c-n:a>s?1:-1});return e},H2e=(t,e)=>{let r=G.isVirtualLocator(t)?G.devirtualizeLocator(t):t,s=G.isVirtualLocator(e)?G.devirtualizeLocator(e):e;return G.areLocatorsEqual(r,s)},KW=(t,e,r,s)=>{if(t.linkType!=="SOFT")return!1;let a=fe.toPortablePath(r.resolveVirtual&&e.reference&&e.reference.startsWith("virtual:")?r.resolveVirtual(t.packageLocation):t.packageLocation);return J.contains(s,a)===null},Fgt=t=>{let e=t.getPackageInformation(t.topLevel);if(e===null)throw new Error("Assertion failed: Expected the top-level package to have been registered");if(t.findPackageLocator(e.packageLocation)===null)throw new Error("Assertion failed: Expected the top-level package to have a physical locator");let s=fe.toPortablePath(e.packageLocation.slice(0,-1)),a=new Map,n={children:new Map},c=t.getDependencyTreeRoots(),f=new Map,p=new Set,h=(S,b)=>{let I=pA(S);if(p.has(I))return;p.add(I);let T=t.getPackageInformation(S);if(T){let N=b?pA(b):"";if(pA(S)!==N&&T.linkType==="SOFT"&&!S.reference.startsWith("link:")&&!KW(T,S,t,s)){let U=j2e(T,S,t);(!f.get(U)||S.reference.startsWith("workspace:"))&&f.set(U,S)}for(let[U,W]of T.packageDependencies)W!==null&&(T.packagePeers.has(U)||h(t.getLocator(U,W),S))}};for(let S of c)h(S,null);let E=s.split(J.sep);for(let S of f.values()){let b=t.getPackageInformation(S),T=fe.toPortablePath(b.packageLocation.slice(0,-1)).split(J.sep).slice(E.length),N=n;for(let U of T){let W=N.children.get(U);W||(W={children:new Map},N.children.set(U,W)),N=W}N.workspaceLocator=S}let C=(S,b)=>{if(S.workspaceLocator){let I=pA(b),T=a.get(I);T||(T=new Set,a.set(I,T)),T.add(S.workspaceLocator)}for(let I of S.children.values())C(I,S.workspaceLocator||b)};for(let S of n.children.values())C(S,n.workspaceLocator);return a},Ngt=(t,e)=>{let r=[],s=!1,a=new Map,n=Fgt(t),c=t.getPackageInformation(t.topLevel);if(c===null)throw new Error("Assertion failed: Expected the top-level package to have been registered");let f=t.findPackageLocator(c.packageLocation);if(f===null)throw new Error("Assertion failed: Expected the top-level package to have a physical locator");let p=fe.toPortablePath(c.packageLocation.slice(0,-1)),h={name:f.name,identName:f.name,reference:f.reference,peerNames:c.packagePeers,dependencies:new Set,dependencyKind:1},E=new Map,C=(b,I)=>`${pA(I)}:${b}`,S=(b,I,T,N,U,W,ee,ie)=>{let ue=C(b,T),le=E.get(ue),me=!!le;!me&&T.name===f.name&&T.reference===f.reference&&(le=h,E.set(ue,h));let pe=KW(I,T,t,p);if(!le){let Ae=0;pe?Ae=2:I.linkType==="SOFT"&&T.name.endsWith(rg)&&(Ae=1),le={name:b,identName:T.name,reference:T.reference,dependencies:new Set,peerNames:Ae===1?new Set:I.packagePeers,dependencyKind:Ae},E.set(ue,le)}let Be;if(pe?Be=2:U.linkType==="SOFT"?Be=1:Be=0,le.hoistPriority=Math.max(le.hoistPriority||0,Be),ie&&!pe){let Ae=pA({name:N.identName,reference:N.reference}),se=a.get(Ae)||new Set;a.set(Ae,se),se.add(le.name)}let Ce=new Map(I.packageDependencies);if(e.project){let Ae=e.project.workspacesByCwd.get(fe.toPortablePath(I.packageLocation.slice(0,-1)));if(Ae){let se=new Set([...Array.from(Ae.manifest.peerDependencies.values(),X=>G.stringifyIdent(X)),...Array.from(Ae.manifest.peerDependenciesMeta.keys())]);for(let X of se)Ce.has(X)||(Ce.set(X,W.get(X)||null),le.peerNames.add(X))}}let g=pA({name:T.name.replace(rg,""),reference:T.reference}),we=n.get(g);if(we)for(let Ae of we)Ce.set(`${Ae.name}${rg}`,Ae.reference);(I!==U||I.linkType!=="SOFT"||!pe&&(!e.selfReferencesByCwd||e.selfReferencesByCwd.get(ee)))&&N.dependencies.add(le);let ye=T!==f&&I.linkType==="SOFT"&&!T.name.endsWith(rg)&&!pe;if(!me&&!ye){let Ae=new Map;for(let[se,X]of Ce)if(X!==null){let De=t.getLocator(se,X),Te=t.getLocator(se.replace(rg,""),X),mt=t.getPackageInformation(Te);if(mt===null)throw new Error("Assertion failed: Expected the package to have been registered");let j=KW(mt,De,t,p);if(e.validateExternalSoftLinks&&e.project&&j){mt.packageDependencies.size>0&&(s=!0);for(let[Ve,ke]of mt.packageDependencies)if(ke!==null){let it=G.parseLocator(Array.isArray(ke)?`${ke[0]}@${ke[1]}`:`${Ve}@${ke}`);if(pA(it)!==pA(De)){let Ue=Ce.get(Ve);if(Ue){let x=G.parseLocator(Array.isArray(Ue)?`${Ue[0]}@${Ue[1]}`:`${Ve}@${Ue}`);H2e(x,it)||r.push({messageName:71,text:`Cannot link ${G.prettyIdent(e.project.configuration,G.parseIdent(De.name))} into ${G.prettyLocator(e.project.configuration,G.parseLocator(`${T.name}@${T.reference}`))} dependency ${G.prettyLocator(e.project.configuration,it)} conflicts with parent dependency ${G.prettyLocator(e.project.configuration,x)}`})}else{let x=Ae.get(Ve);if(x){let w=x.target,P=G.parseLocator(Array.isArray(w)?`${w[0]}@${w[1]}`:`${Ve}@${w}`);H2e(P,it)||r.push({messageName:71,text:`Cannot link ${G.prettyIdent(e.project.configuration,G.parseIdent(De.name))} into ${G.prettyLocator(e.project.configuration,G.parseLocator(`${T.name}@${T.reference}`))} dependency ${G.prettyLocator(e.project.configuration,it)} conflicts with dependency ${G.prettyLocator(e.project.configuration,P)} from sibling portal ${G.prettyIdent(e.project.configuration,G.parseIdent(x.portal.name))}`})}else Ae.set(Ve,{target:it.reference,portal:De})}}}}let rt=e.hoistingLimitsByCwd?.get(ee),Fe=j?ee:J.relative(p,fe.toPortablePath(mt.packageLocation))||vt.dot,Ne=e.hoistingLimitsByCwd?.get(Fe);S(se,mt,De,le,I,Ce,Fe,rt==="dependencies"||Ne==="dependencies"||Ne==="workspaces")}}};return S(f.name,c,f,h,c,c.packageDependencies,vt.dot,!1),{packageTree:h,hoistingLimits:a,errors:r,preserveSymlinksRequired:s}};function j2e(t,e,r){let s=r.resolveVirtual&&e.reference&&e.reference.startsWith("virtual:")?r.resolveVirtual(t.packageLocation):t.packageLocation;return fe.toPortablePath(s||t.packageLocation)}function Ogt(t,e,r){let s=e.getLocator(t.name.replace(rg,""),t.reference),a=e.getPackageInformation(s);if(a===null)throw new Error("Assertion failed: Expected the package to be registered");return r.pnpifyFs?{linkType:"SOFT",target:fe.toPortablePath(a.packageLocation)}:{linkType:a.linkType,target:j2e(a,t,e)}}var Lgt=(t,e,r)=>{let s=new Map,a=(E,C,S)=>{let{linkType:b,target:I}=Ogt(E,t,r);return{locator:pA(E),nodePath:C,target:I,linkType:b,aliases:S}},n=E=>{let[C,S]=E.split("/");return S?{scope:C,name:S}:{scope:null,name:C}},c=new Set,f=(E,C,S)=>{if(c.has(E))return;c.add(E);let b=Array.from(E.references).sort().join("#");for(let I of E.dependencies){let T=Array.from(I.references).sort().join("#");if(I.identName===E.identName.replace(rg,"")&&T===b)continue;let N=Array.from(I.references).sort(),U={name:I.identName,reference:N[0]},{name:W,scope:ee}=n(I.name),ie=ee?[ee,W]:[W],ue=J.join(C,_2e),le=J.join(ue,...ie),me=`${S}/${U.name}`,pe=a(U,S,N.slice(1)),Be=!1;if(pe.linkType==="SOFT"&&r.project){let Ce=r.project.workspacesByCwd.get(pe.target.slice(0,-1));Be=!!(Ce&&!Ce.manifest.name)}if(!I.name.endsWith(rg)&&!Be){let Ce=s.get(le);if(Ce){if(Ce.dirList)throw new Error(`Assertion failed: ${le} cannot merge dir node with leaf node`);{let ye=G.parseLocator(Ce.locator),Ae=G.parseLocator(pe.locator);if(Ce.linkType!==pe.linkType)throw new Error(`Assertion failed: ${le} cannot merge nodes with different link types ${Ce.nodePath}/${G.stringifyLocator(ye)} and ${S}/${G.stringifyLocator(Ae)}`);if(ye.identHash!==Ae.identHash)throw new Error(`Assertion failed: ${le} cannot merge nodes with different idents ${Ce.nodePath}/${G.stringifyLocator(ye)} and ${S}/s${G.stringifyLocator(Ae)}`);pe.aliases=[...pe.aliases,...Ce.aliases,G.parseLocator(Ce.locator).reference]}}s.set(le,pe);let g=le.split("/"),we=g.indexOf(_2e);for(let ye=g.length-1;we>=0&&ye>we;ye--){let Ae=fe.toPortablePath(g.slice(0,ye).join(J.sep)),se=g[ye],X=s.get(Ae);if(!X)s.set(Ae,{dirList:new Set([se])});else if(X.dirList){if(X.dirList.has(se))break;X.dirList.add(se)}}}f(I,pe.linkType==="SOFT"?pe.target:le,me)}},p=a({name:e.name,reference:Array.from(e.references)[0]},"",[]),h=p.target;return s.set(h,p),f(e,h,""),s};Ge();Ge();Dt();Dt();eA();wc();var gY={};Vt(gY,{PnpInstaller:()=>Gm,PnpLinker:()=>sg,UnplugCommand:()=>Sw,default:()=>pdt,getPnpPath:()=>og,jsInstallUtils:()=>gA,pnpUtils:()=>HD,quotePathIfNeeded:()=>DBe});Dt();var SBe=Ie("url");Ge();Ge();Dt();Dt();var G2e={DEFAULT:{collapsed:!1,next:{"*":"DEFAULT"}},TOP_LEVEL:{collapsed:!1,next:{fallbackExclusionList:"FALLBACK_EXCLUSION_LIST",packageRegistryData:"PACKAGE_REGISTRY_DATA","*":"DEFAULT"}},FALLBACK_EXCLUSION_LIST:{collapsed:!1,next:{"*":"FALLBACK_EXCLUSION_ENTRIES"}},FALLBACK_EXCLUSION_ENTRIES:{collapsed:!0,next:{"*":"FALLBACK_EXCLUSION_DATA"}},FALLBACK_EXCLUSION_DATA:{collapsed:!0,next:{"*":"DEFAULT"}},PACKAGE_REGISTRY_DATA:{collapsed:!1,next:{"*":"PACKAGE_REGISTRY_ENTRIES"}},PACKAGE_REGISTRY_ENTRIES:{collapsed:!0,next:{"*":"PACKAGE_STORE_DATA"}},PACKAGE_STORE_DATA:{collapsed:!1,next:{"*":"PACKAGE_STORE_ENTRIES"}},PACKAGE_STORE_ENTRIES:{collapsed:!0,next:{"*":"PACKAGE_INFORMATION_DATA"}},PACKAGE_INFORMATION_DATA:{collapsed:!1,next:{packageDependencies:"PACKAGE_DEPENDENCIES","*":"DEFAULT"}},PACKAGE_DEPENDENCIES:{collapsed:!1,next:{"*":"PACKAGE_DEPENDENCY"}},PACKAGE_DEPENDENCY:{collapsed:!0,next:{"*":"DEFAULT"}}};function Mgt(t,e,r){let s="";s+="[";for(let a=0,n=t.length;a"u"||(f!==0&&(a+=", "),a+=JSON.stringify(p),a+=": ",a+=rN(p,h,e,r).replace(/^ +/g,""),f+=1)}return a+="}",a}function Hgt(t,e,r){let s=Object.keys(t),a=`${r} `,n="";n+=r,n+=`{ `;let c=0;for(let f=0,p=s.length;f"u"||(c!==0&&(n+=",",n+=` `),n+=a,n+=JSON.stringify(h),n+=": ",n+=rN(h,E,e,a).replace(/^ +/g,""),c+=1)}return c!==0&&(n+=` `),n+=r,n+="}",n}function rN(t,e,r,s){let{next:a}=G2e[r],n=a[t]||a["*"];return q2e(e,n,s)}function q2e(t,e,r){let{collapsed:s}=G2e[e];return Array.isArray(t)?s?Mgt(t,e,r):Ugt(t,e,r):typeof t=="object"&&t!==null?s?_gt(t,e,r):Hgt(t,e,r):JSON.stringify(t)}function W2e(t){return q2e(t,"TOP_LEVEL","")}function QD(t,e){let r=Array.from(t);Array.isArray(e)||(e=[e]);let s=[];for(let n of e)s.push(r.map(c=>n(c)));let a=r.map((n,c)=>c);return a.sort((n,c)=>{for(let f of s){let p=f[n]f[c]?1:0;if(p!==0)return p}return 0}),a.map(n=>r[n])}function jgt(t){let e=new Map,r=QD(t.fallbackExclusionList||[],[({name:s,reference:a})=>s,({name:s,reference:a})=>a]);for(let{name:s,reference:a}of r){let n=e.get(s);typeof n>"u"&&e.set(s,n=new Set),n.add(a)}return Array.from(e).map(([s,a])=>[s,Array.from(a)])}function Ggt(t){return QD(t.fallbackPool||[],([e])=>e)}function qgt(t){let e=[],r=t.dependencyTreeRoots.find(s=>t.packageRegistry.get(s.name)?.get(s.reference)?.packageLocation==="./");for(let[s,a]of QD(t.packageRegistry,([n])=>n===null?"0":`1${n}`)){if(s===null)continue;let n=[];e.push([s,n]);for(let[c,{packageLocation:f,packageDependencies:p,packagePeers:h,linkType:E,discardFromLookup:C}]of QD(a,([S])=>S===null?"0":`1${S}`)){if(c===null)continue;let S=[];s!==null&&c!==null&&!p.has(s)&&S.push([s,c]);for(let[U,W]of p)S.push([U,W]);let b=QD(S,([U])=>U),I=h&&h.size>0?Array.from(h):void 0,N={packageLocation:f,packageDependencies:b,packagePeers:I,linkType:E,discardFromLookup:C||void 0};n.push([c,N]),r&&s===r.name&&c===r.reference&&e.unshift([null,[[null,N]]])}}return e}function RD(t){return{__info:["This file is automatically generated. Do not touch it, or risk","your modifications being lost."],dependencyTreeRoots:t.dependencyTreeRoots,enableTopLevelFallback:t.enableTopLevelFallback||!1,ignorePatternData:t.ignorePattern||null,pnpZipBackend:t.pnpZipBackend,fallbackExclusionList:jgt(t),fallbackPool:Ggt(t),packageRegistryData:qgt(t)}}var J2e=ut(V2e());function K2e(t,e){return[t?`${t} `:"",`/* eslint-disable */ `,`// @ts-nocheck `,`"use strict"; `,` `,e,` `,(0,J2e.default)()].join("")}function Wgt(t){return JSON.stringify(t,null,2)}function Ygt(t){return`'${t.replace(/\\/g,"\\\\").replace(/'/g,"\\'").replace(/\n/g,`\\ `)}'`}function Vgt(t){return[`const RAW_RUNTIME_STATE = `,`${Ygt(W2e(t))}; `,`function $$SETUP_STATE(hydrateRuntimeState, basePath) { `,` return hydrateRuntimeState(JSON.parse(RAW_RUNTIME_STATE), {basePath: basePath || __dirname}); `,`} `].join("")}function Jgt(){return[`function $$SETUP_STATE(hydrateRuntimeState, basePath) { `,` const fs = require('fs'); `,` const path = require('path'); `,` const pnpDataFilepath = path.resolve(__dirname, ${JSON.stringify(Er.pnpData)}); `,` return hydrateRuntimeState(JSON.parse(fs.readFileSync(pnpDataFilepath, 'utf8')), {basePath: basePath || __dirname}); `,`} `].join("")}function z2e(t){let e=RD(t),r=Vgt(e);return K2e(t.shebang,r)}function Z2e(t){let e=RD(t),r=Jgt(),s=K2e(t.shebang,r);return{dataFile:Wgt(e),loaderFile:s}}Dt();function XW(t,{basePath:e}){let r=fe.toPortablePath(e),s=J.resolve(r),a=t.ignorePatternData!==null?new RegExp(t.ignorePatternData):null,n=new Map,c=new Map(t.packageRegistryData.map(([C,S])=>[C,new Map(S.map(([b,I])=>{if(C===null!=(b===null))throw new Error("Assertion failed: The name and reference should be null, or neither should");let T=I.discardFromLookup??!1,N={name:C,reference:b},U=n.get(I.packageLocation);U?(U.discardFromLookup=U.discardFromLookup&&T,T||(U.locator=N)):n.set(I.packageLocation,{locator:N,discardFromLookup:T});let W=null;return[b,{packageDependencies:new Map(I.packageDependencies),packagePeers:new Set(I.packagePeers),linkType:I.linkType,discardFromLookup:T,get packageLocation(){return W||(W=J.join(s,I.packageLocation))}}]}))])),f=new Map(t.fallbackExclusionList.map(([C,S])=>[C,new Set(S)])),p=new Map(t.fallbackPool),h=t.dependencyTreeRoots,E=t.enableTopLevelFallback;return{basePath:r,dependencyTreeRoots:h,enableTopLevelFallback:E,fallbackExclusionList:f,pnpZipBackend:t.pnpZipBackend,fallbackPool:p,ignorePattern:a,packageLocatorsByLocations:n,packageRegistry:c}}Dt();Dt();var sh=Ie("module"),jm=Ie("url"),lY=Ie("util");var ta=Ie("url");var tBe=ut(Ie("assert"));var $W=Array.isArray,TD=JSON.stringify,FD=Object.getOwnPropertyNames,Hm=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),eY=(t,e)=>RegExp.prototype.exec.call(t,e),tY=(t,...e)=>RegExp.prototype[Symbol.replace].apply(t,e),ng=(t,...e)=>String.prototype.endsWith.apply(t,e),rY=(t,...e)=>String.prototype.includes.apply(t,e),nY=(t,...e)=>String.prototype.lastIndexOf.apply(t,e),ND=(t,...e)=>String.prototype.indexOf.apply(t,e),X2e=(t,...e)=>String.prototype.replace.apply(t,e),ig=(t,...e)=>String.prototype.slice.apply(t,e),hA=(t,...e)=>String.prototype.startsWith.apply(t,e),$2e=Map,eBe=JSON.parse;function OD(t,e,r){return class extends r{constructor(...s){super(e(...s)),this.code=t,this.name=`${r.name} [${t}]`}}}var rBe=OD("ERR_PACKAGE_IMPORT_NOT_DEFINED",(t,e,r)=>`Package import specifier "${t}" is not defined${e?` in package ${e}package.json`:""} imported from ${r}`,TypeError),iY=OD("ERR_INVALID_MODULE_SPECIFIER",(t,e,r=void 0)=>`Invalid module "${t}" ${e}${r?` imported from ${r}`:""}`,TypeError),nBe=OD("ERR_INVALID_PACKAGE_TARGET",(t,e,r,s=!1,a=void 0)=>{let n=typeof r=="string"&&!s&&r.length&&!hA(r,"./");return e==="."?((0,tBe.default)(s===!1),`Invalid "exports" main target ${TD(r)} defined in the package config ${t}package.json${a?` imported from ${a}`:""}${n?'; targets must start with "./"':""}`):`Invalid "${s?"imports":"exports"}" target ${TD(r)} defined for '${e}' in the package config ${t}package.json${a?` imported from ${a}`:""}${n?'; targets must start with "./"':""}`},Error),LD=OD("ERR_INVALID_PACKAGE_CONFIG",(t,e,r)=>`Invalid package config ${t}${e?` while importing ${e}`:""}${r?`. ${r}`:""}`,Error),iBe=OD("ERR_PACKAGE_PATH_NOT_EXPORTED",(t,e,r=void 0)=>e==="."?`No "exports" main defined in ${t}package.json${r?` imported from ${r}`:""}`:`Package subpath '${e}' is not defined by "exports" in ${t}package.json${r?` imported from ${r}`:""}`,Error);var iN=Ie("url");function sBe(t,e){let r=Object.create(null);for(let s=0;se):t+e}MD(r,t,s,c,a)}eY(aBe,ig(t,2))!==null&&MD(r,t,s,c,a);let p=new URL(t,s),h=p.pathname,E=new URL(".",s).pathname;if(hA(h,E)||MD(r,t,s,c,a),e==="")return p;if(eY(aBe,e)!==null){let C=n?X2e(r,"*",()=>e):r+e;Zgt(C,s,c,a)}return n?new URL(tY(lBe,p.href,()=>e)):new URL(e,p)}function $gt(t){let e=+t;return`${e}`!==t?!1:e>=0&&e<4294967295}function vw(t,e,r,s,a,n,c,f){if(typeof e=="string")return Xgt(e,r,s,t,a,n,c,f);if($W(e)){if(e.length===0)return null;let p;for(let h=0;hn?-1:n>a||r===-1?1:s===-1||t.length>e.length?-1:e.length>t.length?1:0}function edt(t,e,r){if(typeof t=="string"||$W(t))return!0;if(typeof t!="object"||t===null)return!1;let s=FD(t),a=!1,n=0;for(let c=0;c=h.length&&ng(e,C)&&uBe(n,h)===1&&nY(h,"*")===E&&(n=h,c=ig(e,E,e.length-C.length))}}if(n){let p=r[n],h=vw(t,p,c,n,s,!0,!1,a);return h==null&&sY(e,t,s),h}sY(e,t,s)}function ABe({name:t,base:e,conditions:r,readFileSyncFn:s}){if(t==="#"||hA(t,"#/")||ng(t,"/")){let c="is not a valid internal imports specifier name";throw new iY(t,c,(0,ta.fileURLToPath)(e))}let a,n=oBe(e,s);if(n.exists){a=(0,ta.pathToFileURL)(n.pjsonPath);let c=n.imports;if(c)if(Hm(c,t)&&!rY(t,"*")){let f=vw(a,c[t],"",t,e,!1,!0,r);if(f!=null)return f}else{let f="",p,h=FD(c);for(let E=0;E=C.length&&ng(t,b)&&uBe(f,C)===1&&nY(C,"*")===S&&(f=C,p=ig(t,S,t.length-b.length))}}if(f){let E=c[f],C=vw(a,E,p,f,e,!0,!0,r);if(C!=null)return C}}}zgt(t,a,e)}Dt();var rdt=new Set(["BUILTIN_NODE_RESOLUTION_FAILED","MISSING_DEPENDENCY","MISSING_PEER_DEPENDENCY","QUALIFIED_PATH_RESOLUTION_FAILED","UNDECLARED_DEPENDENCY"]);function gs(t,e,r={},s){s??=rdt.has(t)?"MODULE_NOT_FOUND":t;let a={configurable:!0,writable:!0,enumerable:!1};return Object.defineProperties(new Error(e),{code:{...a,value:s},pnpCode:{...a,value:t},data:{...a,value:r}})}function lf(t){return fe.normalize(fe.fromPortablePath(t))}var dBe=ut(hBe());function mBe(t){return ndt(),aY[t]}var aY;function ndt(){aY||(aY={"--conditions":[],...gBe(idt()),...gBe(process.execArgv)})}function gBe(t){return(0,dBe.default)({"--conditions":[String],"-C":"--conditions"},{argv:t,permissive:!0})}function idt(){let t=[],e=sdt(process.env.NODE_OPTIONS||"",t);return t.length,e}function sdt(t,e){let r=[],s=!1,a=!0;for(let n=0;nparseInt(t,10)),yBe=ml>19||ml===19&&ih>=2||ml===18&&ih>=13,IXt=ml===20&&ih<6||ml===19&&ih>=3,CXt=ml>19||ml===19&&ih>=6,wXt=ml>=21||ml===20&&ih>=10||ml===18&&ih>=19,BXt=ml>=21||ml===20&&ih>=10||ml===18&&ih>=20,vXt=ml>=22;function EBe(t){if(process.env.WATCH_REPORT_DEPENDENCIES&&process.send)if(t=t.map(e=>fe.fromPortablePath(uo.resolveVirtual(fe.toPortablePath(e)))),yBe)process.send({"watch:require":t});else for(let e of t)process.send({"watch:require":e})}function cY(t,e){let r=Number(process.env.PNP_ALWAYS_WARN_ON_FALLBACK)>0,s=Number(process.env.PNP_DEBUG_LEVEL),a=/^(?![a-zA-Z]:[\\/]|\\\\|\.{0,2}(?:\/|$))((?:node:)?(?:@[^/]+\/)?[^/]+)\/*(.*|)$/,n=/^(\/|\.{1,2}(\/|$))/,c=/\/$/,f=/^\.{0,2}\//,p={name:null,reference:null},h=[],E=new Set;if(t.enableTopLevelFallback===!0&&h.push(p),e.compatibilityMode!==!1)for(let Fe of["react-scripts","gatsby"]){let Ne=t.packageRegistry.get(Fe);if(Ne)for(let be of Ne.keys()){if(be===null)throw new Error("Assertion failed: This reference shouldn't be null");h.push({name:Fe,reference:be})}}let{ignorePattern:C,packageRegistry:S,packageLocatorsByLocations:b}=t;function I(Fe,Ne){return{fn:Fe,args:Ne,error:null,result:null}}function T(Fe){let Ne=process.stderr?.hasColors?.()??process.stdout.isTTY,be=(it,Ue)=>`\x1B[${it}m${Ue}\x1B[0m`,Ve=Fe.error;console.error(Ve?be("31;1",`\u2716 ${Fe.error?.message.replace(/\n.*/s,"")}`):be("33;1","\u203C Resolution")),Fe.args.length>0&&console.error();for(let it of Fe.args)console.error(` ${be("37;1","In \u2190")} ${(0,lY.inspect)(it,{colors:Ne,compact:!0})}`);Fe.result&&(console.error(),console.error(` ${be("37;1","Out \u2192")} ${(0,lY.inspect)(Fe.result,{colors:Ne,compact:!0})}`));let ke=new Error().stack.match(/(?<=^ +)at.*/gm)?.slice(2)??[];if(ke.length>0){console.error();for(let it of ke)console.error(` ${be("38;5;244",it)}`)}console.error()}function N(Fe,Ne){if(e.allowDebug===!1)return Ne;if(Number.isFinite(s)){if(s>=2)return(...be)=>{let Ve=I(Fe,be);try{return Ve.result=Ne(...be)}catch(ke){throw Ve.error=ke}finally{T(Ve)}};if(s>=1)return(...be)=>{try{return Ne(...be)}catch(Ve){let ke=I(Fe,be);throw ke.error=Ve,T(ke),Ve}}}return Ne}function U(Fe){let Ne=g(Fe);if(!Ne)throw gs("INTERNAL","Couldn't find a matching entry in the dependency tree for the specified parent (this is probably an internal error)");return Ne}function W(Fe){if(Fe.name===null)return!0;for(let Ne of t.dependencyTreeRoots)if(Ne.name===Fe.name&&Ne.reference===Fe.reference)return!0;return!1}let ee=new Set(["node","require",...mBe("--conditions")]);function ie(Fe,Ne=ee,be){let Ve=Ae(J.join(Fe,"internal.js"),{resolveIgnored:!0,includeDiscardFromLookup:!0});if(Ve===null)throw gs("INTERNAL",`The locator that owns the "${Fe}" path can't be found inside the dependency tree (this is probably an internal error)`);let{packageLocation:ke}=U(Ve),it=J.join(ke,Er.manifest);if(!e.fakeFs.existsSync(it))return null;let Ue=JSON.parse(e.fakeFs.readFileSync(it,"utf8"));if(Ue.exports==null)return null;let x=J.contains(ke,Fe);if(x===null)throw gs("INTERNAL","unqualifiedPath doesn't contain the packageLocation (this is probably an internal error)");x!=="."&&!f.test(x)&&(x=`./${x}`);try{let w=fBe({packageJSONUrl:(0,jm.pathToFileURL)(fe.fromPortablePath(it)),packageSubpath:x,exports:Ue.exports,base:be?(0,jm.pathToFileURL)(fe.fromPortablePath(be)):null,conditions:Ne});return fe.toPortablePath((0,jm.fileURLToPath)(w))}catch(w){throw gs("EXPORTS_RESOLUTION_FAILED",w.message,{unqualifiedPath:lf(Fe),locator:Ve,pkgJson:Ue,subpath:lf(x),conditions:Ne},w.code)}}function ue(Fe,Ne,{extensions:be}){let Ve;try{Ne.push(Fe),Ve=e.fakeFs.statSync(Fe)}catch{}if(Ve&&!Ve.isDirectory())return e.fakeFs.realpathSync(Fe);if(Ve&&Ve.isDirectory()){let ke;try{ke=JSON.parse(e.fakeFs.readFileSync(J.join(Fe,Er.manifest),"utf8"))}catch{}let it;if(ke&&ke.main&&(it=J.resolve(Fe,ke.main)),it&&it!==Fe){let Ue=ue(it,Ne,{extensions:be});if(Ue!==null)return Ue}}for(let ke=0,it=be.length;ke{let x=JSON.stringify(Ue.name);if(Ve.has(x))return;Ve.add(x);let w=we(Ue);for(let P of w)if(U(P).packagePeers.has(Fe))ke(P);else{let F=be.get(P.name);typeof F>"u"&&be.set(P.name,F=new Set),F.add(P.reference)}};ke(Ne);let it=[];for(let Ue of[...be.keys()].sort())for(let x of[...be.get(Ue)].sort())it.push({name:Ue,reference:x});return it}function Ae(Fe,{resolveIgnored:Ne=!1,includeDiscardFromLookup:be=!1}={}){if(pe(Fe)&&!Ne)return null;let Ve=J.relative(t.basePath,Fe);Ve.match(n)||(Ve=`./${Ve}`),Ve.endsWith("/")||(Ve=`${Ve}/`);do{let ke=b.get(Ve);if(typeof ke>"u"||ke.discardFromLookup&&!be){Ve=Ve.substring(0,Ve.lastIndexOf("/",Ve.length-2)+1);continue}return ke.locator}while(Ve!=="");return null}function se(Fe){try{return e.fakeFs.readFileSync(fe.toPortablePath(Fe),"utf8")}catch(Ne){if(Ne.code==="ENOENT")return;throw Ne}}function X(Fe,Ne,{considerBuiltins:be=!0}={}){if(Fe.startsWith("#"))throw new Error("resolveToUnqualified can not handle private import mappings");if(Fe==="pnpapi")return fe.toPortablePath(e.pnpapiResolution);if(be&&(0,sh.isBuiltin)(Fe))return null;let Ve=lf(Fe),ke=Ne&&lf(Ne);if(Ne&&pe(Ne)&&(!J.isAbsolute(Fe)||Ae(Fe)===null)){let x=me(Fe,Ne);if(x===!1)throw gs("BUILTIN_NODE_RESOLUTION_FAILED",`The builtin node resolution algorithm was unable to resolve the requested module (it didn't go through the pnp resolver because the issuer was explicitely ignored by the regexp) Require request: "${Ve}" Required by: ${ke} `,{request:Ve,issuer:ke});return fe.toPortablePath(x)}let it,Ue=Fe.match(a);if(Ue){if(!Ne)throw gs("API_ERROR","The resolveToUnqualified function must be called with a valid issuer when the path isn't a builtin nor absolute",{request:Ve,issuer:ke});let[,x,w]=Ue,P=Ae(Ne);if(!P){let Re=me(Fe,Ne);if(Re===!1)throw gs("BUILTIN_NODE_RESOLUTION_FAILED",`The builtin node resolution algorithm was unable to resolve the requested module (it didn't go through the pnp resolver because the issuer doesn't seem to be part of the Yarn-managed dependency tree). Require path: "${Ve}" Required by: ${ke} `,{request:Ve,issuer:ke});return fe.toPortablePath(Re)}let F=U(P).packageDependencies.get(x),z=null;if(F==null&&P.name!==null){let Re=t.fallbackExclusionList.get(P.name);if(!Re||!Re.has(P.reference)){for(let Ct=0,qt=h.length;CtW(lt))?Z=gs("MISSING_PEER_DEPENDENCY",`${P.name} tried to access ${x} (a peer dependency) but it isn't provided by your application; this makes the require call ambiguous and unsound. Required package: ${x}${x!==Ve?` (via "${Ve}")`:""} Required by: ${P.name}@${P.reference} (via ${ke}) ${Re.map(lt=>`Ancestor breaking the chain: ${lt.name}@${lt.reference} `).join("")} `,{request:Ve,issuer:ke,issuerLocator:Object.assign({},P),dependencyName:x,brokenAncestors:Re}):Z=gs("MISSING_PEER_DEPENDENCY",`${P.name} tried to access ${x} (a peer dependency) but it isn't provided by its ancestors; this makes the require call ambiguous and unsound. Required package: ${x}${x!==Ve?` (via "${Ve}")`:""} Required by: ${P.name}@${P.reference} (via ${ke}) ${Re.map(lt=>`Ancestor breaking the chain: ${lt.name}@${lt.reference} `).join("")} `,{request:Ve,issuer:ke,issuerLocator:Object.assign({},P),dependencyName:x,brokenAncestors:Re})}else F===void 0&&(!be&&(0,sh.isBuiltin)(Fe)?W(P)?Z=gs("UNDECLARED_DEPENDENCY",`Your application tried to access ${x}. While this module is usually interpreted as a Node builtin, your resolver is running inside a non-Node resolution context where such builtins are ignored. Since ${x} isn't otherwise declared in your dependencies, this makes the require call ambiguous and unsound. Required package: ${x}${x!==Ve?` (via "${Ve}")`:""} Required by: ${ke} `,{request:Ve,issuer:ke,dependencyName:x}):Z=gs("UNDECLARED_DEPENDENCY",`${P.name} tried to access ${x}. While this module is usually interpreted as a Node builtin, your resolver is running inside a non-Node resolution context where such builtins are ignored. Since ${x} isn't otherwise declared in ${P.name}'s dependencies, this makes the require call ambiguous and unsound. Required package: ${x}${x!==Ve?` (via "${Ve}")`:""} Required by: ${ke} `,{request:Ve,issuer:ke,issuerLocator:Object.assign({},P),dependencyName:x}):W(P)?Z=gs("UNDECLARED_DEPENDENCY",`Your application tried to access ${x}, but it isn't declared in your dependencies; this makes the require call ambiguous and unsound. Required package: ${x}${x!==Ve?` (via "${Ve}")`:""} Required by: ${ke} `,{request:Ve,issuer:ke,dependencyName:x}):Z=gs("UNDECLARED_DEPENDENCY",`${P.name} tried to access ${x}, but it isn't declared in its dependencies; this makes the require call ambiguous and unsound. Required package: ${x}${x!==Ve?` (via "${Ve}")`:""} Required by: ${P.name}@${P.reference} (via ${ke}) `,{request:Ve,issuer:ke,issuerLocator:Object.assign({},P),dependencyName:x}));if(F==null){if(z===null||Z===null)throw Z||new Error("Assertion failed: Expected an error to have been set");F=z;let Re=Z.message.replace(/\n.*/g,"");Z.message=Re,!E.has(Re)&&s!==0&&(E.add(Re),process.emitWarning(Z))}let $=Array.isArray(F)?{name:F[0],reference:F[1]}:{name:x,reference:F},oe=U($);if(!oe.packageLocation)throw gs("MISSING_DEPENDENCY",`A dependency seems valid but didn't get installed for some reason. This might be caused by a partial install, such as dev vs prod. Required package: ${$.name}@${$.reference}${$.name!==Ve?` (via "${Ve}")`:""} Required by: ${P.name}@${P.reference} (via ${ke}) `,{request:Ve,issuer:ke,dependencyLocator:Object.assign({},$)});let xe=oe.packageLocation;w?it=J.join(xe,w):it=xe}else if(J.isAbsolute(Fe))it=J.normalize(Fe);else{if(!Ne)throw gs("API_ERROR","The resolveToUnqualified function must be called with a valid issuer when the path isn't a builtin nor absolute",{request:Ve,issuer:ke});let x=J.resolve(Ne);Ne.match(c)?it=J.normalize(J.join(x,Fe)):it=J.normalize(J.join(J.dirname(x),Fe))}return J.normalize(it)}function De(Fe,Ne,be=ee,Ve){if(n.test(Fe))return Ne;let ke=ie(Ne,be,Ve);return ke?J.normalize(ke):Ne}function Te(Fe,{extensions:Ne=Object.keys(sh.Module._extensions)}={}){let be=[],Ve=ue(Fe,be,{extensions:Ne});if(Ve)return J.normalize(Ve);{EBe(be.map(Ue=>fe.fromPortablePath(Ue)));let ke=lf(Fe),it=Ae(Fe);if(it){let{packageLocation:Ue}=U(it),x=!0;try{e.fakeFs.accessSync(Ue)}catch(w){if(w?.code==="ENOENT")x=!1;else{let P=(w?.message??w??"empty exception thrown").replace(/^[A-Z]/,y=>y.toLowerCase());throw gs("QUALIFIED_PATH_RESOLUTION_FAILED",`Required package exists but could not be accessed (${P}). Missing package: ${it.name}@${it.reference} Expected package location: ${lf(Ue)} `,{unqualifiedPath:ke,extensions:Ne})}}if(!x){let w=Ue.includes("/unplugged/")?"Required unplugged package missing from disk. This may happen when switching branches without running installs (unplugged packages must be fully materialized on disk to work).":"Required package missing from disk. If you keep your packages inside your repository then restarting the Node process may be enough. Otherwise, try to run an install first.";throw gs("QUALIFIED_PATH_RESOLUTION_FAILED",`${w} Missing package: ${it.name}@${it.reference} Expected package location: ${lf(Ue)} `,{unqualifiedPath:ke,extensions:Ne})}}throw gs("QUALIFIED_PATH_RESOLUTION_FAILED",`Qualified path resolution failed: we looked for the following paths, but none could be accessed. Source path: ${ke} ${be.map(Ue=>`Not found: ${lf(Ue)} `).join("")}`,{unqualifiedPath:ke,extensions:Ne})}}function mt(Fe,Ne,be){if(!Ne)throw new Error("Assertion failed: An issuer is required to resolve private import mappings");let Ve=ABe({name:Fe,base:(0,jm.pathToFileURL)(fe.fromPortablePath(Ne)),conditions:be.conditions??ee,readFileSyncFn:se});if(Ve instanceof URL)return Te(fe.toPortablePath((0,jm.fileURLToPath)(Ve)),{extensions:be.extensions});if(Ve.startsWith("#"))throw new Error("Mapping from one private import to another isn't allowed");return j(Ve,Ne,be)}function j(Fe,Ne,be={}){try{if(Fe.startsWith("#"))return mt(Fe,Ne,be);let{considerBuiltins:Ve,extensions:ke,conditions:it}=be,Ue=X(Fe,Ne,{considerBuiltins:Ve});if(Fe==="pnpapi")return Ue;if(Ue===null)return null;let x=()=>Ne!==null?pe(Ne):!1,w=(!Ve||!(0,sh.isBuiltin)(Fe))&&!x()?De(Fe,Ue,it,Ne):Ue;return Te(w,{extensions:ke})}catch(Ve){throw Object.hasOwn(Ve,"pnpCode")&&Object.assign(Ve.data,{request:lf(Fe),issuer:Ne&&lf(Ne)}),Ve}}function rt(Fe){let Ne=J.normalize(Fe),be=uo.resolveVirtual(Ne);return be!==Ne?be:null}return{VERSIONS:Be,topLevel:Ce,getLocator:(Fe,Ne)=>Array.isArray(Ne)?{name:Ne[0],reference:Ne[1]}:{name:Fe,reference:Ne},getDependencyTreeRoots:()=>[...t.dependencyTreeRoots],getAllLocators(){let Fe=[];for(let[Ne,be]of S)for(let Ve of be.keys())Ne!==null&&Ve!==null&&Fe.push({name:Ne,reference:Ve});return Fe},getPackageInformation:Fe=>{let Ne=g(Fe);if(Ne===null)return null;let be=fe.fromPortablePath(Ne.packageLocation);return{...Ne,packageLocation:be}},findPackageLocator:Fe=>Ae(fe.toPortablePath(Fe)),resolveToUnqualified:N("resolveToUnqualified",(Fe,Ne,be)=>{let Ve=Ne!==null?fe.toPortablePath(Ne):null,ke=X(fe.toPortablePath(Fe),Ve,be);return ke===null?null:fe.fromPortablePath(ke)}),resolveUnqualified:N("resolveUnqualified",(Fe,Ne)=>fe.fromPortablePath(Te(fe.toPortablePath(Fe),Ne))),resolveRequest:N("resolveRequest",(Fe,Ne,be)=>{let Ve=Ne!==null?fe.toPortablePath(Ne):null,ke=j(fe.toPortablePath(Fe),Ve,be);return ke===null?null:fe.fromPortablePath(ke)}),resolveVirtual:N("resolveVirtual",Fe=>{let Ne=rt(fe.toPortablePath(Fe));return Ne!==null?fe.fromPortablePath(Ne):null})}}Dt();var IBe=(t,e,r)=>{let s=RD(t),a=XW(s,{basePath:e}),n=fe.join(e,Er.pnpCjs);return cY(a,{fakeFs:r,pnpapiResolution:n})};var fY=ut(wBe());Yt();var gA={};Vt(gA,{checkManifestCompatibility:()=>BBe,extractBuildRequest:()=>sN,getExtractHint:()=>AY,hasBindingGyp:()=>pY});Ge();Dt();function BBe(t){return G.isPackageCompatible(t,fs.getArchitectureSet())}function sN(t,e,r,{configuration:s}){let a=[];for(let n of["preinstall","install","postinstall"])e.manifest.scripts.has(n)&&a.push({type:0,script:n});return!e.manifest.scripts.has("install")&&e.misc.hasBindingGyp&&a.push({type:1,script:"node-gyp rebuild"}),a.length===0?null:t.linkType!=="HARD"?{skipped:!0,explain:n=>n.reportWarningOnce(6,`${G.prettyLocator(s,t)} lists build scripts, but is referenced through a soft link. Soft links don't support build scripts, so they'll be ignored.`)}:r&&r.built===!1?{skipped:!0,explain:n=>n.reportInfoOnce(5,`${G.prettyLocator(s,t)} lists build scripts, but its build has been explicitly disabled through configuration.`)}:!s.get("enableScripts")&&!r.built?{skipped:!0,explain:n=>n.reportWarningOnce(4,`${G.prettyLocator(s,t)} lists build scripts, but all build scripts have been disabled.`)}:BBe(t)?{skipped:!1,directives:a}:{skipped:!0,explain:n=>n.reportWarningOnce(76,`${G.prettyLocator(s,t)} The ${fs.getArchitectureName()} architecture is incompatible with this package, build skipped.`)}}var adt=new Set([".exe",".bin",".h",".hh",".hpp",".c",".cc",".cpp",".java",".jar",".node"]);function AY(t){return t.packageFs.getExtractHint({relevantExtensions:adt})}function pY(t){let e=J.join(t.prefixPath,"binding.gyp");return t.packageFs.existsSync(e)}var HD={};Vt(HD,{getUnpluggedPath:()=>_D});Ge();Dt();function _D(t,{configuration:e}){return J.resolve(e.get("pnpUnpluggedFolder"),G.slugifyLocator(t))}var ldt=new Set([G.makeIdent(null,"open").identHash,G.makeIdent(null,"opn").identHash]),sg=class{constructor(){this.mode="strict";this.pnpCache=new Map}getCustomDataKey(){return JSON.stringify({name:"PnpLinker",version:2})}supportsPackage(e,r){return this.isEnabled(r)}async findPackageLocation(e,r){if(!this.isEnabled(r))throw new Error("Assertion failed: Expected the PnP linker to be enabled");let s=og(r.project).cjs;if(!ce.existsSync(s))throw new nt(`The project in ${he.pretty(r.project.configuration,`${r.project.cwd}/package.json`,he.Type.PATH)} doesn't seem to have been installed - running an install there might help`);let a=je.getFactoryWithDefault(this.pnpCache,s,()=>je.dynamicRequire(s,{cachingStrategy:je.CachingStrategy.FsTime})),n={name:G.stringifyIdent(e),reference:e.reference},c=a.getPackageInformation(n);if(!c)throw new nt(`Couldn't find ${G.prettyLocator(r.project.configuration,e)} in the currently installed PnP map - running an install might help`);return fe.toPortablePath(c.packageLocation)}async findPackageLocator(e,r){if(!this.isEnabled(r))return null;let s=og(r.project).cjs;if(!ce.existsSync(s))return null;let n=je.getFactoryWithDefault(this.pnpCache,s,()=>je.dynamicRequire(s,{cachingStrategy:je.CachingStrategy.FsTime})).findPackageLocator(fe.fromPortablePath(e));return n?G.makeLocator(G.parseIdent(n.name),n.reference):null}makeInstaller(e){return new Gm(e)}isEnabled(e){return!(e.project.configuration.get("nodeLinker")!=="pnp"||e.project.configuration.get("pnpMode")!==this.mode)}},Gm=class{constructor(e){this.opts=e;this.mode="strict";this.asyncActions=new je.AsyncActions(10);this.packageRegistry=new Map;this.virtualTemplates=new Map;this.isESMLoaderRequired=!1;this.customData={store:new Map};this.unpluggedPaths=new Set;this.opts=e}attachCustomData(e){this.customData=e}async installPackage(e,r,s){let a=G.stringifyIdent(e),n=e.reference,c=!!this.opts.project.tryWorkspaceByLocator(e),f=G.isVirtualLocator(e),p=e.peerDependencies.size>0&&!f,h=!p&&!c,E=!p&&e.linkType!=="SOFT",C,S;if(h||E){let ee=f?G.devirtualizeLocator(e):e;C=this.customData.store.get(ee.locatorHash),typeof C>"u"&&(C=await cdt(r),e.linkType==="HARD"&&this.customData.store.set(ee.locatorHash,C)),C.manifest.type==="module"&&(this.isESMLoaderRequired=!0),S=this.opts.project.getDependencyMeta(ee,e.version)}let b=h?sN(e,C,S,{configuration:this.opts.project.configuration}):null,I=E?await this.unplugPackageIfNeeded(e,C,r,S,s):r.packageFs;if(J.isAbsolute(r.prefixPath))throw new Error(`Assertion failed: Expected the prefix path (${r.prefixPath}) to be relative to the parent`);let T=J.resolve(I.getRealPath(),r.prefixPath),N=hY(this.opts.project.cwd,T),U=new Map,W=new Set;if(f){for(let ee of e.peerDependencies.values())U.set(G.stringifyIdent(ee),null),W.add(G.stringifyIdent(ee));if(!c){let ee=G.devirtualizeLocator(e);this.virtualTemplates.set(ee.locatorHash,{location:hY(this.opts.project.cwd,uo.resolveVirtual(T)),locator:ee})}}return je.getMapWithDefault(this.packageRegistry,a).set(n,{packageLocation:N,packageDependencies:U,packagePeers:W,linkType:e.linkType,discardFromLookup:r.discardFromLookup||!1}),{packageLocation:T,buildRequest:b}}async attachInternalDependencies(e,r){let s=this.getPackageInformation(e);for(let[a,n]of r){let c=G.areIdentsEqual(a,n)?n.reference:[G.stringifyIdent(n),n.reference];s.packageDependencies.set(G.stringifyIdent(a),c)}}async attachExternalDependents(e,r){for(let s of r)this.getDiskInformation(s).packageDependencies.set(G.stringifyIdent(e),e.reference)}async finalizeInstall(){if(this.opts.project.configuration.get("pnpMode")!==this.mode)return;let e=og(this.opts.project);if(this.isEsmEnabled()||await ce.removePromise(e.esmLoader),this.opts.project.configuration.get("nodeLinker")!=="pnp"){await ce.removePromise(e.cjs),await ce.removePromise(e.data),await ce.removePromise(e.esmLoader),await ce.removePromise(this.opts.project.configuration.get("pnpUnpluggedFolder"));return}for(let{locator:C,location:S}of this.virtualTemplates.values())je.getMapWithDefault(this.packageRegistry,G.stringifyIdent(C)).set(C.reference,{packageLocation:S,packageDependencies:new Map,packagePeers:new Set,linkType:"SOFT",discardFromLookup:!1});let r=this.opts.project.configuration.get("pnpFallbackMode"),s=this.opts.project.workspaces.map(({anchoredLocator:C})=>({name:G.stringifyIdent(C),reference:C.reference})),a=r!=="none",n=[],c=new Map,f=je.buildIgnorePattern([".yarn/sdks/**",...this.opts.project.configuration.get("pnpIgnorePatterns")]),p=this.packageRegistry,h=this.opts.project.configuration.get("pnpShebang"),E=this.opts.project.configuration.get("pnpZipBackend");if(r==="dependencies-only")for(let C of this.opts.project.storedPackages.values())this.opts.project.tryWorkspaceByLocator(C)&&n.push({name:G.stringifyIdent(C),reference:C.reference});return await this.asyncActions.wait(),await this.finalizeInstallWithPnp({dependencyTreeRoots:s,enableTopLevelFallback:a,fallbackExclusionList:n,fallbackPool:c,ignorePattern:f,pnpZipBackend:E,packageRegistry:p,shebang:h}),{customData:this.customData}}async transformPnpSettings(e){}isEsmEnabled(){if(this.opts.project.configuration.sources.has("pnpEnableEsmLoader"))return this.opts.project.configuration.get("pnpEnableEsmLoader");if(this.isESMLoaderRequired)return!0;for(let e of this.opts.project.workspaces)if(e.manifest.type==="module")return!0;return!1}async finalizeInstallWithPnp(e){let r=og(this.opts.project),s=await this.locateNodeModules(e.ignorePattern);if(s.length>0){this.opts.report.reportWarning(31,"One or more node_modules have been detected and will be removed. This operation may take some time.");for(let n of s)await ce.removePromise(n)}if(await this.transformPnpSettings(e),this.opts.project.configuration.get("pnpEnableInlining")){let n=z2e(e);await ce.changeFilePromise(r.cjs,n,{automaticNewlines:!0,mode:493}),await ce.removePromise(r.data)}else{let{dataFile:n,loaderFile:c}=Z2e(e);await ce.changeFilePromise(r.cjs,c,{automaticNewlines:!0,mode:493}),await ce.changeFilePromise(r.data,n,{automaticNewlines:!0,mode:420})}this.isEsmEnabled()&&(this.opts.report.reportWarning(0,"ESM support for PnP uses the experimental loader API and is therefore experimental"),await ce.changeFilePromise(r.esmLoader,(0,fY.default)(),{automaticNewlines:!0,mode:420}));let a=this.opts.project.configuration.get("pnpUnpluggedFolder");if(this.unpluggedPaths.size===0)await ce.removePromise(a);else for(let n of await ce.readdirPromise(a)){let c=J.resolve(a,n);this.unpluggedPaths.has(c)||await ce.removePromise(c)}}async locateNodeModules(e){let r=[],s=e?new RegExp(e):null;for(let a of this.opts.project.workspaces){let n=J.join(a.cwd,"node_modules");if(s&&s.test(J.relative(this.opts.project.cwd,a.cwd))||!ce.existsSync(n))continue;let c=await ce.readdirPromise(n,{withFileTypes:!0}),f=c.filter(p=>!p.isDirectory()||p.name===".bin"||!p.name.startsWith("."));if(f.length===c.length)r.push(n);else for(let p of f)r.push(J.join(n,p.name))}return r}async unplugPackageIfNeeded(e,r,s,a,n){return this.shouldBeUnplugged(e,r,a)?this.unplugPackage(e,s,n):s.packageFs}shouldBeUnplugged(e,r,s){return typeof s.unplugged<"u"?s.unplugged:ldt.has(e.identHash)||e.conditions!=null?!0:r.manifest.preferUnplugged!==null?r.manifest.preferUnplugged:!!(sN(e,r,s,{configuration:this.opts.project.configuration})?.skipped===!1||r.misc.extractHint)}async unplugPackage(e,r,s){let a=_D(e,{configuration:this.opts.project.configuration});return this.opts.project.disabledLocators.has(e.locatorHash)?new _f(a,{baseFs:r.packageFs,pathUtils:J}):(this.unpluggedPaths.add(a),s.holdFetchResult(this.asyncActions.set(e.locatorHash,async()=>{let n=J.join(a,r.prefixPath,".ready");await ce.existsPromise(n)||(this.opts.project.storedBuildState.delete(e.locatorHash),await ce.mkdirPromise(a,{recursive:!0}),await ce.copyPromise(a,vt.dot,{baseFs:r.packageFs,overwrite:!1}),await ce.writeFilePromise(n,""))})),new Sn(a))}getPackageInformation(e){let r=G.stringifyIdent(e),s=e.reference,a=this.packageRegistry.get(r);if(!a)throw new Error(`Assertion failed: The package information store should have been available (for ${G.prettyIdent(this.opts.project.configuration,e)})`);let n=a.get(s);if(!n)throw new Error(`Assertion failed: The package information should have been available (for ${G.prettyLocator(this.opts.project.configuration,e)})`);return n}getDiskInformation(e){let r=je.getMapWithDefault(this.packageRegistry,"@@disk"),s=hY(this.opts.project.cwd,e);return je.getFactoryWithDefault(r,s,()=>({packageLocation:s,packageDependencies:new Map,packagePeers:new Set,linkType:"SOFT",discardFromLookup:!1}))}};function hY(t,e){let r=J.relative(t,e);return r.match(/^\.{0,2}\//)||(r=`./${r}`),r.replace(/\/?$/,"/")}async function cdt(t){let e=await Ut.tryFind(t.prefixPath,{baseFs:t.packageFs})??new Ut,r=new Set(["preinstall","install","postinstall"]);for(let s of e.scripts.keys())r.has(s)||e.scripts.delete(s);return{manifest:{scripts:e.scripts,preferUnplugged:e.preferUnplugged,type:e.type},misc:{extractHint:AY(t),hasBindingGyp:pY(t)}}}Ge();Ge();Yt();var vBe=ut(Go());var Sw=class extends ft{constructor(){super(...arguments);this.all=ge.Boolean("-A,--all",!1,{description:"Unplug direct dependencies from the entire project"});this.recursive=ge.Boolean("-R,--recursive",!1,{description:"Unplug both direct and transitive dependencies"});this.json=ge.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.patterns=ge.Rest()}static{this.paths=[["unplug"]]}static{this.usage=ot.Usage({description:"force the unpacking of a list of packages",details:"\n This command will add the selectors matching the specified patterns to the list of packages that must be unplugged when installed.\n\n A package being unplugged means that instead of being referenced directly through its archive, it will be unpacked at install time in the directory configured via `pnpUnpluggedFolder`. Note that unpacking packages this way is generally not recommended because it'll make it harder to store your packages within the repository. However, it's a good approach to quickly and safely debug some packages, and can even sometimes be required depending on the context (for example when the package contains shellscripts).\n\n Running the command will set a persistent flag inside your top-level `package.json`, in the `dependenciesMeta` field. As such, to undo its effects, you'll need to revert the changes made to the manifest and run `yarn install` to apply the modification.\n\n By default, only direct dependencies from the current workspace are affected. If `-A,--all` is set, direct dependencies from the entire project are affected. Using the `-R,--recursive` flag will affect transitive dependencies as well as direct ones.\n\n This command accepts glob patterns inside the scope and name components (not the range). Make sure to escape the patterns to prevent your own shell from trying to expand them.\n ",examples:[["Unplug the lodash dependency from the active workspace","yarn unplug lodash"],["Unplug all instances of lodash referenced by any workspace","yarn unplug lodash -A"],["Unplug all instances of lodash referenced by the active workspace and its dependencies","yarn unplug lodash -R"],["Unplug all instances of lodash, anywhere","yarn unplug lodash -AR"],["Unplug one specific version of lodash","yarn unplug lodash@1.2.3"],["Unplug all packages with the `@babel` scope","yarn unplug '@babel/*'"],["Unplug all packages (only for testing, not recommended)","yarn unplug -R '*'"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Rt.find(r,this.context.cwd),n=await Kr.find(r);if(!a)throw new ar(s.cwd,this.context.cwd);if(r.get("nodeLinker")!=="pnp")throw new nt("This command can only be used if the `nodeLinker` option is set to `pnp`");await s.restoreInstallState();let c=new Set(this.patterns),f=this.patterns.map(b=>{let I=G.parseDescriptor(b),T=I.range!=="unknown"?I:G.makeDescriptor(I,"*");if(!Fr.validRange(T.range))throw new nt(`The range of the descriptor patterns must be a valid semver range (${G.prettyDescriptor(r,T)})`);return N=>{let U=G.stringifyIdent(N);return!vBe.default.isMatch(U,G.stringifyIdent(T))||N.version&&!Fr.satisfiesWithPrereleases(N.version,T.range)?!1:(c.delete(b),!0)}}),p=()=>{let b=[];for(let I of s.storedPackages.values())!s.tryWorkspaceByLocator(I)&&!G.isVirtualLocator(I)&&f.some(T=>T(I))&&b.push(I);return b},h=b=>{let I=new Set,T=[],N=(U,W)=>{if(I.has(U.locatorHash))return;let ee=!!s.tryWorkspaceByLocator(U);if(!(W>0&&!this.recursive&&ee)&&(I.add(U.locatorHash),!s.tryWorkspaceByLocator(U)&&f.some(ie=>ie(U))&&T.push(U),!(W>0&&!this.recursive)))for(let ie of U.dependencies.values()){let ue=s.storedResolutions.get(ie.descriptorHash);if(!ue)throw new Error("Assertion failed: The resolution should have been registered");let le=s.storedPackages.get(ue);if(!le)throw new Error("Assertion failed: The package should have been registered");N(le,W+1)}};for(let U of b)N(U.anchoredPackage,0);return T},E,C;if(this.all&&this.recursive?(E=p(),C="the project"):this.all?(E=h(s.workspaces),C="any workspace"):(E=h([a]),C="this workspace"),c.size>1)throw new nt(`Patterns ${he.prettyList(r,c,he.Type.CODE)} don't match any packages referenced by ${C}`);if(c.size>0)throw new nt(`Pattern ${he.prettyList(r,c,he.Type.CODE)} doesn't match any packages referenced by ${C}`);E=je.sortMap(E,b=>G.stringifyLocator(b));let S=await Ot.start({configuration:r,stdout:this.context.stdout,json:this.json},async b=>{for(let I of E){let T=I.version??"unknown",N=s.topLevelWorkspace.manifest.ensureDependencyMeta(G.makeDescriptor(I,T));N.unplugged=!0,b.reportInfo(0,`Will unpack ${G.prettyLocator(r,I)} to ${he.pretty(r,_D(I,{configuration:r}),he.Type.PATH)}`),b.reportJson({locator:G.stringifyLocator(I),version:T})}await s.topLevelWorkspace.persistManifest(),this.json||b.reportSeparator()});return S.hasErrors()?S.exitCode():await s.installWithNewReport({json:this.json,stdout:this.context.stdout},{cache:n})}};var og=t=>({cjs:J.join(t.cwd,Er.pnpCjs),data:J.join(t.cwd,Er.pnpData),esmLoader:J.join(t.cwd,Er.pnpEsmLoader)}),DBe=t=>/\s/.test(t)?JSON.stringify(t):t;async function udt(t,e,r){let s=/\s*--require\s+\S*\.pnp\.c?js\s*/g,a=/\s*--experimental-loader\s+\S*\.pnp\.loader\.mjs\s*/,n=(e.NODE_OPTIONS??"").replace(s," ").replace(a," ").trim();if(t.configuration.get("nodeLinker")!=="pnp"){e.NODE_OPTIONS=n||void 0;return}let c=og(t),f=`--require ${DBe(fe.fromPortablePath(c.cjs))}`;ce.existsSync(c.esmLoader)&&(f=`${f} --experimental-loader ${(0,SBe.pathToFileURL)(fe.fromPortablePath(c.esmLoader)).href}`),ce.existsSync(c.cjs)&&(e.NODE_OPTIONS=n?`${f} ${n}`:f)}async function fdt(t,e){let r=og(t);e(r.cjs),e(r.data),e(r.esmLoader),e(t.configuration.get("pnpUnpluggedFolder"))}var Adt={hooks:{populateYarnPaths:fdt,setupScriptEnvironment:udt},configuration:{nodeLinker:{description:'The linker used for installing Node packages, one of: "pnp", "pnpm", or "node-modules"',type:"STRING",default:"pnp"},minizip:{description:"Whether Yarn should use minizip to extract archives",type:"BOOLEAN",default:!1},winLinkType:{description:"Whether Yarn should use Windows Junctions or symlinks when creating links on Windows.",type:"STRING",values:["junctions","symlinks"],default:"junctions"},pnpMode:{description:"If 'strict', generates standard PnP maps. If 'loose', merges them with the n_m resolution.",type:"STRING",default:"strict"},pnpShebang:{description:"String to prepend to the generated PnP script",type:"STRING",default:"#!/usr/bin/env node"},pnpIgnorePatterns:{description:"Array of glob patterns; files matching them will use the classic resolution",type:"STRING",default:[],isArray:!0},pnpZipBackend:{description:"Whether to use the experimental js implementation for the ZipFS",type:"STRING",values:["libzip","js"],default:"libzip"},pnpEnableEsmLoader:{description:"If true, Yarn will generate an ESM loader (`.pnp.loader.mjs`). If this is not explicitly set Yarn tries to automatically detect whether ESM support is required.",type:"BOOLEAN",default:!1},pnpEnableInlining:{description:"If true, the PnP data will be inlined along with the generated loader",type:"BOOLEAN",default:!0},pnpFallbackMode:{description:"If true, the generated PnP loader will follow the top-level fallback rule",type:"STRING",default:"dependencies-only"},pnpUnpluggedFolder:{description:"Folder where the unplugged packages must be stored",type:"ABSOLUTE_PATH",default:"./.yarn/unplugged"}},linkers:[sg],commands:[Sw]},pdt=Adt;var FBe=ut(QBe());Yt();var wY=ut(Ie("crypto")),NBe=ut(Ie("fs")),OBe=1,Ri="node_modules",oN=".bin",LBe=".yarn-state.yml",kdt=1e3,BY=(s=>(s.CLASSIC="classic",s.HARDLINKS_LOCAL="hardlinks-local",s.HARDLINKS_GLOBAL="hardlinks-global",s))(BY||{}),jD=class{constructor(){this.installStateCache=new Map}getCustomDataKey(){return JSON.stringify({name:"NodeModulesLinker",version:3})}supportsPackage(e,r){return this.isEnabled(r)}async findPackageLocation(e,r){if(!this.isEnabled(r))throw new Error("Assertion failed: Expected the node-modules linker to be enabled");let s=r.project.tryWorkspaceByLocator(e);if(s)return s.cwd;let a=await je.getFactoryWithDefault(this.installStateCache,r.project.cwd,async()=>await CY(r.project,{unrollAliases:!0}));if(a===null)throw new nt("Couldn't find the node_modules state file - running an install might help (findPackageLocation)");let n=a.locatorMap.get(G.stringifyLocator(e));if(!n){let p=new nt(`Couldn't find ${G.prettyLocator(r.project.configuration,e)} in the currently installed node_modules map - running an install might help`);throw p.code="LOCATOR_NOT_INSTALLED",p}let c=n.locations.sort((p,h)=>p.split(J.sep).length-h.split(J.sep).length),f=J.join(r.project.configuration.startingCwd,Ri);return c.find(p=>J.contains(f,p))||n.locations[0]}async findPackageLocator(e,r){if(!this.isEnabled(r))return null;let s=await je.getFactoryWithDefault(this.installStateCache,r.project.cwd,async()=>await CY(r.project,{unrollAliases:!0}));if(s===null)return null;let{locationRoot:a,segments:n}=aN(J.resolve(e),{skipPrefix:r.project.cwd}),c=s.locationTree.get(a);if(!c)return null;let f=c.locator;for(let p of n){if(c=c.children.get(p),!c)break;f=c.locator||f}return G.parseLocator(f)}makeInstaller(e){return new IY(e)}isEnabled(e){return e.project.configuration.get("nodeLinker")==="node-modules"}},IY=class{constructor(e){this.opts=e;this.localStore=new Map;this.realLocatorChecksums=new Map;this.customData={store:new Map}}attachCustomData(e){this.customData=e}async installPackage(e,r){let s=J.resolve(r.packageFs.getRealPath(),r.prefixPath),a=this.customData.store.get(e.locatorHash);if(typeof a>"u"&&(a=await Qdt(e,r),e.linkType==="HARD"&&this.customData.store.set(e.locatorHash,a)),!G.isPackageCompatible(e,this.opts.project.configuration.getSupportedArchitectures()))return{packageLocation:null,buildRequest:null};let n=new Map,c=new Set;n.has(G.stringifyIdent(e))||n.set(G.stringifyIdent(e),e.reference);let f=e;if(G.isVirtualLocator(e)){f=G.devirtualizeLocator(e);for(let E of e.peerDependencies.values())n.set(G.stringifyIdent(E),null),c.add(G.stringifyIdent(E))}let p={packageLocation:`${fe.fromPortablePath(s)}/`,packageDependencies:n,packagePeers:c,linkType:e.linkType,discardFromLookup:r.discardFromLookup??!1};this.localStore.set(e.locatorHash,{pkg:e,customPackageData:a,dependencyMeta:this.opts.project.getDependencyMeta(e,e.version),pnpNode:p});let h=r.checksum?r.checksum.substring(r.checksum.indexOf("/")+1):null;return this.realLocatorChecksums.set(f.locatorHash,h),{packageLocation:s,buildRequest:null}}async attachInternalDependencies(e,r){let s=this.localStore.get(e.locatorHash);if(typeof s>"u")throw new Error("Assertion failed: Expected information object to have been registered");for(let[a,n]of r){let c=G.areIdentsEqual(a,n)?n.reference:[G.stringifyIdent(n),n.reference];s.pnpNode.packageDependencies.set(G.stringifyIdent(a),c)}}async attachExternalDependents(e,r){throw new Error("External dependencies haven't been implemented for the node-modules linker")}async finalizeInstall(){if(this.opts.project.configuration.get("nodeLinker")!=="node-modules")return;let e=new uo({baseFs:new $f({maxOpenFiles:80,readOnlyArchives:!0})}),r=await CY(this.opts.project),s=this.opts.project.configuration.get("nmMode");(r===null||s!==r.nmMode)&&(this.opts.project.storedBuildState.clear(),r={locatorMap:new Map,binSymlinks:new Map,locationTree:new Map,nmMode:s,mtimeMs:0});let a=new Map(this.opts.project.workspaces.map(S=>{let b=this.opts.project.configuration.get("nmHoistingLimits");try{b=je.validateEnum(xD,S.manifest.installConfig?.hoistingLimits??b)}catch{let I=G.prettyWorkspace(this.opts.project.configuration,S);this.opts.report.reportWarning(57,`${I}: Invalid 'installConfig.hoistingLimits' value. Expected one of ${Object.values(xD).join(", ")}, using default: "${b}"`)}return[S.relativeCwd,b]})),n=new Map(this.opts.project.workspaces.map(S=>{let b=this.opts.project.configuration.get("nmSelfReferences");return b=S.manifest.installConfig?.selfReferences??b,[S.relativeCwd,b]})),c={VERSIONS:{std:1},topLevel:{name:null,reference:null},getLocator:(S,b)=>Array.isArray(b)?{name:b[0],reference:b[1]}:{name:S,reference:b},getDependencyTreeRoots:()=>this.opts.project.workspaces.map(S=>{let b=S.anchoredLocator;return{name:G.stringifyIdent(b),reference:b.reference}}),getPackageInformation:S=>{let b=S.reference===null?this.opts.project.topLevelWorkspace.anchoredLocator:G.makeLocator(G.parseIdent(S.name),S.reference),I=this.localStore.get(b.locatorHash);if(typeof I>"u")throw new Error("Assertion failed: Expected the package reference to have been registered");return I.pnpNode},findPackageLocator:S=>{let b=this.opts.project.tryWorkspaceByCwd(fe.toPortablePath(S));if(b!==null){let I=b.anchoredLocator;return{name:G.stringifyIdent(I),reference:I.reference}}throw new Error("Assertion failed: Unimplemented")},resolveToUnqualified:()=>{throw new Error("Assertion failed: Unimplemented")},resolveUnqualified:()=>{throw new Error("Assertion failed: Unimplemented")},resolveRequest:()=>{throw new Error("Assertion failed: Unimplemented")},resolveVirtual:S=>fe.fromPortablePath(uo.resolveVirtual(fe.toPortablePath(S)))},{tree:f,errors:p,preserveSymlinksRequired:h}=kD(c,{pnpifyFs:!1,validateExternalSoftLinks:!0,hoistingLimitsByCwd:a,project:this.opts.project,selfReferencesByCwd:n});if(!f){for(let{messageName:S,text:b}of p)this.opts.report.reportError(S,b);return}let E=zW(f);await Mdt(r,E,{baseFs:e,project:this.opts.project,report:this.opts.report,realLocatorChecksums:this.realLocatorChecksums,loadManifest:async S=>{let b=G.parseLocator(S),I=this.localStore.get(b.locatorHash);if(typeof I>"u")throw new Error("Assertion failed: Expected the slot to exist");return I.customPackageData.manifest}});let C=[];for(let[S,b]of E.entries()){if(_Be(S))continue;let I=G.parseLocator(S),T=this.localStore.get(I.locatorHash);if(typeof T>"u")throw new Error("Assertion failed: Expected the slot to exist");if(this.opts.project.tryWorkspaceByLocator(T.pkg))continue;let N=gA.extractBuildRequest(T.pkg,T.customPackageData,T.dependencyMeta,{configuration:this.opts.project.configuration});N&&C.push({buildLocations:b.locations,locator:I,buildRequest:N})}return h&&this.opts.report.reportWarning(72,`The application uses portals and that's why ${he.pretty(this.opts.project.configuration,"--preserve-symlinks",he.Type.CODE)} Node option is required for launching it`),{customData:this.customData,records:C}}};async function Qdt(t,e){let r=await Ut.tryFind(e.prefixPath,{baseFs:e.packageFs})??new Ut,s=new Set(["preinstall","install","postinstall"]);for(let a of r.scripts.keys())s.has(a)||r.scripts.delete(a);return{manifest:{bin:r.bin,scripts:r.scripts},misc:{hasBindingGyp:gA.hasBindingGyp(e)}}}async function Rdt(t,e,r,s,{installChangedByUser:a}){let n="";n+=`# Warning: This file is automatically generated. Removing it is fine, but will `,n+=`# cause your node_modules installation to become invalidated. `,n+=` `,n+=`__metadata: `,n+=` version: ${OBe} `,n+=` nmMode: ${s.value} `;let c=Array.from(e.keys()).sort(),f=G.stringifyLocator(t.topLevelWorkspace.anchoredLocator);for(let E of c){let C=e.get(E);n+=` `,n+=`${JSON.stringify(E)}: `,n+=` locations: `;for(let S of C.locations){let b=J.contains(t.cwd,S);if(b===null)throw new Error(`Assertion failed: Expected the path to be within the project (${S})`);n+=` - ${JSON.stringify(b)} `}if(C.aliases.length>0){n+=` aliases: `;for(let S of C.aliases)n+=` - ${JSON.stringify(S)} `}if(E===f&&r.size>0){n+=` bin: `;for(let[S,b]of r){let I=J.contains(t.cwd,S);if(I===null)throw new Error(`Assertion failed: Expected the path to be within the project (${S})`);n+=` ${JSON.stringify(I)}: `;for(let[T,N]of b){let U=J.relative(J.join(S,Ri),N);n+=` ${JSON.stringify(T)}: ${JSON.stringify(U)} `}}}}let p=t.cwd,h=J.join(p,Ri,LBe);a&&await ce.removePromise(h),await ce.changeFilePromise(h,n,{automaticNewlines:!0})}async function CY(t,{unrollAliases:e=!1}={}){let r=t.cwd,s=J.join(r,Ri,LBe),a;try{a=await ce.statPromise(s)}catch{}if(!a)return null;let n=as(await ce.readFilePromise(s,"utf8"));if(n.__metadata.version>OBe)return null;let c=n.__metadata.nmMode||"classic",f=new Map,p=new Map;delete n.__metadata;for(let[h,E]of Object.entries(n)){let C=E.locations.map(b=>J.join(r,b)),S=E.bin;if(S)for(let[b,I]of Object.entries(S)){let T=J.join(r,fe.toPortablePath(b)),N=je.getMapWithDefault(p,T);for(let[U,W]of Object.entries(I))N.set(U,fe.toPortablePath([T,Ri,W].join(J.sep)))}if(f.set(h,{target:vt.dot,linkType:"HARD",locations:C,aliases:E.aliases||[]}),e&&E.aliases)for(let b of E.aliases){let{scope:I,name:T}=G.parseLocator(h),N=G.makeLocator(G.makeIdent(I,T),b),U=G.stringifyLocator(N);f.set(U,{target:vt.dot,linkType:"HARD",locations:C,aliases:[]})}}return{locatorMap:f,binSymlinks:p,locationTree:MBe(f,{skipPrefix:t.cwd}),nmMode:c,mtimeMs:a.mtimeMs}}var Pw=async(t,e)=>{if(t.split(J.sep).indexOf(Ri)<0)throw new Error(`Assertion failed: trying to remove dir that doesn't contain node_modules: ${t}`);try{let r;if(!e.innerLoop&&(r=await ce.lstatPromise(t),!r.isDirectory()&&!r.isSymbolicLink()||r.isSymbolicLink()&&!e.isWorkspaceDir)){await ce.unlinkPromise(t);return}let s=await ce.readdirPromise(t,{withFileTypes:!0});for(let n of s){let c=J.join(t,n.name);n.isDirectory()?(n.name!==Ri||e&&e.innerLoop)&&await Pw(c,{innerLoop:!0,contentsOnly:!1}):await ce.unlinkPromise(c)}let a=!e.innerLoop&&e.isWorkspaceDir&&r?.isSymbolicLink();!e.contentsOnly&&!a&&await ce.rmdirPromise(t)}catch(r){if(r.code!=="ENOENT"&&r.code!=="ENOTEMPTY")throw r}},RBe=4,aN=(t,{skipPrefix:e})=>{let r=J.contains(e,t);if(r===null)throw new Error(`Assertion failed: Writing attempt prevented to ${t} which is outside project root: ${e}`);let s=r.split(J.sep).filter(p=>p!==""),a=s.indexOf(Ri),n=s.slice(0,a).join(J.sep),c=J.join(e,n),f=s.slice(a);return{locationRoot:c,segments:f}},MBe=(t,{skipPrefix:e})=>{let r=new Map;if(t===null)return r;let s=()=>({children:new Map,linkType:"HARD"});for(let[a,n]of t.entries()){if(n.linkType==="SOFT"&&J.contains(e,n.target)!==null){let f=je.getFactoryWithDefault(r,n.target,s);f.locator=a,f.linkType=n.linkType}for(let c of n.locations){let{locationRoot:f,segments:p}=aN(c,{skipPrefix:e}),h=je.getFactoryWithDefault(r,f,s);for(let E=0;E{if(process.platform==="win32"&&r==="junctions"){let s;try{s=await ce.lstatPromise(t)}catch{}if(!s||s.isDirectory()){await ce.symlinkPromise(t,e,"junction");return}}await ce.symlinkPromise(J.relative(J.dirname(e),t),e)};async function UBe(t,e,r){let s=J.join(t,`${wY.default.randomBytes(16).toString("hex")}.tmp`);try{await ce.writeFilePromise(s,r);try{await ce.linkPromise(s,e)}catch{}}finally{await ce.unlinkPromise(s)}}async function Tdt({srcPath:t,dstPath:e,entry:r,globalHardlinksStore:s,baseFs:a,nmMode:n}){if(r.kind==="file"){if(n.value==="hardlinks-global"&&s&&r.digest){let f=J.join(s,r.digest.substring(0,2),`${r.digest.substring(2)}.dat`),p;try{let h=await ce.statPromise(f);if(h&&(!r.mtimeMs||h.mtimeMs>r.mtimeMs||h.mtimeMs{await ce.mkdirPromise(t,{recursive:!0});let f=async(E=vt.dot)=>{let C=J.join(e,E),S=await r.readdirPromise(C,{withFileTypes:!0}),b=new Map;for(let I of S){let T=J.join(E,I.name),N,U=J.join(C,I.name);if(I.isFile()){if(N={kind:"file",mode:(await r.lstatPromise(U)).mode},a.value==="hardlinks-global"){let W=await Nn.checksumFile(U,{baseFs:r,algorithm:"sha1"});N.digest=W}}else if(I.isDirectory())N={kind:"directory"};else if(I.isSymbolicLink())N={kind:"symlink",symlinkTo:await r.readlinkPromise(U)};else throw new Error(`Unsupported file type (file: ${U}, mode: 0o${await r.statSync(U).mode.toString(8).padStart(6,"0")})`);if(b.set(T,N),I.isDirectory()&&T!==Ri){let W=await f(T);for(let[ee,ie]of W)b.set(ee,ie)}}return b},p;if(a.value==="hardlinks-global"&&s&&c){let E=J.join(s,c.substring(0,2),`${c.substring(2)}.json`);try{p=new Map(Object.entries(JSON.parse(await ce.readFilePromise(E,"utf8"))))}catch{p=await f()}}else p=await f();let h=!1;for(let[E,C]of p){let S=J.join(e,E),b=J.join(t,E);if(C.kind==="directory")await ce.mkdirPromise(b,{recursive:!0});else if(C.kind==="file"){let I=C.mtimeMs;await Tdt({srcPath:S,dstPath:b,entry:C,nmMode:a,baseFs:r,globalHardlinksStore:s}),C.mtimeMs!==I&&(h=!0)}else C.kind==="symlink"&&await vY(J.resolve(J.dirname(b),C.symlinkTo),b,n)}if(a.value==="hardlinks-global"&&s&&h&&c){let E=J.join(s,c.substring(0,2),`${c.substring(2)}.json`);await ce.removePromise(E),await UBe(s,E,Buffer.from(JSON.stringify(Object.fromEntries(p))))}};function Ndt(t,e,r,s){let a=new Map,n=new Map,c=new Map,f=!1,p=(h,E,C,S,b)=>{let I=!0,T=J.join(h,E),N=new Set;if(E===Ri||E.startsWith("@")){let W;try{W=ce.statSync(T)}catch{}I=!!W,W?W.mtimeMs>r?(f=!0,N=new Set(ce.readdirSync(T))):N=new Set(C.children.get(E).children.keys()):f=!0;let ee=e.get(h);if(ee){let ie=J.join(h,Ri,oN),ue;try{ue=ce.statSync(ie)}catch{}if(!ue)f=!0;else if(ue.mtimeMs>r){f=!0;let le=new Set(ce.readdirSync(ie)),me=new Map;n.set(h,me);for(let[pe,Be]of ee)le.has(pe)&&me.set(pe,Be)}else n.set(h,ee)}}else I=b.has(E);let U=C.children.get(E);if(I){let{linkType:W,locator:ee}=U,ie={children:new Map,linkType:W,locator:ee};if(S.children.set(E,ie),ee){let ue=je.getSetWithDefault(c,ee);ue.add(T),c.set(ee,ue)}for(let ue of U.children.keys())p(T,ue,U,ie,N)}else U.locator&&s.storedBuildState.delete(G.parseLocator(U.locator).locatorHash)};for(let[h,E]of t){let{linkType:C,locator:S}=E,b={children:new Map,linkType:C,locator:S};if(a.set(h,b),S){let I=je.getSetWithDefault(c,E.locator);I.add(h),c.set(E.locator,I)}E.children.has(Ri)&&p(h,Ri,E,b,new Set)}return{locationTree:a,binSymlinks:n,locatorLocations:c,installChangedByUser:f}}function _Be(t){let e=G.parseDescriptor(t);return G.isVirtualDescriptor(e)&&(e=G.devirtualizeDescriptor(e)),e.range.startsWith("link:")}async function Odt(t,e,r,{loadManifest:s}){let a=new Map;for(let[f,{locations:p}]of t){let h=_Be(f)?null:await s(f,p[0]),E=new Map;if(h)for(let[C,S]of h.bin){let b=J.join(p[0],S);S!==""&&ce.existsSync(b)&&E.set(C,S)}a.set(f,E)}let n=new Map,c=(f,p,h)=>{let E=new Map,C=J.contains(r,f);if(h.locator&&C!==null){let S=a.get(h.locator);for(let[b,I]of S){let T=J.join(f,fe.toPortablePath(I));E.set(b,T)}for(let[b,I]of h.children){let T=J.join(f,b),N=c(T,T,I);N.size>0&&n.set(f,new Map([...n.get(f)||new Map,...N]))}}else for(let[S,b]of h.children){let I=c(J.join(f,S),p,b);for(let[T,N]of I)E.set(T,N)}return E};for(let[f,p]of e){let h=c(f,f,p);h.size>0&&n.set(f,new Map([...n.get(f)||new Map,...h]))}return n}var TBe=(t,e)=>{if(!t||!e)return t===e;let r=G.parseLocator(t);G.isVirtualLocator(r)&&(r=G.devirtualizeLocator(r));let s=G.parseLocator(e);return G.isVirtualLocator(s)&&(s=G.devirtualizeLocator(s)),G.areLocatorsEqual(r,s)};function SY(t){return J.join(t.get("globalFolder"),"store")}function Ldt(t,e){let r=s=>{let a=s.split(J.sep),n=a.lastIndexOf(Ri);if(n<0||n==a.length-1)throw new Error(`Assertion failed. Path is outside of any node_modules package ${s}`);return a.slice(0,n+(a[n+1].startsWith("@")?3:2)).join(J.sep)};for(let s of t.values())for(let[a,n]of s)e.has(r(n))&&s.delete(a)}async function Mdt(t,e,{baseFs:r,project:s,report:a,loadManifest:n,realLocatorChecksums:c}){let f=J.join(s.cwd,Ri),{locationTree:p,binSymlinks:h,locatorLocations:E,installChangedByUser:C}=Ndt(t.locationTree,t.binSymlinks,t.mtimeMs,s),S=MBe(e,{skipPrefix:s.cwd}),b=[],I=async({srcDir:Be,dstDir:Ce,linkType:g,globalHardlinksStore:we,nmMode:ye,windowsLinkType:Ae,packageChecksum:se})=>{let X=(async()=>{try{g==="SOFT"?(await ce.mkdirPromise(J.dirname(Ce),{recursive:!0}),await vY(J.resolve(Be),Ce,Ae)):await Fdt(Ce,Be,{baseFs:r,globalHardlinksStore:we,nmMode:ye,windowsLinkType:Ae,packageChecksum:se})}catch(De){throw De.message=`While persisting ${Be} -> ${Ce} ${De.message}`,De}finally{ie.tick()}})().then(()=>b.splice(b.indexOf(X),1));b.push(X),b.length>RBe&&await Promise.race(b)},T=async(Be,Ce,g)=>{let we=(async()=>{let ye=async(Ae,se,X)=>{try{X.innerLoop||await ce.mkdirPromise(se,{recursive:!0});let De=await ce.readdirPromise(Ae,{withFileTypes:!0});for(let Te of De){if(!X.innerLoop&&Te.name===oN)continue;let mt=J.join(Ae,Te.name),j=J.join(se,Te.name);Te.isDirectory()?(Te.name!==Ri||X&&X.innerLoop)&&(await ce.mkdirPromise(j,{recursive:!0}),await ye(mt,j,{...X,innerLoop:!0})):me.value==="hardlinks-local"||me.value==="hardlinks-global"?await ce.linkPromise(mt,j):await ce.copyFilePromise(mt,j,NBe.default.constants.COPYFILE_FICLONE)}}catch(De){throw X.innerLoop||(De.message=`While cloning ${Ae} -> ${se} ${De.message}`),De}finally{X.innerLoop||ie.tick()}};await ye(Be,Ce,g)})().then(()=>b.splice(b.indexOf(we),1));b.push(we),b.length>RBe&&await Promise.race(b)},N=async(Be,Ce,g)=>{if(g)for(let[we,ye]of Ce.children){let Ae=g.children.get(we);await N(J.join(Be,we),ye,Ae)}else{Ce.children.has(Ri)&&await Pw(J.join(Be,Ri),{contentsOnly:!1});let we=J.basename(Be)===Ri&&p.has(J.join(J.dirname(Be)));await Pw(Be,{contentsOnly:Be===f,isWorkspaceDir:we})}};for(let[Be,Ce]of p){let g=S.get(Be);for(let[we,ye]of Ce.children){if(we===".")continue;let Ae=g&&g.children.get(we),se=J.join(Be,we);await N(se,ye,Ae)}}let U=async(Be,Ce,g)=>{if(g){TBe(Ce.locator,g.locator)||await Pw(Be,{contentsOnly:Ce.linkType==="HARD"});for(let[we,ye]of Ce.children){let Ae=g.children.get(we);await U(J.join(Be,we),ye,Ae)}}else{Ce.children.has(Ri)&&await Pw(J.join(Be,Ri),{contentsOnly:!0});let we=J.basename(Be)===Ri&&S.has(J.join(J.dirname(Be)));await Pw(Be,{contentsOnly:Ce.linkType==="HARD",isWorkspaceDir:we})}};for(let[Be,Ce]of S){let g=p.get(Be);for(let[we,ye]of Ce.children){if(we===".")continue;let Ae=g&&g.children.get(we);await U(J.join(Be,we),ye,Ae)}}let W=new Map,ee=[];for(let[Be,Ce]of E)for(let g of Ce){let{locationRoot:we,segments:ye}=aN(g,{skipPrefix:s.cwd}),Ae=S.get(we),se=we;if(Ae){for(let X of ye)if(se=J.join(se,X),Ae=Ae.children.get(X),!Ae)break;if(Ae){let X=TBe(Ae.locator,Be),De=e.get(Ae.locator),Te=De.target,mt=se,j=De.linkType;if(X)W.has(Te)||W.set(Te,mt);else if(Te!==mt){let rt=G.parseLocator(Ae.locator);G.isVirtualLocator(rt)&&(rt=G.devirtualizeLocator(rt)),ee.push({srcDir:Te,dstDir:mt,linkType:j,realLocatorHash:rt.locatorHash})}}}}for(let[Be,{locations:Ce}]of e.entries())for(let g of Ce){let{locationRoot:we,segments:ye}=aN(g,{skipPrefix:s.cwd}),Ae=p.get(we),se=S.get(we),X=we,De=e.get(Be),Te=G.parseLocator(Be);G.isVirtualLocator(Te)&&(Te=G.devirtualizeLocator(Te));let mt=Te.locatorHash,j=De.target,rt=g;if(j===rt)continue;let Fe=De.linkType;for(let Ne of ye)se=se.children.get(Ne);if(!Ae)ee.push({srcDir:j,dstDir:rt,linkType:Fe,realLocatorHash:mt});else for(let Ne of ye)if(X=J.join(X,Ne),Ae=Ae.children.get(Ne),!Ae){ee.push({srcDir:j,dstDir:rt,linkType:Fe,realLocatorHash:mt});break}}let ie=Ao.progressViaCounter(ee.length),ue=a.reportProgress(ie),le=s.configuration.get("nmMode"),me={value:le},pe=s.configuration.get("winLinkType");try{let Be=me.value==="hardlinks-global"?`${SY(s.configuration)}/v1`:null;if(Be&&!await ce.existsPromise(Be)){await ce.mkdirpPromise(Be);for(let g=0;g<256;g++)await ce.mkdirPromise(J.join(Be,g.toString(16).padStart(2,"0")))}for(let g of ee)(g.linkType==="SOFT"||!W.has(g.srcDir))&&(W.set(g.srcDir,g.dstDir),await I({...g,globalHardlinksStore:Be,nmMode:me,windowsLinkType:pe,packageChecksum:c.get(g.realLocatorHash)||null}));await Promise.all(b),b.length=0;for(let g of ee){let we=W.get(g.srcDir);g.linkType!=="SOFT"&&g.dstDir!==we&&await T(we,g.dstDir,{nmMode:me})}await Promise.all(b),await ce.mkdirPromise(f,{recursive:!0}),Ldt(h,new Set(ee.map(g=>g.dstDir)));let Ce=await Odt(e,S,s.cwd,{loadManifest:n});await Udt(h,Ce,s.cwd,pe),await Rdt(s,e,Ce,me,{installChangedByUser:C}),le=="hardlinks-global"&&me.value=="hardlinks-local"&&a.reportWarningOnce(74,"'nmMode' has been downgraded to 'hardlinks-local' due to global cache and install folder being on different devices")}finally{ue.stop()}}async function Udt(t,e,r,s){for(let a of t.keys()){if(J.contains(r,a)===null)throw new Error(`Assertion failed. Excepted bin symlink location to be inside project dir, instead it was at ${a}`);if(!e.has(a)){let n=J.join(a,Ri,oN);await ce.removePromise(n)}}for(let[a,n]of e){if(J.contains(r,a)===null)throw new Error(`Assertion failed. Excepted bin symlink location to be inside project dir, instead it was at ${a}`);let c=J.join(a,Ri,oN),f=t.get(a)||new Map;await ce.mkdirPromise(c,{recursive:!0});for(let p of f.keys())n.has(p)||(await ce.removePromise(J.join(c,p)),process.platform==="win32"&&await ce.removePromise(J.join(c,`${p}.cmd`)));for(let[p,h]of n){let E=f.get(p),C=J.join(c,p);E!==h&&(process.platform==="win32"?await(0,FBe.default)(fe.fromPortablePath(h),fe.fromPortablePath(C),{createPwshFile:!1}):(await ce.removePromise(C),await vY(h,C,s),J.contains(r,await ce.realpathPromise(h))!==null&&await ce.chmodPromise(h,493)))}}}Ge();Dt();eA();var GD=class extends sg{constructor(){super(...arguments);this.mode="loose"}makeInstaller(r){return new DY(r)}},DY=class extends Gm{constructor(){super(...arguments);this.mode="loose"}async transformPnpSettings(r){let s=new uo({baseFs:new $f({maxOpenFiles:80,readOnlyArchives:!0})}),a=IBe(r,this.opts.project.cwd,s),{tree:n,errors:c}=kD(a,{pnpifyFs:!1,project:this.opts.project});if(!n){for(let{messageName:C,text:S}of c)this.opts.report.reportError(C,S);return}let f=new Map;r.fallbackPool=f;let p=(C,S)=>{let b=G.parseLocator(S.locator),I=G.stringifyIdent(b);I===C?f.set(C,b.reference):f.set(C,[I,b.reference])},h=J.join(this.opts.project.cwd,Er.nodeModules),E=n.get(h);if(!(typeof E>"u")){if("target"in E)throw new Error("Assertion failed: Expected the root junction point to be a directory");for(let C of E.dirList){let S=J.join(h,C),b=n.get(S);if(typeof b>"u")throw new Error("Assertion failed: Expected the child to have been registered");if("target"in b)p(C,b);else for(let I of b.dirList){let T=J.join(S,I),N=n.get(T);if(typeof N>"u")throw new Error("Assertion failed: Expected the subchild to have been registered");if("target"in N)p(`${C}/${I}`,N);else throw new Error("Assertion failed: Expected the leaf junction to be a package")}}}}};var _dt={hooks:{cleanGlobalArtifacts:async t=>{let e=SY(t);await ce.removePromise(e)}},configuration:{nmHoistingLimits:{description:"Prevents packages to be hoisted past specific levels",type:"STRING",values:["workspaces","dependencies","none"],default:"none"},nmMode:{description:"Defines in which measure Yarn must use hardlinks and symlinks when generated `node_modules` directories.",type:"STRING",values:["classic","hardlinks-local","hardlinks-global"],default:"classic"},nmSelfReferences:{description:"Defines whether the linker should generate self-referencing symlinks for workspaces.",type:"BOOLEAN",default:!0}},linkers:[jD,GD]},Hdt=_dt;var PK={};Vt(PK,{NpmHttpFetcher:()=>VD,NpmRemapResolver:()=>JD,NpmSemverFetcher:()=>oh,NpmSemverResolver:()=>KD,NpmTagResolver:()=>zD,default:()=>rPt,npmConfigUtils:()=>hi,npmHttpUtils:()=>an,npmPublishUtils:()=>v1});Ge();var JBe=ut(Ai());var oi="npm:";var an={};Vt(an,{AuthType:()=>WBe,customPackageError:()=>qm,del:()=>imt,get:()=>Wm,getIdentUrl:()=>WD,getPackageMetadata:()=>Qw,handleInvalidAuthenticationError:()=>ag,post:()=>rmt,put:()=>nmt});Ge();Ge();Dt();var kY=ut(Vv());ql();var qBe=ut(Ai());var hi={};Vt(hi,{RegistryType:()=>jBe,getAuditRegistry:()=>jdt,getAuthConfiguration:()=>xY,getDefaultRegistry:()=>qD,getPublishRegistry:()=>Gdt,getRegistryConfiguration:()=>GBe,getScopeConfiguration:()=>bY,getScopeRegistry:()=>bw,isPackageApproved:()=>xw,normalizeRegistry:()=>Jc});Ge();var HBe=ut(Go()),jBe=(s=>(s.AUDIT_REGISTRY="npmAuditRegistry",s.FETCH_REGISTRY="npmRegistryServer",s.PUBLISH_REGISTRY="npmPublishRegistry",s))(jBe||{});function Jc(t){return t.replace(/\/$/,"")}function jdt({configuration:t}){return qD({configuration:t,type:"npmAuditRegistry"})}function Gdt(t,{configuration:e}){return t.publishConfig?.registry?Jc(t.publishConfig.registry):t.name?bw(t.name.scope,{configuration:e,type:"npmPublishRegistry"}):qD({configuration:e,type:"npmPublishRegistry"})}function bw(t,{configuration:e,type:r="npmRegistryServer"}){let s=bY(t,{configuration:e});if(s===null)return qD({configuration:e,type:r});let a=s.get(r);return a===null?qD({configuration:e,type:r}):Jc(a)}function qD({configuration:t,type:e="npmRegistryServer"}){let r=t.get(e);return Jc(r!==null?r:t.get("npmRegistryServer"))}function GBe(t,{configuration:e}){let r=e.get("npmRegistries"),s=Jc(t),a=r.get(s);if(typeof a<"u")return a;let n=r.get(s.replace(/^[a-z]+:/,""));return typeof n<"u"?n:null}var qdt=new Map([["npmRegistryServer","https://npm.jsr.io/"]]);function bY(t,{configuration:e}){if(t===null)return null;let s=e.get("npmScopes").get(t);return s||(t==="jsr"?qdt:null)}function xY(t,{configuration:e,ident:r}){let s=r&&bY(r.scope,{configuration:e});return s?.get("npmAuthIdent")||s?.get("npmAuthToken")?s:GBe(t,{configuration:e})||e}function Wdt({configuration:t,version:e,publishTimes:r}){let s=t.get("npmMinimalAgeGate");if(s){let a=r?.[e];if(typeof a>"u"||(new Date().getTime()-new Date(a).getTime())/60/1e3Ydt(e,r,s))}function xw(t){return!Wdt(t)||Vdt(t)}var WBe=(a=>(a[a.NO_AUTH=0]="NO_AUTH",a[a.BEST_EFFORT=1]="BEST_EFFORT",a[a.CONFIGURATION=2]="CONFIGURATION",a[a.ALWAYS_AUTH=3]="ALWAYS_AUTH",a))(WBe||{});async function ag(t,{attemptedAs:e,registry:r,headers:s,configuration:a}){if(cN(t))throw new jt(41,"Invalid OTP token");if(t.originalError?.name==="HTTPError"&&t.originalError?.response.statusCode===401)throw new jt(41,`Invalid authentication (${typeof e!="string"?`as ${await omt(r,s,{configuration:a})}`:`attempted as ${e}`})`)}function qm(t,e){let r=t.response?.statusCode;return r?r===404?"Package not found":r>=500&&r<600?`The registry appears to be down (using a ${he.applyHyperlink(e,"local cache","https://yarnpkg.com/advanced/lexicon#local-cache")} might have protected you against such outages)`:null:null}function WD(t){return t.scope?`/@${t.scope}%2f${t.name}`:`/${t.name}`}var YBe=new Map,Jdt=new Map;async function Kdt(t){return await je.getFactoryWithDefault(YBe,t,async()=>{let e=null;try{e=await ce.readJsonPromise(t)}catch{}return e})}async function zdt(t,e,{configuration:r,cached:s,registry:a,headers:n,version:c,...f}){return await je.getFactoryWithDefault(Jdt,t,async()=>await Wm(WD(e),{...f,customErrorMessage:qm,configuration:r,registry:a,ident:e,headers:{...n,"If-None-Match":s?.etag,"If-Modified-Since":s?.lastModified},wrapNetworkRequest:async p=>async()=>{let h=await p();if(h.statusCode===304){if(s===null)throw new Error("Assertion failed: cachedMetadata should not be null");return{...h,body:s.metadata}}let E=Xdt(JSON.parse(h.body.toString())),C={metadata:E,etag:h.headers.etag,lastModified:h.headers["last-modified"]};return YBe.set(t,Promise.resolve(C)),Promise.resolve().then(async()=>{let S=`${t}-${process.pid}.tmp`;await ce.mkdirPromise(J.dirname(S),{recursive:!0}),await ce.writeJsonPromise(S,C,{compact:!0}),await ce.renamePromise(S,t)}).catch(()=>{}),{...h,body:E}}}))}function Zdt(t){return t.scope!==null?`@${t.scope}-${t.name}-${t.scope.length}`:t.name}async function Qw(t,{cache:e,project:r,registry:s,headers:a,version:n,...c}){let{configuration:f}=r;s=YD(f,{ident:t,registry:s});let p=emt(f,s),h=J.join(p,`${Zdt(t)}.json`),E=null;if(!r.lockfileNeedsRefresh&&(E=await Kdt(h),E)){if(typeof n<"u"&&typeof E.metadata.versions[n]<"u")return E.metadata;if(f.get("enableOfflineMode")){let C=structuredClone(E.metadata),S=new Set;if(e){for(let I of Object.keys(C.versions)){let T=G.makeLocator(t,`npm:${I}`),N=e.getLocatorMirrorPath(T);(!N||!ce.existsSync(N))&&(delete C.versions[I],S.add(I))}let b=C["dist-tags"].latest;if(S.has(b)){let I=Object.keys(E.metadata.versions).sort(qBe.default.compare),T=I.indexOf(b);for(;S.has(I[T])&&T>=0;)T-=1;T>=0?C["dist-tags"].latest=I[T]:delete C["dist-tags"].latest}}return C}}return await zdt(h,t,{...c,configuration:f,cached:E,registry:s,headers:a,version:n})}var VBe=["name","dist.tarball","bin","scripts","os","cpu","libc","dependencies","dependenciesMeta","optionalDependencies","peerDependencies","peerDependenciesMeta","deprecated"];function Xdt(t){return{"dist-tags":t["dist-tags"],versions:Object.fromEntries(Object.entries(t.versions).map(([e,r])=>[e,Kd(r,VBe)])),time:t.time}}var $dt=Nn.makeHash("time",...VBe).slice(0,6);function emt(t,e){let r=tmt(t),s=new URL(e);return J.join(r,$dt,s.hostname)}function tmt(t){return J.join(t.get("globalFolder"),"metadata/npm")}async function Wm(t,{configuration:e,headers:r,ident:s,authType:a,allowOidc:n,registry:c,...f}){c=YD(e,{ident:s,registry:c}),s&&s.scope&&typeof a>"u"&&(a=1);let p=await lN(c,{authType:a,allowOidc:n,configuration:e,ident:s});p&&(r={...r,authorization:p});try{return await ln.get(t.charAt(0)==="/"?`${c}${t}`:t,{configuration:e,headers:r,...f})}catch(h){throw await ag(h,{registry:c,configuration:e,headers:r}),h}}async function rmt(t,e,{attemptedAs:r,configuration:s,headers:a,ident:n,authType:c=3,allowOidc:f,registry:p,otp:h,...E}){p=YD(s,{ident:n,registry:p});let C=await lN(p,{authType:c,allowOidc:f,configuration:s,ident:n});C&&(a={...a,authorization:C}),h&&(a={...a,...kw(h)});try{return await ln.post(p+t,e,{configuration:s,headers:a,...E})}catch(S){if(!cN(S)||h)throw await ag(S,{attemptedAs:r,registry:p,configuration:s,headers:a}),S;h=await QY(S,{configuration:s});let b={...a,...kw(h)};try{return await ln.post(`${p}${t}`,e,{configuration:s,headers:b,...E})}catch(I){throw await ag(I,{attemptedAs:r,registry:p,configuration:s,headers:a}),I}}}async function nmt(t,e,{attemptedAs:r,configuration:s,headers:a,ident:n,authType:c=3,allowOidc:f,registry:p,otp:h,...E}){p=YD(s,{ident:n,registry:p});let C=await lN(p,{authType:c,allowOidc:f,configuration:s,ident:n});C&&(a={...a,authorization:C}),h&&(a={...a,...kw(h)});try{return await ln.put(p+t,e,{configuration:s,headers:a,...E})}catch(S){if(!cN(S))throw await ag(S,{attemptedAs:r,registry:p,configuration:s,headers:a}),S;h=await QY(S,{configuration:s});let b={...a,...kw(h)};try{return await ln.put(`${p}${t}`,e,{configuration:s,headers:b,...E})}catch(I){throw await ag(I,{attemptedAs:r,registry:p,configuration:s,headers:a}),I}}}async function imt(t,{attemptedAs:e,configuration:r,headers:s,ident:a,authType:n=3,allowOidc:c,registry:f,otp:p,...h}){f=YD(r,{ident:a,registry:f});let E=await lN(f,{authType:n,allowOidc:c,configuration:r,ident:a});E&&(s={...s,authorization:E}),p&&(s={...s,...kw(p)});try{return await ln.del(f+t,{configuration:r,headers:s,...h})}catch(C){if(!cN(C)||p)throw await ag(C,{attemptedAs:e,registry:f,configuration:r,headers:s}),C;p=await QY(C,{configuration:r});let S={...s,...kw(p)};try{return await ln.del(`${f}${t}`,{configuration:r,headers:S,...h})}catch(b){throw await ag(b,{attemptedAs:e,registry:f,configuration:r,headers:s}),b}}}function YD(t,{ident:e,registry:r}){if(typeof r>"u"&&e)return bw(e.scope,{configuration:t});if(typeof r!="string")throw new Error("Assertion failed: The registry should be a string");return Jc(r)}async function lN(t,{authType:e=2,allowOidc:r=!1,configuration:s,ident:a}){let n=xY(t,{configuration:s,ident:a}),c=smt(n,e);if(!c)return null;let f=await s.reduceHook(p=>p.getNpmAuthenticationHeader,void 0,t,{configuration:s,ident:a});if(f)return f;if(n.get("npmAuthToken"))return`Bearer ${n.get("npmAuthToken")}`;if(n.get("npmAuthIdent")){let p=n.get("npmAuthIdent");return p.includes(":")?`Basic ${Buffer.from(p).toString("base64")}`:`Basic ${p}`}if(r&&a){let p=await amt(t,{configuration:s,ident:a});if(p)return`Bearer ${p}`}if(c&&e!==1)throw new jt(33,"No authentication configured for request");return null}function smt(t,e){switch(e){case 2:return t.get("npmAlwaysAuth");case 1:case 3:return!0;case 0:return!1;default:throw new Error("Unreachable")}}async function omt(t,e,{configuration:r}){if(typeof e>"u"||typeof e.authorization>"u")return"an anonymous user";try{return(await ln.get(new URL(`${t}/-/whoami`).href,{configuration:r,headers:e,jsonResponse:!0})).username??"an unknown user"}catch{return"an unknown user"}}async function QY(t,{configuration:e}){let r=t.originalError?.response.headers["npm-notice"];if(r&&(await Ot.start({configuration:e,stdout:process.stdout,includeFooter:!1},async a=>{if(a.reportInfo(0,r.replace(/(https?:\/\/\S+)/g,he.pretty(e,"$1",he.Type.URL))),!process.env.YARN_IS_TEST_ENV){let n=r.match(/open (https?:\/\/\S+)/i);if(n&&fs.openUrl){let{openNow:c}=await(0,kY.prompt)({type:"confirm",name:"openNow",message:"Do you want to try to open this url now?",required:!0,initial:!0,onCancel:()=>process.exit(130)});c&&(await fs.openUrl(n[1])||(a.reportSeparator(),a.reportWarning(0,"We failed to automatically open the url; you'll have to open it yourself in your browser of choice.")))}}}),process.stdout.write(` `)),process.env.YARN_IS_TEST_ENV)return process.env.YARN_INJECT_NPM_2FA_TOKEN||"";let{otp:s}=await(0,kY.prompt)({type:"password",name:"otp",message:"One-time password:",required:!0,onCancel:()=>process.exit(130)});return process.stdout.write(` `),s}function cN(t){if(t.originalError?.name!=="HTTPError")return!1;try{return(t.originalError?.response.headers["www-authenticate"].split(/,\s*/).map(r=>r.toLowerCase())).includes("otp")}catch{return!1}}function kw(t){return{"npm-otp":t}}async function amt(t,{configuration:e,ident:r}){let s=null;if(process.env.GITLAB)s=process.env.NPM_ID_TOKEN||null;else if(process.env.GITHUB_ACTIONS){if(!(process.env.ACTIONS_ID_TOKEN_REQUEST_URL&&process.env.ACTIONS_ID_TOKEN_REQUEST_TOKEN))return null;let a=`npm:${new URL(t).host.replace("registry.yarnpkg.com","registry.npmjs.org").replace("yarn.npmjs.org","registry.npmjs.org")}`,n=new URL(process.env.ACTIONS_ID_TOKEN_REQUEST_URL);n.searchParams.append("audience",a),s=(await ln.get(n.href,{configuration:e,jsonResponse:!0,headers:{Authorization:`Bearer ${process.env.ACTIONS_ID_TOKEN_REQUEST_TOKEN}`}})).value}if(!s)return null;try{return(await ln.post(`${t}/-/npm/v1/oidc/token/exchange/package${WD(r)}`,null,{configuration:e,jsonResponse:!0,headers:{Authorization:`Bearer ${s}`}})).token||null}catch{}return null}var VD=class{supports(e,r){if(!e.reference.startsWith(oi))return!1;let{selector:s,params:a}=G.parseRange(e.reference);return!(!JBe.default.valid(s)||a===null||typeof a.__archiveUrl!="string")}getLocalPath(e,r){return null}async fetch(e,r){let s=r.checksums.get(e.locatorHash)||null,[a,n,c]=await r.cache.fetchPackageFromCache(e,s,{onHit:()=>r.report.reportCacheHit(e),onMiss:()=>r.report.reportCacheMiss(e,`${G.prettyLocator(r.project.configuration,e)} can't be found in the cache and will be fetched from the remote server`),loader:()=>this.fetchFromNetwork(e,r),...r.cacheOptions});return{packageFs:a,releaseFs:n,prefixPath:G.getIdentVendorPath(e),checksum:c}}async fetchFromNetwork(e,r){let{params:s}=G.parseRange(e.reference);if(s===null||typeof s.__archiveUrl!="string")throw new Error("Assertion failed: The archiveUrl querystring parameter should have been available");let a=await Wm(s.__archiveUrl,{customErrorMessage:qm,configuration:r.project.configuration,ident:e});return await ps.convertToZip(a,{configuration:r.project.configuration,prefixPath:G.getIdentVendorPath(e),stripComponents:1})}};Ge();var JD=class{supportsDescriptor(e,r){return!(!e.range.startsWith(oi)||!G.tryParseDescriptor(e.range.slice(oi.length),!0))}supportsLocator(e,r){return!1}shouldPersistResolution(e,r){throw new Error("Unreachable")}bindDescriptor(e,r,s){return e}getResolutionDependencies(e,r){let s=r.project.configuration.normalizeDependency(G.parseDescriptor(e.range.slice(oi.length),!0));return r.resolver.getResolutionDependencies(s,r)}async getCandidates(e,r,s){let a=s.project.configuration.normalizeDependency(G.parseDescriptor(e.range.slice(oi.length),!0));return await s.resolver.getCandidates(a,r,s)}async getSatisfying(e,r,s,a){let n=a.project.configuration.normalizeDependency(G.parseDescriptor(e.range.slice(oi.length),!0));return a.resolver.getSatisfying(n,r,s,a)}resolve(e,r){throw new Error("Unreachable")}};Ge();Ge();var KBe=ut(Ai());var oh=class t{supports(e,r){if(!e.reference.startsWith(oi))return!1;let s=new URL(e.reference);return!(!KBe.default.valid(s.pathname)||s.searchParams.has("__archiveUrl"))}getLocalPath(e,r){return null}async fetch(e,r){let s=r.checksums.get(e.locatorHash)||null,[a,n,c]=await r.cache.fetchPackageFromCache(e,s,{onHit:()=>r.report.reportCacheHit(e),onMiss:()=>r.report.reportCacheMiss(e,`${G.prettyLocator(r.project.configuration,e)} can't be found in the cache and will be fetched from the remote registry`),loader:()=>this.fetchFromNetwork(e,r),...r.cacheOptions});return{packageFs:a,releaseFs:n,prefixPath:G.getIdentVendorPath(e),checksum:c}}async fetchFromNetwork(e,r){let s;try{s=await Wm(t.getLocatorUrl(e),{customErrorMessage:qm,configuration:r.project.configuration,ident:e})}catch{s=await Wm(t.getLocatorUrl(e).replace(/%2f/g,"/"),{customErrorMessage:qm,configuration:r.project.configuration,ident:e})}return await ps.convertToZip(s,{configuration:r.project.configuration,prefixPath:G.getIdentVendorPath(e),stripComponents:1})}static isConventionalTarballUrl(e,r,{configuration:s}){let a=bw(e.scope,{configuration:s}),n=t.getLocatorUrl(e);return r=r.replace(/^https?:(\/\/(?:[^/]+\.)?npmjs.org(?:$|\/))/,"https:$1"),a=a.replace(/^https:\/\/registry\.npmjs\.org($|\/)/,"https://registry.yarnpkg.com$1"),r=r.replace(/^https:\/\/registry\.npmjs\.org($|\/)/,"https://registry.yarnpkg.com$1"),r===a+n||r===a+n.replace(/%2f/g,"/")}static getLocatorUrl(e){let r=Fr.clean(e.reference.slice(oi.length));if(r===null)throw new jt(10,"The npm semver resolver got selected, but the version isn't semver");return`${WD(e)}/-/${e.name}-${r}.tgz`}};Ge();Ge();Ge();var RY=ut(Ai());var uN=G.makeIdent(null,"node-gyp"),lmt=/\b(node-gyp|prebuild-install)\b/,KD=class{supportsDescriptor(e,r){return e.range.startsWith(oi)?!!Fr.validRange(e.range.slice(oi.length)):!1}supportsLocator(e,r){if(!e.reference.startsWith(oi))return!1;let{selector:s}=G.parseRange(e.reference);return!!RY.default.valid(s)}shouldPersistResolution(e,r){return!0}bindDescriptor(e,r,s){return e}getResolutionDependencies(e,r){return{}}async getCandidates(e,r,s){let a=Fr.validRange(e.range.slice(oi.length));if(a===null)throw new Error(`Expected a valid range, got ${e.range.slice(oi.length)}`);let n=await Qw(e,{cache:s.fetchOptions?.cache,project:s.project,version:RY.default.valid(a.raw)?a.raw:void 0}),c=je.mapAndFilter(Object.keys(n.versions),h=>{try{let E=new Fr.SemVer(h);if(a.test(E))return xw({configuration:s.project.configuration,ident:e,version:h,publishTimes:n.time})?E:je.mapAndFilter.skip}catch{}return je.mapAndFilter.skip}),f=c.filter(h=>!n.versions[h.raw].deprecated),p=f.length>0?f:c;return p.sort((h,E)=>-h.compare(E)),p.map(h=>{let E=G.makeLocator(e,`${oi}${h.raw}`),C=n.versions[h.raw].dist.tarball;return oh.isConventionalTarballUrl(E,C,{configuration:s.project.configuration})?E:G.bindLocator(E,{__archiveUrl:C})})}async getSatisfying(e,r,s,a){let n=Fr.validRange(e.range.slice(oi.length));if(n===null)throw new Error(`Expected a valid range, got ${e.range.slice(oi.length)}`);return{locators:je.mapAndFilter(s,p=>{if(p.identHash!==e.identHash)return je.mapAndFilter.skip;let h=G.tryParseRange(p.reference,{requireProtocol:oi});if(!h)return je.mapAndFilter.skip;let E=new Fr.SemVer(h.selector);return n.test(E)?{locator:p,version:E}:je.mapAndFilter.skip}).sort((p,h)=>-p.version.compare(h.version)).map(({locator:p})=>p),sorted:!0}}async resolve(e,r){let{selector:s}=G.parseRange(e.reference),a=Fr.clean(s);if(a===null)throw new jt(10,"The npm semver resolver got selected, but the version isn't semver");let n=await Qw(e,{cache:r.fetchOptions?.cache,project:r.project,version:a});if(!Object.hasOwn(n,"versions"))throw new jt(15,'Registry returned invalid data for - missing "versions" field');if(!Object.hasOwn(n.versions,a))throw new jt(16,`Registry failed to return reference "${a}"`);let c=new Ut;if(c.load(n.versions[a]),!c.dependencies.has(uN.identHash)&&!c.peerDependencies.has(uN.identHash)){for(let f of c.scripts.values())if(f.match(lmt)){c.dependencies.set(uN.identHash,G.makeDescriptor(uN,"latest"));break}}return{...e,version:a,languageName:"node",linkType:"HARD",conditions:c.getConditions(),dependencies:r.project.configuration.normalizeDependencyMap(c.dependencies),peerDependencies:c.peerDependencies,dependenciesMeta:c.dependenciesMeta,peerDependenciesMeta:c.peerDependenciesMeta,bin:c.bin}}};Ge();Ge();var fN=ut(Ai());var zD=class{supportsDescriptor(e,r){return!(!e.range.startsWith(oi)||!Mp.test(e.range.slice(oi.length)))}supportsLocator(e,r){return!1}shouldPersistResolution(e,r){throw new Error("Unreachable")}bindDescriptor(e,r,s){return e}getResolutionDependencies(e,r){return{}}async getCandidates(e,r,s){let a=e.range.slice(oi.length),n=await Qw(e,{cache:s.fetchOptions?.cache,project:s.project});if(!Object.hasOwn(n,"dist-tags"))throw new jt(15,'Registry returned invalid data - missing "dist-tags" field');let c=n["dist-tags"];if(!Object.hasOwn(c,a))throw new jt(16,`Registry failed to return tag "${a}"`);let f=Object.keys(n.versions),p=n.time,h=c[a];if(a==="latest"&&!xw({configuration:s.project.configuration,ident:e,version:h,publishTimes:p})){let S=h.includes("-"),b=fN.default.rsort(f).find(I=>fN.default.lt(I,h)&&(S||!I.includes("-"))&&xw({configuration:s.project.configuration,ident:e,version:I,publishTimes:p}));if(!b)throw new jt(16,`The version for tag "${a}" is quarantined, and no lower version is available`);h=b}let E=G.makeLocator(e,`${oi}${h}`),C=n.versions[h].dist.tarball;return oh.isConventionalTarballUrl(E,C,{configuration:s.project.configuration})?[E]:[G.bindLocator(E,{__archiveUrl:C})]}async getSatisfying(e,r,s,a){let n=[];for(let c of s){if(c.identHash!==e.identHash)continue;let f=G.tryParseRange(c.reference,{requireProtocol:oi});if(!(!f||!fN.default.valid(f.selector))){if(f.params?.__archiveUrl){let p=G.makeRange({protocol:oi,selector:f.selector,source:null,params:null}),[h]=await a.resolver.getCandidates(G.makeDescriptor(e,p),r,a);if(c.reference!==h.reference)continue}n.push(c)}}return{locators:n,sorted:!1}}async resolve(e,r){throw new Error("Unreachable")}};var v1={};Vt(v1,{getGitHead:()=>$Dt,getPublishAccess:()=>Uxe,getReadmeContent:()=>_xe,makePublishBody:()=>XDt});Ge();Ge();Dt();var IV={};Vt(IV,{PackCommand:()=>jw,default:()=>HEt,packUtils:()=>yA});Ge();Ge();Ge();Dt();Yt();var yA={};Vt(yA,{genPackList:()=>FN,genPackStream:()=>EV,genPackageManifest:()=>DSe,hasPackScripts:()=>mV,prepareForPack:()=>yV});Ge();Dt();var dV=ut(Go()),vSe=ut(ISe()),SSe=Ie("zlib"),kEt=["/package.json","/readme","/readme.*","/license","/license.*","/licence","/licence.*","/changelog","/changelog.*"],QEt=["/package.tgz",".github",".git",".hg","node_modules",".npmignore",".gitignore",".#*",".DS_Store"];async function mV(t){return!!(In.hasWorkspaceScript(t,"prepack")||In.hasWorkspaceScript(t,"postpack"))}async function yV(t,{report:e},r){await In.maybeExecuteWorkspaceLifecycleScript(t,"prepack",{report:e});try{let s=J.join(t.cwd,Ut.fileName);await ce.existsPromise(s)&&await t.manifest.loadFile(s,{baseFs:ce}),await r()}finally{await In.maybeExecuteWorkspaceLifecycleScript(t,"postpack",{report:e})}}async function EV(t,e){typeof e>"u"&&(e=await FN(t));let r=new Set;for(let n of t.manifest.publishConfig?.executableFiles??new Set)r.add(J.normalize(n));for(let n of t.manifest.bin.values())r.add(J.normalize(n));let s=vSe.default.pack();process.nextTick(async()=>{for(let n of e){let c=J.normalize(n),f=J.resolve(t.cwd,c),p=J.join("package",c),h=await ce.lstatPromise(f),E={name:p,mtime:new Date(fi.SAFE_TIME*1e3)},C=r.has(c)?493:420,S,b,I=new Promise((N,U)=>{S=N,b=U}),T=N=>{N?b(N):S()};if(h.isFile()){let N;c==="package.json"?N=Buffer.from(JSON.stringify(await DSe(t),null,2)):N=await ce.readFilePromise(f),s.entry({...E,mode:C,type:"file"},N,T)}else h.isSymbolicLink()?s.entry({...E,mode:C,type:"symlink",linkname:await ce.readlinkPromise(f)},T):T(new Error(`Unsupported file type ${h.mode} for ${fe.fromPortablePath(c)}`));await I}s.finalize()});let a=(0,SSe.createGzip)();return s.pipe(a),a}async function DSe(t){let e=JSON.parse(JSON.stringify(t.manifest.raw));return await t.project.configuration.triggerHook(r=>r.beforeWorkspacePacking,t,e),e}async function FN(t){let e=t.project,r=e.configuration,s={accept:[],reject:[]};for(let C of QEt)s.reject.push(C);for(let C of kEt)s.accept.push(C);s.reject.push(r.get("rcFilename"));let a=C=>{if(C===null||!C.startsWith(`${t.cwd}/`))return;let S=J.relative(t.cwd,C),b=J.resolve(vt.root,S);s.reject.push(b)};a(J.resolve(e.cwd,Er.lockfile)),a(r.get("cacheFolder")),a(r.get("globalFolder")),a(r.get("installStatePath")),a(r.get("virtualFolder")),a(r.get("yarnPath")),await r.triggerHook(C=>C.populateYarnPaths,e,C=>{a(C)});for(let C of e.workspaces){let S=J.relative(t.cwd,C.cwd);S!==""&&!S.match(/^(\.\.)?\//)&&s.reject.push(`/${S}`)}let n={accept:[],reject:[]},c=t.manifest.publishConfig?.main??t.manifest.main,f=t.manifest.publishConfig?.module??t.manifest.module,p=t.manifest.publishConfig?.browser??t.manifest.browser,h=t.manifest.publishConfig?.bin??t.manifest.bin;c!=null&&n.accept.push(J.resolve(vt.root,c)),f!=null&&n.accept.push(J.resolve(vt.root,f)),typeof p=="string"&&n.accept.push(J.resolve(vt.root,p));for(let C of h.values())n.accept.push(J.resolve(vt.root,C));if(p instanceof Map)for(let[C,S]of p.entries())n.accept.push(J.resolve(vt.root,C)),typeof S=="string"&&n.accept.push(J.resolve(vt.root,S));let E=t.manifest.files!==null;if(E){n.reject.push("/*");for(let C of t.manifest.files)PSe(n.accept,C,{cwd:vt.root})}return await REt(t.cwd,{hasExplicitFileList:E,globalList:s,ignoreList:n})}async function REt(t,{hasExplicitFileList:e,globalList:r,ignoreList:s}){let a=[],n=new Hf(t),c=[[vt.root,[s]]];for(;c.length>0;){let[f,p]=c.pop(),h=await n.lstatPromise(f);if(!wSe(f,{globalList:r,ignoreLists:h.isDirectory()?null:p}))if(h.isDirectory()){let E=await n.readdirPromise(f),C=!1,S=!1;if(!e||f!==vt.root)for(let T of E)C=C||T===".gitignore",S=S||T===".npmignore";let b=S?await CSe(n,f,".npmignore"):C?await CSe(n,f,".gitignore"):null,I=b!==null?[b].concat(p):p;wSe(f,{globalList:r,ignoreLists:p})&&(I=[...p,{accept:[],reject:["**/*"]}]);for(let T of E)c.push([J.resolve(f,T),I])}else(h.isFile()||h.isSymbolicLink())&&a.push(J.relative(vt.root,f))}return a.sort()}async function CSe(t,e,r){let s={accept:[],reject:[]},a=await t.readFilePromise(J.join(e,r),"utf8");for(let n of a.split(/\n/g))PSe(s.reject,n,{cwd:e});return s}function TEt(t,{cwd:e}){let r=t[0]==="!";return r&&(t=t.slice(1)),t.match(/\.{0,1}\//)&&(t=J.resolve(e,t)),r&&(t=`!${t}`),t}function PSe(t,e,{cwd:r}){let s=e.trim();s===""||s[0]==="#"||t.push(TEt(s,{cwd:r}))}function wSe(t,{globalList:e,ignoreLists:r}){let s=TN(t,e.accept);if(s!==0)return s===2;let a=TN(t,e.reject);if(a!==0)return a===1;if(r!==null)for(let n of r){let c=TN(t,n.accept);if(c!==0)return c===2;let f=TN(t,n.reject);if(f!==0)return f===1}return!1}function TN(t,e){let r=e,s=[];for(let a=0;a{await yV(a,{report:p},async()=>{p.reportJson({base:fe.fromPortablePath(a.cwd)});let h=await FN(a);for(let E of h)p.reportInfo(null,fe.fromPortablePath(E)),p.reportJson({location:fe.fromPortablePath(E)});if(!this.dryRun){let E=await EV(a,h);await ce.mkdirPromise(J.dirname(c),{recursive:!0});let C=ce.createWriteStream(c);E.pipe(C),await new Promise(S=>{C.on("finish",S)})}}),this.dryRun||(p.reportInfo(0,`Package archive generated in ${he.pretty(r,c,he.Type.PATH)}`),p.reportJson({output:fe.fromPortablePath(c)}))})).exitCode()}};function FEt(t,{workspace:e}){let r=t.replace("%s",NEt(e)).replace("%v",OEt(e));return fe.toPortablePath(r)}function NEt(t){return t.manifest.name!==null?G.slugifyIdent(t.manifest.name):"package"}function OEt(t){return t.manifest.version!==null?t.manifest.version:"unknown"}var LEt=["dependencies","devDependencies","peerDependencies"],MEt="workspace:",UEt=(t,e)=>{e.publishConfig&&(e.publishConfig.type&&(e.type=e.publishConfig.type),e.publishConfig.main&&(e.main=e.publishConfig.main),e.publishConfig.browser&&(e.browser=e.publishConfig.browser),e.publishConfig.module&&(e.module=e.publishConfig.module),e.publishConfig.exports&&(e.exports=e.publishConfig.exports),e.publishConfig.imports&&(e.imports=e.publishConfig.imports),e.publishConfig.bin&&(e.bin=e.publishConfig.bin));let r=t.project;for(let s of LEt)for(let a of t.manifest.getForScope(s).values()){let n=r.tryWorkspaceByDescriptor(a),c=G.parseRange(a.range);if(c.protocol===MEt)if(n===null){if(r.tryWorkspaceByIdent(a)===null)throw new jt(21,`${G.prettyDescriptor(r.configuration,a)}: No local workspace found for this range`)}else{let f;G.areDescriptorsEqual(a,n.anchoredDescriptor)||c.selector==="*"?f=n.manifest.version??"0.0.0":c.selector==="~"||c.selector==="^"?f=`${c.selector}${n.manifest.version??"0.0.0"}`:f=c.selector;let p=s==="dependencies"?G.makeDescriptor(a,"unknown"):null,h=p!==null&&t.manifest.ensureDependencyMeta(p).optional?"optionalDependencies":s;e[h][G.stringifyIdent(a)]=f}}},_Et={hooks:{beforeWorkspacePacking:UEt},commands:[jw]},HEt=_Et;var Mxe=ut(OSe());Ge();var Oxe=ut(Nxe()),{env:Bt}=process,GDt="application/vnd.in-toto+json",qDt="https://in-toto.io/Statement/v0.1",WDt="https://in-toto.io/Statement/v1",YDt="https://slsa.dev/provenance/v0.2",VDt="https://slsa.dev/provenance/v1",JDt="https://github.com/actions/runner",KDt="https://slsa-framework.github.io/github-actions-buildtypes/workflow/v1",zDt="https://github.com/npm/cli/gitlab",ZDt="v0alpha1",Lxe=async(t,e)=>{let r;if(Bt.GITHUB_ACTIONS){if(!Bt.ACTIONS_ID_TOKEN_REQUEST_URL)throw new jt(91,'Provenance generation in GitHub Actions requires "write" access to the "id-token" permission');let s=(Bt.GITHUB_WORKFLOW_REF||"").replace(`${Bt.GITHUB_REPOSITORY}/`,""),a=s.indexOf("@"),n=s.slice(0,a),c=s.slice(a+1);r={_type:WDt,subject:t,predicateType:VDt,predicate:{buildDefinition:{buildType:KDt,externalParameters:{workflow:{ref:c,repository:`${Bt.GITHUB_SERVER_URL}/${Bt.GITHUB_REPOSITORY}`,path:n}},internalParameters:{github:{event_name:Bt.GITHUB_EVENT_NAME,repository_id:Bt.GITHUB_REPOSITORY_ID,repository_owner_id:Bt.GITHUB_REPOSITORY_OWNER_ID}},resolvedDependencies:[{uri:`git+${Bt.GITHUB_SERVER_URL}/${Bt.GITHUB_REPOSITORY}@${Bt.GITHUB_REF}`,digest:{gitCommit:Bt.GITHUB_SHA}}]},runDetails:{builder:{id:`${JDt}/${Bt.RUNNER_ENVIRONMENT}`},metadata:{invocationId:`${Bt.GITHUB_SERVER_URL}/${Bt.GITHUB_REPOSITORY}/actions/runs/${Bt.GITHUB_RUN_ID}/attempts/${Bt.GITHUB_RUN_ATTEMPT}`}}}}}else if(Bt.GITLAB_CI){if(!Bt.SIGSTORE_ID_TOKEN)throw new jt(91,`Provenance generation in GitLab CI requires "SIGSTORE_ID_TOKEN" with "sigstore" audience to be present in "id_tokens". For more info see: https://docs.gitlab.com/ee/ci/secrets/id_token_authentication.html`);r={_type:qDt,subject:t,predicateType:YDt,predicate:{buildType:`${zDt}/${ZDt}`,builder:{id:`${Bt.CI_PROJECT_URL}/-/runners/${Bt.CI_RUNNER_ID}`},invocation:{configSource:{uri:`git+${Bt.CI_PROJECT_URL}`,digest:{sha1:Bt.CI_COMMIT_SHA},entryPoint:Bt.CI_JOB_NAME},parameters:{CI:Bt.CI,CI_API_GRAPHQL_URL:Bt.CI_API_GRAPHQL_URL,CI_API_V4_URL:Bt.CI_API_V4_URL,CI_BUILD_BEFORE_SHA:Bt.CI_BUILD_BEFORE_SHA,CI_BUILD_ID:Bt.CI_BUILD_ID,CI_BUILD_NAME:Bt.CI_BUILD_NAME,CI_BUILD_REF:Bt.CI_BUILD_REF,CI_BUILD_REF_NAME:Bt.CI_BUILD_REF_NAME,CI_BUILD_REF_SLUG:Bt.CI_BUILD_REF_SLUG,CI_BUILD_STAGE:Bt.CI_BUILD_STAGE,CI_COMMIT_BEFORE_SHA:Bt.CI_COMMIT_BEFORE_SHA,CI_COMMIT_BRANCH:Bt.CI_COMMIT_BRANCH,CI_COMMIT_REF_NAME:Bt.CI_COMMIT_REF_NAME,CI_COMMIT_REF_PROTECTED:Bt.CI_COMMIT_REF_PROTECTED,CI_COMMIT_REF_SLUG:Bt.CI_COMMIT_REF_SLUG,CI_COMMIT_SHA:Bt.CI_COMMIT_SHA,CI_COMMIT_SHORT_SHA:Bt.CI_COMMIT_SHORT_SHA,CI_COMMIT_TIMESTAMP:Bt.CI_COMMIT_TIMESTAMP,CI_COMMIT_TITLE:Bt.CI_COMMIT_TITLE,CI_CONFIG_PATH:Bt.CI_CONFIG_PATH,CI_DEFAULT_BRANCH:Bt.CI_DEFAULT_BRANCH,CI_DEPENDENCY_PROXY_DIRECT_GROUP_IMAGE_PREFIX:Bt.CI_DEPENDENCY_PROXY_DIRECT_GROUP_IMAGE_PREFIX,CI_DEPENDENCY_PROXY_GROUP_IMAGE_PREFIX:Bt.CI_DEPENDENCY_PROXY_GROUP_IMAGE_PREFIX,CI_DEPENDENCY_PROXY_SERVER:Bt.CI_DEPENDENCY_PROXY_SERVER,CI_DEPENDENCY_PROXY_USER:Bt.CI_DEPENDENCY_PROXY_USER,CI_JOB_ID:Bt.CI_JOB_ID,CI_JOB_NAME:Bt.CI_JOB_NAME,CI_JOB_NAME_SLUG:Bt.CI_JOB_NAME_SLUG,CI_JOB_STAGE:Bt.CI_JOB_STAGE,CI_JOB_STARTED_AT:Bt.CI_JOB_STARTED_AT,CI_JOB_URL:Bt.CI_JOB_URL,CI_NODE_TOTAL:Bt.CI_NODE_TOTAL,CI_PAGES_DOMAIN:Bt.CI_PAGES_DOMAIN,CI_PAGES_URL:Bt.CI_PAGES_URL,CI_PIPELINE_CREATED_AT:Bt.CI_PIPELINE_CREATED_AT,CI_PIPELINE_ID:Bt.CI_PIPELINE_ID,CI_PIPELINE_IID:Bt.CI_PIPELINE_IID,CI_PIPELINE_SOURCE:Bt.CI_PIPELINE_SOURCE,CI_PIPELINE_URL:Bt.CI_PIPELINE_URL,CI_PROJECT_CLASSIFICATION_LABEL:Bt.CI_PROJECT_CLASSIFICATION_LABEL,CI_PROJECT_DESCRIPTION:Bt.CI_PROJECT_DESCRIPTION,CI_PROJECT_ID:Bt.CI_PROJECT_ID,CI_PROJECT_NAME:Bt.CI_PROJECT_NAME,CI_PROJECT_NAMESPACE:Bt.CI_PROJECT_NAMESPACE,CI_PROJECT_NAMESPACE_ID:Bt.CI_PROJECT_NAMESPACE_ID,CI_PROJECT_PATH:Bt.CI_PROJECT_PATH,CI_PROJECT_PATH_SLUG:Bt.CI_PROJECT_PATH_SLUG,CI_PROJECT_REPOSITORY_LANGUAGES:Bt.CI_PROJECT_REPOSITORY_LANGUAGES,CI_PROJECT_ROOT_NAMESPACE:Bt.CI_PROJECT_ROOT_NAMESPACE,CI_PROJECT_TITLE:Bt.CI_PROJECT_TITLE,CI_PROJECT_URL:Bt.CI_PROJECT_URL,CI_PROJECT_VISIBILITY:Bt.CI_PROJECT_VISIBILITY,CI_REGISTRY:Bt.CI_REGISTRY,CI_REGISTRY_IMAGE:Bt.CI_REGISTRY_IMAGE,CI_REGISTRY_USER:Bt.CI_REGISTRY_USER,CI_RUNNER_DESCRIPTION:Bt.CI_RUNNER_DESCRIPTION,CI_RUNNER_ID:Bt.CI_RUNNER_ID,CI_RUNNER_TAGS:Bt.CI_RUNNER_TAGS,CI_SERVER_HOST:Bt.CI_SERVER_HOST,CI_SERVER_NAME:Bt.CI_SERVER_NAME,CI_SERVER_PORT:Bt.CI_SERVER_PORT,CI_SERVER_PROTOCOL:Bt.CI_SERVER_PROTOCOL,CI_SERVER_REVISION:Bt.CI_SERVER_REVISION,CI_SERVER_SHELL_SSH_HOST:Bt.CI_SERVER_SHELL_SSH_HOST,CI_SERVER_SHELL_SSH_PORT:Bt.CI_SERVER_SHELL_SSH_PORT,CI_SERVER_URL:Bt.CI_SERVER_URL,CI_SERVER_VERSION:Bt.CI_SERVER_VERSION,CI_SERVER_VERSION_MAJOR:Bt.CI_SERVER_VERSION_MAJOR,CI_SERVER_VERSION_MINOR:Bt.CI_SERVER_VERSION_MINOR,CI_SERVER_VERSION_PATCH:Bt.CI_SERVER_VERSION_PATCH,CI_TEMPLATE_REGISTRY_HOST:Bt.CI_TEMPLATE_REGISTRY_HOST,GITLAB_CI:Bt.GITLAB_CI,GITLAB_FEATURES:Bt.GITLAB_FEATURES,GITLAB_USER_ID:Bt.GITLAB_USER_ID,GITLAB_USER_LOGIN:Bt.GITLAB_USER_LOGIN,RUNNER_GENERATE_ARTIFACTS_METADATA:Bt.RUNNER_GENERATE_ARTIFACTS_METADATA},environment:{name:Bt.CI_RUNNER_DESCRIPTION,architecture:Bt.CI_RUNNER_EXECUTABLE_ARCH,server:Bt.CI_SERVER_URL,project:Bt.CI_PROJECT_PATH,job:{id:Bt.CI_JOB_ID},pipeline:{id:Bt.CI_PIPELINE_ID,ref:Bt.CI_CONFIG_PATH}}},metadata:{buildInvocationId:`${Bt.CI_JOB_URL}`,completeness:{parameters:!0,environment:!0,materials:!1},reproducible:!1},materials:[{uri:`git+${Bt.CI_PROJECT_URL}`,digest:{sha1:Bt.CI_COMMIT_SHA}}]}}}else throw new jt(91,"Provenance generation is only supported in GitHub Actions and GitLab CI");return Oxe.attest(Buffer.from(JSON.stringify(r)),GDt,e)};async function XDt(t,e,{access:r,tag:s,registry:a,gitHead:n,provenance:c}){let f=t.manifest.name,p=t.manifest.version,h=G.stringifyIdent(f),E=Mxe.default.fromData(e,{algorithms:["sha1","sha512"]}),C=r??Uxe(t,f),S=await _xe(t),b=await yA.genPackageManifest(t),I=`${h}-${p}.tgz`,T=new URL(`${Jc(a)}/${h}/-/${I}`),N={[I]:{content_type:"application/octet-stream",data:e.toString("base64"),length:e.length}};if(c){let U={name:`pkg:npm/${h.replace(/^@/,"%40")}@${p}`,digest:{sha512:E.sha512[0].hexDigest()}},W=await Lxe([U]),ee=JSON.stringify(W);N[`${h}-${p}.sigstore`]={content_type:W.mediaType,data:ee,length:ee.length}}return{_id:h,_attachments:N,name:h,access:C,"dist-tags":{[s]:p},versions:{[p]:{...b,_id:`${h}@${p}`,name:h,version:p,gitHead:n,dist:{shasum:E.sha1[0].hexDigest(),integrity:E.sha512[0].toString(),tarball:T.toString()}}},readme:S}}async function $Dt(t){try{let{stdout:e}=await qr.execvp("git",["rev-parse","--revs-only","HEAD"],{cwd:t});return e.trim()===""?void 0:e.trim()}catch{return}}function Uxe(t,e){let r=t.project.configuration;return t.manifest.publishConfig&&typeof t.manifest.publishConfig.access=="string"?t.manifest.publishConfig.access:r.get("npmPublishAccess")!==null?r.get("npmPublishAccess"):e.scope?"restricted":"public"}async function _xe(t){let e=fe.toPortablePath(`${t.cwd}/README.md`),r=t.manifest.name,a=`# ${G.stringifyIdent(r)} `;try{a=await ce.readFilePromise(e,"utf8")}catch(n){if(n.code==="ENOENT")return a;throw n}return a}var DK={npmAlwaysAuth:{description:"URL of the selected npm registry (note: npm enterprise isn't supported)",type:"BOOLEAN",default:!1},npmAuthIdent:{description:"Authentication identity for the npm registry (_auth in npm and yarn v1)",type:"SECRET",default:null},npmAuthToken:{description:"Authentication token for the npm registry (_authToken in npm and yarn v1)",type:"SECRET",default:null}},Hxe={npmAuditRegistry:{description:"Registry to query for audit reports",type:"STRING",default:null},npmPublishRegistry:{description:"Registry to push packages to",type:"STRING",default:null},npmRegistryServer:{description:"URL of the selected npm registry (note: npm enterprise isn't supported)",type:"STRING",default:"https://registry.yarnpkg.com"}},ePt={npmMinimalAgeGate:{description:"Minimum age of a package version according to the publish date on the npm registry in minutes to be considered for installation",type:"NUMBER",default:0},npmPreapprovedPackages:{description:"Array of package descriptors or package name glob patterns to exclude from the minimum release age check",type:"STRING",isArray:!0,default:[]}},tPt={configuration:{...DK,...Hxe,...ePt,npmScopes:{description:"Settings per package scope",type:"MAP",valueDefinition:{description:"",type:"SHAPE",properties:{...DK,...Hxe}}},npmRegistries:{description:"Settings per registry",type:"MAP",normalizeKeys:Jc,valueDefinition:{description:"",type:"SHAPE",properties:{...DK}}}},fetchers:[VD,oh],resolvers:[JD,KD,zD]},rPt=tPt;var OK={};Vt(OK,{NpmAuditCommand:()=>D1,NpmInfoCommand:()=>P1,NpmLoginCommand:()=>b1,NpmLogoutCommand:()=>k1,NpmPublishCommand:()=>Q1,NpmTagAddCommand:()=>T1,NpmTagListCommand:()=>R1,NpmTagRemoveCommand:()=>F1,NpmWhoamiCommand:()=>N1,default:()=>cPt,npmAuditTypes:()=>KP,npmAuditUtils:()=>xL});Ge();Ge();Yt();var RK=ut(Go());Ul();var KP={};Vt(KP,{Environment:()=>VP,Severity:()=>JP});var VP=(s=>(s.All="all",s.Production="production",s.Development="development",s))(VP||{}),JP=(n=>(n.Info="info",n.Low="low",n.Moderate="moderate",n.High="high",n.Critical="critical",n))(JP||{});var xL={};Vt(xL,{allSeverities:()=>S1,getPackages:()=>QK,getReportTree:()=>xK,getSeverityInclusions:()=>bK,getTopLevelDependencies:()=>kK});Ge();var jxe=ut(Ai());var S1=["info","low","moderate","high","critical"];function bK(t){if(typeof t>"u")return new Set(S1);let e=S1.indexOf(t),r=S1.slice(e);return new Set(r)}function xK(t){let e={},r={children:e};for(let[s,a]of je.sortMap(Object.entries(t),n=>n[0]))for(let n of je.sortMap(a,c=>`${c.id}`))e[`${s}/${n.id}`]={value:he.tuple(he.Type.IDENT,G.parseIdent(s)),children:{ID:typeof n.id<"u"&&{label:"ID",value:he.tuple(he.Type.ID,n.id)},Issue:{label:"Issue",value:he.tuple(he.Type.NO_HINT,n.title)},URL:typeof n.url<"u"&&{label:"URL",value:he.tuple(he.Type.URL,n.url)},Severity:{label:"Severity",value:he.tuple(he.Type.NO_HINT,n.severity)},"Vulnerable Versions":{label:"Vulnerable Versions",value:he.tuple(he.Type.RANGE,n.vulnerable_versions)},"Tree Versions":{label:"Tree Versions",children:[...n.versions].sort(jxe.default.compare).map(c=>({value:he.tuple(he.Type.REFERENCE,c)}))},Dependents:{label:"Dependents",children:je.sortMap(n.dependents,c=>G.stringifyLocator(c)).map(c=>({value:he.tuple(he.Type.LOCATOR,c)}))}}};return r}function kK(t,e,{all:r,environment:s}){let a=[],n=r?t.workspaces:[e],c=["all","production"].includes(s),f=["all","development"].includes(s);for(let p of n)for(let h of p.anchoredPackage.dependencies.values())(p.manifest.devDependencies.has(h.identHash)?!f:!c)||a.push({workspace:p,dependency:h});return a}function QK(t,e,{recursive:r}){let s=new Map,a=new Set,n=[],c=(f,p)=>{let h=t.storedResolutions.get(p.descriptorHash);if(typeof h>"u")throw new Error("Assertion failed: The resolution should have been registered");if(!a.has(h))a.add(h);else return;let E=t.storedPackages.get(h);if(typeof E>"u")throw new Error("Assertion failed: The package should have been registered");if(G.ensureDevirtualizedLocator(E).reference.startsWith("npm:")&&E.version!==null){let S=G.stringifyIdent(E),b=je.getMapWithDefault(s,S);je.getArrayWithDefault(b,E.version).push(f)}if(r)for(let S of E.dependencies.values())n.push([E,S])};for(let{workspace:f,dependency:p}of e)n.push([f.anchoredLocator,p]);for(;n.length>0;){let[f,p]=n.shift();c(f,p)}return s}var D1=class extends ft{constructor(){super(...arguments);this.all=ge.Boolean("-A,--all",!1,{description:"Audit dependencies from all workspaces"});this.recursive=ge.Boolean("-R,--recursive",!1,{description:"Audit transitive dependencies as well"});this.environment=ge.String("--environment","all",{description:"Which environments to cover",validator:fo(VP)});this.json=ge.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.noDeprecations=ge.Boolean("--no-deprecations",!1,{description:"Don't warn about deprecated packages"});this.severity=ge.String("--severity","info",{description:"Minimal severity requested for packages to be displayed",validator:fo(JP)});this.excludes=ge.Array("--exclude",[],{description:"Array of glob patterns of packages to exclude from audit"});this.ignores=ge.Array("--ignore",[],{description:"Array of glob patterns of advisory ID's to ignore in the audit report"})}static{this.paths=[["npm","audit"]]}static{this.usage=ot.Usage({description:"perform a vulnerability audit against the installed packages",details:` This command checks for known security reports on the packages you use. The reports are by default extracted from the npm registry, and may or may not be relevant to your actual program (not all vulnerabilities affect all code paths). For consistency with our other commands the default is to only check the direct dependencies for the active workspace. To extend this search to all workspaces, use \`-A,--all\`. To extend this search to both direct and transitive dependencies, use \`-R,--recursive\`. Applying the \`--severity\` flag will limit the audit table to vulnerabilities of the corresponding severity and above. Valid values are ${S1.map(r=>`\`${r}\``).join(", ")}. If the \`--json\` flag is set, Yarn will print the output exactly as received from the registry. Regardless of this flag, the process will exit with a non-zero exit code if a report is found for the selected packages. If certain packages produce false positives for a particular environment, the \`--exclude\` flag can be used to exclude any number of packages from the audit. This can also be set in the configuration file with the \`npmAuditExcludePackages\` option. If particular advisories are needed to be ignored, the \`--ignore\` flag can be used with Advisory ID's to ignore any number of advisories in the audit report. This can also be set in the configuration file with the \`npmAuditIgnoreAdvisories\` option. To understand the dependency tree requiring vulnerable packages, check the raw report with the \`--json\` flag or use \`yarn why package\` to get more information as to who depends on them. `,examples:[["Checks for known security issues with the installed packages. The output is a list of known issues.","yarn npm audit"],["Audit dependencies in all workspaces","yarn npm audit --all"],["Limit auditing to `dependencies` (excludes `devDependencies`)","yarn npm audit --environment production"],["Show audit report as valid JSON","yarn npm audit --json"],["Audit all direct and transitive dependencies","yarn npm audit --recursive"],["Output moderate (or more severe) vulnerabilities","yarn npm audit --severity moderate"],["Exclude certain packages","yarn npm audit --exclude package1 --exclude package2"],["Ignore specific advisories","yarn npm audit --ignore 1234567 --ignore 7654321"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Rt.find(r,this.context.cwd);if(!a)throw new ar(s.cwd,this.context.cwd);await s.restoreInstallState();let n=kK(s,a,{all:this.all,environment:this.environment}),c=QK(s,n,{recursive:this.recursive}),f=Array.from(new Set([...r.get("npmAuditExcludePackages"),...this.excludes])),p=Object.create(null);for(let[N,U]of c)f.some(W=>RK.default.isMatch(N,W))||(p[N]=[...U.keys()]);let h=hi.getAuditRegistry({configuration:r}),E,C=await lA.start({configuration:r,stdout:this.context.stdout},async()=>{let N=an.post("/-/npm/v1/security/advisories/bulk",p,{authType:an.AuthType.BEST_EFFORT,configuration:r,jsonResponse:!0,registry:h}),U=this.noDeprecations?[]:await Promise.all(Array.from(Object.entries(p),async([ee,ie])=>{let ue=await an.getPackageMetadata(G.parseIdent(ee),{project:s});return je.mapAndFilter(ie,le=>{let{deprecated:me}=ue.versions[le];return me?[ee,le,me]:je.mapAndFilter.skip})})),W=await N;for(let[ee,ie,ue]of U.flat(1))Object.hasOwn(W,ee)&&W[ee].some(le=>Fr.satisfiesWithPrereleases(ie,le.vulnerable_versions))||(W[ee]??=[],W[ee].push({id:`${ee} (deprecation)`,title:(typeof ue=="string"?ue:"").trim()||"This package has been deprecated.",severity:"moderate",vulnerable_versions:ie}));E=W});if(C.hasErrors())return C.exitCode();let S=bK(this.severity),b=Array.from(new Set([...r.get("npmAuditIgnoreAdvisories"),...this.ignores])),I=Object.create(null);for(let[N,U]of Object.entries(E)){let W=U.filter(ee=>!RK.default.isMatch(`${ee.id}`,b)&&S.has(ee.severity));W.length>0&&(I[N]=W.map(ee=>{let ie=c.get(N);if(typeof ie>"u")throw new Error("Assertion failed: Expected the registry to only return packages that were requested");let ue=[...ie.keys()].filter(me=>Fr.satisfiesWithPrereleases(me,ee.vulnerable_versions)),le=new Map;for(let me of ue)for(let pe of ie.get(me))le.set(pe.locatorHash,pe);return{...ee,versions:ue,dependents:[...le.values()]}}))}let T=Object.keys(I).length>0;return T?(xs.emitTree(xK(I),{configuration:r,json:this.json,stdout:this.context.stdout,separators:2}),1):(await Ot.start({configuration:r,includeFooter:!1,json:this.json,stdout:this.context.stdout},async N=>{N.reportInfo(1,"No audit suggestions")}),T?1:0)}};Ge();Ge();Dt();Yt();var TK=ut(Ai()),FK=Ie("util"),P1=class extends ft{constructor(){super(...arguments);this.fields=ge.String("-f,--fields",{description:"A comma-separated list of manifest fields that should be displayed"});this.json=ge.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.packages=ge.Rest()}static{this.paths=[["npm","info"]]}static{this.usage=ot.Usage({category:"Npm-related commands",description:"show information about a package",details:"\n This command fetches information about a package from the npm registry and prints it in a tree format.\n\n The package does not have to be installed locally, but needs to have been published (in particular, local changes will be ignored even for workspaces).\n\n Append `@` to the package argument to provide information specific to the latest version that satisfies the range or to the corresponding tagged version. If the range is invalid or if there is no version satisfying the range, the command will print a warning and fall back to the latest version.\n\n If the `-f,--fields` option is set, it's a comma-separated list of fields which will be used to only display part of the package information.\n\n By default, this command won't return the `dist`, `readme`, and `users` fields, since they are often very long. To explicitly request those fields, explicitly list them with the `--fields` flag or request the output in JSON mode.\n ",examples:[["Show all available information about react (except the `dist`, `readme`, and `users` fields)","yarn npm info react"],["Show all available information about react as valid JSON (including the `dist`, `readme`, and `users` fields)","yarn npm info react --json"],["Show all available information about react@16.12.0","yarn npm info react@16.12.0"],["Show all available information about react@next","yarn npm info react@next"],["Show the description of react","yarn npm info react --fields description"],["Show all available versions of react","yarn npm info react --fields versions"],["Show the readme of react","yarn npm info react --fields readme"],["Show a few fields of react","yarn npm info react --fields homepage,repository"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s}=await Rt.find(r,this.context.cwd),a=typeof this.fields<"u"?new Set(["name",...this.fields.split(/\s*,\s*/)]):null,n=[],c=!1,f=await Ot.start({configuration:r,includeFooter:!1,json:this.json,stdout:this.context.stdout},async p=>{for(let h of this.packages){let E;if(h==="."){let ie=s.topLevelWorkspace;if(!ie.manifest.name)throw new nt(`Missing ${he.pretty(r,"name",he.Type.CODE)} field in ${fe.fromPortablePath(J.join(ie.cwd,Er.manifest))}`);E=G.makeDescriptor(ie.manifest.name,"unknown")}else E=G.parseDescriptor(h);let C=an.getIdentUrl(E),S=NK(await an.get(C,{configuration:r,ident:E,jsonResponse:!0,customErrorMessage:an.customPackageError})),b=Object.keys(S.versions).sort(TK.default.compareLoose),T=S["dist-tags"].latest||b[b.length-1],N=Fr.validRange(E.range);if(N){let ie=TK.default.maxSatisfying(b,N);ie!==null?T=ie:(p.reportWarning(0,`Unmet range ${G.prettyRange(r,E.range)}; falling back to the latest version`),c=!0)}else Object.hasOwn(S["dist-tags"],E.range)?T=S["dist-tags"][E.range]:E.range!=="unknown"&&(p.reportWarning(0,`Unknown tag ${G.prettyRange(r,E.range)}; falling back to the latest version`),c=!0);let U=S.versions[T],W={...S,...U,version:T,versions:b},ee;if(a!==null){ee={};for(let ie of a){let ue=W[ie];if(typeof ue<"u")ee[ie]=ue;else{p.reportWarning(1,`The ${he.pretty(r,ie,he.Type.CODE)} field doesn't exist inside ${G.prettyIdent(r,E)}'s information`),c=!0;continue}}}else this.json||(delete W.dist,delete W.readme,delete W.users),ee=W;p.reportJson(ee),this.json||n.push(ee)}});FK.inspect.styles.name="cyan";for(let p of n)(p!==n[0]||c)&&this.context.stdout.write(` `),this.context.stdout.write(`${(0,FK.inspect)(p,{depth:1/0,colors:!0,compact:!1})} `);return f.exitCode()}};function NK(t){if(Array.isArray(t)){let e=[];for(let r of t)r=NK(r),r&&e.push(r);return e}else if(typeof t=="object"&&t!==null){let e={};for(let r of Object.keys(t)){if(r.startsWith("_"))continue;let s=NK(t[r]);s&&(e[r]=s)}return e}else return t||null}Ge();Ge();Yt();var Gxe=ut(Vv()),b1=class extends ft{constructor(){super(...arguments);this.scope=ge.String("-s,--scope",{description:"Login to the registry configured for a given scope"});this.publish=ge.Boolean("--publish",!1,{description:"Login to the publish registry"});this.alwaysAuth=ge.Boolean("--always-auth",{description:"Set the npmAlwaysAuth configuration"})}static{this.paths=[["npm","login"]]}static{this.usage=ot.Usage({category:"Npm-related commands",description:"store new login info to access the npm registry",details:"\n This command will ask you for your username, password, and 2FA One-Time-Password (when it applies). It will then modify your local configuration (in your home folder, never in the project itself) to reference the new tokens thus generated.\n\n Adding the `-s,--scope` flag will cause the authentication to be done against whatever registry is configured for the associated scope (see also `npmScopes`).\n\n Adding the `--publish` flag will cause the authentication to be done against the registry used when publishing the package (see also `publishConfig.registry` and `npmPublishRegistry`).\n ",examples:[["Login to the default registry","yarn npm login"],["Login to the registry linked to the @my-scope registry","yarn npm login --scope my-scope"],["Login to the publish registry for the current package","yarn npm login --publish"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),s=await kL({configuration:r,cwd:this.context.cwd,publish:this.publish,scope:this.scope});return(await Ot.start({configuration:r,stdout:this.context.stdout,includeFooter:!1},async n=>{let c=await sPt({configuration:r,registry:s,report:n,stdin:this.context.stdin,stdout:this.context.stdout}),f=await nPt(s,c,r);return await iPt(s,f,{alwaysAuth:this.alwaysAuth,scope:this.scope}),n.reportInfo(0,"Successfully logged in")})).exitCode()}};async function kL({scope:t,publish:e,configuration:r,cwd:s}){return t&&e?hi.getScopeRegistry(t,{configuration:r,type:hi.RegistryType.PUBLISH_REGISTRY}):t?hi.getScopeRegistry(t,{configuration:r}):e?hi.getPublishRegistry((await eC(r,s)).manifest,{configuration:r}):hi.getDefaultRegistry({configuration:r})}async function nPt(t,e,r){let s=`/-/user/org.couchdb.user:${encodeURIComponent(e.name)}`,a={_id:`org.couchdb.user:${e.name}`,name:e.name,password:e.password,type:"user",roles:[],date:new Date().toISOString()},n={attemptedAs:e.name,configuration:r,registry:t,jsonResponse:!0,authType:an.AuthType.NO_AUTH};try{return(await an.put(s,a,n)).token}catch(E){if(!(E.originalError?.name==="HTTPError"&&E.originalError?.response.statusCode===409))throw E}let c={...n,authType:an.AuthType.NO_AUTH,headers:{authorization:`Basic ${Buffer.from(`${e.name}:${e.password}`).toString("base64")}`}},f=await an.get(s,c);for(let[E,C]of Object.entries(f))(!a[E]||E==="roles")&&(a[E]=C);let p=`${s}/-rev/${a._rev}`;return(await an.put(p,a,c)).token}async function iPt(t,e,{alwaysAuth:r,scope:s}){let a=c=>f=>{let p=je.isIndexableObject(f)?f:{},h=p[c],E=je.isIndexableObject(h)?h:{};return{...p,[c]:{...E,...r!==void 0?{npmAlwaysAuth:r}:{},npmAuthToken:e}}},n=s?{npmScopes:a(s)}:{npmRegistries:a(t)};return await ze.updateHomeConfiguration(n)}async function sPt({configuration:t,registry:e,report:r,stdin:s,stdout:a}){r.reportInfo(0,`Logging in to ${he.pretty(t,e,he.Type.URL)}`);let n=!1;if(e.match(/^https:\/\/npm\.pkg\.github\.com(\/|$)/)&&(r.reportInfo(0,"You seem to be using the GitHub Package Registry. Tokens must be generated with the 'repo', 'write:packages', and 'read:packages' permissions."),n=!0),r.reportSeparator(),t.env.YARN_IS_TEST_ENV)return{name:t.env.YARN_INJECT_NPM_USER||"",password:t.env.YARN_INJECT_NPM_PASSWORD||""};let c=await(0,Gxe.prompt)([{type:"input",name:"name",message:"Username:",required:!0,onCancel:()=>process.exit(130),stdin:s,stdout:a},{type:"password",name:"password",message:n?"Token:":"Password:",required:!0,onCancel:()=>process.exit(130),stdin:s,stdout:a}]);return r.reportSeparator(),c}Ge();Ge();Yt();var x1=new Set(["npmAuthIdent","npmAuthToken"]),k1=class extends ft{constructor(){super(...arguments);this.scope=ge.String("-s,--scope",{description:"Logout of the registry configured for a given scope"});this.publish=ge.Boolean("--publish",!1,{description:"Logout of the publish registry"});this.all=ge.Boolean("-A,--all",!1,{description:"Logout of all registries"})}static{this.paths=[["npm","logout"]]}static{this.usage=ot.Usage({category:"Npm-related commands",description:"logout of the npm registry",details:"\n This command will log you out by modifying your local configuration (in your home folder, never in the project itself) to delete all credentials linked to a registry.\n\n Adding the `-s,--scope` flag will cause the deletion to be done against whatever registry is configured for the associated scope (see also `npmScopes`).\n\n Adding the `--publish` flag will cause the deletion to be done against the registry used when publishing the package (see also `publishConfig.registry` and `npmPublishRegistry`).\n\n Adding the `-A,--all` flag will cause the deletion to be done against all registries and scopes.\n ",examples:[["Logout of the default registry","yarn npm logout"],["Logout of the @my-scope scope","yarn npm logout --scope my-scope"],["Logout of the publish registry for the current package","yarn npm logout --publish"],["Logout of all registries","yarn npm logout --all"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),s=async()=>{let n=await kL({configuration:r,cwd:this.context.cwd,publish:this.publish,scope:this.scope}),c=await ze.find(this.context.cwd,this.context.plugins),f=G.makeIdent(this.scope??null,"pkg");return!hi.getAuthConfiguration(n,{configuration:c,ident:f}).get("npmAuthToken")};return(await Ot.start({configuration:r,stdout:this.context.stdout},async n=>{if(this.all&&(await aPt(),n.reportInfo(0,"Successfully logged out from everything")),this.scope){await qxe("npmScopes",this.scope),await s()?n.reportInfo(0,`Successfully logged out from ${this.scope}`):n.reportWarning(0,"Scope authentication settings removed, but some other ones settings still apply to it");return}let c=await kL({configuration:r,cwd:this.context.cwd,publish:this.publish});await qxe("npmRegistries",c),await s()?n.reportInfo(0,`Successfully logged out from ${c}`):n.reportWarning(0,"Registry authentication settings removed, but some other ones settings still apply to it")})).exitCode()}};function oPt(t,e){let r=t[e];if(!je.isIndexableObject(r))return!1;let s=new Set(Object.keys(r));if([...x1].every(n=>!s.has(n)))return!1;for(let n of x1)s.delete(n);if(s.size===0)return t[e]=void 0,!0;let a={...r};for(let n of x1)delete a[n];return t[e]=a,!0}async function aPt(){let t=e=>{let r=!1,s=je.isIndexableObject(e)?{...e}:{};s.npmAuthToken&&(delete s.npmAuthToken,r=!0);for(let a of Object.keys(s))oPt(s,a)&&(r=!0);if(Object.keys(s).length!==0)return r?s:e};return await ze.updateHomeConfiguration({npmRegistries:t,npmScopes:t})}async function qxe(t,e){return await ze.updateHomeConfiguration({[t]:r=>{let s=je.isIndexableObject(r)?r:{};if(!Object.hasOwn(s,e))return r;let a=s[e],n=je.isIndexableObject(a)?a:{},c=new Set(Object.keys(n));if([...x1].every(p=>!c.has(p)))return r;for(let p of x1)c.delete(p);if(c.size===0)return Object.keys(s).length===1?void 0:{...s,[e]:void 0};let f={};for(let p of x1)f[p]=void 0;return{...s,[e]:{...n,...f}}}})}Ge();Dt();Yt();var Q1=class extends ft{constructor(){super(...arguments);this.access=ge.String("--access",{description:"The access for the published package (public or restricted)"});this.tag=ge.String("--tag","latest",{description:"The tag on the registry that the package should be attached to"});this.tolerateRepublish=ge.Boolean("--tolerate-republish",!1,{description:"Warn and exit when republishing an already existing version of a package"});this.otp=ge.String("--otp",{description:"The OTP token to use with the command"});this.provenance=ge.Boolean("--provenance",!1,{description:"Generate provenance for the package. Only available in GitHub Actions and GitLab CI. Can be set globally through the `npmPublishProvenance` setting or the `YARN_NPM_CONFIG_PROVENANCE` environment variable, or per-package through the `publishConfig.provenance` field in package.json."});this.dryRun=ge.Boolean("-n,--dry-run",!1,{description:"Show what would be published without actually publishing"});this.json=ge.Boolean("--json",!1,{description:"Output the result in JSON format"})}static{this.paths=[["npm","publish"]]}static{this.usage=ot.Usage({category:"Npm-related commands",description:"publish the active workspace to the npm registry",details:'\n This command will pack the active workspace into a fresh archive and upload it to the npm registry.\n\n The package will by default be attached to the `latest` tag on the registry, but this behavior can be overridden by using the `--tag` option.\n\n Note that for legacy reasons scoped packages are by default published with an access set to `restricted` (aka "private packages"). This requires you to register for a paid npm plan. In case you simply wish to publish a public scoped package to the registry (for free), just add the `--access public` flag. This behavior can be enabled by default through the `npmPublishAccess` settings.\n ',examples:[["Publish the active workspace","yarn npm publish"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Rt.find(r,this.context.cwd);if(!a)throw new ar(s.cwd,this.context.cwd);if(a.manifest.private)throw new nt("Private workspaces cannot be published");if(a.manifest.name===null||a.manifest.version===null)throw new nt("Workspaces must have valid names and versions to be published on an external registry");await s.restoreInstallState();let n=a.manifest.name,c=a.manifest.version,f=hi.getPublishRegistry(a.manifest,{configuration:r});return(await Ot.start({configuration:r,stdout:this.context.stdout,json:this.json},async h=>{if(this.tolerateRepublish)try{let E=await an.get(an.getIdentUrl(n),{configuration:r,registry:f,ident:n,jsonResponse:!0});if(!Object.hasOwn(E,"versions"))throw new jt(15,'Registry returned invalid data for - missing "versions" field');if(Object.hasOwn(E.versions,c)){let C=`Registry already knows about version ${c}; skipping.`;h.reportWarning(0,C),h.reportJson({name:n.name,version:c,registry:f,warning:C,skipped:!0});return}}catch(E){if(E.originalError?.response?.statusCode!==404)throw E}await In.maybeExecuteWorkspaceLifecycleScript(a,"prepublish",{report:h}),await yA.prepareForPack(a,{report:h},async()=>{let E=await yA.genPackList(a);for(let W of E)h.reportInfo(null,fe.fromPortablePath(W)),h.reportJson({file:fe.fromPortablePath(W)});let C=await yA.genPackStream(a,E),S=await je.bufferStream(C),b=await v1.getGitHead(a.cwd),I=!1,T="";a.manifest.publishConfig&&"provenance"in a.manifest.publishConfig?(I=!!a.manifest.publishConfig.provenance,T=I?"Generating provenance statement because `publishConfig.provenance` field is set.":"Skipping provenance statement because `publishConfig.provenance` field is set to false."):this.provenance?(I=!0,T="Generating provenance statement because `--provenance` flag is set."):r.get("npmPublishProvenance")&&(I=!0,T="Generating provenance statement because `npmPublishProvenance` setting is set."),T&&(h.reportInfo(null,T),h.reportJson({type:"provenance",enabled:I,provenanceMessage:T}));let N=await v1.makePublishBody(a,S,{access:this.access,tag:this.tag,registry:f,gitHead:b,provenance:I});this.dryRun||await an.put(an.getIdentUrl(n),N,{configuration:r,registry:f,ident:n,otp:this.otp,jsonResponse:!0,allowOidc:!!(process.env.CI&&(process.env.GITHUB_ACTIONS||process.env.GITLAB))});let U=this.dryRun?`[DRY RUN] Package would be published to ${f} with tag ${this.tag}`:"Package archive published";h.reportInfo(0,U),h.reportJson({name:n.name,version:c,registry:f,tag:this.tag||"latest",files:E.map(W=>fe.fromPortablePath(W)),access:this.access||null,dryRun:this.dryRun,published:!this.dryRun,message:U,provenance:!!I})})})).exitCode()}};Ge();Yt();var Wxe=ut(Ai());Ge();Dt();Yt();var R1=class extends ft{constructor(){super(...arguments);this.json=ge.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.package=ge.String({required:!1})}static{this.paths=[["npm","tag","list"]]}static{this.usage=ot.Usage({category:"Npm-related commands",description:"list all dist-tags of a package",details:` This command will list all tags of a package from the npm registry. If the package is not specified, Yarn will default to the current workspace. `,examples:[["List all tags of package `my-pkg`","yarn npm tag list my-pkg"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Rt.find(r,this.context.cwd),n;if(typeof this.package<"u")n=G.parseIdent(this.package);else{if(!a)throw new ar(s.cwd,this.context.cwd);if(!a.manifest.name)throw new nt(`Missing 'name' field in ${fe.fromPortablePath(J.join(a.cwd,Er.manifest))}`);n=a.manifest.name}let c=await zP(n,r),p={children:je.sortMap(Object.entries(c),([h])=>h).map(([h,E])=>({value:he.tuple(he.Type.RESOLUTION,{descriptor:G.makeDescriptor(n,h),locator:G.makeLocator(n,E)})}))};return xs.emitTree(p,{configuration:r,json:this.json,stdout:this.context.stdout})}};async function zP(t,e){let r=`/-/package${an.getIdentUrl(t)}/dist-tags`;return an.get(r,{configuration:e,ident:t,jsonResponse:!0,customErrorMessage:an.customPackageError})}var T1=class extends ft{constructor(){super(...arguments);this.package=ge.String();this.tag=ge.String()}static{this.paths=[["npm","tag","add"]]}static{this.usage=ot.Usage({category:"Npm-related commands",description:"add a tag for a specific version of a package",details:` This command will add a tag to the npm registry for a specific version of a package. If the tag already exists, it will be overwritten. `,examples:[["Add a `beta` tag for version `2.3.4-beta.4` of package `my-pkg`","yarn npm tag add my-pkg@2.3.4-beta.4 beta"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Rt.find(r,this.context.cwd);if(!a)throw new ar(s.cwd,this.context.cwd);let n=G.parseDescriptor(this.package,!0),c=n.range;if(!Wxe.default.valid(c))throw new nt(`The range ${he.pretty(r,n.range,he.Type.RANGE)} must be a valid semver version`);let f=hi.getPublishRegistry(a.manifest,{configuration:r}),p=he.pretty(r,n,he.Type.IDENT),h=he.pretty(r,c,he.Type.RANGE),E=he.pretty(r,this.tag,he.Type.CODE);return(await Ot.start({configuration:r,stdout:this.context.stdout},async S=>{let b=await zP(n,r);Object.hasOwn(b,this.tag)&&b[this.tag]===c&&S.reportWarning(0,`Tag ${E} is already set to version ${h}`);let I=`/-/package${an.getIdentUrl(n)}/dist-tags/${encodeURIComponent(this.tag)}`;await an.put(I,c,{configuration:r,registry:f,ident:n,jsonRequest:!0,jsonResponse:!0}),S.reportInfo(0,`Tag ${E} added to version ${h} of package ${p}`)})).exitCode()}};Ge();Yt();var F1=class extends ft{constructor(){super(...arguments);this.package=ge.String();this.tag=ge.String()}static{this.paths=[["npm","tag","remove"]]}static{this.usage=ot.Usage({category:"Npm-related commands",description:"remove a tag from a package",details:` This command will remove a tag from a package from the npm registry. `,examples:[["Remove the `beta` tag from package `my-pkg`","yarn npm tag remove my-pkg beta"]]})}async execute(){if(this.tag==="latest")throw new nt("The 'latest' tag cannot be removed.");let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Rt.find(r,this.context.cwd);if(!a)throw new ar(s.cwd,this.context.cwd);let n=G.parseIdent(this.package),c=hi.getPublishRegistry(a.manifest,{configuration:r}),f=he.pretty(r,this.tag,he.Type.CODE),p=he.pretty(r,n,he.Type.IDENT),h=await zP(n,r);if(!Object.hasOwn(h,this.tag))throw new nt(`${f} is not a tag of package ${p}`);return(await Ot.start({configuration:r,stdout:this.context.stdout},async C=>{let S=`/-/package${an.getIdentUrl(n)}/dist-tags/${encodeURIComponent(this.tag)}`;await an.del(S,{configuration:r,registry:c,ident:n,jsonResponse:!0}),C.reportInfo(0,`Tag ${f} removed from package ${p}`)})).exitCode()}};Ge();Ge();Yt();var N1=class extends ft{constructor(){super(...arguments);this.scope=ge.String("-s,--scope",{description:"Print username for the registry configured for a given scope"});this.publish=ge.Boolean("--publish",!1,{description:"Print username for the publish registry"})}static{this.paths=[["npm","whoami"]]}static{this.usage=ot.Usage({category:"Npm-related commands",description:"display the name of the authenticated user",details:"\n Print the username associated with the current authentication settings to the standard output.\n\n When using `-s,--scope`, the username printed will be the one that matches the authentication settings of the registry associated with the given scope (those settings can be overriden using the `npmRegistries` map, and the registry associated with the scope is configured via the `npmScopes` map).\n\n When using `--publish`, the registry we'll select will by default be the one used when publishing packages (`publishConfig.registry` or `npmPublishRegistry` if available, otherwise we'll fallback to the regular `npmRegistryServer`).\n ",examples:[["Print username for the default registry","yarn npm whoami"],["Print username for the registry on a given scope","yarn npm whoami --scope company"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),s;return this.scope&&this.publish?s=hi.getScopeRegistry(this.scope,{configuration:r,type:hi.RegistryType.PUBLISH_REGISTRY}):this.scope?s=hi.getScopeRegistry(this.scope,{configuration:r}):this.publish?s=hi.getPublishRegistry((await eC(r,this.context.cwd)).manifest,{configuration:r}):s=hi.getDefaultRegistry({configuration:r}),(await Ot.start({configuration:r,stdout:this.context.stdout},async n=>{let c;try{c=await an.get("/-/whoami",{configuration:r,registry:s,authType:an.AuthType.ALWAYS_AUTH,jsonResponse:!0,ident:this.scope?G.makeIdent(this.scope,""):void 0})}catch(f){if(f.response?.statusCode===401||f.response?.statusCode===403){n.reportError(41,"Authentication failed - your credentials may have expired");return}else throw f}n.reportInfo(0,c.username)})).exitCode()}};var lPt={configuration:{npmPublishAccess:{description:"Default access of the published packages",type:"STRING",default:null},npmPublishProvenance:{description:"Whether to generate provenance for the published packages",type:"BOOLEAN",default:!1},npmAuditExcludePackages:{description:"Array of glob patterns of packages to exclude from npm audit",type:"STRING",default:[],isArray:!0},npmAuditIgnoreAdvisories:{description:"Array of glob patterns of advisory IDs to exclude from npm audit",type:"STRING",default:[],isArray:!0}},commands:[D1,P1,b1,k1,Q1,T1,R1,F1,N1]},cPt=lPt;var GK={};Vt(GK,{PatchCommand:()=>H1,PatchCommitCommand:()=>_1,PatchFetcher:()=>tb,PatchResolver:()=>rb,default:()=>PPt,patchUtils:()=>gy});Ge();Ge();Dt();eA();var gy={};Vt(gy,{applyPatchFile:()=>RL,diffFolders:()=>HK,ensureUnpatchedDescriptor:()=>LK,ensureUnpatchedLocator:()=>FL,extractPackageToDisk:()=>_K,extractPatchFlags:()=>Xxe,isParentRequired:()=>UK,isPatchDescriptor:()=>TL,isPatchLocator:()=>Tg,loadPatchFiles:()=>eb,makeDescriptor:()=>NL,makeLocator:()=>MK,makePatchHash:()=>jK,parseDescriptor:()=>XP,parseLocator:()=>$P,parsePatchFile:()=>ZP,unpatchDescriptor:()=>vPt,unpatchLocator:()=>SPt});Ge();Dt();Ge();Dt();var uPt=/^@@ -(\d+)(,(\d+))? \+(\d+)(,(\d+))? @@.*/;function O1(t){return J.relative(vt.root,J.resolve(vt.root,fe.toPortablePath(t)))}function fPt(t){let e=t.trim().match(uPt);if(!e)throw new Error(`Bad header line: '${t}'`);return{original:{start:Math.max(Number(e[1]),1),length:Number(e[3]||1)},patched:{start:Math.max(Number(e[4]),1),length:Number(e[6]||1)}}}var APt=420,pPt=493;var Yxe=()=>({semverExclusivity:null,diffLineFromPath:null,diffLineToPath:null,oldMode:null,newMode:null,deletedFileMode:null,newFileMode:null,renameFrom:null,renameTo:null,beforeHash:null,afterHash:null,fromPath:null,toPath:null,hunks:null}),hPt=t=>({header:fPt(t),parts:[]}),gPt={"@":"header","-":"deletion","+":"insertion"," ":"context","\\":"pragma",undefined:"context"};function dPt(t){let e=[],r=Yxe(),s="parsing header",a=null,n=null;function c(){a&&(n&&(a.parts.push(n),n=null),r.hunks.push(a),a=null)}function f(){c(),e.push(r),r=Yxe()}for(let p=0;p0?"patch":"mode change",W=null;switch(U){case"rename":{if(!E||!C)throw new Error("Bad parser state: rename from & to not given");e.push({type:"rename",semverExclusivity:s,fromPath:O1(E),toPath:O1(C)}),W=C}break;case"file deletion":{let ee=a||I;if(!ee)throw new Error("Bad parse state: no path given for file deletion");e.push({type:"file deletion",semverExclusivity:s,hunk:N&&N[0]||null,path:O1(ee),mode:QL(p),hash:S})}break;case"file creation":{let ee=n||T;if(!ee)throw new Error("Bad parse state: no path given for file creation");e.push({type:"file creation",semverExclusivity:s,hunk:N&&N[0]||null,path:O1(ee),mode:QL(h),hash:b})}break;case"patch":case"mode change":W=T||n;break;default:je.assertNever(U);break}W&&c&&f&&c!==f&&e.push({type:"mode change",semverExclusivity:s,path:O1(W),oldMode:QL(c),newMode:QL(f)}),W&&N&&N.length&&e.push({type:"patch",semverExclusivity:s,path:O1(W),hunks:N,beforeHash:S,afterHash:b})}if(e.length===0)throw new Error("Unable to parse patch file: No changes found. Make sure the patch is a valid UTF8 encoded string");return e}function QL(t){let e=parseInt(t,8)&511;if(e!==APt&&e!==pPt)throw new Error(`Unexpected file mode string: ${t}`);return e}function ZP(t){let e=t.split(/\n/g);return e[e.length-1]===""&&e.pop(),mPt(dPt(e))}function yPt(t){let e=0,r=0;for(let{type:s,lines:a}of t.parts)switch(s){case"context":r+=a.length,e+=a.length;break;case"deletion":e+=a.length;break;case"insertion":r+=a.length;break;default:je.assertNever(s);break}if(e!==t.header.original.length||r!==t.header.patched.length){let s=a=>a<0?a:`+${a}`;throw new Error(`hunk header integrity check failed (expected @@ ${s(t.header.original.length)} ${s(t.header.patched.length)} @@, got @@ ${s(e)} ${s(r)} @@)`)}}Ge();Dt();var L1=class extends Error{constructor(r,s){super(`Cannot apply hunk #${r+1}`);this.hunk=s}};async function M1(t,e,r){let s=await t.lstatPromise(e),a=await r();typeof a<"u"&&(e=a),await t.lutimesPromise(e,s.atime,s.mtime)}async function RL(t,{baseFs:e=new Yn,dryRun:r=!1,version:s=null}={}){for(let a of t)if(!(a.semverExclusivity!==null&&s!==null&&!Fr.satisfiesWithPrereleases(s,a.semverExclusivity)))switch(a.type){case"file deletion":if(r){if(!e.existsSync(a.path))throw new Error(`Trying to delete a file that doesn't exist: ${a.path}`)}else await M1(e,J.dirname(a.path),async()=>{await e.unlinkPromise(a.path)});break;case"rename":if(r){if(!e.existsSync(a.fromPath))throw new Error(`Trying to move a file that doesn't exist: ${a.fromPath}`)}else await M1(e,J.dirname(a.fromPath),async()=>{await M1(e,J.dirname(a.toPath),async()=>{await M1(e,a.fromPath,async()=>(await e.movePromise(a.fromPath,a.toPath),a.toPath))})});break;case"file creation":if(r){if(e.existsSync(a.path))throw new Error(`Trying to create a file that already exists: ${a.path}`)}else{let n=a.hunk?a.hunk.parts[0].lines.join(` `)+(a.hunk.parts[0].noNewlineAtEndOfFile?"":` `):"";await e.mkdirpPromise(J.dirname(a.path),{chmod:493,utimes:[fi.SAFE_TIME,fi.SAFE_TIME]}),await e.writeFilePromise(a.path,n,{mode:a.mode}),await e.utimesPromise(a.path,fi.SAFE_TIME,fi.SAFE_TIME)}break;case"patch":await M1(e,a.path,async()=>{await CPt(a,{baseFs:e,dryRun:r})});break;case"mode change":{let c=(await e.statPromise(a.path)).mode;if(Vxe(a.newMode)!==Vxe(c))continue;await M1(e,a.path,async()=>{await e.chmodPromise(a.path,a.newMode)})}break;default:je.assertNever(a);break}}function Vxe(t){return(t&64)>0}function Jxe(t){return t.replace(/\s+$/,"")}function IPt(t,e){return Jxe(t)===Jxe(e)}async function CPt({hunks:t,path:e},{baseFs:r,dryRun:s=!1}){let a=await r.statSync(e).mode,c=(await r.readFileSync(e,"utf8")).split(/\n/),f=[],p=0,h=0;for(let C of t){let S=Math.max(h,C.header.patched.start+p),b=Math.max(0,S-h),I=Math.max(0,c.length-S-C.header.original.length),T=Math.max(b,I),N=0,U=0,W=null;for(;N<=T;){if(N<=b&&(U=S-N,W=Kxe(C,c,U),W!==null)){N=-N;break}if(N<=I&&(U=S+N,W=Kxe(C,c,U),W!==null))break;N+=1}if(W===null)throw new L1(t.indexOf(C),C);f.push(W),p+=N,h=U+C.header.original.length}if(s)return;let E=0;for(let C of f)for(let S of C)switch(S.type){case"splice":{let b=S.index+E;c.splice(b,S.numToDelete,...S.linesToInsert),E+=S.linesToInsert.length-S.numToDelete}break;case"pop":c.pop();break;case"push":c.push(S.line);break;default:je.assertNever(S);break}await r.writeFilePromise(e,c.join(` `),{mode:a})}function Kxe(t,e,r){let s=[];for(let a of t.parts)switch(a.type){case"context":case"deletion":{for(let n of a.lines){let c=e[r];if(c==null||!IPt(c,n))return null;r+=1}a.type==="deletion"&&(s.push({type:"splice",index:r-a.lines.length,numToDelete:a.lines.length,linesToInsert:[]}),a.noNewlineAtEndOfFile&&s.push({type:"push",line:""}))}break;case"insertion":s.push({type:"splice",index:r,numToDelete:0,linesToInsert:a.lines}),a.noNewlineAtEndOfFile&&s.push({type:"pop"});break;default:je.assertNever(a.type);break}return s}var BPt=/^builtin<([^>]+)>$/;function U1(t,e){let{protocol:r,source:s,selector:a,params:n}=G.parseRange(t);if(r!=="patch:")throw new Error("Invalid patch range");if(s===null)throw new Error("Patch locators must explicitly define their source");let c=a?a.split(/&/).map(E=>fe.toPortablePath(E)):[],f=n&&typeof n.locator=="string"?G.parseLocator(n.locator):null,p=n&&typeof n.version=="string"?n.version:null,h=e(s);return{parentLocator:f,sourceItem:h,patchPaths:c,sourceVersion:p}}function TL(t){return t.range.startsWith("patch:")}function Tg(t){return t.reference.startsWith("patch:")}function XP(t){let{sourceItem:e,...r}=U1(t.range,G.parseDescriptor);return{...r,sourceDescriptor:e}}function $P(t){let{sourceItem:e,...r}=U1(t.reference,G.parseLocator);return{...r,sourceLocator:e}}function vPt(t){let{sourceItem:e}=U1(t.range,G.parseDescriptor);return e}function SPt(t){let{sourceItem:e}=U1(t.reference,G.parseLocator);return e}function LK(t){if(!TL(t))return t;let{sourceItem:e}=U1(t.range,G.parseDescriptor);return e}function FL(t){if(!Tg(t))return t;let{sourceItem:e}=U1(t.reference,G.parseLocator);return e}function zxe({parentLocator:t,sourceItem:e,patchPaths:r,sourceVersion:s,patchHash:a},n){let c=t!==null?{locator:G.stringifyLocator(t)}:{},f=typeof s<"u"?{version:s}:{},p=typeof a<"u"?{hash:a}:{};return G.makeRange({protocol:"patch:",source:n(e),selector:r.join("&"),params:{...f,...p,...c}})}function NL(t,{parentLocator:e,sourceDescriptor:r,patchPaths:s}){return G.makeDescriptor(t,zxe({parentLocator:e,sourceItem:r,patchPaths:s},G.stringifyDescriptor))}function MK(t,{parentLocator:e,sourcePackage:r,patchPaths:s,patchHash:a}){return G.makeLocator(t,zxe({parentLocator:e,sourceItem:r,sourceVersion:r.version,patchPaths:s,patchHash:a},G.stringifyLocator))}function Zxe({onAbsolute:t,onRelative:e,onProject:r,onBuiltin:s},a){let n=a.lastIndexOf("!");n!==-1&&(a=a.slice(n+1));let c=a.match(BPt);return c!==null?s(c[1]):a.startsWith("~/")?r(a.slice(2)):J.isAbsolute(a)?t(a):e(a)}function Xxe(t){let e=t.lastIndexOf("!");return{optional:(e!==-1?new Set(t.slice(0,e).split(/!/)):new Set).has("optional")}}function UK(t){return Zxe({onAbsolute:()=>!1,onRelative:()=>!0,onProject:()=>!1,onBuiltin:()=>!1},t)}async function eb(t,e,r){let s=t!==null?await r.fetcher.fetch(t,r):null,a=s&&s.localPath?{packageFs:new Sn(vt.root),prefixPath:J.relative(vt.root,s.localPath)}:s;s&&s!==a&&s.releaseFs&&s.releaseFs();let n=await je.releaseAfterUseAsync(async()=>await Promise.all(e.map(async c=>{let f=Xxe(c),p=await Zxe({onAbsolute:async h=>await ce.readFilePromise(h,"utf8"),onRelative:async h=>{if(a===null)throw new Error("Assertion failed: The parent locator should have been fetched");return await a.packageFs.readFilePromise(J.join(a.prefixPath,h),"utf8")},onProject:async h=>await ce.readFilePromise(J.join(r.project.cwd,h),"utf8"),onBuiltin:async h=>await r.project.configuration.firstHook(E=>E.getBuiltinPatch,r.project,h)},c);return{...f,source:p}})));for(let c of n)typeof c.source=="string"&&(c.source=c.source.replace(/\r\n?/g,` `));return n}async function _K(t,{cache:e,project:r}){let s=r.storedPackages.get(t.locatorHash);if(typeof s>"u")throw new Error("Assertion failed: Expected the package to be registered");let a=FL(t),n=r.storedChecksums,c=new ki,f=await ce.mktempPromise(),p=J.join(f,"source"),h=J.join(f,"user"),E=J.join(f,".yarn-patch.json"),C=r.configuration.makeFetcher(),S=[];try{let b,I;if(t.locatorHash===a.locatorHash){let T=await C.fetch(t,{cache:e,project:r,fetcher:C,checksums:n,report:c});S.push(()=>T.releaseFs?.()),b=T,I=T}else b=await C.fetch(t,{cache:e,project:r,fetcher:C,checksums:n,report:c}),S.push(()=>b.releaseFs?.()),I=await C.fetch(t,{cache:e,project:r,fetcher:C,checksums:n,report:c}),S.push(()=>I.releaseFs?.());await Promise.all([ce.copyPromise(p,b.prefixPath,{baseFs:b.packageFs}),ce.copyPromise(h,I.prefixPath,{baseFs:I.packageFs}),ce.writeJsonPromise(E,{locator:G.stringifyLocator(t),version:s.version})])}finally{for(let b of S)b()}return ce.detachTemp(f),h}async function HK(t,e){let r=fe.fromPortablePath(t).replace(/\\/g,"/"),s=fe.fromPortablePath(e).replace(/\\/g,"/"),{stdout:a,stderr:n}=await qr.execvp("git",["-c","core.safecrlf=false","diff","--src-prefix=a/","--dst-prefix=b/","--ignore-cr-at-eol","--full-index","--no-index","--no-renames","--text",r,s],{cwd:fe.toPortablePath(process.cwd()),env:{...process.env,GIT_CONFIG_NOSYSTEM:"1",HOME:"",XDG_CONFIG_HOME:"",USERPROFILE:""}});if(n.length>0)throw new Error(`Unable to diff directories. Make sure you have a recent version of 'git' available in PATH. The following error was reported by 'git': ${n}`);let c=r.startsWith("/")?f=>f.slice(1):f=>f;return a.replace(new RegExp(`(a|b)(${je.escapeRegExp(`/${c(r)}/`)})`,"g"),"$1/").replace(new RegExp(`(a|b)${je.escapeRegExp(`/${c(s)}/`)}`,"g"),"$1/").replace(new RegExp(je.escapeRegExp(`${r}/`),"g"),"").replace(new RegExp(je.escapeRegExp(`${s}/`),"g"),"")}function jK(t,e){let r=[];for(let{source:s}of t){if(s===null)continue;let a=ZP(s);for(let n of a){let{semverExclusivity:c,...f}=n;c!==null&&e!==null&&!Fr.satisfiesWithPrereleases(e,c)||r.push(JSON.stringify(f))}}return Nn.makeHash(`${3}`,...r).slice(0,6)}Ge();function $xe(t,{configuration:e,report:r}){for(let s of t.parts)for(let a of s.lines)switch(s.type){case"context":r.reportInfo(null,` ${he.pretty(e,a,"grey")}`);break;case"deletion":r.reportError(28,`- ${he.pretty(e,a,he.Type.REMOVED)}`);break;case"insertion":r.reportError(28,`+ ${he.pretty(e,a,he.Type.ADDED)}`);break;default:je.assertNever(s.type)}}var tb=class{supports(e,r){return!!Tg(e)}getLocalPath(e,r){return null}async fetch(e,r){let s=r.checksums.get(e.locatorHash)||null,[a,n,c]=await r.cache.fetchPackageFromCache(e,s,{onHit:()=>r.report.reportCacheHit(e),onMiss:()=>r.report.reportCacheMiss(e,`${G.prettyLocator(r.project.configuration,e)} can't be found in the cache and will be fetched from the disk`),loader:()=>this.patchPackage(e,r),...r.cacheOptions});return{packageFs:a,releaseFs:n,prefixPath:G.getIdentVendorPath(e),localPath:this.getLocalPath(e,r),checksum:c}}async patchPackage(e,r){let{parentLocator:s,sourceLocator:a,sourceVersion:n,patchPaths:c}=$P(e),f=await eb(s,c,r),p=await ce.mktempPromise(),h=J.join(p,"current.zip"),E=await r.fetcher.fetch(a,r),C=G.getIdentVendorPath(e),S=new As(h,{create:!0,level:r.project.configuration.get("compressionLevel")});await je.releaseAfterUseAsync(async()=>{await S.copyPromise(C,E.prefixPath,{baseFs:E.packageFs,stableSort:!0})},E.releaseFs),S.saveAndClose();for(let{source:b,optional:I}of f){if(b===null)continue;let T=new As(h,{level:r.project.configuration.get("compressionLevel")}),N=new Sn(J.resolve(vt.root,C),{baseFs:T});try{await RL(ZP(b),{baseFs:N,version:n})}catch(U){if(!(U instanceof L1))throw U;let W=r.project.configuration.get("enableInlineHunks"),ee=!W&&!I?" (set enableInlineHunks for details)":"",ie=`${G.prettyLocator(r.project.configuration,e)}: ${U.message}${ee}`,ue=le=>{W&&$xe(U.hunk,{configuration:r.project.configuration,report:le})};if(T.discardAndClose(),I){r.report.reportWarningOnce(66,ie,{reportExtra:ue});continue}else throw new jt(66,ie,ue)}T.saveAndClose()}return new As(h,{level:r.project.configuration.get("compressionLevel")})}};Ge();var rb=class{supportsDescriptor(e,r){return!!TL(e)}supportsLocator(e,r){return!!Tg(e)}shouldPersistResolution(e,r){return!1}bindDescriptor(e,r,s){let{patchPaths:a}=XP(e);return a.every(n=>!UK(n))?e:G.bindDescriptor(e,{locator:G.stringifyLocator(r)})}getResolutionDependencies(e,r){let{sourceDescriptor:s}=XP(e);return{sourceDescriptor:r.project.configuration.normalizeDependency(s)}}async getCandidates(e,r,s){if(!s.fetchOptions)throw new Error("Assertion failed: This resolver cannot be used unless a fetcher is configured");let{parentLocator:a,patchPaths:n}=XP(e),c=await eb(a,n,s.fetchOptions),f=r.sourceDescriptor;if(typeof f>"u")throw new Error("Assertion failed: The dependency should have been resolved");let p=jK(c,f.version);return[MK(e,{parentLocator:a,sourcePackage:f,patchPaths:n,patchHash:p})]}async getSatisfying(e,r,s,a){let[n]=await this.getCandidates(e,r,a);return{locators:s.filter(c=>c.locatorHash===n.locatorHash),sorted:!1}}async resolve(e,r){let{sourceLocator:s}=$P(e);return{...await r.resolver.resolve(s,r),...e}}};Ge();Dt();Yt();var _1=class extends ft{constructor(){super(...arguments);this.save=ge.Boolean("-s,--save",!1,{description:"Add the patch to your resolution entries"});this.patchFolder=ge.String()}static{this.paths=[["patch-commit"]]}static{this.usage=ot.Usage({description:"generate a patch out of a directory",details:"\n By default, this will print a patchfile on stdout based on the diff between the folder passed in and the original version of the package. Such file is suitable for consumption with the `patch:` protocol.\n\n With the `-s,--save` option set, the patchfile won't be printed on stdout anymore and will instead be stored within a local file (by default kept within `.yarn/patches`, but configurable via the `patchFolder` setting). A `resolutions` entry will also be added to your top-level manifest, referencing the patched package via the `patch:` protocol.\n\n Note that only folders generated by `yarn patch` are accepted as valid input for `yarn patch-commit`.\n "})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Rt.find(r,this.context.cwd);if(!a)throw new ar(s.cwd,this.context.cwd);await s.restoreInstallState();let n=J.resolve(this.context.cwd,fe.toPortablePath(this.patchFolder)),c=J.join(n,"../source"),f=J.join(n,"../.yarn-patch.json");if(!ce.existsSync(c))throw new nt("The argument folder didn't get created by 'yarn patch'");let p=await HK(c,n),h=await ce.readJsonPromise(f),E=G.parseLocator(h.locator,!0);if(!s.storedPackages.has(E.locatorHash))throw new nt("No package found in the project for the given locator");if(!this.save){this.context.stdout.write(p);return}let C=r.get("patchFolder"),S=J.join(C,`${G.slugifyLocator(E)}.patch`);await ce.mkdirPromise(C,{recursive:!0}),await ce.writeFilePromise(S,p);let b=[],I=new Map;for(let T of s.storedPackages.values()){if(G.isVirtualLocator(T))continue;let N=T.dependencies.get(E.identHash);if(!N)continue;let U=G.ensureDevirtualizedDescriptor(N),W=LK(U),ee=s.storedResolutions.get(W.descriptorHash);if(!ee)throw new Error("Assertion failed: Expected the resolution to have been registered");if(!s.storedPackages.get(ee))throw new Error("Assertion failed: Expected the package to have been registered");let ue=s.tryWorkspaceByLocator(T);if(ue)b.push(ue);else{let le=s.originalPackages.get(T.locatorHash);if(!le)throw new Error("Assertion failed: Expected the original package to have been registered");let me=le.dependencies.get(N.identHash);if(!me)throw new Error("Assertion failed: Expected the original dependency to have been registered");I.set(me.descriptorHash,me)}}for(let T of b)for(let N of Ut.hardDependencies){let U=T.manifest[N].get(E.identHash);if(!U)continue;let W=NL(U,{parentLocator:null,sourceDescriptor:G.convertLocatorToDescriptor(E),patchPaths:[J.join(Er.home,J.relative(s.cwd,S))]});T.manifest[N].set(U.identHash,W)}for(let T of I.values()){let N=NL(T,{parentLocator:null,sourceDescriptor:G.convertLocatorToDescriptor(E),patchPaths:[J.join(Er.home,J.relative(s.cwd,S))]});s.topLevelWorkspace.manifest.resolutions.push({pattern:{descriptor:{fullName:G.stringifyIdent(N),description:T.range}},reference:N.range})}await s.persist()}};Ge();Dt();Yt();var H1=class extends ft{constructor(){super(...arguments);this.update=ge.Boolean("-u,--update",!1,{description:"Reapply local patches that already apply to this packages"});this.json=ge.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.package=ge.String()}static{this.paths=[["patch"]]}static{this.usage=ot.Usage({description:"prepare a package for patching",details:"\n This command will cause a package to be extracted in a temporary directory intended to be editable at will.\n\n Once you're done with your changes, run `yarn patch-commit -s path` (with `path` being the temporary directory you received) to generate a patchfile and register it into your top-level manifest via the `patch:` protocol. Run `yarn patch-commit -h` for more details.\n\n Calling the command when you already have a patch won't import it by default (in other words, the default behavior is to reset existing patches). However, adding the `-u,--update` flag will import any current patch.\n "})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Rt.find(r,this.context.cwd),n=await Kr.find(r);if(!a)throw new ar(s.cwd,this.context.cwd);await s.restoreInstallState();let c=G.parseLocator(this.package);if(c.reference==="unknown"){let f=je.mapAndFilter([...s.storedPackages.values()],p=>p.identHash!==c.identHash?je.mapAndFilter.skip:G.isVirtualLocator(p)?je.mapAndFilter.skip:Tg(p)!==this.update?je.mapAndFilter.skip:p);if(f.length===0)throw new nt("No package found in the project for the given locator");if(f.length>1)throw new nt(`Multiple candidate packages found; explicitly choose one of them (use \`yarn why \` to get more information as to who depends on them): ${f.map(p=>` - ${G.prettyLocator(r,p)}`).join("")}`);c=f[0]}if(!s.storedPackages.has(c.locatorHash))throw new nt("No package found in the project for the given locator");await Ot.start({configuration:r,json:this.json,stdout:this.context.stdout},async f=>{let p=FL(c),h=await _K(c,{cache:n,project:s});f.reportJson({locator:G.stringifyLocator(p),path:fe.fromPortablePath(h)});let E=this.update?" along with its current modifications":"";f.reportInfo(0,`Package ${G.prettyLocator(r,p)} got extracted with success${E}!`),f.reportInfo(0,`You can now edit the following folder: ${he.pretty(r,fe.fromPortablePath(h),"magenta")}`),f.reportInfo(0,`Once you are done run ${he.pretty(r,`yarn patch-commit -s ${process.platform==="win32"?'"':""}${fe.fromPortablePath(h)}${process.platform==="win32"?'"':""}`,"cyan")} and Yarn will store a patchfile based on your changes.`)})}};var DPt={configuration:{enableInlineHunks:{description:"If true, the installs will print unmatched patch hunks",type:"BOOLEAN",default:!1},patchFolder:{description:"Folder where the patch files must be written",type:"ABSOLUTE_PATH",default:"./.yarn/patches"}},commands:[_1,H1],fetchers:[tb],resolvers:[rb]},PPt=DPt;var YK={};Vt(YK,{PnpmLinker:()=>nb,default:()=>TPt});Ge();Dt();Yt();var nb=class{getCustomDataKey(){return JSON.stringify({name:"PnpmLinker",version:3})}supportsPackage(e,r){return this.isEnabled(r)}async findPackageLocation(e,r){if(!this.isEnabled(r))throw new Error("Assertion failed: Expected the pnpm linker to be enabled");let s=this.getCustomDataKey(),a=r.project.linkersCustomData.get(s);if(!a)throw new nt(`The project in ${he.pretty(r.project.configuration,`${r.project.cwd}/package.json`,he.Type.PATH)} doesn't seem to have been installed - running an install there might help`);let n=a.pathsByLocator.get(e.locatorHash);if(typeof n>"u")throw new nt(`Couldn't find ${G.prettyLocator(r.project.configuration,e)} in the currently installed pnpm map - running an install might help`);return n.packageLocation}async findPackageLocator(e,r){if(!this.isEnabled(r))return null;let s=this.getCustomDataKey(),a=r.project.linkersCustomData.get(s);if(!a)throw new nt(`The project in ${he.pretty(r.project.configuration,`${r.project.cwd}/package.json`,he.Type.PATH)} doesn't seem to have been installed - running an install there might help`);let n=e.match(/(^.*\/node_modules\/(@[^/]*\/)?[^/]+)(\/.*$)/);if(n){let p=a.locatorByPath.get(n[1]);if(p)return p}let c=e,f=e;do{f=c,c=J.dirname(f);let p=a.locatorByPath.get(f);if(p)return p}while(c!==f);return null}makeInstaller(e){return new qK(e)}isEnabled(e){return e.project.configuration.get("nodeLinker")==="pnpm"}},qK=class{constructor(e){this.opts=e;this.asyncActions=new je.AsyncActions(10);this.customData={pathsByLocator:new Map,locatorByPath:new Map};this.indexFolderPromise=$b(ce,{indexPath:J.join(e.project.configuration.get("globalFolder"),"index")})}attachCustomData(e){}async installPackage(e,r,s){switch(e.linkType){case"SOFT":return this.installPackageSoft(e,r,s);case"HARD":return this.installPackageHard(e,r,s)}throw new Error("Assertion failed: Unsupported package link type")}async installPackageSoft(e,r,s){let a=J.resolve(r.packageFs.getRealPath(),r.prefixPath),n=this.opts.project.tryWorkspaceByLocator(e)?J.join(a,Er.nodeModules):null;return this.customData.pathsByLocator.set(e.locatorHash,{packageLocation:a,dependenciesLocation:n}),{packageLocation:a,buildRequest:null}}async installPackageHard(e,r,s){let a=xPt(e,{project:this.opts.project}),n=a.packageLocation;this.customData.locatorByPath.set(n,G.stringifyLocator(e)),this.customData.pathsByLocator.set(e.locatorHash,a),s.holdFetchResult(this.asyncActions.set(e.locatorHash,async()=>{await ce.mkdirPromise(n,{recursive:!0}),await ce.copyPromise(n,r.prefixPath,{baseFs:r.packageFs,overwrite:!1,linkStrategy:{type:"HardlinkFromIndex",indexPath:await this.indexFolderPromise,autoRepair:!0}})}));let f=G.isVirtualLocator(e)?G.devirtualizeLocator(e):e,p={manifest:await Ut.tryFind(r.prefixPath,{baseFs:r.packageFs})??new Ut,misc:{hasBindingGyp:gA.hasBindingGyp(r)}},h=this.opts.project.getDependencyMeta(f,e.version),E=gA.extractBuildRequest(e,p,h,{configuration:this.opts.project.configuration});return{packageLocation:n,buildRequest:E}}async attachInternalDependencies(e,r){if(this.opts.project.configuration.get("nodeLinker")!=="pnpm"||!eke(e,{project:this.opts.project}))return;let s=this.customData.pathsByLocator.get(e.locatorHash);if(typeof s>"u")throw new Error(`Assertion failed: Expected the package to have been registered (${G.stringifyLocator(e)})`);let{dependenciesLocation:a}=s;a&&this.asyncActions.reduce(e.locatorHash,async n=>{await ce.mkdirPromise(a,{recursive:!0});let c=await kPt(a),f=new Map(c),p=[n],h=(C,S)=>{let b=S;eke(S,{project:this.opts.project})||(this.opts.report.reportWarningOnce(0,"The pnpm linker doesn't support providing different versions to workspaces' peer dependencies"),b=G.devirtualizeLocator(S));let I=this.customData.pathsByLocator.get(b.locatorHash);if(typeof I>"u")throw new Error(`Assertion failed: Expected the package to have been registered (${G.stringifyLocator(S)})`);let T=G.stringifyIdent(C),N=J.join(a,T),U=J.relative(J.dirname(N),I.packageLocation),W=f.get(T);f.delete(T),p.push(Promise.resolve().then(async()=>{if(W){if(W.isSymbolicLink()&&await ce.readlinkPromise(N)===U)return;await ce.removePromise(N)}await ce.mkdirpPromise(J.dirname(N)),process.platform=="win32"&&this.opts.project.configuration.get("winLinkType")==="junctions"?await ce.symlinkPromise(I.packageLocation,N,"junction"):await ce.symlinkPromise(U,N)}))},E=!1;for(let[C,S]of r)C.identHash===e.identHash&&(E=!0),h(C,S);!E&&!this.opts.project.tryWorkspaceByLocator(e)&&h(G.convertLocatorToDescriptor(e),e),p.push(QPt(a,f)),await Promise.all(p)})}async attachExternalDependents(e,r){throw new Error("External dependencies haven't been implemented for the pnpm linker")}async finalizeInstall(){let e=tke(this.opts.project);if(this.opts.project.configuration.get("nodeLinker")!=="pnpm")await ce.removePromise(e);else{let r;try{r=new Set(await ce.readdirPromise(e))}catch{r=new Set}for(let{dependenciesLocation:s}of this.customData.pathsByLocator.values()){if(!s)continue;let a=J.contains(e,s);if(a===null)continue;let[n]=a.split(J.sep);r.delete(n)}await Promise.all([...r].map(async s=>{await ce.removePromise(J.join(e,s))}))}return await this.asyncActions.wait(),await WK(e),this.opts.project.configuration.get("nodeLinker")!=="node-modules"&&await WK(bPt(this.opts.project)),{customData:this.customData}}};function bPt(t){return J.join(t.cwd,Er.nodeModules)}function tke(t){return t.configuration.get("pnpmStoreFolder")}function xPt(t,{project:e}){let r=G.slugifyLocator(t),s=tke(e),a=J.join(s,r,"package"),n=J.join(s,r,Er.nodeModules);return{packageLocation:a,dependenciesLocation:n}}function eke(t,{project:e}){return!G.isVirtualLocator(t)||!e.tryWorkspaceByLocator(t)}async function kPt(t){let e=new Map,r=[];try{r=await ce.readdirPromise(t,{withFileTypes:!0})}catch(s){if(s.code!=="ENOENT")throw s}try{for(let s of r)if(!s.name.startsWith("."))if(s.name.startsWith("@")){let a=await ce.readdirPromise(J.join(t,s.name),{withFileTypes:!0});if(a.length===0)e.set(s.name,s);else for(let n of a)e.set(`${s.name}/${n.name}`,n)}else e.set(s.name,s)}catch(s){if(s.code!=="ENOENT")throw s}return e}async function QPt(t,e){let r=[],s=new Set;for(let a of e.keys()){r.push(ce.removePromise(J.join(t,a)));let n=G.tryParseIdent(a)?.scope;n&&s.add(`@${n}`)}return Promise.all(r).then(()=>Promise.all([...s].map(a=>WK(J.join(t,a)))))}async function WK(t){try{await ce.rmdirPromise(t)}catch(e){if(e.code!=="ENOENT"&&e.code!=="ENOTEMPTY"&&e.code!=="EBUSY")throw e}}var RPt={configuration:{pnpmStoreFolder:{description:"By default, the store is stored in the 'node_modules/.store' of the project. Sometimes in CI scenario's it is convenient to store this in a different location so it can be cached and reused.",type:"ABSOLUTE_PATH",default:"./node_modules/.store"}},linkers:[nb]},TPt=RPt;var $K={};Vt($K,{StageCommand:()=>j1,default:()=>qPt,stageUtils:()=>LL});Ge();Dt();Yt();Ge();Dt();var LL={};Vt(LL,{ActionType:()=>VK,checkConsensus:()=>OL,expandDirectory:()=>zK,findConsensus:()=>ZK,findVcsRoot:()=>JK,genCommitMessage:()=>XK,getCommitPrefix:()=>rke,isYarnFile:()=>KK});Dt();var VK=(n=>(n[n.CREATE=0]="CREATE",n[n.DELETE=1]="DELETE",n[n.ADD=2]="ADD",n[n.REMOVE=3]="REMOVE",n[n.MODIFY=4]="MODIFY",n))(VK||{});async function JK(t,{marker:e}){do if(!ce.existsSync(J.join(t,e)))t=J.dirname(t);else return t;while(t!=="/");return null}function KK(t,{roots:e,names:r}){if(r.has(J.basename(t)))return!0;do if(!e.has(t))t=J.dirname(t);else return!0;while(t!=="/");return!1}function zK(t){let e=[],r=[t];for(;r.length>0;){let s=r.pop(),a=ce.readdirSync(s);for(let n of a){let c=J.resolve(s,n);ce.lstatSync(c).isDirectory()?r.push(c):e.push(c)}}return e}function OL(t,e){let r=0,s=0;for(let a of t)a!=="wip"&&(e.test(a)?r+=1:s+=1);return r>=s}function ZK(t){let e=OL(t,/^(\w\(\w+\):\s*)?\w+s/),r=OL(t,/^(\w\(\w+\):\s*)?[A-Z]/),s=OL(t,/^\w\(\w+\):/);return{useThirdPerson:e,useUpperCase:r,useComponent:s}}function rke(t){return t.useComponent?"chore(yarn): ":""}var FPt=new Map([[0,"create"],[1,"delete"],[2,"add"],[3,"remove"],[4,"update"]]);function XK(t,e){let r=rke(t),s=[],a=e.slice().sort((n,c)=>n[0]-c[0]);for(;a.length>0;){let[n,c]=a.shift(),f=FPt.get(n);t.useUpperCase&&s.length===0&&(f=`${f[0].toUpperCase()}${f.slice(1)}`),t.useThirdPerson&&(f+="s");let p=[c];for(;a.length>0&&a[0][0]===n;){let[,E]=a.shift();p.push(E)}p.sort();let h=p.shift();p.length===1?h+=" (and one other)":p.length>1&&(h+=` (and ${p.length} others)`),s.push(`${f} ${h}`)}return`${r}${s.join(", ")}`}var NPt="Commit generated via `yarn stage`",OPt=11;async function nke(t){let{code:e,stdout:r}=await qr.execvp("git",["log","-1","--pretty=format:%H"],{cwd:t});return e===0?r.trim():null}async function LPt(t,e){let r=[],s=e.filter(h=>J.basename(h.path)==="package.json");for(let{action:h,path:E}of s){let C=J.relative(t,E);if(h===4){let S=await nke(t),{stdout:b}=await qr.execvp("git",["show",`${S}:${C}`],{cwd:t,strict:!0}),I=await Ut.fromText(b),T=await Ut.fromFile(E),N=new Map([...T.dependencies,...T.devDependencies]),U=new Map([...I.dependencies,...I.devDependencies]);for(let[W,ee]of U){let ie=G.stringifyIdent(ee),ue=N.get(W);ue?ue.range!==ee.range&&r.push([4,`${ie} to ${ue.range}`]):r.push([3,ie])}for(let[W,ee]of N)U.has(W)||r.push([2,G.stringifyIdent(ee)])}else if(h===0){let S=await Ut.fromFile(E);S.name?r.push([0,G.stringifyIdent(S.name)]):r.push([0,"a package"])}else if(h===1){let S=await nke(t),{stdout:b}=await qr.execvp("git",["show",`${S}:${C}`],{cwd:t,strict:!0}),I=await Ut.fromText(b);I.name?r.push([1,G.stringifyIdent(I.name)]):r.push([1,"a package"])}else throw new Error("Assertion failed: Unsupported action type")}let{code:a,stdout:n}=await qr.execvp("git",["log",`-${OPt}`,"--pretty=format:%s"],{cwd:t}),c=a===0?n.split(/\n/g).filter(h=>h!==""):[],f=ZK(c);return XK(f,r)}var MPt={0:[" A ","?? "],4:[" M "],1:[" D "]},UPt={0:["A "],4:["M "],1:["D "]},ike={async findRoot(t){return await JK(t,{marker:".git"})},async filterChanges(t,e,r,s){let{stdout:a}=await qr.execvp("git",["status","-s"],{cwd:t,strict:!0}),n=a.toString().split(/\n/g),c=s?.staged?UPt:MPt;return[].concat(...n.map(p=>{if(p==="")return[];let h=p.slice(0,3),E=J.resolve(t,p.slice(3));if(!s?.staged&&h==="?? "&&p.endsWith("/"))return zK(E).map(C=>({action:0,path:C}));{let S=[0,4,1].find(b=>c[b].includes(h));return S!==void 0?[{action:S,path:E}]:[]}})).filter(p=>KK(p.path,{roots:e,names:r}))},async genCommitMessage(t,e){return await LPt(t,e)},async makeStage(t,e){let r=e.map(s=>fe.fromPortablePath(s.path));await qr.execvp("git",["add","--",...r],{cwd:t,strict:!0})},async makeCommit(t,e,r){let s=e.map(a=>fe.fromPortablePath(a.path));await qr.execvp("git",["add","-N","--",...s],{cwd:t,strict:!0}),await qr.execvp("git",["commit","-m",`${r} ${NPt} `,"--",...s],{cwd:t,strict:!0})},async makeReset(t,e){let r=e.map(s=>fe.fromPortablePath(s.path));await qr.execvp("git",["reset","HEAD","--",...r],{cwd:t,strict:!0})}};var _Pt=[ike],j1=class extends ft{constructor(){super(...arguments);this.commit=ge.Boolean("-c,--commit",!1,{description:"Commit the staged files"});this.reset=ge.Boolean("-r,--reset",!1,{description:"Remove all files from the staging area"});this.dryRun=ge.Boolean("-n,--dry-run",!1,{description:"Print the commit message and the list of modified files without staging / committing"});this.update=ge.Boolean("-u,--update",!1,{hidden:!0})}static{this.paths=[["stage"]]}static{this.usage=ot.Usage({description:"add all yarn files to your vcs",details:"\n This command will add to your staging area the files belonging to Yarn (typically any modified `package.json` and `.yarnrc.yml` files, but also linker-generated files, cache data, etc). It will take your ignore list into account, so the cache files won't be added if the cache is ignored in a `.gitignore` file (assuming you use Git).\n\n Running `--reset` will instead remove them from the staging area (the changes will still be there, but won't be committed until you stage them back).\n\n Since the staging area is a non-existent concept in Mercurial, Yarn will always create a new commit when running this command on Mercurial repositories. You can get this behavior when using Git by using the `--commit` flag which will directly create a commit.\n ",examples:[["Adds all modified project files to the staging area","yarn stage"],["Creates a new commit containing all modified project files","yarn stage --commit"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s}=await Rt.find(r,this.context.cwd),{driver:a,root:n}=await HPt(s.cwd),c=[r.get("cacheFolder"),r.get("globalFolder"),r.get("virtualFolder"),r.get("yarnPath")];await r.triggerHook(C=>C.populateYarnPaths,s,C=>{c.push(C)});let f=new Set;for(let C of c)for(let S of jPt(n,C))f.add(S);let p=new Set([r.get("rcFilename"),Er.lockfile,Er.manifest]),h=await a.filterChanges(n,f,p),E=await a.genCommitMessage(n,h);if(this.dryRun)if(this.commit)this.context.stdout.write(`${E} `);else for(let C of h)this.context.stdout.write(`${fe.fromPortablePath(C.path)} `);else if(this.reset){let C=await a.filterChanges(n,f,p,{staged:!0});C.length===0?this.context.stdout.write("No staged changes found!"):await a.makeReset(n,C)}else h.length===0?this.context.stdout.write("No changes found!"):this.commit?await a.makeCommit(n,h,E):(await a.makeStage(n,h),this.context.stdout.write(E))}};async function HPt(t){let e=null,r=null;for(let s of _Pt)if((r=await s.findRoot(t))!==null){e=s;break}if(e===null||r===null)throw new nt("No stage driver has been found for your current project");return{driver:e,root:r}}function jPt(t,e){let r=[];if(e===null)return r;for(;;){(e===t||e.startsWith(`${t}/`))&&r.push(e);let s;try{s=ce.statSync(e)}catch{break}if(s.isSymbolicLink())e=J.resolve(J.dirname(e),ce.readlinkSync(e));else break}return r}var GPt={commands:[j1]},qPt=GPt;var ez={};Vt(ez,{default:()=>XPt});Ge();Ge();Dt();var ake=ut(Ai());Ge();var ske=ut(l9()),WPt="e8e1bd300d860104bb8c58453ffa1eb4",YPt="OFCNCOG2CU",oke=async(t,e)=>{let r=G.stringifyIdent(t),a=VPt(e).initIndex("npm-search");try{return(await a.getObject(r,{attributesToRetrieve:["types"]})).types?.ts==="definitely-typed"}catch{return!1}},VPt=t=>(0,ske.default)(YPt,WPt,{requester:{async send(r){try{let s=await ln.request(r.url,r.data||null,{configuration:t,headers:r.headers});return{content:s.body,isTimedOut:!1,status:s.statusCode}}catch(s){return{content:s.response.body,isTimedOut:!1,status:s.response.statusCode}}}}});var lke=t=>t.scope?`${t.scope}__${t.name}`:`${t.name}`,JPt=async(t,e,r,s)=>{if(r.scope==="types")return;let{project:a}=t,{configuration:n}=a;if(!(n.get("tsEnableAutoTypes")??(ce.existsSync(J.join(t.cwd,"tsconfig.json"))||ce.existsSync(J.join(a.cwd,"tsconfig.json")))))return;let f=n.makeResolver(),p={project:a,resolver:f,report:new ki};if(!await oke(r,n))return;let E=lke(r),C=G.parseRange(r.range).selector;if(!Fr.validRange(C)){let N=n.normalizeDependency(r),U=await f.getCandidates(N,{},p);C=G.parseRange(U[0].reference).selector}let S=ake.default.coerce(C);if(S===null)return;let b=`${Zu.Modifier.CARET}${S.major}`,I=G.makeDescriptor(G.makeIdent("types",E),b),T=je.mapAndFind(a.workspaces,N=>{let U=N.manifest.dependencies.get(r.identHash)?.descriptorHash,W=N.manifest.devDependencies.get(r.identHash)?.descriptorHash;if(U!==r.descriptorHash&&W!==r.descriptorHash)return je.mapAndFind.skip;let ee=[];for(let ie of Ut.allDependencies){let ue=N.manifest[ie].get(I.identHash);typeof ue>"u"||ee.push([ie,ue])}return ee.length===0?je.mapAndFind.skip:ee});if(typeof T<"u")for(let[N,U]of T)t.manifest[N].set(U.identHash,U);else{try{let N=n.normalizeDependency(I);if((await f.getCandidates(N,{},p)).length===0)return}catch{return}t.manifest[Zu.Target.DEVELOPMENT].set(I.identHash,I)}},KPt=async(t,e,r)=>{if(r.scope==="types")return;let{project:s}=t,{configuration:a}=s;if(!(a.get("tsEnableAutoTypes")??(ce.existsSync(J.join(t.cwd,"tsconfig.json"))||ce.existsSync(J.join(s.cwd,"tsconfig.json")))))return;let c=lke(r),f=G.makeIdent("types",c);for(let p of Ut.allDependencies)typeof t.manifest[p].get(f.identHash)>"u"||t.manifest[p].delete(f.identHash)},zPt=(t,e)=>{e.publishConfig&&e.publishConfig.typings&&(e.typings=e.publishConfig.typings),e.publishConfig&&e.publishConfig.types&&(e.types=e.publishConfig.types)},ZPt={configuration:{tsEnableAutoTypes:{description:"Whether Yarn should auto-install @types/ dependencies on 'yarn add'",type:"BOOLEAN",isNullable:!0,default:null}},hooks:{afterWorkspaceDependencyAddition:JPt,afterWorkspaceDependencyRemoval:KPt,beforeWorkspacePacking:zPt}},XPt=ZPt;var sz={};Vt(sz,{VersionApplyCommand:()=>Y1,VersionCheckCommand:()=>V1,VersionCommand:()=>J1,default:()=>nbt,versionUtils:()=>W1});Ge();Ge();Yt();var W1={};Vt(W1,{Decision:()=>G1,applyPrerelease:()=>cke,applyReleases:()=>iz,applyStrategy:()=>ib,clearVersionFiles:()=>tz,getUndecidedDependentWorkspaces:()=>ob,getUndecidedWorkspaces:()=>ML,openVersionFile:()=>q1,requireMoreDecisions:()=>ebt,resolveVersionFiles:()=>sb,suggestStrategy:()=>nz,updateVersionFiles:()=>rz,validateReleaseDecision:()=>dy});Ge();Dt();wc();Yt();ql();var kA=ut(Ai()),$Pt=/^(>=|[~^]|)(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(-(0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(\.(0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*)?(\+[0-9a-zA-Z-]+(\.[0-9a-zA-Z-]+)*)?$/,G1=(h=>(h.UNDECIDED="undecided",h.DECLINE="decline",h.MAJOR="major",h.MINOR="minor",h.PATCH="patch",h.PREMAJOR="premajor",h.PREMINOR="preminor",h.PREPATCH="prepatch",h.PRERELEASE="prerelease",h))(G1||{});function dy(t){let e=kA.default.valid(t);return e||je.validateEnum(N4(G1,"UNDECIDED"),t)}async function sb(t,{prerelease:e=null}={}){let r=new Map,s=t.configuration.get("deferredVersionFolder");if(!ce.existsSync(s))return r;let a=await ce.readdirPromise(s);for(let n of a){if(!n.endsWith(".yml"))continue;let c=J.join(s,n),f=await ce.readFilePromise(c,"utf8"),p=as(f);for(let[h,E]of Object.entries(p.releases||{})){if(E==="decline")continue;let C=G.parseIdent(h),S=t.tryWorkspaceByIdent(C);if(S===null)throw new Error(`Assertion failed: Expected a release definition file to only reference existing workspaces (${J.basename(c)} references ${h})`);if(S.manifest.version===null)throw new Error(`Assertion failed: Expected the workspace to have a version (${G.prettyLocator(t.configuration,S.anchoredLocator)})`);let b=S.manifest.raw.stableVersion??S.manifest.version,I=r.get(S),T=ib(E==="prerelease"?S.manifest.version:b,dy(E));if(T===null)throw new Error(`Assertion failed: Expected ${b} to support being bumped via strategy ${E}`);let N=typeof I<"u"?kA.default.gt(T,I)?T:I:T;r.set(S,N)}}return e&&(r=new Map([...r].map(([n,c])=>[n,cke(c,{current:n.manifest.version,prerelease:e})]))),r}async function tz(t){let e=t.configuration.get("deferredVersionFolder");ce.existsSync(e)&&await ce.removePromise(e)}async function rz(t,e){let r=new Set(e),s=t.configuration.get("deferredVersionFolder");if(!ce.existsSync(s))return;let a=await ce.readdirPromise(s);for(let n of a){if(!n.endsWith(".yml"))continue;let c=J.join(s,n),f=await ce.readFilePromise(c,"utf8"),p=as(f),h=p?.releases;if(h){for(let E of Object.keys(h)){let C=G.parseIdent(E),S=t.tryWorkspaceByIdent(C);(S===null||r.has(S))&&delete p.releases[E]}Object.keys(p.releases).length>0?await ce.changeFilePromise(c,nl(new nl.PreserveOrdering(p))):await ce.unlinkPromise(c)}}}async function q1(t,{allowEmpty:e=!1}={}){let r=t.configuration;if(r.projectCwd===null)throw new nt("This command can only be run from within a Yarn project");let s=await ka.fetchRoot(r.projectCwd),a=s!==null?await ka.fetchBase(s,{baseRefs:r.get("changesetBaseRefs")}):null,n=s!==null?await ka.fetchChangedFiles(s,{base:a.hash,project:t}):[],c=r.get("deferredVersionFolder"),f=n.filter(b=>J.contains(c,b)!==null);if(f.length>1)throw new nt(`Your current branch contains multiple versioning files; this isn't supported: - ${f.map(b=>fe.fromPortablePath(b)).join(` - `)}`);let p=new Set(je.mapAndFilter(n,b=>{let I=t.tryWorkspaceByFilePath(b);return I===null?je.mapAndFilter.skip:I}));if(f.length===0&&p.size===0&&!e)return null;let h=f.length===1?f[0]:J.join(c,`${Nn.makeHash(Math.random().toString()).slice(0,8)}.yml`),E=ce.existsSync(h)?await ce.readFilePromise(h,"utf8"):"{}",C=as(E),S=new Map;for(let b of C.declined||[]){let I=G.parseIdent(b),T=t.getWorkspaceByIdent(I);S.set(T,"decline")}for(let[b,I]of Object.entries(C.releases||{})){let T=G.parseIdent(b),N=t.getWorkspaceByIdent(T);S.set(N,dy(I))}return{project:t,root:s,baseHash:a!==null?a.hash:null,baseTitle:a!==null?a.title:null,changedFiles:new Set(n),changedWorkspaces:p,releaseRoots:new Set([...p].filter(b=>b.manifest.version!==null)),releases:S,async saveAll(){let b={},I=[],T=[];for(let N of t.workspaces){if(N.manifest.version===null)continue;let U=G.stringifyIdent(N.anchoredLocator),W=S.get(N);W==="decline"?I.push(U):typeof W<"u"?b[U]=dy(W):p.has(N)&&T.push(U)}await ce.mkdirPromise(J.dirname(h),{recursive:!0}),await ce.changeFilePromise(h,nl(new nl.PreserveOrdering({releases:Object.keys(b).length>0?b:void 0,declined:I.length>0?I:void 0,undecided:T.length>0?T:void 0})))}}}function ebt(t){return ML(t).size>0||ob(t).length>0}function ML(t){let e=new Set;for(let r of t.changedWorkspaces)r.manifest.version!==null&&(t.releases.has(r)||e.add(r));return e}function ob(t,{include:e=new Set}={}){let r=[],s=new Map(je.mapAndFilter([...t.releases],([n,c])=>c==="decline"?je.mapAndFilter.skip:[n.anchoredLocator.locatorHash,n])),a=new Map(je.mapAndFilter([...t.releases],([n,c])=>c!=="decline"?je.mapAndFilter.skip:[n.anchoredLocator.locatorHash,n]));for(let n of t.project.workspaces)if(!(!e.has(n)&&(a.has(n.anchoredLocator.locatorHash)||s.has(n.anchoredLocator.locatorHash)))&&n.manifest.version!==null)for(let c of Ut.hardDependencies)for(let f of n.manifest.getForScope(c).values()){let p=t.project.tryWorkspaceByDescriptor(f);p!==null&&s.has(p.anchoredLocator.locatorHash)&&r.push([n,p])}return r}function nz(t,e){let r=kA.default.clean(e);for(let s of Object.values(G1))if(s!=="undecided"&&s!=="decline"&&kA.default.inc(t,s)===r)return s;return null}function ib(t,e){if(kA.default.valid(e))return e;if(t===null)throw new nt(`Cannot apply the release strategy "${e}" unless the workspace already has a valid version`);if(!kA.default.valid(t))throw new nt(`Cannot apply the release strategy "${e}" on a non-semver version (${t})`);let r=kA.default.inc(t,e);if(r===null)throw new nt(`Cannot apply the release strategy "${e}" on the specified version (${t})`);return r}function iz(t,e,{report:r,exact:s}){let a=new Map;for(let n of t.workspaces)for(let c of Ut.allDependencies)for(let f of n.manifest[c].values()){let p=t.tryWorkspaceByDescriptor(f);if(p===null||!e.has(p))continue;je.getArrayWithDefault(a,p).push([n,c,f.identHash])}for(let[n,c]of e){let f=n.manifest.version;n.manifest.version=c,kA.default.prerelease(c)===null?delete n.manifest.raw.stableVersion:n.manifest.raw.stableVersion||(n.manifest.raw.stableVersion=f);let p=n.manifest.name!==null?G.stringifyIdent(n.manifest.name):null;r.reportInfo(0,`${G.prettyLocator(t.configuration,n.anchoredLocator)}: Bumped to ${c}`),r.reportJson({cwd:fe.fromPortablePath(n.cwd),ident:p,oldVersion:f,newVersion:c});let h=a.get(n);if(!(typeof h>"u"))for(let[E,C,S]of h){let b=E.manifest[C].get(S);if(typeof b>"u")throw new Error("Assertion failed: The dependency should have existed");let I=b.range,T=!1;if(I.startsWith(Ei.protocol)&&(I=I.slice(Ei.protocol.length),T=!0,I===n.relativeCwd))continue;let N=I.match($Pt);if(!N){r.reportWarning(0,`Couldn't auto-upgrade range ${I} (in ${G.prettyLocator(t.configuration,E.anchoredLocator)})`);continue}let U=s?`${c}`:`${N[1]}${c}`;T&&(U=`${Ei.protocol}${U}`);let W=G.makeDescriptor(b,U);E.manifest[C].set(S,W)}}}var tbt=new Map([["%n",{extract:t=>t.length>=1?[t[0],t.slice(1)]:null,generate:(t=0)=>`${t+1}`}]]);function cke(t,{current:e,prerelease:r}){let s=new kA.default.SemVer(e),a=s.prerelease.slice(),n=[];s.prerelease=[],s.format()!==t&&(a.length=0);let c=!0,f=r.split(/\./g);for(let p of f){let h=tbt.get(p);if(typeof h>"u")n.push(p),a[0]===p?a.shift():c=!1;else{let E=c?h.extract(a):null;E!==null&&typeof E[0]=="number"?(n.push(h.generate(E[0])),a=E[1]):(n.push(h.generate()),c=!1)}}return s.prerelease&&(s.prerelease=[]),`${t}-${n.join(".")}`}var Y1=class extends ft{constructor(){super(...arguments);this.all=ge.Boolean("--all",!1,{description:"Apply the deferred version changes on all workspaces"});this.dryRun=ge.Boolean("--dry-run",!1,{description:"Print the versions without actually generating the package archive"});this.prerelease=ge.String("--prerelease",{description:"Add a prerelease identifier to new versions",tolerateBoolean:!0});this.exact=ge.Boolean("--exact",!1,{description:"Use the exact version of each package, removes any range. Useful for nightly releases where the range might match another version."});this.recursive=ge.Boolean("-R,--recursive",{description:"Release the transitive workspaces as well"});this.json=ge.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"})}static{this.paths=[["version","apply"]]}static{this.usage=ot.Usage({category:"Release-related commands",description:"apply all the deferred version bumps at once",details:` This command will apply the deferred version changes and remove their definitions from the repository. Note that if \`--prerelease\` is set, the given prerelease identifier (by default \`rc.%n\`) will be used on all new versions and the version definitions will be kept as-is. By default only the current workspace will be bumped, but you can configure this behavior by using one of: - \`--recursive\` to also apply the version bump on its dependencies - \`--all\` to apply the version bump on all packages in the repository Note that this command will also update the \`workspace:\` references across all your local workspaces, thus ensuring that they keep referring to the same workspaces even after the version bump. `,examples:[["Apply the version change to the local workspace","yarn version apply"],["Apply the version change to all the workspaces in the local workspace","yarn version apply --all"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Rt.find(r,this.context.cwd),n=await Kr.find(r);if(!a)throw new ar(s.cwd,this.context.cwd);await s.restoreInstallState({restoreResolutions:!1});let c=await Ot.start({configuration:r,json:this.json,stdout:this.context.stdout},async f=>{let p=this.prerelease?typeof this.prerelease!="boolean"?this.prerelease:"rc.%n":null,h=await sb(s,{prerelease:p}),E=new Map;if(this.all)E=h;else{let C=this.recursive?a.getRecursiveWorkspaceDependencies():[a];for(let S of C){let b=h.get(S);typeof b<"u"&&E.set(S,b)}}if(E.size===0){let C=h.size>0?" Did you want to add --all?":"";f.reportWarning(0,`The current workspace doesn't seem to require a version bump.${C}`);return}iz(s,E,{report:f,exact:this.exact}),this.dryRun||(p||(this.all?await tz(s):await rz(s,[...E.keys()])),f.reportSeparator())});return this.dryRun||c.hasErrors()?c.exitCode():await s.installWithNewReport({json:this.json,stdout:this.context.stdout},{cache:n})}};Ge();Dt();Yt();var UL=ut(Ai());var V1=class extends ft{constructor(){super(...arguments);this.interactive=ge.Boolean("-i,--interactive",{description:"Open an interactive interface used to set version bumps"})}static{this.paths=[["version","check"]]}static{this.usage=ot.Usage({category:"Release-related commands",description:"check that all the relevant packages have been bumped",details:"\n **Warning:** This command currently requires Git.\n\n This command will check that all the packages covered by the files listed in argument have been properly bumped or declined to bump.\n\n In the case of a bump, the check will also cover transitive packages - meaning that should `Foo` be bumped, a package `Bar` depending on `Foo` will require a decision as to whether `Bar` will need to be bumped. This check doesn't cross packages that have declined to bump.\n\n In case no arguments are passed to the function, the list of modified files will be generated by comparing the HEAD against `master`.\n ",examples:[["Check whether the modified packages need a bump","yarn version check"]]})}async execute(){return this.interactive?await this.executeInteractive():await this.executeStandard()}async executeInteractive(){iw(this.context);let{Gem:r}=await Promise.resolve().then(()=>(qF(),kW)),{ScrollableItems:s}=await Promise.resolve().then(()=>(JF(),VF)),{FocusRequest:a}=await Promise.resolve().then(()=>(RW(),E2e)),{useListInput:n}=await Promise.resolve().then(()=>(YF(),I2e)),{renderForm:c}=await Promise.resolve().then(()=>(XF(),ZF)),{Box:f,Text:p}=await Promise.resolve().then(()=>ut(Wc())),{default:h,useCallback:E,useState:C}=await Promise.resolve().then(()=>ut(hn())),S=await ze.find(this.context.cwd,this.context.plugins),{project:b,workspace:I}=await Rt.find(S,this.context.cwd);if(!I)throw new ar(b.cwd,this.context.cwd);await b.restoreInstallState();let T=await q1(b);if(T===null||T.releaseRoots.size===0)return 0;if(T.root===null)throw new nt("This command can only be run on Git repositories");let N=()=>h.createElement(f,{flexDirection:"row",paddingBottom:1},h.createElement(f,{flexDirection:"column",width:60},h.createElement(f,null,h.createElement(p,null,"Press ",h.createElement(p,{bold:!0,color:"cyanBright"},""),"/",h.createElement(p,{bold:!0,color:"cyanBright"},"")," to select workspaces.")),h.createElement(f,null,h.createElement(p,null,"Press ",h.createElement(p,{bold:!0,color:"cyanBright"},""),"/",h.createElement(p,{bold:!0,color:"cyanBright"},"")," to select release strategies."))),h.createElement(f,{flexDirection:"column"},h.createElement(f,{marginLeft:1},h.createElement(p,null,"Press ",h.createElement(p,{bold:!0,color:"cyanBright"},"")," to save.")),h.createElement(f,{marginLeft:1},h.createElement(p,null,"Press ",h.createElement(p,{bold:!0,color:"cyanBright"},"")," to abort.")))),U=({workspace:me,active:pe,decision:Be,setDecision:Ce})=>{let g=me.manifest.raw.stableVersion??me.manifest.version;if(g===null)throw new Error(`Assertion failed: The version should have been set (${G.prettyLocator(S,me.anchoredLocator)})`);if(UL.default.prerelease(g)!==null)throw new Error(`Assertion failed: Prerelease identifiers shouldn't be found (${g})`);let we=["undecided","decline","patch","minor","major"];n(Be,we,{active:pe,minus:"left",plus:"right",set:Ce});let ye=Be==="undecided"?h.createElement(p,{color:"yellow"},g):Be==="decline"?h.createElement(p,{color:"green"},g):h.createElement(p,null,h.createElement(p,{color:"magenta"},g)," \u2192 ",h.createElement(p,{color:"green"},UL.default.valid(Be)?Be:UL.default.inc(g,Be)));return h.createElement(f,{flexDirection:"column"},h.createElement(f,null,h.createElement(p,null,G.prettyLocator(S,me.anchoredLocator)," - ",ye)),h.createElement(f,null,we.map(Ae=>h.createElement(f,{key:Ae,paddingLeft:2},h.createElement(p,null,h.createElement(r,{active:Ae===Be})," ",Ae)))))},W=me=>{let pe=new Set(T.releaseRoots),Be=new Map([...me].filter(([Ce])=>pe.has(Ce)));for(;;){let Ce=ob({project:T.project,releases:Be}),g=!1;if(Ce.length>0){for(let[we]of Ce)if(!pe.has(we)){pe.add(we),g=!0;let ye=me.get(we);typeof ye<"u"&&Be.set(we,ye)}}if(!g)break}return{relevantWorkspaces:pe,relevantReleases:Be}},ee=()=>{let[me,pe]=C(()=>new Map(T.releases)),Be=E((Ce,g)=>{let we=new Map(me);g!=="undecided"?we.set(Ce,g):we.delete(Ce);let{relevantReleases:ye}=W(we);pe(ye)},[me,pe]);return[me,Be]},ie=({workspaces:me,releases:pe})=>{let Be=[];Be.push(`${me.size} total`);let Ce=0,g=0;for(let we of me){let ye=pe.get(we);typeof ye>"u"?g+=1:ye!=="decline"&&(Ce+=1)}return Be.push(`${Ce} release${Ce===1?"":"s"}`),Be.push(`${g} remaining`),h.createElement(p,{color:"yellow"},Be.join(", "))},le=await c(({useSubmit:me})=>{let[pe,Be]=ee();me(pe);let{relevantWorkspaces:Ce}=W(pe),g=new Set([...Ce].filter(se=>!T.releaseRoots.has(se))),[we,ye]=C(0),Ae=E(se=>{switch(se){case a.BEFORE:ye(we-1);break;case a.AFTER:ye(we+1);break}},[we,ye]);return h.createElement(f,{flexDirection:"column"},h.createElement(N,null),h.createElement(f,null,h.createElement(p,{wrap:"wrap"},"The following files have been modified in your local checkout.")),h.createElement(f,{flexDirection:"column",marginTop:1,paddingLeft:2},[...T.changedFiles].map(se=>h.createElement(f,{key:se},h.createElement(p,null,h.createElement(p,{color:"grey"},fe.fromPortablePath(T.root)),fe.sep,fe.relative(fe.fromPortablePath(T.root),fe.fromPortablePath(se)))))),T.releaseRoots.size>0&&h.createElement(h.Fragment,null,h.createElement(f,{marginTop:1},h.createElement(p,{wrap:"wrap"},"Because of those files having been modified, the following workspaces may need to be released again (note that private workspaces are also shown here, because even though they won't be published, releasing them will allow us to flag their dependents for potential re-release):")),g.size>3?h.createElement(f,{marginTop:1},h.createElement(ie,{workspaces:T.releaseRoots,releases:pe})):null,h.createElement(f,{marginTop:1,flexDirection:"column"},h.createElement(s,{active:we%2===0,radius:1,size:2,onFocusRequest:Ae},[...T.releaseRoots].map(se=>h.createElement(U,{key:se.cwd,workspace:se,decision:pe.get(se)||"undecided",setDecision:X=>Be(se,X)}))))),g.size>0?h.createElement(h.Fragment,null,h.createElement(f,{marginTop:1},h.createElement(p,{wrap:"wrap"},"The following workspaces depend on other workspaces that have been marked for release, and thus may need to be released as well:")),h.createElement(f,null,h.createElement(p,null,"(Press ",h.createElement(p,{bold:!0,color:"cyanBright"},"")," to move the focus between the workspace groups.)")),g.size>5?h.createElement(f,{marginTop:1},h.createElement(ie,{workspaces:g,releases:pe})):null,h.createElement(f,{marginTop:1,flexDirection:"column"},h.createElement(s,{active:we%2===1,radius:2,size:2,onFocusRequest:Ae},[...g].map(se=>h.createElement(U,{key:se.cwd,workspace:se,decision:pe.get(se)||"undecided",setDecision:X=>Be(se,X)}))))):null)},{versionFile:T},{stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr});if(typeof le>"u")return 1;T.releases.clear();for(let[me,pe]of le)T.releases.set(me,pe);await T.saveAll()}async executeStandard(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Rt.find(r,this.context.cwd);if(!a)throw new ar(s.cwd,this.context.cwd);return await s.restoreInstallState(),(await Ot.start({configuration:r,stdout:this.context.stdout},async c=>{let f=await q1(s);if(f===null||f.releaseRoots.size===0)return;if(f.root===null)throw new nt("This command can only be run on Git repositories");if(c.reportInfo(0,`Your PR was started right after ${he.pretty(r,f.baseHash.slice(0,7),"yellow")} ${he.pretty(r,f.baseTitle,"magenta")}`),f.changedFiles.size>0){c.reportInfo(0,"You have changed the following files since then:"),c.reportSeparator();for(let S of f.changedFiles)c.reportInfo(null,`${he.pretty(r,fe.fromPortablePath(f.root),"gray")}${fe.sep}${fe.relative(fe.fromPortablePath(f.root),fe.fromPortablePath(S))}`)}let p=!1,h=!1,E=ML(f);if(E.size>0){p||c.reportSeparator();for(let S of E)c.reportError(0,`${G.prettyLocator(r,S.anchoredLocator)} has been modified but doesn't have a release strategy attached`);p=!0}let C=ob(f);for(let[S,b]of C)h||c.reportSeparator(),c.reportError(0,`${G.prettyLocator(r,S.anchoredLocator)} doesn't have a release strategy attached, but depends on ${G.prettyWorkspace(r,b)} which is planned for release.`),h=!0;(p||h)&&(c.reportSeparator(),c.reportInfo(0,"This command detected that at least some workspaces have received modifications without explicit instructions as to how they had to be released (if needed)."),c.reportInfo(0,"To correct these errors, run `yarn version check --interactive` then follow the instructions."))})).exitCode()}};Ge();Yt();var _L=ut(Ai());var J1=class extends ft{constructor(){super(...arguments);this.deferred=ge.Boolean("-d,--deferred",{description:"Prepare the version to be bumped during the next release cycle"});this.immediate=ge.Boolean("-i,--immediate",{description:"Bump the version immediately"});this.strategy=ge.String()}static{this.paths=[["version"]]}static{this.usage=ot.Usage({category:"Release-related commands",description:"apply a new version to the current package",details:"\n This command will bump the version number for the given package, following the specified strategy:\n\n - If `major`, the first number from the semver range will be increased (`X.0.0`).\n - If `minor`, the second number from the semver range will be increased (`0.X.0`).\n - If `patch`, the third number from the semver range will be increased (`0.0.X`).\n - If prefixed by `pre` (`premajor`, ...), a `-0` suffix will be set (`0.0.0-0`).\n - If `prerelease`, the suffix will be increased (`0.0.0-X`); the third number from the semver range will also be increased if there was no suffix in the previous version.\n - If `decline`, the nonce will be increased for `yarn version check` to pass without version bump.\n - If a valid semver range, it will be used as new version.\n - If unspecified, Yarn will ask you for guidance.\n\n For more information about the `--deferred` flag, consult our documentation (https://yarnpkg.com/features/release-workflow#deferred-versioning).\n ",examples:[["Immediately bump the version to the next major","yarn version major"],["Prepare the version to be bumped to the next major","yarn version major --deferred"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Rt.find(r,this.context.cwd);if(!a)throw new ar(s.cwd,this.context.cwd);let n=r.get("preferDeferredVersions");this.deferred&&(n=!0),this.immediate&&(n=!1);let c=_L.default.valid(this.strategy),f=this.strategy==="decline",p;if(c)if(a.manifest.version!==null){let E=nz(a.manifest.version,this.strategy);E!==null?p=E:p=this.strategy}else p=this.strategy;else{let E=a.manifest.version;if(!f){if(E===null)throw new nt("Can't bump the version if there wasn't a version to begin with - use 0.0.0 as initial version then run the command again.");if(typeof E!="string"||!_L.default.valid(E))throw new nt(`Can't bump the version (${E}) if it's not valid semver`)}p=dy(this.strategy)}if(!n){let C=(await sb(s)).get(a);if(typeof C<"u"&&p!=="decline"){let S=ib(a.manifest.version,p);if(_L.default.lt(S,C))throw new nt(`Can't bump the version to one that would be lower than the current deferred one (${C})`)}}let h=await q1(s,{allowEmpty:!0});return h.releases.set(a,p),await h.saveAll(),n?0:await this.cli.run(["version","apply"])}};var rbt={configuration:{deferredVersionFolder:{description:"Folder where are stored the versioning files",type:"ABSOLUTE_PATH",default:"./.yarn/versions"},preferDeferredVersions:{description:"If true, running `yarn version` will assume the `--deferred` flag unless `--immediate` is set",type:"BOOLEAN",default:!1}},commands:[Y1,V1,J1]},nbt=rbt;var oz={};Vt(oz,{WorkspacesFocusCommand:()=>K1,WorkspacesForeachCommand:()=>Z1,default:()=>obt});Ge();Ge();Yt();var K1=class extends ft{constructor(){super(...arguments);this.json=ge.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.production=ge.Boolean("--production",!1,{description:"Only install regular dependencies by omitting dev dependencies"});this.all=ge.Boolean("-A,--all",!1,{description:"Install the entire project"});this.workspaces=ge.Rest()}static{this.paths=[["workspaces","focus"]]}static{this.usage=ot.Usage({category:"Workspace-related commands",description:"install a single workspace and its dependencies",details:"\n This command will run an install as if the specified workspaces (and all other workspaces they depend on) were the only ones in the project. If no workspaces are explicitly listed, the active one will be assumed.\n\n Note that this command is only very moderately useful when using zero-installs, since the cache will contain all the packages anyway - meaning that the only difference between a full install and a focused install would just be a few extra lines in the `.pnp.cjs` file, at the cost of introducing an extra complexity.\n\n If the `-A,--all` flag is set, the entire project will be installed. Combine with `--production` to replicate the old `yarn install --production`.\n "})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Rt.find(r,this.context.cwd),n=await Kr.find(r);await s.restoreInstallState({restoreResolutions:!1});let c;if(this.all)c=new Set(s.workspaces);else if(this.workspaces.length===0){if(!a)throw new ar(s.cwd,this.context.cwd);c=new Set([a])}else c=new Set(this.workspaces.map(f=>s.getWorkspaceByIdent(G.parseIdent(f))));for(let f of c)for(let p of this.production?["dependencies"]:Ut.hardDependencies)for(let h of f.manifest.getForScope(p).values()){let E=s.tryWorkspaceByDescriptor(h);E!==null&&c.add(E)}for(let f of s.workspaces)c.has(f)?this.production&&f.manifest.devDependencies.clear():(f.manifest.installConfig=f.manifest.installConfig||{},f.manifest.installConfig.selfReferences=!1,f.manifest.dependencies.clear(),f.manifest.devDependencies.clear(),f.manifest.peerDependencies.clear(),f.manifest.scripts.clear());return await s.installWithNewReport({json:this.json,stdout:this.context.stdout},{cache:n,persistProject:!1})}};Ge();Ge();Ge();Yt();var z1=ut(Go()),fke=ut(Ld());Ul();var Z1=class extends ft{constructor(){super(...arguments);this.from=ge.Array("--from",{description:"An array of glob pattern idents or paths from which to base any recursion"});this.all=ge.Boolean("-A,--all",{description:"Run the command on all workspaces of a project"});this.recursive=ge.Boolean("-R,--recursive",{description:"Run the command on the current workspace and all of its recursive dependencies"});this.worktree=ge.Boolean("-W,--worktree",{description:"Run the command on all workspaces of the current worktree"});this.verbose=ge.Counter("-v,--verbose",{description:"Increase level of logging verbosity up to 2 times"});this.parallel=ge.Boolean("-p,--parallel",!1,{description:"Run the commands in parallel"});this.interlaced=ge.Boolean("-i,--interlaced",!1,{description:"Print the output of commands in real-time instead of buffering it"});this.jobs=ge.String("-j,--jobs",{description:"The maximum number of parallel tasks that the execution will be limited to; or `unlimited`",validator:h_([fo(["unlimited"]),$2(p_(),[d_(),g_(1)])])});this.topological=ge.Boolean("-t,--topological",!1,{description:"Run the command after all workspaces it depends on (regular) have finished"});this.topologicalDev=ge.Boolean("--topological-dev",!1,{description:"Run the command after all workspaces it depends on (regular + dev) have finished"});this.include=ge.Array("--include",[],{description:"An array of glob pattern idents or paths; only matching workspaces will be traversed"});this.exclude=ge.Array("--exclude",[],{description:"An array of glob pattern idents or paths; matching workspaces won't be traversed"});this.publicOnly=ge.Boolean("--no-private",{description:"Avoid running the command on private workspaces"});this.since=ge.String("--since",{description:"Only include workspaces that have been changed since the specified ref.",tolerateBoolean:!0});this.dryRun=ge.Boolean("-n,--dry-run",{description:"Print the commands that would be run, without actually running them"});this.commandName=ge.String();this.args=ge.Proxy()}static{this.paths=[["workspaces","foreach"]]}static{this.usage=ot.Usage({category:"Workspace-related commands",description:"run a command on all workspaces",details:"\n This command will run a given sub-command on current and all its descendant workspaces. Various flags can alter the exact behavior of the command:\n\n - If `-p,--parallel` is set, the commands will be ran in parallel; they'll by default be limited to a number of parallel tasks roughly equal to half your core number, but that can be overridden via `-j,--jobs`, or disabled by setting `-j unlimited`.\n\n - If `-p,--parallel` and `-i,--interlaced` are both set, Yarn will print the lines from the output as it receives them. If `-i,--interlaced` wasn't set, it would instead buffer the output from each process and print the resulting buffers only after their source processes have exited.\n\n - If `-t,--topological` is set, Yarn will only run the command after all workspaces that it depends on through the `dependencies` field have successfully finished executing. If `--topological-dev` is set, both the `dependencies` and `devDependencies` fields will be considered when figuring out the wait points.\n\n - If `-A,--all` is set, Yarn will run the command on all the workspaces of a project.\n\n - If `-R,--recursive` is set, Yarn will find workspaces to run the command on by recursively evaluating `dependencies` and `devDependencies` fields, instead of looking at the `workspaces` fields.\n\n - If `-W,--worktree` is set, Yarn will find workspaces to run the command on by looking at the current worktree.\n\n - If `--from` is set, Yarn will use the packages matching the 'from' glob as the starting point for any recursive search.\n\n - If `--since` is set, Yarn will only run the command on workspaces that have been modified since the specified ref. By default Yarn will use the refs specified by the `changesetBaseRefs` configuration option.\n\n - If `--dry-run` is set, Yarn will explain what it would do without actually doing anything.\n\n - The command may apply to only some workspaces through the use of `--include` which acts as a whitelist. The `--exclude` flag will do the opposite and will be a list of packages that mustn't execute the script. Both flags accept glob patterns (if valid Idents and supported by [micromatch](https://github.com/micromatch/micromatch)). Make sure to escape the patterns, to prevent your own shell from trying to expand them. You can also use the `--no-private` flag to avoid running the command in private workspaces.\n\n The `-v,--verbose` flag can be passed up to twice: once to prefix output lines with the originating workspace's name, and again to include start/finish/timing log lines. Maximum verbosity is enabled by default in terminal environments.\n\n If the command is `run` and the script being run does not exist the child workspace will be skipped without error.\n ",examples:[["Publish all packages","yarn workspaces foreach -A --no-private npm publish --tolerate-republish"],["Run the build script on all descendant packages","yarn workspaces foreach -A run build"],["Run the build script on current and all descendant packages in parallel, building package dependencies first","yarn workspaces foreach -Apt run build"],["Run the build script on several packages and all their dependencies, building dependencies first","yarn workspaces foreach -Rpt --from '{workspace-a,workspace-b}' run build"]]})}static{this.schema=[tB("all",qf.Forbids,["from","recursive","since","worktree"],{missingIf:"undefined"}),m_(["all","recursive","since","worktree"],{missingIf:"undefined"})]}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Rt.find(r,this.context.cwd);if(!this.all&&!a)throw new ar(s.cwd,this.context.cwd);await s.restoreInstallState();let n=this.cli.process([this.commandName,...this.args]),c=n.path.length===1&&n.path[0]==="run"&&typeof n.scriptName<"u"?n.scriptName:null;if(n.path.length===0)throw new nt("Invalid subcommand name for iteration - use the 'run' keyword if you wish to execute a script");let f=Ce=>{this.dryRun&&this.context.stdout.write(`${Ce} `)},p=()=>{let Ce=this.from.map(g=>z1.default.matcher(g));return s.workspaces.filter(g=>{let we=G.stringifyIdent(g.anchoredLocator),ye=g.relativeCwd;return Ce.some(Ae=>Ae(we)||Ae(ye))})},h=[];if(this.since?(f("Option --since is set; selecting the changed workspaces as root for workspace selection"),h=Array.from(await ka.fetchChangedWorkspaces({ref:this.since,project:s}))):this.from?(f("Option --from is set; selecting the specified workspaces"),h=[...p()]):this.worktree?(f("Option --worktree is set; selecting the current workspace"),h=[a]):this.recursive?(f("Option --recursive is set; selecting the current workspace"),h=[a]):this.all&&(f("Option --all is set; selecting all workspaces"),h=[...s.workspaces]),this.dryRun&&!this.all){for(let Ce of h)f(` - ${Ce.relativeCwd} ${G.prettyLocator(r,Ce.anchoredLocator)}`);h.length>0&&f("")}let E;if(this.recursive?this.since?(f("Option --recursive --since is set; recursively selecting all dependent workspaces"),E=new Set(h.map(Ce=>[...Ce.getRecursiveWorkspaceDependents()]).flat())):(f("Option --recursive is set; recursively selecting all transitive dependencies"),E=new Set(h.map(Ce=>[...Ce.getRecursiveWorkspaceDependencies()]).flat())):this.worktree?(f("Option --worktree is set; recursively selecting all nested workspaces"),E=new Set(h.map(Ce=>[...Ce.getRecursiveWorkspaceChildren()]).flat())):E=null,E!==null&&(h=[...new Set([...h,...E])],this.dryRun))for(let Ce of E)f(` - ${Ce.relativeCwd} ${G.prettyLocator(r,Ce.anchoredLocator)}`);let C=[],S=!1;if(c?.includes(":")){for(let Ce of s.workspaces)if(Ce.manifest.scripts.has(c)&&(S=!S,S===!1))break}for(let Ce of h){if(c&&!Ce.manifest.scripts.has(c)&&!S&&!(await In.getWorkspaceAccessibleBinaries(Ce)).has(c)){f(`Excluding ${Ce.relativeCwd} because it doesn't have a "${c}" script`);continue}if(!(c===r.env.npm_lifecycle_event&&Ce.cwd===a.cwd)){if(this.include.length>0&&!z1.default.isMatch(G.stringifyIdent(Ce.anchoredLocator),this.include)&&!z1.default.isMatch(Ce.relativeCwd,this.include)){f(`Excluding ${Ce.relativeCwd} because it doesn't match the --include filter`);continue}if(this.exclude.length>0&&(z1.default.isMatch(G.stringifyIdent(Ce.anchoredLocator),this.exclude)||z1.default.isMatch(Ce.relativeCwd,this.exclude))){f(`Excluding ${Ce.relativeCwd} because it matches the --exclude filter`);continue}if(this.publicOnly&&Ce.manifest.private===!0){f(`Excluding ${Ce.relativeCwd} because it's a private workspace and --no-private was set`);continue}C.push(Ce)}}if(this.dryRun)return 0;let b=this.verbose??(this.context.stdout.isTTY?1/0:0),I=b>0,T=b>1,N=this.parallel?this.jobs==="unlimited"?1/0:Number(this.jobs)||Math.ceil(fs.availableParallelism()/2):1,U=N===1?!1:this.parallel,W=U?this.interlaced:!0,ee=(0,fke.default)(N),ie=new Map,ue=new Set,le=0,me=null,pe=!1,Be=await Ot.start({configuration:r,stdout:this.context.stdout,includePrefix:!1},async Ce=>{let g=async(we,{commandIndex:ye})=>{if(pe)return-1;!U&&T&&ye>1&&Ce.reportSeparator();let Ae=ibt(we,{configuration:r,label:I,commandIndex:ye}),[se,X]=uke(Ce,{prefix:Ae,interlaced:W}),[De,Te]=uke(Ce,{prefix:Ae,interlaced:W});try{T&&Ce.reportInfo(null,`${Ae?`${Ae} `:""}Process started`);let mt=Date.now(),j=await this.cli.run([this.commandName,...this.args],{cwd:we.cwd,stdout:se,stderr:De})||0;se.end(),De.end(),await X,await Te;let rt=Date.now();if(T){let Fe=r.get("enableTimers")?`, completed in ${he.pretty(r,rt-mt,he.Type.DURATION)}`:"";Ce.reportInfo(null,`${Ae?`${Ae} `:""}Process exited (exit code ${j})${Fe}`)}return j===130&&(pe=!0,me=j),j}catch(mt){throw se.end(),De.end(),await X,await Te,mt}};for(let we of C)ie.set(we.anchoredLocator.locatorHash,we);for(;ie.size>0&&!Ce.hasErrors();){let we=[];for(let[X,De]of ie){if(ue.has(De.anchoredDescriptor.descriptorHash))continue;let Te=!0;if(this.topological||this.topologicalDev){let mt=this.topologicalDev?new Map([...De.manifest.dependencies,...De.manifest.devDependencies]):De.manifest.dependencies;for(let j of mt.values()){let rt=s.tryWorkspaceByDescriptor(j);if(Te=rt===null||!ie.has(rt.anchoredLocator.locatorHash),!Te)break}}if(Te&&(ue.add(De.anchoredDescriptor.descriptorHash),we.push(ee(async()=>{let mt=await g(De,{commandIndex:++le});return ie.delete(X),ue.delete(De.anchoredDescriptor.descriptorHash),{workspace:De,exitCode:mt}})),!U))break}if(we.length===0){let X=Array.from(ie.values()).map(De=>G.prettyLocator(r,De.anchoredLocator)).join(", ");Ce.reportError(3,`Dependency cycle detected (${X})`);return}let ye=await Promise.all(we);ye.forEach(({workspace:X,exitCode:De})=>{De!==0&&Ce.reportError(0,`The command failed in workspace ${G.prettyLocator(r,X.anchoredLocator)} with exit code ${De}`)});let se=ye.map(X=>X.exitCode).find(X=>X!==0);(this.topological||this.topologicalDev)&&typeof se<"u"&&Ce.reportError(0,"The command failed for workspaces that are depended upon by other workspaces; can't satisfy the dependency graph")}});return me!==null?me:Be.exitCode()}};function uke(t,{prefix:e,interlaced:r}){let s=t.createStreamReporter(e),a=new je.DefaultStream;a.pipe(s,{end:!1}),a.on("finish",()=>{s.end()});let n=new Promise(f=>{s.on("finish",()=>{f(a.active)})});if(r)return[a,n];let c=new je.BufferStream;return c.pipe(a,{end:!1}),c.on("finish",()=>{a.end()}),[c,n]}function ibt(t,{configuration:e,commandIndex:r,label:s}){if(!s)return null;let n=`[${G.stringifyIdent(t.anchoredLocator)}]:`,c=["#2E86AB","#A23B72","#F18F01","#C73E1D","#CCE2A3"],f=c[r%c.length];return he.pretty(e,n,f)}var sbt={commands:[K1,Z1]},obt=sbt;var uz={};Vt(uz,{default:()=>ubt});Ge();Ge();var az="catalog:";var lz=t=>t.startsWith(az),abt=t=>t.range.slice(az.length)||null,Ake=t=>t===null?"default catalog":`catalog "${t}"`,lbt=t=>t.scope?`@${t.scope}/${t.name}`:t.name,cz=(t,e,r,s)=>{let a=abt(e),n;if(a===null)n=t.configuration.get("catalog");else try{let E=t.configuration.get("catalogs");E&&(n=E.get(a))}catch{n=void 0}if(!n||n.size===0)throw new jt(82,`${G.prettyDescriptor(t.configuration,e)}: ${Ake(a)} not found or empty`);let c=lbt(e),f=n.get(c);if(!f)throw new jt(82,`${G.prettyDescriptor(t.configuration,e)}: entry not found in ${Ake(a)}`);let p=t.configuration.normalizeDependency(G.makeDescriptor(e,f));return r.bindDescriptor(p,t.topLevelWorkspace.anchoredLocator,s)};var cbt={configuration:{catalog:{description:"The default catalog of packages",type:"MAP",valueDefinition:{description:"The catalog of packages",type:"STRING"}},catalogs:{description:"Named catalogs of packages",type:"MAP",valueDefinition:{description:"A named catalog",type:"MAP",valueDefinition:{description:"Package version in the catalog",type:"STRING"}}}},hooks:{beforeWorkspacePacking:(t,e)=>{let r=t.project,s=r.configuration.makeResolver(),a={project:r,resolver:s,report:new ki};for(let n of Ut.allDependencies){let c=e[n];if(c)for(let[f,p]of Object.entries(c)){if(typeof p!="string"||!lz(p))continue;let h=G.parseIdent(f),E=G.makeDescriptor(h,p),C=cz(r,E,s,a),{protocol:S,source:b,params:I,selector:T}=G.parseRange(G.convertToManifestRange(C.range));S===t.project.configuration.get("defaultProtocol")&&(S=null),c[f]=G.makeRange({protocol:S,source:b,params:I,selector:T})}}},reduceDependency:async(t,e,r,s,{resolver:a,resolveOptions:n})=>lz(t.range)?cz(e,t,a,n):t}},ubt=cbt;var tC=()=>({modules:new Map([["@yarnpkg/cli",Gv],["@yarnpkg/core",jv],["@yarnpkg/fslib",_2],["@yarnpkg/libzip",fv],["@yarnpkg/parsers",J2],["@yarnpkg/shell",mv],["clipanion",oB],["semver",fbt],["typanion",Ea],["@yarnpkg/plugin-essentials",f5],["@yarnpkg/plugin-compat",d5],["@yarnpkg/plugin-constraints",T5],["@yarnpkg/plugin-dlx",F5],["@yarnpkg/plugin-exec",L5],["@yarnpkg/plugin-file",U5],["@yarnpkg/plugin-git",u5],["@yarnpkg/plugin-github",j5],["@yarnpkg/plugin-http",G5],["@yarnpkg/plugin-init",q5],["@yarnpkg/plugin-interactive-tools",HW],["@yarnpkg/plugin-jsr",GW],["@yarnpkg/plugin-link",qW],["@yarnpkg/plugin-nm",PY],["@yarnpkg/plugin-npm",PK],["@yarnpkg/plugin-npm-cli",OK],["@yarnpkg/plugin-pack",IV],["@yarnpkg/plugin-patch",GK],["@yarnpkg/plugin-pnp",gY],["@yarnpkg/plugin-pnpm",YK],["@yarnpkg/plugin-stage",$K],["@yarnpkg/plugin-typescript",ez],["@yarnpkg/plugin-version",sz],["@yarnpkg/plugin-workspace-tools",oz],["@yarnpkg/plugin-catalog",uz]]),plugins:new Set(["@yarnpkg/plugin-essentials","@yarnpkg/plugin-compat","@yarnpkg/plugin-constraints","@yarnpkg/plugin-dlx","@yarnpkg/plugin-exec","@yarnpkg/plugin-file","@yarnpkg/plugin-git","@yarnpkg/plugin-github","@yarnpkg/plugin-http","@yarnpkg/plugin-init","@yarnpkg/plugin-interactive-tools","@yarnpkg/plugin-jsr","@yarnpkg/plugin-link","@yarnpkg/plugin-nm","@yarnpkg/plugin-npm","@yarnpkg/plugin-npm-cli","@yarnpkg/plugin-pack","@yarnpkg/plugin-patch","@yarnpkg/plugin-pnp","@yarnpkg/plugin-pnpm","@yarnpkg/plugin-stage","@yarnpkg/plugin-typescript","@yarnpkg/plugin-version","@yarnpkg/plugin-workspace-tools","@yarnpkg/plugin-catalog"])});function gke({cwd:t,pluginConfiguration:e}){let r=new Ca({binaryLabel:"Yarn Package Manager",binaryName:"yarn",binaryVersion:fn??""});return Object.assign(r,{defaultContext:{...Ca.defaultContext,cwd:t,plugins:e,quiet:!1,stdin:process.stdin,stdout:process.stdout,stderr:process.stderr}})}function Abt(t){if(je.parseOptionalBoolean(process.env.YARN_IGNORE_NODE))return!0;let r=process.versions.node,s=">=18.12.0";if(Fr.satisfiesWithPrereleases(r,s))return!0;let a=new nt(`This tool requires a Node version compatible with ${s} (got ${r}). Upgrade Node, or set \`YARN_IGNORE_NODE=1\` in your environment.`);return Ca.defaultContext.stdout.write(t.error(a)),!1}async function dke({selfPath:t,pluginConfiguration:e}){return await ze.find(fe.toPortablePath(process.cwd()),e,{strict:!1,usePathCheck:t})}function pbt(t,e,{yarnPath:r}){if(!ce.existsSync(r))return t.error(new Error(`The "yarn-path" option has been set, but the specified location doesn't exist (${r}).`)),1;process.on("SIGINT",()=>{});let s={stdio:"inherit",env:{...process.env,YARN_IGNORE_PATH:"1"}};try{(0,pke.execFileSync)(process.execPath,[fe.fromPortablePath(r),...e],s)}catch(a){return a.status??1}return 0}function hbt(t,e){let r=null,s=e;return e.length>=2&&e[0]==="--cwd"?(r=fe.toPortablePath(e[1]),s=e.slice(2)):e.length>=1&&e[0].startsWith("--cwd=")?(r=fe.toPortablePath(e[0].slice(6)),s=e.slice(1)):e[0]==="add"&&e[e.length-2]==="--cwd"&&(r=fe.toPortablePath(e[e.length-1]),s=e.slice(0,e.length-2)),t.defaultContext.cwd=r!==null?J.resolve(r):J.cwd(),s}function gbt(t,{configuration:e}){if(!e.get("enableTelemetry")||hke.isCI||!process.stdout.isTTY)return;ze.telemetry=new XI(e,"puba9cdc10ec5790a2cf4969dd413a47270");let s=/^@yarnpkg\/plugin-(.*)$/;for(let a of e.plugins.keys())$I.has(a.match(s)?.[1]??"")&&ze.telemetry?.reportPluginName(a);t.binaryVersion&&ze.telemetry.reportVersion(t.binaryVersion)}function mke(t,{configuration:e}){for(let r of e.plugins.values())for(let s of r.commands||[])t.register(s)}async function dbt(t,e,{selfPath:r,pluginConfiguration:s}){if(!Abt(t))return 1;let a=await dke({selfPath:r,pluginConfiguration:s}),n=a.get("yarnPath"),c=a.get("ignorePath");if(n&&!c)return pbt(t,e,{yarnPath:n});delete process.env.YARN_IGNORE_PATH;let f=hbt(t,e);gbt(t,{configuration:a}),mke(t,{configuration:a});let p=t.process(f,t.defaultContext);return p.help||ze.telemetry?.reportCommandName(p.path.join(" ")),await t.run(p,t.defaultContext)}async function Bde({cwd:t=J.cwd(),pluginConfiguration:e=tC()}={}){let r=gke({cwd:t,pluginConfiguration:e}),s=await dke({pluginConfiguration:e,selfPath:null});return mke(r,{configuration:s}),r}async function YT(t,{cwd:e=J.cwd(),selfPath:r,pluginConfiguration:s}){let a=gke({cwd:e,pluginConfiguration:s});function n(){Ca.defaultContext.stdout.write(`ERROR: Yarn is terminating due to an unexpected empty event loop. Please report this issue at https://github.com/yarnpkg/berry/issues.`)}process.once("beforeExit",n);try{process.exitCode=42,process.exitCode=await dbt(a,t,{selfPath:r,pluginConfiguration:s})}catch(c){Ca.defaultContext.stdout.write(a.error(c)),process.exitCode=1}finally{process.off("beforeExit",n),await ce.rmtempPromise()}}YT(process.argv.slice(2),{cwd:J.cwd(),selfPath:fe.toPortablePath(fe.resolve(process.argv[1])),pluginConfiguration:tC()});})(); /** @license Copyright (c) 2015, Rebecca Turner Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies. THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ /** @license Copyright Node.js contributors. All rights reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /** @license The MIT License (MIT) Copyright (c) 2014 Blake Embrey (hello@blakeembrey.com) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /** @license Copyright Joyent, Inc. and other Node contributors. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*! Bundled license information: is-number/index.js: (*! * is-number * * Copyright (c) 2014-present, Jon Schlinkert. * Released under the MIT License. *) to-regex-range/index.js: (*! * to-regex-range * * Copyright (c) 2015-present, Jon Schlinkert. * Released under the MIT License. *) fill-range/index.js: (*! * fill-range * * Copyright (c) 2014-present, Jon Schlinkert. * Licensed under the MIT License. *) is-extglob/index.js: (*! * is-extglob * * Copyright (c) 2014-2016, Jon Schlinkert. * Licensed under the MIT License. *) is-glob/index.js: (*! * is-glob * * Copyright (c) 2014-2017, Jon Schlinkert. * Released under the MIT License. *) queue-microtask/index.js: (*! queue-microtask. MIT License. Feross Aboukhadijeh *) run-parallel/index.js: (*! run-parallel. MIT License. Feross Aboukhadijeh *) git-url-parse/lib/index.js: (*! * buildToken * Builds OAuth token prefix (helper function) * * @name buildToken * @function * @param {GitUrl} obj The parsed Git url object. * @return {String} token prefix *) object-assign/index.js: (* object-assign (c) Sindre Sorhus @license MIT *) react/cjs/react.production.min.js: (** @license React v17.0.2 * react.production.min.js * * Copyright (c) Facebook, Inc. and its affiliates. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. *) scheduler/cjs/scheduler.production.min.js: (** @license React v0.20.2 * scheduler.production.min.js * * Copyright (c) Facebook, Inc. and its affiliates. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. *) react-reconciler/cjs/react-reconciler.production.min.js: (** @license React v0.26.2 * react-reconciler.production.min.js * * Copyright (c) Facebook, Inc. and its affiliates. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. *) is-windows/index.js: (*! * is-windows * * Copyright © 2015-2018, Jon Schlinkert. * Released under the MIT License. *) */ ================================================ FILE: .yarn/versions/009f3ed3.yml ================================================ undecided: - "@subql/node-core" ================================================ FILE: .yarn/versions/027a768d.yml ================================================ ================================================ FILE: .yarn/versions/043f60d9.yml ================================================ undecided: - "@subql/utils" ================================================ FILE: .yarn/versions/0499e67a.yml ================================================ undecided: - "@subql/node-core" ================================================ FILE: .yarn/versions/04fe5109.yml ================================================ undecided: - "@subql/node-core" ================================================ FILE: .yarn/versions/0659b210.yml ================================================ undecided: - "@subql/node" ================================================ FILE: .yarn/versions/06878261.yml ================================================ undecided: - "@subql/node-core" ================================================ FILE: .yarn/versions/06f061c2.yml ================================================ ================================================ FILE: .yarn/versions/0a6cfead.yml ================================================ undecided: - "@subql/cli" - "@subql/common-substrate" ================================================ FILE: .yarn/versions/0b41d534.yml ================================================ ================================================ FILE: .yarn/versions/0c630ddb.yml ================================================ undecided: - "@subql/types-core" ================================================ FILE: .yarn/versions/0c8bf25d.yml ================================================ undecided: - "@subql/node" ================================================ FILE: .yarn/versions/0d3c95d9.yml ================================================ undecided: - "@subql/node" ================================================ FILE: .yarn/versions/0e4241fb.yml ================================================ ================================================ FILE: .yarn/versions/104b6218.yml ================================================ undecided: - "@subql/common" - "@subql/common-substrate" - "@subql/node" - "@subql/node-core" - "@subql/query" - "@subql/testing" - "@subql/types" - "@subql/types-core" - "@subql/utils" ================================================ FILE: .yarn/versions/105d24d1.yml ================================================ undecided: - "@subql/common" ================================================ FILE: .yarn/versions/10d6c790.yml ================================================ undecided: - "@subql/cli" - "@subql/common" - "@subql/common-substrate" - "@subql/node" - "@subql/node-core" - "@subql/query" ================================================ FILE: .yarn/versions/1288810f.yml ================================================ undecided: - "@subql/cli" - "@subql/common" - "@subql/node" - "@subql/node-core" ================================================ FILE: .yarn/versions/12a92ad2.yml ================================================ undecided: - "@subql/node-core" ================================================ FILE: .yarn/versions/12c5da87.yml ================================================ undecided: - "@subql/node-core" ================================================ FILE: .yarn/versions/12f2ee2a.yml ================================================ ================================================ FILE: .yarn/versions/1419f252.yml ================================================ ================================================ FILE: .yarn/versions/1447e381.yml ================================================ undecided: - "@subql/node-core" ================================================ FILE: .yarn/versions/14e4dc88.yml ================================================ undecided: - "@subql/node" - "@subql/node-core" - "@subql/testing" - "@subql/types-core" ================================================ FILE: .yarn/versions/16f0d61b.yml ================================================ undecided: - "@subql/cli" - "@subql/node" - "@subql/node-core" - "@subql/query" ================================================ FILE: .yarn/versions/1716e1a0.yml ================================================ ================================================ FILE: .yarn/versions/185d73c5.yml ================================================ undecided: - "@subql/node-core" ================================================ FILE: .yarn/versions/18880181.yml ================================================ ================================================ FILE: .yarn/versions/18951341.yml ================================================ undecided: - "@subql/cli" - "@subql/common" - "@subql/node" - "@subql/node-core" ================================================ FILE: .yarn/versions/1a4257af.yml ================================================ ================================================ FILE: .yarn/versions/1ab8a1a3.yml ================================================ ================================================ FILE: .yarn/versions/1bbf92cf.yml ================================================ undecided: - "@subql/common" - "@subql/query" - "@subql/utils" ================================================ FILE: .yarn/versions/1be0b830.yml ================================================ ================================================ FILE: .yarn/versions/1c09bcf3.yml ================================================ ================================================ FILE: .yarn/versions/1d68c78f.yml ================================================ ================================================ FILE: .yarn/versions/1d7a8221.yml ================================================ undecided: - "@subql/types-core" ================================================ FILE: .yarn/versions/1de6dc61.yml ================================================ undecided: - "@subql/node-core" ================================================ FILE: .yarn/versions/1ef24463.yml ================================================ ================================================ FILE: .yarn/versions/216439fa.yml ================================================ ================================================ FILE: .yarn/versions/2268e307.yml ================================================ ================================================ FILE: .yarn/versions/227edb92.yml ================================================ undecided: - "@subql/common" - "@subql/node" - "@subql/node-core" - "@subql/query" - "@subql/utils" ================================================ FILE: .yarn/versions/2347a851.yml ================================================ undecided: - "@subql/cli" - "@subql/query" ================================================ FILE: .yarn/versions/25310217.yml ================================================ ================================================ FILE: .yarn/versions/2584b0f2.yml ================================================ ================================================ FILE: .yarn/versions/25cf0a18.yml ================================================ undecided: - "@subql/common-substrate" - "@subql/node" - "@subql/types" ================================================ FILE: .yarn/versions/26d2bede.yml ================================================ undecided: - "@subql/node-core" ================================================ FILE: .yarn/versions/28043ba8.yml ================================================ ================================================ FILE: .yarn/versions/2805a1cf.yml ================================================ ================================================ FILE: .yarn/versions/29bf85e7.yml ================================================ undecided: - "@subql/node-core" ================================================ FILE: .yarn/versions/2b04685f.yml ================================================ ================================================ FILE: .yarn/versions/2c10a261.yml ================================================ undecided: - "@subql/node-core" ================================================ FILE: .yarn/versions/2c2090d9.yml ================================================ ================================================ FILE: .yarn/versions/2cc4a2fb.yml ================================================ ================================================ FILE: .yarn/versions/2d3b7b53.yml ================================================ undecided: - "@subql/cli" - "@subql/common" - "@subql/node" - "@subql/node-core" ================================================ FILE: .yarn/versions/2d3c26d4.yml ================================================ ================================================ FILE: .yarn/versions/2d61ee26.yml ================================================ undecided: - "@subql/cli" - "@subql/common" - "@subql/node" - "@subql/node-core" - "@subql/query" - "@subql/testing" - "@subql/types" - "@subql/types-core" ================================================ FILE: .yarn/versions/2dfadf46.yml ================================================ ================================================ FILE: .yarn/versions/2eebe132.yml ================================================ undecided: - "@subql/node-core" ================================================ FILE: .yarn/versions/304647ef.yml ================================================ undecided: - "@subql/node-core" ================================================ FILE: .yarn/versions/30caeb09.yml ================================================ undecided: - "@subql/node-core" - "@subql/types" - "@subql/utils" ================================================ FILE: .yarn/versions/312f5831.yml ================================================ ================================================ FILE: .yarn/versions/31de9883.yml ================================================ undecided: - "@subql/types" ================================================ FILE: .yarn/versions/322d5d1f.yml ================================================ ================================================ FILE: .yarn/versions/324f29ae.yml ================================================ ================================================ FILE: .yarn/versions/3349f1f9.yml ================================================ ================================================ FILE: .yarn/versions/33e756ee.yml ================================================ undecided: - "@subql/node-core" ================================================ FILE: .yarn/versions/34a2b89f.yml ================================================ undecided: - "@subql/node" - "@subql/query" ================================================ FILE: .yarn/versions/350b5b09.yml ================================================ undecided: - "@subql/query" ================================================ FILE: .yarn/versions/351b62d7.yml ================================================ ================================================ FILE: .yarn/versions/35b703be.yml ================================================ undecided: - "@subql/query" ================================================ FILE: .yarn/versions/35c43c59.yml ================================================ undecided: - "@subql/common" ================================================ FILE: .yarn/versions/35f00361.yml ================================================ ================================================ FILE: .yarn/versions/36f01785.yml ================================================ undecided: - "@subql/cli" - "@subql/common" - "@subql/node" - "@subql/node-core" - "@subql/query" - "@subql/utils" ================================================ FILE: .yarn/versions/37b48f24.yml ================================================ ================================================ FILE: .yarn/versions/37e31b0c.yml ================================================ undecided: - "@subql/node" - "@subql/node-core" ================================================ FILE: .yarn/versions/381d4907.yml ================================================ undecided: - "@subql/node-core" ================================================ FILE: .yarn/versions/382f2b82.yml ================================================ ================================================ FILE: .yarn/versions/3938a2bc.yml ================================================ ================================================ FILE: .yarn/versions/3a048bf2.yml ================================================ ================================================ FILE: .yarn/versions/3adf3bd7.yml ================================================ undecided: - "@subql/node-core" ================================================ FILE: .yarn/versions/3b3e24c8.yml ================================================ undecided: - "@subql/cli" - "@subql/node" - "@subql/node-core" ================================================ FILE: .yarn/versions/3b8c5afd.yml ================================================ ================================================ FILE: .yarn/versions/3d650c95.yml ================================================ undecided: - "@subql/cli" - "@subql/common" - "@subql/common-substrate" - "@subql/node" - "@subql/node-core" - "@subql/query" - "@subql/types" ================================================ FILE: .yarn/versions/3fbcf2a0.yml ================================================ ================================================ FILE: .yarn/versions/3fc924ed.yml ================================================ undecided: - "@subql/node-core" ================================================ FILE: .yarn/versions/4078a944.yml ================================================ ================================================ FILE: .yarn/versions/40b6bbec.yml ================================================ undecided: - "@subql/types-core" ================================================ FILE: .yarn/versions/41c9116c.yml ================================================ undecided: - "@subql/common" - "@subql/node" - "@subql/node-core" - "@subql/types" - "@subql/utils" ================================================ FILE: .yarn/versions/41e737e2.yml ================================================ undecided: - "@subql/node" ================================================ FILE: .yarn/versions/4303222c.yml ================================================ ================================================ FILE: .yarn/versions/44082fb1.yml ================================================ ================================================ FILE: .yarn/versions/445ef638.yml ================================================ undecided: - "@subql/cli" - "@subql/common" - "@subql/common-substrate" - "@subql/node" ================================================ FILE: .yarn/versions/457bc38f.yml ================================================ ================================================ FILE: .yarn/versions/46402fec.yml ================================================ ================================================ FILE: .yarn/versions/46adba99.yml ================================================ ================================================ FILE: .yarn/versions/46b26b5d.yml ================================================ ================================================ FILE: .yarn/versions/47d21b05.yml ================================================ undecided: - "@subql/node-core" - "@subql/types" ================================================ FILE: .yarn/versions/4820d418.yml ================================================ undecided: - "@subql/node" ================================================ FILE: .yarn/versions/48ba8de1.yml ================================================ ================================================ FILE: .yarn/versions/499171ed.yml ================================================ undecided: - "@subql/node-core" ================================================ FILE: .yarn/versions/49d09eed.yml ================================================ undecided: - "@subql/cli" - "@subql/node" ================================================ FILE: .yarn/versions/4a010b8b.yml ================================================ ================================================ FILE: .yarn/versions/4b76fe18.yml ================================================ undecided: - "@subql/common-substrate" - "@subql/node-core" ================================================ FILE: .yarn/versions/4b8d567b.yml ================================================ ================================================ FILE: .yarn/versions/4c23db2c.yml ================================================ undecided: - "@subql/query" ================================================ FILE: .yarn/versions/4c2f3697.yml ================================================ undecided: - "@subql/node-core" ================================================ FILE: .yarn/versions/4c39a3cb.yml ================================================ ================================================ FILE: .yarn/versions/4c67dbef.yml ================================================ ================================================ FILE: .yarn/versions/4ce88dfa.yml ================================================ ================================================ FILE: .yarn/versions/4d1a19ef.yml ================================================ ================================================ FILE: .yarn/versions/4de1b78e.yml ================================================ undecided: - "@subql/node-core" ================================================ FILE: .yarn/versions/4e58ec39.yml ================================================ undecided: - "@subql/cli" - "@subql/node-core" ================================================ FILE: .yarn/versions/4eb161fe.yml ================================================ undecided: - "@subql/common" - "@subql/node" - "@subql/node-core" - "@subql/query" - "@subql/utils" ================================================ FILE: .yarn/versions/4ef5ee6c.yml ================================================ undecided: - "@subql/utils" ================================================ FILE: .yarn/versions/4ef73239.yml ================================================ ================================================ FILE: .yarn/versions/4feb4cb4.yml ================================================ undecided: - "@subql/cli" - "@subql/common" - "@subql/node" - "@subql/node-core" ================================================ FILE: .yarn/versions/5284b2e3.yml ================================================ ================================================ FILE: .yarn/versions/5311ca5a.yml ================================================ ================================================ FILE: .yarn/versions/532ac853.yml ================================================ ================================================ FILE: .yarn/versions/53d32974.yml ================================================ undecided: - "@subql/node" ================================================ FILE: .yarn/versions/53f030f6.yml ================================================ undecided: - "@subql/utils" ================================================ FILE: .yarn/versions/550fcf8e.yml ================================================ undecided: - "@subql/node-core" - "@subql/types" - "@subql/utils" ================================================ FILE: .yarn/versions/552aabf7.yml ================================================ ================================================ FILE: .yarn/versions/55b991e8.yml ================================================ undecided: - "@subql/cli" - "@subql/common" - "@subql/node" - "@subql/node-core" ================================================ FILE: .yarn/versions/56fc2408.yml ================================================ undecided: - "@subql/common" - "@subql/common-substrate" - "@subql/node" - "@subql/node-core" - "@subql/types-core" ================================================ FILE: .yarn/versions/57666882.yml ================================================ undecided: - "@subql/node" - "@subql/query" ================================================ FILE: .yarn/versions/57a75c3c.yml ================================================ undecided: - "@subql/node" - "@subql/node-core" ================================================ FILE: .yarn/versions/57dc89a1.yml ================================================ undecided: - "@subql/common-substrate" - "@subql/node-core" ================================================ FILE: .yarn/versions/5a7ba119.yml ================================================ undecided: - "@subql/cli" - "@subql/common" - "@subql/node-core" ================================================ FILE: .yarn/versions/5ae3de1b.yml ================================================ ================================================ FILE: .yarn/versions/5bb8d394.yml ================================================ undecided: - "@subql/utils" ================================================ FILE: .yarn/versions/5c14c916.yml ================================================ ================================================ FILE: .yarn/versions/5dc4e96b.yml ================================================ ================================================ FILE: .yarn/versions/5f92bb54.yml ================================================ undecided: - "@subql/node-core" ================================================ FILE: .yarn/versions/610a5feb.yml ================================================ ================================================ FILE: .yarn/versions/61b6fc48.yml ================================================ undecided: - "@subql/node-core" - "@subql/types-core" ================================================ FILE: .yarn/versions/62a6123d.yml ================================================ undecided: - "@subql/node-core" ================================================ FILE: .yarn/versions/645f2b52.yml ================================================ undecided: - "@subql/node" - "@subql/node-core" - "@subql/query" - "@subql/types" - "@subql/utils" ================================================ FILE: .yarn/versions/646d8ce7.yml ================================================ ================================================ FILE: .yarn/versions/65681adf.yml ================================================ ================================================ FILE: .yarn/versions/6590072c.yml ================================================ undecided: - "@subql/node-core" - "@subql/utils" ================================================ FILE: .yarn/versions/65da9ecd.yml ================================================ undecided: - "@subql/node" - "@subql/node-core" - "@subql/types" - "@subql/utils" ================================================ FILE: .yarn/versions/66b5ccbc.yml ================================================ undecided: - "@subql/common" - "@subql/common-substrate" - "@subql/node" - "@subql/node-core" - "@subql/query" - "@subql/testing" - "@subql/types" - "@subql/types-core" - "@subql/utils" ================================================ FILE: .yarn/versions/686e36f7.yml ================================================ undecided: - "@subql/cli" - "@subql/common" - "@subql/node" - "@subql/node-core" - "@subql/query" - "@subql/utils" ================================================ FILE: .yarn/versions/689d69d4.yml ================================================ ================================================ FILE: .yarn/versions/68dba50f.yml ================================================ ================================================ FILE: .yarn/versions/69505fd5.yml ================================================ undecided: - "@subql/cli" - "@subql/common" - "@subql/common-substrate" - "@subql/node" - "@subql/node-core" - "@subql/query" - "@subql/testing" - "@subql/types" - "@subql/types-core" ================================================ FILE: .yarn/versions/6a2da136.yml ================================================ ================================================ FILE: .yarn/versions/6b90a9bc.yml ================================================ undecided: - "@subql/cli" - "@subql/node-core" ================================================ FILE: .yarn/versions/6bc3e193.yml ================================================ undecided: - "@subql/utils" ================================================ FILE: .yarn/versions/6bc752bc.yml ================================================ undecided: - "@subql/cli" - "@subql/node-core" ================================================ FILE: .yarn/versions/6ca7bbbf.yml ================================================ undecided: - "@subql/common" - "@subql/common-substrate" - "@subql/node" - "@subql/node-core" - "@subql/types-core" ================================================ FILE: .yarn/versions/6cdd41ea.yml ================================================ undecided: - "@subql/common" - "@subql/node" - "@subql/node-core" - "@subql/query" - "@subql/types" - "@subql/utils" ================================================ FILE: .yarn/versions/6f262f92.yml ================================================ ================================================ FILE: .yarn/versions/6f785cb6.yml ================================================ undecided: - "@subql/node-core" ================================================ FILE: .yarn/versions/6f9a585e.yml ================================================ ================================================ FILE: .yarn/versions/6fbb21ed.yml ================================================ undecided: - "@subql/common" - "@subql/common-substrate" - "@subql/node" - "@subql/node-core" - "@subql/utils" ================================================ FILE: .yarn/versions/6fdfdb04.yml ================================================ ================================================ FILE: .yarn/versions/6ffda578.yml ================================================ undecided: - "@subql/node-core" ================================================ FILE: .yarn/versions/722926be.yml ================================================ undecided: - "@subql/utils" ================================================ FILE: .yarn/versions/7243e463.yml ================================================ ================================================ FILE: .yarn/versions/72f372d1.yml ================================================ ================================================ FILE: .yarn/versions/744a0dca.yml ================================================ undecided: - "@subql/node" ================================================ FILE: .yarn/versions/74d627f7.yml ================================================ ================================================ FILE: .yarn/versions/74e58e5b.yml ================================================ ================================================ FILE: .yarn/versions/75c144d8.yml ================================================ undecided: - "@subql/cli" - "@subql/node" - "@subql/node-core" - "@subql/query" - "@subql/types" ================================================ FILE: .yarn/versions/75d37c61.yml ================================================ undecided: - "@subql/common" - "@subql/node" - "@subql/node-core" - "@subql/types" - "@subql/utils" ================================================ FILE: .yarn/versions/76034c6c.yml ================================================ ================================================ FILE: .yarn/versions/7879dba0.yml ================================================ undecided: - "@subql/query" ================================================ FILE: .yarn/versions/78a188b4.yml ================================================ ================================================ FILE: .yarn/versions/792d5a54.yml ================================================ undecided: - "@subql/node-core" ================================================ FILE: .yarn/versions/7bd9e3d4.yml ================================================ ================================================ FILE: .yarn/versions/7c0eab27.yml ================================================ undecided: - "@subql/node-core" ================================================ FILE: .yarn/versions/7cd00a40.yml ================================================ undecided: - "@subql/cli" - "@subql/common-substrate" - "@subql/node" - "@subql/node-core" - "@subql/query" - "@subql/utils" ================================================ FILE: .yarn/versions/7cd681fd.yml ================================================ ================================================ FILE: .yarn/versions/7d2a0be3.yml ================================================ undecided: - "@subql/node-core" ================================================ FILE: .yarn/versions/7d3fc2ff.yml ================================================ ================================================ FILE: .yarn/versions/7d8931c0.yml ================================================ undecided: - "@subql/common-substrate" ================================================ FILE: .yarn/versions/7d9c7c44.yml ================================================ undecided: - "@subql/query" ================================================ FILE: .yarn/versions/7e7541ea.yml ================================================ ================================================ FILE: .yarn/versions/7f040c3e.yml ================================================ undecided: - "@subql/common" ================================================ FILE: .yarn/versions/801fb397.yml ================================================ undecided: - "@subql/cli" - "@subql/common" - "@subql/common-substrate" - "@subql/node" - "@subql/node-core" - "@subql/query" - "@subql/types" - "@subql/types-core" ================================================ FILE: .yarn/versions/809ea2e4.yml ================================================ ================================================ FILE: .yarn/versions/824e82cb.yml ================================================ undecided: - "@subql/cli" - "@subql/common" ================================================ FILE: .yarn/versions/8374b398.yml ================================================ undecided: - "@subql/node-core" ================================================ FILE: .yarn/versions/839fb9d1.yml ================================================ undecided: - "@subql/node-core" ================================================ FILE: .yarn/versions/83bb6400.yml ================================================ undecided: - "@subql/node-core" ================================================ FILE: .yarn/versions/848e4e2b.yml ================================================ ================================================ FILE: .yarn/versions/8492acfd.yml ================================================ undecided: - "@subql/cli" - "@subql/common" - "@subql/common-substrate" - "@subql/node" - "@subql/node-core" ================================================ FILE: .yarn/versions/84941eaf.yml ================================================ undecided: - "@subql/cli" ================================================ FILE: .yarn/versions/84dbb7ce.yml ================================================ ================================================ FILE: .yarn/versions/84f6e423.yml ================================================ undecided: - "@subql/cli" - "@subql/common" - "@subql/node" - "@subql/node-core" - "@subql/query" ================================================ FILE: .yarn/versions/857e5ecd.yml ================================================ undecided: - "@subql/node-core" - "@subql/types-core" ================================================ FILE: .yarn/versions/8601d478.yml ================================================ ================================================ FILE: .yarn/versions/863b06ea.yml ================================================ ================================================ FILE: .yarn/versions/86ccde0d.yml ================================================ undecided: - "@subql/node-core" ================================================ FILE: .yarn/versions/8868808f.yml ================================================ ================================================ FILE: .yarn/versions/887de416.yml ================================================ undecided: - "@subql/common" - "@subql/node" - "@subql/node-core" - "@subql/query" - "@subql/utils" ================================================ FILE: .yarn/versions/889ef0f3.yml ================================================ undecided: - "@subql/node" - "@subql/node-core" ================================================ FILE: .yarn/versions/88fc2bd8.yml ================================================ undecided: - "@subql/node-core" ================================================ FILE: .yarn/versions/8a413ac0.yml ================================================ undecided: - "@subql/common" - "@subql/node-core" - "@subql/types-core" ================================================ FILE: .yarn/versions/8b67f09a.yml ================================================ ================================================ FILE: .yarn/versions/8db1483b.yml ================================================ undecided: - "@subql/cli" - "@subql/node-core" ================================================ FILE: .yarn/versions/8e400644.yml ================================================ undecided: - "@subql/node-core" ================================================ FILE: .yarn/versions/9028a0bb.yml ================================================ undecided: - "@subql/cli" - "@subql/node" ================================================ FILE: .yarn/versions/91e494d1.yml ================================================ undecided: - "@subql/common" ================================================ FILE: .yarn/versions/920dae9d.yml ================================================ undecided: - "@subql/node" ================================================ FILE: .yarn/versions/92e577ad.yml ================================================ undecided: - "@subql/node-core" ================================================ FILE: .yarn/versions/92ff9489.yml ================================================ undecided: - "@subql/common" - "@subql/common-substrate" - "@subql/node" - "@subql/node-core" - "@subql/query" - "@subql/testing" - "@subql/types" - "@subql/types-core" - "@subql/utils" ================================================ FILE: .yarn/versions/936dc023.yml ================================================ ================================================ FILE: .yarn/versions/94b199e8.yml ================================================ ================================================ FILE: .yarn/versions/94c458c9.yml ================================================ ================================================ FILE: .yarn/versions/94e27173.yml ================================================ ================================================ FILE: .yarn/versions/9697cad0.yml ================================================ ================================================ FILE: .yarn/versions/97073d37.yml ================================================ undecided: - "@subql/cli" - "@subql/common" - "@subql/node" - "@subql/node-core" - "@subql/query" - "@subql/types" ================================================ FILE: .yarn/versions/99cf5827.yml ================================================ undecided: - "@subql/node-core" ================================================ FILE: .yarn/versions/9a8e6f5d.yml ================================================ ================================================ FILE: .yarn/versions/9b3e8476.yml ================================================ ================================================ FILE: .yarn/versions/9eb1a879.yml ================================================ undecided: - "@subql/cli" - "@subql/common" - "@subql/common-substrate" - "@subql/node" - "@subql/node-core" - "@subql/utils" ================================================ FILE: .yarn/versions/9ee902ce.yml ================================================ undecided: - "@subql/common" - "@subql/common-substrate" - "@subql/node" - "@subql/node-core" - "@subql/query" - "@subql/types" ================================================ FILE: .yarn/versions/9f00000f.yml ================================================ ================================================ FILE: .yarn/versions/9f0e3f63.yml ================================================ ================================================ FILE: .yarn/versions/a13e7af4.yml ================================================ undecided: - "@subql/common" - "@subql/node-core" ================================================ FILE: .yarn/versions/a2c2414d.yml ================================================ ================================================ FILE: .yarn/versions/a32f012b.yml ================================================ ================================================ FILE: .yarn/versions/a35b2993.yml ================================================ undecided: - "@subql/cli" - "@subql/common" - "@subql/node" - "@subql/node-core" - "@subql/query" - "@subql/types" - "@subql/types-core" ================================================ FILE: .yarn/versions/a45f2358.yml ================================================ ================================================ FILE: .yarn/versions/a48f5a85.yml ================================================ undecided: - "@subql/common" - "@subql/common-substrate" - "@subql/node" - "@subql/node-core" - "@subql/query" - "@subql/types" - "@subql/types-core" - "@subql/utils" ================================================ FILE: .yarn/versions/a5397fcf.yml ================================================ ================================================ FILE: .yarn/versions/a5707e08.yml ================================================ undecided: - "@subql/utils" ================================================ FILE: .yarn/versions/a731a8ae.yml ================================================ undecided: - "@subql/node-core" ================================================ FILE: .yarn/versions/a9019480.yml ================================================ ================================================ FILE: .yarn/versions/a9d498ca.yml ================================================ undecided: - "@subql/common" - "@subql/common-substrate" - "@subql/node" - "@subql/node-core" - "@subql/query" - "@subql/testing" - "@subql/types" - "@subql/types-core" - "@subql/utils" ================================================ FILE: .yarn/versions/abc53221.yml ================================================ ================================================ FILE: .yarn/versions/ac20c55f.yml ================================================ ================================================ FILE: .yarn/versions/ad1e1894.yml ================================================ undecided: - "@subql/node-core" ================================================ FILE: .yarn/versions/aead78a6.yml ================================================ undecided: - "@subql/node" - "@subql/utils" ================================================ FILE: .yarn/versions/aed25208.yml ================================================ ================================================ FILE: .yarn/versions/aee1ecce.yml ================================================ undecided: - "@subql/cli" - "@subql/node" - "@subql/node-core" ================================================ FILE: .yarn/versions/aff12ab8.yml ================================================ undecided: - "@subql/cli" - "@subql/common" - "@subql/common-substrate" - "@subql/node" - "@subql/node-core" - "@subql/query" - "@subql/testing" - "@subql/types" - "@subql/types-core" ================================================ FILE: .yarn/versions/aff73acf.yml ================================================ ================================================ FILE: .yarn/versions/b027b217.yml ================================================ ================================================ FILE: .yarn/versions/b03d4318.yml ================================================ undecided: - "@subql/node" - "@subql/node-core" - "@subql/types" - "@subql/types-core" ================================================ FILE: .yarn/versions/b0c2a823.yml ================================================ ================================================ FILE: .yarn/versions/b0fa9de1.yml ================================================ ================================================ FILE: .yarn/versions/b2d60f10.yml ================================================ ================================================ FILE: .yarn/versions/b2e2403b.yml ================================================ undecided: - "@subql/node-core" ================================================ FILE: .yarn/versions/b426a40b.yml ================================================ undecided: - "@subql/common" - "@subql/node-core" - "@subql/types" - "@subql/types-core" ================================================ FILE: .yarn/versions/b472bd3f.yml ================================================ undecided: - "@subql/types-core" ================================================ FILE: .yarn/versions/b479fb33.yml ================================================ undecided: - "@subql/common" - "@subql/node" - "@subql/node-core" - "@subql/query" - "@subql/types" - "@subql/types-core" - "@subql/utils" ================================================ FILE: .yarn/versions/b4e981f5.yml ================================================ undecided: - "@subql/common" - "@subql/testing" ================================================ FILE: .yarn/versions/b5edf689.yml ================================================ undecided: - "@subql/node-core" ================================================ FILE: .yarn/versions/b6bb98d9.yml ================================================ undecided: - "@subql/cli" - "@subql/node" - "@subql/query" - "@subql/types" - "@subql/types-core" ================================================ FILE: .yarn/versions/b774fd26.yml ================================================ undecided: - "@subql/node-core" ================================================ FILE: .yarn/versions/b7f761b8.yml ================================================ ================================================ FILE: .yarn/versions/b9a59bb0.yml ================================================ ================================================ FILE: .yarn/versions/b9fbde3d.yml ================================================ undecided: - "@subql/node-core" ================================================ FILE: .yarn/versions/ba107355.yml ================================================ ================================================ FILE: .yarn/versions/ba8ed0a5.yml ================================================ ================================================ FILE: .yarn/versions/bad2bdac.yml ================================================ undecided: - "@subql/node" ================================================ FILE: .yarn/versions/bb628b53.yml ================================================ undecided: - "@subql/cli" - "@subql/query" ================================================ FILE: .yarn/versions/bc5d92ce.yml ================================================ undecided: - "@subql/node" - "@subql/node-core" ================================================ FILE: .yarn/versions/bd58ec77.yml ================================================ undecided: - "@subql/node-core" ================================================ FILE: .yarn/versions/bf0c3052.yml ================================================ undecided: - "@subql/cli" - "@subql/node" - "@subql/query" ================================================ FILE: .yarn/versions/c03d8f8e.yml ================================================ undecided: - "@subql/node" - "@subql/node-core" ================================================ FILE: .yarn/versions/c0558c15.yml ================================================ undecided: - "@subql/common" - "@subql/common-substrate" - "@subql/node" - "@subql/node-core" - "@subql/query" - "@subql/testing" - "@subql/types" - "@subql/types-core" - "@subql/utils" ================================================ FILE: .yarn/versions/c0f27d9b.yml ================================================ undecided: - "@subql/node-core" ================================================ FILE: .yarn/versions/c285fbd3.yml ================================================ ================================================ FILE: .yarn/versions/c31e963e.yml ================================================ ================================================ FILE: .yarn/versions/c4866a61.yml ================================================ undecided: - "@subql/node-core" ================================================ FILE: .yarn/versions/c53f3d2c.yml ================================================ ================================================ FILE: .yarn/versions/c5dcf5ae.yml ================================================ ================================================ FILE: .yarn/versions/c6e0453e.yml ================================================ undecided: - "@subql/query" ================================================ FILE: .yarn/versions/c92ce9ed.yml ================================================ undecided: - "@subql/node-core" ================================================ FILE: .yarn/versions/c9bd14f9.yml ================================================ undecided: - "@subql/types" - "@subql/utils" ================================================ FILE: .yarn/versions/ca56439e.yml ================================================ undecided: - "@subql/node-core" ================================================ FILE: .yarn/versions/cb885b36.yml ================================================ undecided: - "@subql/node" ================================================ FILE: .yarn/versions/cd1b2f42.yml ================================================ ================================================ FILE: .yarn/versions/ce799c7c.yml ================================================ ================================================ FILE: .yarn/versions/cec7de4a.yml ================================================ ================================================ FILE: .yarn/versions/cf33fed9.yml ================================================ undecided: - "@subql/node" ================================================ FILE: .yarn/versions/d11aeeaf.yml ================================================ undecided: - "@subql/node-core" ================================================ FILE: .yarn/versions/d2b1da3c.yml ================================================ undecided: - "@subql/cli" - "@subql/node" - "@subql/node-core" ================================================ FILE: .yarn/versions/d2d9e21c.yml ================================================ ================================================ FILE: .yarn/versions/d408027a.yml ================================================ ================================================ FILE: .yarn/versions/d4c4867c.yml ================================================ undecided: - "@subql/node-core" ================================================ FILE: .yarn/versions/d52444a9.yml ================================================ ================================================ FILE: .yarn/versions/d5ba03dd.yml ================================================ undecided: - "@subql/node-core" - "@subql/types" ================================================ FILE: .yarn/versions/d6f4a8f0.yml ================================================ undecided: - "@subql/node-core" ================================================ FILE: .yarn/versions/d80bd429.yml ================================================ undecided: - "@subql/common" - "@subql/node-core" - "@subql/types" ================================================ FILE: .yarn/versions/d8be227b.yml ================================================ ================================================ FILE: .yarn/versions/d9e0b292.yml ================================================ undecided: - "@subql/node-core" ================================================ FILE: .yarn/versions/da057245.yml ================================================ ================================================ FILE: .yarn/versions/db4f7e5e.yml ================================================ ================================================ FILE: .yarn/versions/dbb42c9d.yml ================================================ undecided: - "@subql/node-core" ================================================ FILE: .yarn/versions/dbefade5.yml ================================================ ================================================ FILE: .yarn/versions/dc0e431b.yml ================================================ ================================================ FILE: .yarn/versions/dc12d9bd.yml ================================================ undecided: - "@subql/cli" - "@subql/common" - "@subql/node" - "@subql/node-core" - "@subql/query" - "@subql/types" ================================================ FILE: .yarn/versions/e0c9f4f0.yml ================================================ ================================================ FILE: .yarn/versions/e1b8ab9f.yml ================================================ ================================================ FILE: .yarn/versions/e2a9b214.yml ================================================ undecided: - "@subql/node-core" ================================================ FILE: .yarn/versions/e4f4b87b.yml ================================================ undecided: - "@subql/node" - "@subql/node-core" - "@subql/types" ================================================ FILE: .yarn/versions/e5f68ec8.yml ================================================ ================================================ FILE: .yarn/versions/e67c5647.yml ================================================ undecided: - "@subql/node-core" ================================================ FILE: .yarn/versions/e6985a5f.yml ================================================ undecided: - "@subql/utils" ================================================ FILE: .yarn/versions/e6aa2497.yml ================================================ undecided: - "@subql/node" - "@subql/node-core" ================================================ FILE: .yarn/versions/e74a08eb.yml ================================================ ================================================ FILE: .yarn/versions/e7d60c2f.yml ================================================ ================================================ FILE: .yarn/versions/e8cc0f85.yml ================================================ ================================================ FILE: .yarn/versions/eb626a6c.yml ================================================ ================================================ FILE: .yarn/versions/ebb85f62.yml ================================================ ================================================ FILE: .yarn/versions/ec268f6d.yml ================================================ ================================================ FILE: .yarn/versions/ecf335ea.yml ================================================ undecided: - "@subql/node-core" ================================================ FILE: .yarn/versions/ee2043f1.yml ================================================ ================================================ FILE: .yarn/versions/ee841b6d.yml ================================================ undecided: - "@subql/node-core" - "@subql/query" - "@subql/utils" ================================================ FILE: .yarn/versions/eee92eb3.yml ================================================ undecided: - "@subql/common" ================================================ FILE: .yarn/versions/ef1533bb.yml ================================================ undecided: - "@subql/common-substrate" ================================================ FILE: .yarn/versions/ef86740e.yml ================================================ ================================================ FILE: .yarn/versions/f2404812.yml ================================================ ================================================ FILE: .yarn/versions/f3aed7d7.yml ================================================ ================================================ FILE: .yarn/versions/f4be8046.yml ================================================ undecided: - "@subql/query" ================================================ FILE: .yarn/versions/f5fd9c46.yml ================================================ undecided: - "@subql/utils" ================================================ FILE: .yarn/versions/f6c96839.yml ================================================ undecided: - "@subql/common" - "@subql/common-substrate" - "@subql/node" - "@subql/node-core" ================================================ FILE: .yarn/versions/f7027f4a.yml ================================================ undecided: - "@subql/types-core" ================================================ FILE: .yarn/versions/f94438ba.yml ================================================ undecided: - "@subql/node" ================================================ FILE: .yarn/versions/fbc620b4.yml ================================================ ================================================ FILE: .yarn/versions/fbe61a9b.yml ================================================ undecided: - "@subql/types" - "@subql/types-core" ================================================ FILE: .yarn/versions/fc193ed1.yml ================================================ undecided: - "@subql/cli" - "@subql/common" - "@subql/node-core" ================================================ FILE: .yarn/versions/fc8527ab.yml ================================================ undecided: - "@subql/common" ================================================ FILE: .yarn/versions/fd047138.yml ================================================ undecided: - "@subql/common-substrate" - "@subql/node-core" - "@subql/types-core" ================================================ FILE: .yarn/versions/fd2e440b.yml ================================================ undecided: - "@subql/node" ================================================ FILE: .yarn/versions/fee55ccb.yml ================================================ ================================================ FILE: .yarn/versions/ff1a8bcd.yml ================================================ undecided: - "@subql/cli" - "@subql/common" - "@subql/common-substrate" - "@subql/node" - "@subql/node-core" - "@subql/query" - "@subql/testing" - "@subql/types" - "@subql/types-core" ================================================ FILE: .yarn/versions/ff271075.yml ================================================ undecided: - "@subql/common" - "@subql/node-core" ================================================ FILE: .yarn/versions/ff80eab6.yml ================================================ ================================================ FILE: .yarnrc.yml ================================================ changesetBaseRefs: - main - origin/main compressionLevel: mixed enableGlobalCache: false enableImmutableInstalls: false enableProgressBars: false nodeLinker: node-modules npmAuthToken: "${NPM_TOKEN:-}" npmPublishRegistry: "https://registry.npmjs.org" yarnPath: .yarn/releases/yarn-4.10.3.cjs ================================================ FILE: CLAUDE.md ================================================ # CLAUDE.md This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository. ## Plan and Reivew ### Before Starting work - Always in planning mode, to make a plan - After the plan is made, make sure to write the plan to ./.claude/tasks/TASK_NAME.md - The plan should be a detailed implementation and the reasoning behind them as well as the tasks broken down - If the task requires external knowledge or certain dependencies, also research to get the latest knowledge. (Use the Task tool for research) - Don't over plan it, always design an MVP - Once you make the plan, firstly ask me to review it . Do not continue until I approve the plan ### While implementing - The plan should be updated as you work - After completing tasks in the plan you should append a detailed description of the channges you made, so the following tasks can be handed over to other engineers ## Development Commands ### Building - `yarn build` - Build all packages in the workspace using TypeScript - Individual package builds use `tsc -b` and copy necessary files (e.g., CLI templates) ### Testing - `yarn test` - Run Jest tests with coverage in UTC timezone - `yarn test:ci` - Run tests in CI mode with specific patterns - `yarn test:docker` - Run tests in Docker containers ### Linting and Code Quality - `yarn lint` - Run ESLint across all TypeScript files in packages - Uses ESLint with TypeScript support, Prettier, and various plugins - Configured with husky pre-commit hooks and lint-staged ### CLI-Specific Commands (packages/cli) - `yarn build` - Builds CLI and copies templates to lib/ - `yarn format` - Format code using Prettier - `yarn codegen` - Generate GraphQL and API client code - `yarn codegen:graphql` - Generate GraphQL types - `yarn codegen:chs` - Generate consumer host service API client ## Project Architecture ### Monorepo Structure This is a Yarn workspace monorepo containing multiple packages: - **`@subql/cli`** - Command-line interface for SubQuery projects (OCLIF-based) - **`@subql/node`** - Substrate-specific SubQuery indexer implementation - **`@subql/node-core`** - Core chain-agnostic indexing functionality - **`@subql/query`** - GraphQL query service - **`@subql/common`** - Shared utilities and types - **`@subql/common-substrate`** - Substrate-specific common utilities - **`@subql/types-core`** - Core type definitions - **`@subql/utils`** - General utility functions ### CLI Commands Architecture The CLI uses OCLIF framework with commands organized by functionality: - **Core project lifecycle**: `init`, `build`, `publish` - **Code generation**: `codegen` (GraphQL types, ABI imports) - **Multi-chain support**: `multi-chain add` - **Network operations**: Commands for SubQuery Network (deployments, projects, API keys, boosts) - **OnFinality hosting**: Project and deployment management - **Migration tools**: Project upgrade utilities - **MCP integration**: Model Context Protocol support for AI tools ### Key Technologies - **TypeScript** throughout with strict configuration - **OCLIF** for CLI framework - **Jest** for testing with custom module mapping for workspace packages - **ESBuild** and **Webpack** for bundling - **GraphQL** code generation - **Zod** for schema validation - **Ethers.js** for Ethereum integration - **WalletConnect** for wallet interactions ### Development Patterns #### Package Dependencies Uses Yarn workspace protocol (`workspace:~`) for internal package dependencies to ensure proper linking during development. #### Testing Setup - Custom Jest configuration with module name mapping for workspace packages - UTC timezone enforcement for consistent test behavior - Coverage collection across multiple packages - Special handling for Polkadot packages in transform ignore patterns #### CLI Command Structure Commands follow a consistent pattern: - Input validation using Zod schemas - Adapter functions for shared logic between CLI and MCP modes - Structured logging and error handling - Progress indication using ora spinner #### MCP Integration The CLI supports Model Context Protocol for AI tool integration, allowing commands to be executed through AI interfaces like Cursor. ### Build System - TypeScript compilation with project references - Template copying for CLI (EJS templates in src/template → lib/template) - OCLIF manifest generation for command discovery - Automatic README generation from command help ### Network Support SubQuery supports multiple blockchain networks: - Polkadot/Substrate (primary) - Ethereum and EVM-compatible chains - Cosmos/CosmWasm - Algorand, NEAR, Stellar, Solana, Starknet, Concordium Each network has its own implementation repository, with this repo containing the core Substrate implementation and shared components. ================================================ FILE: CODE_OF_CONDUCT.md ================================================ # SubQuery Code of Conduct SubQuery, as contributors, and maintainers pledge to make participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, visible or invisible disability, ethnicity, sex characteristics, gender identity and expression, level of experience, education, socio-economic status, nationality, personal appearance, race, religion, or sexual identity and orientation. We pledge to act and interact in ways that contribute to an open, welcoming, diverse, inclusive, and healthy community. ## Our Standards Examples of behavior that contributes to a positive environment for our community include: * Supporting for new contributors by providing help and pointing them to the right examples and documentation * Demonstrating empathy and kindness toward other people * Using welcoming and inclusive language * Being respectful of differing opinions, viewpoints, and experiences * Giving and gracefully accepting constructive feedback * Focusing on what is best for the overall community Examples of unacceptable behavior include: * The use of sexualized language or imagery, and sexual attention or advances of any kind * Trolling, insulting or derogatory comments, and personal or political attacks * Public or private harassment * Publishing others' private information, such as a physical or email address, without their explicit permission * Other conduct which could reasonably be considered inappropriate in a professional setting ## Our Responsibilities Project maintainers are responsible for clarifying and enforcing our standards of acceptable behavior and will take appropriate and fair corrective action in response to any behavior that is deemed inappropriate, threatening, offensive, or harmful. Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that are deemed inappropriate, threatening, offensive, or harmful. ## Scope This Code of Conduct applies to all of SubQuery's content on GitHub, as well as at all official SubQuery events, whether offline or online. Examples of representing a project or community include using an official e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. ## Reporting Code of Conduct Issues SubQuery encourages all communities to resolve issues on their own whenever possible. This builds a broader and deeper understanding and ultimately a healthier interaction. In the event that an issue cannot be resolved locally, please feel free to report your concerns by contacting support@subquery.network. All complaints will be reviewed and investigated promptly and fairly. SubQuery will respect the privacy and security of the reporter of any incident. All reports will be reviewed by a multi-person team and will result in a response that is deemed necessary and appropriate to the circumstances. Where additional perspectives are needed, the team may seek insight from others with relevant expertise or experience. The confidentiality of the person reporting the incident will be kept at all times. Involved parties are never part of the review team. ## Attribution This Code of Conduct is adapted from version 2.0 of the [Contributor Covenant](https://www.contributor-covenant.org/version/2/0/code_of_conduct.html) ================================================ FILE: LICENSE ================================================ GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 Copyright (C) 2007 Free Software Foundation, Inc. Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The GNU General Public License is a free, copyleft license for software and other kinds of works. The licenses for most software and other practical works are designed to take away your freedom to share and change the works. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change all versions of a program--to make sure it remains free software for all its users. We, the Free Software Foundation, use the GNU General Public License for most of our software; it applies also to any other work released this way by its authors. You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for them if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs, and that you know you can do these things. To protect your rights, we need to prevent others from denying you these rights or asking you to surrender the rights. Therefore, you have certain responsibilities if you distribute copies of the software, or if you modify it: responsibilities to respect the freedom of others. For example, if you distribute copies of such a program, whether gratis or for a fee, you must pass on to the recipients the same freedoms that you received. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. Developers that use the GNU GPL protect your rights with two steps: (1) assert copyright on the software, and (2) offer you this License giving you legal permission to copy, distribute and/or modify it. For the developers' and authors' protection, the GPL clearly explains that there is no warranty for this free software. For both users' and authors' sake, the GPL requires that modified versions be marked as changed, so that their problems will not be attributed erroneously to authors of previous versions. Some devices are designed to deny users access to install or run modified versions of the software inside them, although the manufacturer can do so. This is fundamentally incompatible with the aim of protecting users' freedom to change the software. The systematic pattern of such abuse occurs in the area of products for individuals to use, which is precisely where it is most unacceptable. Therefore, we have designed this version of the GPL to prohibit the practice for those products. If such problems arise substantially in other domains, we stand ready to extend this provision to those domains in future versions of the GPL, as needed to protect the freedom of users. Finally, every program is threatened constantly by software patents. States should not allow patents to restrict development and use of software on general-purpose computers, but in those that do, we wish to avoid the special danger that patents applied to a free program could make it effectively proprietary. To prevent this, the GPL assures that patents cannot be used to render the program non-free. The precise terms and conditions for copying, distribution and modification follow. TERMS AND CONDITIONS 0. Definitions. "This License" refers to version 3 of the GNU General Public License. "Copyright" also means copyright-like laws that apply to other kinds of works, such as semiconductor masks. "The Program" refers to any copyrightable work licensed under this License. Each licensee is addressed as "you". "Licensees" and "recipients" may be individuals or organizations. To "modify" a work means to copy from or adapt all or part of the work in a fashion requiring copyright permission, other than the making of an exact copy. The resulting work is called a "modified version" of the earlier work or a work "based on" the earlier work. A "covered work" means either the unmodified Program or a work based on the Program. To "propagate" a work means to do anything with it that, without permission, would make you directly or secondarily liable for infringement under applicable copyright law, except executing it on a computer or modifying a private copy. Propagation includes copying, distribution (with or without modification), making available to the public, and in some countries other activities as well. To "convey" a work means any kind of propagation that enables other parties to make or receive copies. Mere interaction with a user through a computer network, with no transfer of a copy, is not conveying. An interactive user interface displays "Appropriate Legal Notices" to the extent that it includes a convenient and prominently visible feature that (1) displays an appropriate copyright notice, and (2) tells the user that there is no warranty for the work (except to the extent that warranties are provided), that licensees may convey the work under this License, and how to view a copy of this License. If the interface presents a list of user commands or options, such as a menu, a prominent item in the list meets this criterion. 1. Source Code. The "source code" for a work means the preferred form of the work for making modifications to it. "Object code" means any non-source form of a work. A "Standard Interface" means an interface that either is an official standard defined by a recognized standards body, or, in the case of interfaces specified for a particular programming language, one that is widely used among developers working in that language. The "System Libraries" of an executable work include anything, other than the work as a whole, that (a) is included in the normal form of packaging a Major Component, but which is not part of that Major Component, and (b) serves only to enable use of the work with that Major Component, or to implement a Standard Interface for which an implementation is available to the public in source code form. A "Major Component", in this context, means a major essential component (kernel, window system, and so on) of the specific operating system (if any) on which the executable work runs, or a compiler used to produce the work, or an object code interpreter used to run it. The "Corresponding Source" for a work in object code form means all the source code needed to generate, install, and (for an executable work) run the object code and to modify the work, including scripts to control those activities. However, it does not include the work's System Libraries, or general-purpose tools or generally available free programs which are used unmodified in performing those activities but which are not part of the work. For example, Corresponding Source includes interface definition files associated with source files for the work, and the source code for shared libraries and dynamically linked subprograms that the work is specifically designed to require, such as by intimate data communication or control flow between those subprograms and other parts of the work. The Corresponding Source need not include anything that users can regenerate automatically from other parts of the Corresponding Source. The Corresponding Source for a work in source code form is that same work. 2. Basic Permissions. All rights granted under this License are granted for the term of copyright on the Program, and are irrevocable provided the stated conditions are met. This License explicitly affirms your unlimited permission to run the unmodified Program. The output from running a covered work is covered by this License only if the output, given its content, constitutes a covered work. This License acknowledges your rights of fair use or other equivalent, as provided by copyright law. You may make, run and propagate covered works that you do not convey, without conditions so long as your license otherwise remains in force. You may convey covered works to others for the sole purpose of having them make modifications exclusively for you, or provide you with facilities for running those works, provided that you comply with the terms of this License in conveying all material for which you do not control copyright. Those thus making or running the covered works for you must do so exclusively on your behalf, under your direction and control, on terms that prohibit them from making any copies of your copyrighted material outside their relationship with you. Conveying under any other circumstances is permitted solely under the conditions stated below. Sublicensing is not allowed; section 10 makes it unnecessary. 3. Protecting Users' Legal Rights From Anti-Circumvention Law. No covered work shall be deemed part of an effective technological measure under any applicable law fulfilling obligations under article 11 of the WIPO copyright treaty adopted on 20 December 1996, or similar laws prohibiting or restricting circumvention of such measures. When you convey a covered work, you waive any legal power to forbid circumvention of technological measures to the extent such circumvention is effected by exercising rights under this License with respect to the covered work, and you disclaim any intention to limit operation or modification of the work as a means of enforcing, against the work's users, your or third parties' legal rights to forbid circumvention of technological measures. 4. Conveying Verbatim Copies. You may convey verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice; keep intact all notices stating that this License and any non-permissive terms added in accord with section 7 apply to the code; keep intact all notices of the absence of any warranty; and give all recipients a copy of this License along with the Program. You may charge any price or no price for each copy that you convey, and you may offer support or warranty protection for a fee. 5. Conveying Modified Source Versions. You may convey a work based on the Program, or the modifications to produce it from the Program, in the form of source code under the terms of section 4, provided that you also meet all of these conditions: a) The work must carry prominent notices stating that you modified it, and giving a relevant date. b) The work must carry prominent notices stating that it is released under this License and any conditions added under section 7. This requirement modifies the requirement in section 4 to "keep intact all notices". c) You must license the entire work, as a whole, under this License to anyone who comes into possession of a copy. This License will therefore apply, along with any applicable section 7 additional terms, to the whole of the work, and all its parts, regardless of how they are packaged. This License gives no permission to license the work in any other way, but it does not invalidate such permission if you have separately received it. d) If the work has interactive user interfaces, each must display Appropriate Legal Notices; however, if the Program has interactive interfaces that do not display Appropriate Legal Notices, your work need not make them do so. A compilation of a covered work with other separate and independent works, which are not by their nature extensions of the covered work, and which are not combined with it such as to form a larger program, in or on a volume of a storage or distribution medium, is called an "aggregate" if the compilation and its resulting copyright are not used to limit the access or legal rights of the compilation's users beyond what the individual works permit. Inclusion of a covered work in an aggregate does not cause this License to apply to the other parts of the aggregate. 6. Conveying Non-Source Forms. You may convey a covered work in object code form under the terms of sections 4 and 5, provided that you also convey the machine-readable Corresponding Source under the terms of this License, in one of these ways: a) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by the Corresponding Source fixed on a durable physical medium customarily used for software interchange. b) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by a written offer, valid for at least three years and valid for as long as you offer spare parts or customer support for that product model, to give anyone who possesses the object code either (1) a copy of the Corresponding Source for all the software in the product that is covered by this License, on a durable physical medium customarily used for software interchange, for a price no more than your reasonable cost of physically performing this conveying of source, or (2) access to copy the Corresponding Source from a network server at no charge. c) Convey individual copies of the object code with a copy of the written offer to provide the Corresponding Source. This alternative is allowed only occasionally and noncommercially, and only if you received the object code with such an offer, in accord with subsection 6b. d) Convey the object code by offering access from a designated place (gratis or for a charge), and offer equivalent access to the Corresponding Source in the same way through the same place at no further charge. You need not require recipients to copy the Corresponding Source along with the object code. If the place to copy the object code is a network server, the Corresponding Source may be on a different server (operated by you or a third party) that supports equivalent copying facilities, provided you maintain clear directions next to the object code saying where to find the Corresponding Source. Regardless of what server hosts the Corresponding Source, you remain obligated to ensure that it is available for as long as needed to satisfy these requirements. e) Convey the object code using peer-to-peer transmission, provided you inform other peers where the object code and Corresponding Source of the work are being offered to the general public at no charge under subsection 6d. A separable portion of the object code, whose source code is excluded from the Corresponding Source as a System Library, need not be included in conveying the object code work. A "User Product" is either (1) a "consumer product", which means any tangible personal property which is normally used for personal, family, or household purposes, or (2) anything designed or sold for incorporation into a dwelling. In determining whether a product is a consumer product, doubtful cases shall be resolved in favor of coverage. For a particular product received by a particular user, "normally used" refers to a typical or common use of that class of product, regardless of the status of the particular user or of the way in which the particular user actually uses, or expects or is expected to use, the product. A product is a consumer product regardless of whether the product has substantial commercial, industrial or non-consumer uses, unless such uses represent the only significant mode of use of the product. "Installation Information" for a User Product means any methods, procedures, authorization keys, or other information required to install and execute modified versions of a covered work in that User Product from a modified version of its Corresponding Source. The information must suffice to ensure that the continued functioning of the modified object code is in no case prevented or interfered with solely because modification has been made. If you convey an object code work under this section in, or with, or specifically for use in, a User Product, and the conveying occurs as part of a transaction in which the right of possession and use of the User Product is transferred to the recipient in perpetuity or for a fixed term (regardless of how the transaction is characterized), the Corresponding Source conveyed under this section must be accompanied by the Installation Information. But this requirement does not apply if neither you nor any third party retains the ability to install modified object code on the User Product (for example, the work has been installed in ROM). The requirement to provide Installation Information does not include a requirement to continue to provide support service, warranty, or updates for a work that has been modified or installed by the recipient, or for the User Product in which it has been modified or installed. Access to a network may be denied when the modification itself materially and adversely affects the operation of the network or violates the rules and protocols for communication across the network. Corresponding Source conveyed, and Installation Information provided, in accord with this section must be in a format that is publicly documented (and with an implementation available to the public in source code form), and must require no special password or key for unpacking, reading or copying. 7. Additional Terms. "Additional permissions" are terms that supplement the terms of this License by making exceptions from one or more of its conditions. Additional permissions that are applicable to the entire Program shall be treated as though they were included in this License, to the extent that they are valid under applicable law. If additional permissions apply only to part of the Program, that part may be used separately under those permissions, but the entire Program remains governed by this License without regard to the additional permissions. When you convey a copy of a covered work, you may at your option remove any additional permissions from that copy, or from any part of it. (Additional permissions may be written to require their own removal in certain cases when you modify the work.) You may place additional permissions on material, added by you to a covered work, for which you have or can give appropriate copyright permission. Notwithstanding any other provision of this License, for material you add to a covered work, you may (if authorized by the copyright holders of that material) supplement the terms of this License with terms: a) Disclaiming warranty or limiting liability differently from the terms of sections 15 and 16 of this License; or b) Requiring preservation of specified reasonable legal notices or author attributions in that material or in the Appropriate Legal Notices displayed by works containing it; or c) Prohibiting misrepresentation of the origin of that material, or requiring that modified versions of such material be marked in reasonable ways as different from the original version; or d) Limiting the use for publicity purposes of names of licensors or authors of the material; or e) Declining to grant rights under trademark law for use of some trade names, trademarks, or service marks; or f) Requiring indemnification of licensors and authors of that material by anyone who conveys the material (or modified versions of it) with contractual assumptions of liability to the recipient, for any liability that these contractual assumptions directly impose on those licensors and authors. All other non-permissive additional terms are considered "further restrictions" within the meaning of section 10. If the Program as you received it, or any part of it, contains a notice stating that it is governed by this License along with a term that is a further restriction, you may remove that term. If a license document contains a further restriction but permits relicensing or conveying under this License, you may add to a covered work material governed by the terms of that license document, provided that the further restriction does not survive such relicensing or conveying. If you add terms to a covered work in accord with this section, you must place, in the relevant source files, a statement of the additional terms that apply to those files, or a notice indicating where to find the applicable terms. Additional terms, permissive or non-permissive, may be stated in the form of a separately written license, or stated as exceptions; the above requirements apply either way. 8. Termination. You may not propagate or modify a covered work except as expressly provided under this License. Any attempt otherwise to propagate or modify it is void, and will automatically terminate your rights under this License (including any patent licenses granted under the third paragraph of section 11). However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation. Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means, this is the first time you have received notice of violation of this License (for any work) from that copyright holder, and you cure the violation prior to 30 days after your receipt of the notice. Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under this License. If your rights have been terminated and not permanently reinstated, you do not qualify to receive new licenses for the same material under section 10. 9. Acceptance Not Required for Having Copies. You are not required to accept this License in order to receive or run a copy of the Program. Ancillary propagation of a covered work occurring solely as a consequence of using peer-to-peer transmission to receive a copy likewise does not require acceptance. However, nothing other than this License grants you permission to propagate or modify any covered work. These actions infringe copyright if you do not accept this License. Therefore, by modifying or propagating a covered work, you indicate your acceptance of this License to do so. 10. Automatic Licensing of Downstream Recipients. Each time you convey a covered work, the recipient automatically receives a license from the original licensors, to run, modify and propagate that work, subject to this License. You are not responsible for enforcing compliance by third parties with this License. An "entity transaction" is a transaction transferring control of an organization, or substantially all assets of one, or subdividing an organization, or merging organizations. If propagation of a covered work results from an entity transaction, each party to that transaction who receives a copy of the work also receives whatever licenses to the work the party's predecessor in interest had or could give under the previous paragraph, plus a right to possession of the Corresponding Source of the work from the predecessor in interest, if the predecessor has it or can get it with reasonable efforts. You may not impose any further restrictions on the exercise of the rights granted or affirmed under this License. For example, you may not impose a license fee, royalty, or other charge for exercise of rights granted under this License, and you may not initiate litigation (including a cross-claim or counterclaim in a lawsuit) alleging that any patent claim is infringed by making, using, selling, offering for sale, or importing the Program or any portion of it. 11. Patents. A "contributor" is a copyright holder who authorizes use under this License of the Program or a work on which the Program is based. The work thus licensed is called the contributor's "contributor version". A contributor's "essential patent claims" are all patent claims owned or controlled by the contributor, whether already acquired or hereafter acquired, that would be infringed by some manner, permitted by this License, of making, using, or selling its contributor version, but do not include claims that would be infringed only as a consequence of further modification of the contributor version. For purposes of this definition, "control" includes the right to grant patent sublicenses in a manner consistent with the requirements of this License. Each contributor grants you a non-exclusive, worldwide, royalty-free patent license under the contributor's essential patent claims, to make, use, sell, offer for sale, import and otherwise run, modify and propagate the contents of its contributor version. In the following three paragraphs, a "patent license" is any express agreement or commitment, however denominated, not to enforce a patent (such as an express permission to practice a patent or covenant not to sue for patent infringement). To "grant" such a patent license to a party means to make such an agreement or commitment not to enforce a patent against the party. If you convey a covered work, knowingly relying on a patent license, and the Corresponding Source of the work is not available for anyone to copy, free of charge and under the terms of this License, through a publicly available network server or other readily accessible means, then you must either (1) cause the Corresponding Source to be so available, or (2) arrange to deprive yourself of the benefit of the patent license for this particular work, or (3) arrange, in a manner consistent with the requirements of this License, to extend the patent license to downstream recipients. "Knowingly relying" means you have actual knowledge that, but for the patent license, your conveying the covered work in a country, or your recipient's use of the covered work in a country, would infringe one or more identifiable patents in that country that you have reason to believe are valid. If, pursuant to or in connection with a single transaction or arrangement, you convey, or propagate by procuring conveyance of, a covered work, and grant a patent license to some of the parties receiving the covered work authorizing them to use, propagate, modify or convey a specific copy of the covered work, then the patent license you grant is automatically extended to all recipients of the covered work and works based on it. A patent license is "discriminatory" if it does not include within the scope of its coverage, prohibits the exercise of, or is conditioned on the non-exercise of one or more of the rights that are specifically granted under this License. You may not convey a covered work if you are a party to an arrangement with a third party that is in the business of distributing software, under which you make payment to the third party based on the extent of your activity of conveying the work, and under which the third party grants, to any of the parties who would receive the covered work from you, a discriminatory patent license (a) in connection with copies of the covered work conveyed by you (or copies made from those copies), or (b) primarily for and in connection with specific products or compilations that contain the covered work, unless you entered into that arrangement, or that patent license was granted, prior to 28 March 2007. Nothing in this License shall be construed as excluding or limiting any implied license or other defenses to infringement that may otherwise be available to you under applicable patent law. 12. No Surrender of Others' Freedom. If conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot convey a covered work so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not convey it at all. For example, if you agree to terms that obligate you to collect a royalty for further conveying from those to whom you convey the Program, the only way you could satisfy both those terms and this License would be to refrain entirely from conveying the Program. 13. Use with the GNU Affero General Public License. Notwithstanding any other provision of this License, you have permission to link or combine any covered work with a work licensed under version 3 of the GNU Affero General Public License into a single combined work, and to convey the resulting work. The terms of this License will continue to apply to the part which is the covered work, but the special requirements of the GNU Affero General Public License, section 13, concerning interaction through a network will apply to the combination as such. 14. Revised Versions of this License. The Free Software Foundation may publish revised and/or new versions of the GNU General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies that a certain numbered version of the GNU General Public License "or any later version" applies to it, you have the option of following the terms and conditions either of that numbered version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of the GNU General Public License, you may choose any version ever published by the Free Software Foundation. If the Program specifies that a proxy can decide which future versions of the GNU General Public License can be used, that proxy's public statement of acceptance of a version permanently authorizes you to choose that version for the Program. Later license versions may give you additional or different permissions. However, no additional obligations are imposed on any author or copyright holder as a result of your choosing to follow a later version. 15. Disclaimer of Warranty. THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 16. Limitation of Liability. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. 17. Interpretation of Sections 15 and 16. If the disclaimer of warranty and limitation of liability provided above cannot be given local legal effect according to their terms, reviewing courts shall apply local law that most closely approximates an absolute waiver of all civil liability in connection with the Program, unless a warranty or assumption of liability accompanies a copy of the Program in return for a fee. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively state the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . Also add information on how to contact you by electronic and paper mail. If the program does terminal interaction, make it output a short notice like this when it starts in an interactive mode: Copyright (C) This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, your program's commands might be different; for a GUI interface, you would use an "about box". You should also get your employer (if you work as a programmer) or school, if any, to sign a "copyright disclaimer" for the program, if necessary. For more information on this, and how to apply and follow the GNU GPL, see . The GNU General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. But first, please read . ================================================ FILE: README.md ================================================ # Welcome to SubQuery! **Flexible, reliable, and decentralised APIs for your web3 project** SubQuery is an Open, Flexible, Fast and Universal data indexing framework for web3. Our mission is to help developers create the decentralised products of the future. SubQuery allows teams across multiple blockchain architectures to process and query their data. The project is inspired by the growth of data protocols serving the application layer and its aim is to help web3 projects build better dApps by allowing anyone to reliably find and consume data faster. Today, anyone can query and extract blockchain data from various supported networks in only minutes and at no cost. The future is multi-chain - SubQuery is no different. SubQuery is well on our way to support all leading blockchain networks with support for the following: - [Polkadot (and all Substrate networks)](https://subquery.network/doc/indexer/quickstart/quickstart_chains/polkadot.html) - [Ethereum (and all EVM-compatible networks)](https://subquery.network/doc/indexer/quickstart/quickstart_chains/ethereum-gravatar.html) - [Cosmos (and all CosmWasm and Ethermint networks)](https://subquery.network/doc/indexer/quickstart/quickstart_chains/cosmos-osmosis.html) - [Algorand](https://subquery.network/doc/indexer/quickstart/quickstart_chains/algorand.html) - [NEAR](https://subquery.network/doc/indexer/quickstart/quickstart_chains/near.html) - [Stellar (including Soroban)](https://subquery.network/doc/indexer/quickstart/quickstart_chains/stellar.html) - [Solana (Beta)](https://subquery.network/doc/indexer/quickstart/quickstart_chains/solana.html) - [Starknet](https://subquery.network/doc/indexer/quickstart/quickstart_chains/starknet.html) - [Concordium](https://subquery.network/doc/indexer/quickstart/quickstart_chains/concordium.html) You can also use SubQuery to index data from multiple networks in any combination of the above SDKs. See our [Multi-Chain Indexing Quickstart](https://subquery.network/doc/indexer/quickstart/quickstart_multichain/galxe-nft.html) for more details. ## Get Started ### Create a SubQuery project You can follow our [Quick Start Guide](https://subquery.network/doc/indexer/quickstart/quickstart.html) to learn how to create, initialize, build, and publish a new SubQuery Project using the `@subql/cli` tool. ### Learn and improve with our comprehensive documentation Dig into every term, usecases, and best-practices that help you build a dApp which your users love. Take a look at our [detailed technical documentation](https://subquery.network/doc/indexer/build/introduction.html). ### Publish your SubQuery Project to the SubQuery Network Take advantage of the decentralized SubQuery Network to host your project without managing any infrastructure. By publishing to the [SubQuery Network](https://app.subquery.network), you'll benefit from a reliable, scalable, cost-optimised, and censorship-resistant indexing service. Follow our comprehensive [publishing guide](https://subquery.network/doc/subquery_network/architects/publish.html) to learn how to upload your project to the network and start leveraging its distributed infrastructure today. ### Publish to managed hosting providers If you prefer a managed hosting option for your indexer deployment, contact our managed hosting partners. [Learn more](https://subquery.network/doc/indexer/run_publish/introduction.html#other-hosting-providers-in-the-subquery-community). ### Run your own Indexer and Query Service [Follow our guide](https://subquery.network/doc/indexer/run_publish/run.html) to run your own SubQuery local node that you can use to debug, test, and run you own GraphQL server. You're going to need to a Postgres database, a node to extract chain data, and a moderately powerful computer to run the indexer in the background. You'll also use our custom-built GraphQL query service [`@subql/query`](https://www.npmjs.com/package/@subql/query) to interact with your SubQuery project. ## MCP (Beta) You can also create, build and deploy SubQuery projects using [MCP (Model Context Protocol)](https://modelcontextprotocol.io/introduction). Our MCP integration provides all the same functionality as the CLI but works well with LLMs and AI IDEs such as Cursor. [![Install MCP Server](https://cursor.com/deeplink/mcp-install-dark.svg)](https://cursor.com/install-mcp?name=SubQuery&config=eyJjb21tYW5kIjoibnB4IiwiYXJncyI6WyIteSIsIkBzdWJxbC9jbGkiLCJtY3AiXX0=) [![VSCode Install MCP Server](https://img.shields.io/badge/VS_Code-NPM-0098FF?style=flat-square&logo=visualstudiocode&logoColor=white)](https://vscode.dev/redirect/mcp/install?name=SubQuery&inputs=%7B%22id%22%3A%22workingDirectory%22%2C%22type%22%3A%22promptString%22%2C%22description%22%3A%22Working%20Directory%22%7D&config=%7B%22type%22%3A%22stdio%22%2C%22command%22%3A%22npx%22%2C%22cwd%22%3A%22%24%7Binput%3AworkingDirectory%7D%22%2C%22args%22%3A%5B%22-y%22%2C%22%40subql%2Fcli%22%2C%22mcp%22%5D%7D) ### Manual configuration For adding SubQuery MCP into other tools, the following command needs be run by the client. ```bash npx -y @subql/cli mcp ``` An example manual configuration: ```json "subquery": { "command": "npx", "args": ["-y", "@subql/cli", "mcp"] } ``` ## Components This repository contains all the core components of the SubQuery SDK as well as the Substrate implementation. It includes the following packages: * [`@subql/cli`](packages/cli) - The command line interface for SubQuery, used to create, build, and publish SubQuery projects * [`@subql/node`](packages/node) - The Substrate SubQuery SDK, which provides the indexing functionality for Substrate-based chains * [`@subql/node-core`](packages/node-core) - Core indexing functionality that is chain agnostic * [`@subql/query`](packages/query) - The GraphQL query service for SubQuery projects, allowing you to interact with your indexed data. * [`@subql/common`](packages/common) - Common utilities and types used across SubQuery packages * [`@subql/common-substrate`](packages/common-substrate) - Common utilities and types specifically for Substrate-based chains * [`@subql/types`](packages/types) - Type definitions for Substrate-based chains and SubQuery projects, including the project manifest and data models For more detail on the specific network implementations please see their respective repositories: * [`@subql/node-ethereum`](https://github.com/subquery/subql-ethereum) * [`@subql/node-cosmos`](https://github.com/subquery/subql-cosmos) * [`@subql/node-algorand`](https://github.com/subquery/subql-algorand) * [`@subql/node-near`](https://github.com/subquery/subql-near) * [`@subql/node-stellar`](https://github.com/subquery/subql-stellar) * [`@subql/node-solana`](https://github.com/subquery/subql-solana) * [`@subql/node-starknet`](https://github.com/subquery/subql-starknet) * [`@subql/node-concordium`](https://github.com/subquery/subql-concordium) ### Other Components: * [`@subql/query-subgraph`](https://github.com/subquery/query-subgraph/) - A Subgraph compatible query service for SubQuery projects. ## Support We have a vibrant community of developers and users who are always ready to help. If you have any questions, issues, or need assistance, please reach out to us through the following channels: - [Discord](https://discord.com/invite/subquery) - The best place to get help and discuss with the community - [X](https://twitter.com/subquerynetwork) - [Telegram](https://t.me/subquerynetwork) - [YouTube](https://www.youtube.com/c/SubQueryNetwork) ## Contribute We love contributions and feedback from the community. To contribute the code, we suggest starting by creating an issue in our main repository so we can give you support. ## Copyright SubQuery is a project built with love from the team at [SubQuery](https://subquery.network) all the way from New Zealand Copyright © 2025 [SubQuery Pte Ltd](https://subquery.network) authors & contributors ================================================ FILE: SECURITY.md ================================================ # Security Policy [Please see our policy here](https://academy.subquery.network/miscellaneous/vulnerability-reporting.html) ================================================ FILE: contributing.md ================================================ # Contributing to the SubQuery project Welcome and a big thank you for considering contributing to this SubQuery project! Together we can pave the way to a more decentralised future. What follows is a set of guidelines (not rules) for contributing to SubQuery. Following these guidelines will help us make the contribution process easy and effective for everyone involved. It also communicates that you agree to respect the time of the developers managing and developing this project. In return, we will reciprocate that respect by addressing your issue, considering changes, collaborating on improvements, and helping you finalise your pull requests. ## Code of Conduct We take our open source community projects and responsibility seriously and hold ourselves and other contributors to high standards of communication. By participating and contributing to this project, you agree to uphold our [Code of Conduct](https://github.com/subquery/subql/blob/main/CODE_OF_CONDUCT.md). ## Getting started Contributions to our repositories are made through Issues and Pull Requests (PRs). A few general guidelines that cover both: * Search for existing Issues and PRs before creating your own. * We work hard to makes sure issues are handled in promptly but, depending on the impact, it could take a while to investigate the root cause. A friendly @ mention in the comment thread to the submitter or a contributor can help draw attention if your issue is blocking. ## How to Contribute ### Reporting Bugs Bugs are tracked as GitHub issues. When logging an issue, explain the problem and include additional details to help maintainers reproduce the problem: * Use a clear and descriptive title for the issue to identify the problem. * Describe the exact steps to reproduce the problem. * Describe the behavior you observed after following the steps. * Explain which behavior you expected to see instead and why. * Include screenshots if possible. ### Submitting Pull Requests In general, we follow the "fork-and-pull" Git workflow * Fork the repository to your own Github account * Clone the project to your machine * Create a branch locally with a succinct but descriptive name * Commit changes to the branch * Following any formatting and testing guidelines specific to this repo * Push changes to your fork * Open a PR in our repository ### Publishing to Github Releases In order to publish to github release, there are prerequisites: * Firstly in the merged commit the phrase `[release]` must be present * Next, you must add a description of the release in the respective package's `CHANGELOG.md` * There must be some difference in the package compared with main * Lastly, the version must be in a format of x.y.z without '-' When a pull request to main has been accepted the workflow will try to create releases for each package where possible. ## Coding Conventions ### Git Commit Messages * Use the present tense ("Add feature" not "Added feature") * Use the imperative mood ("Move cursor to..." not "Moves cursor to...") * Limit the first line to 72 characters or less ### JavaScript Styleguide * All JavaScript code is linted with Prettier and ESLint ================================================ FILE: crowdin.yaml ================================================ files: - source: /docs/*.md translation: /docs/%two_letters_code%/%original_file_name% - source: /docs/create/*.md translation: /docs/%two_letters_code%/create/%original_file_name% - source: /docs/faqs/*.md translation: /docs/%two_letters_code%/faqs/%original_file_name% - source: /docs/install/*.md translation: /docs/%two_letters_code%/install/%original_file_name% - source: /docs/miscellaneous/*.md translation: /docs/%two_letters_code%/miscellaneous/%original_file_name% - source: /docs/publish/*.md translation: /docs/%two_letters_code%/publish/%original_file_name% - source: /docs/query/*.md translation: /docs/%two_letters_code%/query/%original_file_name% - source: /docs/quickstart/*.md translation: /docs/%two_letters_code%/quickstart/%original_file_name% - source: /docs/run/*.md translation: /docs/%two_letters_code%/run/%original_file_name% - source: /docs/tutorials_examples/*.md translation: /docs/%two_letters_code%/tutorials_examples/%original_file_name% ================================================ FILE: deploy/k8s/README.md ================================================ # K8s Deploy This [deploy.yaml](deploy.yaml) demonstrates how to run SubQuery in k8s. You will need to run ### 1. a subql-node to index data ```yaml apiVersion: apps/v1 kind: Deployment metadata: name: subql-node-1 labels: app: subql-node release: subql-node-1 spec: selector: matchLabels: release: subql-node-1 replicas: 1 template: metadata: labels: release: subql-node-1 spec: volumes: - name: project-dir emptyDir: medium: Memory initContainers: - name: prepare imagePullPolicy: IfNotPresent image: node:lts-alpine command: - sh - -c - apk add git && git clone https://github.com/OnFinality-io/subql-examples /subquery && cd /subquery/block-timestamp && npm i -g @subql/cli && yarn && subql codegen && yarn build volumeMounts: - name: project-dir mountPath: '/subquery' containers: - name: indexer imagePullPolicy: IfNotPresent image: onfinality/subql-node:v0.4.0 args: - -f - /subquery/block-timestamp - --local env: - name: DB_HOST value: subquery-db-svc - name: DB_PORT value: "5432" - name: DB_USER value: postgres - name: DB_PASS value: postgres - name: DB_DATABASE value: postgres volumeMounts: - name: project-dir mountPath: '/subquery' securityContext: runAsUser: 1000 securityContext: fsGroup: 1000 imagePullSecrets: - name: regcred ``` Note: `--local` will create subquery tables in public schema, if you want to store multiple subquery in the same db, remove that flag. #### 2. a Postgres Database ```yaml apiVersion: apps/v1 kind: StatefulSet metadata: name: subquery-db labels: app: postgres release: subquery-db spec: serviceName: subquery-db-svc selector: matchLabels: release: subquery-db volumeClaimTemplates: - metadata: name: subquery-db-pvc annotations: volume.beta.kubernetes.io/storage-class: standard spec: accessModes: - ReadWriteOnce resources: requests: storage: 20G template: metadata: labels: release: subquery-db spec: containers: - name: db imagePullPolicy: IfNotPresent image: postgres:12-alpine env: - name: POSTGRES_PASSWORD value: postgres ports: - containerPort: 5432 volumeMounts: - mountPath: /var/lib/postgresql name: subquery-db-pvc securityContext: fsGroup: 1000 imagePullSecrets: - name: regcred --- apiVersion: v1 kind: Service metadata: name: subquery-db-svc spec: clusterIP: None ports: - port: 5432 selector: release: subquery-db ``` Note that if used in production, a dedicated database should be used to get better performance. #### 3. Hasura for graphql querying ```yaml apiVersion: apps/v1 kind: Deployment metadata: name: hasura-deploy labels: release: hasura spec: selector: matchLabels: release: hasura replicas: 1 template: metadata: labels: release: hasura spec: containers: - name: hasura image: hasura/graphql-engine:v1.3.3 imagePullPolicy: IfNotPresent ports: - containerPort: 8080 env: # HASURA_GRAPHQL_DATABASE_URL: postgres://postgres:postgres@postgres:5432/postgres # ## enable the console served by server # HASURA_GRAPHQL_ENABLE_CONSOLE: "true" # set to "false" to disable console # ## enable debugging mode. It is recommended to disable this in production # HASURA_GRAPHQL_DEV_MODE: "true" # HASURA_GRAPHQL_ENABLED_LOG_TYPES: startup, http-log, webhook-log, websocket-log, query-log - name: HASURA_GRAPHQL_DATABASE_URL value: postgres://postgres:postgres@subquery-db-svc:5432/postgres - name: HASURA_GRAPHQL_ENABLE_CONSOLE value: 'true' terminationGracePeriodSeconds: 300 ``` To gain further security, an archive node should be used in the same k8s cluster, and a NetworkPolicy be added to limit all network communication within the internal network. ```yaml apiVersion: networking.k8s.io/v1 kind: NetworkPolicy metadata: name: subquery-node-egress spec: podSelector: matchLabels: release: subql-node-1 egress: - to: - ipBlock: cidr: 10.0.0.0/8 policyTypes: - Egress ``` ================================================ FILE: deploy/k8s/deploy.yaml ================================================ apiVersion: apps/v1 kind: Deployment metadata: name: subql-node-1 labels: app: subql-node release: subql-node-1 spec: selector: matchLabels: release: subql-node-1 replicas: 1 template: metadata: labels: release: subql-node-1 spec: volumes: - name: project-dir emptyDir: medium: Memory initContainers: - name: prepare imagePullPolicy: IfNotPresent image: node:lts-alpine command: - sh - -c - apk add git && git clone https://github.com/OnFinality-io/subql-examples /subquery && cd /subquery/block-timestamp && npm i -g @subql/cli && yarn && subql codegen && yarn build volumeMounts: - name: project-dir mountPath: "/subquery" containers: - name: indexer imagePullPolicy: IfNotPresent image: onfinality/subql-node:v0.4.0 args: - -f - /subquery/block-timestamp - --local env: - name: DB_HOST value: subquery-db-svc - name: DB_PORT value: "5432" - name: DB_USER value: postgres - name: DB_PASS value: postgres - name: DB_DATABASE value: postgres volumeMounts: - name: project-dir mountPath: "/subquery" securityContext: runAsUser: 1000 securityContext: fsGroup: 1000 imagePullSecrets: - name: regcred --- #apiVersion: networking.k8s.io/v1 #kind: NetworkPolicy #metadata: # name: subquery-node-egress #spec: # podSelector: # matchLabels: # release: subql-node-1 # egress: # - to: # - ipBlock: # cidr: 10.0.0.0/8 # policyTypes: # - Egress --- apiVersion: apps/v1 kind: StatefulSet metadata: name: subquery-db labels: app: postgres release: subquery-db spec: serviceName: subquery-db-svc selector: matchLabels: release: subquery-db volumeClaimTemplates: - metadata: name: subquery-db-pvc annotations: volume.beta.kubernetes.io/storage-class: standard spec: accessModes: - ReadWriteOnce resources: requests: storage: 20G template: metadata: labels: release: subquery-db spec: containers: - name: db imagePullPolicy: IfNotPresent image: postgres:12-alpine env: - name: POSTGRES_PASSWORD value: postgres ports: - containerPort: 5432 volumeMounts: - mountPath: /var/lib/postgresql name: subquery-db-pvc securityContext: fsGroup: 1000 imagePullSecrets: - name: regcred --- apiVersion: v1 kind: Service metadata: name: subquery-db-svc spec: clusterIP: None ports: - port: 5432 selector: release: subquery-db --- apiVersion: apps/v1 kind: Deployment metadata: name: hasura-deploy labels: release: hasura spec: selector: matchLabels: release: hasura replicas: 1 template: metadata: labels: release: hasura spec: containers: - name: hasura image: hasura/graphql-engine:v1.3.3 imagePullPolicy: IfNotPresent ports: - containerPort: 8080 env: # HASURA_GRAPHQL_DATABASE_URL: postgres://postgres:postgres@postgres:5432/postgres # ## enable the console served by server # HASURA_GRAPHQL_ENABLE_CONSOLE: "true" # set to "false" to disable console # ## enable debugging mode. It is recommended to disable this in production # HASURA_GRAPHQL_DEV_MODE: "true" # HASURA_GRAPHQL_ENABLED_LOG_TYPES: startup, http-log, webhook-log, websocket-log, query-log - name: HASURA_GRAPHQL_DATABASE_URL value: postgres://postgres:postgres@subquery-db-svc:5432/postgres - name: HASURA_GRAPHQL_ENABLE_CONSOLE value: "true" terminationGracePeriodSeconds: 300 ================================================ FILE: eslint.config.js ================================================ const {defineConfig, globalIgnores} = require('eslint/config'); const globals = require('globals'); const tsParser = require('@typescript-eslint/parser'); const typescriptEslint = require('@typescript-eslint/eslint-plugin'); const headers = require('eslint-plugin-headers'); const importX = require('eslint-plugin-import-x'); const sortDestructureKeys = require('eslint-plugin-sort-destructure-keys'); const jest = require('eslint-plugin-jest'); const eslintConfigPrettier = require('eslint-config-prettier'); const js = require('@eslint/js'); module.exports = defineConfig([ js.configs.recommended, { files: ['**/*.ts'], languageOptions: { globals: { ...globals.node, }, parser: tsParser, parserOptions: { tsconfigRootDir: __dirname, project: true, warnOnUnsupportedTypeScriptVersion: false, }, }, plugins: { headers, import: importX, 'sort-destructure-keys': sortDestructureKeys, '@typescript-eslint': typescriptEslint, }, rules: { ...typescriptEslint.configs['recommended'].rules, ...typescriptEslint.configs['recommended-type-checked'].rules, 'require-await': 'off', '@typescript-eslint/require-await': 'error', '@typescript-eslint/explicit-function-return-type': 'off', '@typescript-eslint/no-unsafe-argument': 'off', '@typescript-eslint/no-unsafe-assignment': 'off', '@typescript-eslint/no-unsafe-call': 'off', '@typescript-eslint/no-unsafe-member-access': 'off', '@typescript-eslint/no-unsafe-return': 'off', '@typescript-eslint/no-unsafe-enum': 'off', '@typescript-eslint/no-unnecessary-type-assertion': 'off', '@typescript-eslint/restrict-plus-operands': 'off', '@typescript-eslint/restrict-template-expressions': 'off', '@typescript-eslint/no-unsafe-enum-comparison': 'off', '@typescript-eslint/no-base-to-string': 'off', '@typescript-eslint/unbound-method': 'warn', '@typescript-eslint/no-floating-promises': 'warn', '@typescript-eslint/explicit-module-boundary-types': 'warn', '@typescript-eslint/no-explicit-any': 'warn', '@typescript-eslint/no-require-imports': 'warn', '@typescript-eslint/no-unused-vars': 'warn', '@typescript-eslint/ban-ts-comment': 'warn', '@typescript-eslint/no-inferrable-types': 'warn', '@typescript-eslint/await-thenable': 'error', '@typescript-eslint/dot-notation': 'error', '@typescript-eslint/no-non-null-assertion': 'error', '@typescript-eslint/explicit-member-accessibility': [ 'error', { accessibility: 'no-public', }, ], '@typescript-eslint/no-namespace': [ 'error', { allowDeclarations: true, }, ], '@typescript-eslint/promise-function-async': [ 'error', { checkArrowFunctions: false, }, ], complexity: ['error', 20], curly: ['error', 'multi-line'], 'default-case': 'error', eqeqeq: ['error', 'always'], 'import/no-extraneous-dependencies': 'off', 'import/order': [ 'error', { alphabetize: { order: 'asc', caseInsensitive: true, }, }, ], 'headers/header-format': [ 'error', { source: 'string', style: 'line', variables: { year: '2020-2025', }, patterns: { year: { pattern: '\\d{4}(-\\d{4})?', defaultValue: '2020-2025', }, }, content: 'Copyright {year} SubQuery Pte Ltd authors & contributors\nSPDX-License-Identifier: GPL-3.0', }, ], 'sort-destructure-keys/sort-destructure-keys': [ 2, { caseSensitive: true, }, ], 'no-undef': 'off', //https://typescript-eslint.io/troubleshooting/faqs/eslint/#i-get-errors-from-the-no-undef-rule-about-global-variables-not-being-defined-even-though-there-are-no-typescript-errors 'no-console': 'off', 'no-duplicate-imports': 'error', 'no-return-await': 'error', 'no-undef-init': 'error', 'prefer-template': 'error', 'use-isnan': 'error', ...eslintConfigPrettier.rules, }, settings: { 'import/extensions': ['.js', '.ts'], 'import/parsers': { '@typescript-eslint/parser': ['.ts', '.tsx'], }, }, }, { files: ['**/*.test.ts', '**/*.spec.ts'], plugins: { jest, }, languageOptions: { globals: { ...globals.jest, }, }, rules: { ...jest.configs['flat/recommended'].rules, '@typescript-eslint/no-non-null-assertion': 'off', }, }, globalIgnores([ 'build/**/*', 'api_docs/**/*', '**/node_modules/**/*', '**/test/**/*', 'scripts/*', 'packages/**/dist/**/*', 'packages/**/lib/**/*', '**/.eslintrc.js', '**/*.proto', '**/*.ts.snap', '**/sourcemap-test-*.js', '**/*.js', 'packages/cli/graphql-codegen.ts', 'packages/cli/src/controller/network/__graphql__/**/*', ]), ]); ================================================ FILE: jest.config.js ================================================ /* * For a detailed explanation regarding each configuration property and type check, visit: * https://jestjs.io/docs/en/configuration.html */ module.exports = { // All imported modules in your tests should be mocked automatically // automock: false, // Stop running tests after `n` failures // bail: 0, // The directory where Jest should store its cached dependency information // cacheDirectory: "/private/var/folders/dt/ybhyl31d30z512ht95p7n_bw0000gn/T/jest_dx", // Automatically clear mock calls and instances between every test // clearMocks: false, // Indicates whether the coverage information should be collected while executing the test // collectCoverage: false, // An array of glob patterns indicating a set of files for which coverage information should be collected collectCoverageFrom: [ 'packages/cli/src/**/*.ts', 'packages/common/src/**/*.ts', 'packages/common-substrate/src/**/*.ts', 'packages/node-core/src/**/*.ts', 'packages/types-core/src/**/*.ts', 'packages/node/src/**/*.ts', 'packages/utils/src/**/*.ts', ], // The directory where Jest should output its coverage files coverageDirectory: 'coverage', // An array of regexp pattern strings used to skip coverage collection // coveragePathIgnorePatterns: [ // "/node_modules/" // ], // Indicates which provider should be used to instrument code for coverage coverageProvider: 'v8', // A list of reporter names that Jest uses when writing coverage reports // coverageReporters: [ // "json", // "text", // "lcov", // "clover" // ], // An object that configures minimum threshold enforcement for coverage results // coverageThreshold: undefined, // A path to a custom dependency extractor // dependencyExtractor: undefined, // Make calling deprecated APIs throw helpful error messages // errorOnDeprecated: false, // Force coverage collection from ignored files using an array of glob patterns // forceCoverageMatch: [], // A path to a module which exports an async function that is triggered once before all test suites // globalSetup: undefined // A path to a module which exports an async function that is triggered once after all test suites // globalTeardown: undefined, // A set of global variables that need to be available in all test environments // globals: {}, // The maximum amount of workers used to run your tests. Can be specified as % or a number. E.g. maxWorkers: 10% will use 10% of your CPU amount + 1 as the maximum worker number. maxWorkers: 2 will use a maximum of 2 workers. // maxWorkers: "50%", // An array of directory names to be searched recursively up from the requiring module's location // moduleDirectories: [ // "node_modules" // ], // An array of file extensions your modules use moduleFileExtensions: ['js', 'json', 'ts'], // A map from regular expressions to module names or to arrays of module names that allow to stub out resources with a single module // moduleNameMapper: {}, moduleNameMapper: { '^@subql/common-substrate$': '/packages/common-substrate/src/', '^@subql/common-substrate/(.*)$': '/packages/common-substrate/src/$1', '^@subql/common$': '/packages/common/src/', '^@subql/common/(.*)$': '/packages/common/src/$1', '^@subql/node-core$': '/packages/node-core/src/', '^@subql/node-core/(.*)$': '/packages/node-core/src/$1', '^@subql/types-core$': '/packages/types-core/src/', '^@subql/types-core/(.*)$': '/packages/types-core/src/$1', '^@subql/utils$': '/packages/utils/src/', '^@subql/utils/(.*)$': '/packages/utils/src/$1', }, // An array of regexp pattern strings, matched against all module paths before considered 'visible' to the module loader // modulePathIgnorePatterns: [], // Activates notifications for test results // notify: false, // An enum that specifies notification mode. Requires { notify: true } // notifyMode: "failure-change", // A preset that is used as a base for Jest's configuration // preset: undefined, // Run tests from one or more projects // projects: undefined, // Use this configuration option to add custom reporters to Jest // reporters: undefined, // Automatically reset mock state between every test // resetMocks: false, // Reset the module registry before running each individual test // resetModules: false, // A path to a custom resolver // resolver: undefined, // Automatically restore mock state between every test // restoreMocks: false, // The root directory that Jest should scan for tests and modules within // rootDir: undefined, // A list of paths to directories that Jest should use to search for files in // roots: [ // "" // ], // "rootDir": [], // Allows you to use a custom runner instead of Jest's default test runner // runner: "jest-runner", // The paths to modules that run some code to configure or set up the testing environment before each test // setupFiles: [], setupFiles: ['/test/jest-setup.ts'], // A list of paths to modules that run some code to configure or set up the testing framework before each test // setupFilesAfterEnv: [], // The number of seconds after which a test is considered as slow and reported as such in the results. // slowTestThreshold: 5, // A list of paths to snapshot serializer modules Jest should use for snapshot testing // snapshotSerializers: [], // The test environment that will be used for testing testEnvironment: 'node', // Options that will be passed to the testEnvironment // testEnvironmentOptions: {}, // Adds a location field to test results // testLocationInResults: false, // The glob patterns Jest uses to detect test files // testMatch: [ // "**/__tests__/**/*.[jt]s?(x)", // "**/?(*.)+(spec|test).[tj]s?(x)" // ], // An array of regexp pattern strings that are matched against all test paths, matched tests are skipped testPathIgnorePatterns: [ '.*\\.fixtures\\.ts$', 'packages/cli/test/build/src/test/mappingHandler.test.ts', '/node_modules/', ], // The regexp pattern or array of patterns that Jest uses to detect test files testRegex: '.*\\.(spec)\\.ts$', // This option allows the use of a custom results processor // testResultsProcessor: undefined, // This option allows use of a custom test runner // testRunner: "jasmine2", // This option sets the URL for the jsdom environment. It is reflected in properties such as location.href // testURL: "http://localhost", // Setting this value to "fake" allows the use of fake timers for functions such as "setTimeout" // timers: "real", // A map from regular expressions to paths to transformers transform: { '^.+\\.(ts|tsx)?$': [ 'ts-jest', { tsconfig: 'tsconfig.test.json', }, ], }, // An array of regexp pattern strings that are matched against all source file paths, matched files will skip transformation // transformIgnorePatterns: [ // "/node_modules/", // "\\.pnp\\.[^\\/]+$" // ], transformIgnorePatterns: ['node_modules/(?!(@polkadot)/)'], // An array of regexp pattern strings that are matched against all modules before the module loader will automatically return a mock for them // unmockedModulePathPatterns: undefined, // Indicates whether each individual test should be reported during the run // verbose: undefined, // An array of regexp patterns that are matched against all source file paths before re-running tests in watch mode // watchPathIgnorePatterns: [], // Whether to use watchman for file crawling // watchman: true, }; ================================================ FILE: package.json ================================================ { "name": "subql-mono", "private": true, "workspaces": [ "packages/*" ], "devDependencies": { "@actions/core": "^1.10.1", "@eslint/compat": "^1.2.4", "@eslint/eslintrc": "^3.3.1", "@eslint/js": "^9.39.0", "@geut/chan": "^3.2.9", "@octokit/request": "^8.4.1", "@types/node": "^22.12.0", "@typescript-eslint/eslint-plugin": "^8.45.0", "@typescript-eslint/parser": "^8.45.0", "eslint": "^9.36.0", "eslint-config-prettier": "^10.1.8", "eslint-plugin-headers": "^1.1.2", "eslint-plugin-import-x": "^4.16.1", "eslint-plugin-jest": "^29.0.1", "eslint-plugin-prettier": "^5.5.1", "eslint-plugin-sort-destructure-keys": "^2.0.0", "globals": "^15.15.0", "husky": "^7.0.4", "jest": "^29.5.0", "lint-staged": "^16.2.6", "prettier": "^3.3.3", "pretty-quick": "^4.2.2", "ts-jest": "^29.2.4", "ts-loader": "^9.5.1", "ts-node": "^10.9.2", "tsconfig-paths": "^4.2.0", "typescript": "^5.7.3" }, "resolutions": { "@polkadot/api": "^16.4.7", "@polkadot/util": "^13.5.6" }, "scripts": { "build": "yarn workspaces foreach -tA run build", "lint": "eslint packages --ext .ts", "test": "TZ=utc jest --coverage", "test:ci": "TZ=utc jest --testRegex='.*\\.(spec|test)\\.ts$'", "test:all": "TZ=utc node --expose-gc ./node_modules/.bin/jest --logHeapUsage --forceExit --ci -w=2 --clearMocks packages/cli/src/controller/publish-controller.spec.ts", "test:docker": "docker compose -f test/docker-compose.yaml up --remove-orphans --abort-on-container-exit --build test", "postinstall": "husky install" }, "lint-staged": { "*.ts": [ "eslint --cache --fix", "prettier --write" ], "packages/**/*.!(*ejs|ts)": [ "prettier --write" ] }, "packageManager": "yarn@4.10.3" } ================================================ FILE: packages/cli/CHANGELOG.md ================================================ # Changelog All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). ## [Unreleased] ## [6.6.3] - 2026-03-20 ### Fixed - Issue initializing .env file endpoints array (#2997) ## [6.6.2] - 2025-12-16 ### Fixed - Ethers import error (#2984) ### Changed - Update MCP SDK and lock down version (#2984) ## [6.6.1] - 2025-11-20 ### Changed - Update glob dependency (#2970) ## [6.6.0] - 2025-11-17 ### Added - Dynamic networks mapping for subgraph migration (#2964) ### Fixed - Subgraph migration transaction handler filter (#2964) ## [6.5.1] - 2025-10-22 ### Changed - Fix some typos (#2938) - Update swagger-typescript-api (#2939) ## [6.5.0] - 2025-10-15 ### Changed - Swap `websocket` for `ws` dependency to fix CVEs (#2931) - Minor improvements and fixes from upgrading to eslint 9 with stricter settings (#2929) ### Removed - Unused `ora` dependency (#2934) ## [6.4.1] - 2025-09-26 ### Added - Build manifest command (#2923) ### Changed - Rerelease of previous version ## [6.4.0] - 2025-09-25 ### Added - Build manifest command (#2923) ## [6.3.0] - 2025-09-16 ### Added - Support for consumer operations on the network via CLI and MCP (#2876) - Support for .env in mapping handlers (#2901) ## [6.2.2] - 2025-08-29 ### Changed - Fixed typos (#2895) ## [6.2.1] - 2025-08-26 ### Fixed - Missing jsonc-parser dependency ## [6.2.0] - 2025-08-25 ### Changed - Revert building using esbuild and switch back to webpack (#2891) ## [6.1.3] - 2025-08-01 ### Fixed - Issues building ts manifest when running cli from npx (#2877) ## [6.1.2] - 2025-07-31 ### Fixed - Build command failing on Windows (#2874) ## [6.1.1] - 2025-07-29 ### Fixed - Fix build command for multi-chain projects (#2869) ## [6.1.0] - 2025-07-24 ### Changed - Introduce pollyfill files for building (#2865) ## [6.0.2] - 2025-07-17 ### Fixed - MCP server version #2853 ### Changed - Workspace dependencies now match to patch versions rather than exact (#2855) ## [6.0.1] - 2025-07-14 ### Fixed - MCP command not running (#2848) ## [6.0.0] - 2025-07-14 ### Added - `mcp` subcommand to provide an MCP server for using subquery projects (#2844) ### Changed - BEAKING: update all subcommands for consistency (#2844) - Consistent location arguments instead of various flag names when specifying a project or project manifest - Renamed commands relating to OnFinality to their own topic ### Fixed - Issues not finding the chain specific common package when using global cli (#2844) ## [5.14.1] - 2025-07-14 ### Fixed - Build command not checking ts types (#2842) ## [5.14.0] - 2025-07-01 ### Removed - Test files and artifacts from published package (#2838) ## [5.13.0] - 2025-06-25 ### Removed - fs-extra dependency in favour of fs (#2824) ### Changed - Switch build command from webpack to esbuild and support projects using pnpm (#2825) ## [5.12.0] - 2025-06-12 ### Changed - Update `oclif` dependency (#2817) - Update command descriptions (#2817) - Alias `codegen:generate` to `import-abi` (#2817) ### Added - The `codegen:generate` command can now attempt to pull ABIs from etherscan (#2817) ## [5.11.0] - 2025-06-05 ### Changed - Init command to have more arguments and avoid interaction (#2809) ## [5.10.0] - 2025-05-20 ### Added - Support for Solana Codegen (#2787) - Support for jsonc tsconfigs in projects (#2796) ## [5.9.1] - 2025-05-08 ### Changed - Updated readme (#2781) ## [5.9.0] - 2025-04-30 ### Removed - Unused node-fetch dependency (#2772) - Problematic boxen dependency (#2774) ### Changed - Remove requirement for SUBQL_ACCESS_TOKEN with publish command (#2773) ## [5.8.1] - 2025-04-24 ### Changed - Update @subql/utils ## [5.8.0] - 2025-04-17 ### Added - Support for Solana (#2745) ## [5.7.1] - 2025-03-20 ### Fixed - Testing not updating test results correctly if fetching block fails (#2716) ## [5.7.0] - 2025-02-25 ### Changed - Bump `typescript` version ## [5.6.0] - 2025-02-19 ### Changed - Update polkadot api to 15 (#2680) ## [5.5.2] - 2025-02-13 ### Fixed - Project names containing uppercase letters cannot be deployed. ## [5.5.1] - 2025-02-04 ### Changed - Update copyright header to 2025 ### Fixed - Various typos - Codegen producing invalid typescript with dbType directive (#2662) ## [5.5.0] - 2025-01-28 ### Added - Add some constants for Starknet ### Changed - Added internal note relating to some tests ### Fixed - Codegen: getByFields being invalid code (#2649) ## [5.4.0] - 2024-12-11 ### Changed - Updated codegen to support id types other than string (#2622) ### Fixed - Missing chalk dependency (#2622) ## [5.3.3] - 2024-12-04 ### Changed - No actual changes, just a re-release ## [5.3.2] - 2024-11-25 ### Changed - Update polkadot/api library to 14 version ## [5.3.1] - 2024-11-22 ### Fixed - Multi-chain project initialization error ## [5.3.0] - 2024-10-21 ### Changed - Improve codegen error messages (#2567) - Update codegen to match changes to store interface making options.limit required on getByField(s) methods (#2567) ## [5.2.8] - 2024-09-25 ### Changed - Bump common, Added manifest support for query-subgraph. ## [5.2.7] - 2024-09-16 ### Fixed - deployment command minor issues (#2542) ### Removed - deprecated cli-ux dependency, switched to using inquirer and ora (#2542) ## [5.2.6] - 2024-09-09 ### Changed - Bump webpack from 5.93.0 to 5.94.0 ## [5.2.4] - 2024-08-23 ### Fixed - Fix migrate schema missing conversion for `Bytes` and `BigDecimal` type (#2538) ## [5.2.3] - 2024-08-14 ### Fixed - Supports subgraph migration `kind: ethereum`. ## [5.2.2] - 2024-08-14 ### Added - fix case sensitive import for schema entities in codegen (#2211) ### Fixed - Glob sync issue (#2534) ## [5.2.1] - 2024-08-12 ### Changed - Default deployment type to SubQuery when deploying to the managed service (#2523). ## [5.2.0] - 2024-08-05 ### Changed - Update inquirer dependencies (#2501) - Improve endpoint type to be based on core type (#2511) - Update dependencies (#2518) ### Fixed - Not being able to select a custom repo when initializing a project (#2501) ### Added - Subgraph graphql schema migration to the migrate command (#2499) ## [5.1.1] - 2024-07-25 ### Changed - Bump versions with `@subql/common` and `@subql/utils` (#2498) ## [5.1.0] - 2024-07-11 ### Changed - Use `IPFSHTTPClientLite` replace `IPFSHTTPClient` (#2480) ## [5.0.1] - 2024-07-09 ### Changed - Changes to ts build settings (#2475) ## [5.0.0] - 2024-07-04 ### Added - Enable ts strict mode ### Fixed - The IPFS CID for multi-chain requires the directory CID. ### Changed - Breaking Change: Removed common network packages from dependencies, only import required module from local/global when using. (#2456) ## [4.15.0] - 2024-06-21 ### Changed - Update `@subql/utils`, `@subql/common` and other dependencies ## [4.14.0] - 2024-06-18 ### Removed - Deprecated flare SDK (#2428) ## [4.13.1] - 2024-06-12 ### Changed - Update `@subql/utils` ## [4.13.0] - 2024-06-12 ### Changed - Improve logging and error handling for multichain deploy (#2434) ### Fixed - Add missing networks for migration - Fixed init command path issue - Update common-ethereum to fix issue with ABI validation (#2435) ## [4.12.0] - 2024-06-05 ### Changed - Bump with common dependencies ## [4.11.0] - 2024-05-30 ### Added - `--queryLimit` flag to deploy command for query service (#2419) ## [4.10.1] - 2024-05-27 ### Fixed - Enums being exported twice with codegen ## [4.10.0] - 2024-05-22 ### Changed - Remove unused imports (#2408) ## [4.9.0] - 2024-05-20 ### Changed - Bump common dependencies to latest version ## [4.8.0] - 2024-05-08 ### Changed - Bump with @subql/util, update polkadot dependencies to v11 ## [4.7.0] - 2024-05-02 ### Added - Migrate a subgraph project to subquery project - enbale migrate its `subgraph.yaml` to `project.ts` ## [4.6.0] - 2024-04-24 ### Added - support env & env commands (#2345) ## [4.5.2] - 2024-04-12 ### Fixed - Deployments failing with `this.jsonEnabled is not a function` (#2351) ## [4.5.1] - 2024-04-11 ### Fixed - Upgrade common dependencies in cli in order to fix build missing `GetOptions` issue ## [4.5.0] - 2024-03-28 ### Added - Support multi-chain deployments (#2290) ### Fixed - Auth token being undefined when loading from file (#2309) ### Changed - Update codegen to use options type and add comment to generated code (#2325) ## [4.4.1] - 2024-03-08 ### Fixed - Access token paths on Windows for commands other than publish (#2291) ## [4.4.0] - 2024-03-05 ### Changed - Update deployment command to align with ManagedService API changes (#2282) ## [4.3.0] - 2024-02-29 ### Fixed - Publish command output flag not working (#2270) ### Changed - Update deployment flags to match managed service (#2274) ## [4.2.7] - 2024-02-23 ### Changed - Bump axios from 0.27.0 to 0.28.0 (#2262) ## [4.2.6] - 2024-02-02 ### Fixed - Bump `common-cosmos` Codegen failing on Windows by using forked version of `telescope` (#2239) - Bump `common-ethereum` with Codegen typechain fix (#2239) ## [4.2.5] - 2023-12-22 ### Fixed - codegen for some ethereum projects with assets ## [4.2.4] - 2023-12-14 ### Changed - Breaking: Update cosmos codegen to fix generating invalid typescript, this could require minor changes to your imports and usage of message types - Update all sdk common dependencies ## [4.2.3] - 2023-11-30 ### Removed - removed deprecated endpoint query on endpoint suggestion (#2190) ## [4.2.2] - 2023-11-24 ### Changed - Update deployment command with v3 api (#2177) ## [4.2.1] - 2023-11-13 ### Changed - Update `@subql/utils` ## [4.2.0] - 2023-10-31 ### Added - Support building and publishing Concordium projects (#2078) - ts-manifest compatibility with `codegen:generate` command (#2111) ## [4.1.0] - 2023-10-25 ### Changed - Removed `validate` command from cli, also removed from `@subql/validator` from dependencies (#2121) ### Added - Multichain support for TypeScript manifest (#2097) - Support for multi endpoints CLI deployment (#2117) ### Fixed - Building TS manifest on Windows (#2118) ## [4.0.5] - 2023-10-18 ### Changed - Update error handling on deployment commands (#2108) ## [4.0.4] - 2023-10-17 ### Fixed - handle error on generate command (#2095) ## [4.0.3] - 2023-10-11 ### Fixed - Fixed yaml readers/writers on `init` command (#2082) ## [4.0.2] - 2023-10-11 ### Fixed - Codegen expecting a ts manifest but not a yaml manifest (#2084) ## [4.0.1] - 2023-10-10 ### Fixed - Fix `codegen` logic for Cosmos Manifests (#2073) - Error when generating manifest from ts (#2075) ## [4.0.0] - 2023-10-04 ### Fixed - Fix incorrect codegen on unstructured storage proxy contract abis (#1976) - Publish multichain projects file to a directory in ipfs (#1981) ### Added - Support for cosmwasm contract abi codegen (#1989) - Update `subql init` to use proxy templates (#1991) - Support build and publish project from typescript manifest. (#2011) ### Changed - Update common packages version from `latest`, to ensure they will be bumped (#1992) - Update model codegen to include `getByFields` and produce prettier code (#1993) - migrate from `oclif` v1 to v2 - Move abi-codegen from `cli` to `common-ethereum` (#2010) - Update common dependencies from each SDK with latest changes ### Removed - replaced `oclif-dev` dependency with `oclif` due to v2 migration (#1998) - globby from dev dependencies (#1998) ## [3.6.1] - 2023-08-29 ### Fixed - Publish command creating invalid deployment (#1977) ## [3.6.0] - 2023-08-25 ### Added - `codegen` support for Cosmos (Protobufs to ts) (#1958) ### Fixed - Publish command uploading files to IPFS multiple times (#1967) ## [3.5.1] - 2023-08-16 ### Fixed - Ensure absolute pathing for all path related flags (#1947) ## [3.5.0] - 2023-08-11 ### Added - abi `codegen` support for `cosmos/Ethermint` (#1936) ### Fixed - Ensure non evm custom datasource do not generate abis (#1936) ## [3.4.0] - 2023-08-10 ### Added - Add new command `codegen:generate`, allowing users to generate a scaffold based on selected ABIs (#1896) - `subql init` supports scaffold creation via `codegen:generate` (#1896) - Support for update availability logs (#1930) ### Changed - change soroban packages to stellar (#1929) ## [3.3.3] - 2023-08-04 ### Fixed - `subql codegen` with different pathing ABIs (#1916) - Fix codegen entity constructor missing array on field (#1922) ### Added - Support building and publishing soroban projects (#1919) ## [3.3.2] - 2023-07-31 ### Fixed - Update license in all packages (#1891) ## [3.3.1] - 2023-07-11 ### Fixed - `codegen` not working with artifact format files (#1867) ## [3.3.0] - 2023-06-26 ### Removed - Support for Terra and Avalanche SDKs. Note: Avalanche is still supported through the Ethereum SDK. (#1841) ## [3.2.0] - 2023-06-19 ### Added - Simply multichain running, allow codegen for multichain projects, support adding new chain manifest (#1746) ## [3.1.1] - 2023-06-07 ### Fixed - Ensure codegen supports generatedAbis dynamic and custom datasources. (#1780) - Codegen will remove unused generatedAbis from generated files (#1789) ## [3.1.0] - 2023-05-31 ### Changed - Handle composite indexes with codegen (#1759) ## [3.0.0] - 2023-05-19 ### Changed - Codegen will now generate code that is compatible with TS strict settings. This changes entity constructors to take all required parameters. The create method is still the preferred way of defining entities. (#1713) ## [2.1.0] - 2023-05-10 ### Removed - Support for older manifest versions (except for migrations) (#1659) ## [2.0.0] - 2023-04-20 ### Changed - Major release 2.0.0, align with other package versions ### Added - Build `*.test.ts` file to support testing Framework (#1584) ## [1.13.1] - 2023-03-30 ### Added - Change in migrate controller, add support for Multiple endpoints (#1551) ### Fixed - Fix previous release 1.13.0 failed ## [1.13.0] - 2023-03-29 ### Added - `Build` generate sourcemap for projects (#1569) ### Fixed - Fix codegen exit when ABI is not valid (#1570) - Add validation for `codegen`, graphql conflicts (#1564) ## [1.12.3] - 2023-03-09 ### Fixed - Fix ABI codegen skipped due to runtime validation (#1552) ## [1.12.2] - 2023-03-07 ### Fixed - Fix `subql publish` with Avalanche manifest (#1546) ## [1.12.1] - 2023-03-07 ### Changed - `@subql/common-avalanche` dependency update ## [1.12.0] - 2023-03-06 ### Added - Support ETH abi codegen (#1532) ## [1.11.0] - 2023-01-31 ### Fixed - Fix `subql publish` failing on windows (#1502) ### Added - Support for Near (#1498) ## [1.10.1] - 2022-12-22 ### Fixed - Fix command `codegen` to allow templates with other SDKs(#1470) ## [1.10.0] - 2022-12-19 ### Changed - Update deploy cli to fix `disableHistorical` option (#1460) ## [1.9.1] - 2022-12-05 ### Fixed - Fix for `subql` codegen `--file` flag. (#1446) ## [1.9.0] - 2022-11-23 ### Added - Add support to cli/validator for flare (#1416) ## [1.8.0] - 2022-10-27 ### Fixed - Fix CLI init project manifest missing comments issue (#1380) ## [1.7.0] - 2022-10-27 ### Added - `--dedicatedDB` option to project deployment. (#1355) - Flags for advanced settings. (#1352) ### Fixed - Specifying query and node versions with or without a `v`. (#1354) ## [1.6.4] - 2022-10-06 ### Changed - Update IPFS endpoints. (#1337) ## [1.6.3] - 2022-09-29 ### Fixed - Fix Output URL for `project:create-project` command. (#1324) - Improve `codegen` command error logs. (#1324) ## [1.6.2] - 2022-09-24 ### Fixed - Fixed cli publish failed due to upload file logic unable to validate section is `null`. (#1316) ## [1.6.1] - 2022-09-13 ### Fixed - Fixed `subql-init` for Algorand, Avalanche and Cosmos. ## [1.6.0] - 2022-08-17 ### Changed - Support new templates mono-repo structure. (#1236) ## [1.5.1] - 2022-08-11 ### Fixed - Bump version for missing update `subql-common` in previous release. ## [1.5.0] - 2022-08-04 ### Added - Support for Algorand projects (#1228) ### Fixed - Removing `.github` directory from starter templates (#1223) ## [1.4.0] - 2022-07-27 ### Added - Added redeploy deployment feature (#1205) - Rename `--project_name` flag to `--projectName` (#1205) ### Fixed - Use latest runner validation from common package. (#1195) ## [1.3.1] - 2022-07-13 ### Fixed - Added resolution to downgrade `node-fetch` as we have not support ES module (1184) - Added encodedURI for project deployment key (#1183) ## [1.3.0] - 2022-07-12 ### Fixed - CLI deployment when no dictionary or matching endpoint is provided (#1180) ### Added - Storing ipfs-cid locally (#1169) - New Flag `-d` added to `deployment:deploy` command allowing runner versions and endpoints to use default values from manifest (#1176) ### Changed - Rename `deploy` command back to `deployment` (#1176) ## [1.2.1] - 2022-07-06 ### Added - Add cosmos family to cli init (#1165) ## [1.2.0] - 2022-07-05 ### Fixed - update common-avalanche,fix missing filter, asset and options (#1158) ### Changed - Rename `deployment` command to `deploy`(#1149) ## [1.1.1] - 2022-06-29 ### Fixed - Fixed typo in publish log (#1135) ### Changed - Update init and publish tests with manifest 1.0.0 (#1114) ## [1.1.0] - 2022-06-22 ### Changed - Increase publish project body size up to 50mb (#1100) - Validate support multi networks, also support validate IPFS deployment. To validate project manifest spec version below 1.0.0, will require to provide `network-family` (#1115) ### Added - Added avalanche and cosmos to publish (#1105) - Now cli able to manage deployment on host service, promote, deploy and delete (#1102) ## [1.0.1] - 2022-05-31 ### Fixed - Fix cli init duplicate chainId and genesisHash (#1058) ## [1.0.0] - 2022-05-11 ### Fixed - fix undefined file under chainTypes (#1010) ## [0.29.0] - 2022-05-11 ### Changed - remove use manifest in codegen (#1001) ## [0.28.0] - 2022-05-06 ### Fixed - Fix migrate missing chain types (#975) ### Changed - Refactor init command and add network family (#979) ## [0.27.0] - 2022-05-02 ### Added - Add utils package (#928) ## [0.26.1] - 2022-04-27 ### Added - Support for Terra dynamic datasources (#899) ### Changed - Output build errors (#901) ## [0.26.0] - 2022-04-26 ### Added - Add manifest specVersion 1.0.0 template to `subql init` command (#888) ### Changed - Drop support for manifest 0.0.1 templates (#900) ## [0.25.0] - 2022-04-12 ### Changed - Update @subql/common-terra to allow specifying a mantlemint endpoint (#885) ## [0.24.0] - 2022-04-06 ### Added - Add support for manifest 1.0.0, migrate will now upgrade project to 1.0.0 (#845) ## [0.23.0] - 2022-03-22 ### Added - Use `TerraProjectManifestVersioned` to support terra contract handling (#848) ## [0.22.0] - 2022-03-01 ### Added - Support terra in command line, add terra template (#781) ## [0.21.0] - 2022-02-24 ### Added - Support cli publish from a manifest file (#800) ## [0.20.1] - 2022-02-15 ### Fixed - Patch release with @subql/validator version bump, in order to fix validation issue. ## [0.20.0] - 2022-02-09 ### Added - Add support for dynamic data sources (#773) - Add authentication for publish command, access token will read from `SUBQL_ACCESS_TOKEN` in environment or under `$HOME/.subql/SUBQL_ACCESS_TOKEN` (#778) ### Fixed - Fix codegen importing jsonType interface multiple times (#784) - Fix cli build command issues (#789) ## [0.19.0] - 2022-01-21 ### Added - Allow use `subql build` self contained js as instructed by `exports` fields under`package.json` (#753) ### Changed - Remove .github directory from new projects (#763) ## [0.18.0] - 2022-01-18 ### Added - Filter project templates by selected specVersion (#751) ## [0.17.0] - 2022-01-13 ### Added - Warning and advice for use manifest specVersion v0.0.1 (#730) - Message for install git suggestion (#733) - Allow user to select templates when run `subql init` (#712) ## [0.16.2] - 2021-12-16 ### Changed - Update subql/validator dependencies (#720) ## [0.16.1] - 2021-11-30 ### Fixed - Remove auto generated enum types and interfaces (#680) ## [0.16.0] - 2021-11-19 ### Fixed - Fix migrate datasource entry path (#641) - Touch up command line description (#628) ### Changed - Codegen controller using new type mappings (#532) - Update publish command to handle custom datasource (#641) - init command now create spec v0.2.0 project by default (#643) ### Added - Support enums in codegen (#551) ## [0.15.0] - 2021-11-03 ### Changed - Improve ts typing for `static create()` function in model.ts template (#573) - Use jsonrpc client to fetch genesis hash , drop dependencies of polkadot-api (#595) - Update `subql validate` to validate custom ds (#596) - Bump dependencies (#584) ### Added - New command `Subql migrate` allow convert project manifest v0.0.1 to v0.2.0 (#587) ## [0.14.0] - 2021-10-26 ### Added - Added publish CLI command which uploads a project to IPFS if it is using project manifest v0.2.0 (#486) ### Changed - Update Polkadot/api to 6.5.2 (#564) ## [0.13.0] - 2021-10-12 ### Added - Cli now support for manifest spec version `0.2.0` (#495) - Expand on cli `init` capabilities, default to not installing dependencies (#485) ## [0.12.0] - 2021-09-16 ### Added - Adds command `subql build` which webpacks the project code into a single file (#475) ## [0.11.2] - 2021-09-01 ### Fixed - Fix codegen template for jsonField optional field (#459) ## [0.11.1] - 2021-08-27 ### Fixed - Deprecated warnings (#448) ## [0.11.0] - 2021-08-20 ### Added - Support Bytea type in Cli (#432) ## [0.10.0] - 2021-06-25 ### Changed - Update dependencies (#358) ## [0.9.3] - 2021-05-04 ### Added - Codegen will support indexed jsonb fields. No get methods will be created for such fields in the entity class. (#291) ## [0.9.2] - 2021-04-21 ### Added - Codegen allow query by foreign key field (#285) ## [0.9.0] - 2021-04-19 ### Added - annotation is now supported in - Can be added on any field of any entity except primary or foreign keys - `@subql/node` will recognise it and create table with additional indexes to speed querying - Allow query by indexed field via `global.store` (#271) - annotation is now supported in - We'll automatically generate corresponding JSON interfaces when querying this data (#275) - Read more about how you can use this in our [updated docs](https://doc.subquery.network/create/graphql.html#json-type) ## [0.8.0] - 2021-03-11 ### Added - Update subquery repo path (#196) - codegen will create foreign key for relations: 1-1, and 1-N  (#212) - codegen support type Boolean (#216) - add subcommand validate (#219) ## [0.7.3] - 2021-02-15 ### Changed - bump dependencies (#148) ## [0.7.2] - 2021-02-03 ### Fixed - fix yaml formatting problem in the starter scaffold generated by subql init (#140) ## [0.7.1] - 2021-01-27 ### Fixed - add missing cli-ux dependency (#133) ## [0.7.0] - 2021-01-27 ### Added - add user interaction for subql init (#118) ## [0.6.0] - 2021-01-21 ### Fixed - read graphql schema from the location defined in project.yml (#105) ## [0.5.0] - 2021-01-15 ### Changed - subql init doesn't need --starter by default (#86) - model template use bigint instead of BigInt (#82) ## [0.2.0] - 2020-12-22 ### Changed - support subcommand codegen - support subcommand init [Unreleased]: https://github.com/subquery/subql/compare/cli/6.6.3...HEAD [6.6.3]: https://github.com/subquery/subql/compare/cli/6.6.2...cli/6.6.3 [6.6.2]: https://github.com/subquery/subql/compare/cli/6.6.1...cli/6.6.2 [6.6.1]: https://github.com/subquery/subql/compare/cli/6.6.0...cli/6.6.1 [6.6.0]: https://github.com/subquery/subql/compare/cli/6.5.1...cli/6.6.0 [6.5.1]: https://github.com/subquery/subql/compare/cli/6.5.0...cli/6.5.1 [6.5.0]: https://github.com/subquery/subql/compare/cli/6.4.1...cli/6.5.0 [6.4.1]: https://github.com/subquery/subql/compare/cli/6.4.0...cli/6.4.1 [6.4.0]: https://github.com/subquery/subql/compare/cli/6.3.0...cli/6.4.0 [6.3.0]: https://github.com/subquery/subql/compare/cli/6.2.2...cli/6.3.0 [6.2.2]: https://github.com/subquery/subql/compare/cli/6.2.1...cli/6.2.2 [6.2.1]: https://github.com/subquery/subql/compare/cli/6.2.0...cli/6.2.1 [6.2.0]: https://github.com/subquery/subql/compare/cli/6.1.3...cli/6.2.0 [6.1.3]: https://github.com/subquery/subql/compare/cli/6.1.2...cli/6.1.3 [6.1.2]: https://github.com/subquery/subql/compare/cli/6.1.1...cli/6.1.2 [6.1.1]: https://github.com/subquery/subql/compare/cli/6.1.0...cli/6.1.1 [6.1.0]: https://github.com/subquery/subql/compare/cli/6.0.2...cli/6.1.0 [6.0.2]: https://github.com/subquery/subql/compare/cli/6.0.1...cli/6.0.2 [6.0.1]: https://github.com/subquery/subql/compare/cli/6.0.0...cli/6.0.1 [6.0.0]: https://github.com/subquery/subql/compare/cli/5.14.1...cli/6.0.0 [5.14.1]: https://github.com/subquery/subql/compare/cli/5.14.0...cli/5.14.1 [5.14.0]: https://github.com/subquery/subql/compare/cli/5.13.0...cli/5.14.0 [5.13.0]: https://github.com/subquery/subql/compare/cli/5.12.0...cli/5.13.0 [5.12.0]: https://github.com/subquery/subql/compare/cli/5.11.0...cli/5.12.0 [5.11.0]: https://github.com/subquery/subql/compare/cli/5.10.0...cli/5.11.0 [5.10.0]: https://github.com/subquery/subql/compare/cli/5.9.1...cli/5.10.0 [5.9.1]: https://github.com/subquery/subql/compare/cli/5.9.0...cli/5.9.1 [5.9.0]: https://github.com/subquery/subql/compare/cli/5.8.1...cli/5.9.0 [5.8.1]: https://github.com/subquery/subql/compare/cli/5.8.0...cli/5.8.1 [5.8.0]: https://github.com/subquery/subql/compare/cli/5.7.1...cli/5.8.0 [5.7.1]: https://github.com/subquery/subql/compare/cli/5.7.0...cli/5.7.1 [5.7.0]: https://github.com/subquery/subql/compare/cli/5.6.0...cli/5.7.0 [5.6.0]: https://github.com/subquery/subql/compare/cli/5.5.2...cli/5.6.0 [5.5.2]: https://github.com/subquery/subql/compare/cli/5.5.1...cli/5.5.2 [5.5.1]: https://github.com/subquery/subql/compare/cli/5.5.0...cli/5.5.1 [5.5.0]: https://github.com/subquery/subql/compare/cli/5.4.0...cli/5.5.0 [5.4.0]: https://github.com/subquery/subql/compare/cli/5.3.3...cli/5.4.0 [5.3.3]: https://github.com/subquery/subql/compare/cli/5.3.2...cli/5.3.3 [5.3.2]: https://github.com/subquery/subql/compare/cli/5.3.1...cli/5.3.2 [5.3.1]: https://github.com/subquery/subql/compare/cli/5.3.0...cli/5.3.1 [5.3.0]: https://github.com/subquery/subql/compare/cli/5.2.8...cli/5.3.0 [5.2.8]: https://github.com/subquery/subql/compare/cli/5.2.7...cli/5.2.8 [5.2.7]: https://github.com/subquery/subql/compare/cli/5.2.6...cli/5.2.7 [5.2.6]: https://github.com/subquery/subql/compare/cli/5.2.4...cli/5.2.6 [5.2.4]: https://github.com/subquery/subql/compare/cli/5.2.3...cli/5.2.4 [5.2.3]: https://github.com/subquery/subql/compare/cli/5.2.2...cli/5.2.3 [5.2.2]: https://github.com/subquery/subql/compare/cli/5.2.1...cli/5.2.2 [5.2.1]: https://github.com/subquery/subql/compare/cli/5.2.0...cli/5.2.1 [5.2.0]: https://github.com/subquery/subql/compare/cli/5.1.1...cli/5.2.0 [5.1.1]: https://github.com/subquery/subql/compare/cli/5.1.0...cli/5.1.1 [5.1.0]: https://github.com/subquery/subql/compare/cli/5.0.1...cli/5.1.0 [5.0.1]: https://github.com/subquery/subql/compare/cli/5.0.0...cli/5.0.1 [5.0.0]: https://github.com/subquery/subql/compare/cli/4.15.0...cli/5.0.0 [4.15.0]: https://github.com/subquery/subql/compare/cli/4.14.0...cli/4.15.0 [4.14.0]: https://github.com/subquery/subql/compare/cli/4.13.1...cli/4.14.0 [4.13.1]: https://github.com/subquery/subql/compare/cli/4.13.0...cli/4.13.1 [4.13.0]: https://github.com/subquery/subql/compare/cli/4.12.0...cli/4.13.0 [4.12.0]: https://github.com/subquery/subql/compare/cli/4.11.0...cli/4.12.0 [4.11.0]: https://github.com/subquery/subql/compare/cli/4.10.1...cli/4.11.0 [4.10.1]: https://github.com/subquery/subql/compare/cli/4.10.0...cli/4.10.1 [4.10.0]: https://github.com/subquery/subql/compare/cli/4.9.0...cli/4.10.0 [4.9.0]: https://github.com/subquery/subql/compare/cli/4.8.0...cli/4.9.0 [4.8.0]: https://github.com/subquery/subql/compare/cli/4.7.0...cli/4.8.0 [4.7.0]: https://github.com/subquery/subql/compare/cli/4.6.0...cli/4.7.0 [4.6.0]: https://github.com/subquery/subql/compare/cli/4.5.2...cli/4.6.0 [4.5.2]: https://github.com/subquery/subql/compare/cli/4.5.1...cli/4.5.2 [4.5.1]: https://github.com/subquery/subql/compare/cli/4.5.0...cli/4.5.1 [4.5.0]: https://github.com/subquery/subql/compare/cli/4.4.1...cli/4.5.0 [4.4.1]: https://github.com/subquery/subql/compare/cli/4.4.0...cli/4.4.1 [4.4.0]: https://github.com/subquery/subql/compare/cli/4.3.0...cli/4.4.0 [4.3.0]: https://github.com/subquery/subql/compare/cli/4.2.7...cli/4.3.0 [4.2.7]: https://github.com/subquery/subql/compare/cli/4.2.6...cli/4.2.7 [4.2.6]: https://github.com/subquery/subql/compare/cli/4.2.5...cli/4.2.6 [4.2.5]: https://github.com/subquery/subql/compare/cli/4.2.4...cli/4.2.5 [4.2.4]: https://github.com/subquery/subql/compare/cli/4.2.3...cli/4.2.4 [4.2.3]: https://github.com/subquery/subql/compare/cli/4.2.2...cli/4.2.3 [4.2.2]: https://github.com/subquery/subql/compare/cli/4.2.1...cli/4.2.2 [4.2.1]: https://github.com/subquery/subql/compare/cli/4.2.0...cli/4.2.1 [4.2.0]: https://github.com/subquery/subql/compare/cli/4.1.0...cli/4.2.0 [4.1.0]: https://github.com/subquery/subql/compare/cli/4.0.5...cli/4.1.0 [4.0.5]: https://github.com/subquery/subql/compare/cli/4.0.4...cli/4.0.5 [4.0.4]: https://github.com/subquery/subql/compare/cli/4.0.3...cli/4.0.4 [4.0.3]: https://github.com/subquery/subql/compare/cli/4.0.2...cli/4.0.3 [4.0.2]: https://github.com/subquery/subql/compare/cli/4.0.1...cli/4.0.2 [4.0.1]: https://github.com/subquery/subql/compare/cli/4.0.0...cli/4.0.1 [4.0.0]: https://github.com/subquery/subql/compare/cli/3.6.1...cli/4.0.0 [3.6.1]: https://github.com/subquery/subql/compare/cli/3.6.0...cli/3.6.1 [3.6.0]: https://github.com/subquery/subql/compare/cli/3.5.1...cli/3.6.0 [3.5.1]: https://github.com/subquery/subql/compare/cli/3.5.0...cli/3.5.1 [3.5.0]: https://github.com/subquery/subql/compare/cli/3.4.0...cli/3.5.0 [3.4.0]: https://github.com/subquery/subql/compare/cli/3.3.3...cli/3.4.0 [3.3.3]: https://github.com/subquery/subql/compare/cli/3.3.2...cli/3.3.3 [3.3.2]: https://github.com/subquery/subql/compare/cli/3.3.1...cli/3.3.2 [3.3.1]: https://github.com/subquery/subql/compare/cli/3.3.0...cli/3.3.1 [3.3.0]: https://github.com/subquery/subql/compare/cli/3.2.0...cli/3.3.0 [3.2.0]: https://github.com/subquery/subql/compare/cli/v3.1.1...cli/v3.2.0 [3.1.1]: https://github.com/subquery/subql/compare/cli/3.1.0...cli/3.1.1 [3.1.0]: https://github.com/subquery/subql/compare/cli/3.0.0...cli/3.1.0 [3.0.0]: https://github.com/subquery/subql/compare/cli/2.1.0...cli/3.0.0 [2.1.0]: https://github.com/subquery/subql/compare/cli/2.0.0.../cli/2.1.0 [2.0.0]: https://github.com/subquery/subql/compare/cli/.1.13.1../cli/2.0.0 [1.13.1]: https://github.com/subquery/subql/compare/cli/1.13.0.../cli/1.13.1 [1.13.0]: https://github.com/subquery/subql/compare/cli/1.12.3.../cli/1.13.0 [1.12.3]: https://github.com/subquery/subql/compare/cli/1.12.2.../cli/1.12.3 [1.12.2]: https://github.com/subquery/subql/compare/cli/1.12.1.../cli/1.12.2 [1.12.1]: https://github.com/subquery/subql/compare/cli/1.12.0.../cli/1.12.1 [1.12.0]: https://github.com/subquery/subql/compare/cli/1.11.0.../cli/1.12.0 [1.11.0]: https://github.com/subquery/subql/compare/cli/1.10.1.../cli/1.11.0 [1.10.1]: https://github.com/subquery/subql/compare/cli/1.10.0.../cli/1.10.1 [1.10.0]: https://github.com/subquery/subql/compare/cli1.9.1/.../cli/1.10.0 [1.9.1]: https://github.com/subquery/subql/compare/cli/1.9.0.../cli/1.9.1 [1.9.0]: https://github.com/subquery/subql/compare/cli/1.8.0.../cli/1.9.0 [1.8.0]: https://github.com/subquery/subql/compare/cli/1.7.0.../cli/1.8.0 [1.7.0]: https://github.com/subquery/subql/compare/cli/1.6.4.../cli/1.7.0 [1.6.4]: https://github.com/subquery/subql/compare/cli/1.6.3.../cli/1.6.4 [1.6.3]: https://github.com/subquery/subql/compare/cli/1.6.2.../cli/1.6.3 [1.6.2]: https://github.com/subquery/subql/compare/cli/1.6.1.../cli/1.6.2 [1.6.1]: https://github.com/subquery/subql/compare/cli/1.6.0.../cli/1.6.1 [1.6.0]: https://github.com/subquery/subql/compare/cli/1.5.1.../cli/1.6.0 [1.5.1]: https://github.com/subquery/subql/compare/cli/1.5.0.../cli/1.5.1 [1.5.0]: https://github.com/subquery/subql/compare/cli/1.4.0.../cli/1.5.0 [1.4.0]: https://github.com/subquery/subql/compare/cli/1.3.1.../cli/1.4.0 [1.3.1]: https://github.com/subquery/subql/compare/cli/1.3.0.../cli/1.3.1 [1.3.0]: https://github.com/subquery/subql/compare/cli/1.2.1.../cli/1.3.0 [1.2.1]: https://github.com/subquery/subql/compare/cli/1.2.0.../cli/1.2.1 [1.2.0]: https://github.com/subquery/subql/compare/cli/1.1.1.../cli/1.2.0 [1.1.1]: https://github.com/subquery/subql/compare/cli/1.1.0.../cli/1.1.1 [1.1.0]: https://github.com/subquery/subql/compare/cli/1.0.1.../cli/1.1.0 [1.0.1]: https://github.com/subquery/subql/compare/cli/1.0.0.../cli/1.0.1 [1.0.0]: https://github.com/subquery/subql/compare/cli/.0.29.0../cli/1.0.0 [0.29.0]: https://github.com/subquery/subql/compare/cli/0.28.0.../cli/0.29.0 [0.28.0]: https://github.com/subquery/subql/compare/cli/0.27.0.../cli/0.28.0 [0.27.0]: https://github.com/subquery/subql/compare/cli/0.26.1.../cli/0.27.0 [0.26.1]: https://github.com/subquery/subql/compare/cli/0.26.0.../cli/0.26.1 [0.26.0]: https://github.com/subquery/subql/compare/cli/0.25.0.../cli/0.26.0 [0.25.0]: https://github.com/subquery/subql/compare/cli/0.24.0.../cli/0.25.0 [0.24.0]: https://github.com/subquery/subql/compare/cli/0.23.0.../cli/0.24.0 [0.23.0]: https://github.com/subquery/subql/compare/cli/0.22.0.../cli/0.23.0 [0.22.0]: https://github.com/subquery/subql/compare/cli/0.21.0.../cli/0.22.0 [0.21.0]: https://github.com/subquery/subql/compare/cli/0.20.1.../cli/0.21.0 [0.20.1]: https://github.com/subquery/subql/compare/cli/0.20.0...cli/0.20.1 [0.20.0]: https://github.com/subquery/subql/compare/cli/0.19.0...cli/0.20.0 [0.19.0]: https://github.com/subquery/subql/compare/cli/0.18.0...cli/0.19.0 [0.18.0]: https://github.com/subquery/subql/compare/cli/0.17.0...cli/0.18.0 [0.17.0]: https://github.com/subquery/subql/compare/cli/0.16.2...cli/0.17.0 [0.16.2]: https://github.com/subquery/subql/compare/cli/0.16.1...cli/0.16.2 [0.16.1]: https://github.com/subquery/subql/compare/cli/0.16.0...cli/0.16.1 [0.16.0]: https://github.com/subquery/subql/compare/cli/0.15.0...cli/0.16.0 [0.15.0]: https://github.com/subquery/subql/compare/cli/0.14.0...cli/0.15.0 [0.14.0]: https://github.com/subquery/subql/compare/cli/0.13.0...cli/0.14.0 [0.13.0]: https://github.com/subquery/subql/compare/cli/0.12.0...cli/0.13.0 [0.12.0]: https://github.com/subquery/subql/compare/cli/0.11.2...cli/0.12.0 [0.11.2]: https://github.com/subquery/subql/compare/cli/0.11.1...cli/0.11.2 [0.11.1]: https://github.com/subquery/subql/compare/cli/0.11.0...cli/0.11.1 [0.11.0]: https://github.com/subquery/subql/compare/cli/0.10.0...cli/0.11.0 [0.10.0]: https://github.com/subquery/subql/compare/cli/0.9.3...cli/0.10.0 [0.9.3]: https://github.com/subquery/subql/compare/cli/0.9.2...cli/0.9.3 [0.9.2]: https://github.com/subquery/subql/compare/v0.9.0...v0.9.2 [0.9.0]: https://github.com/subquery/subql/compare/v0.8.0...v0.9.0 [0.8.0]: https://github.com/subquery/subql/compare/v0.7.3...v0.8.0 [0.7.3]: https://github.com/OnFinality-io/subql/compare/v0.7.2...v0.7.3 [0.7.2]: https://github.com/OnFinality-io/subql/compare/v0.7.1...v0.7.2 [0.7.1]: https://github.com/OnFinality-io/subql/compare/v0.7.0...v0.7.1 [0.7.0]: https://github.com/OnFinality-io/subql/compare/v0.6.0...v0.7.0 [0.6.0]: https://github.com/OnFinality-io/subql/compare/v0.5.0...v0.6.0 [0.5.0]: https://github.com/OnFinality-io/subql/compare/v0.2.0...v0.5.0 [0.2.0]: https://github.com/OnFinality-io/subql/tags/0.2.0 ================================================ FILE: packages/cli/LICENSE ================================================ GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 Copyright (C) 2007 Free Software Foundation, Inc. Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The GNU General Public License is a free, copyleft license for software and other kinds of works. The licenses for most software and other practical works are designed to take away your freedom to share and change the works. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change all versions of a program--to make sure it remains free software for all its users. We, the Free Software Foundation, use the GNU General Public License for most of our software; it applies also to any other work released this way by its authors. You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for them if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs, and that you know you can do these things. To protect your rights, we need to prevent others from denying you these rights or asking you to surrender the rights. Therefore, you have certain responsibilities if you distribute copies of the software, or if you modify it: responsibilities to respect the freedom of others. For example, if you distribute copies of such a program, whether gratis or for a fee, you must pass on to the recipients the same freedoms that you received. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. Developers that use the GNU GPL protect your rights with two steps: (1) assert copyright on the software, and (2) offer you this License giving you legal permission to copy, distribute and/or modify it. For the developers' and authors' protection, the GPL clearly explains that there is no warranty for this free software. For both users' and authors' sake, the GPL requires that modified versions be marked as changed, so that their problems will not be attributed erroneously to authors of previous versions. Some devices are designed to deny users access to install or run modified versions of the software inside them, although the manufacturer can do so. This is fundamentally incompatible with the aim of protecting users' freedom to change the software. The systematic pattern of such abuse occurs in the area of products for individuals to use, which is precisely where it is most unacceptable. Therefore, we have designed this version of the GPL to prohibit the practice for those products. If such problems arise substantially in other domains, we stand ready to extend this provision to those domains in future versions of the GPL, as needed to protect the freedom of users. Finally, every program is threatened constantly by software patents. States should not allow patents to restrict development and use of software on general-purpose computers, but in those that do, we wish to avoid the special danger that patents applied to a free program could make it effectively proprietary. To prevent this, the GPL assures that patents cannot be used to render the program non-free. The precise terms and conditions for copying, distribution and modification follow. TERMS AND CONDITIONS 0. Definitions. "This License" refers to version 3 of the GNU General Public License. "Copyright" also means copyright-like laws that apply to other kinds of works, such as semiconductor masks. "The Program" refers to any copyrightable work licensed under this License. Each licensee is addressed as "you". "Licensees" and "recipients" may be individuals or organizations. To "modify" a work means to copy from or adapt all or part of the work in a fashion requiring copyright permission, other than the making of an exact copy. The resulting work is called a "modified version" of the earlier work or a work "based on" the earlier work. A "covered work" means either the unmodified Program or a work based on the Program. To "propagate" a work means to do anything with it that, without permission, would make you directly or secondarily liable for infringement under applicable copyright law, except executing it on a computer or modifying a private copy. Propagation includes copying, distribution (with or without modification), making available to the public, and in some countries other activities as well. To "convey" a work means any kind of propagation that enables other parties to make or receive copies. Mere interaction with a user through a computer network, with no transfer of a copy, is not conveying. An interactive user interface displays "Appropriate Legal Notices" to the extent that it includes a convenient and prominently visible feature that (1) displays an appropriate copyright notice, and (2) tells the user that there is no warranty for the work (except to the extent that warranties are provided), that licensees may convey the work under this License, and how to view a copy of this License. If the interface presents a list of user commands or options, such as a menu, a prominent item in the list meets this criterion. 1. Source Code. The "source code" for a work means the preferred form of the work for making modifications to it. "Object code" means any non-source form of a work. A "Standard Interface" means an interface that either is an official standard defined by a recognized standards body, or, in the case of interfaces specified for a particular programming language, one that is widely used among developers working in that language. The "System Libraries" of an executable work include anything, other than the work as a whole, that (a) is included in the normal form of packaging a Major Component, but which is not part of that Major Component, and (b) serves only to enable use of the work with that Major Component, or to implement a Standard Interface for which an implementation is available to the public in source code form. A "Major Component", in this context, means a major essential component (kernel, window system, and so on) of the specific operating system (if any) on which the executable work runs, or a compiler used to produce the work, or an object code interpreter used to run it. The "Corresponding Source" for a work in object code form means all the source code needed to generate, install, and (for an executable work) run the object code and to modify the work, including scripts to control those activities. However, it does not include the work's System Libraries, or general-purpose tools or generally available free programs which are used unmodified in performing those activities but which are not part of the work. For example, Corresponding Source includes interface definition files associated with source files for the work, and the source code for shared libraries and dynamically linked subprograms that the work is specifically designed to require, such as by intimate data communication or control flow between those subprograms and other parts of the work. The Corresponding Source need not include anything that users can regenerate automatically from other parts of the Corresponding Source. The Corresponding Source for a work in source code form is that same work. 2. Basic Permissions. All rights granted under this License are granted for the term of copyright on the Program, and are irrevocable provided the stated conditions are met. This License explicitly affirms your unlimited permission to run the unmodified Program. The output from running a covered work is covered by this License only if the output, given its content, constitutes a covered work. This License acknowledges your rights of fair use or other equivalent, as provided by copyright law. You may make, run and propagate covered works that you do not convey, without conditions so long as your license otherwise remains in force. You may convey covered works to others for the sole purpose of having them make modifications exclusively for you, or provide you with facilities for running those works, provided that you comply with the terms of this License in conveying all material for which you do not control copyright. Those thus making or running the covered works for you must do so exclusively on your behalf, under your direction and control, on terms that prohibit them from making any copies of your copyrighted material outside their relationship with you. Conveying under any other circumstances is permitted solely under the conditions stated below. Sublicensing is not allowed; section 10 makes it unnecessary. 3. Protecting Users' Legal Rights From Anti-Circumvention Law. No covered work shall be deemed part of an effective technological measure under any applicable law fulfilling obligations under article 11 of the WIPO copyright treaty adopted on 20 December 1996, or similar laws prohibiting or restricting circumvention of such measures. When you convey a covered work, you waive any legal power to forbid circumvention of technological measures to the extent such circumvention is effected by exercising rights under this License with respect to the covered work, and you disclaim any intention to limit operation or modification of the work as a means of enforcing, against the work's users, your or third parties' legal rights to forbid circumvention of technological measures. 4. Conveying Verbatim Copies. You may convey verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice; keep intact all notices stating that this License and any non-permissive terms added in accord with section 7 apply to the code; keep intact all notices of the absence of any warranty; and give all recipients a copy of this License along with the Program. You may charge any price or no price for each copy that you convey, and you may offer support or warranty protection for a fee. 5. Conveying Modified Source Versions. You may convey a work based on the Program, or the modifications to produce it from the Program, in the form of source code under the terms of section 4, provided that you also meet all of these conditions: a) The work must carry prominent notices stating that you modified it, and giving a relevant date. b) The work must carry prominent notices stating that it is released under this License and any conditions added under section 7. This requirement modifies the requirement in section 4 to "keep intact all notices". c) You must license the entire work, as a whole, under this License to anyone who comes into possession of a copy. This License will therefore apply, along with any applicable section 7 additional terms, to the whole of the work, and all its parts, regardless of how they are packaged. This License gives no permission to license the work in any other way, but it does not invalidate such permission if you have separately received it. d) If the work has interactive user interfaces, each must display Appropriate Legal Notices; however, if the Program has interactive interfaces that do not display Appropriate Legal Notices, your work need not make them do so. A compilation of a covered work with other separate and independent works, which are not by their nature extensions of the covered work, and which are not combined with it such as to form a larger program, in or on a volume of a storage or distribution medium, is called an "aggregate" if the compilation and its resulting copyright are not used to limit the access or legal rights of the compilation's users beyond what the individual works permit. Inclusion of a covered work in an aggregate does not cause this License to apply to the other parts of the aggregate. 6. Conveying Non-Source Forms. You may convey a covered work in object code form under the terms of sections 4 and 5, provided that you also convey the machine-readable Corresponding Source under the terms of this License, in one of these ways: a) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by the Corresponding Source fixed on a durable physical medium customarily used for software interchange. b) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by a written offer, valid for at least three years and valid for as long as you offer spare parts or customer support for that product model, to give anyone who possesses the object code either (1) a copy of the Corresponding Source for all the software in the product that is covered by this License, on a durable physical medium customarily used for software interchange, for a price no more than your reasonable cost of physically performing this conveying of source, or (2) access to copy the Corresponding Source from a network server at no charge. c) Convey individual copies of the object code with a copy of the written offer to provide the Corresponding Source. This alternative is allowed only occasionally and noncommercially, and only if you received the object code with such an offer, in accord with subsection 6b. d) Convey the object code by offering access from a designated place (gratis or for a charge), and offer equivalent access to the Corresponding Source in the same way through the same place at no further charge. You need not require recipients to copy the Corresponding Source along with the object code. If the place to copy the object code is a network server, the Corresponding Source may be on a different server (operated by you or a third party) that supports equivalent copying facilities, provided you maintain clear directions next to the object code saying where to find the Corresponding Source. Regardless of what server hosts the Corresponding Source, you remain obligated to ensure that it is available for as long as needed to satisfy these requirements. e) Convey the object code using peer-to-peer transmission, provided you inform other peers where the object code and Corresponding Source of the work are being offered to the general public at no charge under subsection 6d. A separable portion of the object code, whose source code is excluded from the Corresponding Source as a System Library, need not be included in conveying the object code work. A "User Product" is either (1) a "consumer product", which means any tangible personal property which is normally used for personal, family, or household purposes, or (2) anything designed or sold for incorporation into a dwelling. In determining whether a product is a consumer product, doubtful cases shall be resolved in favor of coverage. For a particular product received by a particular user, "normally used" refers to a typical or common use of that class of product, regardless of the status of the particular user or of the way in which the particular user actually uses, or expects or is expected to use, the product. A product is a consumer product regardless of whether the product has substantial commercial, industrial or non-consumer uses, unless such uses represent the only significant mode of use of the product. "Installation Information" for a User Product means any methods, procedures, authorization keys, or other information required to install and execute modified versions of a covered work in that User Product from a modified version of its Corresponding Source. The information must suffice to ensure that the continued functioning of the modified object code is in no case prevented or interfered with solely because modification has been made. If you convey an object code work under this section in, or with, or specifically for use in, a User Product, and the conveying occurs as part of a transaction in which the right of possession and use of the User Product is transferred to the recipient in perpetuity or for a fixed term (regardless of how the transaction is characterized), the Corresponding Source conveyed under this section must be accompanied by the Installation Information. But this requirement does not apply if neither you nor any third party retains the ability to install modified object code on the User Product (for example, the work has been installed in ROM). The requirement to provide Installation Information does not include a requirement to continue to provide support service, warranty, or updates for a work that has been modified or installed by the recipient, or for the User Product in which it has been modified or installed. Access to a network may be denied when the modification itself materially and adversely affects the operation of the network or violates the rules and protocols for communication across the network. Corresponding Source conveyed, and Installation Information provided, in accord with this section must be in a format that is publicly documented (and with an implementation available to the public in source code form), and must require no special password or key for unpacking, reading or copying. 7. Additional Terms. "Additional permissions" are terms that supplement the terms of this License by making exceptions from one or more of its conditions. Additional permissions that are applicable to the entire Program shall be treated as though they were included in this License, to the extent that they are valid under applicable law. If additional permissions apply only to part of the Program, that part may be used separately under those permissions, but the entire Program remains governed by this License without regard to the additional permissions. When you convey a copy of a covered work, you may at your option remove any additional permissions from that copy, or from any part of it. (Additional permissions may be written to require their own removal in certain cases when you modify the work.) You may place additional permissions on material, added by you to a covered work, for which you have or can give appropriate copyright permission. Notwithstanding any other provision of this License, for material you add to a covered work, you may (if authorized by the copyright holders of that material) supplement the terms of this License with terms: a) Disclaiming warranty or limiting liability differently from the terms of sections 15 and 16 of this License; or b) Requiring preservation of specified reasonable legal notices or author attributions in that material or in the Appropriate Legal Notices displayed by works containing it; or c) Prohibiting misrepresentation of the origin of that material, or requiring that modified versions of such material be marked in reasonable ways as different from the original version; or d) Limiting the use for publicity purposes of names of licensors or authors of the material; or e) Declining to grant rights under trademark law for use of some trade names, trademarks, or service marks; or f) Requiring indemnification of licensors and authors of that material by anyone who conveys the material (or modified versions of it) with contractual assumptions of liability to the recipient, for any liability that these contractual assumptions directly impose on those licensors and authors. All other non-permissive additional terms are considered "further restrictions" within the meaning of section 10. If the Program as you received it, or any part of it, contains a notice stating that it is governed by this License along with a term that is a further restriction, you may remove that term. If a license document contains a further restriction but permits relicensing or conveying under this License, you may add to a covered work material governed by the terms of that license document, provided that the further restriction does not survive such relicensing or conveying. If you add terms to a covered work in accord with this section, you must place, in the relevant source files, a statement of the additional terms that apply to those files, or a notice indicating where to find the applicable terms. Additional terms, permissive or non-permissive, may be stated in the form of a separately written license, or stated as exceptions; the above requirements apply either way. 8. Termination. You may not propagate or modify a covered work except as expressly provided under this License. Any attempt otherwise to propagate or modify it is void, and will automatically terminate your rights under this License (including any patent licenses granted under the third paragraph of section 11). However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation. Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means, this is the first time you have received notice of violation of this License (for any work) from that copyright holder, and you cure the violation prior to 30 days after your receipt of the notice. Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under this License. If your rights have been terminated and not permanently reinstated, you do not qualify to receive new licenses for the same material under section 10. 9. Acceptance Not Required for Having Copies. You are not required to accept this License in order to receive or run a copy of the Program. Ancillary propagation of a covered work occurring solely as a consequence of using peer-to-peer transmission to receive a copy likewise does not require acceptance. However, nothing other than this License grants you permission to propagate or modify any covered work. These actions infringe copyright if you do not accept this License. Therefore, by modifying or propagating a covered work, you indicate your acceptance of this License to do so. 10. Automatic Licensing of Downstream Recipients. Each time you convey a covered work, the recipient automatically receives a license from the original licensors, to run, modify and propagate that work, subject to this License. You are not responsible for enforcing compliance by third parties with this License. An "entity transaction" is a transaction transferring control of an organization, or substantially all assets of one, or subdividing an organization, or merging organizations. If propagation of a covered work results from an entity transaction, each party to that transaction who receives a copy of the work also receives whatever licenses to the work the party's predecessor in interest had or could give under the previous paragraph, plus a right to possession of the Corresponding Source of the work from the predecessor in interest, if the predecessor has it or can get it with reasonable efforts. You may not impose any further restrictions on the exercise of the rights granted or affirmed under this License. For example, you may not impose a license fee, royalty, or other charge for exercise of rights granted under this License, and you may not initiate litigation (including a cross-claim or counterclaim in a lawsuit) alleging that any patent claim is infringed by making, using, selling, offering for sale, or importing the Program or any portion of it. 11. Patents. A "contributor" is a copyright holder who authorizes use under this License of the Program or a work on which the Program is based. The work thus licensed is called the contributor's "contributor version". A contributor's "essential patent claims" are all patent claims owned or controlled by the contributor, whether already acquired or hereafter acquired, that would be infringed by some manner, permitted by this License, of making, using, or selling its contributor version, but do not include claims that would be infringed only as a consequence of further modification of the contributor version. For purposes of this definition, "control" includes the right to grant patent sublicenses in a manner consistent with the requirements of this License. Each contributor grants you a non-exclusive, worldwide, royalty-free patent license under the contributor's essential patent claims, to make, use, sell, offer for sale, import and otherwise run, modify and propagate the contents of its contributor version. In the following three paragraphs, a "patent license" is any express agreement or commitment, however denominated, not to enforce a patent (such as an express permission to practice a patent or covenant not to sue for patent infringement). To "grant" such a patent license to a party means to make such an agreement or commitment not to enforce a patent against the party. If you convey a covered work, knowingly relying on a patent license, and the Corresponding Source of the work is not available for anyone to copy, free of charge and under the terms of this License, through a publicly available network server or other readily accessible means, then you must either (1) cause the Corresponding Source to be so available, or (2) arrange to deprive yourself of the benefit of the patent license for this particular work, or (3) arrange, in a manner consistent with the requirements of this License, to extend the patent license to downstream recipients. "Knowingly relying" means you have actual knowledge that, but for the patent license, your conveying the covered work in a country, or your recipient's use of the covered work in a country, would infringe one or more identifiable patents in that country that you have reason to believe are valid. If, pursuant to or in connection with a single transaction or arrangement, you convey, or propagate by procuring conveyance of, a covered work, and grant a patent license to some of the parties receiving the covered work authorizing them to use, propagate, modify or convey a specific copy of the covered work, then the patent license you grant is automatically extended to all recipients of the covered work and works based on it. A patent license is "discriminatory" if it does not include within the scope of its coverage, prohibits the exercise of, or is conditioned on the non-exercise of one or more of the rights that are specifically granted under this License. You may not convey a covered work if you are a party to an arrangement with a third party that is in the business of distributing software, under which you make payment to the third party based on the extent of your activity of conveying the work, and under which the third party grants, to any of the parties who would receive the covered work from you, a discriminatory patent license (a) in connection with copies of the covered work conveyed by you (or copies made from those copies), or (b) primarily for and in connection with specific products or compilations that contain the covered work, unless you entered into that arrangement, or that patent license was granted, prior to 28 March 2007. Nothing in this License shall be construed as excluding or limiting any implied license or other defenses to infringement that may otherwise be available to you under applicable patent law. 12. No Surrender of Others' Freedom. If conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot convey a covered work so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not convey it at all. For example, if you agree to terms that obligate you to collect a royalty for further conveying from those to whom you convey the Program, the only way you could satisfy both those terms and this License would be to refrain entirely from conveying the Program. 13. Use with the GNU Affero General Public License. Notwithstanding any other provision of this License, you have permission to link or combine any covered work with a work licensed under version 3 of the GNU Affero General Public License into a single combined work, and to convey the resulting work. The terms of this License will continue to apply to the part which is the covered work, but the special requirements of the GNU Affero General Public License, section 13, concerning interaction through a network will apply to the combination as such. 14. Revised Versions of this License. The Free Software Foundation may publish revised and/or new versions of the GNU General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies that a certain numbered version of the GNU General Public License "or any later version" applies to it, you have the option of following the terms and conditions either of that numbered version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of the GNU General Public License, you may choose any version ever published by the Free Software Foundation. If the Program specifies that a proxy can decide which future versions of the GNU General Public License can be used, that proxy's public statement of acceptance of a version permanently authorizes you to choose that version for the Program. Later license versions may give you additional or different permissions. However, no additional obligations are imposed on any author or copyright holder as a result of your choosing to follow a later version. 15. Disclaimer of Warranty. THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 16. Limitation of Liability. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. 17. Interpretation of Sections 15 and 16. If the disclaimer of warranty and limitation of liability provided above cannot be given local legal effect according to their terms, reviewing courts shall apply local law that most closely approximates an absolute waiver of all civil liability in connection with the Program, unless a warranty or assumption of liability accompanies a copy of the Program in return for a fee. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively state the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . Also add information on how to contact you by electronic and paper mail. If the program does terminal interaction, make it output a short notice like this when it starts in an interactive mode: Copyright (C) This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, your program's commands might be different; for a GUI interface, you would use an "about box". You should also get your employer (if you work as a programmer) or school, if any, to sign a "copyright disclaimer" for the program, if necessary. For more information on this, and how to apply and follow the GNU GPL, see . The GNU General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. But first, please read . ================================================ FILE: packages/cli/README.md ================================================ # @subql/cli CLI for SubQuery [![oclif](https://img.shields.io/badge/cli-oclif-brightgreen.svg)](https://oclif.io) [![Version](https://img.shields.io/npm/v/@subql/cli.svg)](https://npmjs.org/package/@subql/cli) [![Downloads/week](https://img.shields.io/npm/dw/@subql/cli.svg)](https://npmjs.org/package/@subql/cli) [![License](https://img.shields.io/npm/l/@subql/cli.svg)](https://github.com/subquery/subql/blob/main/packages/cli/LICENSE) - [@subql/cli](#subqlcli) - [Usage](#usage) - [Commands](#commands) # Usage ```sh-session $ npm install -g @subql/cli $ subql COMMAND running command... $ subql (--version) @subql/cli/6.6.3-0 linux-x64 node-v24.11.1 $ subql --help [COMMAND] USAGE $ subql COMMAND ... ``` # Commands - [`subql build [LOCATION]`](#subql-build-location) - [`subql build-manifest [LOCATION]`](#subql-build-manifest-location) - [`subql codegen [LOCATION]`](#subql-codegen-location) - [`subql codegen:import-abi LOCATION`](#subql-codegenimport-abi-location) - [`subql import-abi LOCATION`](#subql-import-abi-location) - [`subql init NAME`](#subql-init-name) - [`subql mcp`](#subql-mcp) - [`subql migrate`](#subql-migrate) - [`subql multi-chain:add [LOCATION]`](#subql-multi-chainadd-location) - [`subql network:add-deployment-boost`](#subql-networkadd-deployment-boost) - [`subql network:connect-wallet`](#subql-networkconnect-wallet) - [`subql network:create-api-key NAME`](#subql-networkcreate-api-key-name) - [`subql network:create-deployment`](#subql-networkcreate-deployment) - [`subql network:create-flex-plan`](#subql-networkcreate-flex-plan) - [`subql network:create-project`](#subql-networkcreate-project) - [`subql network:disconnect-wallet`](#subql-networkdisconnect-wallet) - [`subql network:list-account-boosts`](#subql-networklist-account-boosts) - [`subql network:list-api-keys`](#subql-networklist-api-keys) - [`subql network:list-deployment-boosts`](#subql-networklist-deployment-boosts) - [`subql network:list-deployment-indexers`](#subql-networklist-deployment-indexers) - [`subql network:list-deployments`](#subql-networklist-deployments) - [`subql network:list-flex-plans`](#subql-networklist-flex-plans) - [`subql network:list-projects`](#subql-networklist-projects) - [`subql network:remove-api-key NAME`](#subql-networkremove-api-key-name) - [`subql network:remove-deployment-boost`](#subql-networkremove-deployment-boost) - [`subql network:stop-flex-plan`](#subql-networkstop-flex-plan) - [`subql network:swap-deployment-boost`](#subql-networkswap-deployment-boost) - [`subql onfinality:create-deployment`](#subql-onfinalitycreate-deployment) - [`subql onfinality:create-multichain-deployment [LOCATION]`](#subql-onfinalitycreate-multichain-deployment-location) - [`subql onfinality:create-project`](#subql-onfinalitycreate-project) - [`subql onfinality:delete-deployment`](#subql-onfinalitydelete-deployment) - [`subql onfinality:delete-project`](#subql-onfinalitydelete-project) - [`subql onfinality:promote-deployment`](#subql-onfinalitypromote-deployment) - [`subql publish [LOCATION]`](#subql-publish-location) ## `subql build [LOCATION]` Build this SubQuery project code into a bundle ``` USAGE $ subql build [LOCATION] [--output ] ARGUMENTS LOCATION The path to the project, this can be a directory or a project manifest file. FLAGS --output= [default: dist] The output location relative to the location DESCRIPTION Build this SubQuery project code into a bundle ``` _See code: [src/commands/build.ts](https://github.com/subquery/subql/blob/cli/6.6.3-0/packages/cli/src/commands/build.ts)_ ## `subql build-manifest [LOCATION]` Build TypeScript manifest file to YAML (generates project.yaml from project.ts) ``` USAGE $ subql build-manifest [LOCATION] ARGUMENTS LOCATION The path to the project, this can be a directory or a project manifest file. DESCRIPTION Build TypeScript manifest file to YAML (generates project.yaml from project.ts) ``` _See code: [src/commands/build-manifest.ts](https://github.com/subquery/subql/blob/cli/6.6.3-0/packages/cli/src/commands/build-manifest.ts)_ ## `subql codegen [LOCATION]` Generate entity types from the GraphQL schema and contract interfaces ``` USAGE $ subql codegen [LOCATION] ARGUMENTS LOCATION The project directory or path to project manifest. DESCRIPTION Generate entity types from the GraphQL schema and contract interfaces ``` _See code: [src/commands/codegen/index.ts](https://github.com/subquery/subql/blob/cli/6.6.3-0/packages/cli/src/commands/codegen/index.ts)_ ## `subql codegen:import-abi LOCATION` Import and ABI to generate project handlers and mapping functions based on an Ethereum ABI. If address is provided, it will attempt to fetch the ABI and start block from the Etherscan. ``` USAGE $ subql codegen:import-abi LOCATION [--address ] [--abiName ] [--startBlock ] [--abiPath ] [--events ] [--functions ] ARGUMENTS LOCATION The path to the project, this can be a directory or a project manifest file. FLAGS --abiName= The contracts name, if not provided, the contract address will be used if the ABI is fetched from Etherscan --abiPath= The path to the ABI file --address= The contracts address --events= ABI events to generate handlers for. Use '*' for all. e.g. --events="approval, transfer" --functions= ABI functions to generate handlers for. Use '*' for all. e.g. --functions="approval, transfer" --startBlock= The start block of the handler, generally the block the contract is deployed. DESCRIPTION Import and ABI to generate project handlers and mapping functions based on an Ethereum ABI. If address is provided, it will attempt to fetch the ABI and start block from the Etherscan. ALIASES $ subql import-abi ``` _See code: [src/commands/codegen/import-abi.ts](https://github.com/subquery/subql/blob/cli/6.6.3-0/packages/cli/src/commands/codegen/import-abi.ts)_ ## `subql import-abi LOCATION` Import and ABI to generate project handlers and mapping functions based on an Ethereum ABI. If address is provided, it will attempt to fetch the ABI and start block from the Etherscan. ``` USAGE $ subql import-abi LOCATION [--address ] [--abiName ] [--startBlock ] [--abiPath ] [--events ] [--functions ] ARGUMENTS LOCATION The path to the project, this can be a directory or a project manifest file. FLAGS --abiName= The contracts name, if not provided, the contract address will be used if the ABI is fetched from Etherscan --abiPath= The path to the ABI file --address= The contracts address --events= ABI events to generate handlers for. Use '*' for all. e.g. --events="approval, transfer" --functions= ABI functions to generate handlers for. Use '*' for all. e.g. --functions="approval, transfer" --startBlock= The start block of the handler, generally the block the contract is deployed. DESCRIPTION Import and ABI to generate project handlers and mapping functions based on an Ethereum ABI. If address is provided, it will attempt to fetch the ABI and start block from the Etherscan. ALIASES $ subql import-abi ``` ## `subql init NAME` Initialize a SubQuery project from a template ``` USAGE $ subql init NAME [--location ] [--network ] [--networkFamily ] [--endpoint ] [--installDependencies] [--packageManager npm|yarn|pnpm] [--author ] ARGUMENTS NAME The name of the project to create FLAGS --author= The project author that will be set in package.json. Defaults to the current system user --endpoint= The RPC endpoint that the project will use --installDependencies Install the dependencies of the project --location= The path to the project, this can be a directory or a project manifest file. --network= The name of the network the project will index data for --networkFamily= The network family the project will index data for, e.g. EVM, Substrate --packageManager=
{ // get SpecVersion from main runtime service const { blockSpecVersion, syncedDictionary } = await this.runtimeService.getSpecVersion(height); // if main runtime specVersion has been updated, then sync with all workers specVersion map, and lastFinalizedBlock if (syncedDictionary) { context.workers.map((w) => w.syncRuntimeService( this.runtimeService.specVersionMap, this.runtimeService.latestFinalizedHeight, ), ); } return worker.fetchBlock(height, blockSpecVersion); } async onProjectChange(project: SubqueryProject): Promise { // Only network with chainTypes require to reload await this.apiService.updateChainTypes(); this.apiService.updateBlockFetching(); } async getBlockTimestamp(height: number): Promise { const block = await getBlockByHeight(this.apiService.api, height); let timestamp = getTimestamp(block); if (!timestamp) { // Not all networks have a block timestamp, e.g. Shiden const blockTimestamp = await ( await this.apiService.unsafeApi.at(block.hash) ).query.timestamp.now(); timestamp = new Date(blockTimestamp.toNumber()); } return timestamp; } getBlockSize(block: IBlock): number { return getBlockSize(block); } async getFinalizedHeader(): Promise
{ const finalizedHash = await this.apiService.unsafeApi.rpc.chain.getFinalizedHead(); return this.getHeaderForHash(finalizedHash.toHex()); } async getBestHeight(): Promise { const bestHeader = await this.apiService.unsafeApi.rpc.chain.getHeader(); return bestHeader.number.toNumber(); } // eslint-disable-next-line @typescript-eslint/require-await async getChainInterval(): Promise { const chainInterval = calcInterval(this.apiService.unsafeApi) .muln(INTERVAL_PERCENT) .toNumber(); return Math.min(BLOCK_TIME_VARIANCE, chainInterval); } // TODO can this decorator be in unfinalizedBlocks Service? @mainThreadOnly() async getHeaderForHash(hash: string): Promise
{ return getHeaderForHash(this.apiService.unsafeApi, hash); } // TODO can this decorator be in unfinalizedBlocks Service? @mainThreadOnly() async getHeaderForHeight(height: number): Promise
{ const hash = await this.apiService.unsafeApi.rpc.chain.getBlockHash(height); return this.getHeaderForHash(hash.toHex()); } // eslint-disable-next-line @typescript-eslint/require-await async updateDynamicDs( params: DatasourceParams, dsObj: SubstrateProjectDs, ): Promise { if (isCustomDs(dsObj)) { dsObj.processor.options = { ...dsObj.processor.options, ...params.args, }; // TODO needs dsProcessorService // await this.dsProcessorService.validateCustomDs([dsObj]); } else if (isRuntimeDs(dsObj)) { // XXX add any modifications to the ds here } } async getSafeApi(block: LightBlockContent | BlockContent): Promise { const runtimeVersion = !isFullBlock(block) ? undefined : await this.runtimeService.getRuntimeVersion(block.block); return this.apiService.getPatchedApi( block.block.block.header, runtimeVersion, ); } } ================================================ FILE: packages/node/src/configure/NodeConfig.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import { IConfig, NodeConfig } from '@subql/node-core'; export interface ISubstrateConfig extends IConfig { skipTransactions: boolean; } export class SubstrateNodeConfig extends NodeConfig { /** * This is a wrapper around the core NodeConfig to get additional properties that are provided through args or node runner options * NOTE: This isn't injected anywhere so you need to wrap the injected node config * * @example * constructor( * nodeConfig: NodeConfig, * ) { * this.nodeConfig = new SubstrateNodeConfig(nodeConfig); * } * */ constructor(config: NodeConfig) { // Rebuild with internal config super((config as any)._config, (config as any)._isTest); } get skipTransactions(): boolean { return !!this._config.skipTransactions; } } ================================================ FILE: packages/node/src/configure/SchemaMigration.service.test.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import { INestApplication } from '@nestjs/common'; import { DbOption, StoreCacheService, ProjectService } from '@subql/node-core'; import { QueryTypes, Sequelize } from '@subql/x-sequelize'; import { rimraf } from 'rimraf'; import { prepareApp } from '../utils/test.utils'; const option: DbOption = { host: process.env.DB_HOST ?? '127.0.0.1', port: process.env.DB_PORT ? Number(process.env.DB_PORT) : 5432, username: process.env.DB_USER ?? 'postgres', password: process.env.DB_PASS ?? 'postgres', database: process.env.DB_DATABASE ?? 'postgres', timezone: 'utc', }; jest.setTimeout(900000); describe('SchemaMigration integration tests', () => { let app: INestApplication; let projectService: ProjectService; let sequelize: Sequelize; let tempDir: string; let schemaName: string; beforeAll(async () => { sequelize = new Sequelize( `postgresql://${option.username}:${option.password}@${option.host}:${option.port}/${option.database}`, option, ); await sequelize.authenticate(); }); afterEach(async () => { await sequelize.dropSchema(schemaName, { logging: false }); await app?.close(); }); afterAll(async () => { if (tempDir) { await rimraf(tempDir); } await sequelize?.close(); }); it('Should initialize correct schema based on startHeight', async () => { // parent: QmQuww78v2XeGVVPVj6rWLhqvw78xrcR2SZJ5QLe7aaxu3 // child : QmZcEv4UWrCkkiHUmtz7q5AAXdu82aAdkxH8X8BQK3TjCy const cid = 'QmZcEv4UWrCkkiHUmtz7q5AAXdu82aAdkxH8X8BQK3TjCy'; schemaName = 'test-migrations-6'; app = await prepareApp(schemaName, cid); projectService = app.get('IProjectService'); await projectService.init(1); const dbResults = await sequelize.query( `SELECT table_name FROM information_schema.tables WHERE table_schema= :schema;`, { type: QueryTypes.SELECT, replacements: { schema: schemaName } }, ); const tableNames: string[] = dbResults.map((row) => { return row[0]; }); expect(tableNames).toContain('_metadata'); expect(tableNames).toContain('accounts'); expect(tableNames).toContain('test_index_ones'); expect(tableNames).toContain('transfers'); }); it('On entity drop isRewindable should be false', async () => { const cid = 'QmZcEv4UWrCkkiHUmtz7q5AAXdu82aAdkxH8X8BQK3TjCy'; schemaName = 'test-migrations-7'; app = await prepareApp(schemaName, cid); projectService = app.get('IProjectService'); await projectService.init(1); tempDir = (projectService as any).project.root; const isRewindable = (projectService as any).projectUpgradeService .isRewindable; expect(isRewindable).toBe(false); }); it('Should update sequelize Models in cachedModels', async () => { const cid = 'QmWKRpKXgmPArnAGRNaK2wTiWNuosUtxBcB581mcth8B82'; schemaName = 'test-migrations-8'; app = await prepareApp(schemaName, cid); projectService = app.get('IProjectService'); const projectUpgradeService = app.get('IProjectUpgradeService'); const storeCache = app.get('IStoreModelProvider'); const cacheSpy = jest.spyOn(storeCache, 'updateModels'); await projectService.init(1); tempDir = (projectService as any).project.root; await projectUpgradeService.setCurrentHeight(1000); const cachedModels = (storeCache as any).cachedModels; expect(Object.keys(cachedModels)).toStrictEqual([ '_metadata', 'Transfer', 'Account', 'AddedEntity', ]); expect( Object.keys((cachedModels.Account.model as any).rawAttributes).includes( 'addedField', ), ).toBe(true); expect( Object.keys((cachedModels.Account.model as any).rawAttributes).includes( 'dropField', ), ).toBe(false); expect(cacheSpy).toHaveBeenCalledTimes(2); }); it('Ensure no duplication in cacheModels', async () => { const cid = 'QmSmQvbssnCCH2fdi2VyqCQsjKti7tKsJMtxMUmZKUjhq7'; schemaName = 'test-migrations-9'; app = await prepareApp(schemaName, cid); projectService = app.get('IProjectService'); const projectUpgradeService = app.get('IProjectUpgradeService'); const storeCache = app.get('IStoreModelProvider'); await projectService.init(1); tempDir = (projectService as any).project.root; await projectUpgradeService.setCurrentHeight(1000); const cachedModels = (storeCache as any).cachedModels; expect(Object.keys(cachedModels)).toStrictEqual([ '_metadata', 'Transfer', 'Account', ]); }); }); ================================================ FILE: packages/node/src/configure/SubqueryProject.spec.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import fs from 'fs'; import path from 'path'; import { GithubReader, IPFSReader, IPFS_NODE_ENDPOINT, LocalReader, makeTempDir, ReaderFactory, } from '@subql/common'; import { SubstrateCustomDataSourceImpl, isCustomDs, } from '@subql/common-substrate'; import { updateDataSourcesV1_0_0 } from '@subql/node-core'; import { SubstrateCustomDatasource, SubstrateRuntimeDatasource, } from '@subql/types'; import { Reader } from '@subql/types-core'; import { createSubQueryProject } from './SubqueryProject'; // eslint-disable-next-line jest/no-export export async function getProjectRoot(reader: Reader): Promise { if (reader instanceof LocalReader) return reader.root; if (reader instanceof IPFSReader || reader instanceof GithubReader) { return makeTempDir(); } throw new Error('Un-known reader type'); } // Inspect asset path and content function inspectAsset(inspectAssetPath: string) { const { dir, ext } = path.parse(inspectAssetPath); // should have no extension expect(ext).toBe(''); const assetContent = fs.readFileSync(inspectAssetPath, 'utf8'); // And when we load it, it should resolve correct abi expect(assetContent).toContain('transferFrom'); } describe('SubqueryProject', () => { describe('convert manifest to project object', () => { let projectDirV1_0_0: string; let templateProject: string; beforeEach(() => { projectDirV1_0_0 = path.resolve( __dirname, '../../test/projectFixture/v1.0.0', ); templateProject = path.resolve( __dirname, '../../test/projectFixture/template-v1.0.0', ); }); it('convert 1.0.0 ipfs deployment to project object', async () => { const reader = await ReaderFactory.create(projectDirV1_0_0); const expectedRunner = { node: { name: '@subql/node', version: '>=1.0.0', }, query: { name: '@subql/query', version: '*', }, }; const rawManifest = await reader.getProjectSchema(); const project = await createSubQueryProject( projectDirV1_0_0, rawManifest, reader, await getProjectRoot(reader), { endpoint: ['wss://rpc.polkadot.io/public-ws'], }, ); expect(project.runner).toMatchObject(expectedRunner); }, 500000); it('check processChainId', async () => { const reader = await ReaderFactory.create(projectDirV1_0_0); const rawManifest = await reader.getProjectSchema(); const project = await createSubQueryProject( projectDirV1_0_0, rawManifest, reader, await getProjectRoot(reader), { endpoint: ['wss://rpc.polkadot.io/public-ws'], }, ); expect(project.network.chainId).toMatch( '0x401a1f9dca3da46f5c4091016c8a2f26dcea05865116b286f60f668207d1474b', ); }, 5000000); it('check loadProjectTemplates', async () => { const reader0 = await ReaderFactory.create(templateProject); const templateRawManifest = await reader0.getProjectSchema(); const project = await createSubQueryProject( templateProject, templateRawManifest, reader0, await getProjectRoot(reader0), { endpoint: ['wss://moonbeam-alpha.api.onfinality.io/public-ws'], }, ); const reader1 = await ReaderFactory.create(projectDirV1_0_0); const rawManifest = await reader1.getProjectSchema(); const project_v1 = await createSubQueryProject( projectDirV1_0_0, rawManifest, reader1, await getProjectRoot(reader1), { endpoint: ['wss://rpc.polkadot.io/public-ws'], }, ); expect(project_v1).not.toContain('template'); expect(project.templates.length).toBe(1); }); }); it('loads chainTypes from deployment', async () => { const reader = await ReaderFactory.create( 'ipfs://QmZYR6tpRYvmnKoUtugpwYfH9CpP7a8fYYcLVX3d7dph2j', { ipfs: IPFS_NODE_ENDPOINT }, ); const project = await createSubQueryProject( 'ipfs://QmZYR6tpRYvmnKoUtugpwYfH9CpP7a8fYYcLVX3d7dph2j', await reader.getProjectSchema(), reader, await getProjectRoot(reader), { endpoint: ['wss://astar.api.onfinality.io/public-ws'], }, ); expect(project.chainTypes).toBeDefined(); }, 50000); it('loads asset file correctly from deployment', async () => { const reader = await ReaderFactory.create( 'ipfs://QmRoosV27325uAeepKqaTEPFKjC3nk4rrKmZJSd7QXYKZQ', { ipfs: IPFS_NODE_ENDPOINT }, ); const project = await createSubQueryProject( 'ipfs://QmRoosV27325uAeepKqaTEPFKjC3nk4rrKmZJSd7QXYKZQ', await reader.getProjectSchema(), reader, await getProjectRoot(reader), { endpoint: ['wss://moonriver.api.onfinality.io/public-ws'], }, ); expect(project.templates[0].name).toBeDefined(); // Expect asset to be fetched const inspectAssetPath = (project.templates[0] as any).assets.get( 'erc20', ).file; inspectAsset(inspectAssetPath); }, 50000); }); describe('load asset with updateDataSourcesV1_0_0', () => { const customDsImpl: SubstrateCustomDataSourceImpl[] = [ { kind: 'substrate/FrontierEvm', assets: new Map([ [ 'erc20', { file: 'ipfs://QmYoHL3BvEW6nH1zYZqnziUHjajadu5ErJHavHS2zXkZhv', }, ], ]), mapping: { file: 'ipfs://QmP4Hrfydh4zswkZYeTnnZQFhTGo3LkCfHz4jdkbP8ZA8P', handlers: [ { filter: { topics: [ 'Transfer(address indexed from,address indexed to,uint256 value)', ], }, handler: 'handleEvmEvent', kind: 'substrate/FrontierEvmEvent', }, { filter: { function: 'approve(address to,uint256 value)', }, handler: 'handleEvmCall', kind: 'substrate/FrontierEvmCall', }, ], }, processor: { file: 'ipfs://QmeHHtqRFSJQwv8pr6oUDsAkNPNAPSXXPoKiab8NKJHkiH', options: { abi: 'erc20', address: '0x6bd193ee6d2104f14f94e2ca6efefae561a4334b', }, }, startBlock: 752073, validate: jest.fn(), }, ]; let root: string; let reader: Reader; beforeEach(async () => { reader = await ReaderFactory.create( 'ipfs://QmRoosV27325uAeepKqaTEPFKjC3nk4rrKmZJSd7QXYKZQ', { ipfs: IPFS_NODE_ENDPOINT }, ); root = await makeTempDir(); }); afterEach(() => { fs.rmSync(root, { recursive: true, force: true }); }); it('After fix, it could load asset correctly', async () => { const ds = await updateDataSourcesV1_0_0< SubstrateRuntimeDatasource, SubstrateCustomDatasource >(customDsImpl, reader, root, isCustomDs); const inspectAssetPath = (ds[0] as any).assets.get('erc20').file; inspectAsset(inspectAssetPath); }, 50000); }); ================================================ FILE: packages/node/src/configure/SubqueryProject.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import { RegisteredTypes } from '@polkadot/types/types'; import { parseSubstrateProjectManifest, SubstrateBlockFilter, isRuntimeDs, SubstrateHandlerKind, isCustomDs, } from '@subql/common-substrate'; import { CronFilter, BaseSubqueryProject } from '@subql/node-core'; import { SubstrateDatasource, RuntimeDatasourceTemplate, CustomDatasourceTemplate, SubstrateNetworkConfig, } from '@subql/types'; import { Reader } from '@subql/types-core'; import { getChainTypes } from '../utils/project'; const { version: packageVersion } = require('../../package.json'); export type SubstrateProjectDs = SubstrateDatasource; export type SubqlProjectDsTemplate = | RuntimeDatasourceTemplate | CustomDatasourceTemplate; export type SubqlProjectBlockFilter = SubstrateBlockFilter & CronFilter; export type SubqueryProject = BaseSubqueryProject< SubstrateProjectDs, SubqlProjectDsTemplate, SubstrateNetworkConfig > & { chainTypes?: RegisteredTypes }; export async function createSubQueryProject( path: string, rawManifest: unknown, reader: Reader, root: string, // If project local then directory otherwise temp directory networkOverrides?: Partial, ): Promise { const project = await BaseSubqueryProject.create({ parseManifest: (raw) => parseSubstrateProjectManifest(raw).asV1_0_0, path, rawManifest, reader, root, nodeSemver: packageVersion, blockHandlerKind: SubstrateHandlerKind.Block, networkOverrides, isRuntimeDs, isCustomDs, }); project.chainTypes = project.network.chaintypes ? await getChainTypes(reader, root, project.network.chaintypes.file) : undefined; return project; } ================================================ FILE: packages/node/src/configure/configure.module.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import { DynamicModule, Global, Module } from '@nestjs/common'; import { NodeConfig, registerApp } from '@subql/node-core'; import { yargsOptions } from '../yargs'; import { createSubQueryProject, SubqueryProject } from './SubqueryProject'; const pjson = require('../../package.json'); @Global() @Module({}) export class ConfigureModule { static async getInstance(): Promise<{ nodeConfig: NodeConfig; project: SubqueryProject; }> { const { argv } = yargsOptions; return registerApp( argv, createSubQueryProject, yargsOptions.showHelp.bind(yargsOptions), pjson, ); } static async register(): Promise { const { nodeConfig, project } = await ConfigureModule.getInstance(); return this.registerManual(nodeConfig, project); } // Used for testing where args/yargs cannot be used static registerManual( nodeConfig: NodeConfig, project: SubqueryProject, ): DynamicModule { return { module: ConfigureModule, providers: [ { provide: NodeConfig, useValue: nodeConfig, }, { provide: 'ISubqueryProject', useValue: project, }, { provide: 'IProjectUpgradeService', useValue: project, }, { provide: 'Null', useValue: null, }, ], exports: [ NodeConfig, 'ISubqueryProject', 'IProjectUpgradeService', 'Null', ], }; } } ================================================ FILE: packages/node/src/indexer/api.service.spec.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import { EventEmitter2 } from '@nestjs/event-emitter'; import { ApiPromise, WsProvider } from '@polkadot/api'; import { ConnectionPoolService, ConnectionPoolStateManager, NodeConfig, } from '@subql/node-core'; import { GraphQLSchema } from 'graphql'; import { omit } from 'lodash'; import { SubqueryProject } from '../configure/SubqueryProject'; import { ApiService } from './api.service'; import { ApiPromiseConnection } from './apiPromise.connection'; jest.mock('@polkadot/api', () => { const ApiPromise = jest.fn(); (ApiPromise as any).create = jest.fn(() => ({ on: jest.fn(), runtimeChain: jest.fn(), runtimeVersion: { specName: jest.fn() }, genesisHash: '0xb0a8d493285c2df73290dfb7e61f870f17b41801197a149ca93654499ea3dafe', consts: jest.fn(), disconnect: jest.fn(), })); return { ApiPromise, WsProvider: jest.fn(() => ({ send: jest.fn() })) }; }); const testNetwork = { endpoint: ['ws://kusama.api.onfinality.io/public-ws'], types: { TestType: 'u32', }, typesAlias: { Alias: { TestType2: 'test' }, }, typesBundle: { spec: { '2312': { types: [{ minmax: [232, 122], types: { TestType3: 'test3' } }], }, }, chain: { mockchain: { types: [{ minmax: [232, 122], types: { TestType4: 'test4' } }], }, }, }, typesChain: { chain2: { TestType5: 'test' } }, typesSpec: { spec3: { TestType6: 'test' } }, }; const nodeConfig = new NodeConfig({ subquery: 'asdf', subqueryName: 'asdf', networkEndpoint: { 'https://polkadot.api.onfinality.io/public': {} }, dictionaryTimeout: 10, }); function testSubqueryProject(): SubqueryProject { return { id: 'test', root: './', network: { endpoint: testNetwork.endpoint, // genesisHash: // '0xb0a8d493285c2df73290dfb7e61f870f17b41801197a149ca93654499ea3dafe', chainId: '0xb0a8d493285c2df73290dfb7e61f870f17b41801197a149ca93654499ea3dafe', }, dataSources: [], schema: new GraphQLSchema({}), templates: [], chainTypes: { types: testNetwork.types, typesAlias: testNetwork.typesAlias, typesBundle: testNetwork.typesBundle, typesChain: testNetwork.typesChain, typesSpec: testNetwork.typesSpec, }, } as unknown as SubqueryProject; } describe('ApiService', () => { let project: SubqueryProject; let apiService: ApiService; beforeEach(() => { project = testSubqueryProject(); }); afterEach(async () => { // Disconnect apis await apiService?.onApplicationShutdown(); }); it('read custom types from project manifest', async () => { const createSpy = jest.spyOn(ApiPromise, 'create'); apiService = await ApiService.init( project, new ConnectionPoolService( nodeConfig, new ConnectionPoolStateManager(), ), new EventEmitter2(), nodeConfig, ); const { version } = require('../../package.json'); expect(WsProvider).toHaveBeenCalledWith(testNetwork.endpoint[0], 2500, { 'User-Agent': `SubQuery-Node ${version}`, }); expect(createSpy).toHaveBeenCalledWith({ provider: expect.anything(), throwOnConnect: expect.anything(), noInitWarn: true, ...omit(testNetwork, ['endpoint']), }); }); it('throws if expected genesis hash doesnt match', async () => { // Now after manifest 1.0.0, will use chainId instead of genesisHash (project.network as any).chainId = '0x'; const nodeConfig: NodeConfig = new NodeConfig({ batchSize: 1, subquery: 'example', }); await expect( ApiService.init( project, new ConnectionPoolService( nodeConfig, new ConnectionPoolStateManager(), ), new EventEmitter2(), nodeConfig, ), ).rejects.toThrow(); }); }); ================================================ FILE: packages/node/src/indexer/api.service.test.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import { INestApplication } from '@nestjs/common'; import { EventEmitter2, EventEmitterModule } from '@nestjs/event-emitter'; import { Test } from '@nestjs/testing'; import { BlockHash, RuntimeVersion } from '@polkadot/types/interfaces'; import { ConnectionPoolService, ConnectionPoolStateManager, delay, NodeConfig, } from '@subql/node-core'; import { SubstrateBlock } from '@subql/types'; import { IEndpointConfig } from '@subql/types-core'; import { GraphQLSchema } from 'graphql'; import { SubqueryProject } from '../configure/SubqueryProject'; import { wrapBlock } from '../utils/substrate'; import { ApiService } from './api.service'; const WS_ENDPOINT = 'wss://kusama-rpc.polkadot.io'; const HTTP_ENDPOINT = 'https://kusama.api.onfinality.io/public'; const TEST_BLOCKHASH = '0x70070f6c1ad5b9ce3d0a09e94086e22b8d4f08a18491183de96614706bf59600'; // kusama #6721189 function testSubqueryProject( endpoint: Record, chainId: string, ): SubqueryProject { return { id: 'test', root: './', network: { endpoint, dictionary: `https://api.subquery.network/sq/subquery/dictionary-polkadot`, chainId: chainId, }, dataSources: [], schema: new GraphQLSchema({}), templates: [], chainTypes: { types: { TestType: 'u32', }, }, } as unknown as SubqueryProject; } jest.setTimeout(90000); describe('ApiService', () => { let app: INestApplication; afterEach(async () => { return app?.close(); }); const prepareApiService = async ( endpoint: string = WS_ENDPOINT, chainId = '0xb0a8d493285c2df73290dfb7e61f870f17b41801197a149ca93654499ea3dafe', ): Promise => { const module = await Test.createTestingModule({ providers: [ ConnectionPoolStateManager, ConnectionPoolService, { provide: 'ISubqueryProject', useFactory: () => testSubqueryProject({ [endpoint]: {} }, chainId), }, { provide: NodeConfig, useFactory: () => ({}), }, EventEmitter2, { provide: ApiService, useFactory: ApiService.init, inject: [ 'ISubqueryProject', ConnectionPoolService, EventEmitter2, NodeConfig, ], }, ], imports: [EventEmitterModule.forRoot()], }).compile(); app = module.createNestApplication(); await app.init(); return app.get(ApiService); }; it('can instantiate api', async () => { const apiService = await prepareApiService(); const api = apiService.api; const apiAt = await api.at(TEST_BLOCKHASH); expect(api.registry.getDefinition('TestType')).toEqual('u32'); // workaround for ending the test immediately (before return of subscribeRuntimeVersion) // will cause an unhandled promise rejection and affect the result of next test. await delay(0.5); }); it('api query is locked at specified block', async () => { const apiService = await prepareApiService(); const api = apiService.api; const blockhash = await api.rpc.chain.getBlockHash(2); const validators = await api.query.session.validators.at(blockhash); const block = await api.rpc.chain.getBlock(blockhash); const mockBlock = wrapBlock(block, [], 1) as unknown as SubstrateBlock; const runtimeVersion = { specVersion: 1 } as unknown as RuntimeVersion; const patchedApi = await apiService.getPatchedApi( mockBlock.block.header, runtimeVersion, ); const [patchedValidators, currentValidators] = await Promise.all([ patchedApi.query.session.validators(), api.query.session.validators(), ]); expect(validators.toJSON()).toMatchObject( patchedValidators.toJSON() as any, ); expect(patchedValidators).not.toMatchObject(currentValidators); }); it('api query input is double map', async () => { const apiService = await prepareApiService(); const api = apiService.api; const blockhash = await api.rpc.chain.getBlockHash(6721189); const block = await api.rpc.chain.getBlock(blockhash); const mockBlock = wrapBlock(block, [], 13) as unknown as SubstrateBlock; const runtimeVersion = { specVersion: 13 } as unknown as RuntimeVersion; const patchedApi = await apiService.getPatchedApi( mockBlock.block.header, runtimeVersion, ); const apiResults = await api.query.staking.erasStakers.at( blockhash, 2038, `DMkKL7AZw9TkNw2NaBdocmFRGUG8r8T4kdGGcB13fv2LARy`, ); const patchedResult = await patchedApi.query.staking.erasStakers( 2038, `DMkKL7AZw9TkNw2NaBdocmFRGUG8r8T4kdGGcB13fv2LARy`, ); expect(apiResults).toEqual(patchedResult); await delay(0.5); }); it('apiAt could fetch previous block info', async () => { const apiService = await prepareApiService( 'wss://rpc.polkadot.io', '0x91b171bb158e2d3848fa23a9f1c25182fb8e20313b2c1eb49219da7a70ce90c3', ); const api = apiService.api; const blockhash = await api.rpc.chain.getBlockHash(6721195); const block = await api.rpc.chain.getBlock(blockhash); const mockBlock = wrapBlock(block, [], 9090) as unknown as SubstrateBlock; const runtimeVersion = { specVersion: 9090 } as unknown as RuntimeVersion; // step 1, get early block, original polkadot api query result const earlyBlockhash = await api.rpc.chain.getBlockHash(5661443); const apiResults = await api.rpc.state.getRuntimeVersion(earlyBlockhash); // step 2, api get patched result with block height const patchedApi = await apiService.getPatchedApi( mockBlock.block.header, runtimeVersion, ); const patchedResult = await patchedApi.rpc.state.getRuntimeVersion(earlyBlockhash); expect(apiResults).toEqual(patchedResult); // patchedApi without input blockHash, will return runtimeVersion at 6721195 const patchedResult2 = await patchedApi.rpc.state.getRuntimeVersion(); expect(apiResults).not.toEqual(patchedResult2); // To be same as runtimeVersion at 6721195 expect(patchedResult2.specVersion.toNumber()).toEqual(9090); await delay(0.5); }); it('apiAt will throw when fetch future block info', async () => { const apiService = await prepareApiService( 'wss://rpc.polkadot.io', '0x91b171bb158e2d3848fa23a9f1c25182fb8e20313b2c1eb49219da7a70ce90c3', ); const api = apiService.api; const blockhash = await api.rpc.chain.getBlockHash(5661443); const block = await api.rpc.chain.getBlock(blockhash); const mockBlock = wrapBlock(block, [], 9050) as unknown as SubstrateBlock; const runtimeVersion = { specVersion: 9050 } as unknown as RuntimeVersion; // step 1, get future block, original polkadot api query result const futureBlockhash = await api.rpc.chain.getBlockHash(6721195); // step 2, api get patched result with block height const patchedApi = await apiService.getPatchedApi( mockBlock.block.header, runtimeVersion, ); await expect( patchedApi.rpc.state.getRuntimeVersion(futureBlockhash), ).rejects.toThrow( 'input block hash 0x509f1b7627970a326a840e3c32be75bb568cf64b92b007611b4216069fe0d9a7 ahead of current block 5661443 is not supported', ); }); // const change in new metadata, need to find another test example it.skip('api consts is swapped to the specified block', async () => { const apiService = await prepareApiService(); const api = apiService.api; // upgrade at 4401242 that maxNominatorRewardedPerValidator changed from 256 to 128 let blockhash: BlockHash; const currentMaxNRPV = Number( api.consts.staking.maxNominatorRewardedPerValidator, ); if (currentMaxNRPV === 128) { blockhash = await api.rpc.chain.getBlockHash(4401242); } else { blockhash = await api.rpc.chain.getBlockHash(4401243); } const block = await api.rpc.chain.getBlock(blockhash); const mockBlock = wrapBlock(block, [], 28) as unknown as SubstrateBlock; const runtimeVersion = { specVersion: 28 } as unknown as RuntimeVersion; const patchedApi = await apiService.getPatchedApi( mockBlock.block.header, runtimeVersion, ); expect( Number(patchedApi.consts.staking.maxNominatorRewardedPerValidator), ).not.toEqual(currentMaxNRPV); }); // it('.tx.*.*, .derive.*.* are removed', async () => { // const apiService = await prepareApiService(); // const api = apiService.api; // const multiResults = await Promise.all([ // await api.query.system.account.at(TEST_BLOCKHASH, account1), // await api.query.system.account.at(TEST_BLOCKHASH, account2), // ]); // const patchedApi = await apiService.getPatchedApi( // TEST_BLOCKHASH, // TEST_BLOCKNUMBER, // ); // // eslint-disable-next-line @typescript-eslint/promise-function-async // const [patchedMultiResults, currentMulti] = await Promise.all([ // patchedApi.query.system.account.multi([account1, account2]), // api.query.system.account.multi([account1, account2]), // ]); // expect(patchedMultiResults.map((r) => r.toJSON())).toEqual( // multiResults.map((r) => r.toJSON()), // ); // expect(patchedMultiResults.map((r) => r.toJSON())).not.toEqual( // currentMulti.map((r) => r.toJSON()), // ); // }); // // it.skip('xxx.xxx.multi with input parameter is a double map', async () => { // const apiService = await prepareApiService(); // const api = apiService.api; // const patchedApi = await apiService.getPatchedApi( // TEST_BLOCKHASH, // TEST_BLOCKNUMBER, // ); // const multiResults = await Promise.all([ // await api.query.staking.erasStakers.at( // TEST_BLOCKHASH, // 2038, // `DMkKL7AZw9TkNw2NaBdocmFRGUG8r8T4kdGGcB13fv2LARy`, // ), // await api.query.staking.erasStakers.at( // TEST_BLOCKHASH, // 2038, // `HAGcVQikZmEEgBBaChwjTVdwdA53Qopg2AYUtqw738C5kUq`, // ), // ]); // const patchedResult = await patchedApi.query.staking.erasStakers.multi([ // [2038, `DMkKL7AZw9TkNw2NaBdocmFRGUG8r8T4kdGGcB13fv2LARy`], // [2038, `HAGcVQikZmEEgBBaChwjTVdwdA53Qopg2AYUtqw738C5kUq`], // ]); // expect(multiResults).toEqual(patchedResult); // }); // // it('api.queryMulti', async () => { // const account = 'E7ncQKp4xayUoUdpraxBjT7NzLoayLJA4TuPcKKboBkJ5GH'; // const apiService = await prepareApiService(); // const api = apiService.api; // const patchedApi = await apiService.getPatchedApi( // TEST_BLOCKHASH, // TEST_BLOCKNUMBER, // ); // // const multiResults = await Promise.all([ // api.query.timestamp.now.at(TEST_BLOCKHASH), // await api.query.session.validators.at(TEST_BLOCKHASH), // await api.query.system.account.at(TEST_BLOCKHASH, account), // await api.query.staking.erasStakers.at( // TEST_BLOCKHASH, // 2038, // `HAGcVQikZmEEgBBaChwjTVdwdA53Qopg2AYUtqw738C5kUq`, // ), // ]); // // const patchedApiResults = await patchedApi.queryMulti([ // patchedApi.query.timestamp.now, // not in array // [patchedApi.query.session.validators], // zero arg // [patchedApi.query.system.account, account], //one arg // [ // patchedApi.query.staking.erasStakers, // [2038, `HAGcVQikZmEEgBBaChwjTVdwdA53Qopg2AYUtqw738C5kUq`], // ], // arg in array // ]); // // expect(multiResults.map((r) => r.toJSON())).toEqual( // patchedApiResults.map((r) => r.toJSON()), // ); // }); // // it.skip('api.rx.queryMulti is not supported', async () => { // const apiService = await prepareApiService(); // const api = apiService.api; // const patchedApi = await apiService.getPatchedApi( // TEST_BLOCKHASH, // TEST_BLOCKNUMBER, // ); // expect(() => // (patchedApi.rx as any).queryMulti( // [api.query.timestamp.now], // [api.query.session.validators], // ), // ).toThrow(/is not supported/); // }); // // it('support .entries', async () => { // const apiService = await prepareApiService(); // const api = apiService.api; // const patchedApi = await apiService.getPatchedApi( // TEST_BLOCKHASH, // TEST_BLOCKNUMBER, // ); // const patchedResult = await patchedApi.query.staking.erasStakers.entries( // 2038, // ); // const apiAt = await api.at(TEST_BLOCKHASH); // const result = await apiAt.query.staking.erasStakers.entries(2038); // expect(patchedResult).toEqual(result); // }); // // it('support historic api rpc', async () => { // const apiService = await prepareApiService(); // const api = apiService.api; // // const blockhash = await api.rpc.chain.getBlockHash(4401242); // const patchedApi = await apiService.getPatchedApi(blockhash, 4401242); // // const b1 = await patchedApi.rpc.chain.getBlock(); // const apiBlock = await api.rpc.chain.getBlock(blockhash); // const b2 = await patchedApi.rpc.chain.getBlock('0x12312314'); // // expect(b1.block.hash.toString()).toEqual(blockhash.toString()); // expect(apiBlock.block.hash.toString()).toEqual(blockhash.toString()); // expect(b2.block.hash.toString()).toEqual(blockhash.toString()); // expect(() => patchedApi.rpc.author.rotateKeys()).toThrow( // /is not supported/, // ); // }); // // it('successful set block hash when continuous call api.xxx.xxx.at ', async () => { // const apiService = await prepareApiService(); // const api = apiService.api; // // const blockhash1 = await api.rpc.chain.getBlockHash(1378036); // let patchedApi = await apiService.getPatchedApi(blockhash1, 1378036); // const validators1 = await patchedApi.query.session.validators(); // // const blockhash2 = await api.rpc.chain.getBlockHash(1385137); // patchedApi = await apiService.getPatchedApi(blockhash2, 1385137); // const validators2 = await patchedApi.query.session.validators(); // // prettier-ignore // const expectedValidators1= ['FiHWU9AjN7z2no8zyiVEXtiTE46izxDgEcF1KM4r2r1GK59', 'EQBwtmKWCyRrQ8yGWg7LkB8p7hpEKXZz4qUg9WR8hZmieCM', 'EviBmmkq5o5ak2jUo71SPuDEdwGTr8Yz8U5tXBgF6fy8kKV', 'EfK27sX89DpagD3TCF4hF4rGZ1CnCGtYZvo94HZLU3GQuMj', 'Feu9bCUFaYSbkeqSY485kJjUoizp9CG4z3iSnGMwTqWSLeH', 'GTzRQPzkcuynHgkEHhsPBFpKdh4sAacVRsnd8vYfPpTMeEY', 'DaCSCEQBRmMaBLRQQ5y7swdtfRzjcsewVgCCmngeigwLiax', 'GRzsaGxLApkBfsUSCHKLnxhe4QECX4E2kQ5LuV4qqcijN2B', 'GCiTn1UJQT9TE5iamqoKweVoWGRZr9DF8uKXL4cG98fXczf', 'D948vxMSA6u7G5gqPGQdAUDMJbiR7wgqZ1La8XeBiXr9FTF', 'FLpAi7Zi4AB1JqJHWMrub4Umj4X73mZ5dAWE7Q6uS5e82pE', 'FUfXiFsaoWbUeaWiWBDizP7VbTSLxMirbJEpLAk1g6YueJp', 'Few2tfYD3wfyQXPCVkiqK8UGfuj5FK6ecadwfAmJQHBtASX', 'EGZEgucx8vTCSak5uBwwkPkZ7FiYCWYmhpMjWFupdMAq2BN', 'FD3A8DXs16wGvcoi9stjpwz2pmxXFymTkVyVM4Tq5z6LWCK', 'EdEQVcrr4pvzDLdb5xFkncKYhCE6uyuE1eKRTqg4PDvBgMa', 'DKUQiUWNPGvGYrgaxWqduJVRqWUYXUeKprX9EJENhxYvVyS', 'Dg5QS2TKCMQbbZau7acRXHPN4xQxqqase8awmzLXXgmXb7w', 'FtqCc5yLcLc1FkLyftyNuCtYFCudo3unwwPQLzCbnWppjoc', 'FXezGfeLvze1DWUwwEc8MczpLSMnZrSDrcA7Ghyc84NaXGt', 'FAtJupteW5urNYVQvUcLaw2X9xtdwjumK2gvJpuBnAwFHvq', 'FDDy3cQa7JXiChYU2xq1B2WUUJBpZpZ51qn2tiN1DqDMEpS', 'DrQHiQu5VkaRuv1H3iELXVqsvD3SV3E8xNjJqXUgECSg23R', 'Fsspzse4QY1KqagdyrVqDt7cmVBr3HSVsfJ38WKgxsLVaXo', 'Ed6JFR7JmeGtmrubAbXtJRjq9FPWhGRWMdmYnLRcsqaabT8', 'Gc6YgfbTJ6pYXcwib6mk3KoiwncLm4dfdcN3nwFjvfi4Agd', 'Fgqjkry96qFLpRqPZstNzgaqKXiVyrpzTqD55neMdW8PK6g', 'Gth5jQA6v9EFbpqSPgXcsvpGSrbTdWwmBADnqa36ptjs5m5', 'EuJcihtEgC121KMSa2TscWHmTF3ecJzzgHeNnQwLp4tBReG', 'JJ2VvJMZxxW2pst7z6zxrD4VVPhH6YtemYsLeKWeQ9MKX3n', 'GqGHrVZ3h2LznE2snJZ6emccobBKpgx5pmumTApDNcPFuPr', 'ESNZ8Eg46ByUYoAhr8MPbGpGF82pgmmjE3uVVepPCnJC61r', 'EaWWcRin5KwuXYFZA7ANuMCydQHjM5MofStJGusASGeXrrs', 'EMa2d6yYb3CPxyArDCzsMfngnDKUbRL6QdogfYAPKZmmN1E', 'J4hAvZoHCviZSoPHoSwLida8cEkZR1NXJcGrcfx9saHTk7D', 'Dojkd9b69TqwZ9W7BJuUomD6N59WBZ39G4sts69QDYJxKjW', 'Dksma151w4n2LRADiR2aYbdhKff47QQ6cTmBo9PpfJUb7cd', 'HWFQjF7phgRTPPjFFD2bHG9aUsEbM1p4Zwj5MjpL6iu66wH', 'Gt6HqWBhdu4Sy1u8ASTbS1qf2Ac5gwdegwr8tWN8saMxPt5', 'FAp5gVpwhwdmnJ1Ycet9z6Uva5tnfyCfA3AaY7WGi7u3DU4', 'Etij9aH36W1NjjWbR7wB5j41CmfpqAx8D4V4HCJhUydSH9Y', 'Cwr82cUKvfgnQSnLeN84CmtNaUGjYBD2qaBjsTxG43ZNh2M', 'FJaSzBUAJ1Nwa1u5TbKAFZG5MBtcUouTixdP7hAkmce2SDS', 'F8PTaGuZQo5fgRBFuhNnhd5euFiR3KLQNMVhYD5BduPKpHr', 'H9R6HgnZKtrcfBJP2M6WCvLJvp72Q96eURbCxmj6KCFVWjh', 'JKjFSGnsXeqhhPgvBmKb6vUnrTZHu17eydEDnpcorCnZXLG', 'EY35xeDhXibMDS5GmdHM2UzpvT4VoV9fGXDy3Muq6cyLPja', 'G7Ur4BnMSfP2qE7ruSob5gwGQ5nzkGWu7Yqh14FcMqnDtgB', 'EJGDDXSMXhwnJMrDs2KjMaznMtms9iFrYNhRL3shkMi9xLt', 'DXrJrPLLBHuapmYJ6tfuUStKubhykWmpgLckJpgFgjp2JvV', 'GCNHHRBtpDcgADCaRPMNNk52JiitGrcv3DMQxwE6owXAfbt', 'DiCVHECatzBxCKZeCmQhvqbAo9KK6CHubAWtQF85N3YbKFW', 'JECeyN45Ycx5t1M1hj2pBbsEZpdeGzDsYA1Wrt2Tdte2wV7', 'D8xUmqpe2aJd2QEPpG4pN3xZvboeQ21wwPhbNRCixrLq8Sj', 'HqZG9NMeeHLuHq4v3JmwVkHvGoEGAnrnNfYSvd2VYADNi7Z', 'FSpw3yUXP6NUHpkCcYhoeihK7ni5XugwDLSRpPaypyLGTGr', 'Cdaq3iUobZLYD2d8oqRQf1VKuRo6H64KsMBgJyxap4ZnARX', 'EtgM5E6pecndYpKCLkfYeRfKSmVxT1mVvaxceJFnhuKqTpG', 'Ff9DYio1TgYTyDU9z8Howt9pXCnuUPmsCY1ijfLBxSsJahj', 'H6bJZpE7PTFZgkLWGbeP3D1PqPGsFGqYAArFYa3ksCskmbt', 'DzmvnHyHyPN2kBHYQpXmrrUvV8KNzDgTPE2Ri2cjDuXhhLt', 'J6RoE9MSpnZhX7hniJAJjBCcTqpr49SNhLvaVeJgFd69TJZ', 'J6xn7Mr8pfed6gvvRPZ8HEEb89RCwheTBtxymg9Xw36hUUS', 'EdUs96fjEhyaTVxZsFo3fxEABLSpdopBFuhE7FFexCUyDv6', 'HvdGhdYcsJcSVBYnUEtHGpzV5A4XunjYWi8HAK8bGLvXdAb', 'FSfBJoCU9sRhCYWwQ55iBNGU5L8eu56iGnYGK9zizHxu8dY', 'GPdebankLfiSGaEPQWJBVULEmX2VpNdnyqsa1uiFJGDhTdT', 'Fk3yTFztZdZa4a7yBpisz9ceMyjgYLtZ9CKSCfFNVhoW2ZC', 'DokiayXWoMvotzchNdLSH4P4Fe7EvMESZvZL4Fn3NekoFtf', 'GfYXsuFn8MVensbKc6gKjPpxXMNh1LzcrBn4BfhNMgK1zKH', 'DuRV4MSm54UoX3MpFe3P7rxjBFLfnKRThxG66s4n3yF8qbJ', 'HhTownCNpkSbjLmtG6KdMhh7FJ2SLXxZcGXhHHeqpbchqcK', 'HyTJYoYwA8GGgDH2XVnUhsPgMq7nnnE4Qq2BdwmpdHNzSdo', 'GFwtzkxkTCFmXhVARYifwBK5D1JgCUmKynWhnv1CZgm9JNS', 'H9bhxgaMbND1u7TXxmMpcQCTiLfQtGmdmwAyKkRnKsndSXa', 'Fk6p456PTU6Sju2b83Cy8rU3NGFsXmWk9BrcqaMqhWW1jWf', 'DKinge6g7FNNj3hJZJUze6GByxkLR7ipCqrnuSQKGRMg37G', 'EUwcW86EFGDoDfUP2UJYuBwhCWC7cW9SdFH9cPh6UPBvBHj', 'FcjmeNzPk3vgdENm1rHeiMCxFK96beUoi2kb59FmCoZtkGF', 'F2GF2vuTCCmx8PnUNpWHTd5hTzjdbufa2uxdq2uT7PC5s9k', 'J1aHBD7YQ3xnSwgFJNokjsEo7NjLTf36ZEHD2LTpeo7KAq8', 'HJ1dGPxVr13KHGiCTGQfZjZMKGc8J52CsHEjcEXNMDyeGxf', 'FagAVsTYT8QghxypUtLcfnmnnhPhPpf854UNuptpQKuNndK', 'CmfwTdJ1F7Qd2HLAQ6A8FdNtz9hKvTMr2FkWtBQR1vECYjo', 'GbpLB9AZwVBBfecbMoTv3HCVb6irwN6y5YeA7uDNoUuRFrL', 'D3JqthKZjAEge84RQ3dheuQmaX2nVhk9A3sHY1rGNbStiFg', 'DEFQigjrErCANqTMiTRuy7BB5L46q9C36Bxqe41GV1yR6vA', 'F7BeW4g5ViG8xGJQAzguGPxiX9QNdoPNc3YqF1bV8d9XkVV', 'DGC4rANssfdpry7FQFznHo2b3QbDHyQZM58esJU6RskB41y', 'HvjQwyG8NDFSD3ZP7VTbfBXHw4mZZd7LRMTcaj9TdfLynzu', 'Faa8iXWy2wxo7ryLEhGCNeb55d8rnVy9SN25NiCmmqP6QMV', 'FwPTgWjafLgtxoRHK7pkUc2NJ9YzD7wHeCny2fMk41T9jKW', 'ErVvRnhXrJS7W9rTtnDECpZTFyLACtDcXEPtzEyYw4b8zcg', 'GSWsxFWwvfpppd4q5iBa3fiBp3twEGvtYZFWNRVF17And24', 'HHARzd4icVZULpMVEGZRiLhjfb3iDDohg1bdHRBusrMUvfd', 'G9vLBYmeiQcD8t53djad6sH2MALaeJy9zaEUyknEVma9sa6', 'HZvvFHgPdhDr6DHN43xT1sP5fDyzLDFv5t5xwmXBrm6dusm', 'ESaTdKYYtRYhJbYjMzgKauNyZHbaNzx2vknC9eioqKusWSt', 'FSETB7JeTuTsJBYzUcKBtHXBYtBft3pZ87FUxP2GaY4acFh', 'GqomGHs3CpaoG7kemv9hb6LCaBSazXMPaaCyDrP6CxRrgcF', 'DDkGq46ftxusKM4n4jfEr7MBW1DPGuVQDeExMFQbRtnsenD', 'F8DXBsUQrvVvL9AvkEqxykmy1AWcBcn2CqjG3nyzYRFVJeS', 'G7eJUS1A7CdcRb2Y3zEDvfAJrM1QtacgG6mPD1RsPTJXxPQ', 'Db2P54HPMkR8kqbP5RfWuXRFKhZ8NLQ77aT7VBZYfpKqTGP', 'EdWNepHg6UUyqK433qDpBjJ4ZUmyvnoQPLDFs69dExG1Dii', 'FzBBpxixSuZkeXxXeiUbvFYxcd3JAP5BEAcgDuhRudJTwmZ', 'Eg2z2dcScFf4foDN4Gxn6JoJ7JeDN1U7m49jNssUZMLtNrD', 'HeCK315sYXruJvZKB5uXtEBnpWwYHFaKfNNZ54G76Qr7Nkn', 'HshTdrZiSJntTRh5oNytD2QuT38VDJHoGQmfcrtrZbViSGL', 'Foc4anJqDfTMY3CvpCZzK9kUSudwc2oUTJ19K1E3JYFKy9j', 'FyRaMYvPqpNGq6PFGCcUWcJJWKgEz29ZFbdsnoNAczC2wJZ', 'CoqysGbay3t3Q7hXgEmGJJquhYYpo8PqLwvW1WsUwR7KvXm', 'GcgPeEtLketwNDVVdV2jEnaTU5RMdGQdpYqVshssBWy1txZ', 'H72hS8xLmSiSBqbBXHND2KbN8PAoevi52B685cbGki6T9nt', 'H4V7fZJPLiGtBvQfsadb7oGfV1StiXJTuca76Daa449rz27', 'J2HVhQBYpx5PkyxHYLsp555pvWzc2zvGfNUnTwgzvRqVGqm', 'GiBnzCGFofhmAvsUv9FUShUb8YJYYwWex3ThQNkbDDNprS6', 'HnnFkvtzrSrNpSUdG47E9ioBmDoDBnRUL6Lmy7GeqGcFc5c', 'GeYJhboY5bEc5WZFbrdxhEF9m6Y4NnbKzfCu1rBHxGWgviK', 'DGiLC1uvohfgHiirDtsr5HJRYXUFy9NdXj6YC6azcaRpvJZ', 'HP8qJ8P4u4W2QgsJ8jzVuSsjfFTT6orQomFD6eTRSGEbiTK', 'EoeAhrhJv2p6Sg5T67mxkLwrPnjKbH7iZSh8q1JTyvELvrR', 'FXCgfz7AzQA1fNaUqubSgXxGh77sjWVVkypgueWLmAcwv79', 'EXkCSUQ6Z1hKvGWMNkUDKrTMVHRduQHWc8G6vgo4NccUmhU', 'HAGcVQikZmEEgBBaChwjTVdwdA53Qopg2AYUtqw738C5kUq', 'GCsSfxv6h9mQ27s93ggBwzfguT6V61kmh8iadKSXAgQgKs5', 'E2ZKmzMzajqW838jXVSM5DyoUJUdEQddXNknEjoTwj2zBLj', 'GhyKZDoTghgvYqh1ensnGU1Vc1EY3Nwvhw5XdjTR8yfnEpV', 'GxujeV9rVRqsQHMbTiAiHATuZyrcHC68ZUJHtqS4LufuWLk', 'E7aXaaVBzDbhF8HevpcwDnWEu9mBRE6ai69JToi4fyz8c5P', 'DatW7XKJaJbfHLoVzVCHwAcwMySW9CRb6gFs9TpNNcCz9Mv', 'D8BfryaM5xN62UuKUpLK5zbZEUSBtA76yP9YddQTKXi9pkB', 'EtJ4HxHYEDvYWRJAdmV4hYpTbGMJCmEgnLC8zAf6u5ZyT7C', 'FtcERzFaCxB2ZR17PVeNxjAntfQ8a9KwS5i1bTYGWq15Yab', 'Gk6v5CXUy2cPMtVxXtN7ZUn7K5y7UFEm78xp98Uatjt2yuV', 'HqHeKZnc38rX2BJrmJiXfkqHUEUn56B9Nck6WgdiGeKUYBE', 'FwUst6h6JfHAK2tyhM9zCrKb1zSCgSe5kaoXZeqnVpbGGgt', 'CihSipv2H9mYBkRznedBZFxCNUrqvdmSH1Ptx5kSNRr3DEx', 'JKsMAG8Kpm9szen7Crx2FUrhzdwK9hAocA4X1mmQYYvRsrE', 'CpYNXnYC1mPPRSXMHvm9EUuhEqHjvj6kCN4kshqMdEpPYSF', 'CaSNtNAiKEsQiTcEU9DamgFeji9Hh63QFo91XrmftCTNBva', 'EKBtVYjZ6MMzRf334L1Zztf29kim8LrV5myftD3ABrmTHZd', 'DB2mp5nNhbFN86J9hxoAog8JALMhDXgwvWMxrRMLNUFMEY4', 'Dab4bfYTZRUDMWjYAUQuFbDreQ9mt7nULWu3Dw7jodbzVe9', 'EqWK9adqE7ZFBXAhTw5KXh6ZkMRKdxA555yHgj5tWQyPJYH', 'D5Xo7N2jginhYchuMNud2dYtby899koFcaRo2YWNmUquo5H', 'CsHw8cfzbnKdkCuUq24yuaPyJ1E5a55sNPqejJZ4h7CRtEs', 'JKcDN2BUrteeUZa5fxuTsPjpUZpNGE9NHVY1NUboHEQbmhN', 'CuCgiLpBEcfLEjwS8CBsEN4EWSvTF7vHeN6damkrv934kfZ', 'HEmqZS2Lw5nhGuddLjTm2KCcmsUddQXJM5bGVeA5GBWam6w', 'GS9UR4YmAib1NKWiQmxVpNytcriChSBPDZQyGJhYnunXPQ9', 'HPWceq92prqJVYnYfoZGzEwRGC5jCwGjArZcZzYAC7hXR9e', 'GKingZDLzrPimpMMCxWYT7ck8jXra2vvNkCUztUwyDT2Qet', 'Gh2cm56nMokKQ4frPx7r7UsXtimH6ckaXyKKogGn5dQ3yrD', 'Go5ov2WmFx2H9LfvaS3ec24TropY6Fgjcv56wBchyUv18a7', 'Fd9kKxogYUZLCoMz3uvjFTCkSGXRvgrKh7GEdbSK2yHd4oq', 'Cdhjt72TSezVDkUzdgyoSwXByfwQJjuXSYcDs5L8snyB8Yx', 'EzR9J3Afvash2tYCk8ZZwPYyq3zy92adVUXKcYjbYN46JWL', 'ELhnYFneiAP819s1t7Zmn4rs1tBbcrWVnkeGw4JYKdVp6jL', 'EicrAEbyauqktQpp4CdvsF2CQy3Ju7tGGMohj3h5sAPnKHL']; // // prettier-ignore // const expectedValidators2 = ['J2HVhQBYpx5PkyxHYLsp555pvWzc2zvGfNUnTwgzvRqVGqm', 'F8PTaGuZQo5fgRBFuhNnhd5euFiR3KLQNMVhYD5BduPKpHr', 'F7ia6uitDknF5HhGQnTPuBdqFM3nTqpMP8oeWgjU4gWiaVm', 'EafgFRX24PTgJAjGoaDuQLXQiLX4daSFQQttzGVticSD18o', 'F7BeW4g5ViG8xGJQAzguGPxiX9QNdoPNc3YqF1bV8d9XkVV', 'EqyCQvYn1cHBdzFVQHQeL1nHDcxHhjWR8V48KbDyHyuyCGV', 'HAGcVQikZmEEgBBaChwjTVdwdA53Qopg2AYUtqw738C5kUq', 'FAYyBS6arn3X4fvtdybaBUdw5zqVsv3PPwRXXXYRTzTGFDv', 'EZ7uBY7ZLohavWAugjTSUVVSABLfad77S6RQf4pDe3cV9q4', 'Faaf2qgwtaFum78U8TdEPnUd4u7HPk65cdaFj7KbEA6wi2Y', 'HA5jB52fFL1v4EoEHV4WgEiFZr7wGLiuBDZtSmnwKypvat7', 'EicrAEbyauqktQpp4CdvsF2CQy3Ju7tGGMohj3h5sAPnKHL', 'HWAGAxX2PAzNVg7w3ZyTprH5yvwbVwQ8rbWwuZxtQKbQupW', 'EXkCSUQ6Z1hKvGWMNkUDKrTMVHRduQHWc8G6vgo4NccUmhU', 'EdEQVcrr4pvzDLdb5xFkncKYhCE6uyuE1eKRTqg4PDvBgMa', 'DfiSM1qqP11ECaekbA64L2ENcsWEpGk8df8wf1LAfV2sBd4', 'E457XaKbj2yTB2URy8N4UuzmyuFRkcdxYs67UvSgVr7HyFb', 'FiBHHbxDiVysvn5YBV78YFVUUykZRfQYhjxymu8VXnTqNMr', 'DDkGq46ftxusKM4n4jfEr7MBW1DPGuVQDeExMFQbRtnsenD', 'H4V7fZJPLiGtBvQfsadb7oGfV1StiXJTuca76Daa449rz27', 'Hadx1N8xZq6tRtXWkm6s5madXTXqVhauDNmesZnpMYTufcv', 'Ed6JFR7JmeGtmrubAbXtJRjq9FPWhGRWMdmYnLRcsqaabT8', 'FpVmbKAqwoQaTBGwrTGsSu4nN1PCGY8XrQa4AaJVuzyVhh2', 'DimyMqRfrnqudRLVf5TxAM3T7X23PKvFDp85DDGabFKMQ2a', 'GhoRyTGK583sJec8aSiyyJCsP2PQXJ2RK7iPGUjLtuX8XCn', 'HeKaZXya7rPQq7h7KgKnb3jG7n7VBFPr7PFTFYd6ZQbZRiU', 'FXCgfz7AzQA1fNaUqubSgXxGh77sjWVVkypgueWLmAcwv79', 'DEFQigjrErCANqTMiTRuy7BB5L46q9C36Bxqe41GV1yR6vA', 'CoooBnE4hYaaQSKUDyCmZNdn8uE94rWa5ez3jrpFDE88vVA', 'GffdZaTf5oBcHVfx4VjnA6AMpHEBa3PiaBzTBUPkt24fUxp', 'HqGhgHg6YvnhaXSnaAUvyTDiR4FirB6Ssh2XNDedTzwCDv2', 'CinNnPhc4aGFQb7FWhUpnfwCNwXN3brcnCR1MkazkstcDJa', 'Fsspzse4QY1KqagdyrVqDt7cmVBr3HSVsfJ38WKgxsLVaXo', 'EoeAhrhJv2p6Sg5T67mxkLwrPnjKbH7iZSh8q1JTyvELvrR', 'GfXJERNZeUXh75pdFwksC9y42sftVti9K2AWntarJeM3gM4', 'Dg5QS2TKCMQbbZau7acRXHPN4xQxqqase8awmzLXXgmXb7w', 'Hqa9LGT3qF96agPYYbdfmUzh5P94MX9sqfF1WN4JnfRRVir', 'Gt6HqWBhdu4Sy1u8ASTbS1qf2Ac5gwdegwr8tWN8saMxPt5', 'Eyvj7oeaHyoqJbNPKPi3zjBks2bNoju3X29xJhsxD8d6GeQ', 'DGiLC1uvohfgHiirDtsr5HJRYXUFy9NdXj6YC6azcaRpvJZ', 'JLKcPk652UTtQfyrk7keyU6vqAEj5JXzDAvQdPxB1DJTnZ3', 'EPehck28w8fjRZCqZ3VZA7XpwGeipuVU4ETSwv7GkF5BdcG', 'CmfwTdJ1F7Qd2HLAQ6A8FdNtz9hKvTMr2FkWtBQR1vECYjo', 'F7Wa1su7NRSr6LWuhPWdXcQALDyzm8Vmev7WtV5jVPtJELs', 'HRMhY2CtVMp2yVSieKvq8Y8FHAhRKrGGMd6MoQe3iN6uJ2D', 'GiBnzCGFofhmAvsUv9FUShUb8YJYYwWex3ThQNkbDDNprS6', 'GC8hwHbQ4TdbYJJPDS96G7Uj9bivnW5z56UEkqujjwhQPp5', 'FmQHyUXoRkGTRySqVUy7NBAVhkKFvTtRtkzVTjZgBzbDzum', 'HgWWnAXFGikrPVD2FrZ6CRk7KnYdVDn7zVyye8hqFPMc5g1', 'FUfXiFsaoWbUeaWiWBDizP7VbTSLxMirbJEpLAk1g6YueJp', 'G7Ur4BnMSfP2qE7ruSob5gwGQ5nzkGWu7Yqh14FcMqnDtgB', 'FrL6qzw8bAFS6MTpbwLzEuAU9SCnALD5qMj9ZYFyt6zk5o4', 'DaCSCEQBRmMaBLRQQ5y7swdtfRzjcsewVgCCmngeigwLiax', 'J1aHBD7YQ3xnSwgFJNokjsEo7NjLTf36ZEHD2LTpeo7KAq8', 'HvjQwyG8NDFSD3ZP7VTbfBXHw4mZZd7LRMTcaj9TdfLynzu', 'D5NGokAYvFZmvFynjApN2DG4r1H1cQ9pyum7KC3KmtDYLkn', 'DFaiE6wT1caQ9u7eLkuphVQqbywWKzYjm5vRsMgk43GSb84', 'DwZBcfHnJtRmR7P23VgHQEzaeGPXQvH8jDvuob2qiyTHJMM', 'EibDgpnEGwqvWDcPUq7EThEB6kPEnqKuZog48E5jga8uWe8', 'GcqKn3HHodwcFc3Pg3Evcbc43m7qJNMiMv744e5WMSS7TGn', 'DSpbbk6HKKyS78c4KDLSxCetqbwnsemv2iocVXwNe2FAvWC', 'HJ1dGPxVr13KHGiCTGQfZjZMKGc8J52CsHEjcEXNMDyeGxf', 'DB2mp5nNhbFN86J9hxoAog8JALMhDXgwvWMxrRMLNUFMEY4', 'HWpid7FWbuA7GxN1yykrYqSe6cY3ybUaX3qErCoiiFDSqSh', 'JHTXKwYBhRZKWPW3nbtwtfE8dfRDYCS65cJXueMhg11k4cs', 'FtqCc5yLcLc1FkLyftyNuCtYFCudo3unwwPQLzCbnWppjoc', 'EzR9J3Afvash2tYCk8ZZwPYyq3zy92adVUXKcYjbYN46JWL', 'DGC4rANssfdpry7FQFznHo2b3QbDHyQZM58esJU6RskB41y', 'DbuPiksDXhFFEWgjsEghUypTJjQKyULiNESYji3Gaose2NV', 'HP8qJ8P4u4W2QgsJ8jzVuSsjfFTT6orQomFD6eTRSGEbiTK', 'ESaTdKYYtRYhJbYjMzgKauNyZHbaNzx2vknC9eioqKusWSt', 'DriCrAgdVV57NeQm5bWn5KQpVndVnXnm55BjRpe6qzZ5ktJ', 'HTrpbES27bqMvCioQGHpmJbBzwji6V5DeuXUfB1gsZ5Vkh1', 'EUwcW86EFGDoDfUP2UJYuBwhCWC7cW9SdFH9cPh6UPBvBHj', 'GeYJhboY5bEc5WZFbrdxhEF9m6Y4NnbKzfCu1rBHxGWgviK', 'JDA8ByXeJcn2BfNabC6WbBJKEBwM4k7oBVenVgJdzL32RJc', 'FLpAi7Zi4AB1JqJHWMrub4Umj4X73mZ5dAWE7Q6uS5e82pE', 'CmD9vaMYoiKe7HiFnfkftwvhKbxN9bhyjcDrfFRGbifJEG8', 'EUoo6xidm7okewmbh89tUW3sqaDLYKAvTCCNYc8zh4nPU4s', 'F4xrhkWsW2PSqZBuBMVJGE3LQy7R2ZWo3J8d6KEsDznrDF8', 'F4LocUbsPrcC8xVap4wiTgDakzn3xFyXneuYDHRaHxnb6dH', 'H9bhxgaMbND1u7TXxmMpcQCTiLfQtGmdmwAyKkRnKsndSXa', 'ErVvRnhXrJS7W9rTtnDECpZTFyLACtDcXEPtzEyYw4b8zcg', 'J6RoE9MSpnZhX7hniJAJjBCcTqpr49SNhLvaVeJgFd69TJZ', 'Few2tfYD3wfyQXPCVkiqK8UGfuj5FK6ecadwfAmJQHBtASX', 'Etij9aH36W1NjjWbR7wB5j41CmfpqAx8D4V4HCJhUydSH9Y', 'Gc6YgfbTJ6pYXcwib6mk3KoiwncLm4dfdcN3nwFjvfi4Agd', 'DAT4gSgyMskggCmTQKfEM6hQgRy1NWdhtfMTAuPLsUAGUPy', 'HqFz5RBczgtKrHQGav7DFZwSwrDXxKjLWc95mMDidVdfpwC', 'GLiebiQp5f6G5vNcc7BgRE9T3hrZSYDwP6evERn3hEczdaM', 'G7mWyu1Pom5XreLHUzDEcvFp6WaMuLuo4QKxtDB9yJZnH69', 'FXezGfeLvze1DWUwwEc8MczpLSMnZrSDrcA7Ghyc84NaXGt', 'HnnFkvtzrSrNpSUdG47E9ioBmDoDBnRUL6Lmy7GeqGcFc5c', 'Gth5jQA6v9EFbpqSPgXcsvpGSrbTdWwmBADnqa36ptjs5m5', 'E2ZKmzMzajqW838jXVSM5DyoUJUdEQddXNknEjoTwj2zBLj', 'Eodfj4xjkw8ZFLLSS5RfP6vCMw8aM6qfM7BfeQMf6ivFWHy', 'GXaUd6gyCaEoBVzXnkLVGneCF3idnLNtNZs5RHTugb9dCpY', 'D948vxMSA6u7G5gqPGQdAUDMJbiR7wgqZ1La8XeBiXr9FTF', 'Fgqjkry96qFLpRqPZstNzgaqKXiVyrpzTqD55neMdW8PK6g', 'EfK27sX89DpagD3TCF4hF4rGZ1CnCGtYZvo94HZLU3GQuMj', 'DTLcUu92NoQw4gg6VmNgXeYQiNywDhfYMQBPYg2Y1W6AkJF', 'CrzGYAYYnguxoR5pGx4UbwLs2DkoxoLiLJd8kjZMQzDuq8r', 'E58yuhUAwWzhn2V4thF3VciAJU75eePPipMhxWZe9JKVVfq', 'JKjFSGnsXeqhhPgvBmKb6vUnrTZHu17eydEDnpcorCnZXLG', 'H6bJZpE7PTFZgkLWGbeP3D1PqPGsFGqYAArFYa3ksCskmbt', 'Fy2rsYCoowQBtuFXqLE65ehAY9T6KWcGiNCQAyPDCkfpm4s', 'FKJNhxaXraoh85DRvChSzoDKHMAk9cZYxoq5LQW7uqeAQMD', 'FBichC4g5HBmdWCu3ebdADWQbvjbN7KdodNKWBYpLFgxCcd', 'G7eJUS1A7CdcRb2Y3zEDvfAJrM1QtacgG6mPD1RsPTJXxPQ', 'G866nkBvVKUqTFwAukeLM7n6QH9JyJDUJ2EvGFzKdymzqc3', 'FAGzHVggwv1QRmkGjom1Foc24jzZS1CJGcWUzrGdW8FyXEm', 'FwPTgWjafLgtxoRHK7pkUc2NJ9YzD7wHeCny2fMk41T9jKW', 'GAfhRsNqB9hwEmRFPhMZCvicFJ1kVtRF3UChYyKHq612ZV9', 'FAp5gVpwhwdmnJ1Ycet9z6Uva5tnfyCfA3AaY7WGi7u3DU4', 'GU7kw1ZYDKchyzhrAQ3imiY7s4fsoeFCvgeaU5XkTi9ABuB', 'EGZEgucx8vTCSak5uBwwkPkZ7FiYCWYmhpMjWFupdMAq2BN', 'E8QEnkMMyWWrHPTbA7jo547SpkoGcE6yoTXHmrQeXY2sGnT', 'FAtJupteW5urNYVQvUcLaw2X9xtdwjumK2gvJpuBnAwFHvq', 'GTzRQPzkcuynHgkEHhsPBFpKdh4sAacVRsnd8vYfPpTMeEY', 'FX7rJbfiTFCqBuCWHLgR8SosDyZh842nv79mdQF4vxnZrhS', 'DrkY92Yq67zJ7T8XWN7SAXbnNDJhzkADutwhhhPyW3tQKTw', 'GfYXsuFn8MVensbKc6gKjPpxXMNh1LzcrBn4BfhNMgK1zKH', 'Fk6p456PTU6Sju2b83Cy8rU3NGFsXmWk9BrcqaMqhWW1jWf', 'FagAVsTYT8QghxypUtLcfnmnnhPhPpf854UNuptpQKuNndK', 'DokiayXWoMvotzchNdLSH4P4Fe7EvMESZvZL4Fn3NekoFtf', 'DTMCVLVqNj5L3kpuftg49bY9xozwhRyF52sEHdBySbpbPkt', 'FD3A8DXs16wGvcoi9stjpwz2pmxXFymTkVyVM4Tq5z6LWCK', 'EFjHdypk8xLf3ocDEFPaKFWVcfamH8mpvfUeXHvRWpSBk2M', 'Eo9RxTKq2WppUvRRycUmLFHJvHtBVoxURhDe78ZKmjoJfWN', 'Faa8iXWy2wxo7ryLEhGCNeb55d8rnVy9SN25NiCmmqP6QMV', 'CdEm1ErGKML3waXabLvn3NyqdAGXBQJVngLaM86YM5Yb9dr', 'Et5ne6GRrWZ178npoYdnG8RRU92gzqBiSRf4hTaU3Yonsf2', 'GbpLB9AZwVBBfecbMoTv3HCVb6irwN6y5YeA7uDNoUuRFrL', 'EyibGsAttxpNBkgjMxNTArskxkdEFFbwghYuuaZyvu9rmo2', 'H9R6HgnZKtrcfBJP2M6WCvLJvp72Q96eURbCxmj6KCFVWjh', 'HyTJYoYwA8GGgDH2XVnUhsPgMq7nnnE4Qq2BdwmpdHNzSdo', 'FSETB7JeTuTsJBYzUcKBtHXBYtBft3pZ87FUxP2GaY4acFh', 'Eo4boG437k7gFy75VqPrWP5gHSGi9Sm6CZzLFFsCGYaSPzM', 'HeeJfizAEvorbkinL4GfRUYpxUiFST3dpnUHrh9ga2Z8Cpm', 'D3JqthKZjAEge84RQ3dheuQmaX2nVhk9A3sHY1rGNbStiFg', 'FChhpqk6Er57sXMC71F2aQ7EsNBQZTe3wUGXfKEvLH7W8zE', 'F7Nnn8nQL3Bjxap8Ax1HDZcXdqXZxtqBgn5VXqx8bLhZh8N', 'EonK7NScfhd7ZRfgnLhm4cKRFJWK1z59zPximUZRg8VjHQj', 'FPRN9EfcCTswkRXfrkwoouep8uhVJRvMy1hnhB4Hb73biwK', 'FFdDXFK1VKG5QgjvqwxdVjo8hGrBveaBFfHnWyz1MAmLL82', 'FiHWU9AjN7z2no8zyiVEXtiTE46izxDgEcF1KM4r2r1GK59', 'F8DXBsUQrvVvL9AvkEqxykmy1AWcBcn2CqjG3nyzYRFVJeS', 'DrQHiQu5VkaRuv1H3iELXVqsvD3SV3E8xNjJqXUgECSg23R', 'GptHKfncW4Xwif6ohcZx6apt4B7jU7Pugvw1usQygP8WWQ7', 'FhmaBgRFjZYFUWJp91ZHUbuW2Dm32VH4BVhnRQJqfpMmEok', 'DiCVHECatzBxCKZeCmQhvqbAo9KK6CHubAWtQF85N3YbKFW', 'DKinge6g7FNNj3hJZJUze6GByxkLR7ipCqrnuSQKGRMg37G', 'GCiTn1UJQT9TE5iamqoKweVoWGRZr9DF8uKXL4cG98fXczf', 'EviBmmkq5o5ak2jUo71SPuDEdwGTr8Yz8U5tXBgF6fy8kKV', 'Cwr82cUKvfgnQSnLeN84CmtNaUGjYBD2qaBjsTxG43ZNh2M', 'GZ5xCKCC8JRpJSMgAoDJAFAuQV8gD9Xz2cJca4mR7oRhzL9', 'DbAdiLJQDFzLyaLsoFCzrpBLuaBXXqQKdpewUSxqiWJadmp', 'DKUQiUWNPGvGYrgaxWqduJVRqWUYXUeKprX9EJENhxYvVyS', 'F2GF2vuTCCmx8PnUNpWHTd5hTzjdbufa2uxdq2uT7PC5s9k', 'Cs1jHXYHxZyWKsGPvYY1BknhLdpNa1iXGja4Kn8hQZs7BsH']; // const vs1 = validators1.map((v) => v.toString()); // const vs2 = validators2.map((v) => v.toString()); // // expect(expectedValidators1).toEqual(vs1); // expect(expectedValidators2).toEqual(vs2); // }); // //need healthier endpoint it.skip('support http provider', async () => { const apiService = await prepareApiService(HTTP_ENDPOINT); const api = apiService.api; const blockhash = await api.rpc.chain.getBlockHash(1); const block = await api.rpc.chain.getBlock(blockhash); const mockBlock = wrapBlock(block, [], 1) as unknown as SubstrateBlock; const runtimeVersion = { specVersion: 1 } as unknown as RuntimeVersion; const patchedApi = await apiService.getPatchedApi( mockBlock.block.header, runtimeVersion, ); await expect(patchedApi.query.system.events()).resolves.toHaveLength(2); }); /* This test can be reenabled once https://github.com/polkadot-js/api/pull/4540 has been released and the api is updated */ it('can correctly call rpc methods that use block number', async () => { const apiService = await prepareApiService( 'wss://moonbeam-alpha.api.onfinality.io/public-ws', '0x91bc6e169807aaa54802737e1c504b2577d4fafedd5a02c10293b1cd60e39527', ); const api = apiService.api; const blockNumber = 1545235; const blockhash = await api.rpc.chain.getBlockHash(blockNumber); const block = await api.rpc.chain.getBlock(blockhash); const mockBlock = wrapBlock(block, [], 1103) as unknown as SubstrateBlock; const runtimeVersion = { specVersion: 1103 } as unknown as RuntimeVersion; const patchedApi = await apiService.getPatchedApi( mockBlock.block.header, runtimeVersion, ); /* If Block number not provided should be ignored and `blockNumber` above used */ const balance = await patchedApi.rpc.eth.getBalance( '0x59ce189fd40611162017deb88d826C3485f41e0D', ); expect(balance.toString()).toEqual('878428609000000000'); /* If Block number provided, but less than `blockNumber`, should use new Block number */ const balance2 = await patchedApi.rpc.eth.getBalance( '0x59ce189fd40611162017deb88d826C3485f41e0D', 1345235, ); expect(balance2.toString()).toEqual('4935166494000000000'); /* If Block number provided, but beyond than `blockNumber`, should throw error */ await expect( patchedApi.rpc.eth.getBalance( '0x59ce189fd40611162017deb88d826C3485f41e0D', 1645235, ), ).rejects.toThrow( 'input block 1645235 ahead of current block 1545235 is not supported', ); }); }); describe('Load chain type hasher', () => { let app: INestApplication; afterEach(async () => { return app?.close(); }); const prepareApiService = async ( endpoint = { 'wss://hyperbridge-paseo-rpc.blockops.network': {} }, chainId = '0x5388faf792c5232566d21493929b32c1f20a9c2b03e95615eefec2aa26d64b73', ): Promise => { const module = await Test.createTestingModule({ providers: [ ConnectionPoolStateManager, ConnectionPoolService, { provide: 'ISubqueryProject', useFactory: () => ({ id: 'test', root: './', network: { endpoint, chainId: chainId, }, dataSources: [], schema: new GraphQLSchema({}), templates: [], chainTypes: { typesBundle: { spec: { gargantua: { // @ts-ignore, we allow it to be string here hasher: 'keccakAsU8a', types: [{ minmax: [0, undefined], types: {} }], }, }, }, }, }), }, { provide: NodeConfig, useFactory: () => ({}), }, EventEmitter2, { provide: ApiService, useFactory: ApiService.init, inject: [ 'ISubqueryProject', ConnectionPoolService, EventEmitter2, NodeConfig, ], }, ], imports: [EventEmitterModule.forRoot()], }).compile(); app = module.createNestApplication(); await app.init(); return app.get(ApiService); }; it('should use new hasher function, types hasher string should be replaced with function', async () => { const apiService = await prepareApiService(); const api = apiService.api; expect(typeof (api as any)._options.typesBundle.spec.gargantua.hasher).toBe( 'function', ); }); }); ================================================ FILE: packages/node/src/indexer/api.service.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import assert from 'assert'; import { Inject, Injectable, OnApplicationShutdown } from '@nestjs/common'; import { EventEmitter2 } from '@nestjs/event-emitter'; import { ApiPromise } from '@polkadot/api'; import { ApiTypes, DecoratedRpcSection, RpcMethodResult, } from '@polkadot/api/types'; import { RuntimeVersion, Header } from '@polkadot/types/interfaces'; import { AnyFunction, DefinitionRpcExt, RegisteredTypes, } from '@polkadot/types/types'; import { OverrideBundleDefinition } from '@polkadot/types/types/registry'; import { IndexerEvent, getLogger, NodeConfig, profilerWrap, ConnectionPoolService, ApiService as BaseApiService, IBlock, MetadataMismatchError, exitWithError, } from '@subql/node-core'; import { SubstrateNetworkConfig } from '@subql/types'; import { IEndpointConfig } from '@subql/types-core'; import { SubstrateNodeConfig } from '../configure/NodeConfig'; import { SubqueryProject } from '../configure/SubqueryProject'; import { isOnlyEventHandlers } from '../utils/project'; import * as SubstrateUtil from '../utils/substrate'; import { ApiPromiseConnection, FetchFunc, GetFetchFunc, } from './apiPromise.connection'; import { ApiAt, BlockContent, LightBlockContent } from './types'; const NOT_SUPPORT = (name: string) => () => { throw new Error(`${name}() is not supported`); }; // https://github.com/polkadot-js/api/blob/12750bc83d8d7f01957896a80a7ba948ba3690b7/packages/rpc-provider/src/ws/index.ts#L43 const MAX_RECONNECT_ATTEMPTS = 5; const logger = getLogger('api'); // This is a temp fix for https://github.com/polkadot-js/api/issues/5871 function overrideConsoleWarn(): void { // Ensure its only run once if ((console as any).oldWarn) { return; } (console as any).oldWarn = console.warn; console.warn = function () { // eslint-disable-next-line prefer-rest-params const args = Array.from(arguments); if ( args.length > 0 && args[0].includes('Unable to map [u8; 32] to a lookup index') ) { return; } (console as any).oldWarn.apply(console, args); }; } async function dynamicImportHasher( methodName: string, ): Promise<(data: Uint8Array) => Uint8Array> { const module = await import('@polkadot/util-crypto'); const method = module[methodName as keyof typeof module]; if (method) { return method as (data: Uint8Array) => Uint8Array; } else { throw new Error( `Hasher Method ${methodName} not found in @polkadot/util-crypto`, ); } } async function updateChainTypesHasher( chainTypes: any, ): Promise { if (!chainTypes) { return undefined; } if (chainTypes.hasher && typeof chainTypes.hasher === 'string') { logger.info(`Set overall spec hasher to ${chainTypes.hasher}`); chainTypes.hasher = await dynamicImportHasher(chainTypes.hasher); } const typesBundleSpecs: Record | undefined = chainTypes.typesBundle?.spec; if (typesBundleSpecs) { for (const [key, spec] of Object.entries(typesBundleSpecs)) { if (spec.hasher && typeof spec.hasher === 'string') { logger.info(`Set spec ${key} hasher to ${spec.hasher}`); spec.hasher = await dynamicImportHasher(spec.hasher); } } } return chainTypes; } @Injectable() export class ApiService extends BaseApiService< ApiPromise, ApiAt, IBlock[] | IBlock[], ApiPromiseConnection, IEndpointConfig > implements OnApplicationShutdown { private _fetchBlocksFunction?: FetchFunc; private fetchBlocksBatches: GetFetchFunc = () => this.fetchBlocksFunction; private _currentBlockHash?: string; private _currentBlockNumber?: number; private nodeConfig: SubstrateNodeConfig; private constructor( @Inject('ISubqueryProject') private project: SubqueryProject, connectionPoolService: ConnectionPoolService, eventEmitter: EventEmitter2, nodeConfig: NodeConfig, ) { super(connectionPoolService, eventEmitter); this.nodeConfig = new SubstrateNodeConfig(nodeConfig); this.updateBlockFetching(); } private get fetchBlocksFunction(): FetchFunc { assert(this._fetchBlocksFunction, 'fetchBlocksFunction not initialized'); return this._fetchBlocksFunction; } private get currentBlockHash(): string { assert(this._currentBlockHash, 'currentBlockHash not initialized'); return this._currentBlockHash; } private set currentBlockHash(value: string) { this._currentBlockHash = value; } private get currentBlockNumber(): number { assert(this._currentBlockNumber, 'currentBlockNumber not initialized'); return this._currentBlockNumber; } private set currentBlockNumber(value: number) { this._currentBlockNumber = value; } async onApplicationShutdown(): Promise { await this.connectionPoolService.onApplicationShutdown(); } static async init( project: SubqueryProject, connectionPoolService: ConnectionPoolService, eventEmitter: EventEmitter2, nodeConfig: NodeConfig, ): Promise { const apiService = new ApiService( project, connectionPoolService, eventEmitter, nodeConfig, ); overrideConsoleWarn(); let chainTypes: RegisteredTypes | undefined; let network: SubstrateNetworkConfig; try { chainTypes = await updateChainTypesHasher(project.chainTypes); network = project.network; if (apiService.nodeConfig.primaryNetworkEndpoint) { const [endpoint, config] = apiService.nodeConfig.primaryNetworkEndpoint; (network.endpoint as Record)[endpoint] = config; } } catch (e) { exitWithError(new Error(`Failed to init api`, { cause: e }), logger); } if (chainTypes) { logger.info('Using provided chain types'); } await apiService.createConnections( network, //createConnection (endpoint, config) => ApiPromiseConnection.create( endpoint, apiService.fetchBlocksBatches, { chainTypes, }, config, ), //postConnectedHook (connection: ApiPromiseConnection, endpoint: string, index: number) => { const api = connection.unsafeApi; api.on('connected', () => { eventEmitter.emit(IndexerEvent.ApiConnected, { value: 1, apiIndex: index, endpoint: endpoint, }); }); api.on('disconnected', () => { eventEmitter.emit(IndexerEvent.ApiConnected, { value: 0, apiIndex: index, endpoint: endpoint, }); }); }, ); return apiService; } async updateChainTypes(): Promise { const chainTypes = await updateChainTypesHasher(this.project.chainTypes); await this.connectionPoolService.updateChainTypes(chainTypes); } updateBlockFetching(): void { const onlyEventHandlers = isOnlyEventHandlers(this.project); const skipTransactions = this.nodeConfig.skipTransactions && onlyEventHandlers; if (this.nodeConfig.skipTransactions) { if (onlyEventHandlers) { logger.info( 'skipTransactions is enabled, only events and block headers will be fetched.', ); } else { logger.info( `skipTransactions is disabled, the project contains handlers that aren't event handlers.`, ); } } else { if (onlyEventHandlers) { logger.warn( 'skipTransactions is disabled, the project contains only event handlers, it could be enabled to improve indexing performance.', ); } else { logger.info(`skipTransactions is disabled.`); } } const fetchFunc = skipTransactions ? SubstrateUtil.fetchBlocksBatchesLight : SubstrateUtil.fetchBlocksBatches; if (this.nodeConfig?.profiler) { this._fetchBlocksFunction = profilerWrap( fetchFunc, 'SubstrateUtil', 'fetchBlocksBatches', ); } else { this._fetchBlocksFunction = fetchFunc; } } get api(): ApiPromise { return this.unsafeApi; } async getPatchedApi( header: Header, runtimeVersion?: RuntimeVersion, ): Promise { this._currentBlockHash = header.hash.toString(); this._currentBlockNumber = header.number.toNumber(); const api = this.api; const apiAt = (await api.at( this.currentBlockHash, runtimeVersion, )) as ApiAt; this.patchApiRpc(api, apiAt); return apiAt; } private redecorateRpcFunction( original: RpcMethodResult, ): RpcMethodResult { const methodName = this.getRPCFunctionName(original); if (original.meta.params) { const hashIndex = original.meta.params.findIndex( ({ isHistoric }) => isHistoric, ); if (hashIndex > -1) { const isBlockNumber = original.meta.params[hashIndex].type === 'BlockNumber'; const ret = (async (...args: any[]) => { const argsClone = [...args]; if (isBlockNumber) { if (argsClone[hashIndex] === undefined) { argsClone[hashIndex] = this.currentBlockNumber; } else if (argsClone[hashIndex] > this.currentBlockNumber) { throw new Error( `input block ${argsClone[hashIndex]} ahead of current block ${this.currentBlockNumber} is not supported`, ); } } // is block hash else { if (argsClone[hashIndex] === undefined) { argsClone[hashIndex] = this.currentBlockHash; } else { const atBlock = await this.api.rpc.chain.getBlock( argsClone[hashIndex], ); const atBlockNumber = atBlock.block.header.number.toNumber(); if (atBlockNumber > this.currentBlockNumber) { throw new Error( `input block hash ${argsClone[hashIndex]} ahead of current block ${this.currentBlockNumber} is not supported`, ); } } } return original(...argsClone); }) as RpcMethodResult; ret.raw = NOT_SUPPORT(`${methodName}.raw`); ret.meta = original.meta; return ret; } } const ret = NOT_SUPPORT(methodName) as unknown as RpcMethodResult< T, AnyFunction >; ret.raw = NOT_SUPPORT(`${methodName}.raw`); ret.meta = original.meta; return ret; } private patchApiRpc( api: ApiPromise, apiAt: ApiAt, ): void { apiAt.rpc = Object.entries(api.rpc).reduce( (acc, [module, rpcMethods]) => { acc[module as keyof ApiPromise['rpc']] = Object.entries( rpcMethods, ).reduce( (accInner, [name, rpcPromiseResult]) => { accInner[name] = this.redecorateRpcFunction( rpcPromiseResult as RpcMethodResult, ); return accInner; }, {} as DecoratedRpcSection, ) as any; return acc; }, {} as ApiPromise['rpc'], ); } private getRPCFunctionName( original: RpcMethodResult, ): string { const ext = original.meta as unknown as DefinitionRpcExt; return `api.rpc.${ext?.section ?? '*'}.${ext?.method ?? '*'}`; } // Overrides the super function because of the specVer async fetchBlocks( heights: number[], overallSpecVer?: number, numAttempts = MAX_RECONNECT_ATTEMPTS, ): Promise[] | IBlock[]> { return this.retryFetch(async () => { // Get the latest fetch function from the provider const apiInstance = this.connectionPoolService.api; return apiInstance.fetchBlocks(heights, overallSpecVer); }, numAttempts); } // Polkadot uses genesis hash instead of chainId protected assertChainId( network: { chainId: string }, connection: ApiPromiseConnection, ): void { if (network.chainId !== connection.networkMeta.genesisHash) { throw new MetadataMismatchError( 'ChainId', network.chainId, connection.networkMeta.genesisHash, ); } } } ================================================ FILE: packages/node/src/indexer/apiPromise.connection.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import { ApiPromise, WsProvider } from '@polkadot/api'; import { ApiOptions } from '@polkadot/api/types'; import { ProviderInterface } from '@polkadot/rpc-provider/types'; import { RegisteredTypes } from '@polkadot/types/types'; import { ApiConnectionError, ApiErrorType, DisconnectionError, LargeResponseError, NetworkMetadataPayload, RateLimitError, TimeoutError, IApiConnectionSpecific, IBlock, } from '@subql/node-core'; import { IEndpointConfig } from '@subql/types-core'; import * as SubstrateUtil from '../utils/substrate'; import { ApiAt, BlockContent, LightBlockContent } from './types'; import { createCachedProvider } from './x-provider/cachedProvider'; import { HttpProvider } from './x-provider/http'; // eslint-disable-next-line @typescript-eslint/no-var-requires const { version: packageVersion } = require('../../package.json'); const RETRY_DELAY = 2_500; export type FetchFunc = | typeof SubstrateUtil.fetchBlocksBatches | typeof SubstrateUtil.fetchBlocksBatchesLight; // We use a function to get the fetch function because it can change depending on the skipTransactions feature export type GetFetchFunc = () => FetchFunc; export class ApiPromiseConnection implements IApiConnectionSpecific< ApiPromise, ApiAt, IBlock[] | IBlock[] > { readonly networkMeta: NetworkMetadataPayload; private constructor( public unsafeApi: ApiPromise, private fetchBlocksBatches: GetFetchFunc, ) { this.networkMeta = { chain: unsafeApi.runtimeChain.toString(), specName: unsafeApi.runtimeVersion.specName.toString(), genesisHash: unsafeApi.genesisHash.toString(), }; } static async create( endpoint: string, fetchBlocksBatches: GetFetchFunc, args: { chainTypes?: RegisteredTypes }, config: IEndpointConfig, ): Promise { let provider: ProviderInterface; let throwOnConnect = false; const headers = { 'User-Agent': `SubQuery-Node ${packageVersion}`, ...config.headers, }; if (endpoint.startsWith('ws')) { provider = createCachedProvider( new WsProvider(endpoint, RETRY_DELAY, headers), ); } else if (endpoint.startsWith('http')) { provider = createCachedProvider(new HttpProvider(endpoint, headers)); throwOnConnect = true; } else { throw new Error(`Invalid endpoint: ${endpoint}`); } const apiOption = { provider, throwOnConnect, noInitWarn: true, ...args.chainTypes, }; const api = await ApiPromise.create(apiOption); return new ApiPromiseConnection(api, fetchBlocksBatches); } safeApi(height: number): ApiAt { throw new Error(`Not Implemented`); } async fetchBlocks( heights: number[], overallSpecVer?: number, ): Promise[] | IBlock[]> { const blocks = await this.fetchBlocksBatches()( this.unsafeApi, heights, overallSpecVer, ); return blocks; } async apiConnect(): Promise { return new Promise((resolve) => { if (this.unsafeApi.isConnected) { resolve(); } this.unsafeApi.on('connected', () => { resolve(); }); if (!this.unsafeApi.isConnected) { this.unsafeApi.connect(); } }); } async apiDisconnect(): Promise { await this.unsafeApi.disconnect(); } async updateChainTypes(chainTypes: RegisteredTypes): Promise { // Typeof Decorate<'promise' | 'rxjs'>, but we need to access this private method const currentApiOptions = (this.unsafeApi as any)._options as ApiOptions; const apiOption = { ...currentApiOptions, ...chainTypes, }; this.unsafeApi = await ApiPromise.create(apiOption); } handleError = ApiPromiseConnection.handleError; static handleError(e: Error): ApiConnectionError { let formatted_error: ApiConnectionError; if (e.message.startsWith(`No response received from RPC endpoint in`)) { formatted_error = new TimeoutError(e); } else if (e.message.startsWith(`disconnected from `)) { formatted_error = new DisconnectionError(e); } else if (e.message.startsWith(`-32029: Too Many Requests`)) { formatted_error = new RateLimitError(e); } else if (e.message.includes(`Exceeded max limit of`)) { formatted_error = new LargeResponseError(e); } else { formatted_error = new ApiConnectionError( e.name, e.message, ApiErrorType.Default, ); } return formatted_error; } } ================================================ FILE: packages/node/src/indexer/dictionary/index.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 export * from './types'; export * from './substrateDictionary.service'; ================================================ FILE: packages/node/src/indexer/dictionary/substrateDictionary.service.spec.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import { EventEmitter2 } from '@nestjs/event-emitter'; import { isCustomDs } from '@subql/common-substrate'; import { NodeConfig, DsProcessorService, IBlockchainService, } from '@subql/node-core'; import axios from 'axios'; import { GraphQLSchema } from 'graphql'; import { SubqueryProject } from '../../configure/SubqueryProject'; import { SubstrateDictionaryService } from './substrateDictionary.service'; import { SubstrateDictionaryV1 } from './v1'; import { SubstrateDictionaryV2 } from './v2'; function testSubqueryProject( endpoint: string[], chainId: string, ): SubqueryProject { return { id: 'test', root: './', network: { endpoint, dictionary: ['http://mock-dictionary-v2'], chainId: chainId, }, dataSources: [], schema: new GraphQLSchema({}), templates: [], } as unknown as SubqueryProject; } // Mock jest and set the type jest.mock('axios'); const mockedAxios = axios as jest.Mocked; describe('Substrate Dictionary service', function () { let dictionaryService: SubstrateDictionaryService; beforeEach(() => { const nodeConfig = new NodeConfig({ subquery: 'dictionaryService', subqueryName: 'asdf', networkEndpoint: { 'wss://polkadot.api.onfinality.io/public-ws': {} }, dictionaryTimeout: 10, networkDictionary: ['http://mock-dictionary-v2'], dictionaryRegistry: 'false', }); const project = testSubqueryProject( ['wss://polkadot.api.onfinality.io/public-ws'], '0x91b171bb158e2d3848fa23a9f1c25182fb8e20313b2c1eb49219da7a70ce90c3', ); const dsProcessor = new DsProcessorService( project, { isCustomDs } as IBlockchainService, nodeConfig, ); dictionaryService = new SubstrateDictionaryService( project, nodeConfig, new EventEmitter2(), dsProcessor, ); }); afterEach(() => { jest.clearAllMocks(); }); it('should use v1 if v2 init failed, can determine dictionary version by init dictionary', async () => { const spyDictionaryV1Create = jest.spyOn(SubstrateDictionaryV1, 'create'); const spyDictionaryV2Create = jest.spyOn(SubstrateDictionaryV2, 'create'); await dictionaryService.initDictionaries(); expect(spyDictionaryV2Create).toHaveBeenCalledTimes(1); expect(spyDictionaryV1Create).toHaveBeenCalledTimes(1); expect( (dictionaryService as any)._dictionaries.every( (d: any) => d instanceof SubstrateDictionaryV1, ), ).toBeTruthy(); }); it('should use v2 if init passed', async () => { const spyDictionaryV1Create = jest.spyOn(SubstrateDictionaryV1, 'create'); const mockedResponseData = { result: { availableBlocks: [{ startHeight: 1, endHeight: 10 }], genesisHash: 'mockedGenesisHash', filters: ['block', 'event'], supportedResponses: ['complete'], }, }; // @ts-ignore mockedAxios.create.mockImplementation(() => { return { post: () => { return { status: 200, data: mockedResponseData, }; }, }; }); await dictionaryService.initDictionaries(); expect(spyDictionaryV1Create).toHaveBeenCalledTimes(0); expect( (dictionaryService as any)._dictionaries[0] instanceof SubstrateDictionaryV2, ).toBeTruthy(); }); }); ================================================ FILE: packages/node/src/indexer/dictionary/substrateDictionary.service.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import assert from 'assert'; import { Inject, Injectable } from '@nestjs/common'; import { EventEmitter2 } from '@nestjs/event-emitter'; import { NETWORK_FAMILY } from '@subql/common'; import { NodeConfig, DictionaryService, getLogger, DsProcessorService, } from '@subql/node-core'; import { SubstrateBlock, SubstrateDatasource } from '@subql/types'; import { SubqueryProject } from '../../configure/SubqueryProject'; import { SpecVersion } from './types'; import { SubstrateDictionaryV1 } from './v1'; import { SubstrateDictionaryV2 } from './v2'; const logger = getLogger('SubstrateDictionary'); @Injectable() export class SubstrateDictionaryService extends DictionaryService< SubstrateDatasource, SubstrateBlock > { async initDictionaries(): Promise { const dictionariesV1: SubstrateDictionaryV1[] = []; const dictionariesV2: SubstrateDictionaryV2[] = []; if (!this.project) { throw new Error(`Project in Dictionary service not initialized `); } const registryDictionaries = await this.resolveDictionary( NETWORK_FAMILY.substrate, this.project.network.chainId, this.nodeConfig.dictionaryRegistry, ); logger.debug(`Dictionary registry endpoints: ${registryDictionaries}`); const dictionaryEndpoints: string[] = ( !Array.isArray(this.project.network.dictionary) ? !this.project.network.dictionary ? [] : [this.project.network.dictionary] : this.project.network.dictionary ).concat(registryDictionaries); for (const endpoint of dictionaryEndpoints) { try { const dictionaryV2 = await SubstrateDictionaryV2.create( endpoint, this.nodeConfig, this.project, this.project.network.chainId, ); dictionariesV2.push(dictionaryV2); } catch (e) { try { const dictionaryV1 = await SubstrateDictionaryV1.create( this.project, this.nodeConfig, this.dsProcessorService.getDsProcessor.bind( this.dsProcessorService, ), endpoint, ); dictionariesV1.push(dictionaryV1); } catch (e) { logger.warn( `Dictionary endpoint "${endpoint}" is not a valid dictionary`, ); } } } // v2 should be prioritised this.init([...dictionariesV2, ...dictionariesV1]); } constructor( @Inject('ISubqueryProject') protected project: SubqueryProject, nodeConfig: NodeConfig, eventEmitter: EventEmitter2, protected dsProcessorService: DsProcessorService, ) { super(project.network.chainId, nodeConfig, eventEmitter); } private getV1Dictionary(): SubstrateDictionaryV1 | undefined { // TODO this needs to be removed once Substrate supports V2 dictionaries if (this._currentDictionaryIndex === undefined) return undefined; const dict = this._dictionaries[this._currentDictionaryIndex]; if (!dict) return undefined; assert( dict instanceof SubstrateDictionaryV1, `Getting v1 dict returned a dictinoary that wasn't v1`, ); return dict; } async getSpecVersions(): Promise { const dict = this.getV1Dictionary(); if (!dict) return undefined; return dict.getSpecVersions(); } } ================================================ FILE: packages/node/src/indexer/dictionary/types.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import { MetaData } from '@subql/utils'; export type SpecVersion = { id: string; start: number; //start with this block end: number | null; }; export type SpecVersionDictionary = { _metadata: MetaData; specVersions: SpecVersion[]; }; ================================================ FILE: packages/node/src/indexer/dictionary/v1/index.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 export * from './substrateDictionaryV1'; ================================================ FILE: packages/node/src/indexer/dictionary/v1/substrateDictionaryV1.spec.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import { EventEmitter2 } from '@nestjs/event-emitter'; import { isCustomDs } from '@subql/common-substrate'; import { NodeConfig, DsProcessorService, IBlockchainService, } from '@subql/node-core'; import { SubstrateBlockHandler, SubstrateCallHandler, SubstrateDatasourceKind, SubstrateEventHandler, SubstrateHandlerKind, SubstrateRuntimeHandler, } from '@subql/types'; import { GraphQLSchema } from 'graphql'; import { SubqueryProject } from '../../../configure/SubqueryProject'; import { SubstrateDictionaryService } from '../substrateDictionary.service'; import { buildDictionaryV1QueryEntries } from './substrateDictionaryV1'; function testSubqueryProject(): SubqueryProject { return { id: 'test', root: './', network: { endpoint: '', chainId: '0x91b171bb158e2d3848fa23a9f1c25182fb8e20313b2c1eb49219da7a70ce90c3', }, dataSources: [], schema: new GraphQLSchema({}), templates: [], } as unknown as SubqueryProject; } const nodeConfig = new NodeConfig({ subquery: 'asdf', subqueryName: 'asdf', dictionaryTimeout: 10, }); describe('Substrate DictionaryService', () => { it('should return all specVersion', async () => { const project = testSubqueryProject(); const dictionaryService = new SubstrateDictionaryService( project, nodeConfig, new EventEmitter2(), new DsProcessorService( project, { isCustomDs } as IBlockchainService, nodeConfig, ), ); // prepare dictionary service await dictionaryService.initDictionaries(); // mock set dictionary (without ds) (dictionaryService as any)._currentDictionaryIndex = 0; const specVersions = await dictionaryService.getSpecVersions(); expect(specVersions?.length).toBeGreaterThan(0); dictionaryService.onApplicationShutdown(); }, 50000); }); const makeDs = (handlers: SubstrateRuntimeHandler[]) => { return { name: '', kind: SubstrateDatasourceKind.Runtime, mapping: { file: '', handlers, }, }; }; const blockHandler: SubstrateBlockHandler = { kind: SubstrateHandlerKind.Block, handler: 'handleBlock', }; const callHandler: SubstrateCallHandler = { kind: SubstrateHandlerKind.Call, handler: 'handleCall', filter: { method: 'call', module: 'module' }, }; const eventHandler: SubstrateEventHandler = { kind: SubstrateHandlerKind.Event, handler: 'handleEvent', filter: { method: 'event', module: 'module' }, }; const eventHandlerWithUndefined: SubstrateEventHandler = { kind: SubstrateHandlerKind.Event, handler: 'handleEvent', filter: { method: 'balance', module: undefined }, }; const callHandlerWithUndefined: SubstrateCallHandler = { kind: SubstrateHandlerKind.Call, handler: 'handleCall', filter: { isSigned: true, module: undefined, method: undefined }, }; describe('Building dictionary query entries', () => { it('supports block handlers', () => { /* If there are any blockhandlers without a modulo or timestamp filter we expect no query entries */ const result1 = buildDictionaryV1QueryEntries( [makeDs([blockHandler])], () => undefined as any, ); expect(result1).toEqual([]); const result2 = buildDictionaryV1QueryEntries( [makeDs([blockHandler, callHandler, eventHandler])], () => undefined as any, ); expect(result2).toEqual([]); const result3 = buildDictionaryV1QueryEntries( [makeDs([blockHandler]), makeDs([callHandler]), makeDs([eventHandler])], () => undefined as any, ); expect(result3).toEqual([]); }); it('supports block handlers with modulo filter', () => { const result1 = buildDictionaryV1QueryEntries( [ makeDs([ { ...blockHandler, filter: { modulo: 5 } }, callHandler, eventHandler, ]), ], () => undefined as any, ); expect(result1).toEqual([ { entity: 'extrinsics', conditions: [ { field: 'call', value: 'call' }, { field: 'module', value: 'module' }, ], }, { entity: 'events', conditions: [ { field: 'event', value: 'event' }, { field: 'module', value: 'module' }, ], }, ]); }); it('supports any handler with no filters', () => { const result1 = buildDictionaryV1QueryEntries( [makeDs([{ kind: SubstrateHandlerKind.Call, handler: 'handleCall' }])], () => undefined as any, ); expect(result1).toEqual([]); const result2 = buildDictionaryV1QueryEntries( [makeDs([{ kind: SubstrateHandlerKind.Event, handler: 'handleEvent' }])], () => undefined as any, ); expect(result2).toEqual([]); }); it('supports custom ds processors', () => { // mock custom ds processor dictionary return const processors: Record = { 'substrate/JsonfyCall': { baseHandlerKind: {}, dictionaryQuery: () => { return { conditions: [ { field: 'filter1', value: 'foo', }, { field: 'filter2', value: 'bar', }, ], entity: 'json', }; }, }, }; // Processor WITH custom dictionary query const result1 = buildDictionaryV1QueryEntries( [ { kind: 'substrate/Jsonfy', processor: { file: '' }, assets: new Map(), mapping: { file: '', handlers: [ { kind: 'substrate/JsonfyCall', handler: 'handleCall', filter: { filter1: 'foo', filter2: 'bar', }, }, ], }, }, ], (ds) => { return { kind: 'substrate/Jsonfy', validate: () => true, dsFilterProcessor: (ds) => true, handlerProcessors: processors, }; }, ); expect(result1).toEqual([ { entity: 'json', conditions: [ { field: 'filter1', value: 'foo' }, { field: 'filter2', value: 'bar' }, ], }, ]); }); it('create dictionary call filter condition and remove undefined fields', () => { const result1 = buildDictionaryV1QueryEntries( [makeDs([callHandlerWithUndefined])], () => undefined as any, ); expect(result1).toEqual([ { conditions: [ { field: 'isSigned', value: true, }, ], entity: 'extrinsics', }, ]); }); it('create dictionary event filter condition and remove undefined fields', () => { const result1 = buildDictionaryV1QueryEntries( [makeDs([eventHandlerWithUndefined])], () => undefined as any, ); expect(result1).toEqual([ { conditions: [ { field: 'event', value: 'balance', }, ], entity: 'events', }, ]); }); }); ================================================ FILE: packages/node/src/indexer/dictionary/v1/substrateDictionaryV1.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import assert from 'assert'; import { gql } from '@apollo/client/core'; import { isCustomDs, isRuntimeDs, SubstrateCallFilter, SubstrateCustomHandler, SubstrateDataSource, SubstrateEventFilter, SubstrateHandler, SubstrateHandlerKind, SubstrateRuntimeHandlerFilter, } from '@subql/common-substrate'; import { NodeConfig, DictionaryV1, timeout, getLogger, DsProcessorService, } from '@subql/node-core'; import { SubstrateBlockFilter, SubstrateDatasource } from '@subql/types'; import { DictionaryQueryCondition, DictionaryQueryEntry as DictionaryV1QueryEntry, } from '@subql/types-core'; import { buildQuery, GqlNode, GqlQuery } from '@subql/utils'; import { sortBy, uniqBy } from 'lodash'; import { SubqueryProject } from '../../../configure/SubqueryProject'; import { isBaseHandler, isCustomHandler } from '../../../utils/project'; import { SpecVersion, SpecVersionDictionary } from '../types'; type GetDsProcessor = DsProcessorService['getDsProcessor']; function eventFilterToQueryEntry( filter: SubstrateEventFilter, ): DictionaryV1QueryEntry { const conditions: DictionaryQueryCondition[] = []; if (filter.method) { conditions.push({ field: 'event', value: filter.method }); } if (filter.module) { conditions.push({ field: 'module', value: filter.module }); } return { entity: 'events', conditions, }; } function callFilterToQueryEntry( filter: SubstrateCallFilter, ): DictionaryV1QueryEntry { return { entity: 'extrinsics', conditions: Object.keys(filter) .map( (key) => ({ field: key === 'method' ? 'call' : key, value: filter[key as keyof SubstrateCallFilter], }) as DictionaryQueryCondition, ) .filter((c) => c.value !== undefined), }; } function getBaseHandlerKind( ds: SubstrateDataSource, handler: SubstrateHandler, getDsProcessor: GetDsProcessor, ): SubstrateHandlerKind | undefined { if (isRuntimeDs(ds) && isBaseHandler(handler)) { return handler.kind; } else if (isCustomDs(ds) && isCustomHandler(handler)) { const plugin = getDsProcessor(ds); const baseHandler = plugin.handlerProcessors[handler.kind]?.baseHandlerKind; if (!baseHandler) { throw new Error( `handler type ${handler.kind} not found in processor for ${ds.kind}`, ); } return baseHandler; } } function getBaseHandlerFilters( ds: SubstrateDataSource, handlerKind: string, getDsProcessor: GetDsProcessor, ): T[] { if (isCustomDs(ds)) { const plugin = getDsProcessor(ds); const processor = plugin.handlerProcessors[handlerKind]; return processor.baseFilter instanceof Array ? (processor.baseFilter as T[]) : ([processor.baseFilter] as T[]); } else { throw new Error(`Expected a custom datasource here`); } } // eslint-disable-next-line complexity export function buildDictionaryV1QueryEntries( dataSources: SubstrateDatasource[], getDsProcessor: GetDsProcessor, ): DictionaryV1QueryEntry[] { const queryEntries: DictionaryV1QueryEntry[] = []; for (const ds of dataSources) { const plugin = isCustomDs(ds) ? getDsProcessor(ds) : undefined; for (const handler of ds.mapping.handlers) { const baseHandlerKind = getBaseHandlerKind(ds, handler, getDsProcessor); let filterList: SubstrateRuntimeHandlerFilter[] = []; if (isCustomDs(ds)) { assert(plugin, 'plugin should be defined'); const processor = plugin.handlerProcessors[handler.kind]; const filter = (handler as SubstrateCustomHandler).filter; if (processor.dictionaryQuery && filter) { const queryEntry = processor.dictionaryQuery(filter, ds); if (queryEntry) { queryEntries.push(queryEntry); continue; } } filterList = getBaseHandlerFilters( ds, handler.kind, getDsProcessor, ); } else if (handler.filter) { filterList = [handler.filter]; } // Filter out any undefined filterList = filterList.filter(Boolean); if (!filterList.length) return []; switch (baseHandlerKind) { case SubstrateHandlerKind.Block: for (const filter of filterList as SubstrateBlockFilter[]) { if (filter.modulo === undefined) { return []; } } break; case SubstrateHandlerKind.Call: { for (const filter of filterList as SubstrateCallFilter[]) { if ( filter.module !== undefined || filter.method !== undefined || filter.isSigned !== undefined || filter.success !== undefined ) { queryEntries.push(callFilterToQueryEntry(filter)); } else { return []; } } break; } case SubstrateHandlerKind.Event: { for (const filter of filterList as SubstrateEventFilter[]) { if (filter.module !== undefined || filter.method !== undefined) { queryEntries.push(eventFilterToQueryEntry(filter)); } else { return []; } } break; } default: { throw new Error(`Unsupported handler kind: ${baseHandlerKind}`); } } } } return uniqBy( queryEntries, (item) => `${item.entity}|${JSON.stringify(sortBy(item.conditions, (c) => c.field))}`, ); } const logger = getLogger('substrate-dictionary-V1'); export class SubstrateDictionaryV1 extends DictionaryV1 { constructor( project: SubqueryProject, nodeConfig: NodeConfig, protected getDsProcessor: GetDsProcessor, dictionaryUrl: string, chainId?: string, ) { super(dictionaryUrl, chainId ?? project.network.chainId, nodeConfig); } static async create( project: SubqueryProject, nodeConfig: NodeConfig, getDsProcessor: GetDsProcessor, dictionaryUrl: string, chainId?: string, ): Promise { const dictionary = new SubstrateDictionaryV1( project, nodeConfig, getDsProcessor, dictionaryUrl, chainId, ); await dictionary.init(); return dictionary; } buildDictionaryQueryEntries( dataSources: SubstrateDataSource[], ): DictionaryV1QueryEntry[] { return buildDictionaryV1QueryEntries(dataSources, this.getDsProcessor); } parseSpecVersions(raw?: SpecVersionDictionary): SpecVersion[] { if (raw === undefined) { return []; } const specVersionBlockHeightSet = new Set(); const specVersions = (raw.specVersions as any).nodes; const _metadata = raw._metadata; // Add range for -1 specVersions for (let i = 0; i < specVersions.length - 1; i++) { specVersionBlockHeightSet.add({ id: specVersions[i].id, start: Number(specVersions[i].blockHeight), end: Number(specVersions[i + 1].blockHeight) - 1, }); } if (specVersions && specVersions.length >= 0) { // Add range for the last specVersion if (_metadata.lastProcessedHeight) { specVersionBlockHeightSet.add({ id: specVersions[specVersions.length - 1].id, start: Number(specVersions[specVersions.length - 1].blockHeight), end: Number(_metadata.lastProcessedHeight), }); } } return Array.from(specVersionBlockHeightSet); } async getSpecVersionsRaw(): Promise { const { query } = this.specVersionQuery(); try { const resp = await timeout( this.client.query({ query: gql(query), }), this.nodeConfig.dictionaryTimeout, ); const _metadata = resp.data._metadata; const specVersions = resp.data.specVersions; return { _metadata, specVersions }; } catch (err: any) { logger.warn(err, `failed to fetch specVersion result`); return undefined; } } async getSpecVersions(): Promise { try { return this.parseSpecVersions(await this.getSpecVersionsRaw()); } catch { return undefined; } } private specVersionQuery(): GqlQuery { const nodes: GqlNode[] = [ { entity: '_metadata', project: ['lastProcessedHeight', 'genesisHash'], }, { entity: 'specVersions', project: [ { entity: 'nodes', project: ['id', 'blockHeight'], }, ], args: { orderBy: 'BLOCK_HEIGHT_ASC', }, }, ]; return buildQuery([], nodes); } } ================================================ FILE: packages/node/src/indexer/dictionary/v2/index.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 export * from './substrateDictionaryV2'; export * from './types'; ================================================ FILE: packages/node/src/indexer/dictionary/v2/substrateDictionaryV2.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import { SubstrateDataSource } from '@subql/common-substrate'; import { NodeConfig, DictionaryV2, DictionaryResponse, getLogger, DictionaryV2QueryEntry, RawDictionaryResponseData, IBlock, } from '@subql/node-core'; import { SubstrateBlock, SubstrateDatasource } from '@subql/types'; import { SubqueryProject } from '../../../configure/SubqueryProject'; import { SubstrateDictionaryV2QueryEntry } from './types'; const MIN_FETCH_LIMIT = 200; export function buildDictionaryV2QueryEntry( dataSources: SubstrateDataSource[], ): SubstrateDictionaryV2QueryEntry { const dictionaryConditions: SubstrateDictionaryV2QueryEntry = { logs: [], transactions: [], }; //TODO return dictionaryConditions; } export class SubstrateDictionaryV2 extends DictionaryV2< SubstrateBlock, SubstrateDatasource, SubstrateDictionaryV2QueryEntry > { protected buildDictionaryQueryEntries( dataSources: SubstrateDataSource[], ): DictionaryV2QueryEntry { return buildDictionaryV2QueryEntry(dataSources); } constructor( endpoint: string, nodeConfig: NodeConfig, project: SubqueryProject, chainId?: string, ) { super(endpoint, chainId ?? project.network.chainId, nodeConfig); } static async create( endpoint: string, nodeConfig: NodeConfig, project: SubqueryProject, chainId?: string, ): Promise { const dictionary = new SubstrateDictionaryV2( endpoint, nodeConfig, project, chainId, ); await dictionary.init(); return dictionary; } /** * * @param startBlock * @param queryEndBlock this block number will limit the max query range, increase dictionary query speed * @param batchSize * @param conditions */ // eslint-disable-next-line @typescript-eslint/require-await async getData( startBlock: number, queryEndBlock: number, limit = MIN_FETCH_LIMIT, ): Promise | number> | undefined> { return this.getData(startBlock, queryEndBlock, limit); } // TODO, complete this once substrate support v2 convertResponseBlocks( result: RawDictionaryResponseData, ): DictionaryResponse> | undefined { return undefined; } } ================================================ FILE: packages/node/src/indexer/dictionary/v2/types.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import { DictionaryV2QueryEntry } from '@subql/node-core'; /** * Substrate Fat dictionary RPC request filter conditions */ export type SubstrateDictionaryV2QueryEntry = DictionaryV2QueryEntry; ================================================ FILE: packages/node/src/indexer/fetch.module.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import path from 'path'; import { Module } from '@nestjs/common'; import { EventEmitter2 } from '@nestjs/event-emitter'; import { StoreService, NodeConfig, ConnectionPoolStateManager, PoiSyncService, InMemoryCacheService, MonitorService, CoreModule, ConnectionPoolService, UnfinalizedBlocksService, DsProcessorService, ProjectService, DynamicDsService, FetchService, DictionaryService, MultiChainRewindService, blockDispatcherFactory, } from '@subql/node-core'; import { SubstrateDatasource } from '@subql/types'; import { BlockchainService } from '../blockchain.service'; import { ApiService } from './api.service'; import { ApiPromiseConnection } from './apiPromise.connection'; import { SubstrateDictionaryService } from './dictionary/substrateDictionary.service'; import { IndexerManager } from './indexer.manager'; import { RuntimeService } from './runtime/runtimeService'; import { BlockContent, LightBlockContent } from './types'; import { IIndexerWorker } from './worker/worker'; @Module({ imports: [CoreModule], providers: [ { provide: 'APIService', useFactory: ApiService.init, inject: [ 'ISubqueryProject', ConnectionPoolService, EventEmitter2, NodeConfig, ], }, { provide: 'RuntimeService', useClass: RuntimeService, }, { provide: 'IBlockchainService', useClass: BlockchainService, }, DsProcessorService, DynamicDsService, { provide: 'IUnfinalizedBlocksService', useClass: UnfinalizedBlocksService, }, { useClass: ProjectService, provide: 'IProjectService', }, MultiChainRewindService, IndexerManager, { provide: 'IBlockDispatcher', useFactory: blockDispatcherFactory< SubstrateDatasource, BlockContent | LightBlockContent, ApiPromiseConnection, IIndexerWorker >(path.resolve(__dirname, '../../dist/indexer/worker/worker.js'), [ 'syncRuntimeService', 'getSpecFromMap', ]), inject: [ NodeConfig, EventEmitter2, 'IProjectService', 'IProjectUpgradeService', InMemoryCacheService, StoreService, 'IStoreModelProvider', PoiSyncService, 'ISubqueryProject', DynamicDsService, 'IUnfinalizedBlocksService', ConnectionPoolStateManager, 'IBlockchainService', IndexerManager, MultiChainRewindService, MonitorService, ], }, { provide: DictionaryService, useClass: SubstrateDictionaryService, }, FetchService, ], }) export class FetchModule {} ================================================ FILE: packages/node/src/indexer/indexer.manager.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import { Inject, Injectable } from '@nestjs/common'; import { ApiPromise } from '@polkadot/api'; import { isBlockHandlerProcessor, isCallHandlerProcessor, isEventHandlerProcessor, SubstrateCustomDataSource, SubstrateHandlerKind, SubstrateRuntimeHandlerInputMap, } from '@subql/common-substrate'; import { NodeConfig, profiler, SandboxService, IndexerSandbox, ProcessBlockResponse, BaseIndexerManager, DsProcessorService, IBlock, getLogger, UnfinalizedBlocksService, DynamicDsService, } from '@subql/node-core'; import { LightSubstrateEvent, SubstrateBlock, SubstrateBlockFilter, SubstrateCustomDatasource, SubstrateDatasource, SubstrateEvent, SubstrateExtrinsic, } from '@subql/types'; import { BlockchainService } from '../blockchain.service'; import { SubstrateProjectDs } from '../configure/SubqueryProject'; import * as SubstrateUtil from '../utils/substrate'; import { ApiService as SubstrateApiService } from './api.service'; import { ApiAt, BlockContent, isFullBlock, LightBlockContent } from './types'; const logger = getLogger('indexer'); @Injectable() export class IndexerManager extends BaseIndexerManager< ApiPromise, ApiAt, BlockContent | LightBlockContent, SubstrateApiService, SubstrateDatasource, SubstrateCustomDataSource, typeof FilterTypeMap, typeof ProcessorTypeMap, SubstrateRuntimeHandlerInputMap > { constructor( @Inject('APIService') apiService: SubstrateApiService, nodeConfig: NodeConfig, sandboxService: SandboxService, dsProcessorService: DsProcessorService< SubstrateDatasource, SubstrateCustomDatasource >, dynamicDsService: DynamicDsService, @Inject('IUnfinalizedBlocksService') unfinalizedBlocksService: UnfinalizedBlocksService< BlockContent | LightBlockContent >, @Inject('IBlockchainService') blockchainService: BlockchainService, ) { super( apiService, nodeConfig, sandboxService, dsProcessorService, dynamicDsService, unfinalizedBlocksService, FilterTypeMap, ProcessorTypeMap, blockchainService, ); } @profiler() async indexBlock( block: IBlock, dataSources: SubstrateDatasource[], ): Promise { return super.internalIndexBlock(block, dataSources, () => this.blockchainService.getSafeApi(block.block), ); } protected async indexBlockData( blockContent: LightBlockContent | BlockContent, dataSources: SubstrateProjectDs[], getVM: (d: SubstrateProjectDs) => Promise, ): Promise { if (isFullBlock(blockContent)) { const { block, events, extrinsics } = blockContent; await this.indexContent(SubstrateHandlerKind.Block)( block, dataSources, getVM, ); // Group the events so they only need to be iterated over a single time const groupedEvents = events.reduce( (acc, evt, idx) => { if (evt.phase.isInitialization) { acc.init.push(evt); } else if (evt.phase.isFinalization) { acc.finalize.push(evt); } else if (evt.extrinsic?.idx) { const idx = evt.extrinsic.idx; acc[idx] ??= []; acc[idx].push(evt); } else if (!evt.phase.isApplyExtrinsic) { logger.warn( `Unrecognized event type, skipping. block="${block.block.header.number.toNumber()}" eventIdx="${idx}"`, ); } return acc; }, { init: [], finalize: [] } as Record< number | 'init' | 'finalize', SubstrateEvent[] >, ); // Run initialization events for (const event of groupedEvents.init) { await this.indexContent(SubstrateHandlerKind.Event)( event, dataSources, getVM, ); } for (const extrinsic of extrinsics) { await this.indexContent(SubstrateHandlerKind.Call)( extrinsic, dataSources, getVM, ); // Process extrinsic events const extrinsicEvents = (groupedEvents[extrinsic.idx] ?? []).sort( (a, b) => a.idx - b.idx, ); for (const event of extrinsicEvents) { await this.indexContent(SubstrateHandlerKind.Event)( event, dataSources, getVM, ); } } // Run finalization events for (const event of groupedEvents.finalize) { await this.indexContent(SubstrateHandlerKind.Event)( event, dataSources, getVM, ); } } else { for (const event of blockContent.events) { await this.indexContent(SubstrateHandlerKind.Event)( event, dataSources, getVM, ); } } } private indexContent( kind: SubstrateHandlerKind, ): ( content: | SubstrateBlock | SubstrateExtrinsic | SubstrateEvent | LightSubstrateEvent, dataSources: SubstrateProjectDs[], getVM: (d: SubstrateProjectDs) => Promise, ) => Promise { return async (content, dataSources, getVM) => { for (const ds of dataSources) { await this.indexData(kind, content, ds, getVM); } }; } protected async prepareFilteredData( kind: SubstrateHandlerKind, data: T, ): Promise { // Substrate doesn't need to do anything here return Promise.resolve(data); } } const ProcessorTypeMap = { [SubstrateHandlerKind.Block]: isBlockHandlerProcessor, [SubstrateHandlerKind.Event]: isEventHandlerProcessor, [SubstrateHandlerKind.Call]: isCallHandlerProcessor, }; const FilterTypeMap = { [SubstrateHandlerKind.Block]: ( block: SubstrateBlock, filter?: SubstrateBlockFilter, ) => !!SubstrateUtil.filterBlock(block, filter), [SubstrateHandlerKind.Event]: SubstrateUtil.filterEvent, [SubstrateHandlerKind.Call]: SubstrateUtil.filterExtrinsic, }; ================================================ FILE: packages/node/src/indexer/project.service.spec.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import { EventEmitter2, EventEmitterModule } from '@nestjs/event-emitter'; import { Test } from '@nestjs/testing'; import { ProjectService, ConnectionPoolService, ConnectionPoolStateManager, NodeConfig, ProjectUpgradeService, upgradableSubqueryProject, DsProcessorService, DynamicDsService, MultiChainRewindService, Header, } from '@subql/node-core'; import { SubstrateDatasourceKind, SubstrateHandlerKind } from '@subql/types'; import { GraphQLSchema } from 'graphql'; import { BlockchainService } from '../blockchain.service'; import { SubqueryProject } from '../configure/SubqueryProject'; import { ApiService } from './api.service'; import { RuntimeService } from './runtime/runtimeService'; function testSubqueryProject(): SubqueryProject { return { id: 'test', root: './', network: { endpoint: { 'https://polkadot.api.onfinality.io/public': {} }, chainId: '0x91b171bb158e2d3848fa23a9f1c25182fb8e20313b2c1eb49219da7a70ce90c3', }, dataSources: [ { kind: SubstrateDatasourceKind.Runtime, startBlock: 1, mapping: { file: '', handlers: [ { handler: 'testSandbox', kind: SubstrateHandlerKind.Event }, ], }, }, ], schema: new GraphQLSchema({}), templates: [], chainTypes: { types: { TestType: 'u32', }, }, applyCronTimestamps: () => jest.fn(), } as unknown as SubqueryProject; } // @ts-ignore class TestProjectService extends ProjectService { packageVersion = '1.0.0'; async init(startHeight?: number): Promise { await (this as any).initUpgradeService(5); } async getBlockTimestamp(height: number): Promise { return Promise.resolve(new Date()); } async onProjectChange(project: any): Promise { await this.apiService.updateChainTypes(); this.apiService.updateBlockFetching(); } get schema(): string { return 'mock-schema'; } async getLastProcessedHeight(): Promise { return Promise.resolve(4); } async ensureMetadata(): Promise { return Promise.resolve(); } async initDbSchema(): Promise { return Promise.resolve(); } async initUnfinalized(): Promise
{ return Promise.resolve(undefined); } } const demoProjects = [ testSubqueryProject(), { parent: { untilBlock: 4, reference: '0', }, ...testSubqueryProject(), chainTypes: { types: { TestType: 'u32', DispatchErrorModule: 'DispatchErrorModuleU8', }, }, }, ] as SubqueryProject[]; jest.setTimeout(50_000); describe('ProjectService', () => { let projectService: TestProjectService; let apiService: ApiService; let projectUpgradeService: ProjectUpgradeService; jest .spyOn(ProjectUpgradeService as any, 'rewindableCheck') .mockImplementation(() => true); beforeEach(async () => { const projectUpgrade = await ProjectUpgradeService.create( demoProjects[1], (id) => Promise.resolve(demoProjects[parseInt(id, 10)]), 1, ); const p = upgradableSubqueryProject(projectUpgrade); const module = await Test.createTestingModule({ providers: [ ConnectionPoolStateManager, ConnectionPoolService, { provide: 'ISubqueryProject', useFactory: () => p, }, { provide: NodeConfig, useFactory: () => ({}), }, { provide: ProjectService, useFactory: ( apiService: ApiService, project: SubqueryProject, blockchainService: BlockchainService, multiChainRewindService: MultiChainRewindService, ) => new TestProjectService( { validateProjectCustomDatasources: jest.fn(), } as unknown as DsProcessorService, apiService, null as unknown as any, null as unknown as any, { query: jest.fn() } as unknown as any, project, projectUpgrade, { initCoreTables: jest.fn(), storeCache: { metadata: {}, flushCache: jest.fn(), _flushCache: { bind: jest.fn() }, }, } as unknown as any, { unsafe: false } as unknown as NodeConfig, { getDynamicDatasources: jest.fn().mockResolvedValue([]), init: jest.fn(), } as unknown as DynamicDsService, null as unknown as any, null as unknown as any, blockchainService, multiChainRewindService, ), inject: [ 'APIService', 'ISubqueryProject', 'IBlockchainService', MultiChainRewindService, ], }, EventEmitter2, { provide: 'APIService', useFactory: ApiService.init, inject: [ 'ISubqueryProject', ConnectionPoolService, EventEmitter2, NodeConfig, ], }, { provide: ProjectUpgradeService, useValue: projectUpgrade, }, { provide: 'RuntimeService', useFactory: (apiService) => new RuntimeService(apiService), inject: ['APIService'], }, { provide: 'IBlockchainService', useClass: BlockchainService, }, { provide: MultiChainRewindService, useValue: { init: () => {} }, }, ], imports: [EventEmitterModule.forRoot()], }).compile(); const app = module.createNestApplication(); await app.init(); apiService = app.get('APIService'); projectUpgradeService = app.get( ProjectUpgradeService, ) as ProjectUpgradeService; (projectUpgradeService as any).updateIndexedDeployments = jest.fn(); (projectUpgradeService as any).getDeploymentsMetadata = jest .fn() .mockResolvedValue({ 1: 'project1', 4: 'project4' } as Record< number, string >); (projectUpgradeService as any).validateIndexedData = jest .fn() .mockReturnValue(5); projectService = module.get(ProjectService); }); it('reload chainTypes when project changed, on init', async () => { const spyOnApiUpdateChainTypes = jest.spyOn(apiService, 'updateChainTypes'); // When init, api use old chain types expect((apiService.api as any)._options.types).toStrictEqual({ TestType: 'u32', }); await projectService.init(5); // During preprocess, it should trigger update chain types await projectUpgradeService.setCurrentHeight(5); expect((projectService as any).apiService.api._options.types).toStrictEqual( { TestType: 'u32', DispatchErrorModule: 'DispatchErrorModuleU8', }, ); expect(spyOnApiUpdateChainTypes).toHaveBeenCalledTimes(1); }); }); ================================================ FILE: packages/node/src/indexer/runtime/base-runtime.service.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import { Inject, Injectable } from '@nestjs/common'; import { ApiPromise } from '@polkadot/api'; import { RuntimeVersion } from '@polkadot/types/interfaces'; import { profiler } from '@subql/node-core'; import { SubstrateBlock } from '@subql/types'; import * as SubstrateUtil from '../../utils/substrate'; import { ApiService } from '../api.service'; import { SpecVersion } from '../dictionary'; export const SPEC_VERSION_BLOCK_GAP = 100; @Injectable() export abstract class BaseRuntimeService { parentSpecVersion?: number; specVersionMap: SpecVersion[] = []; private currentRuntimeVersion?: RuntimeVersion; latestFinalizedHeight?: number; constructor(@Inject('APIService') protected apiService: ApiService) {} async specChanged(height: number, specVersion: number): Promise { if (this.parentSpecVersion !== specVersion) { const parentSpecVersionCopy = this.parentSpecVersion; this.parentSpecVersion = specVersion; await this.prefetchMeta(height); // When runtime init parentSpecVersion is undefined, count as unchanged, // so it will not use fetchRuntimeVersionRange return parentSpecVersionCopy !== undefined; } return false; } abstract getSpecVersion( blockHeight: number, ): Promise<{ blockSpecVersion: number; syncedDictionary: boolean }>; get api(): ApiPromise { return this.apiService.api; } getSpecFromMap( blockHeight: number, specVersions?: SpecVersion[], ): number | undefined { //return undefined block can not find inside range const spec = specVersions?.find( (spec) => blockHeight >= spec.start && (spec.end !== null ? blockHeight <= spec.end : true), ); return spec ? Number(spec.id) : undefined; } async getSpecFromApi(height: number): Promise { const parentBlockHash = await this.api.rpc.chain.getBlockHash( Math.max(height - 1, 0), ); const runtimeVersion = await this.api.rpc.state.getRuntimeVersion(parentBlockHash); const specVersion = runtimeVersion.specVersion.toNumber(); return specVersion; } @profiler() async prefetchMeta(height: number): Promise { const blockHash = await this.api.rpc.chain.getBlockHash(height); if ( this.parentSpecVersion !== undefined && this.specVersionMap && this.specVersionMap.length !== 0 ) { const parentSpecVersion = this.specVersionMap.find( (spec) => Number(spec.id) === this.parentSpecVersion, ); if (parentSpecVersion === undefined) { await SubstrateUtil.prefetchMetadata(this.api, blockHash); } else { for (const specVersion of this.specVersionMap) { if ( (parentSpecVersion.end !== null ? specVersion.start > parentSpecVersion.end : true) && specVersion.start <= height ) { const blockHash = await this.api.rpc.chain.getBlockHash( specVersion.start, ); await SubstrateUtil.prefetchMetadata(this.api, blockHash); } } } } else { await SubstrateUtil.prefetchMetadata(this.api, blockHash); } } async getRuntimeVersion(block: SubstrateBlock): Promise { if ( !this.currentRuntimeVersion || this.currentRuntimeVersion.specVersion.toNumber() !== block.specVersion ) { this.currentRuntimeVersion = await this.api.rpc.state.getRuntimeVersion( block.block.header.parentHash, ); } return this.currentRuntimeVersion; } } ================================================ FILE: packages/node/src/indexer/runtime/runtime.service.spec.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import assert from 'assert'; import { BlockHash, RuntimeVersion } from '@polkadot/types/interfaces'; import { ApiService } from '../api.service'; import { SpecVersion, SpecVersionDictionary, SubstrateDictionaryService, } from '../dictionary'; import { SPEC_VERSION_BLOCK_GAP } from './base-runtime.service'; import { RuntimeService } from './runtimeService'; const specVersions: SpecVersion[] = [ { id: '0', start: 1, end: 29231 }, { id: '1', start: 29232, end: 188836 }, { id: '5', start: 188837, end: 199405 }, { id: '6', start: 199406, end: 214264 }, { id: '7', start: 214265, end: 244358 }, { id: '8', start: 244359, end: 303079 }, { id: '9', start: 303080, end: 314201 }, { id: '10', start: 314202, end: 342400 }, { id: '11', start: 342401, end: 443963 }, { id: '12', start: 443964, end: 528470 }, { id: '13', start: 528471, end: 687751 }, { id: '14', start: 687752, end: 746085 }, { id: '15', start: 746086, end: null }, ]; const getApiService = (): ApiService => ({ api: { rpc: { chain: { getBlockHash: (height: number): Promise => { return Promise.resolve(`${height}` as any as BlockHash); }, }, state: { getRuntimeVersion: (blockHash: string): Promise => { // Treat 0 as 1 for parent hash of block 1 const blockNum = Math.max(parseInt(blockHash), 1); const specVersion = specVersions.find( (v) => v.start <= blockNum && (!v.end || v.end >= blockNum), ); assert(specVersion, `Spec version not found for block ${blockNum}`); return Promise.resolve({ specVersion: { toNumber: () => parseInt(specVersion.id, 10), }, } as RuntimeVersion); }, }, }, getBlockRegistry: (hash: string) => Promise.resolve(), }, }) as any; const getDictionaryService = (): SubstrateDictionaryService => ({ useDictionary: (height: number) => { return false; }, getSpecVersions: (): Promise => { return Promise.resolve(specVersions); }, parseSpecVersions: (raw: SpecVersionDictionary): SpecVersion[] => { throw new Error('Not implemented'); }, initDictionariesV1: () => { //TODO }, initDictionariesV2: () => { //TODO }, }) as any; describe('Runtime service', () => { let runtimeService: RuntimeService; let dictionaryService: SubstrateDictionaryService; let apiService: ApiService; beforeEach(() => { dictionaryService = getDictionaryService(); apiService = getApiService(); runtimeService = new RuntimeService(apiService); }); it('doesnt refetch metadata when spec version doesnt change', async () => { const metaSpy = jest.spyOn(apiService.api, 'getBlockRegistry'); // This gets called when fetching each block await runtimeService.specChanged(1); await runtimeService.specChanged(2); await runtimeService.specChanged(3); expect(metaSpy).toHaveBeenCalledTimes(1); }); it('fetches metadata only when spec version changes', async () => { const metaSpy = jest.spyOn(apiService.api, 'getBlockRegistry'); // This gets called when fetching each block await runtimeService.specChanged(29230); await runtimeService.specChanged(29231); await runtimeService.specChanged(29232); // Spec change here await runtimeService.specChanged(29233); expect(metaSpy).toHaveBeenCalledTimes(2); }); it('use dictionary and specVersionMap to get block specVersion', async () => { (dictionaryService as any).useDictionary = (height: number) => true; // This is called in init.ts to bootsrap the application await runtimeService.init(0, 29233, dictionaryService); await runtimeService.syncDictionarySpecVersions(); const metaSpy = jest.spyOn(apiService.api.rpc.state, 'getRuntimeVersion'); await runtimeService.getSpecVersion(29233); expect(metaSpy).not.toHaveBeenCalled(); }); it('getSpecVersion will fetch the spec version if its not in the map', async () => { (dictionaryService as any).useDictionary = (height: number) => true; (runtimeService as any).dictionaryService = dictionaryService; const height = 3967204; const apiSpy = jest.spyOn(apiService.api.rpc.state, 'getRuntimeVersion'); const dictSpy = jest.spyOn(dictionaryService, 'getSpecVersions'); runtimeService.latestFinalizedHeight = height + SPEC_VERSION_BLOCK_GAP + 1; await runtimeService.getSpecVersion(height); expect(apiSpy).toHaveBeenCalled(); expect(dictSpy).toHaveBeenCalled(); }); }); ================================================ FILE: packages/node/src/indexer/runtime/runtimeService.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import { Inject, Injectable } from '@nestjs/common'; import { getLogger, profiler } from '@subql/node-core'; import { ApiService } from '../api.service'; import { SubstrateDictionaryService } from '../dictionary'; import { BaseRuntimeService, SPEC_VERSION_BLOCK_GAP, } from './base-runtime.service'; const logger = getLogger('RuntimeService'); @Injectable() export class RuntimeService extends BaseRuntimeService { protected dictionaryService?: SubstrateDictionaryService; constructor(@Inject('APIService') protected apiService: ApiService) { super(apiService); } async init( startHeight: number, latestFinalizedHeight: number, dictionaryService: SubstrateDictionaryService, ): Promise { this.latestFinalizedHeight = latestFinalizedHeight; this.dictionaryService = dictionaryService; await this.syncDictionarySpecVersions(); await this.specChanged(startHeight); await this.prefetchMeta(startHeight); } // get latest specVersions from dictionary async syncDictionarySpecVersions(): Promise { try { // must check useDictionary before get SpecVersion, this will give the right dictionary to fetch SpecVersions const response = await this.dictionaryService?.getSpecVersions(); if (response !== undefined) { this.specVersionMap = response; } else if (this.specVersionMap === undefined) { this.specVersionMap = []; } } catch (e: any) { logger.error(e, 'Failed to get spec versions'); } } // main runtime responsible for sync from dictionary async getSpecVersion( blockHeight: number, ): Promise<{ blockSpecVersion: number; syncedDictionary: boolean }> { let blockSpecVersion: number | undefined; let syncedDictionary = false; // we want to keep the specVersionMap in memory, and use it even useDictionary been disabled // therefore instead of check .useDictionary, we check it length before use it. if (this.specVersionMap && this.specVersionMap.length !== 0) { blockSpecVersion = this.getSpecFromMap(blockHeight, this.specVersionMap); } if (blockSpecVersion === undefined) { blockSpecVersion = await this.getSpecFromApi(blockHeight); if ( this.latestFinalizedHeight && blockHeight + SPEC_VERSION_BLOCK_GAP < this.latestFinalizedHeight ) { // Ask to sync local specVersionMap with dictionary await this.syncDictionarySpecVersions(); syncedDictionary = true; } } return { blockSpecVersion, syncedDictionary }; } // the specVersion is always undefined @profiler() async specChanged(height: number, specVersion?: number): Promise { if (specVersion === undefined) { const { blockSpecVersion } = await this.getSpecVersion(height); specVersion = blockSpecVersion; } return super.specChanged(height, specVersion); } } ================================================ FILE: packages/node/src/indexer/runtime/workerRuntimeService.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import { Injectable } from '@nestjs/common'; import { SpecVersion } from '../dictionary'; import { BaseRuntimeService } from './base-runtime.service'; @Injectable() export class WorkerRuntimeService extends BaseRuntimeService { // sync specVersion between main and workers syncSpecVersionMap( specVersionMap: SpecVersion[], latestFinalizedHeight?: number, ): void { this.specVersionMap = specVersionMap; if ( latestFinalizedHeight !== undefined && this.latestFinalizedHeight && this.latestFinalizedHeight < latestFinalizedHeight ) { this.latestFinalizedHeight = latestFinalizedHeight; } } // Worker runtime does not syncDictionary by itself // syncDictionary is done by main runtime async getSpecVersion( blockHeight: number, ): Promise<{ blockSpecVersion: number; syncedDictionary: boolean }> { let blockSpecVersion: number | undefined; // we want to keep the specVersionMap in memory, and use it even useDictionary been disabled // therefore instead of check .useDictionary, we check it length before use it. if (this.specVersionMap && this.specVersionMap.length !== 0) { blockSpecVersion = this.getSpecFromMap(blockHeight, this.specVersionMap); } if (blockSpecVersion === undefined) { blockSpecVersion = await this.getSpecFromApi(blockHeight); } return { blockSpecVersion, syncedDictionary: false }; } } ================================================ FILE: packages/node/src/indexer/store.service.test.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import { INestApplication } from '@nestjs/common'; import { createNotifyTrigger, createSendNotificationTriggerFunction, DbOption, getFunctions, getTriggers, ProjectService, } from '@subql/node-core'; import { QueryTypes, Sequelize } from '@subql/x-sequelize'; import { rimraf } from 'rimraf'; import { prepareApp } from '../utils/test.utils'; const option: DbOption = { host: process.env.DB_HOST ?? '127.0.0.1', port: process.env.DB_PORT ? Number(process.env.DB_PORT) : 5432, username: process.env.DB_USER ?? 'postgres', password: process.env.DB_PASS ?? 'postgres', database: process.env.DB_DATABASE ?? 'postgres', timezone: 'utc', }; jest.setTimeout(900000); describe('Store service integration test', () => { let app: INestApplication; let projectService: ProjectService; let sequelize: Sequelize; let tempDir: string; let schemaName: string; beforeAll(async () => { sequelize = new Sequelize( `postgresql://${option.username}:${option.password}@${option.host}:${option.port}/${option.database}`, option, ); await sequelize.authenticate(); }); afterEach(async () => { await sequelize.dropSchema(schemaName, { logging: false }); await app?.close(); }); afterAll(async () => { await rimraf(tempDir); }); it('Correct db sync on historical project', async () => { // on uniswap complex schema const cid = 'QmNUNBiVC1BDDNbXCbTxzPexodbSmTqZUaohbeBae6b6r8'; schemaName = 'sync-schema-1'; app = await prepareApp(schemaName, cid, false); projectService = app.get('IProjectService'); await projectService.init(1); tempDir = (projectService as any).project.root; const result = await sequelize.query<{ table_name: string }>( ` SELECT table_name FROM information_schema.tables WHERE table_schema = :schema; `, { type: QueryTypes.SELECT, replacements: { schema: schemaName }, }, ); const expectedTables = result.map((t) => t.table_name); const columnResult = await sequelize.query( ` SELECT column_name, data_type, is_nullable FROM information_schema.columns WHERE table_schema = :schema AND table_name = 'positions'; `, { type: QueryTypes.SELECT, replacements: { schema: schemaName }, }, ); expect(expectedTables.sort()).toStrictEqual( [ 'factories', 'bundles', 'tokens', '_metadata', 'white_list_pools', 'pools', 'ticks', 'positions', 'position_snapshots', 'transactions', 'mints', 'burns', 'swaps', 'collects', 'flashes', 'uniswap_day_data', 'pool_day_data', 'pool_hour_data', 'tick_hour_data', 'tick_day_data', 'token_day_data', 'token_hour_data', ].sort(), ); expect( columnResult.find((c: any) => c.column_name === 'token0_id'), ).toStrictEqual({ column_name: 'token0_id', data_type: 'text', is_nullable: 'NO', }); expect( columnResult.find((c: any) => c.column_name === '_block_range'), ).toStrictEqual({ column_name: '_block_range', data_type: 'int8range', is_nullable: 'NO', }); expect( columnResult.find((c: any) => c.column_name === 'withdrawn_token0'), ).toStrictEqual({ column_name: 'withdrawn_token0', data_type: 'double precision', is_nullable: 'NO', }); expect( columnResult.find((c: any) => c.column_name === '_id'), ).toStrictEqual({ column_name: '_id', data_type: 'uuid', is_nullable: 'NO', }); }); it('Correct db sync on non-historical', async () => { const cid = 'QmNUNBiVC1BDDNbXCbTxzPexodbSmTqZUaohbeBae6b6r8'; schemaName = 'sync-schema-2'; app = await prepareApp(schemaName, cid, true); projectService = app.get('IProjectService'); await projectService.init(1); tempDir = (projectService as any).project.root; const [result] = await sequelize.query( `SELECT a.attname AS column_name, pg_catalog.format_type(a.atttypid, a.atttypmod) AS column_type, fk.constraint_name AS foreign_key_constraint_name, fk.reference_table AS foreign_table, fk.reference_column AS foreign_column FROM pg_catalog.pg_attribute a LEFT JOIN pg_catalog.pg_class c ON c.oid = a.attrelid LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace LEFT JOIN (SELECT pg_constraint.conname AS constraint_name, pg_constraint.conrelid AS conrelid, pg_attribute.attname AS attname, pg_class.relname AS reference_table, pg_attribute2.attname AS reference_column FROM pg_constraint JOIN pg_class ON pg_constraint.conrelid = pg_class.oid JOIN pg_namespace ON pg_namespace.oid = pg_class.relnamespace JOIN pg_attribute ON pg_attribute.attrelid = pg_class.oid AND pg_attribute.attnum = ANY(pg_constraint.conkey) JOIN pg_class AS pg_class2 ON pg_class2.oid = pg_constraint.confrelid JOIN pg_attribute AS pg_attribute2 ON pg_attribute2.attrelid = pg_class2.oid AND pg_attribute2.attnum = ANY(pg_constraint.confkey) WHERE pg_constraint.contype = 'f' AND pg_namespace.nspname = :schema ) AS fk ON fk.conrelid = c.oid AND fk.attname = a.attname WHERE c.relkind = 'r' -- r = ordinary table AND a.attnum > 0 -- positive attnum indicates a real column AND NOT a.attisdropped -- column is not dropped AND c.relname = 'swaps' AND n.nspname = :schema ORDER BY a.attnum;`, { replacements: { schema: schemaName }, }, ); const expectedForeignKey = result.find( (c: any) => c.column_name === 'token1_id', ); expect(expectedForeignKey).toStrictEqual({ column_name: 'token1_id', column_type: 'text', foreign_key_constraint_name: 'swaps_token1_id_fkey', foreign_table: 'swaps', foreign_column: 'id', }); }); it('Cyclic relations on non-historical', async () => { const cid = 'QmTLwdpfE7xsmAtPj3Bep9KKgAPbt2tvXisUHcHys6anSG'; schemaName = 'sync-schema-3'; app = await prepareApp(schemaName, cid, true); projectService = app.get('IProjectService'); await projectService.init(1); tempDir = (projectService as any).project.root; const [result] = await sequelize.query( ` SELECT tc.constraint_name, kcu.column_name, ccu.table_name AS foreign_table_name, ccu.column_name AS foreign_column_name FROM information_schema.table_constraints AS tc JOIN information_schema.key_column_usage AS kcu ON tc.constraint_name = kcu.constraint_name AND tc.table_schema = kcu.table_schema JOIN information_schema.constraint_column_usage AS ccu ON ccu.constraint_name = tc.constraint_name AND ccu.table_schema = tc.table_schema WHERE tc.constraint_type = 'FOREIGN KEY' AND tc.table_name='accounts' AND tc.table_schema= :schema `, { type: QueryTypes.SELECT, replacements: { schema: schemaName } }, ); expect(result).toStrictEqual({ constraint_name: 'accounts_transfer_id_id_fkey', column_name: 'transfer_id_id', foreign_table_name: 'transfers', foreign_column_name: 'id', }); }); it('Init with enums', async () => { const cid = 'QmVDDxVgmkKzXKcK5YBkEu3Wvzao7uQxear2SVLTUg2bQ1'; schemaName = 'sync-schema-4'; app = await prepareApp(schemaName, cid, true); projectService = app.get('IProjectService'); await projectService.init(1); tempDir = (projectService as any).project.root; const result = await sequelize.query<{ enum_type: string }>( ` SELECT n.nspname AS schema_name, t.typname AS enum_type, e.enumlabel AS enum_value FROM pg_type t JOIN pg_enum e ON t.oid = e.enumtypid JOIN pg_catalog.pg_namespace n ON n.oid = t.typnamespace WHERE n.nspname = :schema -- Replace 'public' with your schema name if different ORDER BY t.typname, e.enumsortorder;`, { type: QueryTypes.SELECT, replacements: { schema: schemaName } }, ); expect(result.length).toBe(3); expect(result.map((r) => r.enum_type)).toStrictEqual([ '65c7fd4e5d', '65c7fd4e5d', '65c7fd4e5d', ]); }); it('Able to drop notification triggers and functions', async () => { // if subscription is no longer enabled should be able to drop all prior triggers and functions related to subscription const cid = 'Qma3HraGKnH5Gte2WVs4sAAY6z5nBSqVuVq7Ef3eVQQPvz'; schemaName = 'sync-schema-5'; // simulate start with subscription then without subscription const initQueries = [ `CREATE SCHEMA IF NOT EXISTS "${schemaName}";`, ` CREATE TABLE IF NOT EXISTS "${schemaName}"."transfers" ("id" text NOT NULL, "amount" numeric NOT NULL, "block_number" integer NOT NULL, "date" timestamp NOT NULL, "from_id" text NOT NULL, "to_id" text NOT NULL, "_id" UUID NOT NULL, "_block_range" int8range NOT NULL, PRIMARY KEY ("_id"));`, `CREATE TABLE IF NOT EXISTS "${schemaName}"."accounts" ("id" text NOT NULL, "public_key" text NOT NULL, "first_transfer_block" integer, "last_transfer_block" integer, "_id" UUID NOT NULL, "_block_range" int8range NOT NULL, PRIMARY KEY ("_id"));`, createSendNotificationTriggerFunction(schemaName), createNotifyTrigger(schemaName, 'transfers'), createNotifyTrigger(schemaName, 'accounts'), ]; for (const q of initQueries) { await sequelize.query(q); } app = await prepareApp(schemaName, cid, false, false); projectService = app.get('IProjectService'); await projectService.init(1); tempDir = (projectService as any).project.root; const accountTrigger = await getTriggers(sequelize, '0xe2ae28f317df40c5'); const transferTrigger = await getTriggers(sequelize, '0x2416ab4b88a0cdac'); const functions = await getFunctions( sequelize, schemaName, 'send_notification', ); expect(accountTrigger.length).toBe(0); expect(transferTrigger.length).toBe(0); expect(functions.length).toBe(0); }); }); ================================================ FILE: packages/node/src/indexer/types.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import { ApiPromise } from '@polkadot/api'; import { ApiDecoration } from '@polkadot/api/types'; import type { HexString } from '@polkadot/util/types'; import { IBlock } from '@subql/node-core'; import { BlockHeader, LightSubstrateEvent, SubstrateBlock, SubstrateEvent, SubstrateExtrinsic, } from '@subql/types'; export interface BlockContent { block: SubstrateBlock; extrinsics: SubstrateExtrinsic[]; events: SubstrateEvent[]; } export interface LightBlockContent { block: BlockHeader; // A subset of SubstrateBlock events: LightSubstrateEvent[]; } export type BestBlocks = Record; export type ApiAt = ApiDecoration<'promise'> & { rpc: ApiPromise['rpc'] }; export function isFullBlock( block: BlockContent | LightBlockContent, ): block is BlockContent { return (block as BlockContent).extrinsics !== undefined; } export function getBlockSize( block: IBlock, ): number { return block.block.events.reduce( (acc, evt) => acc + evt.encodedLength, (block.block.block as SubstrateBlock)?.encodedLength ?? 0, ); } ================================================ FILE: packages/node/src/indexer/worker/worker-fetch.module.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import { Module } from '@nestjs/common'; import { EventEmitter2 } from '@nestjs/event-emitter'; import { ConnectionPoolService, NodeConfig, WorkerCoreModule, ProjectService, DsProcessorService, } from '@subql/node-core'; import { BlockchainService } from '../../blockchain.service'; import { ApiService } from '../api.service'; import { IndexerManager } from '../indexer.manager'; import { WorkerRuntimeService } from '../runtime/workerRuntimeService'; import { WorkerService } from './worker.service'; /** * The alternative version of FetchModule for worker */ @Module({ imports: [WorkerCoreModule], providers: [ DsProcessorService, IndexerManager, { provide: 'APIService', useFactory: ApiService.init, inject: [ 'ISubqueryProject', ConnectionPoolService, EventEmitter2, NodeConfig, ], }, { provide: 'IProjectService', useClass: ProjectService, }, // This is aliased so it satisfies the BlockchainService, other services are updated to reflect this { provide: 'RuntimeService', useClass: WorkerRuntimeService, }, { provide: 'IBlockchainService', useClass: BlockchainService, }, WorkerService, ], exports: [], }) export class WorkerFetchModule {} ================================================ FILE: packages/node/src/indexer/worker/worker.module.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import { Module } from '@nestjs/common'; import { EventEmitterModule } from '@nestjs/event-emitter'; import { ScheduleModule } from '@nestjs/schedule'; import { WorkerCoreModule } from '@subql/node-core'; import { ConfigureModule } from '../../configure/configure.module'; import { WorkerFetchModule } from './worker-fetch.module'; @Module({ imports: [ EventEmitterModule.forRoot(), ConfigureModule.register(), ScheduleModule.forRoot(), WorkerCoreModule, WorkerFetchModule, ], controllers: [], }) export class WorkerModule {} ================================================ FILE: packages/node/src/indexer/worker/worker.service.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import { Inject, Injectable } from '@nestjs/common'; import { NodeConfig, IProjectService, ProcessBlockResponse, BaseWorkerService, IProjectUpgradeService, IBlock, Header, } from '@subql/node-core'; import { SubstrateDatasource } from '@subql/types'; import { substrateBlockToHeader } from '../../utils/substrate'; import { ApiService } from '../api.service'; import { SpecVersion } from '../dictionary'; import { IndexerManager } from '../indexer.manager'; import { WorkerRuntimeService } from '../runtime/workerRuntimeService'; import { BlockContent, getBlockSize, LightBlockContent } from '../types'; export type FetchBlockResponse = Header & { specVersion?: number }; @Injectable() export class WorkerService extends BaseWorkerService< BlockContent | LightBlockContent, FetchBlockResponse, SubstrateDatasource, { specVersion: number } > { constructor( @Inject('APIService') private apiService: ApiService, private indexerManager: IndexerManager, @Inject('RuntimeService') private workerRuntimeService: WorkerRuntimeService, @Inject('IProjectService') projectService: IProjectService, @Inject('IProjectUpgradeService') projectUpgradeService: IProjectUpgradeService, nodeConfig: NodeConfig, ) { super(projectService, projectUpgradeService, nodeConfig); } protected async fetchChainBlock( height: number, { specVersion }: { specVersion: number }, ): Promise> { const specChanged = await this.workerRuntimeService.specChanged( height, specVersion, ); const [block] = await this.apiService.fetchBlocks( [height], specChanged ? undefined : this.workerRuntimeService.parentSpecVersion, ); return block; } // TODO test this with LightBlockContent protected toBlockResponse( block: IBlock /*| IBlock*/, ): FetchBlockResponse { return { ...block.getHeader(), specVersion: block.block.block.specVersion, }; } protected getBlockSize( block: IBlock, ): number { return getBlockSize(block); } protected async processFetchedBlock( block: IBlock, dataSources: SubstrateDatasource[], ): Promise { return this.indexerManager.indexBlock(block, dataSources); } getSpecFromMap(height: number): number | undefined { return this.workerRuntimeService.getSpecFromMap( height, this.workerRuntimeService.specVersionMap, ); } syncRuntimeService( specVersions: SpecVersion[], latestFinalizedHeight?: number, ): void { this.workerRuntimeService.syncSpecVersionMap( specVersions, latestFinalizedHeight, ); } } ================================================ FILE: packages/node/src/indexer/worker/worker.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 // initlogger and yargs must be imported before all other imports // making sure logger is defined before its called // eslint-disable-next-line import/order import { initLogger } from '@subql/node-core/logger'; // eslint-disable-next-line import/order import { yargsOptions } from '../../yargs'; const { argv } = yargsOptions; initLogger( argv.debug, argv.outputFmt as 'json' | 'colored', argv.logLevel as string | undefined, ); import { threadId } from 'node:worker_threads'; import { NestFactory } from '@nestjs/core'; import { getLogger, NestLogger, createWorkerHost, initWorkerServices, getWorkerService, IBaseIndexerWorker, ProjectService, } from '@subql/node-core'; import { SpecVersion } from '../dictionary'; import { WorkerModule } from './worker.module'; import { WorkerService } from './worker.service'; const logger = getLogger(`worker #${threadId}`); async function initWorker(startHeight?: number): Promise { try { const app = await NestFactory.create(WorkerModule, { logger: new NestLogger(!!argv.debug), // TIP: If the worker is crashing comment out this line for better logging }); await app.init(); const projectService: ProjectService = app.get('IProjectService'); // Initialise async services, we do this here rather than in factories so we can capture one off events await projectService.init(startHeight); const workerService = app.get(WorkerService); initWorkerServices(app, workerService); } catch (e: any) { console.log('Failed to start worker', e); logger.error(e, 'Failed to start worker'); throw e; } } function getSpecFromMap(height: number): number | undefined { return getWorkerService().getSpecFromMap(height); } function syncRuntimeService( specVersions: SpecVersion[], latestFinalizedHeight?: number, ): void { getWorkerService().syncRuntimeService( specVersions, latestFinalizedHeight, ); } export type IIndexerWorker = IBaseIndexerWorker & { syncRuntimeService: typeof syncRuntimeService; getSpecFromMap: typeof getSpecFromMap; }; (global as any).host = createWorkerHost([], { syncRuntimeService, getSpecFromMap, initWorker, }); ================================================ FILE: packages/node/src/indexer/x-provider/cachedProvider.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import { ProviderInterface } from '@polkadot/rpc-provider/types'; import { LRUCache } from 'lru-cache'; const MAX_CACHE_SIZE = 200; const CACHE_TTL = 60 * 1000; export function createCachedProvider< P extends ProviderInterface = ProviderInterface, >(provider: P): P { const cacheMap = new LRUCache>({ max: MAX_CACHE_SIZE, ttl: CACHE_TTL, }); const cachedMethodHandler = ( fn: ProviderInterface['send'], args: Parameters, ) => { const [method, params] = args; // If there are no parameters then we don't cache as we want the latest results if (!params.length) { return fn(...args); } const cacheKey = `${method}-${params[0]}`; if (cacheMap.has(cacheKey)) { return cacheMap.get(cacheKey); } const resultPromise = fn(...args); cacheMap.set(cacheKey, resultPromise); return resultPromise; }; const originalSend = provider.send.bind(provider); (provider as any).send = (...args: Parameters) => { const [method] = args; //caching state_getRuntimeVersion and chain_getHeader //because they are fetched twice per block if (['state_getRuntimeVersion', 'chain_getHeader'].includes(method)) { return cachedMethodHandler(originalSend, args); } return originalSend(...args); }; return provider; } ================================================ FILE: packages/node/src/indexer/x-provider/http.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 // overwrite the official Polkadot HttpProvider: https://github.com/polkadot-js/api/blob/master/packages/rpc-provider/src/http/index.ts // Use context and fetch to provide http1 keepAlive and maxSocket feature import { RpcCoder } from '@polkadot/rpc-provider/coder'; import defaults from '@polkadot/rpc-provider/defaults'; import { LRUCache } from '@polkadot/rpc-provider/lru'; import type { JsonRpcResponse, ProviderInterface, ProviderInterfaceCallback, ProviderInterfaceEmitCb, ProviderInterfaceEmitted, ProviderStats, } from '@polkadot/rpc-provider/types'; import { getLogger } from '@subql/node-core'; import { context } from 'fetch-h2'; const ERROR_SUBSCRIBE = 'HTTP Provider does not have subscriptions, use WebSockets instead'; const l = getLogger('http-provider'); /** * # @polkadot/rpc-provider * * @name HttpProvider * * @description The HTTP Provider allows sending requests using HTTP to an HTTP RPC server TCP port. It does not support subscriptions so you won't be able to listen to events such as new blocks or balance changes. It is usually preferable using the [[WsProvider]]. * * @example *
* * ```javascript * import Api from '@polkadot/api/promise'; * import { HttpProvider } from '@polkadot/rpc-provider'; * * const provider = new HttpProvider('http://127.0.0.1:9933'); * const api = new Api(provider); * ``` * * @see [[WsProvider]] */ export class HttpProvider implements ProviderInterface { readonly #callCache = new LRUCache(); readonly #coder: RpcCoder; readonly #endpoint: string; readonly #headers: Record; readonly #stats: ProviderStats; readonly #ctx: ReturnType; /** * @param {string} endpoint The endpoint url starting with http:// */ constructor( endpoint: string = defaults.HTTP_URL, headers: Record = {}, ) { if (!/^(https|http):\/\//.test(endpoint)) { throw new Error( `Endpoint should start with 'http://' or 'https://', received '${endpoint}'`, ); } this.#ctx = context({ http1: { keepAlive: true, maxSockets: 10, }, }); this.#coder = new RpcCoder(); this.#endpoint = endpoint; this.#headers = headers; this.#stats = { active: { requests: 0, subscriptions: 0 }, total: { bytesRecv: 0, bytesSent: 0, cached: 0, errors: 0, requests: 0, subscriptions: 0, timeout: 0, }, }; } /** * @summary `true` when this provider supports subscriptions */ get hasSubscriptions(): boolean { return false; } /** * @description Returns a clone of the object */ clone(): HttpProvider { return new HttpProvider(this.#endpoint, this.#headers); } /** * @description Manually connect from the connection */ async connect(): Promise { // noop } /** * @description Manually disconnect from the connection */ async disconnect(): Promise { // noop await this.#ctx.disconnectAll(); } /** * @description Returns the connection stats */ get stats(): ProviderStats { return this.#stats; } /** * @summary `true` when this provider supports clone() */ get isClonable(): boolean { return true; } /** * @summary Whether the node is connected or not. * @return {boolean} true if connected */ get isConnected(): boolean { return true; } /** * @summary Events are not supported with the HttpProvider, see [[WsProvider]]. * @description HTTP Provider does not have 'on' emitters. WebSockets should be used instead. */ // eslint-disable-next-line @typescript-eslint/no-unused-vars on(type: ProviderInterfaceEmitted, sub: ProviderInterfaceEmitCb): () => void { l.error( "HTTP Provider does not have 'on' emitters, use WebSockets instead", ); return (): void => { // noop }; } /** * @summary Send HTTP POST Request with Body to configured HTTP Endpoint. */ async send( method: string, params: unknown[], isCacheable?: boolean, ): Promise { this.#stats.total.requests++; const [, body] = this.#coder.encodeJson(method, params); let resultPromise: Promise | null = isCacheable ? (this.#callCache.get(body) as Promise) : null; // eslint-disable-next-line @typescript-eslint/no-misused-promises if (!resultPromise) { resultPromise = this._send(body); if (isCacheable) { this.#callCache.set(body, resultPromise); } } else { this.#stats.total.cached++; } return resultPromise; } async _send(body: string): Promise { this.#stats.active.requests++; this.#stats.total.bytesSent += body.length; try { const response = await this.#ctx.fetch(this.#endpoint, { body, headers: { Accept: 'application/json', // Recommend dropped in HTTP2 // 'Content-Length': `${body.length}`, 'Content-Type': 'application/json', ...this.#headers, }, method: 'POST', }); if (!response.ok) { throw new Error(`[${response.status}]: ${response.statusText}`); } const result = await response.text(); this.#stats.total.bytesRecv += result.length; const decoded = this.#coder.decodeResponse( JSON.parse(result) as JsonRpcResponse, ); this.#stats.active.requests--; return decoded; } catch (e) { this.#stats.active.requests--; this.#stats.total.errors++; throw e; } } /** * @summary Subscriptions are not supported with the HttpProvider, see [[WsProvider]]. */ // eslint-disable-next-line @typescript-eslint/no-unused-vars,@typescript-eslint/require-await async subscribe( types: string, method: string, params: unknown[], cb: ProviderInterfaceCallback, ): Promise { l.error(ERROR_SUBSCRIBE); throw new Error(ERROR_SUBSCRIBE); } /** * @summary Subscriptions are not supported with the HttpProvider, see [[WsProvider]]. */ // eslint-disable-next-line @typescript-eslint/no-unused-vars,@typescript-eslint/require-await async unsubscribe( type: string, method: string, id: number, ): Promise { l.error(ERROR_SUBSCRIBE); throw new Error(ERROR_SUBSCRIBE); } } ================================================ FILE: packages/node/src/indexer/x-provider/x-provider.spec.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import { WsProvider } from '@polkadot/rpc-provider'; import { delay } from '@subql/common'; import { createCachedProvider } from './cachedProvider'; import { HttpProvider } from './http'; const TEST_BLOCKHASH = '0x3b712c10ba98c5421a468d1411c94479381be307b7ecb5b2602cf0d395eb4292'; describe('ApiPromiseConnection', () => { let wsProvider: WsProvider; let httpProvider: HttpProvider; let wsSpy: jest.SpyInstance; let httpSpy: jest.SpyInstance; beforeAll(async () => { const ws = await new WsProvider('wss://kusama.api.onfinality.io/public-ws') .isReady; const http = new HttpProvider('https://kusama.api.onfinality.io/public'); // Spys created before the send function is modified wsSpy = jest.spyOn(ws, 'send'); httpSpy = jest.spyOn(http, 'send'); wsProvider = createCachedProvider(ws); httpProvider = createCachedProvider(http); }); afterEach(() => { wsSpy.mockClear(); httpSpy.mockClear(); }); afterAll(async () => { await Promise.all([wsProvider?.disconnect(), httpProvider?.disconnect()]); }); it('should not make duplicate requests for state_getRuntimeVersion on wsProvider', async () => { await Promise.all([ wsProvider.send('state_getRuntimeVersion', [TEST_BLOCKHASH]), wsProvider.send('state_getRuntimeVersion', [TEST_BLOCKHASH]), ]); expect(wsSpy).toHaveBeenCalledTimes(1); }); it('should not make duplicate requests for chain_getHeader on wsProvider', async () => { await Promise.all([ wsProvider.send('chain_getHeader', [TEST_BLOCKHASH]), wsProvider.send('chain_getHeader', [TEST_BLOCKHASH]), ]); expect(wsSpy).toHaveBeenCalledTimes(1); }); it('should not make duplicate requests for state_getRuntimeVersion on httpProvider', async () => { await Promise.all([ httpProvider.send('state_getRuntimeVersion', [TEST_BLOCKHASH]), httpProvider.send('state_getRuntimeVersion', [TEST_BLOCKHASH]), ]); expect(httpSpy).toHaveBeenCalledTimes(1); }); it('should not make duplicate requests for chain_getHeader on httpProvider', async () => { await Promise.all([ httpProvider.send('chain_getHeader', [TEST_BLOCKHASH]), httpProvider.send('chain_getHeader', [TEST_BLOCKHASH]), ]); expect(httpSpy).toHaveBeenCalledTimes(1); }); it('should not cache requests if there are no args', async () => { const result1 = await httpProvider.send('chain_getHeader', []); // Enough time for a new block await delay(7); const result2 = await httpProvider.send('chain_getHeader', []); expect(httpSpy).toHaveBeenCalledTimes(2); expect(result1).not.toEqual(result2); }, 10000); }); ================================================ FILE: packages/node/src/init.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import { NestFactory } from '@nestjs/core'; import { notifyUpdates } from '@subql/common'; import { exitWithError, getLogger, getValidPort, IBlockchainService, NestLogger, ProjectService, FetchService, DictionaryService, } from '@subql/node-core'; import { AppModule } from './app.module'; import { SubstrateDictionaryService } from './indexer/dictionary'; import { RuntimeService } from './indexer/runtime/runtimeService'; import { yargsOptions } from './yargs'; const pjson = require('../package.json'); const { argv } = yargsOptions; const logger = getLogger('subql-node'); notifyUpdates(pjson, logger); export async function bootstrap(): Promise { const port = await getValidPort(argv.port); try { const app = await NestFactory.create(AppModule, { logger: new NestLogger(!!argv.debug), }); await app.init(); const projectService: ProjectService = app.get('IProjectService'); const fetchService = app.get(FetchService); const runtimeService: RuntimeService = app.get('RuntimeService'); const dictionaryService: SubstrateDictionaryService = app.get(DictionaryService); const blockchainService: IBlockchainService = app.get('IBlockchainService'); // Initialise async services, we do this here rather than in factories, so we can capture one off events await projectService.init(); const startHeight = projectService.startHeight; const { blockHeight: finalizedHeight } = await blockchainService.getFinalizedHeader(); await runtimeService.init(startHeight, finalizedHeight, dictionaryService); await fetchService.init(startHeight); app.enableShutdownHooks(); await app.listen(port); logger.info(`Node started on port: ${port}`); } catch (e) { exitWithError(new Error(`Node failed to start`, { cause: e }), logger); } } ================================================ FILE: packages/node/src/main.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import { initLogger } from '@subql/node-core/logger'; import { yargsOptions } from './yargs'; const { argv } = yargsOptions; // initLogger is imported from true path, to make sure getLogger (or other logger values that relies on logger) isn't initialised initLogger( argv.debug, argv.outputFmt as 'json' | 'colored', argv.logLevel as string | undefined, ); const { setProfiler } = require('@subql/node-core'); setProfiler(argv.profiler); // Check for no subcommand if (!argv._[0]) { // Lazy import, to allow logger to be initialised before bootstrap() // As bootstrap runs services that requires logger const { bootstrap } = require('./init'); void bootstrap(); } ================================================ FILE: packages/node/src/subcommands/forceClean.init.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import { forceClean } from '@subql/node-core'; import { ForceCleanModule } from './forceClean.module'; export const forceCleanInit = (): Promise => forceClean(ForceCleanModule); ================================================ FILE: packages/node/src/subcommands/forceClean.module.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import { Module } from '@nestjs/common'; import { DbModule, ForceCleanFeatureModule } from '@subql/node-core'; import { ConfigureModule } from '../configure/configure.module'; @Module({ imports: [ DbModule.forRoot(), ConfigureModule.register(), ForceCleanFeatureModule, ], controllers: [], }) export class ForceCleanModule {} ================================================ FILE: packages/node/src/subcommands/reindex.init.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import { Module } from '@nestjs/common'; import { EventEmitterModule } from '@nestjs/event-emitter'; import { reindexInit as baseReindexInit, DbModule } from '@subql/node-core'; import { ConfigureModule } from '../configure/configure.module'; import { ReindexFeatureModule } from './reindex.module'; @Module({ imports: [ DbModule.forRoot(), ConfigureModule.register(), ReindexFeatureModule, EventEmitterModule.forRoot(), ], controllers: [], }) export class ReindexModule {} export const reindexInit = (targetHeight: number): Promise => baseReindexInit(ReindexModule, targetHeight); ================================================ FILE: packages/node/src/subcommands/reindex.module.spec.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import path from 'node:path'; import { EventEmitterModule } from '@nestjs/event-emitter'; import { Test, TestingModule } from '@nestjs/testing'; import { LocalReader, ReaderFactory } from '@subql/common'; import { DbModule, NodeConfig } from '@subql/node-core'; import { ConfigureModule } from '../configure/configure.module'; import { createSubQueryProject } from '../configure/SubqueryProject'; import { ReindexFeatureModule } from './reindex.module'; describe('ReindexModule', () => { let module: TestingModule; const nodeConfig = new NodeConfig({ subquery: 'test' } as any); afterEach(async () => { await module?.close(); }); it('should compile without error', async () => { const projectDirV1_0_0 = path.resolve( __dirname, '../../test/projectFixture/v1.0.0', ); const reader = await ReaderFactory.create(projectDirV1_0_0); const rawManifest = await reader.getProjectSchema(); const project = await createSubQueryProject( projectDirV1_0_0, rawManifest, reader, (reader as LocalReader).root, { endpoint: ['wss://moonriver.api.onfinality.io/public-ws'], }, ); module = await Test.createTestingModule({ imports: [ DbModule.forRoot(), ConfigureModule.registerManual(nodeConfig, project), EventEmitterModule.forRoot(), ReindexFeatureModule, ], }).compile(); expect(module).toBeDefined(); }, 20_000); }); ================================================ FILE: packages/node/src/subcommands/reindex.module.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import { Module } from '@nestjs/common'; import { EventEmitter2 } from '@nestjs/event-emitter'; import { ForceCleanService, ReindexService, StoreService, PoiService, ConnectionPoolService, NodeConfig, ConnectionPoolStateManager, storeModelFactory, DsProcessorService, UnfinalizedBlocksService, DynamicDsService, MultiChainRewindService, } from '@subql/node-core'; import { Sequelize } from '@subql/x-sequelize'; import { BlockchainService } from '../blockchain.service'; import { ApiService } from '../indexer/api.service'; import { RuntimeService } from '../indexer/runtime/runtimeService'; @Module({ providers: [ { provide: 'IStoreModelProvider', useFactory: storeModelFactory, inject: [NodeConfig, EventEmitter2, Sequelize], }, StoreService, ReindexService, PoiService, ForceCleanService, { provide: 'UnfinalizedBlocksService', useClass: UnfinalizedBlocksService, }, { provide: 'DynamicDsService', useClass: DynamicDsService, }, DsProcessorService, ConnectionPoolStateManager, ConnectionPoolService, { // Used to work with DI for unfinalizedBlocksService but not used with reindex provide: 'APIService', useFactory: ApiService.init, inject: [ 'ISubqueryProject', ConnectionPoolService, EventEmitter2, NodeConfig, ], }, { provide: 'RuntimeService', useClass: RuntimeService, }, { provide: 'IBlockchainService', useClass: BlockchainService, }, MultiChainRewindService, ], controllers: [], }) export class ReindexFeatureModule {} ================================================ FILE: packages/node/src/subcommands/testing.init.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import { exitWithError, getLogger } from '@subql/node-core'; import { ConfigureModule } from '../configure/configure.module'; import { TestingService } from './testing.service'; const logger = getLogger('Testing'); export async function testingInit(): Promise { try { const { nodeConfig, project } = await ConfigureModule.getInstance(); const testingService = new TestingService(nodeConfig, project); await testingService.run(); } catch (e) { exitWithError(new Error('Testing failed', { cause: e }), logger); } process.exit(0); } ================================================ FILE: packages/node/src/subcommands/testing.module.spec.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import path from 'node:path'; import { EventEmitterModule } from '@nestjs/event-emitter'; import { ScheduleModule } from '@nestjs/schedule'; import { Test, TestingModule } from '@nestjs/testing'; import { LocalReader, ReaderFactory } from '@subql/common'; import { DbModule, NodeConfig } from '@subql/node-core'; import { ConfigureModule } from '../configure/configure.module'; import { createSubQueryProject } from '../configure/SubqueryProject'; import { TestingFeatureModule } from './testing.module'; describe('TestingModule', () => { let module: TestingModule; const nodeConfig = new NodeConfig({ subquery: 'test' } as any); afterEach(async () => { await module?.close(); }); it('should compile without error', async () => { const projectDirV1_0_0 = path.resolve( __dirname, '../../test/projectFixture/v1.0.0', ); const reader = await ReaderFactory.create(projectDirV1_0_0); const rawManifest = await reader.getProjectSchema(); const project = await createSubQueryProject( projectDirV1_0_0, rawManifest, reader, (reader as LocalReader).root, { endpoint: ['wss://moonriver.api.onfinality.io/public-ws'], }, ); module = await Test.createTestingModule({ imports: [ DbModule.forRoot(), ConfigureModule.registerManual(nodeConfig, project), EventEmitterModule.forRoot(), ScheduleModule.forRoot(), TestingFeatureModule, ], }).compile(); expect(module).toBeDefined(); }, 20_000); }); ================================================ FILE: packages/node/src/subcommands/testing.module.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import { Module } from '@nestjs/common'; import { EventEmitter2 } from '@nestjs/event-emitter'; import { ConnectionPoolService, TestRunner, NodeConfig, ProjectService, TestingCoreModule, DsProcessorService, DynamicDsService, UnfinalizedBlocksService, MultiChainRewindService, } from '@subql/node-core'; import { BlockchainService } from '../blockchain.service'; import { ApiService } from '../indexer/api.service'; import { IndexerManager } from '../indexer/indexer.manager'; import { RuntimeService } from '../indexer/runtime/runtimeService'; @Module({ imports: [TestingCoreModule], providers: [ { provide: 'IProjectService', useClass: ProjectService, }, { provide: 'APIService', useFactory: ApiService.init, inject: [ 'ISubqueryProject', ConnectionPoolService, EventEmitter2, NodeConfig, ], }, { provide: 'IUnfinalizedBlocksService', useClass: UnfinalizedBlocksService, }, { provide: 'RuntimeService', useClass: RuntimeService, }, { provide: 'IBlockchainService', useClass: BlockchainService, }, TestRunner, { provide: 'IIndexerManager', useClass: IndexerManager, }, DsProcessorService, DynamicDsService, MultiChainRewindService, ], controllers: [], exports: [TestRunner], }) export class TestingFeatureModule {} ================================================ FILE: packages/node/src/subcommands/testing.service.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import { Inject, Injectable, Module } from '@nestjs/common'; import { NestFactory } from '@nestjs/core'; import { EventEmitterModule } from '@nestjs/event-emitter'; import { ScheduleModule } from '@nestjs/schedule'; import { ApiPromise } from '@polkadot/api'; import { NodeConfig, TestingService as BaseTestingService, NestLogger, TestRunner, ProjectService, DbModule, } from '@subql/node-core'; import { SubstrateDatasource } from '@subql/types'; import { ConfigureModule } from '../configure/configure.module'; import { SubqueryProject } from '../configure/SubqueryProject'; import { ApiAt, BlockContent, LightBlockContent } from '../indexer/types'; import { TestingFeatureModule } from './testing.module'; @Module({ imports: [ DbModule.forRoot(), ConfigureModule.register(), EventEmitterModule.forRoot(), ScheduleModule.forRoot(), TestingFeatureModule, ], controllers: [], }) export class TestingModule {} @Injectable() export class TestingService extends BaseTestingService< ApiPromise, ApiAt, BlockContent | LightBlockContent, SubstrateDatasource > { constructor( nodeConfig: NodeConfig, @Inject('ISubqueryProject') project: SubqueryProject, ) { super(nodeConfig, project); } async getTestRunner(): Promise< [ close: () => Promise, runner: TestRunner, ] > { const testContext = await NestFactory.createApplicationContext( TestingModule, { logger: new NestLogger(!!this.nodeConfig.debug), }, ); await testContext.init(); const projectService: ProjectService = testContext.get('IProjectService'); await projectService.init(); return [testContext.close.bind(testContext), testContext.get(TestRunner)]; } } ================================================ FILE: packages/node/src/utils/project.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import fs from 'fs'; import path from 'path'; import { LocalReader, loadFromJsonOrYaml } from '@subql/common'; import { ChainTypes, parseChainTypes, SubstrateRuntimeHandler, SubstrateCustomHandler, SubstrateHandler, SubstrateHandlerKind, isRuntimeDs, isCustomDs, } from '@subql/common-substrate'; import { SANDBOX_DEFAULT_BUILTINS, saveFile } from '@subql/node-core'; import { Reader } from '@subql/types-core'; import yaml from 'js-yaml'; import { NodeVM, VMScript } from 'vm2'; import { SubqueryProject, SubstrateProjectDs, } from '../configure/SubqueryProject'; export function isBaseHandler( handler: SubstrateHandler, ): handler is SubstrateRuntimeHandler { return Object.values(SubstrateHandlerKind).includes(handler.kind); } export function isCustomHandler( handler: SubstrateHandler, ): handler is SubstrateCustomHandler { return !isBaseHandler(handler); } export async function getChainTypes( reader: Reader, root: string, file: string, ): Promise { // If the project is load from local, we will direct load them let raw: unknown; if (reader instanceof LocalReader) { raw = loadChainTypes(file, root); } else { // If it is stored in ipfs or other resources, we will use the corresponding reader to read the file // Because ipfs not provide extension of the file, it is difficult to determine its format // We will use yaml.load to try to load the script and parse them to supported chain types // if it failed, we will give it another attempt, and assume the script written in js // we will download it to a temp folder, and load them within sandbox const res = await reader.getFile(file); try { raw = yaml.load(res); } catch (e) { const chainTypesPath = await saveFile(reader, root, file, res); raw = loadChainTypesFromJs(chainTypesPath); //root not required, as it been packed in single js } } return parseChainTypes(raw); } export function loadChainTypes(file: string, projectRoot: string): unknown { const { ext } = path.parse(file); const filePath = path.resolve(projectRoot, file); if (fs.existsSync(filePath)) { if (ext === '.js' || ext === '.cjs') { //load can be self contained js file, or js depend on node_module which will require project root return loadChainTypesFromJs(filePath, projectRoot); } else if (ext === '.yaml' || ext === '.yml' || ext === '.json') { return loadFromJsonOrYaml(filePath); } else { throw new Error(`Extension ${ext} not supported`); } } else { throw new Error(`Load from file ${file} not exist`); } } export function loadChainTypesFromJs( filePath: string, requireRoot?: string, ): unknown { const { base, ext } = path.parse(filePath); const root = requireRoot ?? path.dirname(filePath); const vm = new NodeVM({ console: 'redirect', wasm: false, sandbox: {}, require: { context: 'sandbox', external: true, builtin: SANDBOX_DEFAULT_BUILTINS, root: root, resolve: (moduleName: string) => { return require.resolve(moduleName, { paths: [root] }); }, }, wrapper: 'commonjs', sourceExtensions: ['js', 'cjs'], }); let rawContent: unknown; try { const script = new VMScript( `module.exports = require('${filePath}').default;`, path.join(root, 'sandbox'), ).compile(); rawContent = vm.run(script) as unknown; } catch (err) { throw new Error(`\n NodeVM error: ${err}`); } if (rawContent === undefined) { throw new Error( `There was no default export found from required ${base} file`, ); } return rawContent; } function dsContainsNonEventHandlers(ds: SubstrateProjectDs): boolean { if (isRuntimeDs(ds)) { return !!ds.mapping.handlers.find( (handler) => handler.kind !== SubstrateHandlerKind.Event, ); } else if (isCustomDs(ds)) { // TODO this can be improved upon in the future. return true; } return true; } export function isOnlyEventHandlers(project: SubqueryProject): boolean { const hasNonEventHandler = !!project.dataSources.find((ds) => dsContainsNonEventHandlers(ds), ); const hasNonEventTemplate = !!project.templates.find((ds) => dsContainsNonEventHandlers(ds as SubstrateProjectDs), ); return !hasNonEventHandler && !hasNonEventTemplate; } ================================================ FILE: packages/node/src/utils/substrate.test.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import { ApiPromise, WsProvider } from '@polkadot/api'; import { getLogger } from '@subql/node-core'; import { stringToArray } from 'cron-converter'; import { fetchBlocksArray, fetchBlocksBatches, filterExtrinsic, getBlockByHeight, getHeaderForHash, getTimestamp, } from './substrate'; const ENDPOINT_POLKADOT = 'wss://rpc.polkadot.io'; const ENDPOINT_KARURA = 'wss://karura-rpc-0.aca-api.network'; const ENDPOINT_SHIDEN = 'wss://rpc.shiden.astar.network'; jest.setTimeout(100000); describe('substrate utils', () => { let api: ApiPromise; beforeAll(async () => { const provider = new WsProvider(ENDPOINT_POLKADOT); api = await ApiPromise.create({ provider }); }); afterAll(() => api?.disconnect()); it('invalid timestamp throws error on cron creation', () => { const cronString = 'invalid cron'; expect(() => { try { stringToArray(cronString); } catch (e) { throw new Error(`invalid cron expression: ${cronString}`); } }).toThrow(Error); }); // This endpoint was having issue when fetch block 3467086, but fixed now // Keep the test for further debugging it.skip('validate block hash after fetch', async () => { const provider = new WsProvider(ENDPOINT_KARURA); const api = await ApiPromise.create({ provider }); await expect(fetchBlocksArray(api, [3467085, 3467086])).rejects.toThrow( 'fetched block header hash 0xdcdd89927d8a348e00257e1ecc8617f45edb5118efff3ea2f9961b2ad9b7690a is not match with blockHash 0xd13a656c8c4cd7a6f7d03db8209eee9c597edffba1b7ee2dc40844089e10b21a at block 3467086', ); // This test creates another api instance, so we need to disconnect manually await api.disconnect(); }); it('filters a signed extrinsic', async () => { const [iblock] = await fetchBlocksBatches(api, [16832854]); const block = iblock.block; expect( filterExtrinsic(block.extrinsics[0], { isSigned: true }), ).toBeFalsy(); // Timestamp set expect( filterExtrinsic(block.extrinsics[2], { isSigned: true }), ).toBeTruthy(); expect( filterExtrinsic(block.extrinsics[0], { isSigned: false }), ).toBeTruthy(); expect( filterExtrinsic(block.extrinsics[2], { isSigned: false }), ).toBeFalsy(); }); it('decode fail message', async () => { const logger = getLogger('fetch'); const consoleSpy = jest.spyOn(logger, 'error'); const provider = new WsProvider(ENDPOINT_KARURA); const api = await ApiPromise.create({ provider }); await expect(getBlockByHeight(api, 86614)).rejects.toThrow( /Unable to decode|failed decoding|unknown type/, ); expect(consoleSpy).toHaveBeenCalledWith( expect.stringMatching(/Update the chain types/), ); consoleSpy.mockRestore(); await api.disconnect(); }); it('decode normal message', async () => { const provider = new WsProvider(ENDPOINT_KARURA); const api = await ApiPromise.create({ provider }); expect(await getBlockByHeight(api, 50710)).toBeTruthy(); await api.disconnect(); }); it('return undefined if no timestamp set extrinsic', async () => { const provider = new WsProvider(ENDPOINT_SHIDEN); const api = await ApiPromise.create({ provider }); const block1 = await getBlockByHeight(api, 1); expect(getTimestamp(block1)).toBeUndefined(); await api.disconnect(); }); it('return defined if no timestamp set extrinsic', async () => { const provider = new WsProvider(ENDPOINT_SHIDEN); const api = await ApiPromise.create({ provider }); const block1 = await getBlockByHeight(api, 999999); const { timestamp } = await getHeaderForHash( api, block1.block.header.hash.toString(), ); expect(timestamp).toBeDefined(); await api.disconnect(); }); }); ================================================ FILE: packages/node/src/utils/substrate.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import assert from 'assert'; import { ApiPromise } from '@polkadot/api'; import { Vec } from '@polkadot/types'; import '@polkadot/api-augment/substrate'; import { BlockHash, EventRecord, RuntimeVersion, SignedBlock, Header as SubstrateHeader, } from '@polkadot/types/interfaces'; import { BN, BN_THOUSAND, BN_TWO, bnMin } from '@polkadot/util'; import { getLogger, IBlock, Header, filterBlockTimestamp, } from '@subql/node-core'; import { SpecVersionRange, SubstrateBlockFilter, SubstrateCallFilter, SubstrateEventFilter, SubstrateBlock, SubstrateEvent, SubstrateExtrinsic, BlockHeader, } from '@subql/types'; import { merge } from 'lodash'; import { SubqlProjectBlockFilter } from '../configure/SubqueryProject'; import { ApiPromiseConnection } from '../indexer/apiPromise.connection'; import { BlockContent, LightBlockContent } from '../indexer/types'; const logger = getLogger('fetch'); const INTERVAL_THRESHOLD = BN_THOUSAND.div(BN_TWO); const DEFAULT_TIME = new BN(6_000); const A_DAY = new BN(24 * 60 * 60 * 1000); type MissTsHeader = Omit; export function substrateHeaderToHeader(header: SubstrateHeader): MissTsHeader { return { blockHeight: header.number.toNumber(), blockHash: header.hash.toHex(), parentHash: header.parentHash.toHex(), }; } export function substrateBlockToHeader(block: SignedBlock): Header { const timestamp = getTimestamp(block); assert( timestamp, 'Failed to retrieve a reliable timestamp. This issue is more likely to occur on networks like Shiden', ); return { ...substrateHeaderToHeader(block.block.header), timestamp, }; } export function wrapBlock( signedBlock: SignedBlock, events: EventRecord[], specVersion: number, ): SubstrateBlock { return merge(signedBlock, { timestamp: getTimestamp(signedBlock), specVersion: specVersion, events, }); } export function getTimestamp({ block: { extrinsics }, }: SignedBlock): Date | undefined { // extrinsics can be undefined when fetching light blocks if (extrinsics) { for (const e of extrinsics) { const { method: { method, section }, } = e; if (section === 'timestamp' && method === 'set') { const date = new Date(e.args[0].toJSON() as number); if (isNaN(date.getTime())) { throw new Error('timestamp args type wrong'); } return date; } } } // For network that doesn't use timestamp-set, return undefined // See test `return undefined if no timestamp set extrinsic` // E.g Shiden return undefined; } export async function getHeaderForHash( api: ApiPromise, blockHash: string, ): Promise
{ const block = await api.rpc.chain.getBlock(blockHash).catch((e) => { logger.error( `failed to fetch Block hash="${blockHash}" ${getApiDecodeErrMsg(e.message)}`, ); throw ApiPromiseConnection.handleError(e); }); return substrateBlockToHeader(block); } export function wrapExtrinsics( wrappedBlock: SubstrateBlock, allEvents: EventRecord[], ): SubstrateExtrinsic[] { const groupedEvents = groupEventsByExtrinsic(allEvents); return wrappedBlock.block.extrinsics.map((extrinsic, idx) => { const events = groupedEvents[idx]; return { idx, extrinsic, block: wrappedBlock, events, success: getExtrinsicSuccess(events), }; }); } function getExtrinsicSuccess(events: EventRecord[]): boolean { return ( events.findIndex((evt) => evt.event.method === 'ExtrinsicSuccess') > -1 ); } function groupEventsByExtrinsic( events: EventRecord[], ): Record { return events.reduce( (acc, event) => { const extrinsicIdx = event.phase.isApplyExtrinsic ? event.phase.asApplyExtrinsic.toNumber() : undefined; if (extrinsicIdx === undefined) { return acc; } acc[extrinsicIdx] ??= []; acc[extrinsicIdx].push(event); return acc; }, {} as Record, ); } export function wrapEvents( extrinsics: SubstrateExtrinsic[], events: EventRecord[], block: SubstrateBlock, ): SubstrateEvent[] { return events.reduce((acc, event, idx) => { const { phase } = event; const wrappedEvent: SubstrateEvent = merge(event, { idx, block }); if (phase.isApplyExtrinsic) { wrappedEvent.extrinsic = extrinsics[phase.asApplyExtrinsic.toNumber()]; } acc.push(wrappedEvent); return acc; }, [] as SubstrateEvent[]); } function checkSpecRange( specVersionRange: SpecVersionRange, specVersion: number, ) { const [lowerBond, upperBond] = specVersionRange; return ( (lowerBond === undefined || lowerBond === null || specVersion >= lowerBond) && (upperBond === undefined || upperBond === null || specVersion <= upperBond) ); } export function filterBlock( block: SubstrateBlock, filter?: SubstrateBlockFilter, ): SubstrateBlock | undefined { if (!filter) return block; if (!filterBlockModulo(block, filter)) return; if ( block.timestamp && !filterBlockTimestamp( block.timestamp.getTime(), filter as SubqlProjectBlockFilter, ) ) { return; } return filter.specVersion === undefined || block.specVersion === undefined || checkSpecRange(filter.specVersion, block.specVersion) ? block : undefined; } export function filterBlockModulo( block: SubstrateBlock, filter: SubstrateBlockFilter, ): boolean { const { modulo } = filter; if (!modulo) return true; return block.block.header.number.toNumber() % modulo === 0; } export function filterExtrinsic( { block, extrinsic, success }: SubstrateExtrinsic, filter?: SubstrateCallFilter, ): boolean { if (!filter) return true; return ( (filter.specVersion === undefined || block.specVersion === undefined || checkSpecRange(filter.specVersion, block.specVersion)) && (filter.module === undefined || extrinsic.method.section === filter.module) && (filter.method === undefined || extrinsic.method.method === filter.method) && (filter.success === undefined || success === filter.success) && (filter.isSigned === undefined || extrinsic.isSigned === filter.isSigned) ); } export function filterExtrinsics( extrinsics: SubstrateExtrinsic[], filterOrFilters: SubstrateCallFilter | SubstrateCallFilter[] | undefined, ): SubstrateExtrinsic[] { if ( !filterOrFilters || (filterOrFilters instanceof Array && filterOrFilters.length === 0) ) { return extrinsics; } const filters = filterOrFilters instanceof Array ? filterOrFilters : [filterOrFilters]; return extrinsics.filter((extrinsic) => filters.find((filter) => filterExtrinsic(extrinsic, filter)), ); } export function filterEvent( { block, event }: SubstrateEvent, filter?: SubstrateEventFilter, ): boolean { if (!filter) return true; return ( (filter.specVersion === undefined || block.specVersion === undefined || checkSpecRange(filter.specVersion, block.specVersion)) && (filter.module ? event.section === filter.module : true) && (filter.method ? event.method === filter.method : true) ); } export function filterEvents( events: SubstrateEvent[], filterOrFilters?: SubstrateEventFilter | SubstrateEventFilter[], ): SubstrateEvent[] { if ( !filterOrFilters || (filterOrFilters instanceof Array && filterOrFilters.length === 0) ) { return events; } const filters = filterOrFilters instanceof Array ? filterOrFilters : [filterOrFilters]; return events.filter((event) => filters.find((filter) => filterEvent(event, filter)), ); } // TODO: prefetch all known runtime upgrades at once export async function prefetchMetadata( api: ApiPromise, hash: BlockHash, ): Promise { await api.getBlockRegistry(hash); } /** * * @param api * @param startHeight * @param endHeight * @param overallSpecVer exists if all blocks in the range have same parant specVersion */ export async function getBlockByHeight( api: ApiPromise, height: number, ): Promise { const blockHash = await api.rpc.chain.getBlockHash(height).catch((e) => { logger.error(`failed to fetch BlockHash ${height}`); throw ApiPromiseConnection.handleError(e); }); const block = await api.rpc.chain.getBlock(blockHash).catch((e) => { logger.error( `failed to fetch Block hash="${blockHash}" height="${height}"${getApiDecodeErrMsg(e.message)}`, ); throw ApiPromiseConnection.handleError(e); }); // validate block is valid if (block.block.header.hash.toHex() !== blockHash.toHex()) { throw new Error( `fetched block header hash ${block.block.header.hash.toHex()} is not match with blockHash ${blockHash.toHex()} at block ${height}. This is likely a problem with the rpc provider.`, ); } return block; } export async function getHeaderByHeight( api: ApiPromise, height: number, ): Promise { const blockHash = await api.rpc.chain.getBlockHash(height).catch((e) => { logger.error(`failed to fetch BlockHash ${height}`); throw ApiPromiseConnection.handleError(e); }); const header = await api.rpc.chain.getHeader(blockHash).catch((e) => { logger.error( `failed to fetch Block Header hash="${blockHash}" height="${height}"`, ); throw ApiPromiseConnection.handleError(e); }); // validate block is valid if (header.hash.toHex() !== blockHash.toHex()) { throw new Error( `fetched block header hash ${header.hash.toHex()} is not match with blockHash ${blockHash.toHex()} at block ${height}. This is likely a problem with the rpc provider.`, ); } return header; } export async function fetchBlocksArray( api: ApiPromise, blockArray: number[], ): Promise { return Promise.all( blockArray.map(async (height) => getBlockByHeight(api, height)), ); } export async function fetchHeaderArray( api: ApiPromise, blockArray: number[], ): Promise { return Promise.all( blockArray.map(async (height) => getHeaderByHeight(api, height)), ); } export async function fetchEventsRange( api: ApiPromise, hashs: BlockHash[], ): Promise[]> { return Promise.all( hashs.map((hash) => api.query.system.events.at(hash).catch((e) => { logger.error( `failed to fetch events at block ${hash}${getApiDecodeErrMsg(e.message)}`, ); throw ApiPromiseConnection.handleError(e); }), ), ); } export async function fetchRuntimeVersionRange( api: ApiPromise, hashs: BlockHash[], ): Promise { return Promise.all( hashs.map((hash) => api.rpc.state.getRuntimeVersion(hash).catch((e) => { logger.error(`failed to fetch RuntimeVersion at block ${hash}`); throw ApiPromiseConnection.handleError(e); }), ), ); } export async function fetchBlocksBatches( api: ApiPromise, blockArray: number[], overallSpecVer?: number, ): Promise[]> { const blocks = await fetchBlocksArray(api, blockArray); const blockHashs = blocks.map((b) => b.block.header.hash); const parentBlockHashs = blocks.map((b) => b.block.header.parentHash); // If overallSpecVersion passed, we don't need to use api to get runtimeVersions // wrap block with specVersion // If specVersion changed, we also not guarantee in this batch contains multiple runtimes, // therefore we better to fetch runtime over all blocks const [blockEvents, runtimeVersions] = await Promise.all([ fetchEventsRange(api, blockHashs), overallSpecVer !== undefined // note, we need to be careful if spec version is 0 ? undefined : fetchRuntimeVersionRange(api, parentBlockHashs), ]); return blocks.map((block, idx) => { const events = blockEvents[idx]; const parentSpecVersion = overallSpecVer ?? runtimeVersions?.[idx].specVersion.toNumber(); assert(parentSpecVersion !== undefined, 'parentSpecVersion is undefined'); const wrappedBlock = wrapBlock(block, events.toArray(), parentSpecVersion); const wrappedExtrinsics = wrapExtrinsics(wrappedBlock, events); const wrappedEvents = wrapEvents(wrappedExtrinsics, events, wrappedBlock); return { getHeader: () => substrateBlockToHeader(wrappedBlock), block: { block: wrappedBlock, extrinsics: wrappedExtrinsics, events: wrappedEvents, }, }; }); } // TODO why is fetchBlocksBatches a breadth first function rather than depth? export async function fetchLightBlock( api: ApiPromise, height: number, ): Promise> { const blockHash = await api.rpc.chain.getBlockHash(height).catch((e) => { logger.error(`failed to fetch BlockHash ${height}`); throw ApiPromiseConnection.handleError(e); }); const [header, events, timestamp] = await Promise.all([ api.rpc.chain.getHeader(blockHash).catch((e) => { logger.error( `failed to fetch Block Header hash="${blockHash}" height="${height}"`, ); throw ApiPromiseConnection.handleError(e); }), api.query.system.events.at(blockHash).catch((e) => { logger.error(`failed to fetch events at block ${blockHash}`); throw ApiPromiseConnection.handleError(e); }), // TODO: Maybe api.query.timestamp.now.at(blockHash) is the only option. If we do use it we need sufficient tests and errors if a chain doesn't support getting the timestamp. (await api.at(blockHash)).query.timestamp.now(), ]); const blockHeader: BlockHeader = { block: { header }, events: events.toArray(), }; return { block: { block: blockHeader, events: events.map((evt, idx) => merge(evt, { idx, block: blockHeader })), }, getHeader: () => { return { ...substrateHeaderToHeader(blockHeader.block.header), timestamp: new Date(timestamp.toNumber()), }; }, }; } export async function fetchBlocksBatchesLight( api: ApiPromise, blockArray: number[], ): Promise[]> { return Promise.all(blockArray.map((height) => fetchLightBlock(api, height))); } export function calcInterval(api: ApiPromise): BN { return bnMin( A_DAY, api.consts.babe?.expectedBlockTime || (api.consts.difficulty?.targetBlockTime as any) || api.consts.subspace?.expectedBlockTime || (api.consts.timestamp?.minimumPeriod.gte(INTERVAL_THRESHOLD) ? api.consts.timestamp.minimumPeriod.mul(BN_TWO) : api.query.parachainSystem ? DEFAULT_TIME.mul(BN_TWO) : DEFAULT_TIME), ); } function getApiDecodeErrMsg(errMsg: string): string { const decodedErrMsgs = [ 'Unable to decode', 'failed decoding', 'unknown type', ]; if (!decodedErrMsgs.find((decodedErrMsg) => errMsg.includes(decodedErrMsg))) { return ''; } return ( `\nThis is because the block cannot be decoded. To solve this you can either:` + '\n* Skip the block' + '\n* Update the chain types. You can test this by viewing the block with https://polkadot.js.org/apps/' + '\nFor further information please read the docs: https://academy.subquery.network/' ); } ================================================ FILE: packages/node/src/utils/test.utils.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 // Utils for integration tests import { DynamicModule, INestApplication } from '@nestjs/common'; import { EventEmitterModule } from '@nestjs/event-emitter'; import { ScheduleModule } from '@nestjs/schedule'; import { Test } from '@nestjs/testing'; import { CoreModule, DbModule, HistoricalMode, NodeConfig, registerApp, } from '@subql/node-core'; import { ConfigureModule } from '../configure/configure.module'; import { createSubQueryProject, SubqueryProject, } from '../configure/SubqueryProject'; import { FetchModule } from '../indexer/fetch.module'; const mockInstance = async ( cid: string, schemaName: string, historical: HistoricalMode, useSubscription: boolean, timestampField: boolean, ) => { const argv: Record = { _: [], historical, subquery: `ipfs://${cid}`, dbSchema: schemaName, allowSchemaMigration: true, ipfs: 'https://unauthipfs.subquery.network/ipfs/api/v0', networkEndpoint: 'https://rpc.polkadot.io/public', timestampField, subscription: useSubscription, // unfinalizedBlocks: false, }; return registerApp( argv, createSubQueryProject, () => {}, //jest.fn(), '', ); }; async function mockRegister( cid: string, schemaName: string, historical: HistoricalMode, useSubscription: boolean, timestampField: boolean, ): Promise { const { nodeConfig, project } = await mockInstance( cid, schemaName, historical, useSubscription, timestampField, ); return { module: ConfigureModule, providers: [ { provide: NodeConfig, useValue: nodeConfig, }, { provide: 'ISubqueryProject', useValue: project, }, { provide: 'IProjectUpgradeService', useValue: project, }, { provide: 'Null', useValue: null, }, ], exports: [NodeConfig, 'ISubqueryProject', 'IProjectUpgradeService', 'Null'], }; } export async function prepareApp( schemaName: string, cid: string, disableHistorical = false, useSubscription = false, timestampField = false, ): Promise { const m = await Test.createTestingModule({ imports: [ DbModule.forRoot(), EventEmitterModule.forRoot(), mockRegister( cid, schemaName, disableHistorical ? false : 'height', useSubscription, timestampField, ), ScheduleModule.forRoot(), CoreModule, FetchModule, ], controllers: [], }).compile(); const app = m.createNestApplication(); await app.init(); return app; } ================================================ FILE: packages/node/src/yargs.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import { yargsBuilder } from '@subql/node-core/yargs'; export const yargsOptions = yargsBuilder({ initTesting: () => { // lazy import to make sure logger is instantiated before all other services // eslint-disable-next-line @typescript-eslint/no-var-requires const { testingInit } = require('./subcommands/testing.init'); return testingInit(); }, initForceClean: () => { // lazy import to make sure logger is instantiated before all other services // eslint-disable-next-line @typescript-eslint/no-var-requires const { forceCleanInit } = require('./subcommands/forceClean.init'); return forceCleanInit(); }, initReindex: (targetHeight: number) => { // lazy import to make sure logger is instantiated before all other services // eslint-disable-next-line @typescript-eslint/no-var-requires const { reindexInit } = require('./subcommands/reindex.init'); return reindexInit(targetHeight); }, }); ================================================ FILE: packages/node/test/jest-e2e.json ================================================ { "moduleFileExtensions": ["js", "json", "ts"], "rootDir": ".", "testEnvironment": "node", "testRegex": ".e2e-spec.ts$", "transform": { "^.+\\.(t|j)s$": "ts-jest" } } ================================================ FILE: packages/node/test/jsonfy.js ================================================ 'use strict'; // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 Object.defineProperty(exports, '__esModule', { value: true }); exports.JsonfyDatasourcePlugin = void 0; exports.JsonfyDatasourcePlugin = { kind: 'substrate/Jsonfy', validate(ds) { return; }, dsFilterProcessor(ds, api) { return true; }, handlerProcessors: { 'substrate/JsonfyEvent': { specVersion: '1.0.0', baseFilter: [], baseHandlerKind: 'substrate/EventHandler', // eslint-disable-next-line @typescript-eslint/require-await async transformer({ original, ds }) { return JSON.parse(JSON.stringify(original.toJSON())); }, filterProcessor({ filter, input, ds }) { return ( filter.module && input.event.section === filter.module && filter.method && input.event.method === filter.method ); }, filterValidator(filter) { return; }, }, }, }; exports.default = exports.JsonfyDatasourcePlugin; //# sourceMappingURL=jsonfy.js.map ================================================ FILE: packages/node/test/projectFixture/bad.json ================================================ ================================================ FILE: packages/node/test/projectFixture/template-v1.0.0/distMock/chaintypes.js ================================================ 'use strict'; exports.default = { typesBundle: {} }; ================================================ FILE: packages/node/test/projectFixture/template-v1.0.0/distMock/index.js ================================================ 'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); const tslib_1 = require('tslib'); //Exports all handler functions require('@polkadot/api-augment'); (0, tslib_1.__exportStar)(require('./mappings/mappingHandlers'), exports); ================================================ FILE: packages/node/test/projectFixture/template-v1.0.0/erc20.abi.json ================================================ [ { "constant": true, "inputs": [], "name": "name", "outputs": [ { "name": "", "type": "string" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": false, "inputs": [ { "name": "_spender", "type": "address" }, { "name": "_value", "type": "uint256" } ], "name": "approve", "outputs": [ { "name": "", "type": "bool" } ], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": true, "inputs": [], "name": "totalSupply", "outputs": [ { "name": "", "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": false, "inputs": [ { "name": "_from", "type": "address" }, { "name": "_to", "type": "address" }, { "name": "_value", "type": "uint256" } ], "name": "transferFrom", "outputs": [ { "name": "", "type": "bool" } ], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": true, "inputs": [], "name": "decimals", "outputs": [ { "name": "", "type": "uint8" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [ { "name": "_owner", "type": "address" } ], "name": "balanceOf", "outputs": [ { "name": "balance", "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "symbol", "outputs": [ { "name": "", "type": "string" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": false, "inputs": [ { "name": "_to", "type": "address" }, { "name": "_value", "type": "uint256" } ], "name": "transfer", "outputs": [ { "name": "", "type": "bool" } ], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": true, "inputs": [ { "name": "_owner", "type": "address" }, { "name": "_spender", "type": "address" } ], "name": "allowance", "outputs": [ { "name": "", "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "payable": true, "stateMutability": "payable", "type": "fallback" }, { "anonymous": false, "inputs": [ { "indexed": true, "name": "owner", "type": "address" }, { "indexed": true, "name": "spender", "type": "address" }, { "indexed": false, "name": "value", "type": "uint256" } ], "name": "Approval", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "name": "from", "type": "address" }, { "indexed": true, "name": "to", "type": "address" }, { "indexed": false, "name": "value", "type": "uint256" } ], "name": "Transfer", "type": "event" } ] ================================================ FILE: packages/node/test/projectFixture/template-v1.0.0/js/test1/project.yaml ================================================ # project.yaml specVersion: '0.2.0' name: '' version: '0.0.0' description: '' repository: 'https://github.com/subquery/subql-starter' schema: file: ./schema.graphql network: genesisHash: '0x' endpoint: 'wss://polkadot.api.onfinality.io/public-ws' chaintypes: file: ./types.js dataSources: - kind: substrate/Runtime startBlock: 1 mapping: file: dist/index.js handlers: - handler: handleBlock kind: substrate/BlockHandler - handler: handleEvent kind: substrate/EventHandler filter: #Filter is optional module: balances method: Deposit - handler: handleCall kind: substrate/CallHandler ================================================ FILE: packages/node/test/projectFixture/template-v1.0.0/js/test1/types.js ================================================ 'use strict'; const types = { types: { TestType: 'u32', }, typesAlias: { Alias: { TestType2: 'test', }, }, typesBundle: { spec: { 2312: { types: [ { minmax: [232, 122], types: { TestType3: 'test3', }, }, ], }, }, chain: { mockchain: { types: [ { minmax: [232, 122], types: { TestType4: 'test4', }, }, ], }, }, }, typesChain: { chain2: { TestType5: 'test', }, }, typesSpec: { spec3: { TestType6: 'test', }, }, }; Object.defineProperty(exports, '__esModule', { value: true, }); exports.default = types; ================================================ FILE: packages/node/test/projectFixture/template-v1.0.0/js/test2/project.yaml ================================================ # project.yaml specVersion: '0.2.0' name: '' version: '0.0.0' description: '' repository: 'https://github.com/subquery/subql-starter' schema: file: ./schema.graphql network: genesisHash: '0x' endpoint: 'wss://polkadot.api.onfinality.io/public-ws' chaintypes: file: ./types.js dataSources: - kind: substrate/Runtime startBlock: 1 mapping: file: dist/index.js handlers: - handler: handleBlock kind: substrate/BlockHandler - handler: handleEvent kind: substrate/EventHandler filter: #Filter is optional module: balances method: Deposit - handler: handleCall kind: substrate/CallHandler ================================================ FILE: packages/node/test/projectFixture/template-v1.0.0/js/test2/types.js ================================================ const os = require('os'); console.log(os.platform); const types = { types: { TestType: 'u32', }, typesAlias: { Alias: { TestType2: 'test', }, }, typesBundle: { spec: { 2312: { types: [ { minmax: [232, 122], types: { TestType3: 'test3', }, }, ], }, }, chain: { mockchain: { types: [ { minmax: [232, 122], types: { TestType4: 'test4', }, }, ], }, }, }, typesChain: { chain2: { TestType5: 'test', }, }, typesSpec: { spec3: { TestType6: 'test', }, }, }; module.exports = types; ================================================ FILE: packages/node/test/projectFixture/template-v1.0.0/js/test3/project.yaml ================================================ # project.yaml specVersion: '0.2.0' name: '' version: '0.0.0' description: '' repository: 'https://github.com/subquery/subql-starter' schema: file: ./schema.graphql network: genesisHash: '0x' endpoint: 'wss://polkadot.api.onfinality.io/public-ws' chaintypes: file: ./types.js dataSources: - kind: substrate/Runtime startBlock: 1 mapping: file: dist/index.js handlers: - handler: handleBlock kind: substrate/BlockHandler - handler: handleEvent kind: substrate/EventHandler filter: #Filter is optional module: balances method: Deposit - handler: handleCall kind: substrate/CallHandler ================================================ FILE: packages/node/test/projectFixture/template-v1.0.0/js/test3/types.js ================================================ const types = { types: { TestType: 'u32', }, typesAlias: { Alias: { TestType2: 'test', }, }, typesBundle: { spec: { 2312: { types: [ { minmax: [232, 122], types: { TestType3: 'test3', }, }, ], }, }, chain: { mockchain: { types: [ { minmax: [232, 122], types: { TestType4: 'test4', }, }, ], }, }, }, typesChain: { chain2: { TestType5: 'test', }, }, typesSpec: { spec3: { TestType6: 'test', }, }, }; module.exports.test = types; ================================================ FILE: packages/node/test/projectFixture/template-v1.0.0/js/test4/project.yaml ================================================ # project.yaml specVersion: '0.2.0' name: '' version: '0.0.0' description: '' repository: 'https://github.com/subquery/subql-starter' schema: file: ./schema.graphql network: genesisHash: '0x' endpoint: 'wss://polkadot.api.onfinality.io/public-ws' chaintypes: file: ./types.js dataSources: - kind: substrate/Runtime startBlock: 1 mapping: file: dist/index.js handlers: - handler: handleBlock kind: substrate/BlockHandler - handler: handleEvent kind: substrate/EventHandler filter: #Filter is optional module: balances method: Deposit - handler: handleCall kind: substrate/CallHandler ================================================ FILE: packages/node/test/projectFixture/template-v1.0.0/js/test4/types.js ================================================ 'use strict'; const types = { types: { TestType: 'u32', }, typesAlias: { Alias: { TestType2: 'test', }, }, typesBundle: { spec: { 2312: { types: [ { minmax: [232, 122], types: { TestType3: 'test3', }, }, ], }, }, chain: { mockchain: { types: [ { minmax: [232, 122], types: { TestType4: 'test4', }, }, ], }, }, }, typesChain: { chain2: { TestType5: 'test', }, }, typesSpec: { spec3: { TestType6: 'test', }, }, shouldIgnorefield: { chain2: { TestType5: 'test', }, }, }; Object.defineProperty(exports, '__esModule', { value: true, }); exports.default = types; ================================================ FILE: packages/node/test/projectFixture/template-v1.0.0/package.json ================================================ { "name": "subquery-starter", "version": "0.0.4", "description": "This project can be use as a starting point for developing your SubQuery project", "main": "dist/index.js", "scripts": { "build": "tsc -b", "prepack": "rm -rf dist && npm build", "test": "jest", "codegen": "./node_modules/.bin/subql codegen" }, "homepage": "https://github.com/subquery/subql-starter", "repository": "github:subquery/subql-starter", "files": [ "dist", "schema.graphql", "project.yaml" ], "author": "Ian He & Jay Ji", "license": "Apache-2.0", "devDependencies": { "@polkadot/api": "^16", "@subql/types": "dev", "typescript": "^4.1.3", "@subql/cli": "dev" }, "resolutions": { "ipfs-unixfs": "6.0.6" } } ================================================ FILE: packages/node/test/projectFixture/template-v1.0.0/project.yaml ================================================ specVersion: 1.0.0 name: subquery-query-registry-project version: 1.0.0 description: '' repository: '' runner: node: name: '@subql/node' version: '>=1.0.0' query: name: '@subql/query' version: '*' schema: file: ./schema.graphql network: # genesisHash: '0x956876d5b80e47e523a6629b3c3ac3e42f2850ad12e236d87a0aaac87c9f6bc9' # Moonriver genesisHash: '0x91bc6e169807aaa54802737e1c504b2577d4fafedd5a02c10293b1cd60e39527' # Moonbase Alpha endpoint: wss://moonbeam-alpha.api.onfinality.io/public-ws dictionary: https://api.subquery.network/sq/subquery/moonbase-alpha-dictionary chaintypes: file: './types.yaml' dataSources: - kind: substrate/Moonbeam startBlock: 1358833 processor: file: './node_modules/@subql/contract-processors/dist/moonbeam.js' options: abi: settings address: '0xde030fC2b42AE2438B32506ECf63B2f3c1665579' assets: settings: file: ./src/settings.abi.json mapping: file: ./distMock/index.js handlers: - handler: handleUpdateSettings kind: substrate/MoonbeamCall filter: function: setAllAddresses(address _sqToken,address _staking,address _indexerRegistry,address _queryRegistry) # add ",address _serviceAgreementRegistry" in later versions templates: - name: QueryRegistry kind: substrate/Moonbeam startBlock: 1358829 processor: file: './node_modules/@subql/contract-processors/dist/moonbeam.js' options: abi: queryRegistry # address: '0xB0b3f6bc7a8E0bCb2aa1Cd2Ae2dE56fbdA3c0651' assets: queryRegistry: file: ./src/queryRegistry.abi.json mapping: file: ./distMock/index.js handlers: - handler: handleNewQuery kind: substrate/MoonbeamEvent filter: topics: - CreateQuery(uint256 queryId, address creator, bytes32 metadata, bytes32 deploymentId, bytes32 version) - handler: handleUpdateQueryMetadata kind: substrate/MoonbeamEvent filter: topics: - UpdateQueryMetadata(address owner, uint256 queryId, bytes32 metadata) - handler: handleUpdateQueryDeployment kind: substrate/MoonbeamEvent filter: topics: - UpdateQueryDeployment(address owner, uint256 queryId, bytes32 deploymentId, bytes32 version) - handler: handleStartIndexing kind: substrate/MoonbeamEvent filter: topics: - StartIndexing(address indexer, bytes32 deploymentId) - handler: handleIndexingUpdate kind: substrate/MoonbeamEvent filter: topics: - UpdateDeploymentStatus(address indexer, bytes32 deploymentId, uint256 blockheight, bytes32 mmrRoot, uint256 timestamp) - handler: handleIndexingReady kind: substrate/MoonbeamEvent filter: topics: - UpdateIndexingStatusToReady(address indexer, bytes32 deploymentId, uint256 _timestamp) - handler: handleStopIndexing kind: substrate/MoonbeamEvent filter: topics: - StopIndexing(address indexer, bytes32 deploymentId) ================================================ FILE: packages/node/test/projectFixture/template-v1.0.0/schema.graphql ================================================ type StarterEntity @entity { id: ID! #id is a required field field1: Int! field2: String #filed2 is an optional field field3: BigInt field4: Date field5: Boolean } ================================================ FILE: packages/node/test/projectFixture/template-v1.0.0/types.yaml ================================================ types: TestType: u32 typesAlias: Alias: TestType2: test typesBundle: spec: '2312': types: - minmax: - 232 - 122 types: TestType3: test3 chain: mockchain: types: - minmax: - 232 - 122 types: TestType4: test4 typesChain: chain2: TestType5: test typesSpec: spec3: TestType6: test ================================================ FILE: packages/node/test/projectFixture/v1.0.0/distMock/chaintypes.js ================================================ 'use strict'; exports.default = { typesBundle: {} }; ================================================ FILE: packages/node/test/projectFixture/v1.0.0/distMock/index.js ================================================ 'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); const tslib_1 = require('tslib'); //Exports all handler functions require('@polkadot/api-augment'); (0, tslib_1.__exportStar)(require('./mappings/mappingHandlers'), exports); ================================================ FILE: packages/node/test/projectFixture/v1.0.0/erc20.abi.json ================================================ [ { "constant": true, "inputs": [], "name": "name", "outputs": [ { "name": "", "type": "string" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": false, "inputs": [ { "name": "_spender", "type": "address" }, { "name": "_value", "type": "uint256" } ], "name": "approve", "outputs": [ { "name": "", "type": "bool" } ], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": true, "inputs": [], "name": "totalSupply", "outputs": [ { "name": "", "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": false, "inputs": [ { "name": "_from", "type": "address" }, { "name": "_to", "type": "address" }, { "name": "_value", "type": "uint256" } ], "name": "transferFrom", "outputs": [ { "name": "", "type": "bool" } ], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": true, "inputs": [], "name": "decimals", "outputs": [ { "name": "", "type": "uint8" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [ { "name": "_owner", "type": "address" } ], "name": "balanceOf", "outputs": [ { "name": "balance", "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "symbol", "outputs": [ { "name": "", "type": "string" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": false, "inputs": [ { "name": "_to", "type": "address" }, { "name": "_value", "type": "uint256" } ], "name": "transfer", "outputs": [ { "name": "", "type": "bool" } ], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": true, "inputs": [ { "name": "_owner", "type": "address" }, { "name": "_spender", "type": "address" } ], "name": "allowance", "outputs": [ { "name": "", "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "payable": true, "stateMutability": "payable", "type": "fallback" }, { "anonymous": false, "inputs": [ { "indexed": true, "name": "owner", "type": "address" }, { "indexed": true, "name": "spender", "type": "address" }, { "indexed": false, "name": "value", "type": "uint256" } ], "name": "Approval", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "name": "from", "type": "address" }, { "indexed": true, "name": "to", "type": "address" }, { "indexed": false, "name": "value", "type": "uint256" } ], "name": "Transfer", "type": "event" } ] ================================================ FILE: packages/node/test/projectFixture/v1.0.0/js/test1/project.yaml ================================================ # project.yaml specVersion: '0.2.0' name: '' version: '0.0.0' description: '' repository: 'https://github.com/subquery/subql-starter' schema: file: ./schema.graphql network: genesisHash: '0x' endpoint: 'wss://polkadot.api.onfinality.io/public-ws' chaintypes: file: ./types.js dataSources: - kind: substrate/Runtime startBlock: 1 mapping: file: dist/index.js handlers: - handler: handleBlock kind: substrate/BlockHandler - handler: handleEvent kind: substrate/EventHandler filter: #Filter is optional module: balances method: Deposit - handler: handleCall kind: substrate/CallHandler ================================================ FILE: packages/node/test/projectFixture/v1.0.0/js/test1/types.js ================================================ 'use strict'; const types = { types: { TestType: 'u32', }, typesAlias: { Alias: { TestType2: 'test', }, }, typesBundle: { spec: { 2312: { types: [ { minmax: [232, 122], types: { TestType3: 'test3', }, }, ], }, }, chain: { mockchain: { types: [ { minmax: [232, 122], types: { TestType4: 'test4', }, }, ], }, }, }, typesChain: { chain2: { TestType5: 'test', }, }, typesSpec: { spec3: { TestType6: 'test', }, }, }; Object.defineProperty(exports, '__esModule', { value: true, }); exports.default = types; ================================================ FILE: packages/node/test/projectFixture/v1.0.0/js/test2/project.yaml ================================================ # project.yaml specVersion: '0.2.0' name: '' version: '0.0.0' description: '' repository: 'https://github.com/subquery/subql-starter' schema: file: ./schema.graphql network: genesisHash: '0x' endpoint: 'wss://polkadot.api.onfinality.io/public-ws' chaintypes: file: ./types.js dataSources: - kind: substrate/Runtime startBlock: 1 mapping: file: dist/index.js handlers: - handler: handleBlock kind: substrate/BlockHandler - handler: handleEvent kind: substrate/EventHandler filter: #Filter is optional module: balances method: Deposit - handler: handleCall kind: substrate/CallHandler ================================================ FILE: packages/node/test/projectFixture/v1.0.0/js/test2/types.js ================================================ const os = require('os'); console.log(os.platform); const types = { types: { TestType: 'u32', }, typesAlias: { Alias: { TestType2: 'test', }, }, typesBundle: { spec: { 2312: { types: [ { minmax: [232, 122], types: { TestType3: 'test3', }, }, ], }, }, chain: { mockchain: { types: [ { minmax: [232, 122], types: { TestType4: 'test4', }, }, ], }, }, }, typesChain: { chain2: { TestType5: 'test', }, }, typesSpec: { spec3: { TestType6: 'test', }, }, }; module.exports = types; ================================================ FILE: packages/node/test/projectFixture/v1.0.0/js/test3/project.yaml ================================================ # project.yaml specVersion: '0.2.0' name: '' version: '0.0.0' description: '' repository: 'https://github.com/subquery/subql-starter' schema: file: ./schema.graphql network: genesisHash: '0x' endpoint: 'wss://polkadot.api.onfinality.io/public-ws' chaintypes: file: ./types.js dataSources: - kind: substrate/Runtime startBlock: 1 mapping: file: dist/index.js handlers: - handler: handleBlock kind: substrate/BlockHandler - handler: handleEvent kind: substrate/EventHandler filter: #Filter is optional module: balances method: Deposit - handler: handleCall kind: substrate/CallHandler ================================================ FILE: packages/node/test/projectFixture/v1.0.0/js/test3/types.js ================================================ const types = { types: { TestType: 'u32', }, typesAlias: { Alias: { TestType2: 'test', }, }, typesBundle: { spec: { 2312: { types: [ { minmax: [232, 122], types: { TestType3: 'test3', }, }, ], }, }, chain: { mockchain: { types: [ { minmax: [232, 122], types: { TestType4: 'test4', }, }, ], }, }, }, typesChain: { chain2: { TestType5: 'test', }, }, typesSpec: { spec3: { TestType6: 'test', }, }, }; module.exports.test = types; ================================================ FILE: packages/node/test/projectFixture/v1.0.0/js/test4/project.yaml ================================================ # project.yaml specVersion: '0.2.0' name: '' version: '0.0.0' description: '' repository: 'https://github.com/subquery/subql-starter' schema: file: ./schema.graphql network: genesisHash: '0x' endpoint: 'wss://polkadot.api.onfinality.io/public-ws' chaintypes: file: ./types.js dataSources: - kind: substrate/Runtime startBlock: 1 mapping: file: dist/index.js handlers: - handler: handleBlock kind: substrate/BlockHandler - handler: handleEvent kind: substrate/EventHandler filter: #Filter is optional module: balances method: Deposit - handler: handleCall kind: substrate/CallHandler ================================================ FILE: packages/node/test/projectFixture/v1.0.0/js/test4/types.js ================================================ 'use strict'; const types = { types: { TestType: 'u32', }, typesAlias: { Alias: { TestType2: 'test', }, }, typesBundle: { spec: { 2312: { types: [ { minmax: [232, 122], types: { TestType3: 'test3', }, }, ], }, }, chain: { mockchain: { types: [ { minmax: [232, 122], types: { TestType4: 'test4', }, }, ], }, }, }, typesChain: { chain2: { TestType5: 'test', }, }, typesSpec: { spec3: { TestType6: 'test', }, }, shouldIgnorefield: { chain2: { TestType5: 'test', }, }, }; Object.defineProperty(exports, '__esModule', { value: true, }); exports.default = types; ================================================ FILE: packages/node/test/projectFixture/v1.0.0/package.json ================================================ { "name": "subquery-starter", "version": "0.0.4", "description": "This project can be use as a starting point for developing your SubQuery project", "main": "dist/index.js", "scripts": { "build": "tsc -b", "prepack": "rm -rf dist && npm build", "test": "jest", "codegen": "./node_modules/.bin/subql codegen" }, "homepage": "https://github.com/subquery/subql-starter", "repository": "github:subquery/subql-starter", "files": [ "dist", "schema.graphql", "project.yaml" ], "author": "Ian He & Jay Ji", "license": "Apache-2.0", "devDependencies": { "@polkadot/api": "^16", "@subql/types": "dev", "typescript": "^4.9.5", "@subql/cli": "dev" }, "resolutions": { "ipfs-unixfs": "6.0.6" } } ================================================ FILE: packages/node/test/projectFixture/v1.0.0/project.yaml ================================================ specVersion: 1.0.0 name: moonriver version: 1.0.0 description: '' repository: '' runner: node: name: '@subql/node' version: '>=1.0.0' query: name: '@subql/query' version: '*' schema: file: ./schema.graphql network: chainId: '0x401a1f9dca3da46f5c4091016c8a2f26dcea05865116b286f60f668207d1474b' endpoint: wss://moonriver.api.onfinality.io/public-ws dictionary: 'https://api.subquery.network/sq/subquery/moonriver-dictionary' chaintypes: file: './distMock/chaintypes.js' dataSources: - kind: substrate/Runtime startBlock: 69219 mapping: file: './distMock/index.js' handlers: - handler: collatorJoined kind: substrate/EventHandler filter: module: parachainStaking method: JoinedCollatorCandidates - handler: collatorLeft kind: substrate/CallHandler filter: module: parachainStaking method: leaveCandidates - kind: substrate/Moonbeam startBlock: 562683 processor: file: './dist/moonbeam.js' # file: './node_modules/@subql/contract-processors/dist/moonbeam.js' options: # Must be a key of assets abi: erc20 address: '0x6bd193ee6d2104f14f94e2ca6efefae561a4334b' assets: erc20: file: './erc20.abi.json' mapping: file: ./distMock/index.js handlers: - handler: erc20Transfer kind: substrate/MoonbeamEvent filter: topics: - Transfer(address indexed from,address indexed to,uint256 value) ================================================ FILE: packages/node/test/projectFixture/v1.0.0/schema.graphql ================================================ type StarterEntity @entity { id: ID! #id is a required field field1: Int! field2: String #filed2 is an optional field field3: BigInt field4: Date field5: Boolean } ================================================ FILE: packages/node/test/projectFixture/v1.0.0/types.yaml ================================================ types: TestType: u32 typesAlias: Alias: TestType2: test typesBundle: spec: '2312': types: - minmax: - 232 - 122 types: TestType3: test3 chain: mockchain: types: - minmax: - 232 - 122 types: TestType4: test4 typesChain: chain2: TestType5: test typesSpec: spec3: TestType6: test ================================================ FILE: packages/node/tsconfig.build.json ================================================ { "extends": "./tsconfig.json", "exclude": ["node_modules", "test", "dist", "**/*spec.ts"] } ================================================ FILE: packages/node/tsconfig.json ================================================ { "extends": "../../tsconfig.json", "compilerOptions": { "sourceMap": true, "tsBuildInfoFile": "dist/.tsbuildinfo", "rootDir": "src", "outDir": "./dist", "noImplicitAny": true }, "references": [ { "path": "../common" }, { "path": "../common-substrate" }, { "path": "../node-core" }, { "path": "../types-core" }, { "path": "../types" }, { "path": "../utils" }, { "path": "../testing" } ], "include": ["src/**/*"], "exclude": ["node_modules", "test", "dist"] } ================================================ FILE: packages/node-core/CHANGELOG.md ================================================ # Changelog All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). ## [Unreleased] ## [19.2.0] - 2026-03-05 ### Changed - Improve logging of `rewindHeight` when handling un-finalized blocks (#3018) ### Fixed - Handle non-sequential unfinalized blocks with backfill (#3016) ## [19.1.0] - 2026-02-23 ### Fixed - Recovery for invalid POI sync state on startup. Now it searches backward to find the last valid synced POI and updates the metadata accordingly. (#3014) ## [19.0.0] - 2025-11-26 ### Changed - Update the `toBlockResponse` function signature on the worker service to take an `IBlock` instead of a `B` type (#2978) ## [18.5.3] - 2025-11-25 ### Fixed - Updating models updateOnDuplicate field being calculated incorrectly (#2976) ## [18.5.2] - 2025-11-20 ### Fixed - POI issues with array fields (#2972) ## [18.5.1] - 2025-11-05 ### Fixed - Lock down VM2 version to avoid a breaking change (#2959) ## [18.5.0] - 2025-10-15 ### Changed - Remove `cross-fetch` in favour of built in nodejs fetch (#2928) - Minor improvements and fixes from upgrading to eslint 9 with stricter settings (#2929) ## [18.4.0] - 2025-09-16 ### Changed - Locked down graphql related dependencies (#2876) - Update polkadot dependenices (#2915) ### Added - Support for .env in mapping handlers (#2901) ## [18.3.3] - 2025-09-09 ### Fixed - Dictionary v2 being used with empty filter conditions (#2909) ## [18.3.2] - 2025-08-29 ### Changed - Fixed typos (#2895) ## [18.3.1] - 2025-07-30 ### Fixed - Indexes not being checked correctly on first startup and migrations (#2871) ## [18.3.0] - 2025-07-24 ### Fixed - Fix decoding sourcemaps with stack traces ### Changed - Improve error stack with sandbox require limitations (#2864) ## [18.2.1] - 2025-07-17 ### Changed - Workspace dependencies now match to patch versions rather than exact (#2855) ## [18.2.0] - 2025-07-01 ### Removed - Test files and artifacts from published package (#2838) ### Fixed - DB transaction being commit before all queries provided (#2838) ## [18.1.2] - 2025-06-25 ### Fixed - Multichain rewind service cleanup (#2824) ## [18.1.1] - 2025-06-05 ### Added - cause to BackoffError (#2805) ### Changed - Improve error messages with workers (#2809) ## [18.1.0] - 2025-05-21 ### Added - Support for adding new enum values in migrations (#2798) ## [18.0.6] - 2025-05-20 ### Fixed - Edge case with auto queue out of order tasks (#2789) ## [18.0.5] - 2025-05-08 ### Changed - Move function calls outside of loops in indexer manager (#2780) ### Fixed - Max queue size error with workers (#2783) ## [18.0.4] - 2025-04-30 ### Fixed - Regression with workers concurrency leading to bad performance (#2771) ## [18.0.3] - 2025-04-24 ### Changed - Update blockDispactcherFactory args for worker data ## [18.0.2] - 2025-04-24 ### Changed - Don't inject MultichainRewindService in workers (#2758) ## [18.0.1] - 2025-04-24 ### Changed - Enable unfinalized blocks by default when historical indexing is enabled (#2755) ## [18.0.0] - 2025-04-16 ### Added - Support multi chain project reindex ## [17.2.2] - 2025-04-08 ### Fixed - Fix TaskFlushedError caused by DynamicDsCreated ## [17.2.1] - 2025-03-24 ### Fixed - Max queue size error with workers (#2725) ## [17.2.0] - 2025-03-20 ### Fixed - Testing not updating test results correctly if fetching block fails (#2716) - The `dynamicDatasources` will be cleared in advance, causing subsequent index data to be missing. - UnfinalizedBlock rollback not being handled correctly ### Changed - On block fetch failure, finish indxing already fetched blocks before exiting (#2720) ## [17.1.0] - 2025-03-05 ### Added - Flushing the cache every block when the project is fully synced to reduce delay between data indexed and being queryable (#2707) ### Fixed - Finalized block getter when height is 0 (#2706) ## [17.0.2] - 2025-02-26 ### Added - BlockDispatcher factory function and expose workerData (#2701) ## [17.0.1] - 2025-02-25 ### Fixed - The UnfinalizedBlock type obtained from metadata is incorrect. ## [17.0.0] - 2025-02-19 ### Changed - Update nestjs dependencies (#2667) - Update polkadot api to 15 (#2680) ### Fixed - Remove injected TextEncoder into sandbox breaking some dependencies like Polkadot (#2680) ## [16.2.1] - 2025-02-04 ### Changed - Update copyright header to 2025 - Implement new BlockchainService architecture for easier integration of other blockchains (#2517) ### Fixed - Various typos ### Removed - Id type check on plain model set method (#2662) ## [16.2.0] - 2025-01-28 ### Changed - Updated send_notification PG function to include `_block height` and entity `_id` (#2626) ### Added - Add `TextEncoder` in sandbox, some network package util method is depended on it - Added the `--monitor-object-max-depth` flag to mitigate OOM issues when encountering large chunks.(#2644) - Configuration options for PG pool connections (#2646) ### Fixed - Fixed the inconsistency between the `monitor-file-size` flag and the expected behavior.(#2644) - Improved block range validation in POI endpoint with custom class-validator decorator - When setting a smaller batch size and the current processing height reaches latestFinalizedHeight, it causes the program to exit unexpectedly. - Store flush interval having a chance of trying to flush with invalid metadata (#2650) ## [16.1.0] - 2024-12-11 ### Changed - If any tests fail with the `test` subcommand the exit code will now be 1 instead of 0 (#2624) ## [16.0.0] - 2024-12-04 ### Removed - SmartBatchService as it didn't function as intended (#2611) ### Changed - Implement new RampQueue to dynamically scale block fetching concurrency, this helps indexing larger blocks (#2611) - Memoize promises to get finalized and best blocks (#2611) ### Fixed - Fixed the issue where flags that require special handling were being overwritten.(#2612) ### Changed - Various internal improvements to exporters (CSV exporter) (#2617) ## [15.0.3] - 2024-11-26 ### Fixed - Workers crashing because of lazy monitor write (#2607) ## [15.0.2] - 2024-11-26 ### Fixed - Fix import path (#2605) ## [15.0.1] - 2024-11-25 ### Changed - Update polkadot/api library to 14 version ## [15.0.0] - 2024-11-22 ### Added - lazy loading for monitor service (#2583) - Add an `--enable-cache` flag, allowing you to choose between DB or cache for IO operations. ### Fixed - When using a GET query to retrieve an entity, it will include a "store" field. - Support for historical indexing by timestamp as well as block height (#2584) - Subscriptions not emitting deleted mutation type with historical (#2600) ### Removed - Support for cockroach DB (#2584) ### Fixed - When configuring multiple endpoints, poor network conditions may lead to block crawling delays. (#2572) - Prevent the use of latestFinalizedHeight when unFinalizedBlock is enabled and the chain has no finalized blocks. (#2594) ## [14.1.7] - 2024-10-30 ### Changed - Bump `@subql/common` dependency ## [14.1.6] - 2024-10-21 ### Fixed - Issues with setting a large block range for bypass blocks (#2566) - Test runner not setting lastProcessedHeight leading to data not being flushed (#2569) - Unable to rewind unfinalized blocks on startup (#2570) - Store `getByFields` returning removed cache data (#2571) ### Changed - Throw error when store getByField(s) options.limit exceeds queryLimit option (#2567) ## [14.1.5] - 2024-09-25 ### Changed - Bump common, Added manifest support for query-subgraph. ## [14.1.4] - 2024-09-09 ### Changed - Reuse the same temp dir when project is from IPFS (#2551) ### Fixed - GraphQL field support for consecutive uppercase letters. ## [14.1.3] - 2024-08-30 ### Fixed - Fixed Corn filter (#2547) ## [14.1.2] - 2024-08-14 ### Added - Update polkadot/api library ## [14.1.1] - 2024-08-12 ### Fixed - revert yargs version as it was returning a promise - DS Processor types not being able to distinguish input and filter types (#2522) ## [14.1.0] - 2024-08-05 ### Changed - Update dependencies (#2518) ## [14.0.0] - 2024-08-01 ### Added - A more useful error message when failing to require modules from the VM (#2512) - Support for endpoint configs (#2511) ### Fixed - Handle when block timestamp can be undefined (#2513) ## [13.0.2] - 2024-07-31 ### Fixed - Fixed project upgrade missing reload network chainTypes when `onProjectChange` (#2505) ## [13.0.1] - 2024-07-29 ### Fixed - Fixed get and set data not been deepCloned and data is not mutable - Improved get bigInt type from json type ## [13.0.0] - 2024-07-25 ### Changed - Breaking change: Require indexing environment timezone set to UTC, avoid inconsistent result from cache and database (#2495) ### Fixed - Fix handle bigint type in jsonb array, both get and set method will generate consistent result (#2495) - Update with `@subql/utils`, fixed json and json array hashcode issue, improve poi consistency (#2497) ### Added - SubqueryProject base from extracting common code (#2496) ## [12.0.0] - 2024-07-22 ### Changed - Provide a better error message when user increases project start height beyond indexed height (#2492) - Define new core modules to reduce duplicate code in nodes (#2491) ### Fixed - "targetHeight" being updated out of sync with indexing, leading to it possibly being behind "lastProcessedHeight" (#2491) ## [11.0.0] - 2024-07-11 ### Changed - Create interval for flushing the cache, this is to support chains that only produce blocks with new transactions (#2485) - Improved types for strict TS setting (#2484) ### Fixed - Improve indexer could stall due to rpc finalized height could be smaller than previous result (#2487) ## [10.10.2] - 2024-07-10 ### Fixed - Fix issue admin api can not get `dbSize` due to it not been set in \_metadata table ## [10.10.1] - 2024-07-09 ### Added - Enable ts strict setting ### Fixed - Incrementing the schemaMigration count on every start (#2476) ## [10.10.0] - 2024-07-01 ### Changed - Bump version with `@subql/common` ## [10.9.0] - 2024-06-21 ### Fixed - Store service index check failing with snake_case fields (#2461) ### Changed - Error message for finding available port ## [10.6.0] - 2024-06-18 ### Fixed - Testing framework logging the same date if they were within 1s (#2453) ### Fixed - Handle edge case when last processed height is same as chain target height, app will wait for new block rather than exit. ### Changed - Skip using the dictionary if processing data within batch size of latest height (#2454) ## [10.5.1] - 2024-06-12 ### Changed - Update `@subql/utils` ## [10.5.0] - 2024-06-12 ### Added - Admin api add query `/db_size` to check database size and upsert in metadata ### Fixed - `exitWithError` logging error messages rather than the error (#2435) ### Changed - Logging around switching dictionary (#2435) ## [10.4.1] - 2024-06-06 ### Fixed - Fix various issue in monitor service, file naming issue and export admin service from node-core ## [10.4.0] - 2024-06-05 ### Added - Add monitor service to record block indexing actions in order to improve POI accuracy, and provide debug info for Admin api ### Fixed - Update index block failed message (#2414) ## [10.3.2] - 2024-05-27 ### Changed - Visibility of sandboxService in indexer manager to protected (#2416) ## [10.3.1] - 2024-05-22 ### Fixed - CacheModel.clear behaviour if height was 0 (#2402) ## [10.3.0] - 2024-05-20 ### Changed - Update cache to always flush with a block height and clear after transaction commit (#2386) - Export `SANDBOX_DEFAULT_BUILTINS` to share with other sandboxes (#2404) ## [10.2.0] - 2024-05-08 ### Changed - Bump with @subql/utils, update polkadot dependencies to v11 ### Fixed - Fix `reindex` command failed due to `projectUpgradeService` not been initialized - Fix project upgrade to an earlier height, deployments in metadata not been updated, and app restart will lead to reindex. ## [10.1.2] - 2024-05-03 ### Fixed - Fix `filterBlockTimestamp` when filter could be undefined ## [10.1.1] - 2024-05-02 ### Fixed - Add back missing dependencies `pg`, also rollback `Uint8Array` change for sandbox as it could break other sdk. ## [10.1.0] - 2024-05-02 ### Fixed - Fixed issue Buffer within sandbox could not concat Buffer and Uint8Array, also injected `atob` ### Added - Expose option to add workerData to workers (#2372) ### Changed - Simplify logger function (#2374) ## [10.0.0] - 2024-04-24 ### Added - Various pieces of code from node and generalised them (#2357) ### Changed - Tidy up block dispatcher constructor args (#2357) ## [9.0.0] - 2024-04-12 ### Added - `WorkerUnfinalizedBlocksService` class from node that is now chain agnostic (#2346) ### Fixed - Issue with using metadata if incorrect network endpoint was provided (#2350) - Undefined dictionary response resulting in infinite loop (#2353) - Fix at end of modulo block filter it could skip other dataSources, and jump to the latest height ### Changed - Simplify ApiService and remove need for getChainId function (#2450) - Logging for dictionary and simplify code (#2353) ## [8.0.1] - 2024-04-05 ### Fixed - Fix modulo filter not applying correctly with multiple dataSources (#2331) ## [8.0.0] - 2024-03-28 ### Added - Add service to support for dictionary v2 (#2257) - Support for ordering with store `getBy*` methods (#2325) ### Removed - `@subql/apollo-links` for resolving dictionary endpoints and matching `dictionary-resolver` flag (#2305) ### Fixed - Various issues with store cache (#2325) - `getByFields` ignoring mutations from the current block - Order and offset issues when using store `getByFields`, `getByField` and `getOnByField` - Being able to mutate data in the store cache without calling methods - Matching cache data with `getByFields`, `getByField` and `getOneByField` ## [7.5.1] - 2024-03-26 ### Fixed - Fix unable to find index in `modelIndexedFields` due to a special case entity name (2327) - Fix multi-chain has `block-range` issue due to migartion handle historical status incorrectly ## [7.5.0] - 2024-03-20 ### Changed - Optimise metadata query when dealing with a large number of dynamic datasources that regularly increase (#2302) ### Fixed - Fields called `createdAt` or `updatedAt` having their type converted to timestamps ### Removed - Unused `timestamps-field` flag (#2310) ## [7.4.3] - 2024-03-15 ### Changed - Update connection retry logic and add backoff to fetch blocks retries (#2301) ## [7.4.2] - 2024-03-14 ### Fixed - Graphql comments not being escaped (#2299) ## [7.4.1] - 2024-03-08 ### Fixed - Memory leak with workers and large number of (dynamic) datasources (#2292) - Add missing `bytes` scalar type (#2293) ## [7.4.0] - 2024-03-05 ### Fixed - Fix missing incrememnt keys on `_metadata` table (#2283) - Fixed unexpected `store` on testing suite Entity (#2285) ### Added - Support for Full Text Search (#2280) ## [7.3.1] - 2024-02-29 ### Removed - `scale-batch-size` flag as it had no use (#2275) ### Fixed - Drop subscription triggers and notifiy_functions (#2277) - Fix poi issue due to Int hashCode failed (#2278) ## [7.3.0] - 2024-02-23 ### Added - Schema Migration support for Enums, Relations, Subscription (#2251) - Check that the project start height is below the current chain height (#2259) ### Fixed - Fixed non-atomic schema migration execution (#2244) - Testing Suites should run with unfinalizedBlocks `false` (#2258) - StoreService not being fully in sync with db (#2264) - StoreService not being initialized early enough on startup (#2265) ### Changed - Improve error handling when fetching blocks (#2256) - Lock `@subql/apollo-links` to `1.3.2` ## [7.2.1] - 2024-02-07 ### Added - Update `ParentProject` to use `untilBlock` as and alias for `block` (#2235) ### Fixed - Historical queries not using the correct block height (#2243) ## [7.2.0] - 2024-01-30 ### Changed - Update `@subql/apollo-links` and add specific logger for it ## [7.1.0] - 2024-01-25 ### Added - Support for CSV output with flag `--csv-out-dir` (#2224) - Support for Schema Migration with `--allow-schema-migration` flag (#2179) ### Changed - Improve modulo filter performance when there are other data sources (#2152) ### Fixed - missing schema migration models (#2226) ## [7.0.8] - 2024-01-10 ### Fixed - Update with util package, improve project initialization query from x-sequelize (#2212) ## [7.0.7] - 2024-01-04 ### Fixed - Update with util package, fix `more than one row returned by a subquery used as an expression` error from x-sequelize (#2209) ## [7.0.6] - 2023-12-25 ### Fixed - Fix bypassBlock method `cleanedBatchBlocks` could throw Maximum call stack size exceeded error from lodash (#2206) ## [7.0.5] - 2023-12-20 ### Fixed - Fix issue with metadata cache setting lastProcessedHeight to undefined (#2200) ## [7.0.4] - 2023-12-14 ### Changed - Update @subql/common ## [7.0.3] - 2023-12-04 ### Fixed - Fixed resolved asset file with incorrect format and content in #2185 ## [7.0.2] - 2023-11-29 ### Changed - dictionary registry path (#2187) ### Fixed - bump `lru-cache` to `10.1.0` and remove default exports (#2189) ## [7.0.1] - 2023-11-28 ### Fixed - Fix ipfs deployment templates path failed to resolved, issue was introduced in #2182 (#2185) - Update @subql/apollo-links to fix network dictionary timeout but not fallback to config dictionary issue ## [7.0.0] - 2023-11-27 ### Added - The ability to find the last indexed with a valid block hash using POI (#2176) ### Fixed - Fix incorrect datasources map that could result in `Value at height 7408910 was undefined` (#2183) - Fix template assets path not been resolved correctly and lead to `Failed to parse log data` (#2182) ## [6.4.2] - 2023-11-16 ### Fixed - Dictionaries timing out by updating `@subql/apollo-links` (#2169) - Incorrect block queue with multiple ds (#2167) ## [6.4.1] - 2023-11-13 ### Fixed - Store not having access to blockHeight and causing workers to fail on startup (#2161) ## [6.4.0] - 2023-11-10 ### Added - Base yargs config for all SDKs (#2144) - Support block skipping on unavailable blocks (#2151) ### Fixed - When using store get methods the `save` function would be missing (#2153) - Not indexing cleanly when all datasources have reached their end block ### Fixed - Workers selecting apis for endpoints that aren't connected (#2154) ## [6.3.0] - 2023-11-06 ### Added - Add `dictionaryQuerySize` to nodeConfig, so the block range in dictionary can be configurable. (#2139) ### Fixed - Fix `multi-chain` should disable historical by default, rather than exit - Fix reindex targetHeight issue introduced in #2131 (#2138) - `processedBlockCount` and `schemaMigrationCount` metadata fields incrementing exponentially (#2136) - Fix regression introduced in [#2110](https://github.com/subquery/subql/pull/2110) that broke `unwrapProxy` if the input is an array ## [6.2.0] - 2023-10-31 ### Fixed - Improve reindex query to remove/update by batches. (#2131) - Fix poi reindex beyond genesis height issue. (#2131) - Fixed modulo block ahead of finalized block issue (#2132) - Wrong link to docs for testing ### Added - WorkerInMemoryCacheService from node (#2125) - New `endBlock` option on datasources (#2064) ## [6.1.1] - 2023-10-25 ### Fixed - Not handling TaskFlushedErrors in block dispatchers (#2120) ## [6.1.0] - 2023-10-20 ### Added - Add in-memory cache to be used in sandbox #(2110) ### Fixed - Fixed poi migration init check, and improve logging (#2112) ## [6.0.4] - 2023-10-18 ### Fixed - Store bulk methods failing with workers (#2107) ## [6.0.3] - 2023-10-17 ### Fixed - Dictionary validation error causing application exit (#2101) - Auto queue flush getting the queue into a bad state (#2103) - Fix getCache could not been cleared after reindex, and could have been re-used and lead to error, such as syncPoi ## [6.0.2] - 2023-10-12 ### Fixed - Issues with using object destructing for store interface and workers (#2094) ## [6.0.1] - 2023-10-12 ### Fixed - Store operations failing with workers when options are provided (#2092) - skip managing connection pool for single endpoint (#2091) ## [6.0.0] - 2023-10-11 ### Changed - Support scoped debug logging (#2077) ### Added - Debug logging for dictionary queries (#2077) ### Fixed - Fixed Poi migration performance issue with `sqlIterator` - Fixed AutoQueue timeout issue, align setting with nodeConfig. (#2081) - Fixed Poi sync could block DB IO and drop connection issue (#2086) ## [5.0.3] - 2023-10-03 ### Fixed - Fix reindex service without poi feature (2062) ### Changed - Version bump with `types-core` 0.1.1 ## [5.0.2] - 2023-10-02 ### Fixed - Fix dictionary metadata validation (#2057) ## [5.0.1] - 2023-09-28 ### Fixed - Update apollo-links to 1.0.2, fix dictionary resolver failed to get token issue - Use test runs as unit for tests instead of entity checks (#1957) - Handle APIs in connection pool whose initialization failed (#1970) - Fix generated operation hash with single entity, buffer did not get hashed issue. - Infinite recursion in setValueModel with arrays (#1993) - Fix health checks for Networks that produce batched blocks (#2005) - Update `@willsoto/nestjs-prometheus` version to `5.4.0` (#2012) - `scaleBatchSize` referring to itself instead of config (#2018) - Set default startBlock of datasources to 1 (#2019) - Use round-robin worker load balancing with memory constraint consideration (#2029) ### Changed - Move more code from node to node-core. Including configure module, workers (#1797) - Update api service generics to support multiple block types (#1968) - UnfinalizedBlocksService: make private methods protected to allow custom fork detection (#2009) - Update fetching blocks to use moving window rather than batches (#2000) ### Added - Project upgrades feature and many other changes to support it (#1797) - `skipTransactions` option to NodeConfig (#1968) - `getByFields` to store (#1993) - `getPoiBlocksBefore` method to PoiModel so we can get recent blocks with operations (#2009) ## [4.2.3] - 2023-08-17 ### Fixed - delay getPoiBlocksByRange when fully synced, fixes the high CPU usage issue (#1952) ## [4.2.2] - 2023-08-16 ### Fixed - Fix modulo filter wrongful block queueing (#1944) ## [4.2.1] - 2023-08-11 ### Fixed - Bump with `@subql/types` package, fix missing `unsafeApi`. (#1935) ## [4.2.0] - 2023-08-10 ### Added - Added primary network endpoint that is always used from connection pool unless it fails (#1927) ## [4.1.0] - 2023-08-04 ### Fixed - Fix poi operationHash and miss poi blocks (#1917) - Sync @subql/apollo-links to 0.5.8, fix consuming cached token issue ### Changed - moved `indexBlock` to base `TestingService` (#1913) - Simplify connection pool logic (#1915) ## [4.0.1] - 2023-07-31 ### Fixed - Update license (#1891) - Performance scoring fix (#1895) - Fix mmrQuery should always read mmr leaf length from Db (#1900). ## [4.0.0] - 2023-07-17 ### Changed - **Breaking**: Init DB schema manually during test run (#1870) ### Fixed - Updated `@subql/apollo-links` to 0.5.3 for bug fixes. (#1886) - Establish common connection pool state among workers using `ConnectionPoolStateManager` (#1829) ## [3.1.2] - 2023-07-11 ### Fixed - Fix `TestingService` to run tests in separate application contexts (#1870) - Cache race condition when flushing cache and getting data (#1873) - Various improvements for POI feature: (#1869) - Benchmarking mmr processing - Improve performance when initialize mmr service, find the latest mmr height in Poi table by record it in `_metadata` table - Correct mmr query directly from Db rather than cache ## [3.1.1] - 2023-07-06 ### Fixed - Fixed Poi table missing mmr, due to incorrectly merged data from Db and cache. (#1871) ## [3.1.0] - 2023-07-04 ### Added - Configurable limit to the store cache size, this will cause indexing to wait for the cache to be flushed. This resolves an issue where OOM errors happen. (#1859) ## [3.0.0] - 2023-06-26 ### Changed - Added `pgMmrCacheService` to use independent Db connection, now mmr cache flush by itself. (#1828) - Update meta exports to require `MmrQueryController` and move code from node core (#1823) - Switch from node-fetch to cross-fetch. [See apollo issue for more](https://github.com/apollographql/apollo-client/issues/4857) ### Fixed - Not being able to test with null/undefined values on entities (#1809) ### Fixed - Fix reconnection issues in connection pool ## [2.6.0] - 2023-06-19 ### Changed - upgrade @subql/apollo-links (#1801) ## [2.5.1] - 2023-06-16 ### Fixed - Fixed meta service missing construct, align blockHeight update with store cache flush interval (#1804) ## [2.5.0] - 2023-06-15 ### Added - Implemented load balancing for multiple endpoints, with distribution based on endpoint performance (#1657) - Introduced a suspension mechanism for rate-limited endpoints using exponential backoff to regulate usage (#1657) ## [2.4.5] - 2023-06-09 ### Changed - Use @subql/x-sequelize in order support cockroach (#1791) ### Fixed - Base58 encoding check for POI (#1788) - Fix project \_startHeight been blocked by poiSync (#1792) ## [2.4.4] - 2023-06-07 ### Fixed - Fixed various issue for mmr (#1787) ## [2.4.3] - 2023-06-02 ### Fixed - Fixed mmr missing node due to cache lock (#1784) ## [2.4.2] - 2023-06-01 ### Changed - Cache MMR leaf length and flush with rest of db, enable more mmr logging (#1782) ### Fixed - Fix jump buffer height issue (#1781) - Error if testing entity not found (#1766) ## [2.4.1] - 2023-05-31 ### Fixed - Sync flushing MMR potentially getting corrupt (#1777) ## [2.4.0] - 2023-05-30 ### Added - Add cache layer to postgres mmr db (#1762) - Support for block hashes with base64 format for POI (#1761) ### Changed - Update vm2 past problematic version (#1770) - Add optional root option to config (#1771) ## [2.3.1] - 2023-05-26 ### Fixed - Improve mmr error and expose ready status (#1752) - Fix subcommand could escape issue, setup profiler at application init (#1755) ## [2.3.0] - 2023-05-24 ### Fixed - Fix datasource processors base filters not working (#1745) ### Added - Support for base58 blockhashes with POI (#1750) - Allow url in sandbox and set URL global (#1747) - Log for unfound mappingHandlers and list available ones (#1742) ## [2.2.2] - 2023-05-19 ### Fixed - Fix project service init failing due to start height being 0 (#1735) - No longer initialize store and indexer inside testing service (#1734) - Fix poi read leaf height error under cockroach (#1733) - Ensure min start height to be 1, even if set to 0 (#1737) - Upgrade apollo link package (#1739) ### Changed - allow dictionary when only --dictionaryResolver is enabled (#1730) - Improve error messages (#1729) - Deprecate project id from poi table, track deployment in metadata (#1696) ## [2.2.1] - 2023-05-17 ### Fixed - CockroachDB upsert performance issues (#1723) - Exiting if dictionary-resolver fails (#1721) - Typo in multi-chain logging message (#1722) ## [2.2.0] - 2023-05-16 ### Added - Worker threads support for unfinalized blocks (#1695) ### Fixed - Logging historical enabled with cockroach db (#1715) - Non-historical flushing order (#1711) - Filtering arguments to include datasoruce (#1703) - Not logging dictionary start height check (#1700) ### Changed - Default matcher from insensitive to sensitive casing (#1706) ## [2.1.3] - 2023-05-12 ### Fixed - Fix app could fail to start, due to flush before metadata repo been set (#1688) ## [2.1.2] - 2023-05-11 ### Fixed - Fix metadata check, allow base indexer manager to parse abis with ethereum (#1682) ### Changed - Move validate function to common (#1683) ### Added - Inject the chain id into sandboxes (#1684) ## [2.1.1] - 2023-05-11 ### Fixed - Extract dictionary meta validation so it can be overridden (#1679) ## [2.1.0] - 2023-05-10 ### Added - Added interval for flushing the cache. (#1670) - `bulkRemove` method on the store. (#1666) - Ability to regenerate MMR (#1664) - Ability to migrade MMR from file based db to postgres db and vice versa (#1618) ### Changed - Move more chain agnostic code form node. (#1658) (#1659) - Move any polkadot imports to utils package. (#1653) ### Fixed - POI Cache issues (#1660) - `store.getOneByField` with historical and index (#1667) - Store cache threshold not including removed items (#1675) ## [2.0.2] - 2023-04-27 ### Changed - Deprecate `localMode` (#1648) ## [2.0.1] - 2023-04-27 ### Fixed - Fix ApiService abstract class, improve getting all DS (#1638) - Fix assertion error and pk index type (#1641) - Fix tests (#1640) ## [2.0.0] - 2023-04-20 ### Changed - Major release 2.0.0, align with other package versions - Update metadata when dictionary skips large number of blocks (#1577) ### Added - Added StoreCache service and various other improvements (#1561) - Added TestingService (#1584) ### Fixed - Enable Typescript strict setting and improve code quality (#1625) - Fixed enum not being included in POI (#1561) - Fixed when Poi block offset 0, it could get updated when app restart (#1459) - Fixed index name too long issue (#1599) - Fixed dictionary validation issues and improve error messages (#1561) ## [1.11.3] - 2023-04-17 ### Fixed - Improve log, update progress string (#1612) ## [1.11.2] - 2023-04-05 ### Fixed - Compute block size one property at a time to prevent RangeError - Upgrade @subql/apollo-link version ## [1.11.1] - 2023-03-30 ### Changed - Change to support multiple endpoints (#1551) ### Fixed - Fix previous release 1.11.0 failed ## [1.11.0] - 2023-03-29 ### Added - Add SmartBatchService and BlockSizeBuffer (#1506) - Handle bigint in json.stringify (#1562) - Generate sourcemap for projects (#1569) - Update polkadot api to 10.1.4 (#1580) ### Fixed - Fix enum under schema not being escaped (#1555) - Remove blocking in process queueing (#1572) ### Changed - Use `performance.now` instead of date for profiler. (#1549) - Rename `--sponsored-dictionary` to `--dictionary-resolver` (#1559) ## [1.10.0] - 2023-03-06 ### Fixed - fix issue store getByField limit could potentially excess config limit (#1529) ### Changed - Move enum under schema (#1527) - Deprecate exclude constraint (#1543) ## [1.9.0] - 2023-02-21 ### Added - add blockTime to NodeConfig (#1501) ### Changed - Support array type in dictionary queries (#1510) ## [1.8.0] - 2023-01-23 ### Added - Add validation of dictionary with start height (#1473) - `Store` add count for entity (#1480) ### Fixed - Fix custom metadata keys not being applied (#1496) ## [1.7.1] - 2022-12-22 ### Fixed - Fix trigger function name too long (#1469) ## [1.7.0] - 2022-12-19 ### Fixed - Workers: Fix SequelizeDatabaseError - tuple concurrently updated (#1458) - Handle `bulkUpdate` when fields are undefined with historical indexing (#1463) ### Added - Add start height to project metadata (#1456) ## [1.6.0] - 2022-12-06 ### Added - Support for `bypassBlocks` (#1435) ## [1.5.1] - 2022-11-30 ### Fixed - Fixed enum name (#1441) ## [1.5.0] - 2022-11-23 ### Added - Dictionary auth link integration (#1411) - Support multi-chain indexing (#1375) ### Changed - Move enum name generation method to node-core (#1427) ## [1.4.1] - 2022-11-15 ### Fixed - Hot fix for hot schema reload (#1404) ## [1.4.0] - 2022-11-15 ### Added - Support for hot schema reload. (#1401) - Support for distinct query plugin. (#1274) ## [1.3.3] - 2022-11-09 ### Added - Added retry method for handle fetch errors (#1386) ## [1.3.2] - 2022-11-08 ### Fixed - Fix missing sequelize sync (#1389) ## [1.3.1] - 2022-11-08 ### Fixed - Remove sequelize alter table (#1387) ## [1.3.0] - 2022-11-07 ### Fixed - Improve dictionary query by filter with data sources start block. (#1371) ## [1.2.0] - 2022-10-28 ### Added - Support for unfinalized blocks. (#1308) ## [1.1.0] - 2022-10-27 ### Changed - Update to `@polkadot/api@9.4.2`/ (#1356) - Backport dictionary service features from Algorand. (#1346) ## [1.0.1] - 2022-10-11 ### Added - Common code from sandbox and dictionary. (#1345) ## [1.0.0] - 2022-10-10 ### Removed - `Subqueries` database table. (#1340) ## [0.1.3] - 2022-10-06 ### Changed - Update IPFS endpoints. (#1337) ### Fixed - Benchmark info not being logged. (#1138) ## [0.1.2] - 2022-09-27 ### Changed - Moved `yargs` file from `node-core` to `node`. (#1281) - Update `sequelize`. (#1311) ## [0.1.1] - 2022-08-26 ### Fixed - Imports not being relative (#1268) ## [0.1.0] - 2022-08-26 ### Changed - Move blockchain agnostic code from `node` to `node-core` package. (#1222) [Unreleased]: https://github.com/subquery/subql/compare/node-core/19.2.0...HEAD [19.2.0]: https://github.com/subquery/subql/compare/node-core/19.1.0...node-core/19.2.0 [19.1.0]: https://github.com/subquery/subql/compare/node-core/19.0.0...node-core/19.1.0 [19.0.0]: https://github.com/subquery/subql/compare/node-core/18.5.3...node-core/19.0.0 [18.5.3]: https://github.com/subquery/subql/compare/node-core/18.5.2...node-core/18.5.3 [18.5.2]: https://github.com/subquery/subql/compare/node-core/18.5.1...node-core/18.5.2 [18.5.1]: https://github.com/subquery/subql/compare/node-core/18.5.0...node-core/18.5.1 [18.5.0]: https://github.com/subquery/subql/compare/node-core/18.4.0...node-core/18.5.0 [18.4.0]: https://github.com/subquery/subql/compare/node-core/18.3.3...node-core/18.4.0 [18.3.3]: https://github.com/subquery/subql/compare/node-core/18.3.2...node-core/18.3.3 [18.3.2]: https://github.com/subquery/subql/compare/node-core/18.3.1...node-core/18.3.2 [18.3.1]: https://github.com/subquery/subql/compare/node-core/18.3.0...node-core/18.3.1 [18.3.0]: https://github.com/subquery/subql/compare/node-core/18.2.1...node-core/18.3.0 [18.2.1]: https://github.com/subquery/subql/compare/node-core/18.2.0...node-core/18.2.1 [18.2.0]: https://github.com/subquery/subql/compare/node-core/18.1.2...node-core/18.2.0 [18.1.2]: https://github.com/subquery/subql/compare/node-core/18.1.1...node-core/18.1.2 [18.1.1]: https://github.com/subquery/subql/compare/node-core/18.1.0...node-core/18.1.1 [18.1.0]: https://github.com/subquery/subql/compare/node-core/18.0.6...node-core/18.1.0 [18.0.6]: https://github.com/subquery/subql/compare/node-core/18.0.5...node-core/18.0.6 [18.0.5]: https://github.com/subquery/subql/compare/node-core/18.0.4...node-core/18.0.5 [18.0.4]: https://github.com/subquery/subql/compare/node-core/18.0.3...node-core/18.0.4 [18.0.3]: https://github.com/subquery/subql/compare/node-core/18.0.2...node-core/18.0.3 [18.0.2]: https://github.com/subquery/subql/compare/node-core/18.0.1...node-core/18.0.2 [18.0.1]: https://github.com/subquery/subql/compare/node-core/18.0.0...node-core/18.0.1 [18.0.0]: https://github.com/subquery/subql/compare/node-core/17.2.2...node-core/18.0.0 [17.2.2]: https://github.com/subquery/subql/compare/node-core/17.2.1...node-core/17.2.2 [17.2.1]: https://github.com/subquery/subql/compare/node-core/17.2.0...node-core/17.2.1 [17.2.0]: https://github.com/subquery/subql/compare/node-core/17.1.0...node-core/17.2.0 [17.1.0]: https://github.com/subquery/subql/compare/node-core/17.0.2...node-core/17.1.0 [17.0.2]: https://github.com/subquery/subql/compare/node-core/17.0.1...node-core/17.0.2 [17.0.1]: https://github.com/subquery/subql/compare/node-core/17.0.0...node-core/17.0.1 [17.0.0]: https://github.com/subquery/subql/compare/node-core/16.2.1...node-core/17.0.0 [16.2.1]: https://github.com/subquery/subql/compare/node-core/16.2.0...node-core/16.2.1 [16.2.0]: https://github.com/subquery/subql/compare/node-core/16.1.0...node-core/16.2.0 [16.1.0]: https://github.com/subquery/subql/compare/node-core/16.0.0...node-core/16.1.0 [16.0.0]: https://github.com/subquery/subql/compare/node-core/15.0.3...node-core/16.0.0 [15.0.3]: https://github.com/subquery/subql/compare/node-core/15.0.2...node-core/15.0.3 [15.0.2]: https://github.com/subquery/subql/compare/node-core/15.0.1...node-core/15.0.2 [15.0.1]: https://github.com/subquery/subql/compare/node-core/15.0.0...node-core/15.0.1 [15.0.0]: https://github.com/subquery/subql/compare/node-core/14.1.7...node-core/15.0.0 [14.1.7]: https://github.com/subquery/subql/compare/node-core/14.1.6...node-core/14.1.7 [14.1.6]: https://github.com/subquery/subql/compare/node-core/14.1.5...node-core/14.1.6 [14.1.5]: https://github.com/subquery/subql/compare/node-core/14.1.4...node-core/14.1.5 [14.1.4]: https://github.com/subquery/subql/compare/node-core/14.1.3...node-core/14.1.4 [14.1.3]: https://github.com/subquery/subql/compare/node-core/14.1.2...node-core/14.1.3 [14.1.2]: https://github.com/subquery/subql/compare/node-core/14.1.1...node-core/14.1.2 [14.1.1]: https://github.com/subquery/subql/compare/node-core/14.1.0...node-core/14.1.1 [14.1.0]: https://github.com/subquery/subql/compare/node-core/14.0.0...node-core/14.1.0 [14.0.0]: https://github.com/subquery/subql/compare/node-core/13.0.2...node-core/14.0.0 [13.0.2]: https://github.com/subquery/subql/compare/node-core/13.0.1...node-core/13.0.2 [13.0.1]: https://github.com/subquery/subql/compare/node-core/13.0.0...node-core/13.0.1 [13.0.0]: https://github.com/subquery/subql/compare/node-core/12.0.0...node-core/13.0.0 [12.0.0]: https://github.com/subquery/subql/compare/node-core/11.0.0...node-core/12.0.0 [11.0.0]: https://github.com/subquery/subql/compare/node-core/10.10.2...node-core/11.0.0 [10.10.2]: https://github.com/subquery/subql/compare/node-core/10.10.1...node-core/10.10.2 [10.10.1]: https://github.com/subquery/subql/compare/node-core/10.10.0...node-core/10.10.1 [10.10.0]: https://github.com/subquery/subql/compare/node-core/10.9.0...node-core/10.10.0 [10.9.0]: https://github.com/subquery/subql/compare/node-core/10.6.0...node-core/10.9.0 [10.6.0]: https://github.com/subquery/subql/compare/node-core/10.5.1...node-core/10.6.0 [10.5.1]: https://github.com/subquery/subql/compare/node-core/10.5.0...node-core/10.5.1 [10.5.0]: https://github.com/subquery/subql/compare/node-core/10.4.1...node-core/10.5.0 [10.4.1]: https://github.com/subquery/subql/compare/node-core/10.4.0...node-core/10.4.1 [10.4.0]: https://github.com/subquery/subql/compare/node-core/10.3.2...node-core/10.4.0 [10.3.2]: https://github.com/subquery/subql/compare/node-core/10.3.1...node-core/10.3.2 [10.3.1]: https://github.com/subquery/subql/compare/node-core/10.3.0...node-core/10.3.1 [10.3.0]: https://github.com/subquery/subql/compare/node-core/10.2.0...node-core/10.3.0 [10.2.0]: https://github.com/subquery/subql/compare/node-core/10.1.2...node-core/10.2.0 [10.1.2]: https://github.com/subquery/subql/compare/node-core/10.1.1...node-core/10.1.2 [10.1.1]: https://github.com/subquery/subql/compare/node-core/10.1.0...node-core/10.1.1 [10.1.0]: https://github.com/subquery/subql/compare/node-core/10.0.0...node-core/10.1.0 [10.0.0]: https://github.com/subquery/subql/compare/node-core/9.0.0...node-core/10.0.0 [9.0.0]: https://github.com/subquery/subql/compare/node-core/8.0.1...node-core/9.0.0 [8.0.1]: https://github.com/subquery/subql/compare/node-core/8.0.0...node-core/8.0.1 [8.0.0]: https://github.com/subquery/subql/compare/node-core/7.5.1...node-core/8.0.0 [7.5.1]: https://github.com/subquery/subql/compare/node-core/7.5.0...node-core/7.5.1 [7.5.0]: https://github.com/subquery/subql/compare/node-core/7.4.3...node-core/7.5.0 [7.4.3]: https://github.com/subquery/subql/compare/node-core/7.4.2...node-core/7.4.3 [7.4.2]: https://github.com/subquery/subql/compare/node-core/7.4.1...node-core/7.4.2 [7.4.1]: https://github.com/subquery/subql/compare/node-core/7.4.0...node-core/7.4.1 [7.4.0]: https://github.com/subquery/subql/compare/node-core/7.3.1...node-core/7.4.0 [7.3.1]: https://github.com/subquery/subql/compare/node-core/7.3.0...node-core/7.3.1 [7.3.0]: https://github.com/subquery/subql/compare/node-core/7.2.1...node-core/7.3.0 [7.2.1]: https://github.com/subquery/subql/compare/node-core/7.2.0...node-core/7.2.1 [7.2.0]: https://github.com/subquery/subql/compare/node-core/7.1.0...node-core/7.2.0 [7.1.0]: https://github.com/subquery/subql/compare/node-core/7.0.8...node-core/7.1.0 [7.0.8]: https://github.com/subquery/subql/compare/node-core/7.0.7...node-core/7.0.8 [7.0.7]: https://github.com/subquery/subql/compare/node-core/7.0.6...node-core/7.0.7 [7.0.6]: https://github.com/subquery/subql/compare/node-core/7.0.5...node-core/7.0.6 [7.0.5]: https://github.com/subquery/subql/compare/node-core/7.0.4...node-core/7.0.5 [7.0.4]: https://github.com/subquery/subql/compare/node-core/7.0.3...node-core/7.0.4 [7.0.3]: https://github.com/subquery/subql/compare/node-core/7.0.2...node-core/7.0.3 [7.0.2]: https://github.com/subquery/subql/compare/node-core/7.0.1...node-core/7.0.2 [7.0.1]: https://github.com/subquery/subql/compare/node-core/7.0.0...node-core/7.0.1 [7.0.0]: https://github.com/subquery/subql/compare/node-core/6.4.2...node-core/7.0.0 [6.4.2]: https://github.com/subquery/subql/compare/node-core/6.4.1...node-core/6.4.2 [6.4.1]: https://github.com/subquery/subql/compare/node-core/6.4.0...node-core/6.4.1 [6.4.0]: https://github.com/subquery/subql/compare/node-core/6.3.0...node-core/6.4.0 [6.3.0]: https://github.com/subquery/subql/compare/node-core/6.2.0...node-core/6.3.0 [6.2.0]: https://github.com/subquery/subql/compare/node-core/6.1.1...node-core/6.2.0 [6.1.1]: https://github.com/subquery/subql/compare/node-core/6.1.0...node-core/6.1.1 [6.1.0]: https://github.com/subquery/subql/compare/node-core/6.0.4...node-core/6.1.0 [6.0.4]: https://github.com/subquery/subql/compare/node-core/6.0.3...node-core/6.0.4 [6.0.3]: https://github.com/subquery/subql/compare/node-core/6.0.2...node-core/6.0.3 [6.0.2]: https://github.com/subquery/subql/compare/node-core/6.0.1...node-core/6.0.2 [6.0.1]: https://github.com/subquery/subql/compare/node-core/6.0.0...node-core/6.0.1 [6.0.0]: https://github.com/subquery/subql/compare/node-core/5.0.3...node-core/6.0.0 [5.0.3]: https://github.com/subquery/subql/compare/node-core/5.0.2...node-core/5.0.3 [5.0.2]: https://github.com/subquery/subql/compare/node-core/5.0.1...node-core/5.0.2 [5.0.1]: https://github.com/subquery/subql/compare/node-core/4.2.3...node-core/5.0.1 [4.2.3]: https://github.com/subquery/subql/compare/node-core/4.2.2...node-core/4.2.3 [4.2.2]: https://github.com/subquery/subql/compare/node-core/4.2.1...node-core/4.2.2 [4.2.1]: https://github.com/subquery/subql/compare/node-core/4.2.0...node-core/4.2.1 [4.2.0]: https://github.com/subquery/subql/compare/node-core/4.1.0...node-core/4.2.0 [4.1.0]: https://github.com/subquery/subql/compare/node-core/4.0.1...node-core/4.1.0 [4.0.1]: https://github.com/subquery/subql/compare/node-core/4.0.0...node-core/4.0.1 [4.0.0]: https://github.com/subquery/subql/compare/node-core/3.1.2...node-core/4.0.0 [3.1.2]: https://github.com/subquery/subql/compare/node-core/3.1.1...node-core/3.1.2 [3.1.1]: https://github.com/subquery/subql/compare/node-core/3.1.0...node-core/3.1.1 [3.1.0]: https://github.com/subquery/subql/compare/node-core/3.0.0...node-core/3.1.0 [3.0.0]: https://github.com/subquery/subql/compare/node-core/2.6.0...node-core/3.0.0 [2.6.0]: https://github.com/subquery/subql/compare/node-core/2.5.1...node-core/2.6.0 [2.5.1]: https://github.com/subquery/subql/compare/node-core/2.5.0...node-core/2.5.1 [2.5.0]: https://github.com/subquery/subql/compare/node-core/2.4.5...node-core/2.5.0 [2.4.5]: https://github.com/subquery/subql/compare/node-core/2.4.4...node-core/2.4.5 [2.4.4]: https://github.com/subquery/subql/compare/node-core/2.4.3...node-core/2.4.4 [2.4.3]: https://github.com/subquery/subql/compare/node-core/2.4.2...node-corev2.4.3 [2.4.2]: https://github.com/subquery/subql/compare/node-core/2.4.1...node-core/2.4.2 [2.4.1]: https://github.com/subquery/subql/compare/node-core/2.4.0...node-core/2.4.1 [2.4.0]: https://github.com/subquery/subql/compare/node-core/2.3.1...node-core/2.4.0 [2.3.1]: https://github.com/subquery/subql/compare/node-core/2.3.0...node-core/2.3.1 [2.3.0]: https://github.com/subquery/subql/compare/node-core/2.2.2...node-core/2.3.0 [2.2.2]: https://github.com/subquery/subql/compare/node-core/2.2.1...node-core/2.2.2 [2.2.1]: https://github.com/subquery/subql/compare/node-core/2.2.0...node-core/2.2.1 [2.2.0]: https://github.com/subquery/subql/compare/node-core/2.1.2...node-core/2.2.0 [2.1.3]: https://github.com/subquery/subql/compare/node-core/2.1.2...node-core/2.1.3 [2.1.2]: https://github.com/subquery/subql/compare/node-core/2.1.1...node-core/2.1.2 [2.1.1]: https://github.com/subquery/subql/compare/node-core/2.1.0...node-core/2.1.1 [2.1.0]: https://github.com/subquery/subql/compare/node-core/2.0.2...node-core/2.1.0 [2.0.2]: https://github.com/subquery/subql/compare/node-core/2.0.1...node-core/2.0.2 [2.0.1]: https://github.com/subquery/subql/compare/node-core/2.0.0...node-core/2.0.1 [2.0.0]: https://github.com/subquery/subql/compare/node-core/1.11.3..node-core/2.0.0 [1.11.3]: https://github.com/subquery/subql/compare/node-core/1.11.2...node-core/1.11.3 [1.11.2]: https://github.com/subquery/subql/compare/node-core/1.11.1...node-core/1.11.2 [1.11.1]: https://github.com/subquery/subql/compare/node-core/1.11.0...node-core/1.11.1 [1.11.0]: https://github.com/subquery/subql/compare/node-core/1.10.0...node-core/1.11.0 [1.10.0]: https://github.com/subquery/subql/compare/node-core1.9.0/...node-core/1.10.0 [1.9.0]: https://github.com/subquery/subql/compare/node-core/1.8.0...node-core/1.9.0 [1.8.0]: https://github.com/subquery/subql/compare/node-core/1.7.1...node-core/1.8.0 [1.7.1]: https://github.com/subquery/subql/compare/node-core/1.7.0...node-core/1.7.1 [1.7.0]: https://github.com/subquery/subql/compare/node-core/1.6.0...node-core/1.7.0 [1.6.0]: https://github.com/subquery/subql/compare/node-core/1.5.1...node-core/1.6.0 [1.5.1]: https://github.com/subquery/subql/compare/node-core/1.5.0...node-core/1.5.1 [1.5.0]: https://github.com/subquery/subql/compare/node-core/1.4.1...node-core/1.5.0 [1.4.1]: https://github.com/subquery/subql/compare/node-core/1.4.0...node-core/1.4.1 [1.4.0]: https://github.com/subquery/subql/compare/node-core/1.3.3...node-core/1.4.0 [1.3.3]: https://github.com/subquery/subql/compare/node-core/1.3.2...node-core/1.3.3 [1.3.2]: https://github.com/subquery/subql/compare/node-core/1.3.1...node-core/1.3.2 [1.3.1]: https://github.com/subquery/subql/compare/node-core/1.3.0...node-core/1.3.1 [1.3.0]: https://github.com/subquery/subql/compare/node-core/1.2.0...node-core/1.3.0 [1.2.0]: https://github.com/subquery/subql/compare/node-core/1.1.0...node-core/1.2.0 [1.1.0]: https://github.com/subquery/subql/compare/node-core/1.0.1...node-core/1.1.0 [1.0.1]: https://github.com/subquery/subql/compare/node-core/1.0.0...node-core/1.0.1 [1.0.0]: https://github.com/subquery/subql/compare/node-core/0.1.3...node-core/1.0.0 [0.1.3]: https://github.com/subquery/subql/compare/node-core/0.1.2...node-core/0.1.3 [0.1.2]: https://github.com/subquery/subql/compare/node-core/0.1.1...node-core/0.1.2 [0.1.1]: https://github.com/subquery/subql/compare/node-core/0.1.0...node-core/0.1.1 [0.1.0]: https://github.com/subquery/subql/creleases/tag/0.1.0 ================================================ FILE: packages/node-core/LICENSE ================================================ GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 Copyright (C) 2007 Free Software Foundation, Inc. Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The GNU General Public License is a free, copyleft license for software and other kinds of works. The licenses for most software and other practical works are designed to take away your freedom to share and change the works. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change all versions of a program--to make sure it remains free software for all its users. We, the Free Software Foundation, use the GNU General Public License for most of our software; it applies also to any other work released this way by its authors. You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for them if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs, and that you know you can do these things. To protect your rights, we need to prevent others from denying you these rights or asking you to surrender the rights. Therefore, you have certain responsibilities if you distribute copies of the software, or if you modify it: responsibilities to respect the freedom of others. For example, if you distribute copies of such a program, whether gratis or for a fee, you must pass on to the recipients the same freedoms that you received. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. Developers that use the GNU GPL protect your rights with two steps: (1) assert copyright on the software, and (2) offer you this License giving you legal permission to copy, distribute and/or modify it. For the developers' and authors' protection, the GPL clearly explains that there is no warranty for this free software. For both users' and authors' sake, the GPL requires that modified versions be marked as changed, so that their problems will not be attributed erroneously to authors of previous versions. Some devices are designed to deny users access to install or run modified versions of the software inside them, although the manufacturer can do so. This is fundamentally incompatible with the aim of protecting users' freedom to change the software. The systematic pattern of such abuse occurs in the area of products for individuals to use, which is precisely where it is most unacceptable. Therefore, we have designed this version of the GPL to prohibit the practice for those products. If such problems arise substantially in other domains, we stand ready to extend this provision to those domains in future versions of the GPL, as needed to protect the freedom of users. Finally, every program is threatened constantly by software patents. States should not allow patents to restrict development and use of software on general-purpose computers, but in those that do, we wish to avoid the special danger that patents applied to a free program could make it effectively proprietary. To prevent this, the GPL assures that patents cannot be used to render the program non-free. The precise terms and conditions for copying, distribution and modification follow. TERMS AND CONDITIONS 0. Definitions. "This License" refers to version 3 of the GNU General Public License. "Copyright" also means copyright-like laws that apply to other kinds of works, such as semiconductor masks. "The Program" refers to any copyrightable work licensed under this License. Each licensee is addressed as "you". "Licensees" and "recipients" may be individuals or organizations. To "modify" a work means to copy from or adapt all or part of the work in a fashion requiring copyright permission, other than the making of an exact copy. The resulting work is called a "modified version" of the earlier work or a work "based on" the earlier work. A "covered work" means either the unmodified Program or a work based on the Program. To "propagate" a work means to do anything with it that, without permission, would make you directly or secondarily liable for infringement under applicable copyright law, except executing it on a computer or modifying a private copy. Propagation includes copying, distribution (with or without modification), making available to the public, and in some countries other activities as well. To "convey" a work means any kind of propagation that enables other parties to make or receive copies. Mere interaction with a user through a computer network, with no transfer of a copy, is not conveying. An interactive user interface displays "Appropriate Legal Notices" to the extent that it includes a convenient and prominently visible feature that (1) displays an appropriate copyright notice, and (2) tells the user that there is no warranty for the work (except to the extent that warranties are provided), that licensees may convey the work under this License, and how to view a copy of this License. If the interface presents a list of user commands or options, such as a menu, a prominent item in the list meets this criterion. 1. Source Code. The "source code" for a work means the preferred form of the work for making modifications to it. "Object code" means any non-source form of a work. A "Standard Interface" means an interface that either is an official standard defined by a recognized standards body, or, in the case of interfaces specified for a particular programming language, one that is widely used among developers working in that language. The "System Libraries" of an executable work include anything, other than the work as a whole, that (a) is included in the normal form of packaging a Major Component, but which is not part of that Major Component, and (b) serves only to enable use of the work with that Major Component, or to implement a Standard Interface for which an implementation is available to the public in source code form. A "Major Component", in this context, means a major essential component (kernel, window system, and so on) of the specific operating system (if any) on which the executable work runs, or a compiler used to produce the work, or an object code interpreter used to run it. The "Corresponding Source" for a work in object code form means all the source code needed to generate, install, and (for an executable work) run the object code and to modify the work, including scripts to control those activities. However, it does not include the work's System Libraries, or general-purpose tools or generally available free programs which are used unmodified in performing those activities but which are not part of the work. For example, Corresponding Source includes interface definition files associated with source files for the work, and the source code for shared libraries and dynamically linked subprograms that the work is specifically designed to require, such as by intimate data communication or control flow between those subprograms and other parts of the work. The Corresponding Source need not include anything that users can regenerate automatically from other parts of the Corresponding Source. The Corresponding Source for a work in source code form is that same work. 2. Basic Permissions. All rights granted under this License are granted for the term of copyright on the Program, and are irrevocable provided the stated conditions are met. This License explicitly affirms your unlimited permission to run the unmodified Program. The output from running a covered work is covered by this License only if the output, given its content, constitutes a covered work. This License acknowledges your rights of fair use or other equivalent, as provided by copyright law. You may make, run and propagate covered works that you do not convey, without conditions so long as your license otherwise remains in force. You may convey covered works to others for the sole purpose of having them make modifications exclusively for you, or provide you with facilities for running those works, provided that you comply with the terms of this License in conveying all material for which you do not control copyright. Those thus making or running the covered works for you must do so exclusively on your behalf, under your direction and control, on terms that prohibit them from making any copies of your copyrighted material outside their relationship with you. Conveying under any other circumstances is permitted solely under the conditions stated below. Sublicensing is not allowed; section 10 makes it unnecessary. 3. Protecting Users' Legal Rights From Anti-Circumvention Law. No covered work shall be deemed part of an effective technological measure under any applicable law fulfilling obligations under article 11 of the WIPO copyright treaty adopted on 20 December 1996, or similar laws prohibiting or restricting circumvention of such measures. When you convey a covered work, you waive any legal power to forbid circumvention of technological measures to the extent such circumvention is effected by exercising rights under this License with respect to the covered work, and you disclaim any intention to limit operation or modification of the work as a means of enforcing, against the work's users, your or third parties' legal rights to forbid circumvention of technological measures. 4. Conveying Verbatim Copies. You may convey verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice; keep intact all notices stating that this License and any non-permissive terms added in accord with section 7 apply to the code; keep intact all notices of the absence of any warranty; and give all recipients a copy of this License along with the Program. You may charge any price or no price for each copy that you convey, and you may offer support or warranty protection for a fee. 5. Conveying Modified Source Versions. You may convey a work based on the Program, or the modifications to produce it from the Program, in the form of source code under the terms of section 4, provided that you also meet all of these conditions: a) The work must carry prominent notices stating that you modified it, and giving a relevant date. b) The work must carry prominent notices stating that it is released under this License and any conditions added under section 7. This requirement modifies the requirement in section 4 to "keep intact all notices". c) You must license the entire work, as a whole, under this License to anyone who comes into possession of a copy. This License will therefore apply, along with any applicable section 7 additional terms, to the whole of the work, and all its parts, regardless of how they are packaged. This License gives no permission to license the work in any other way, but it does not invalidate such permission if you have separately received it. d) If the work has interactive user interfaces, each must display Appropriate Legal Notices; however, if the Program has interactive interfaces that do not display Appropriate Legal Notices, your work need not make them do so. A compilation of a covered work with other separate and independent works, which are not by their nature extensions of the covered work, and which are not combined with it such as to form a larger program, in or on a volume of a storage or distribution medium, is called an "aggregate" if the compilation and its resulting copyright are not used to limit the access or legal rights of the compilation's users beyond what the individual works permit. Inclusion of a covered work in an aggregate does not cause this License to apply to the other parts of the aggregate. 6. Conveying Non-Source Forms. You may convey a covered work in object code form under the terms of sections 4 and 5, provided that you also convey the machine-readable Corresponding Source under the terms of this License, in one of these ways: a) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by the Corresponding Source fixed on a durable physical medium customarily used for software interchange. b) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by a written offer, valid for at least three years and valid for as long as you offer spare parts or customer support for that product model, to give anyone who possesses the object code either (1) a copy of the Corresponding Source for all the software in the product that is covered by this License, on a durable physical medium customarily used for software interchange, for a price no more than your reasonable cost of physically performing this conveying of source, or (2) access to copy the Corresponding Source from a network server at no charge. c) Convey individual copies of the object code with a copy of the written offer to provide the Corresponding Source. This alternative is allowed only occasionally and noncommercially, and only if you received the object code with such an offer, in accord with subsection 6b. d) Convey the object code by offering access from a designated place (gratis or for a charge), and offer equivalent access to the Corresponding Source in the same way through the same place at no further charge. You need not require recipients to copy the Corresponding Source along with the object code. If the place to copy the object code is a network server, the Corresponding Source may be on a different server (operated by you or a third party) that supports equivalent copying facilities, provided you maintain clear directions next to the object code saying where to find the Corresponding Source. Regardless of what server hosts the Corresponding Source, you remain obligated to ensure that it is available for as long as needed to satisfy these requirements. e) Convey the object code using peer-to-peer transmission, provided you inform other peers where the object code and Corresponding Source of the work are being offered to the general public at no charge under subsection 6d. A separable portion of the object code, whose source code is excluded from the Corresponding Source as a System Library, need not be included in conveying the object code work. A "User Product" is either (1) a "consumer product", which means any tangible personal property which is normally used for personal, family, or household purposes, or (2) anything designed or sold for incorporation into a dwelling. In determining whether a product is a consumer product, doubtful cases shall be resolved in favor of coverage. For a particular product received by a particular user, "normally used" refers to a typical or common use of that class of product, regardless of the status of the particular user or of the way in which the particular user actually uses, or expects or is expected to use, the product. A product is a consumer product regardless of whether the product has substantial commercial, industrial or non-consumer uses, unless such uses represent the only significant mode of use of the product. "Installation Information" for a User Product means any methods, procedures, authorization keys, or other information required to install and execute modified versions of a covered work in that User Product from a modified version of its Corresponding Source. The information must suffice to ensure that the continued functioning of the modified object code is in no case prevented or interfered with solely because modification has been made. If you convey an object code work under this section in, or with, or specifically for use in, a User Product, and the conveying occurs as part of a transaction in which the right of possession and use of the User Product is transferred to the recipient in perpetuity or for a fixed term (regardless of how the transaction is characterized), the Corresponding Source conveyed under this section must be accompanied by the Installation Information. But this requirement does not apply if neither you nor any third party retains the ability to install modified object code on the User Product (for example, the work has been installed in ROM). The requirement to provide Installation Information does not include a requirement to continue to provide support service, warranty, or updates for a work that has been modified or installed by the recipient, or for the User Product in which it has been modified or installed. Access to a network may be denied when the modification itself materially and adversely affects the operation of the network or violates the rules and protocols for communication across the network. Corresponding Source conveyed, and Installation Information provided, in accord with this section must be in a format that is publicly documented (and with an implementation available to the public in source code form), and must require no special password or key for unpacking, reading or copying. 7. Additional Terms. "Additional permissions" are terms that supplement the terms of this License by making exceptions from one or more of its conditions. Additional permissions that are applicable to the entire Program shall be treated as though they were included in this License, to the extent that they are valid under applicable law. If additional permissions apply only to part of the Program, that part may be used separately under those permissions, but the entire Program remains governed by this License without regard to the additional permissions. When you convey a copy of a covered work, you may at your option remove any additional permissions from that copy, or from any part of it. (Additional permissions may be written to require their own removal in certain cases when you modify the work.) You may place additional permissions on material, added by you to a covered work, for which you have or can give appropriate copyright permission. Notwithstanding any other provision of this License, for material you add to a covered work, you may (if authorized by the copyright holders of that material) supplement the terms of this License with terms: a) Disclaiming warranty or limiting liability differently from the terms of sections 15 and 16 of this License; or b) Requiring preservation of specified reasonable legal notices or author attributions in that material or in the Appropriate Legal Notices displayed by works containing it; or c) Prohibiting misrepresentation of the origin of that material, or requiring that modified versions of such material be marked in reasonable ways as different from the original version; or d) Limiting the use for publicity purposes of names of licensors or authors of the material; or e) Declining to grant rights under trademark law for use of some trade names, trademarks, or service marks; or f) Requiring indemnification of licensors and authors of that material by anyone who conveys the material (or modified versions of it) with contractual assumptions of liability to the recipient, for any liability that these contractual assumptions directly impose on those licensors and authors. All other non-permissive additional terms are considered "further restrictions" within the meaning of section 10. If the Program as you received it, or any part of it, contains a notice stating that it is governed by this License along with a term that is a further restriction, you may remove that term. If a license document contains a further restriction but permits relicensing or conveying under this License, you may add to a covered work material governed by the terms of that license document, provided that the further restriction does not survive such relicensing or conveying. If you add terms to a covered work in accord with this section, you must place, in the relevant source files, a statement of the additional terms that apply to those files, or a notice indicating where to find the applicable terms. Additional terms, permissive or non-permissive, may be stated in the form of a separately written license, or stated as exceptions; the above requirements apply either way. 8. Termination. You may not propagate or modify a covered work except as expressly provided under this License. Any attempt otherwise to propagate or modify it is void, and will automatically terminate your rights under this License (including any patent licenses granted under the third paragraph of section 11). However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation. Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means, this is the first time you have received notice of violation of this License (for any work) from that copyright holder, and you cure the violation prior to 30 days after your receipt of the notice. Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under this License. If your rights have been terminated and not permanently reinstated, you do not qualify to receive new licenses for the same material under section 10. 9. Acceptance Not Required for Having Copies. You are not required to accept this License in order to receive or run a copy of the Program. Ancillary propagation of a covered work occurring solely as a consequence of using peer-to-peer transmission to receive a copy likewise does not require acceptance. However, nothing other than this License grants you permission to propagate or modify any covered work. These actions infringe copyright if you do not accept this License. Therefore, by modifying or propagating a covered work, you indicate your acceptance of this License to do so. 10. Automatic Licensing of Downstream Recipients. Each time you convey a covered work, the recipient automatically receives a license from the original licensors, to run, modify and propagate that work, subject to this License. You are not responsible for enforcing compliance by third parties with this License. An "entity transaction" is a transaction transferring control of an organization, or substantially all assets of one, or subdividing an organization, or merging organizations. If propagation of a covered work results from an entity transaction, each party to that transaction who receives a copy of the work also receives whatever licenses to the work the party's predecessor in interest had or could give under the previous paragraph, plus a right to possession of the Corresponding Source of the work from the predecessor in interest, if the predecessor has it or can get it with reasonable efforts. You may not impose any further restrictions on the exercise of the rights granted or affirmed under this License. For example, you may not impose a license fee, royalty, or other charge for exercise of rights granted under this License, and you may not initiate litigation (including a cross-claim or counterclaim in a lawsuit) alleging that any patent claim is infringed by making, using, selling, offering for sale, or importing the Program or any portion of it. 11. Patents. A "contributor" is a copyright holder who authorizes use under this License of the Program or a work on which the Program is based. The work thus licensed is called the contributor's "contributor version". A contributor's "essential patent claims" are all patent claims owned or controlled by the contributor, whether already acquired or hereafter acquired, that would be infringed by some manner, permitted by this License, of making, using, or selling its contributor version, but do not include claims that would be infringed only as a consequence of further modification of the contributor version. For purposes of this definition, "control" includes the right to grant patent sublicenses in a manner consistent with the requirements of this License. Each contributor grants you a non-exclusive, worldwide, royalty-free patent license under the contributor's essential patent claims, to make, use, sell, offer for sale, import and otherwise run, modify and propagate the contents of its contributor version. In the following three paragraphs, a "patent license" is any express agreement or commitment, however denominated, not to enforce a patent (such as an express permission to practice a patent or covenant not to sue for patent infringement). To "grant" such a patent license to a party means to make such an agreement or commitment not to enforce a patent against the party. If you convey a covered work, knowingly relying on a patent license, and the Corresponding Source of the work is not available for anyone to copy, free of charge and under the terms of this License, through a publicly available network server or other readily accessible means, then you must either (1) cause the Corresponding Source to be so available, or (2) arrange to deprive yourself of the benefit of the patent license for this particular work, or (3) arrange, in a manner consistent with the requirements of this License, to extend the patent license to downstream recipients. "Knowingly relying" means you have actual knowledge that, but for the patent license, your conveying the covered work in a country, or your recipient's use of the covered work in a country, would infringe one or more identifiable patents in that country that you have reason to believe are valid. If, pursuant to or in connection with a single transaction or arrangement, you convey, or propagate by procuring conveyance of, a covered work, and grant a patent license to some of the parties receiving the covered work authorizing them to use, propagate, modify or convey a specific copy of the covered work, then the patent license you grant is automatically extended to all recipients of the covered work and works based on it. A patent license is "discriminatory" if it does not include within the scope of its coverage, prohibits the exercise of, or is conditioned on the non-exercise of one or more of the rights that are specifically granted under this License. You may not convey a covered work if you are a party to an arrangement with a third party that is in the business of distributing software, under which you make payment to the third party based on the extent of your activity of conveying the work, and under which the third party grants, to any of the parties who would receive the covered work from you, a discriminatory patent license (a) in connection with copies of the covered work conveyed by you (or copies made from those copies), or (b) primarily for and in connection with specific products or compilations that contain the covered work, unless you entered into that arrangement, or that patent license was granted, prior to 28 March 2007. Nothing in this License shall be construed as excluding or limiting any implied license or other defenses to infringement that may otherwise be available to you under applicable patent law. 12. No Surrender of Others' Freedom. If conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot convey a covered work so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not convey it at all. For example, if you agree to terms that obligate you to collect a royalty for further conveying from those to whom you convey the Program, the only way you could satisfy both those terms and this License would be to refrain entirely from conveying the Program. 13. Use with the GNU Affero General Public License. Notwithstanding any other provision of this License, you have permission to link or combine any covered work with a work licensed under version 3 of the GNU Affero General Public License into a single combined work, and to convey the resulting work. The terms of this License will continue to apply to the part which is the covered work, but the special requirements of the GNU Affero General Public License, section 13, concerning interaction through a network will apply to the combination as such. 14. Revised Versions of this License. The Free Software Foundation may publish revised and/or new versions of the GNU General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies that a certain numbered version of the GNU General Public License "or any later version" applies to it, you have the option of following the terms and conditions either of that numbered version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of the GNU General Public License, you may choose any version ever published by the Free Software Foundation. If the Program specifies that a proxy can decide which future versions of the GNU General Public License can be used, that proxy's public statement of acceptance of a version permanently authorizes you to choose that version for the Program. Later license versions may give you additional or different permissions. However, no additional obligations are imposed on any author or copyright holder as a result of your choosing to follow a later version. 15. Disclaimer of Warranty. THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 16. Limitation of Liability. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. 17. Interpretation of Sections 15 and 16. If the disclaimer of warranty and limitation of liability provided above cannot be given local legal effect according to their terms, reviewing courts shall apply local law that most closely approximates an absolute waiver of all civil liability in connection with the Program, unless a warranty or assumption of liability accompanies a copy of the Program in return for a fee. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively state the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . Also add information on how to contact you by electronic and paper mail. If the program does terminal interaction, make it output a short notice like this when it starts in an interactive mode: Copyright (C) This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, your program's commands might be different; for a GUI interface, you would use an "about box". You should also get your employer (if you work as a programmer) or school, if any, to sign a "copyright disclaimer" for the program, if necessary. For more information on this, and how to apply and follow the GNU GPL, see . The GNU General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. But first, please read . ================================================ FILE: packages/node-core/logger.js ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 // A standalone entrypoint for logger so we can import `@subql/node-core/logger` const logger = require('./dist/logger'); module.exports = logger; ================================================ FILE: packages/node-core/package.json ================================================ { "name": "@subql/node-core", "version": "19.2.0", "description": "Common node features that are agnostic to blockchains", "homepage": "https://github.com/subquery/subql", "repository": "github:subquery/subql", "scripts": { "test": "echo \"Error: no test specified\" && exit 1", "build": "rm -rf dist && tsc -b", "format": "prettier --write \"src/**/*.ts\"", "changelog:release": "echo \"Updating changelog $npm_package_version\" && npx chan release $npm_package_version --git-url \"https://github.com/subquery/subql\" --release-prefix=\"node-core/\"" }, "author": "Ian He", "main": "dist/index.js", "license": "GPL-3.0", "files": [ "src/global.d.ts", "/dist", "!/dist/**/*.spec.js", "!/dist/**/*.spec.d.ts", "!/dist/**/*.spec.js.map", "!/dist/**/*.test.js", "!/dist/**/*.test.d.ts", "!/dist/**/*.test.js.map", "logger.js", "yargs.js", "CHANGELOG.md", "LICENSE" ], "dependencies": { "@apollo/client": "^3.14.0", "@nestjs/common": "^11.0.16", "@nestjs/event-emitter": "^3.0.0", "@nestjs/schedule": "^5.0.1", "@subql/common": "workspace:~", "@subql/testing": "workspace:~", "@subql/types": "workspace:~", "@subql/utils": "workspace:~", "@willsoto/nestjs-prometheus": "^6.0.2", "async-mutex": "^0.5.0", "cron-converter": "^2.0.1", "csv-stringify": "^6.5.1", "dayjs": "^1.11.12", "dotenv": "^16.4.5", "graphql": "^15.8.0", "lodash": "^4.17.21", "lru-cache": "10.1.0", "merkle-tools": "^1.4.1", "pg": "^8.12.0", "prom-client": "^15.1.3", "source-map": "^0.7.4", "tar": "^7.4.3", "toposort-class": "^1.0.1", "vm2": "3.9.19", "yargs": "^16.2.0" }, "devDependencies": { "@types/yargs": "^16.0.9" }, "stableVersion": "19.1.1-0" } ================================================ FILE: packages/node-core/src/admin/admin.controller.spec.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import {HttpException, HttpStatus} from '@nestjs/common'; import {EventEmitter2} from '@nestjs/event-emitter'; import {Test, TestingModule} from '@nestjs/testing'; import {TargetBlockPayload, RewindPayload, AdminEvent} from '../events'; import {MonitorService, PoiService, ProofOfIndex, StoreService} from '../indexer'; import {AdminController, AdminListener} from './admin.controller'; import {BlockRangeDto} from './blockRange'; describe('AdminController', () => { let adminController: AdminController; let monitorService: MonitorService; let poiService: PoiService; let eventEmitter: EventEmitter2; beforeEach(async () => { const module: TestingModule = await Test.createTestingModule({ controllers: [AdminController], providers: [ { provide: MonitorService, useValue: { getBlockIndexHistory: jest.fn(), getForkedRecords: jest.fn(), getBlockIndexRecords: jest.fn(), }, }, { provide: PoiService, useValue: { plainPoiRepo: { getStartAndEndBlock: jest.fn(), getPoiBlocksByRange: jest.fn(), }, PoiToHuman: jest.fn(), }, }, { provide: EventEmitter2, useValue: { emitAsync: jest.fn(), once: jest.fn(), emit: jest.fn(), }, }, { provide: StoreService, useValue: { syncDbSize: jest.fn(), }, }, ], }).compile(); adminController = module.get(AdminController); monitorService = module.get(MonitorService); poiService = module.get(PoiService); eventEmitter = module.get(EventEmitter2); }); it('should be defined', () => { expect(adminController).toBeDefined(); }); describe('getIndexBlocks', () => { it('should return block index history', async () => { const result = ['block1', 'block2']; jest.spyOn(monitorService, 'getBlockIndexHistory').mockImplementation(() => result); await expect(adminController.getIndexBlocks()).resolves.toEqual(result); }); it('should handle errors', async () => { jest.spyOn(monitorService, 'getBlockIndexHistory').mockImplementation(() => { throw new Error('Test error'); }); await expect(adminController.getIndexBlocks()).rejects.toThrow(HttpException); }); }); describe('getIndexForks', () => { it('should return forked records', async () => { const result = ['fork1', 'fork2']; jest.spyOn(monitorService, 'getForkedRecords').mockImplementation(() => Promise.resolve(result)); await expect(adminController.getIndexForks()).resolves.toEqual(result); }); it('should handle errors', async () => { jest.spyOn(monitorService, 'getForkedRecords').mockImplementation(() => { throw new Error('Test error'); }); await expect(adminController.getIndexForks()).rejects.toThrow(HttpException); }); }); describe('getIndexBlockRecord', () => { it('should return block index records', async () => { const result = ['record1', 'record2']; jest.spyOn(monitorService, 'getBlockIndexRecords').mockImplementation(() => Promise.resolve(result)); await expect(adminController.getIndexBlockRecord('1')).resolves.toEqual(result); }); it('should handle errors', async () => { jest.spyOn(monitorService, 'getBlockIndexRecords').mockImplementation(() => { throw new Error('Test error'); }); await expect(adminController.getIndexBlockRecord('1')).rejects.toThrow(HttpException); }); }); describe('getPoiRange', () => { it('should return POI range', async () => { const result = {startBlock: 1, endBlock: 10}; jest.spyOn(poiService.plainPoiRepo, 'getStartAndEndBlock').mockImplementation(() => Promise.resolve(result)); await expect(adminController.getPoiRange()).resolves.toEqual(result); }); it('should handle errors', async () => { jest.spyOn(poiService.plainPoiRepo, 'getStartAndEndBlock').mockImplementation(() => { throw new Error('Test error'); }); await expect(adminController.getPoiRange()).rejects.toThrow(HttpException); }); }); describe('getPoisByRange', () => { it('should return POIs by range', async () => { const pois: ProofOfIndex[] = [ { id: 1, chainBlockHash: new Uint8Array(), hash: new Uint8Array(), parentHash: new Uint8Array(), operationHashRoot: new Uint8Array(), }, ]; const blockRange = new BlockRangeDto(1, 10); jest.spyOn(poiService.plainPoiRepo, 'getPoiBlocksByRange').mockImplementation(() => Promise.resolve(pois)); await expect(adminController.getPoisByRange(blockRange)).resolves.toEqual([ { chainBlockHash: '0x', hash: '0x', id: 1, operationHashRoot: '0x', parentHash: '0x', }, ]); }); it('should handle errors', async () => { const blockRange = new BlockRangeDto(1, 10); jest.spyOn(poiService.plainPoiRepo, 'getPoiBlocksByRange').mockImplementation(() => { throw new Error('Test error'); }); await expect(() => adminController.getPoisByRange(blockRange)).rejects.toThrow(HttpException); }); it('should throw an error if startBlock is greater than endBlock', async () => { const blockRange = new BlockRangeDto(10, 1); await expect(adminController.getPoisByRange(blockRange)).rejects.toThrow(HttpException); }); }); describe('rewindTarget', () => { it('should return successful rewind payload', async () => { const rewindData = {height: 1} as TargetBlockPayload; const result = {success: true, height: 1} as RewindPayload; jest.spyOn(eventEmitter, 'emitAsync').mockImplementation(() => Promise.resolve([])); jest.spyOn(eventEmitter, 'once').mockImplementation((event, callback) => { callback(result); return eventEmitter; // Ensure that it returns the eventEmitter instance }); await expect(adminController.rewindTarget(rewindData)).resolves.toEqual(result); }); it('should return failure if rewind times out', async () => { const rewindData = {height: 1} as TargetBlockPayload; jest.spyOn(eventEmitter, 'emitAsync').mockImplementation(() => Promise.resolve([])); jest.spyOn(eventEmitter, 'once').mockImplementation(() => { throw new Error('timeout'); }); const expectError = new HttpException( { status: HttpStatus.INTERNAL_SERVER_ERROR, error: 'Rewind failed:', height: rewindData.height, success: false, }, HttpStatus.INTERNAL_SERVER_ERROR ); await expect(adminController.rewindTarget(rewindData)).rejects.toThrow(expectError); }); it('should handle errors', async () => { const rewindData = {height: 1} as TargetBlockPayload; jest.spyOn(eventEmitter, 'emitAsync').mockImplementation(() => { throw new Error('Test error'); }); await expect(adminController.rewindTarget(rewindData)).rejects.toThrow( new HttpException( { status: HttpStatus.INTERNAL_SERVER_ERROR, error: 'Rewind failed:', height: rewindData.height, success: false, }, HttpStatus.INTERNAL_SERVER_ERROR ) ); }); }); }); describe('AdminListener', () => { let adminListener: AdminListener; let eventEmitter: EventEmitter2; beforeEach(async () => { const module: TestingModule = await Test.createTestingModule({ providers: [ AdminListener, { provide: EventEmitter2, useValue: { emit: jest.fn(), }, }, ], }).compile(); adminListener = module.get(AdminListener); eventEmitter = module.get(EventEmitter2); }); it('should be defined', () => { expect(adminListener).toBeDefined(); }); describe('handleRewindSuccess', () => { it('should emit RewindTargetResponse event on rewind success', () => { const payload = {height: 1, success: true} as RewindPayload; adminListener.handleRewindSuccess(payload); expect(eventEmitter.emit).toHaveBeenCalledWith(AdminEvent.RewindTargetResponse, { ...payload, message: `Rewind to block ${payload.height} successful`, }); }); }); describe('handleRewindFailure', () => { it('should emit RewindTargetResponse event on rewind failure', () => { const payload = {height: 1, success: false} as RewindPayload; adminListener.handleRewindFailure(payload); expect(eventEmitter.emit).toHaveBeenCalledWith(AdminEvent.RewindTargetResponse, payload); }); }); }); ================================================ FILE: packages/node-core/src/admin/admin.controller.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import { Controller, Get, Post, HttpException, HttpStatus, Param, Injectable, Query, ValidationPipe, ParseIntPipe, } from '@nestjs/common'; import {EventEmitter2, OnEvent} from '@nestjs/event-emitter'; import {TargetBlockPayload, RewindPayload, AdminEvent, IndexerEvent} from '../events'; import {MonitorService, PoiService, ProofOfIndexHuman, StoreService} from '../indexer'; import {getLogger} from '../logger'; import {timeout} from '../utils'; import {BlockRangeDto, BlockRangeDtoInterface} from './blockRange'; const logger = getLogger('admin-api'); const REWIND_RESPONSE_TIMEOUT = 120; //seconds async function handleServiceCall(serviceCall: () => Promise | T): Promise { try { return await serviceCall(); } catch (e: any) { logger.error(e); throw new HttpException( { status: HttpStatus.INTERNAL_SERVER_ERROR, error: e.message, }, HttpStatus.INTERNAL_SERVER_ERROR ); } } @Controller('admin') export class AdminController { constructor( private monitorService: MonitorService, private poiService: PoiService, private eventEmitter: EventEmitter2, private storeService: StoreService ) {} @Get('index_history/range') async getIndexBlocks(): Promise<(string | number)[]> { return handleServiceCall(() => this.monitorService.getBlockIndexHistory()); } @Get('index_history/forks') async getIndexForks(): Promise { return handleServiceCall(() => this.monitorService.getForkedRecords()); } @Get('index_history/block/:blockHeight') async getIndexBlockRecord(@Param('blockHeight', ParseIntPipe) blockHeight: string): Promise { return handleServiceCall(() => this.monitorService.getBlockIndexRecords(Number(blockHeight))); } @Get('poi/range') async getPoiRange(): Promise { return handleServiceCall(() => this.poiService.plainPoiRepo.getStartAndEndBlock()); } @Get('poi/') async getPoisByRange(@Query(ValidationPipe) blockRange: BlockRangeDto): Promise { const {endBlock, startBlock} = blockRange; logger.info(`[POI] Getting poi history for blocks from ${startBlock} to ${endBlock}`); return handleServiceCall(async () => { const pois = await this.poiService.plainPoiRepo.getPoiBlocksByRange( Number(startBlock), endBlock !== undefined ? Number(endBlock) : undefined ); return pois.filter((poi) => poi !== undefined).map((poi) => PoiService.PoiToHuman(poi)); }); } @Post('rewind') async rewindTarget(@Query() rewindData: TargetBlockPayload): Promise { try { const result = await timeout( new Promise((resolve, reject) => { this.eventEmitter .emitAsync(AdminEvent.rewindTarget, {height: rewindData.height}) .then(() => { this.eventEmitter.once(AdminEvent.RewindTargetResponse, resolve); }) .catch(reject); }), REWIND_RESPONSE_TIMEOUT, `Rewind operation respond timeout after ${REWIND_RESPONSE_TIMEOUT} seconds. Please check metadata to ensure rewind completed` ); return result; } catch (e: any) { logger.error(e.message); throw new HttpException( { status: HttpStatus.INTERNAL_SERVER_ERROR, error: `Rewind failed: ${e.message}`, success: false, height: rewindData.height, }, HttpStatus.INTERNAL_SERVER_ERROR ); } } @Get('db_size') async getDbSize(): Promise { return handleServiceCall(() => this.storeService.syncDbSize()); } } @Injectable() export class AdminListener { constructor(private eventEmitter: EventEmitter2) {} @OnEvent(IndexerEvent.RewindSuccess) handleRewindSuccess(payload: RewindPayload): void { this.eventEmitter.emit(AdminEvent.RewindTargetResponse, { ...payload, message: `Rewind to block ${payload.height} successful`, }); } @OnEvent(IndexerEvent.RewindFailure) handleRewindFailure(payload: RewindPayload): void { this.eventEmitter.emit(AdminEvent.RewindTargetResponse, {...payload}); } } ================================================ FILE: packages/node-core/src/admin/blockRange.test.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import {plainToClass} from 'class-transformer'; import {validate} from 'class-validator'; import {BlockRangeDto} from './blockRange'; describe('BlockRangeDto', () => { it('should create a valid BlockRangeDto instance', () => { const blockRange = new BlockRangeDto(10, 20); expect(blockRange).toBeInstanceOf(BlockRangeDto); expect(blockRange.startBlock).toBe(10); expect(blockRange.endBlock).toBe(20); }); it('should validate successfully for valid data', async () => { const blockRange = plainToClass(BlockRangeDto, {startBlock: 10, endBlock: 20}); const errors = await validate(blockRange); expect(errors.length).toBe(0); }); it('should fail validation if startBlock is not a positive integer', async () => { const blockRange = plainToClass(BlockRangeDto, {startBlock: -10, endBlock: 20}); const errors = await validate(blockRange); expect(errors.length).toBeGreaterThan(0); expect(errors[0].constraints).toHaveProperty('isPositive'); }); it('should fail validation if endBlock is not a positive integer', async () => { const blockRange = plainToClass(BlockRangeDto, {startBlock: 10, endBlock: -20}); const errors = await validate(blockRange); expect(errors.length).toBeGreaterThan(0); expect(errors[0].constraints).toHaveProperty('isPositive'); }); it('should allow endBlock to be undefined', async () => { const blockRange = plainToClass(BlockRangeDto, {startBlock: 10}); const errors = await validate(blockRange); expect(errors.length).toBe(0); expect(blockRange.endBlock).toBeUndefined(); }); it('should fail validation if startBlock is less than 0', async () => { const blockRange = plainToClass(BlockRangeDto, {startBlock: -1, endBlock: 20}); const errors = await validate(blockRange); expect(errors.length).toBeGreaterThan(0); expect(errors[0].constraints).toHaveProperty('min'); }); it('should fail validation if endBlock is less than 0', async () => { const blockRange = plainToClass(BlockRangeDto, {startBlock: 10, endBlock: -1}); const errors = await validate(blockRange); expect(errors.length).toBeGreaterThan(0); expect(errors[0].constraints).toHaveProperty('min'); }); }); ================================================ FILE: packages/node-core/src/admin/blockRange.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import {Type} from 'class-transformer'; import { IsInt, IsPositive, Min, IsOptional, ValidateIf, registerDecorator, ValidationOptions, ValidationArguments, } from 'class-validator'; export function IsGreaterThan(property: string, validationOptions?: ValidationOptions) { return function (object: any, propertyName: string) { registerDecorator({ name: 'isGreaterThan', target: object.constructor, propertyName: propertyName, constraints: [property], options: validationOptions, validator: { validate(value: any, args: ValidationArguments) { const [relatedPropertyName] = args.constraints; const relatedValue = (args.object as any)[relatedPropertyName]; return value === undefined || value > relatedValue; }, defaultMessage(args: ValidationArguments) { const [relatedPropertyName] = args.constraints; return `${args.property} must be greater than ${relatedPropertyName}`; }, }, }); }; } export interface BlockRangeDtoInterface { startBlock: number; endBlock?: number; } export class BlockRangeDto implements BlockRangeDtoInterface { constructor(startBlock: number, endBlock?: number) { this.startBlock = startBlock; this.endBlock = endBlock; } @Type(() => Number) @IsInt() @IsPositive() @Min(0) startBlock: number; @Type(() => Number) @IsInt() @IsPositive() @Min(0) @IsOptional() @IsGreaterThan('startBlock') endBlock: number | undefined; } ================================================ FILE: packages/node-core/src/admin/index.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 export * from './blockRange'; ================================================ FILE: packages/node-core/src/api.connection.error.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 export enum ApiErrorType { Timeout = 'timeout', Connection = 'connection', RateLimit = 'ratelimit', Default = 'default', } export class ApiConnectionError extends Error { errorType: ApiErrorType; constructor(name: string, message: string, errorType: ApiErrorType) { super(message); this.name = name; this.errorType = errorType; } } export class RateLimitError extends ApiConnectionError { constructor(e: Error) { super('RateLimit', e.message, ApiErrorType.RateLimit); } } export class TimeoutError extends ApiConnectionError { constructor(e: Error) { super('TimeoutError', e.message, ApiErrorType.Timeout); } } export class DisconnectionError extends ApiConnectionError { constructor(e: Error) { super('ConnectionError', e.message, ApiErrorType.Connection); } } export class LargeResponseError extends ApiConnectionError { constructor(e: Error) { const newMessage = `Oversized RPC node response. This issue is related to the network's RPC nodes configuration, not your application. You may report it to the network's maintainers or try a different RPC node.\n\n${e.message}`; super('RpcInternalError', newMessage, ApiErrorType.Default); } } export class MetadataMismatchError extends Error { constructor(metadata: string, expected: string, actual: string) { super( `Value of ${metadata} does not match across all endpoints\n Expected: ${expected} Actual: ${actual}` ); } } ================================================ FILE: packages/node-core/src/api.service.spec.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import {EventEmitter2} from '@nestjs/event-emitter'; import {delay} from '@subql/common'; import {IEndpointConfig, ProjectNetworkConfig} from '@subql/types-core'; import {ApiService, IApiConnectionSpecific} from './api.service'; import {NodeConfig} from './configure'; import {ConnectionPoolService, ConnectionPoolStateManager} from './indexer'; class TestApiService extends ApiService { retryConnection( createConnection: (endpoint: string, config: IEndpointConfig) => Promise, network: ProjectNetworkConfig & {chainId: string}, index: number, endpoint: string, config: IEndpointConfig, postConnectedHook?: (connection: IApiConnectionSpecific, endpoint: string, index: number) => void ): void { /* No Op to avoid creating intervals/timeouts in tests*/ } } describe('ApiService', () => { let apiService: TestApiService; beforeEach(() => { const stateManager = new ConnectionPoolStateManager(); const poolService = new ConnectionPoolService(new NodeConfig({} as any), stateManager); apiService = new TestApiService(poolService, new EventEmitter2()); }); it('should throw creating connections if all endpoints are invalid', async () => { await expect( apiService.createConnections( {chainId: 'test', endpoint: {fail: {}, fail2: {}}}, (endpoint) => Promise.resolve({networkMeta: {chain: endpoint}} as any) // Fail meta validation ) ).rejects.toThrow(); }); it('should succeed creating connections if one endpoint is invalid', async () => { await expect( apiService.createConnections( {chainId: 'test', endpoint: {test: {}, fail: {}}}, (endpoint) => Promise.resolve({networkMeta: {chain: endpoint}} as any) // Fail meta validation ) ).resolves.not.toThrow(); }); it(`doesn't set network meta if a connection fails validation`, async () => { await expect( apiService.createConnections({chainId: 'test', endpoint: ['fail']}, (endpoint) => Promise.resolve({networkMeta: {chain: endpoint}} as any) ) ).rejects.toThrow(); expect((apiService as any)._networkMeta).toBeUndefined(); }); it('should retry connections if they fail with something other than metadata', async () => { const retrySpy = jest.spyOn(apiService, 'retryConnection'); await apiService.createConnections({chainId: 'test', endpoint: {test: {}, fail: {}}}, (endpoint) => endpoint === 'test' ? Promise.resolve({networkMeta: {chain: endpoint}} as any) // At least one endpoint needs to succeed : Promise.reject(new Error('Test')) ); // Add delay so non blocking promise is resolve in create connections await delay(0.001); expect(retrySpy).toHaveBeenCalled(); }); }); ================================================ FILE: packages/node-core/src/api.service.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import assert from 'assert'; import {EventEmitter2} from '@nestjs/event-emitter'; import {normalizeNetworkEndpoints} from '@subql/common'; import {IEndpointConfig, ProjectNetworkConfig} from '@subql/types-core'; import {ApiConnectionError, ApiErrorType, MetadataMismatchError} from './api.connection.error'; import {IndexerEvent, NetworkMetadataPayload} from './events'; import {ConnectionPoolService} from './indexer'; import {getLogger} from './logger'; import {backoffRetry, isBackoffError} from './utils'; const logger = getLogger('api'); const MAX_RECONNECT_ATTEMPTS = 5; export interface IApi = any[]> { fetchBlocks(heights: number[], ...args: any): Promise; safeApi(height: number): SA; unsafeApi: A; readonly networkMeta: NetworkMetadataPayload; } export interface IApiConnectionSpecific = any[]> extends IApi { handleError(error: Error): ApiConnectionError; apiConnect(): Promise; apiDisconnect(): Promise; updateChainTypes?(chainTypes: unknown): Promise; } export abstract class ApiService< A = any, SA = any, B extends Array = any[], Connection extends IApiConnectionSpecific = IApiConnectionSpecific, EndpointConfig extends IEndpointConfig = IEndpointConfig, > implements IApi { constructor( protected connectionPoolService: ConnectionPoolService, protected eventEmitter: EventEmitter2 ) {} private _networkMeta?: NetworkMetadataPayload; get networkMeta(): NetworkMetadataPayload { assert(!!this._networkMeta, 'ApiService has not been init'); return this._networkMeta; } private connectionRetrys: Record | undefined> = {}; async fetchBlocks(heights: number[], numAttempts = MAX_RECONNECT_ATTEMPTS): Promise { return this.retryFetch(async () => { // Get the latest fetch function from the provider const apiInstance = this.connectionPoolService.api; return apiInstance.fetchBlocks(heights); }, numAttempts); } protected async retryFetch(fn: () => Promise, numAttempts = MAX_RECONNECT_ATTEMPTS): Promise { try { return await backoffRetry(fn, numAttempts); } catch (e) { if (isBackoffError(e)) { logger.error(e.message); throw e.lastError; } throw e; } } get api(): A { return this.unsafeApi; } safeApi(height: number): SA { const apiInstance = this.connectionPoolService.api; return apiInstance.safeApi(height); } get unsafeApi(): A { const apiInstance = this.connectionPoolService.api; return apiInstance.unsafeApi; } async createConnections( network: ProjectNetworkConfig & {chainId: string}, createConnection: (endpoint: string, config: EndpointConfig) => Promise, /* Used to monitor the state of the connection */ postConnectedHook?: (connection: Connection, endpoint: string, index: number) => void ): Promise { const endpointToApiIndex: Record = {}; const failedConnections: Map = new Map(); const endpoints = normalizeNetworkEndpoints(network.endpoint); const connectionPromises = Object.entries(endpoints).map(async ([endpoint, config], i) => { try { const connection = await this.performConnection( createConnection, network, i, endpoint, config, postConnectedHook ); void this.connectionPoolService.addToConnections(connection, endpoint); } catch (e) { logger.error(`Failed to init ${endpoint}: ${e}`); endpointToApiIndex[endpoint] = null as unknown as Connection; // Don't reconnect if connection is for wrong network if (!(e instanceof MetadataMismatchError)) { failedConnections.set(i, [endpoint, config]); } throw e; } }); try { await Promise.any(connectionPromises); } catch (e) { throw new Error('All endpoints failed to initialize. Please add healthier endpoints', {cause: e}); } void Promise.allSettled(connectionPromises).then((res) => { // Retry failed connections in the background for (const [index, [endpoint, config]] of failedConnections) { this.retryConnection(createConnection, network, index, endpoint, config, postConnectedHook); } }); } private async performConnection( createConnection: (endpoint: string, config: EndpointConfig) => Promise, network: ProjectNetworkConfig & {chainId: string}, index: number, endpoint: string, config: EndpointConfig, postConnectedHook?: (connection: Connection, endpoint: string, index: number) => void ): Promise { const connection = await createConnection(endpoint, config); this.assertChainId(network, connection); if (!this._networkMeta) { this._networkMeta = connection.networkMeta; } this.eventEmitter.emit(IndexerEvent.ApiConnected, { value: 1, apiIndex: index, endpoint: endpoint, }); if (postConnectedHook) { postConnectedHook(connection, endpoint, index); } return connection; } retryConnection(...args: Parameters['performConnection']>): void { const endpoint = args[3]; this.connectionRetrys[endpoint] = backoffRetry(async () => { try { const connection = await this.performConnection(...args); // Replace null connection with the new connection await this.connectionPoolService.updateConnection(connection, endpoint); logger.info(`Updated connection for ${endpoint}`); } catch (e) { logger.error(`Initialization retry failed for ${endpoint}: ${e}`); throw e; } }, 5).catch((e) => { logger.error(e, `Initialization retry attempts exhausted for ${endpoint}`); }); } handleError(error: Error): ApiConnectionError { return new ApiConnectionError(error.name, error.message, ApiErrorType.Default); } /** * Override this if the network uses another value like genesisHash * */ protected assertChainId(network: ProjectNetworkConfig & {chainId: string}, connection: IApiConnectionSpecific): void { if (network.chainId !== connection.networkMeta.chain) { throw new MetadataMismatchError('ChainId', network.chainId, connection.networkMeta.chain); } } } ================================================ FILE: packages/node-core/src/blockchain.service.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import {BaseCustomDataSource, BaseDataSource, IProjectNetworkConfig} from '@subql/types-core'; import {DatasourceParams, Header, IBaseIndexerWorker, IBlock, ISubqueryProject} from './indexer'; export interface ICoreBlockchainService< DS extends BaseDataSource = BaseDataSource, SubQueryProject extends ISubqueryProject = ISubqueryProject, > { /* The semver of the node */ packageVersion: string; // Project service onProjectChange(project: SubQueryProject): Promise | void; /* Not all networks have a block timestamp, e.g. Shiden need to request one more get */ getBlockTimestamp(height: number): Promise; getHeaderForHeight(height: number): Promise
; } export interface IBlockchainService< DS extends BaseDataSource = BaseDataSource, CDS extends DS & BaseCustomDataSource = DS & BaseCustomDataSource, SubQueryProject extends ISubqueryProject = ISubqueryProject, SafeAPI = any, LightBlock = any, FullBlock = any, Worker extends IBaseIndexerWorker = IBaseIndexerWorker, > extends ICoreBlockchainService { blockHandlerKind: string; // Block dispatcher service fetchBlocks(blockNums: number[]): Promise[] | IBlock[]>; // TODO this probably needs to change to get light block type correct /* This is the worker equivalent of fetchBlocks, it provides a context to allow syncing anything between workers */ fetchBlockWorker(worker: Worker, blockNum: number, context: {workers: Worker[]}): Promise
; // /* Not all networks have a block timestamp, e.g. Shiden */ // getBlockTimestamp(height: number): Promise; // Block dispatcher /* Gets the size of the block, used to calculate a median */ getBlockSize(block: IBlock): number; // Fetch service /** * The finalized header. If the chain doesn't have concrete finalization this could be a probabilistic finalization * */ getFinalizedHeader(): Promise
; /** * Gets the latest height of the chain, this should be unfinalized. * Or if the chain has instant finalization this would be the same as the finalized height. * */ getBestHeight(): Promise; /** * The chain interval in milliseconds, if it is not consistent then provide a best estimate * */ getChainInterval(): Promise; // Unfinalized blocks getHeaderForHash(hash: string): Promise
; // Dynamic Ds sevice /** * Applies and validates parameters to a template DS * */ updateDynamicDs(params: DatasourceParams, template: DS | CDS): Promise; isCustomDs: (x: DS | CDS) => x is CDS; isRuntimeDs: (x: DS | CDS) => x is DS; // Indexer manager /** * Gets an API instance to a specific height so any state queries return data as represented at that height. * */ getSafeApi(block: LightBlock | FullBlock): Promise; } ================================================ FILE: packages/node-core/src/configure/NodeConfig.spec.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import * as path from 'path'; import {NodeConfig, IConfig} from './NodeConfig'; describe('NodeConfig', () => { it('supports read from yaml', () => { const config = NodeConfig.fromFile(path.join(__dirname, '../../test/config.yml')); expect(config).toBeInstanceOf(NodeConfig); expect(config).toMatchObject({ subquery: '../../../../subql-example/extrinsics', subqueryName: 'extrinsics', }); }); it('support read from json', () => { const config = NodeConfig.fromFile(path.join(__dirname, '../../test/config.json')); expect(config).toBeInstanceOf(NodeConfig); expect(config).toMatchObject({ subquery: '../../../../subql-example/extrinsics', subqueryName: 'extrinsics', }); }); it('rebase file config from manifest runner options', () => { const configPath = path.join(__dirname, '../../test/config.json'); const fileConfig = NodeConfig.fromFile(configPath); const mockArgIConfig = { workers: 4, unsafe: true, disableHistorical: false, unfinalizedBlocks: false, } as Partial; const config = NodeConfig.rebaseWithArgs(fileConfig, mockArgIConfig); // Fill undefined expect(config.workers).toBe(4); // override default config from manifest options expect(config.unsafe).toBeTruthy(); }); it('throw error for unknown configs', () => { expect(() => NodeConfig.fromFile(path.join(__dirname, '../../test/config.toml'))).toThrow(); expect(() => NodeConfig.fromFile(path.join(__dirname, '../../test/con.toml'))).toThrow(/Load config from file/); }); it('Monitor configs default value', () => { const fileConfig = NodeConfig.fromFile(path.join(__dirname, '../../test/config.yml')); expect(fileConfig.monitorFileSize).toEqual(0); expect(fileConfig.monitorObjectMaxDepth).toEqual(5); const config2 = NodeConfig.rebaseWithArgs(fileConfig, { monitorObjectMaxDepth: 10, }); expect(config2.monitorObjectMaxDepth).toEqual(10); const config3 = NodeConfig.rebaseWithArgs(fileConfig, { proofOfIndex: true, }); expect(config3.monitorFileSize).toEqual(200); }); it('Has the correct default behaviour for unfinalizedBlocks', () => { const config = new NodeConfig({historical: false} as any); expect(config.unfinalizedBlocks).toBe(false); const config1 = new NodeConfig({historical: 'height'} as any); expect(config1.unfinalizedBlocks).toBe(true); const config2 = new NodeConfig({historical: 'timestamp'} as any); expect(config2.unfinalizedBlocks).toBe(true); const config3 = new NodeConfig({historical: 'timestamp', unfinalizedBlocks: false} as any); expect(config3.unfinalizedBlocks).toBe(false); const config4 = new NodeConfig({historical: false, unfinalizedBlocks: true} as any); expect(config4.unfinalizedBlocks).toBe(false); const config5 = new NodeConfig({historical: 'height', unfinalizedBlocks: true} as any, true); expect(config5.unfinalizedBlocks).toBe(false); }); }); ================================================ FILE: packages/node-core/src/configure/NodeConfig.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import assert from 'assert'; import fs from 'fs'; import path from 'path'; import {getFileContent, loadFromJsonOrYaml, normalizeNetworkEndpoints} from '@subql/common'; import {IEndpointConfig} from '@subql/types-core'; import {last} from 'lodash'; import {LevelWithSilent} from 'pino'; import {HistoricalMode} from '../indexer'; import {getLogger} from '../logger'; import {assign} from '../utils/object'; const logger = getLogger('configure'); export interface IConfig { readonly subquery: string; readonly subqueryName?: string; readonly dbSchema?: string; readonly batchSize: number; readonly timeout: number; readonly blockTime: number; readonly debug?: string; readonly preferRange: boolean; readonly networkEndpoint?: Record; readonly primaryNetworkEndpoint?: [string, IEndpointConfig]; readonly networkDictionary?: string[]; readonly dictionaryRegistry: string; readonly outputFmt?: 'json'; readonly logLevel: LevelWithSilent; readonly queryLimit: number; readonly indexCountLimit: number; readonly proofOfIndex: boolean; readonly ipfs?: string; readonly dictionaryTimeout: number; readonly dictionaryQuerySize: number; readonly workers?: number; readonly profiler?: boolean; readonly unsafe?: boolean; readonly subscription: boolean; readonly historical: HistoricalMode; readonly multiChain: boolean; readonly reindex?: number; readonly unfinalizedBlocks?: boolean; readonly pgCa?: string; readonly pgKey?: string; readonly pgCert?: string; readonly pgPoolMin?: number; readonly pgPoolMax?: number; readonly pgPoolIdle?: number; readonly pgPoolAqcuire?: number; readonly pgPoolEvict?: number; readonly storeCacheThreshold: number; readonly storeCacheUpperLimit: number; readonly storeGetCacheSize: number; readonly storeCacheAsync: boolean; readonly storeFlushInterval: number; readonly storeCacheTarget: number; readonly isTest?: boolean; readonly root?: string; readonly allowSchemaMigration: boolean; readonly csvOutDir?: string; readonly monitorOutDir: string; readonly monitorFileSize?: number; readonly monitorObjectMaxDepth: number; readonly enableCache?: boolean; } export type MinConfig = Partial> & Pick; const DEFAULT_CONFIG = { logLevel: 'info', batchSize: 100, timeout: 900, blockTime: 6000, preferRange: false, debug: undefined, queryLimit: 100, indexCountLimit: 10, proofOfIndex: false, dictionaryTimeout: 30, dictionaryQuerySize: 10000, profiler: false, subscription: false, historical: 'height', multiChain: false, storeCacheThreshold: 1000, storeCacheUpperLimit: 10000, storeGetCacheSize: 500, storeCacheAsync: true, storeFlushInterval: 5, storeCacheTarget: 10, allowSchemaMigration: false, monitorOutDir: './.monitor', monitorObjectMaxDepth: 5, }; export class NodeConfig implements IConfig { protected readonly _config: C; protected readonly _isTest: boolean; static fromFile(filePath: string, configFromArgs?: Partial, isTest?: boolean): NodeConfig { if (!fs.existsSync(filePath)) { throw new Error(`Load config from file ${filePath} is not exist`); } let configFromFile: unknown; try { configFromFile = loadFromJsonOrYaml(filePath); } catch (e) { logger.error(`failed to load config file, ${e}`); throw e; } const config = assign(configFromFile, configFromArgs) as IConfig; return new NodeConfig(config, isTest); } static rebaseWithArgs(config: NodeConfig, configFromArgs?: Partial): NodeConfig { const _config = assign({}, (config as any)._config, configFromArgs); return new NodeConfig(_config, (config as any)._isTest); } constructor(config: MinConfig, isTest?: boolean) { this._config = assign({}, DEFAULT_CONFIG, config) as C; this._isTest = isTest ?? false; } get subquery(): string { assert(this._config.subquery); return this._config.subquery; } get subqueryName(): string { assert(this._config.subquery); const name = this._config.subqueryName ?? last(this.subquery.split(path.sep)); if (!name) { throw new Error('Unable to get subquery name'); } return name; } get batchSize(): number { return this._config.batchSize; } get networkEndpoints(): Record | undefined { return normalizeNetworkEndpoints( this._config.networkEndpoint as string | string[] | Record ); } get primaryNetworkEndpoint(): [string, IEndpointConfig] | undefined { return this._config.primaryNetworkEndpoint; // if (!this._config.primaryNetworkEndpoint) { // return undefined; // } // return [this._config.primaryNetworkEndpoint, {}]; } get networkDictionaries(): string[] | undefined | false { return typeof this._config.networkDictionary === 'string' ? this._config.networkDictionary === 'false' ? false : [this._config.networkDictionary] : this._config.networkDictionary; } get allowSchemaMigration(): boolean { return this._config.allowSchemaMigration; } get storeCacheThreshold(): number { return this._config.storeCacheThreshold; } get storeCacheUpperLimit(): number { return this._config.storeCacheUpperLimit; } get storeGetCacheSize(): number { return this._config.storeGetCacheSize; } get storeCacheAsync(): boolean { return !!this._config.storeCacheAsync; } get storeFlushInterval(): number { return this._config.storeFlushInterval; } get storeCacheTarget(): number { return this._config.storeCacheTarget; } get dictionaryRegistry(): string { if (this._config.dictionaryRegistry) { return this._config.dictionaryRegistry; } return 'https://github.com/subquery/templates/raw/main/dist/dictionary.json'; } get timeout(): number { return this._config.timeout; } get blockTime(): number { return this._config.blockTime; } get debug(): string | undefined { return this._config.debug; } get preferRange(): boolean { return this._config.preferRange; } get outputFmt(): 'json' | undefined { return this._config.outputFmt; } get logLevel(): LevelWithSilent { return this.debug ? 'debug' : this._config.logLevel; } get queryLimit(): number { return this._config.queryLimit; } get indexCountLimit(): number { return this._config.indexCountLimit; } get proofOfIndex(): boolean { return this._config.proofOfIndex; } get dictionaryTimeout(): number { return this._config.dictionaryTimeout; } get dictionaryQuerySize(): number { return this._config.dictionaryQuerySize; } get ipfs(): string | undefined { return this._config.ipfs; } get dbSchema(): string { const schema = this._config.dbSchema ?? this.subqueryName; return this._isTest ? `test-${schema}` : schema; } get workers(): number | undefined { return this._config.workers; } get profiler(): boolean { return !!this._config.profiler; } get unsafe(): boolean { return !!this._config.unsafe; } get subscription(): boolean { return this._config.subscription; } get historical(): HistoricalMode { if (this._isTest) return false; const val = this._config.historical; // Runtime check, option can come from cli, project or config file if (val !== false && val !== 'height' && val !== 'timestamp') { throw new Error(`Historical mode is invalid. Received: ${val}`); } return val; } get multiChain(): boolean { return this._config.multiChain; } get unfinalizedBlocks(): boolean { if (this._isTest) return false; if (this._config.unfinalizedBlocks === false) { return false; } return this.historical !== false; } get isPostgresSecureConnection(): boolean { return !!this._config.pgCa; } get postgresCACert(): string | undefined { if (!this._config.pgCa) { return undefined; } try { return getFileContent(this._config.pgCa, 'postgres ca cert'); } catch (e: any) { logger.error(e, 'Unable to get postges CA Cert'); throw e; } } get postgresClientKey(): string | undefined { if (!this._config.pgKey) { return undefined; } try { return getFileContent(this._config.pgKey, 'postgres client key'); } catch (e: any) { logger.error(e, 'Unable to get postgres client key'); throw e; } } get postgresClientCert(): string | undefined { if (!this._config.pgCert) { return undefined; } try { return getFileContent(this._config.pgCert, 'postgres client cert'); } catch (e: any) { logger.error(e, 'Unable to get postgres client cert'); throw e; } } get pgPoolMax(): number | undefined { return this._config.pgPoolMax; } get pgPoolMin(): number | undefined { return this._config.pgPoolMin; } get pgPoolAqcuire(): number | undefined { return this._config.pgPoolAqcuire; } get pgPoolIdle(): number | undefined { return this._config.pgPoolIdle; } get pgPoolEvict(): number | undefined { return this._config.pgPoolEvict; } get root(): string | undefined { return this._config.root; } get csvOutDir(): string | undefined { return this._config.csvOutDir; } get monitorOutDir(): string { return this._config.monitorOutDir; } get monitorFileSize(): number { const defaultMonitorFileSize = 200; // If user passed though yarg, we will record monitor file by this size, no matter poi or not // if user didn't pass through yarg, we will record monitor file by this default size only when poi is enabled return this._config.monitorFileSize ?? (this._config.proofOfIndex ? defaultMonitorFileSize : 0); } get monitorObjectMaxDepth(): number { return this._config.monitorObjectMaxDepth; } get enableCache(): boolean { return this._config.enableCache ?? true; } merge(config: Partial): this { assign(this._config, config); return this; } } ================================================ FILE: packages/node-core/src/configure/ProjectUpgrade.service.spec.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import {Sequelize} from '@subql/x-sequelize'; import {CacheMetadataModel, IStoreModelProvider, ISubqueryProject, StoreCacheService, StoreService} from '../indexer'; import {NodeConfig} from './NodeConfig'; import {IProjectUpgradeService, ProjectUpgradeService, upgradableSubqueryProject} from './ProjectUpgrade.service'; const templateProject = { network: { chainId: '1', }, dataSources: [{startBlock: 1}], }; const demoProjects = [ { ...templateProject, }, { parent: { block: 10, reference: '0', }, ...templateProject, }, { parent: { block: 20, reference: '1', }, ...templateProject, }, { parent: { block: 30, reference: '2', }, ...templateProject, }, { parent: { block: 40, reference: '3', }, ...templateProject, }, { parent: { block: 50, reference: '4', }, ...templateProject, }, ] as ISubqueryProject[]; const demoProjectsUntil = [ { ...templateProject, }, { parent: { untilBlock: 10, reference: '0', }, ...templateProject, }, ] as ISubqueryProject[]; const loopProjects = [ { parent: { block: 10, reference: '1', }, ...templateProject, }, { parent: { block: 20, reference: '0', }, ...templateProject, }, ] as ISubqueryProject[]; const futureProjects = [ { ...templateProject, }, { parent: { block: 30, reference: '0', }, ...templateProject, }, { parent: { block: 20, reference: '1', }, ...templateProject, }, ] as ISubqueryProject[]; const mockMetadata = () => { let deployments = {}; return { find: jest.fn(() => JSON.stringify(deployments)), set: jest.fn((_, value) => (deployments = JSON.parse(value))), } as any as CacheMetadataModel; }; describe('Project Upgrades', () => { jest.spyOn(ProjectUpgradeService as any, 'rewindableCheck').mockImplementation(() => true); describe('Loading projects', () => { it('can load a project with no parents', async () => { const upgradeService = await ProjectUpgradeService.create( demoProjects[0], (id) => Promise.resolve(demoProjects[parseInt(id, 10)]), 1 ); expect([...upgradeService.projects.keys()]).toEqual([1]); }); it('can load all parent projects', async () => { const upgradeService = await ProjectUpgradeService.create( demoProjects[5], (id) => Promise.resolve(demoProjects[parseInt(id, 10)]), 1 ); expect([...upgradeService.projects.keys()]).toEqual([1, 10, 20, 30, 40, 50]); }); it('can load all parent projects with untilBlock field', async () => { const upgradeService = await ProjectUpgradeService.create( demoProjectsUntil[1], (id) => Promise.resolve(demoProjectsUntil[parseInt(id, 10)]), 1 ); expect([...upgradeService.projects.keys()]).toEqual([1, 10]); }); it('can handle projects that somehow refer to each other', async () => { await expect( ProjectUpgradeService.create(loopProjects[1], (id) => Promise.resolve(loopProjects[parseInt(id, 10)]), 1) ).rejects.toThrow(); }); it('can load all parent projects upto startHeight', async () => { const upgradeService = await ProjectUpgradeService.create( demoProjects[5], (id) => Promise.resolve(demoProjects[parseInt(id, 10)]), 21 ); expect([...upgradeService.projects.keys()]).toEqual([20, 30, 40, 50]); }); // It would be a user error to do this but its still possible. In reality the last project should have no parent it('can use the correct project when the parent upgrades at the start height', async () => { const projects = [ { id: '0', network: { chainId: '1', }, dataSources: [{startBlock: 10}], }, { id: '1', parent: { block: 10, reference: '0', }, network: { chainId: '1', }, dataSources: [{startBlock: 10}], }, ] as ISubqueryProject[]; await expect(() => ProjectUpgradeService.create(projects[1], (id) => Promise.resolve(projects[parseInt(id, 10)])) ).rejects.toThrow('Project already exists at height 10'); }); it('can load all parent projects upto and including startHeight', async () => { const upgradeService = await ProjectUpgradeService.create( demoProjects[5], (id) => Promise.resolve(demoProjects[parseInt(id, 10)]), 20 ); expect([...upgradeService.projects.keys()]).toEqual([20, 30, 40, 50]); }); it('will throw if parent projects are not at an earlier height', async () => { await expect( ProjectUpgradeService.create(futureProjects[2], (id) => Promise.resolve(futureProjects[parseInt(id, 10)]), 1) ).rejects.toThrow(); }); it('will throw if there are no parents and earlier start height', async () => { const project = { dataSources: [{startBlock: 20}], } as ISubqueryProject; await expect( ProjectUpgradeService.create(project, (id) => Promise.resolve(futureProjects[parseInt(id, 10)]), 1) ).rejects.toThrow(); }); it('will validate all parents are for the same network', async () => { const projects = [ { ...templateProject, network: {chainId: 2}, }, { parent: { block: 30, reference: '0', }, ...templateProject, }, ] as ISubqueryProject[]; await expect( ProjectUpgradeService.create(projects[1], (id) => Promise.resolve(projects[parseInt(id, 10)]), 1) ).rejects.toThrow(); }); it('will validate all parents are for the same node runner', async () => { const projects = [ { ...templateProject, runner: { node: { name: 'subql-node-wrong', }, }, }, { parent: { block: 30, reference: '0', }, ...templateProject, }, ] as ISubqueryProject[]; await expect( ProjectUpgradeService.create(projects[1], (id) => Promise.resolve(projects[parseInt(id, 10)]), 1) ).rejects.toThrow(); }); }); describe('Getting projects for heights', () => { let upgradeService: ProjectUpgradeService; beforeAll(async () => { upgradeService = await ProjectUpgradeService.create( demoProjects[5], (id) => Promise.resolve(demoProjects[parseInt(id, 10)]), 1 ); }); it('can get the latest project', () => { expect(upgradeService.getProject(100).parent?.block).toEqual(50); }); it('gets the right project with an exact match', () => { expect(upgradeService.getProject(30).parent?.block).toEqual(30); }); it('throws an error before the first project start height', () => { expect(() => upgradeService.getProject(-1)).toThrow(); }); }); describe('Upgradable subquery project', () => { let upgradeService: ProjectUpgradeService; let project: ISubqueryProject & IProjectUpgradeService; let storeCache: IStoreModelProvider; beforeEach(async () => { const sequelize = {transaction: jest.fn(() => ({commit: jest.fn()}))} as any as Sequelize; storeCache = new StoreCacheService(sequelize, {} as any, {} as any); // eslint-disable-next-line @typescript-eslint/dot-notation (storeCache as any).cachedModels['_metadata'] = mockMetadata(); upgradeService = await ProjectUpgradeService.create( demoProjects[5], (id) => Promise.resolve(demoProjects[parseInt(id, 10)]), 1 ); const storeService = new StoreService(sequelize, {} as any, storeCache, project); await upgradeService.init(storeService, 1, {} as NodeConfig, sequelize, ''); project = upgradableSubqueryProject(upgradeService); }); it('cant set values other than `currentHeightg`', () => { expect(() => ((project as any).id = 'not possible')).toThrow(); }); it('can set the current height on the service', async () => { await upgradeService.setCurrentHeight(20); expect(upgradeService.currentHeight).toEqual(20); expect(project.currentHeight).toEqual(20); }); it('can set the current height on the project', async () => { await project.setCurrentHeight(20); expect(upgradeService.currentHeight).toEqual(20); expect(project.currentHeight).toEqual(20); }); it('the project is the right project for a set height', async () => { await project.setCurrentHeight(25); expect(project.parent?.block).toEqual(20); }); it('can update the indexed deployments', async () => { await upgradeService.updateIndexedDeployments('A', 1); expect(await (upgradeService as any).getDeploymentsMetadata()).toEqual({1: 'A'}); // Only update if the deployment changes await upgradeService.updateIndexedDeployments('B', 2); await upgradeService.updateIndexedDeployments('B', 3); expect(await (upgradeService as any).getDeploymentsMetadata()).toEqual({1: 'A', 2: 'B'}); // Handle fork await upgradeService.updateIndexedDeployments('C', 10); await upgradeService.updateIndexedDeployments('D', 7); expect(await (upgradeService as any).getDeploymentsMetadata()).toEqual({1: 'A', 2: 'B', 7: 'D'}); }); }); describe('Upgrade metadata validation', () => { let upgradeService: ProjectUpgradeService; beforeEach(async () => { upgradeService = await ProjectUpgradeService.create( {...demoProjects[5], id: '5'}, (id) => Promise.resolve({...demoProjects[parseInt(id, 10)], id}), 1 ); }); it('succeds with an exact match', () => { const indexedData = {1: '0', 10: '1', 20: '2', 30: '3', 40: '4', 50: '5'}; expect(upgradeService.validateIndexedData(indexedData)).toEqual(undefined); }); it('succeds with a partial match', () => { const indexedData = {1: '0', 10: '1', 20: '2'}; expect(upgradeService.validateIndexedData(indexedData)).toEqual(29); }); it('succeeds with no indexed data', () => { expect(upgradeService.validateIndexedData({})).toEqual(undefined); }); it('succeeds with upgraded projects before the upgraded feature', () => { // Negative values wouldn't be possible in use, but its here for test simplification const indexedData = {[-20]: '-2', [-10]: '-1', 1: '0', 10: '1', 20: '2', 30: '3', 40: '4', 50: '5'}; expect(upgradeService.validateIndexedData(indexedData)).toEqual(undefined); }); it('can rewind if an upgrade needs replacing', () => { // indexed a -> b -> c -> d // upgrade to a -> b -> c -> e const indexedData = {1: '0', 10: '1', 20: '2', 30: '3', 40: '4', 50: 'Z'}; expect(upgradeService.validateIndexedData(indexedData)).toEqual(49); }); it('throws if there are no matching projects', () => { // indexed a -> b -> c -> d // upgrade to x -> y -> z const indexedData = {1: 'A', 11: 'B', 21: 'C'}; expect(() => upgradeService.validateIndexedData(indexedData)).toThrow(); }); it('validates if project doesnt have upgrades', async () => { const upgradeService = await ProjectUpgradeService.create( demoProjects[0], (id) => Promise.resolve(demoProjects[parseInt(id, 10)]), 1 ); const indexedData = {1: '0', 10: '1', 20: '2', 30: '3', 40: '4', 50: '5'}; expect(upgradeService.validateIndexedData(indexedData)).toEqual(undefined); }); }); }); ================================================ FILE: packages/node-core/src/configure/ProjectUpgrade.service.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import assert from 'assert'; import {isMainThread} from 'worker_threads'; import {ParentProject} from '@subql/types-core'; import {Sequelize, Transaction} from '@subql/x-sequelize'; import {findLast, last, parseInt} from 'lodash'; import {SchemaMigrationService} from '../db'; import {IMetadata, IStoreModelProvider, ISubqueryProject, StoreService} from '../indexer'; import {getLogger} from '../logger'; import {exitWithError, monitorWrite} from '../process'; import {getStartHeight, mainThreadOnly} from '../utils'; import {BlockHeightMap, EntryNotFoundError} from '../utils/blockHeightMap'; import {NodeConfig} from './NodeConfig'; type OnProjectUpgradeCallback

= (height: number, project: P) => void | Promise; export interface IProjectUpgradeService

{ init: ( storeService: StoreService, currentHeight: number, config: NodeConfig, sequelize: Sequelize, schema: string, onProjectUpgrade?: OnProjectUpgradeCallback

) => Promise; /** * This should only be called from within a worker thread as they dont have access to the store * */ initWorker(currentHeight: number, onProjectUpgrade?: OnProjectUpgradeCallback

): void; updateIndexedDeployments: (id: string, blockHeight: number) => Promise; readonly currentHeight: number; setCurrentHeight: (newHeight: number) => Promise; isRewindable: boolean; currentProject: P; projects: Map; getProject: (height: number) => P; rewind: ( targetBlockHeight: number, lastProcessedHeight: number, transaction: Transaction, storeService: StoreService ) => Promise; } const serviceKeys: Array = [ 'getProject', 'currentHeight', 'currentProject', 'projects', 'init', 'updateIndexedDeployments', 'isRewindable', ]; function assertEqual(valueA: T, valueB: T, name: string) { assert(valueA === valueB, `Expected ${name} to be equal. expected="${valueA}" parent has="${valueB}"`); } function getParentBlock(parent: ParentProject): number { return parent.untilBlock ?? parent.block; } const logger = getLogger('ProjectUpgradeService'); /* We setup a proxy here so that we can have a class that matches ISubquery project but will change when we set the current height to the correct project */ export function upgradableSubqueryProject

( upgradeService: ProjectUpgradeService

): P & IProjectUpgradeService

{ return new Proxy

>(upgradeService as any, { set() { // Everything is read-only unless updated via function return false; }, get(target, prop, receiver) { const project = target.currentProject; if (project[prop as keyof P]) { const value = project[prop as keyof P]; if (value instanceof Function) { return value.bind(project); } return value; } /* * It would be nice to limit this to `serviceKeys` but there are issues with * nestjs scheduler reflecting and being unable to get props. * If we can fix that then we can move this above the project accessors */ if (prop in target /*(serviceKeys as Array).includes(prop)*/) { const result = target[prop as keyof IProjectUpgradeService

]; if (result instanceof Function) { return result.bind(target); } return result; } }, }); } export class ProjectUpgradeService

implements IProjectUpgradeService

{ #currentHeight: number; #currentProject: P; #modelProvider?: IStoreModelProvider; #sequelize?: Sequelize; #initialized = false; private config?: NodeConfig; private onProjectUpgrade?: OnProjectUpgradeCallback

; private migrationService?: SchemaMigrationService; private constructor( private _projects: BlockHeightMap

, currentHeight: number, private _isRewindable = true ) { logger.info( `Projects: ${JSON.stringify( [..._projects.getAll().entries()].reduce( (acc, curr) => { acc[curr[0]] = curr[1].id; return acc; }, {} as Record ), undefined, 2 )}` ); // Bypass setters here because we want to avoid side-effect this.#currentHeight = currentHeight; this.#currentProject = this.getProject(this.#currentHeight); } async init( storeService: StoreService, currentHeight: number, config: NodeConfig, sequelize: Sequelize, schema: string, onProjectUpgrade?: OnProjectUpgradeCallback

): Promise { if (this.#initialized) { logger.warn(`ProjectUpgradeService has already been initialized, this is a no-op`); return; } this.#initialized = true; this.#modelProvider = storeService.modelProvider; this.config = config; this.#sequelize = sequelize; this.migrationService = new SchemaMigrationService(sequelize, storeService, schema, config); const indexedDeployments = await this.getDeploymentsMetadata(); const lastProjectChange = this.validateIndexedData(indexedDeployments); this.#currentHeight = lastProjectChange || currentHeight; try { this.#currentProject = this.getProject(this.#currentHeight); } catch (e: any) { if (e instanceof EntryNotFoundError) { throw new Error( `Unable to find project for height ${ this.#currentHeight }. If the project start height is increased it will not jump to that block. Please either reindex or specify blocks to bypass.`, {cause: e} ); } throw e; } // executed last to ensure that the correct project is set first this.onProjectUpgrade = onProjectUpgrade; return lastProjectChange; } initWorker(currentHeight: number, onProjectUpgrade?: OnProjectUpgradeCallback

): void { assert(!this.onProjectUpgrade, `onProjectUpgrade callback has already been set`); this.#currentHeight = currentHeight; this.#currentProject = this.getProject(this.#currentHeight); this.onProjectUpgrade = onProjectUpgrade; } get isRewindable(): boolean { return this._isRewindable; } get projects(): Map { return this._projects.getAll(); } get currentProject(): P { return this.#currentProject; } get currentHeight(): number { return this.#currentHeight; } private get metadata(): IMetadata { assert( this.#modelProvider?.metadata, 'Project Upgrades service has not been initialized, unable to update metadata' ); return this.#modelProvider.metadata; } async rewind( targetBlockHeight: number, lastProcessedHeight: number, transaction: Transaction, storeService: StoreService ): Promise { const projectsWithinRange = new BlockHeightMap(this.projects).getWithinRange( targetBlockHeight, lastProcessedHeight ); const sortedProjectIds = Array.from(projectsWithinRange.keys()); const iterator = sortedProjectIds[Symbol.iterator](); let currentId = iterator.next(); let nextId = iterator.next(); while (!currentId.done && !nextId.done) { const currentProject = projectsWithinRange.get(currentId.value); const nextProject = projectsWithinRange.get(nextId.value); if (currentProject && nextProject) { if (this.config?.dbSchema) { await storeService.init(this.config.dbSchema, transaction); } await this.migrate(currentProject, nextProject, transaction); } currentId = nextId; nextId = iterator.next(); } // this remove any deployments in metadata beyond target height await this.removeIndexedDeployments(targetBlockHeight, transaction); } private async migrate( project: ISubqueryProject, newProject: ISubqueryProject, transaction: Transaction ): Promise { assert(this.config, 'NodeConfig is undefined'); assert(this.migrationService, 'MigrationService is undefined'); if (this.config.allowSchemaMigration) { await this.migrationService.run(project.schema, newProject.schema, transaction); await this.metadata.setIncrement('schemaMigrationCount', undefined, transaction); } } /** * Sets the current project and handles project changes * Project change effects only happen after init has been called * */ async setCurrentHeight(height: number): Promise { this.#currentHeight = height; const newProjectDetails = this._projects.getDetails(height); assert(newProjectDetails, `Unable to find project for height ${height}`); const {startHeight, value: newProject} = newProjectDetails; const hasChanged = this.#currentProject !== newProject; // Need to set this so that operations under hasChanged use the new project const project = this.#currentProject; this.#currentProject = newProject; if (hasChanged && this.#initialized) { if (isMainThread) { try { await this.updateIndexedDeployments(newProject.id, startHeight); } catch (e: any) { logger.error(e, 'Failed to update deployment'); throw new Error(`Failed to update deployment`, {cause: e}); } } try { await this.onProjectUpgrade?.(startHeight, newProject); if (isMainThread) { if (!this.#sequelize) { throw new Error('Sequelize is not available to run migration'); } const tx = await this.#sequelize.transaction(); await this.migrate(project, newProject, tx); await tx.commit(); } } catch (e: any) { exitWithError(new Error(`Failed to complete upgrading project`, {cause: e}), logger, 1); } const msg = `Project upgraded to ${newProject.id} at height ${height}`; monitorWrite(msg); logger.info(msg); } } static async create

( startProject: P, // The project passed in via application start loadProject: (ipfsCid: string) => Promise

, startHeight?: number // How far back we need to load parent versions ): Promise> { const projects: Map = new Map(); let currentProject = startProject; let currentHeight: number | undefined; let nextProject = startProject; const addProject = (height: number, project: P) => { if (projects.has(height)) { throw new Error(`Project already exists at height ${height}`); } this.validateProject(startProject, project); projects.set(height, project); }; // eslint-disable-next-line no-constant-condition while (true) { const projectStartHeight = getStartHeight(currentProject.dataSources); // Set the current height to the start of the startProject if not provided if (currentHeight === undefined) { currentHeight = (startProject.parent && getParentBlock(startProject.parent)) ?? projectStartHeight; } // At the end of the chain if (!currentProject.parent) { // At the limit of the start height for DS if (startHeight !== undefined && startHeight < projectStartHeight) { break; } addProject(projectStartHeight, currentProject); break; } if (currentProject.parent && getParentBlock(currentProject.parent)) { addProject(getParentBlock(currentProject.parent), currentProject); } // At the limit of the start height for Parent if (startHeight !== undefined && startHeight >= getParentBlock(currentProject.parent)) { break; } // Load the next project and repeat nextProject = await loadProject(currentProject.parent.reference).catch((e) => { throw new Error(`Failed to load parent project with cid: ${currentProject.parent?.reference}. ${e}`); }); if (nextProject.parent && getParentBlock(nextProject.parent) > getParentBlock(currentProject.parent)) { throw new Error( `Parent project ${currentProject.parent.reference} has a block height that is greater than the current project` ); } currentProject = nextProject; } if (!projects.size) { throw new Error('No valid projects found, this could be due to the startHeight.'); } const isRewindable = this.rewindableCheck(projects); const firstProjectHeight = Math.min(...projects.keys()); return new ProjectUpgradeService(new BlockHeightMap(projects), firstProjectHeight, isRewindable); } getProject(height: number): P { return this._projects.get(height); } private static rewindableCheck

(projects: Map): boolean { const sortedProjects = new Map([...projects.entries()].sort((a, b) => a[0] - b[0])); const projectIterator = sortedProjects.values(); let previousProject = projectIterator.next().value; if (previousProject) { for (const project of projectIterator) { if (!SchemaMigrationService.validateSchemaChanges(previousProject.schema, project.schema)) { return false; } previousProject = project; } } return true; } private static validateProject

(startProject: P, parentProject: P): void { assertEqual(startProject.network.chainId, parentProject.network.chainId, 'chainId'); assertEqual(startProject.runner?.node.name, parentProject.runner?.node.name, 'subquery node'); // TODO validate schema } // Returns a height to rewind to if rewind is needed. Otherwise throws an error validateIndexedData(deploymentsMetadata: Record): number | undefined { // Using project upgrades feature if (this.projects.size > 1) { const indexedEntries = Object.entries(deploymentsMetadata); const projectEntries: [number, string][] = [...this.projects.entries()].map(([height, project]) => [ height, project.id, ]); // Nothing has been indexed if (!indexedEntries.length) { return undefined; } // TODO do we need to compare heights? const lastCommonProject = findLast( projectEntries, ([, projectId]) => !!indexedEntries.find(([, indexedId]) => projectId === indexedId) ); if (!lastCommonProject) { throw new Error(`The indexed projects don't match the provided project or any of it's parents.`); } return this._projects.getDetails(lastCommonProject[0])?.endHeight; } return undefined; } private async getDeploymentsMetadata(): Promise> { const deploymentsRaw = await this.metadata.find('deployments'); if (!deploymentsRaw) return {}; return JSON.parse(deploymentsRaw); } @mainThreadOnly() async updateIndexedDeployments(id: string, blockHeight: number): Promise { const deployments = await this.getDeploymentsMetadata(); // If the last deployment is the same as the one we're updating to theres no need to do anything if (last(Object.values(deployments)) === id) { return; } // If we encounter a fork, remove all future block heights Object.keys(deployments).forEach((key) => { const keyNum = parseInt(key, 10); if (keyNum >= blockHeight) { delete deployments[keyNum]; } }); deployments[blockHeight] = id; await this.metadata.set('deployments', JSON.stringify(deployments)); } // Remove metadata deployments beyond this blockHeight async removeIndexedDeployments(blockHeight: number, tx?: Transaction): Promise { const deployments = await this.getDeploymentsMetadata(); // remove all future block heights Object.keys(deployments).forEach((key) => { const keyNum = parseInt(key, 10); // NOTE, this is different with `updateIndexedDeployments`, deployment > will be deleted if (keyNum > blockHeight) { delete deployments[keyNum]; } }); await this.metadata.set('deployments', JSON.stringify(deployments), tx); } } ================================================ FILE: packages/node-core/src/configure/SubqueryProject.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import assert from 'assert'; import {CommonProjectManifestV1_0_0Impl, normalizeNetworkEndpoints, validateSemver} from '@subql/common'; import { BaseCustomDataSource, BaseDataSource, BaseTemplateDataSource, IProjectNetworkConfig, ParentProject, Reader, RunnerSpecs, } from '@subql/types-core'; import {buildSchemaFromString} from '@subql/utils'; import {GraphQLSchema} from 'graphql'; import {ISubqueryProject} from '../indexer'; import { insertBlockFiltersCronSchedules, IsCustomDs, IsRuntimeDs, loadProjectTemplates, updateDataSourcesV1_0_0, } from '../utils'; class NotSupportedError extends Error { constructor(expected: string, received: string) { super(`Manifest specVersion ${expected} is not, supported. Received ${received}`); } } export class BaseSubqueryProject< DS extends BaseDataSource = BaseDataSource, TemplateDS extends BaseTemplateDataSource = BaseTemplateDataSource, NetworkConfig extends IProjectNetworkConfig = IProjectNetworkConfig, > implements ISubqueryProject { #dataSources: DS[]; constructor( readonly id: string, readonly root: string, readonly network: NetworkConfig, readonly schema: GraphQLSchema, dataSources: DS[], readonly templates: TemplateDS[], private blockHandlerKind: string, private isRuntimeDs: IsRuntimeDs, readonly runner?: RunnerSpecs, readonly parent?: ParentProject ) { this.#dataSources = dataSources; } static async create(config: { parseManifest: (raw: unknown) => CommonProjectManifestV1_0_0Impl; path: string; rawManifest: unknown; reader: Reader; root: string; // If project local then directory otherwise temp directory nodeSemver: string; blockHandlerKind: string; isCustomDs: IsCustomDs; isRuntimeDs: IsRuntimeDs; // This could be better networkOverrides?: Partial; }): Promise { // rawManifest and reader can be reused here. // It has been pre-fetched and used for rebase manifest runner options with args // in order to generate correct configs. // But we still need reader here, because path can be remote or local // and the `loadProjectManifest(projectPath)` only support local mode assert(config.rawManifest !== undefined, new Error(`Get manifest from project path ${config.path} failed`)); const manifest = config.parseManifest(config.rawManifest); // Note this needs to be updated if a new version is created, or use semver if (manifest.specVersion !== '1.0.0') { throw new NotSupportedError('<1.0.0', manifest.specVersion); } // Convert endpoints to the latest format manifest.network.endpoint = normalizeNetworkEndpoints(manifest.network.endpoint); const network = processChainId({ ...manifest.network, ...config.networkOverrides, }); assert(network.endpoint, new Error(`Network endpoint must be provided for network. chainId="${network.chainId}"`)); const schemaString: string = await config.reader.getFile(manifest.schema.file); assert(schemaString, 'Schema file is empty'); const schema = buildSchemaFromString(schemaString); const [dataSources, templates] = await Promise.all([ updateDataSourcesV1_0_0(manifest.dataSources, config.reader, config.root, config.isCustomDs), loadProjectTemplates(manifest.templates, config.root, config.reader, config.isCustomDs), ]); const runner = manifest.runner; assert( validateSemver(config.nodeSemver, runner.node.version), new Error(`Runner requires node version ${runner.node.version}, current node ${config.nodeSemver}`) ); return new BaseSubqueryProject( config.reader.root ? config.reader.root : config.path, //TODO, need to method to get project_id config.root, network, schema, dataSources, templates, config.blockHandlerKind, config.isRuntimeDs, runner, manifest.parent ) as Project; } get dataSources(): DS[] { return this.#dataSources; } async applyCronTimestamps(getTimestamp: (height: number) => Promise): Promise { this.#dataSources = await insertBlockFiltersCronSchedules( this.dataSources, getTimestamp, this.isRuntimeDs, this.blockHandlerKind ); } } function processChainId(network: any): NetworkConfig { if (network.chainId && network.genesisHash) { throw new Error('Please only provide one of chainId and genesisHash'); } else if (network.genesisHash && !network.chainId) { network.chainId = network.genesisHash; } delete network.genesisHash; return network; } ================================================ FILE: packages/node-core/src/configure/configure.module.spec.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import {validDbSchemaName, yargsToIConfig} from './configure.module'; describe('Configure', () => { describe('validateDbSchemaName', () => { it('works', () => { expect(validDbSchemaName('subquery_1')).toBeTruthy(); }); it('works not alphanumeric', () => { expect(validDbSchemaName('subquery_-/1')).toBeTruthy(); }); it('long', () => { expect(validDbSchemaName('a'.repeat(64))).toBeFalsy(); }); it('invalid prefix', () => { expect(validDbSchemaName('pg_whatever')).toBeFalsy(); }); it('invalid tokens', () => { expect(validDbSchemaName('he$$*')).toBeFalsy(); }); it('empty', () => { expect(validDbSchemaName('')).toBeFalsy(); }); }); describe('network endpoint options', () => { it('should work without network-endpoint-config options', () => { const {networkEndpoint} = yargsToIConfig({ 'network-endpoint': 'https://example.com', }); expect(networkEndpoint).toEqual({['https://example.com']: {}}); }); it('should work without network-endpoint-config options (array)', () => { const {networkEndpoint} = yargsToIConfig({ 'network-endpoint': ['https://example.com', 'https://foo.bar'], }); expect(networkEndpoint).toEqual({ ['https://example.com']: {}, ['https://foo.bar']: {}, }); }); it('should work with network-endpoint-config options', () => { const option = {headers: {'api-key': ''}}; const {networkEndpoint} = yargsToIConfig({ 'network-endpoint': 'https://example.com', 'network-endpoint-config': JSON.stringify(option), }); expect(networkEndpoint).toEqual({['https://example.com']: option}); }); it('should work with network-endpoint-config options (array)', () => { const option = {headers: {'api-key': ''}}; const {networkEndpoint} = yargsToIConfig({ 'network-endpoint': ['https://example.com', 'https://foo.bar'], 'network-endpoint-config': [JSON.stringify(option), JSON.stringify(option)], }); expect(networkEndpoint).toEqual({ ['https://example.com']: option, ['https://foo.bar']: option, }); }); it('should work with network-endpoint-config options (mixed-arrays)', () => { const option = {headers: {'api-key': ''}}; const {networkEndpoint} = yargsToIConfig({ 'network-endpoint': ['https://example.com', 'https://foo.bar'], 'network-endpoint-config': [JSON.stringify(option)], }); expect(networkEndpoint).toEqual({ ['https://example.com']: option, ['https://foo.bar']: {}, }); }); it('should work without primary-network-endpoint-config options', () => { const {primaryNetworkEndpoint} = yargsToIConfig({ 'primary-network-endpoint': 'https://example.com', }); expect(primaryNetworkEndpoint).toEqual(['https://example.com', {}]); }); it('should work with primary-network-endpoint-config options', () => { const option = {headers: {'api-key': ''}}; const {primaryNetworkEndpoint} = yargsToIConfig({ 'primary-network-endpoint': 'https://example.com', primaryNetworkEndpoint: 'https://example.com', 'primary-network-endpoint-config': JSON.stringify(option), primaryNetworkEndpointConfig: JSON.stringify(option), }); expect(primaryNetworkEndpoint).toEqual(['https://example.com', option]); }); it('doesnt add config flags to IConfig', () => { const option = {headers: {'api-key': ''}}; const config = yargsToIConfig({ 'network-endpoint': ['https://example.com', 'https://foo.bar'], 'network-endpoint-config': [JSON.stringify(option), JSON.stringify(option)], 'primary-network-endpoint': 'https://example.com', 'primary-network-endpoint-config': JSON.stringify(option), }); expect((config as any).networkEndpointConfig).toBe(undefined); expect((config as any).primaryNetworkEndpointConfig).toBe(undefined); }); }); }); ================================================ FILE: packages/node-core/src/configure/configure.module.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import fs from 'fs'; import os from 'os'; import path from 'path'; import {handleCreateSubqueryProjectError, IPFSReader, LocalReader, makeTempDir, ReaderFactory} from '@subql/common'; import {IEndpointConfig, Reader} from '@subql/types-core'; import {camelCase, isNil, omitBy} from 'lodash'; import {ISubqueryProject} from '../indexer'; import {getLogger, setDebugFilter} from '../logger'; import {exitWithError} from '../process'; import {defaultSubqueryName, rebaseArgsWithManifest} from '../utils'; import {IConfig, NodeConfig} from './NodeConfig'; import {IProjectUpgradeService, ProjectUpgradeService, upgradableSubqueryProject} from './ProjectUpgrade.service'; const logger = getLogger('configure'); // Check if a subquery name is a valid schema name export function validDbSchemaName(name: string): boolean { if (name.length === 0) { return false; } else { name = name.toLowerCase(); const regexp = new RegExp('^[a-zA-Z_][a-zA-Z0-9_\\-\\/]{0,62}$'); const flag0 = !name.startsWith('pg_'); // Reserved identifier const flag1 = regexp.test(name); // <= Valid characters, less than 63 bytes if (!flag0) { logger.error(`Invalid schema name '${name}', schema name must not be prefixed with 'pg_'`); } if (!flag1) { logger.error( `Invalid schema name '${name}', schema name must start with a letter or underscore, be less than 63 bytes and must contain only valid alphanumeric characters (can include characters '_-/')` ); } return flag0 && flag1; } } // Cant seem to use the inferred types, strings arent converted to unions type Args = Record; //ReturnType['argv'] function processEndpointConfig(raw?: string | string[]): IEndpointConfig[] { if (!raw) return []; if (typeof raw === 'string') return [JSON.parse(raw)]; if (Array.isArray(raw)) return raw.map((raw) => JSON.parse(raw)); throw new Error(`Unknown raw value, received: ${raw}`); } export function yargsToIConfig(yargs: Args, nameMapping: Record = {}): Partial { return Object.entries(yargs).reduce((acc, [key, value]) => { if (['_', '$0'].includes(key)) return acc; const outputKey = nameMapping[key] ?? camelCase(key); if (outputKey === 'networkRegistry') { try { value = JSON.parse(value as string); } catch (e) { throw new Error('Argument `network-registry` is not valid JSON'); } } // Merge network endpoints and possible endpoint configs if (outputKey === 'networkEndpoint') { const endpointConfig = processEndpointConfig(yargs['network-endpoint-config']); if (typeof value === 'string') { value = [value]; } if (Array.isArray(value)) { value = value.reduce( (acc, endpoint, index) => { acc[endpoint] = endpointConfig[index] ?? {}; return acc; }, {} as Record ); } } if (outputKey === 'primaryNetworkEndpoint') { const endpointConfig = processEndpointConfig(yargs['primary-network-endpoint-config']); value = [value, endpointConfig[0] ?? {}]; } if (['networkEndpointConfig', 'primaryNetworkEndpointConfig'].includes(outputKey)) return acc; if (outputKey === 'disableHistorical' && value) { acc.historical = false; } if (outputKey === 'historical' && value === 'false') { value = false; } acc[outputKey] = value; return acc; }, {} as any); } function warnDeprecations(argv: Args) { if (argv['subquery-name']) { logger.warn('Note that argument --subquery-name has been deprecated in favour of --db-schema'); } } // This is used to ensure the same temp dir is used across project upgrades and workers let rootDir: string; async function getCachedRoot(reader: Reader, configRoot?: string): Promise { if (reader instanceof LocalReader) return reader.root; // Case for in workers when the parent has decided the directory if (configRoot) return configRoot; // Allows reusing the same directory on restarts when project is run from ipfs, this can stop duplicating files in the tmp dir if (reader instanceof IPFSReader) { rootDir = path.resolve(os.tmpdir(), reader.cid); if (!fs.existsSync(rootDir)) { await fs.promises.mkdir(rootDir); } return rootDir; } if (!rootDir) { rootDir = await makeTempDir(); } return rootDir; } export async function registerApp

( argv: Args, createProject: ( path: string, rawManifest: unknown, reader: Reader, root: string, networkOverrides: Record ) => Promise

, showHelp: () => void, pjson: any, nameMapping?: Record // Currently only used by cosmos ): Promise<{nodeConfig: NodeConfig; project: P & IProjectUpgradeService

}> { let config: NodeConfig; let rawManifest: unknown; let reader: Reader; const isTest = argv._[0] === 'test'; // Override order : Sub-command/Args/Flags > Manifest Runner options > Default configs // Therefore, we should rebase the manifest runner options with args first but not the config in the end if (argv.config) { // get manifest options config = NodeConfig.fromFile(argv.config, yargsToIConfig(argv, nameMapping), isTest); reader = await ReaderFactory.create(config.subquery, { ipfs: config.ipfs, }); rawManifest = await reader.getProjectSchema(); rebaseArgsWithManifest(argv, rawManifest); // use rebased argv generate config to override current config config = NodeConfig.rebaseWithArgs(config, yargsToIConfig(argv, nameMapping)); } else { if (!argv.subquery) { showHelp(); exitWithError('Subquery path is missing in both cli options and config file', logger, 1); } warnDeprecations(argv); reader = await ReaderFactory.create(argv.subquery, { ipfs: argv.ipfs, }); rawManifest = await reader.getProjectSchema(); rebaseArgsWithManifest(argv, rawManifest); // Create new nodeConfig with rebased argv config = new NodeConfig(defaultSubqueryName(yargsToIConfig(argv, nameMapping)), isTest); } if (!validDbSchemaName(config.dbSchema)) { exitWithError(`invalid schema name ${config.dbSchema}`, undefined, 1); } if (config.debug) { setDebugFilter(config.debug); } const makeNetworkOverrides = (project?: P) => { // Apply the network endpoint and dictionary from the source project to the parent projects if they are not defined in the config return omitBy( { endpoint: config.networkEndpoints ?? project?.network?.endpoint, dictionary: config.networkDictionaries ?? project?.network?.dictionary, }, isNil ); }; const project = await createProject( config.subquery, rawManifest, reader, await getCachedRoot(reader, config.root), makeNetworkOverrides() ).catch((err: any) => { handleCreateSubqueryProjectError(err, pjson, rawManifest, logger); exitWithError(err, logger, 1); }); const createParentProject = async (cid: string): Promise

=> { cid = `ipfs://${cid}`; const reader = await ReaderFactory.create(cid, { ipfs: config.ipfs, }); return createProject( cid, await reader.getProjectSchema(), reader, await getCachedRoot(reader, config.root), makeNetworkOverrides(project) ); }; const projectUpgradeService = await ProjectUpgradeService.create(project, createParentProject); const upgradeableProject = upgradableSubqueryProject(projectUpgradeService); return {project: upgradeableProject, nodeConfig: config}; } ================================================ FILE: packages/node-core/src/configure/index.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 export * from './configure.module'; export * from './NodeConfig'; export * from './ProjectUpgrade.service'; export * from './SubqueryProject'; ================================================ FILE: packages/node-core/src/db/db.module.test.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import {INestApplication} from '@nestjs/common'; import {Test} from '@nestjs/testing'; import {Sequelize} from '@subql/x-sequelize'; import {NodeConfig} from '../configure/NodeConfig'; import {DbModule} from './db.module'; const nodeConfig = new NodeConfig({subquery: 'packages/node-core/test/v1.0.0', subqueryName: 'test'}); describe('DbModule', () => { let app: INestApplication; afterEach(async () => { return app?.close(); }); it('can connect to database', async () => { const module = await Test.createTestingModule({ imports: [DbModule.forRootWithConfig(nodeConfig)], }).compile(); app = module.createNestApplication(); await app.init(); const sequelize = app.get(Sequelize); await expect(sequelize.authenticate()).resolves.not.toThrow(); }, 30000); it('can load subquery model', async () => { const module = await Test.createTestingModule({ imports: [DbModule.forRootWithConfig(nodeConfig)], }).compile(); app = module.createNestApplication(); await app.init(); // const subqueryRepo: SubqueryRepo = app.get('Subquery'); // await expect(subqueryRepo.describe()).resolves.toBeTruthy(); }, 30000); }); ================================================ FILE: packages/node-core/src/db/db.module.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import {DynamicModule, Global} from '@nestjs/common'; import {Sequelize, Options as SequelizeOption} from '@subql/x-sequelize'; import {NodeConfig} from '../configure/NodeConfig'; import {getLogger} from '../logger'; import {exitWithError} from '../process'; import {delay} from '../utils/promise'; export interface DbOption { host: string; port: number; username: string; password: string; database: string; timezone: string; } const logger = getLogger('db'); const DEFAULT_DB_OPTION: DbOption = { host: process.env.DB_HOST ?? '127.0.0.1', port: process.env.DB_PORT ? Number(process.env.DB_PORT) : 5432, username: process.env.DB_USER ?? 'postgres', password: process.env.DB_PASS ?? 'postgres', database: process.env.DB_DATABASE ?? 'postgres', timezone: 'utc', }; const CONNECTION_SSL_ERROR_REGEX = 'not support SSL'; async function establishConnectionSequelize(option: SequelizeOption, numRetries: number): Promise { const uri = `postgresql://${option.username}:${option.password}@${option.host}:${option.port}/${option.database}`; const sequelize = new Sequelize(uri, option); try { await sequelize.authenticate(); } catch (error: any) { if (JSON.stringify(error.message).includes(CONNECTION_SSL_ERROR_REGEX)) { logger.warn('Database does not support SSL connection, will try to connect without it'); option.dialectOptions = undefined; } if (numRetries > 0) { await delay(3); return establishConnectionSequelize(option, numRetries - 1); } else { exitWithError(new Error(`Unable to connect to the database`, {cause: error}), logger); } } return sequelize; } const sequelizeFactory = (option: SequelizeOption) => async () => { const numRetries = 5; const sequelize = await establishConnectionSequelize(option, numRetries); await sequelize.sync(); return sequelize; }; const buildSequelizeOptions = (nodeConfig: NodeConfig, option: DbOption): SequelizeOption => { const logger = getLogger('SQL'); return { ...option, dialect: 'postgres', ssl: nodeConfig.isPostgresSecureConnection, dialectOptions: { ssl: { rejectUnauthorized: false, ca: nodeConfig.postgresCACert, key: nodeConfig.postgresClientKey, cert: nodeConfig.postgresClientCert, }, }, pool: { max: nodeConfig.pgPoolMax, min: nodeConfig.pgPoolMin, acquire: nodeConfig.pgPoolAqcuire, idle: nodeConfig.pgPoolIdle, evict: nodeConfig.pgPoolEvict, }, logging: (sql: string, timing?: number) => { logger.debug(sql); }, }; }; export async function establishNewSequelize(nodeConfig: NodeConfig): Promise { return sequelizeFactory(buildSequelizeOptions(nodeConfig, DEFAULT_DB_OPTION))(); } @Global() export class DbModule { static forRootWithConfig(nodeConfig: NodeConfig, option: DbOption = DEFAULT_DB_OPTION): DynamicModule { const factory = sequelizeFactory(buildSequelizeOptions(nodeConfig, option))(); return { module: DbModule, providers: [ { provide: Sequelize, useFactory: () => factory, }, ], exports: [Sequelize], }; } static forRoot(option: DbOption = DEFAULT_DB_OPTION): DynamicModule { return { module: DbModule, providers: [ { provide: Sequelize, useFactory: (nodeConfig: NodeConfig) => sequelizeFactory(buildSequelizeOptions(nodeConfig, option))(), inject: [NodeConfig], }, ], exports: [Sequelize], }; } static forFeature(models: string[]): DynamicModule { return { module: DbModule, providers: models.map((model) => ({ provide: model, inject: [Sequelize], useFactory: (sequelize: Sequelize) => sequelize.model(model), })), exports: models, }; } } ================================================ FILE: packages/node-core/src/db/index.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 export * from './db.module'; export * from './migration-service'; export * from './sync-helper'; ================================================ FILE: packages/node-core/src/db/migration-service/SchemaMigration.service.spec.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import path from 'path'; import {buildSchemaFromFile, GraphQLEnumsType} from '@subql/utils'; import {ProjectUpgradeService} from '../../configure'; import {compareEnums} from './migration-helpers'; import {SchemaMigrationService} from './SchemaMigration.service'; describe('SchemaMigration', () => { describe('comparator', () => { const oldSchemaPath = path.join(__dirname, '../../../test/schemas/oldSchema.graphql'); const newSchemaPath = path.join(__dirname, '../../../test/schemas/newSchema.graphql'); const badSchemaPath = path.join(__dirname, '../../../test/schemas/badSchema.graphql'); it('ensure comparator correctness', () => { const currentSchema = buildSchemaFromFile(oldSchemaPath); const nextSchema = buildSchemaFromFile(newSchemaPath); const result = SchemaMigrationService.schemaComparator(currentSchema, nextSchema); /* Cases: Added - Added Unique Index - Added field with relation - Added New Enum - Added belongsTo relation - Added hasMany relation - Added new JsonField (with nested json) Removed - Drop field on entity - Drop field with Relation - Drop Entity with JsonField - Drop Enum Modified - Entity - field - Modify Enum */ const expectResult = require('../../../test/schemas/schemaDiff.json'); expect(JSON.parse(JSON.stringify(result))).toStrictEqual(expectResult); }); it('Determine isRewindable', () => { const currentSchema = buildSchemaFromFile(oldSchemaPath); const nextSchema = buildSchemaFromFile(badSchemaPath); const v = SchemaMigrationService.validateSchemaChanges(currentSchema, nextSchema); expect(v).toBe(false); }); it('Ensure iterator logic', () => { const currentSchema = buildSchemaFromFile(oldSchemaPath); const nextSchema = buildSchemaFromFile(badSchemaPath); const projects = new Map([ [4, {schema: nextSchema}], [2, {schema: nextSchema}], [1, {schema: currentSchema}], [3, {schema: currentSchema}], ]); const v = (ProjectUpgradeService as any).rewindableCheck(projects); expect(v).toBe(false); }); }); it('compare enums on modified enums', () => { const currentEnums = [ { name: 'TestEnum', values: ['GOOD', 'BAD', 'NEUTRAL'], } as GraphQLEnumsType, ]; const nextEnum = [ { name: 'TestEnum', values: ['GOOD', 'BAD', 'NEUTRAL', 'CHAOS'], } as GraphQLEnumsType, ]; const changes: any = { addedEnums: [], removedEnums: [], modifiedEnums: [], }; compareEnums(currentEnums, nextEnum, changes); expect(changes).toStrictEqual({ addedEnums: [], removedEnums: [], modifiedEnums: [{name: 'TestEnum', values: ['GOOD', 'BAD', 'NEUTRAL', 'CHAOS']}], }); }); }); ================================================ FILE: packages/node-core/src/db/migration-service/SchemaMigration.service.test.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import {readFileSync} from 'fs'; import * as path from 'path'; import {EventEmitter2} from '@nestjs/event-emitter'; import {CommonProjectManifestV1_0_0Impl, IPFSReader} from '@subql/common'; import {buildSchemaFromString} from '@subql/utils'; import {IndexesOptions, QueryTypes, Sequelize} from '@subql/x-sequelize'; import {GraphQLSchema} from 'graphql'; import {NodeConfig} from '../../configure'; import {ISubqueryProject, StoreCacheService, StoreService} from '../../indexer'; import {DbOption} from '../db.module'; import {generateHashedIndexName} from '../sync-helper'; import {SchemaMigrationService} from './SchemaMigration.service'; const option: DbOption = { host: process.env.DB_HOST ?? '127.0.0.1', port: process.env.DB_PORT ? Number(process.env.DB_PORT) : 5432, username: process.env.DB_USER ?? 'postgres', password: process.env.DB_PASS ?? 'postgres', database: process.env.DB_DATABASE ?? 'postgres', timezone: 'utc', }; async function setup( schemaName: string, initialSchema: GraphQLSchema, sequelize: Sequelize, config = new NodeConfig({} as any) ): Promise { const project = { schema: initialSchema, network: { chainId: 'chainId', }, } as unknown as ISubqueryProject; const storeCache = new StoreCacheService(sequelize, config, new EventEmitter2()); const storeService = new StoreService(sequelize, config, storeCache, project); await sequelize.createSchema(`"${schemaName}"`, {}); await storeService.initCoreTables(schemaName); const tx = await sequelize.transaction(); await storeService.init(schemaName, tx); await tx.commit(); return new SchemaMigrationService(sequelize, storeService, schemaName, config); } function loadGqlSchema(fileName: string): GraphQLSchema { return buildSchemaFromString( readFileSync(path.resolve(__dirname, `../../../test/migration-schemas/${fileName}`)).toString('utf8') ); } jest.setTimeout(900000); describe('SchemaMigration integration tests', () => { let sequelize: Sequelize; let schemaName: string; beforeEach(async () => { // Need to create a new instance for each test because sequelize keeps reference to modle instances sequelize = new Sequelize( `postgresql://${option.username}:${option.password}@${option.host}:${option.port}/${option.database}`, option ); await sequelize.authenticate(); }); afterEach(async () => { await sequelize.dropSchema(schemaName, {logging: false}); await sequelize?.close(); }); // Use this test for potentially debugging user projects it.skip('Can migrate user project', async () => { schemaName = 'test-migration-user'; const schemas: GraphQLSchema[] = []; let cid: string | undefined = 'ipfs://QmTXkSagBTzFQdPQqK6aMZZs8FUKWniccdCPaiyAUAVaxP'; while (cid) { const reader = new IPFSReader(cid); const project = (await reader.getProjectSchema()) as CommonProjectManifestV1_0_0Impl; schemas.unshift(buildSchemaFromString(await reader.getFile(project.schema.file))); cid = project.parent?.reference; } expect(schemas.length).toBeGreaterThan(1); const migrationService = await setup(schemaName, schemas[0], sequelize); const tx = await sequelize.transaction(); for (let i = 1; i < schemas.length; i++) { await expect(migrationService.run(schemas[i - 1], schemas[i], tx)).resolves.not.toThrow(); } await tx.commit(); }); it('Migrate to new schema', async () => { schemaName = 'test-migrations-1'; const initialSchema = loadGqlSchema('test_1_1.graphql'); const migrationService = await setup(schemaName, initialSchema, sequelize); const tx = await sequelize.transaction(); await migrationService.run(initialSchema, loadGqlSchema('test_1_1000.graphql'), tx); await tx.commit(); const dbResults = await sequelize.query( `SELECT table_name FROM information_schema.tables WHERE table_schema='${schemaName}';`, {type: QueryTypes.SELECT} ); const tableNames = dbResults.map((row) => row[0]); expect(tableNames).toContain('_metadata'); expect(tableNames).toContain('accounts'); expect(tableNames).not.toContain('test_entities'); expect(tableNames).toContain('transfers'); expect(tableNames).toContain('test_entity_twos'); // Query to check the structure of 'accounts' table const accountColumns = await sequelize.query<{column_name: string; is_nullable: string}>( `SELECT column_name, is_nullable FROM information_schema.columns WHERE table_schema = :schema AND table_name = :table ;`, { type: QueryTypes.SELECT, replacements: {schema: schemaName, table: 'accounts'}, } ); const firstTransferBlockColumn = accountColumns.find((row) => row.column_name === 'first_transfer_block'); expect(firstTransferBlockColumn).toBeDefined(); expect(firstTransferBlockColumn?.is_nullable).toEqual('YES'); const [columnResult] = await sequelize.query( `SELECT column_name, data_type, is_nullable FROM information_schema.columns WHERE table_schema = :schema AND table_name = 'test_entity_twos' AND column_name = '_block_range';`, { replacements: {schema: schemaName}, } ); const [indexResult] = await sequelize.query( `SELECT indexname, indexdef FROM pg_indexes WHERE schemaname = :schema AND tablename = 'test_entity_twos';`, { replacements: {schema: schemaName}, } ); expect(columnResult[0]).toStrictEqual({ column_name: '_block_range', data_type: 'int8range', is_nullable: 'NO', }); const indexOptions: IndexesOptions = { fields: ['id'], unique: false, parser: null, name: 'test_entity_twos_id', }; const expectIndexName = generateHashedIndexName('TestEntityTwo', indexOptions); expect(indexResult).toStrictEqual([ { indexname: 'test_entity_twos_pkey', indexdef: `CREATE UNIQUE INDEX test_entity_twos_pkey ON "${schemaName}".test_entity_twos USING btree (_id)`, }, { indexname: expectIndexName, indexdef: `CREATE INDEX "0x30cf0ebdd6c10eed" ON "${schemaName}".test_entity_twos USING btree (id)`, }, ]); }); it('Ensure correct JSON field creation with nested json', async () => { schemaName = 'test-migrations-2'; const initialSchema = loadGqlSchema('test_2_1.graphql'); const migrationService = await setup(schemaName, initialSchema, sequelize); const tx = await sequelize.transaction(); await migrationService.run(initialSchema, loadGqlSchema('test_2_1000.graphql'), tx); await tx.commit(); const [exampleFieldColumn] = await sequelize.query<{data_type: string}>( ` SELECT column_name, data_type FROM information_schema.columns WHERE table_schema = '${schemaName}' AND table_name = 'test_entities' AND column_name = 'example_field'; `, {type: QueryTypes.SELECT} ); expect(exampleFieldColumn.data_type).toEqual('jsonb'); }); it('Migration on index removal, creation', async () => { schemaName = 'test-migrations-5'; const initialSchema = loadGqlSchema('test_5_1.graphql'); const migrationService = await setup(schemaName, initialSchema, sequelize); const tx = await sequelize.transaction(); await migrationService.run(initialSchema, loadGqlSchema('test_5_1000.graphql'), tx); await tx.commit(); const indexResult = await sequelize.query<{indexname: string; indexdef: string}>( `SELECT indexname, indexdef FROM pg_indexes WHERE schemaname = :schema ;`, { type: QueryTypes.SELECT, replacements: {schema: schemaName}, } ); const findIndex = (modelName: string, unique: boolean, fields: string[]) => indexResult.find((i) => i.indexname === generateHashedIndexName(modelName, {unique, fields})); const uniqueIndex = findIndex('NewIndexOne', true, ['name', '_block_range']); const nonUniqueIndex = findIndex('NewIndexTwo', false, ['name', '_block_range']); const compositeIndex = findIndex('NewIndexComposite', false, ['block', 'block_two', '_block_range']); const droppedUniqueIndex = findIndex('DropSingleIndex', true, ['example_field', '_block_range']); const droppedCompositeIndex = findIndex('DropCompositeIndex', false, ['block', 'block_two', '_block_range']); expect(uniqueIndex).toBeTruthy(); expect(nonUniqueIndex).toBeTruthy(); expect(compositeIndex).toBeTruthy(); expect(droppedCompositeIndex).toBe(undefined); expect(droppedUniqueIndex).toBe(undefined); }); it('Ensure correctness on non-historical migrate', async () => { schemaName = 'test-migrations-10'; const initialSchema = loadGqlSchema('test_10_1.graphql'); const migrationService = await setup( schemaName, initialSchema, sequelize, new NodeConfig({historical: false} as any) ); const tx = await sequelize.transaction(); await migrationService.run(initialSchema, loadGqlSchema('test_10_1000.graphql'), tx); await tx.commit(); const results = await sequelize.query<{column_name: string}>( `SELECT column_name FROM information_schema.columns WHERE table_schema = :schema AND table_name = 'test_entity_twos'`, { type: QueryTypes.SELECT, replacements: {schema: schemaName}, } ); expect(results.find((c) => c.column_name === '_block_range')).not.toBeDefined(); }); it('On Failed migration, no metadata transaction should be applied', async () => { const processExitSpy = jest.spyOn(process, 'exit').mockImplementationOnce((() => { throw new Error(); }) as any); schemaName = 'test-migrations-11'; const initialSchema = loadGqlSchema('test_11_1.graphql'); const migrationService = await setup(schemaName, initialSchema, sequelize); const tx = await sequelize.transaction(); await expect(migrationService.run(initialSchema, loadGqlSchema('test_11_2000.graphql'), tx)).rejects.toThrow(); await tx.commit(); // expect(processExitSpy).toHaveBeenCalledTimes(1); // expect(processExitSpy).toHaveBeenCalledWith(1); const [result] = await sequelize.query( `SELECT * FROM "${schemaName}"._metadata WHERE key = 'lastProcessedHeight'`, {type: QueryTypes.SELECT} ); expect(result).toBe(undefined); processExitSpy.mockRestore(); }); it('add relations on migration with historical', async () => { schemaName = 'test-migrations-12'; const initialSchema = loadGqlSchema('test_12_1.graphql'); const migrationService = await setup(schemaName, initialSchema, sequelize); const tx = await sequelize.transaction(); await migrationService.run(initialSchema, loadGqlSchema('test_12_2000.graphql'), tx); await tx.commit(); const [indexes] = await sequelize.query( ` SELECT idx.indexname AS index_name, idx.indexdef AS index_definition FROM pg_indexes idx WHERE idx.schemaname = :schema AND idx.tablename = 'accounts'; `, { replacements: {schema: schemaName}, } ); expect(indexes).toStrictEqual([ { index_definition: `CREATE UNIQUE INDEX accounts_pkey ON "${schemaName}".accounts USING btree (_id)`, index_name: 'accounts_pkey', }, { index_definition: `CREATE INDEX "0x4cb388e53e3e30f3" ON "${schemaName}".accounts USING btree (id)`, index_name: '0x4cb388e53e3e30f3', }, { index_definition: `CREATE INDEX "0xc1a3a8c963b2bea2" ON "${schemaName}".accounts USING gist (one_to_one_relation_id, _block_range)`, index_name: '0xc1a3a8c963b2bea2', }, ]); }); it('add relations on migration no historical', async () => { // add a has many and belong to, and one to one schemaName = 'test-migrations-13'; const initialSchema = loadGqlSchema('test_13_1.graphql'); const migrationService = await setup( schemaName, initialSchema, sequelize, new NodeConfig({historical: false} as any) ); const tx = await sequelize.transaction(); await migrationService.run(initialSchema, loadGqlSchema('test_13_2000.graphql'), tx); await tx.commit(); const result = await sequelize.query( ` SELECT tc.table_name, tc.constraint_name, kcu.column_name, ccu.table_name AS foreign_table_name FROM information_schema.table_constraints AS tc JOIN information_schema.key_column_usage AS kcu ON tc.constraint_name = kcu.constraint_name AND tc.table_schema = kcu.table_schema JOIN information_schema.constraint_column_usage AS ccu ON ccu.constraint_name = tc.constraint_name AND ccu.table_schema = tc.table_schema WHERE tc.constraint_type = 'FOREIGN KEY' AND tc.table_schema = :schema;`, { type: QueryTypes.SELECT, replacements: {schema: schemaName}, } ); expect(result.length).toBe(6); }); it('drop relational with no historical', async () => { schemaName = 'test-migrations-14'; const initialSchema = loadGqlSchema('test_14_1.graphql'); const migrationService = await setup( schemaName, initialSchema, sequelize, new NodeConfig({historical: false} as any) ); const tx = await sequelize.transaction(); await migrationService.run(initialSchema, loadGqlSchema('test_14_1000.graphql'), tx); await tx.commit(); const [result] = await sequelize.query(` SELECT tc.table_name, tc.constraint_name, kcu.column_name, ccu.table_name AS foreign_table_name FROM information_schema.table_constraints AS tc JOIN information_schema.key_column_usage AS kcu ON tc.constraint_name = kcu.constraint_name AND tc.table_schema = kcu.table_schema JOIN information_schema.constraint_column_usage AS ccu ON ccu.constraint_name = tc.constraint_name AND ccu.table_schema = tc.table_schema WHERE tc.constraint_type = 'FOREIGN KEY' AND tc.table_schema = '${schemaName}';`); expect(result.length).toBe(0); }); it('Able to drop table and column with relations', async () => { schemaName = 'test-migrations-15'; const initialSchema = loadGqlSchema('test_15_1.graphql'); const migrationService = await setup(schemaName, initialSchema, sequelize); const tx = await sequelize.transaction(); await migrationService.run(initialSchema, loadGqlSchema('test_15_2000.graphql'), tx); await tx.commit(); const tx2 = await sequelize.transaction(); await migrationService.run(initialSchema, loadGqlSchema('test_15_4000.graphql'), tx2); await tx2.commit(); const result = await sequelize.query<{table_name: string}>( `SELECT table_name FROM information_schema.tables WHERE table_schema = :schema `, { replacements: {schema: schemaName}, type: QueryTypes.SELECT, } ); expect(result.length).toBe(4); expect(result).not.toContain({table_name: 'accounts'}); }); it('create subscription on table creation', async () => { schemaName = 'test-migrations-16'; const initialSchema = loadGqlSchema('test_16_1.graphql'); const migrationService = await setup( schemaName, initialSchema, sequelize, new NodeConfig({subscription: true} as any) ); const tx = await sequelize.transaction(); await migrationService.run(initialSchema, loadGqlSchema('test_16_2000.graphql'), tx); await tx.commit(); const result = await sequelize.query<{trigger_name: string}>( `SELECT trigger_name FROM information_schema.triggers WHERE event_object_table = :table AND event_object_schema = :schema ; `, { replacements: { schema: schemaName, table: 'many_to_many_test_entities', }, type: QueryTypes.SELECT, } ); expect(result.length).toBe(3); expect(result[0]).toEqual({trigger_name: '0x36bc022fc662d7ff'}); }); describe('enum migrations', () => { async function queryEnums(): Promise<{enum_type: string; enum_value: string}[]> { return sequelize.query<{enum_type: string; enum_value: string}>( ` SELECT t.typname AS enum_type, e.enumlabel AS enum_value FROM pg_type t JOIN pg_enum e ON t.oid = e.enumtypid JOIN pg_catalog.pg_namespace n ON n.oid = t.typnamespace WHERE n.nspname = :schema -- Replace 'public' with your schema name if different ORDER BY t.typname, e.enumsortorder;`, {type: QueryTypes.SELECT, replacements: {schema: schemaName}} ); } it('support enum drop and enum creation', async () => { schemaName = 'test-migrations-17'; const initialSchema = loadGqlSchema('test_17_1.graphql'); const migrationService = await setup(schemaName, initialSchema, sequelize); const tx = await sequelize.transaction(); await migrationService.run(initialSchema, loadGqlSchema('test_17_2000.graphql'), tx); await tx.commit(); const result = await queryEnums(); expect(result.length).toBe(5); expect(result.find((e) => e.enum_type === '5fcf5d7ab8')).toEqual({ enum_type: '5fcf5d7ab8', enum_value: 'CREATED', }); expect(result.find((e) => e.enum_type === 'e9b7360cdc')).toBeUndefined(); }); it('supports enum value additions', async () => { schemaName = 'test-migrations-18'; const initialSchema = loadGqlSchema('test_18_1.graphql'); const migrationService = await setup(schemaName, initialSchema, sequelize); const tx = await sequelize.transaction(); await migrationService.run(initialSchema, loadGqlSchema('test_18_2000.graphql'), tx); await tx.commit(); const result = await queryEnums(); expect(result.length).toBe(4); expect(result.map((r) => r.enum_value)).toEqual(['GOOD', 'BAD', 'NEUTRAL', 'CHAOS']); }); it('throws when enum values are removed', async () => { schemaName = 'test-migrations-19'; const initialSchema = loadGqlSchema('test_19_1.graphql'); const migrationService = await setup(schemaName, initialSchema, sequelize); const tx = await sequelize.transaction(); await expect(migrationService.run(initialSchema, loadGqlSchema('test_19_2000.graphql'), tx)).rejects.toThrow( 'Enums cannot have values removed. Only adding new values is supported.' ); await tx.commit(); }); it('throws when enum values are reordered', async () => { schemaName = 'test-migrations-20'; const initialSchema = loadGqlSchema('test_20_1.graphql'); const migrationService = await setup(schemaName, initialSchema, sequelize); const tx = await sequelize.transaction(); await expect(migrationService.run(initialSchema, loadGqlSchema('test_20_2000.graphql'), tx)).rejects.toThrow( 'Enums cannot have their order changed.' ); await tx.commit(); }); }); }); ================================================ FILE: packages/node-core/src/db/migration-service/SchemaMigration.service.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import {getAllEntitiesRelations, GraphQLModelsType, GraphQLRelationsType} from '@subql/utils'; import {Sequelize, Transaction} from '@subql/x-sequelize'; import {GraphQLSchema} from 'graphql'; import {NodeConfig} from '../../configure'; import {cacheProviderFlushData, StoreService} from '../../indexer'; import {getLogger} from '../../logger'; import {sortModels} from '../sync-helper'; import {Migration} from './migration'; import { alignModelOrder, compareEnums, compareModels, compareRelations, hasChanged, ModifiedModels, schemaChangesLoggerMessage, SchemaChangesType, } from './migration-helpers'; const logger = getLogger('SchemaMigrationService'); export class SchemaMigrationService { private withoutForeignKeys = false; constructor( private sequelize: Sequelize, private storeService: StoreService, private dbSchema: string, private config: NodeConfig ) {} static validateSchemaChanges(currentSchema: GraphQLSchema, nextSchema: GraphQLSchema): boolean { const {modifiedModels, removedModels} = SchemaMigrationService.schemaComparator(currentSchema, nextSchema); if (removedModels.length > 0) return false; for (const {removedFields} of Object.values(modifiedModels)) { if (removedFields.length > 0) { return false; } } return true; } static schemaComparator(currentSchema: GraphQLSchema | null, nextSchema: GraphQLSchema): SchemaChangesType { const currentData = getAllEntitiesRelations(currentSchema); const nextData = getAllEntitiesRelations(nextSchema); const changes: SchemaChangesType = { addedModels: [], removedModels: [], modifiedModels: {}, addedRelations: [], removedRelations: [], addedEnums: [], removedEnums: [], modifiedEnums: [], }; compareEnums(currentData.enums, nextData.enums, changes); compareRelations(currentData.relations, nextData.relations, changes); compareModels(currentData.models, nextData.models, changes); return changes; } private orderModelsByRelations(models: GraphQLModelsType[], relations: GraphQLRelationsType[]): GraphQLModelsType[] { const sortedModels = sortModels(relations, models); if (sortedModels === null) { this.withoutForeignKeys = true; return models; } else { this.withoutForeignKeys = false; return sortedModels.reverse(); } } async run(currentSchema: GraphQLSchema | null, nextSchema: GraphQLSchema, transaction: Transaction): Promise { logger.info('Running schema migration'); const schemaDifference = SchemaMigrationService.schemaComparator(currentSchema, nextSchema); const { addedEnums, addedModels, addedRelations, modifiedEnums, modifiedModels, removedEnums, removedModels, removedRelations, } = schemaDifference; if (!hasChanged(schemaDifference)) { logger.info('No Schema changes'); return; } const sortedSchemaModels = this.orderModelsByRelations( getAllEntitiesRelations(nextSchema).models, getAllEntitiesRelations(nextSchema).relations ); const sortedAddedModels = alignModelOrder(sortedSchemaModels, addedModels); const sortedModifiedModels = alignModelOrder(sortedSchemaModels, modifiedModels); await cacheProviderFlushData(this.storeService.modelProvider, true); const migrationAction = await Migration.create(this.sequelize, this.storeService, this.dbSchema, this.config); if (this.config.debug) { logger.debug(`${schemaChangesLoggerMessage(schemaDifference)}`); } try { for (const enumValue of addedEnums) { migrationAction.createEnum(enumValue); } for (const enumValue of modifiedEnums) { migrationAction.modifyEnum(enumValue); } for (const model of removedModels) { migrationAction.dropTable(model); } for (const model of sortedAddedModels) { await migrationAction.createTable(model, this.withoutForeignKeys); } const entities = Object.keys(sortedModifiedModels); for (const model of entities) { const modelValue = sortedModifiedModels[model]; for (const index of modelValue.removedIndexes) { migrationAction.dropIndex(modelValue.model, index); } for (const field of modelValue.removedFields) { migrationAction.dropColumn(modelValue.model, field); } for (const field of modelValue.addedFields) { migrationAction.createColumn(modelValue.model, field); } for (const index of modelValue.addedIndexes) { migrationAction.createIndex(modelValue.model, index); } if (modelValue.removedFullText) { migrationAction.dropFullText(modelValue.model); } if (modelValue.addedFullText) { migrationAction.createFullText(modelValue.model); } } for (const relationModel of addedRelations) { migrationAction.createRelation(relationModel); } for (const relationModel of removedRelations) { migrationAction.dropRelation(relationModel); } for (const enumValue of removedEnums) { migrationAction.dropEnum(enumValue); } const modelChanges = await migrationAction.run(transaction); this.storeService.updateModels(modelChanges, getAllEntitiesRelations(nextSchema)); await cacheProviderFlushData(this.storeService.modelProvider, true); } catch (e: any) { logger.error(e, 'Failed to execute Schema Migration'); throw e; } } } ================================================ FILE: packages/node-core/src/db/migration-service/index.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 export * from './migration'; export * from './SchemaMigration.service'; export {ModifiedDbModels} from './migration-helpers'; ================================================ FILE: packages/node-core/src/db/migration-service/migration-helpers.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import { GraphQLEntityField, GraphQLEntityIndex, GraphQLEnumsType, GraphQLFullTextType, GraphQLModelsType, GraphQLRelationsType, } from '@subql/utils'; import {ModelStatic} from '@subql/x-sequelize'; import {isEqual} from 'lodash'; export type ModifiedDbModels = { modifiedModels: ModelStatic[]; removedModels: string[]; }; export type ModifiedModels = Record< string, { model: GraphQLModelsType; addedFields: GraphQLEntityField[]; removedFields: GraphQLEntityField[]; addedIndexes: GraphQLEntityIndex[]; removedIndexes: GraphQLEntityIndex[]; addedFullText?: GraphQLFullTextType; removedFullText?: GraphQLFullTextType; } >; export interface SchemaChangesType { addedModels: GraphQLModelsType[]; removedModels: GraphQLModelsType[]; modifiedModels: ModifiedModels; addedRelations: GraphQLRelationsType[]; removedRelations: GraphQLRelationsType[]; addedEnums: GraphQLEnumsType[]; removedEnums: GraphQLEnumsType[]; modifiedEnums: GraphQLEnumsType[]; } /** * Checks that 2 string arrays are the same independent of order * */ function arrayUnorderedMatch(a?: string[], b?: string[]): boolean { return a?.sort().join(',') === b?.sort().join(','); } function indexesEqual(index1: GraphQLEntityIndex, index2: GraphQLEntityIndex): boolean { return ( arrayUnorderedMatch(index1.fields, index2.fields) && index1.unique === index2.unique && index1.using === index2.using ); } function fullTextEqual(a?: GraphQLFullTextType, b?: GraphQLFullTextType): boolean { return arrayUnorderedMatch(a?.fields, b?.fields) && a?.language === b?.language; } export function hasChanged(changes: SchemaChangesType): boolean { return Object.values(changes).some((change) => Array.isArray(change) ? change.length > 0 : Object.keys(change).length > 0 ); } export function compareEnums( currentEnums: GraphQLEnumsType[], nextEnums: GraphQLEnumsType[], changes: SchemaChangesType ): void { const currentEnumNames = new Set(currentEnums.map((e) => e.name)); const nextEnumNames = new Set(nextEnums.map((e) => e.name)); changes.addedEnums = nextEnums.filter((e) => !currentEnumNames.has(e.name)); changes.removedEnums = currentEnums.filter((e) => !nextEnumNames.has(e.name)); currentEnums.forEach((currentEnum) => { if (nextEnumNames.has(currentEnum.name)) { const nextEnum = nextEnums.find((e) => e.name === currentEnum.name); // Check if there's a difference in the values arrays if (nextEnum && !isEqual(currentEnum.values, nextEnum.values)) { if (currentEnum.values.length > nextEnum.values.length) { throw new Error('Enums cannot have values removed. Only adding new values is supported.'); } if (!currentEnum.values.every((current, idx) => nextEnum.values.indexOf(current) === idx)) { throw new Error('Enums cannot have their order changed.'); } changes.modifiedEnums.push(nextEnum); // Add the nextEnum to modifiedEnums } } }); } export function compareRelations( currentRelations: GraphQLRelationsType[], nextRelations: GraphQLRelationsType[], changes: SchemaChangesType ): void { const relationKey = (relation: GraphQLRelationsType) => `${relation.from}-${relation.to}-${relation.type}-${relation.foreignKey}`; const currentRelationsMap = new Map(currentRelations.map((rel) => [relationKey(rel), rel])); const nextRelationsMap = new Map(nextRelations.map((rel) => [relationKey(rel), rel])); nextRelations.forEach((rel) => { if (!currentRelationsMap.has(relationKey(rel))) { changes.addedRelations.push(rel); } }); currentRelations.forEach((rel) => { if (!nextRelationsMap.has(relationKey(rel))) { changes.removedRelations.push(rel); } }); } function fieldsAreEqual(field1: GraphQLEntityField, field2: GraphQLEntityField): boolean { return ( field1.name === field2.name && field1.type === field2.type && field1.nullable === field2.nullable && field1.isArray === field2.isArray ); } export function compareModels( currentModels: GraphQLModelsType[], nextModels: GraphQLModelsType[], changes: SchemaChangesType ): void { const currentModelsMap = new Map(currentModels.map((model) => [model.name, model])); const nextModelsMap = new Map(nextModels.map((model) => [model.name, model])); currentModels.forEach((model) => { if (!nextModelsMap.has(model.name)) { changes.removedModels.push(model); } }); nextModels.forEach((model) => { if (!currentModelsMap.has(model.name)) { changes.addedModels.push(model); } }); nextModels.forEach((model) => { const currentModel = currentModelsMap.get(model.name); if (currentModel) { const addedFields = model.fields.filter((field) => !currentModel.fields.some((f) => fieldsAreEqual(f, field))); const removedFields = currentModel.fields.filter((field) => !model.fields.some((f) => fieldsAreEqual(f, field))); const addedIndexes = model.indexes.filter((index) => !currentModel.indexes.some((i) => indexesEqual(i, index))); const removedIndexes = currentModel.indexes.filter((index) => !model.indexes.some((i) => indexesEqual(i, index))); const addedFullText = !fullTextEqual(model.fullText, currentModel.fullText) ? model.fullText : undefined; const removedFullText = !fullTextEqual(model.fullText, currentModel.fullText) ? currentModel.fullText : undefined; if ( addedFields.length || removedFields.length || addedIndexes.length || removedIndexes.length || addedFullText || removedFullText ) { changes.modifiedModels[model.name] = { model, addedFields, removedFields, addedIndexes, removedIndexes, addedFullText, removedFullText, }; } } }); } export function schemaChangesLoggerMessage(schemaChanges: SchemaChangesType): string { let logMessage = '\n'; const formatModels = (models: GraphQLModelsType[]) => models.map((model: GraphQLModelsType) => model.name).join(', '); const formatIndexes = (indexes: GraphQLEntityIndex[]) => indexes .map( (index: GraphQLEntityIndex) => `${index.fields.join(', ')}${index.unique ? ' (Unique)' : ''}${index.using ? ` Using: ${index.using}` : ''}` ) .join('; '); const formatRelations = (relations: GraphQLRelationsType[]) => relations.map((relation) => `From: ${relation.from} To: ${relation.to}`); const formatEnums = (enums: GraphQLEnumsType[]) => enums.map((enumType) => `${enumType.name} (${enumType.values.join(', ')})`); if (schemaChanges.addedModels.length) { logMessage += `Added Entities: ${formatModels(schemaChanges.addedModels)}\n`; } if (schemaChanges.removedModels.length) { logMessage += `Removed Entities: ${formatModels(schemaChanges.removedModels)}\n`; } if (schemaChanges.addedRelations.length) { logMessage += `Added Relations: ${formatRelations(schemaChanges.addedRelations)}\n`; } if (schemaChanges.removedRelations.length) { logMessage += `Removed Relations: ${formatRelations(schemaChanges.removedRelations)}\n`; } Object.entries(schemaChanges.modifiedModels).forEach(([modelName, changes]) => { logMessage += `Modified Entities: ${modelName}\n`; if (changes.addedFields.length) { logMessage += `\tAdded Fields: ${changes.addedFields.map((field) => field.name).join(', ')}\n`; } if (changes.removedFields.length) { logMessage += `\tRemoved Fields: ${changes.removedFields.map((field) => field.name).join(', ')}\n`; } if (changes.addedIndexes.length) { logMessage += `\tAdded Indexes: ${formatIndexes(changes.addedIndexes)}\n`; } if (changes.removedIndexes.length) { logMessage += `\tRemoved Indexes: ${formatIndexes(changes.removedIndexes)}\n`; } if (changes.addedFullText) { logMessage += `\tAdded FullText: ${changes.addedFullText.fields.join(', ')}\n`; } if (changes.removedFullText) { logMessage += `\tRemoved FullText\n`; } }); if (schemaChanges.addedEnums.length) { logMessage += `Added Enums: ${formatEnums(schemaChanges.addedEnums)}\n`; } if (schemaChanges.removedEnums.length) { logMessage += `Removed Enums: ${formatEnums(schemaChanges.removedEnums)}\n`; } return logMessage; } export function alignModelOrder( schemaModels: GraphQLModelsType[], models: T ): T { const orderIndex = schemaModels.reduce((acc: Record, model, index) => { acc[model.name] = index; return acc; }, {}); if (Array.isArray(models)) { return models.sort((a, b) => { const indexA = orderIndex[a.name] ?? Number.MAX_VALUE; // Place unknown models at the end const indexB = orderIndex[b.name] ?? Number.MAX_VALUE; return indexA - indexB; }) as T; } else { const modelNames = Object.keys(models); const sortedModelNames = modelNames.sort((a, b) => { const indexA = orderIndex[a] ?? Number.MAX_VALUE; const indexB = orderIndex[b] ?? Number.MAX_VALUE; return indexA - indexB; }); const sortedModifiedModels: ModifiedModels = {}; sortedModelNames.forEach((modelName) => { sortedModifiedModels[modelName] = models[modelName]; }); return sortedModifiedModels as T; } } ================================================ FILE: packages/node-core/src/db/migration-service/migration.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import assert from 'node:assert'; import { GraphQLEntityField, GraphQLEntityIndex, GraphQLEnumsType, GraphQLModelsType, GraphQLRelationsType, hashName, } from '@subql/utils'; import { IndexesOptions, ModelAttributes, ModelStatic, QueryTypes, Sequelize, Transaction, Utils, } from '@subql/x-sequelize'; import {isEqual, uniq} from 'lodash'; import {NodeConfig} from '../../configure/NodeConfig'; import {HistoricalMode, StoreService} from '../../indexer'; import {getLogger} from '../../logger'; import {EnumType, getColumnOption, modelsTypeToModelAttributes, enumNameToHash} from '../../utils'; import {formatAttributes, formatColumnName, modelToTableName} from '../sequelizeUtil'; import * as syncHelper from '../sync-helper'; import {ModifiedDbModels} from './migration-helpers'; const logger = getLogger('db-manager'); export class Migration { /* Models that are added or modified during the migration */ private modifiedModels: ModelStatic[] = []; private removedModels: string[] = []; /* mainQueries are used for executions, that are not reliant on any prior db operations extraQueries are executions, that are reliant on certain db operations, e.g. comments on foreignKeys or comments on tables, should be executed only after the table has been created */ private mainQueries: syncHelper.QueryString[] = []; private extraQueries: syncHelper.QueryString[] = []; private readonly historical: HistoricalMode; private readonly useSubscription: boolean; private foreignKeyMap: Map> = new Map< string, Map >(); private enumTypeMap: Map; private constructor( private sequelize: Sequelize, private storeService: StoreService, private readonly schemaName: string, private readonly config: NodeConfig, private readonly existingForeignKeys: string[], // this the source of truth from the db private initEnumTypeMap: Map, private existingIndexes: {indexname: string}[] ) { // We can use store historical here, as long as // store.initCoreTables checked historical status, then store.init called syncSchema then migration run this.historical = storeService.historical; this.useSubscription = config.subscription; this.enumTypeMap = this.initEnumTypeMap; if (this.useSubscription) { this.extraQueries.push(syncHelper.createSendNotificationTriggerFunction(schemaName)); } else { this.extraQueries.push(syncHelper.dropNotifyFunction(this.schemaName)); } } static async create( sequelize: Sequelize, storeService: StoreService, schemaName: string, config: NodeConfig ): Promise { const existingForeignKeys = await syncHelper.getExistingForeignKeys(schemaName, sequelize); const enumTypeMap = await syncHelper.getExistingEnums(schemaName, sequelize); const indexesResult = (await sequelize.query(syncHelper.getExistedIndexesQuery(schemaName), { type: QueryTypes.SELECT, })) as { indexname: string; }[]; return new Migration(sequelize, storeService, schemaName, config, existingForeignKeys, enumTypeMap, indexesResult); } async run(transaction: Transaction): Promise { if (this.historical) { // Comments should be added after this.addRelationComments(); } for (const query of this.mainQueries) { if (syncHelper.isQuery(query)) { await this.sequelize.query(query.sql, {replacements: query.replacements, transaction}); } else { await this.sequelize.query(query, {transaction}); } } for (const query of uniq(this.extraQueries)) { if (syncHelper.isQuery(query)) { await this.sequelize.query(query.sql, {replacements: query.replacements, transaction}); } else { await this.sequelize.query(query, {transaction}); } } return { modifiedModels: this.modifiedModels, removedModels: this.removedModels, }; } private prepareModelAttributesAndIndexes(model: GraphQLModelsType): { attributes: ModelAttributes; indexes: IndexesOptions[]; } { const attributes = modelsTypeToModelAttributes(model, this.enumTypeMap, this.schemaName); if (this.historical) { syncHelper.addIdAndBlockRangeAttributes(attributes); } const indexes = model.indexes.map(({fields, unique, using}) => ({ fields: fields.map((field) => Utils.underscoredIf(field, true)), unique, using, })); return {attributes, indexes}; } private addModelToSequelizeCache(sequelizeModel: ModelStatic): void { const modelName = sequelizeModel.name; if (!this.modifiedModels.find((m) => m.name === modelName)) { this.modifiedModels.push(sequelizeModel); } } private createSequelizeModel(model: GraphQLModelsType): ModelStatic { const {attributes, indexes} = this.prepareModelAttributesAndIndexes(model); return this.storeService.defineModel(model, attributes, indexes, this.schemaName); } async createTable(model: GraphQLModelsType, withoutForeignKey: boolean): Promise { const {attributes, indexes} = this.prepareModelAttributesAndIndexes(model); const existedIndexes = this.existingIndexes.map((i) => (i as any).indexname); if (indexes.length > this.config.indexCountLimit) { throw new Error(`too many indexes on entity ${model.name}`); } if (this.historical) { syncHelper.addBlockRangeColumnToIndexes(indexes); syncHelper.addHistoricalIdIndex(model, indexes); } syncHelper.updateIndexesName(model.name, indexes, existedIndexes as string[]); const sequelizeModel = this.storeService.defineModel(model, attributes, indexes, this.schemaName); this.mainQueries.push(...syncHelper.generateCreateTableQuery(sequelizeModel, this.schemaName, withoutForeignKey)); if (sequelizeModel.options.indexes) { this.mainQueries.push( ...syncHelper.generateCreateIndexQuery( sequelizeModel.options.indexes, this.schemaName, sequelizeModel.tableName ) ); } if (model.fullText) { this.createFullText(model); } if (this.useSubscription) { const triggerName = hashName(this.schemaName, 'notify_trigger', sequelizeModel.tableName); const notifyTriggers = await syncHelper.getTriggers(this.sequelize, triggerName); // Triggers not been found if (notifyTriggers.length === 0) { this.extraQueries.push(syncHelper.createNotifyTrigger(this.schemaName, sequelizeModel.tableName)); } else { syncHelper.validateNotifyTriggers(triggerName, notifyTriggers as syncHelper.NotifyTriggerPayload[]); } } else { // should prioritise dropping the triggers before dropNotifyFunction this.extraQueries.unshift(syncHelper.dropNotifyTrigger(this.schemaName, sequelizeModel.tableName)); } this.addModelToSequelizeCache(sequelizeModel); } dropTable(model: GraphQLModelsType): void { const tableName = modelToTableName(model.name); // should prioritise dropping the triggers before dropNotifyFunction this.mainQueries.unshift(syncHelper.dropNotifyTrigger(this.schemaName, tableName)); this.mainQueries.push(`DROP TABLE IF EXISTS "${this.schemaName}"."${tableName}";`); this.removedModels.push(model.name); } createColumn(model: GraphQLModelsType, field: GraphQLEntityField): void { const sequelizeModel = this.createSequelizeModel(model); const columnOptions = getColumnOption(field, this.enumTypeMap, this.schemaName); if (columnOptions.primaryKey) { throw new Error('Primary Key migration upgrade is not allowed'); } if (!columnOptions.allowNull) { throw new Error(`Non-nullable field creation is not supported: ${field.name} on ${model.name}`); } const dbTableName = modelToTableName(model.name); const dbColumnName = formatColumnName(field.name); const formattedAttributes = formatAttributes(columnOptions, this.schemaName, false); this.mainQueries.push( syncHelper.createColumnQuery(this.schemaName, dbTableName, dbColumnName, formattedAttributes) ); if (columnOptions.comment) { this.extraQueries.push( syncHelper.commentColumnQuery(this.schemaName, dbTableName, dbColumnName, columnOptions.comment) ); } this.addModelToSequelizeCache(sequelizeModel); } dropColumn(model: GraphQLModelsType, field: GraphQLEntityField): void { const columnName = formatColumnName(field.name); const tableName = modelToTableName(model.name); this.mainQueries.push(syncHelper.dropColumnQuery(this.schemaName, columnName, tableName)); this.addModelToSequelizeCache(this.createSequelizeModel(model)); } createIndex(model: GraphQLModelsType, index: GraphQLEntityIndex): void { const formattedTableName = modelToTableName(model.name); const indexOptions: IndexesOptions = {...index, fields: index.fields.map((f) => formatColumnName(f))}; if (this.historical) { syncHelper.addBlockRangeColumnToIndexes([indexOptions]); syncHelper.addHistoricalIdIndex(model, [indexOptions]); } indexOptions.name = syncHelper.generateHashedIndexName(model.name, indexOptions); this.mainQueries.push(syncHelper.createIndexQuery(indexOptions, formattedTableName, this.schemaName)); } dropIndex(model: GraphQLModelsType, index: GraphQLEntityIndex): void { const hashedIndexName = syncHelper.generateHashedIndexName(model.name, index); this.mainQueries.push(syncHelper.dropIndexQuery(this.schemaName, hashedIndexName)); } createRelation(relation: GraphQLRelationsType): void { const model = this.sequelize.model(relation.from); const relatedModel = this.sequelize.model(relation.to); if (this.historical) { syncHelper.addRelationToMap(relation, this.foreignKeyMap, model, relatedModel); } else { switch (relation.type) { case 'belongsTo': { model.belongsTo(relatedModel, {foreignKey: relation.foreignKey}); syncHelper.addRelationToMap(relation, this.foreignKeyMap, model, relatedModel); const rel = model.belongsTo(relatedModel, {foreignKey: relation.foreignKey}); const fkConstraint = syncHelper.getFkConstraint(rel.source.tableName, rel.foreignKey); if (this.existingForeignKeys.includes(fkConstraint)) break; this.extraQueries.push(syncHelper.constraintDeferrableQuery(model.getTableName().toString(), fkConstraint)); break; } case 'hasOne': { const rel = model.hasOne(relatedModel, { foreignKey: relation.foreignKey, }); const fkConstraint = syncHelper.getFkConstraint(rel.target.tableName, rel.foreignKey); if (this.existingForeignKeys.includes(fkConstraint)) break; const tags = syncHelper.smartTags({ singleForeignFieldName: relation.fieldName, }); this.extraQueries.push( syncHelper.commentConstraintQuery(this.schemaName, rel.target.tableName, fkConstraint, tags), syncHelper.createUniqueIndexQuery(this.schemaName, relatedModel.tableName, relation.foreignKey) ); break; } case 'hasMany': { const rel = model.hasMany(relatedModel, { foreignKey: relation.foreignKey, }); const fkConstraint = syncHelper.getFkConstraint(rel.target.tableName, rel.foreignKey); if (this.existingForeignKeys.includes(fkConstraint)) break; const tags = syncHelper.smartTags({ foreignFieldName: relation.fieldName, }); this.extraQueries.push( syncHelper.commentConstraintQuery(this.schemaName, rel.target.tableName, fkConstraint, tags) ); break; } default: throw new Error('Relation type is not supported'); } const relationQuery = syncHelper.generateForeignKeyQuery( model.getAttributes()[relation.foreignKey], model.tableName ); if (relationQuery) { this.mainQueries.push(relationQuery); } } this.addModelToSequelizeCache(model); } private addRelationComments(): void { this.foreignKeyMap.forEach((keys, tableName) => { const comment = Array.from(keys.values()) .map((tags) => syncHelper.smartTags(tags, '|')) .join('\n'); const query = syncHelper.commentTableQuery(this.schemaName, tableName, comment); this.extraQueries.push(query); }); } dropRelation(relation: GraphQLRelationsType): void { if (relation.type !== 'belongsTo') { return; } const tableName = modelToTableName(relation.from); const fkConstraint = syncHelper.getFkConstraint(tableName, relation.foreignKey); this.mainQueries.unshift(syncHelper.dropRelationQuery(this.schemaName, tableName, fkConstraint)); } createEnum(e: GraphQLEnumsType): void { const queries: string[] = []; // Ref: https://www.graphile.org/postgraphile/enums/ // Example query for enum name: COMMENT ON TYPE "polkadot-starter_enum_a40fe73329" IS E'@enum\n@enumName TestEnum' // It is difficult for sequelize use replacement, instead we use escape to avoid injection // UPDATE: this comment got syntax error with cockroach db, disable it for now. Waiting to be fixed. // See https://github.com/cockroachdb/cockroach/issues/44135 const enumTypeName = enumNameToHash(e.name); const enumTypeNameDeprecated = `${this.schemaName}_enum_${enumNameToHash(e.name)}`; let type: string | null = null; const typeNames = [enumTypeName, enumTypeNameDeprecated]; typeNames.forEach((t) => { if (this.enumTypeMap.has(t)) { const enumFromMapValues = this.enumTypeMap.get(t)?.enumValues; if (!isEqual(e.values, enumFromMapValues)) { throw new Error( `\n * Can't modify enum "${e.name}" between runs: \n * Before: [${enumFromMapValues?.join( `,` )}] \n * After : [${e.values.join(',')}] \n * You must rerun the project to do such a change` ); } type = t === enumTypeNameDeprecated ? `"${t}"` : `"${this.schemaName}"."${enumTypeName}"`; } }); if (!type) { type = `"${this.schemaName}"."${enumTypeName}"`; const escapedEnumValues = e.values.map((value) => this.sequelize.escape(value)).join(','); queries.unshift(syncHelper.createEnumQuery(type, escapedEnumValues)); } const comment = this.sequelize.escape(`@enum\\n@enumName ${e.name}${e.description ? `\\n ${e.description}` : ''}`); queries.push(syncHelper.commentOnEnumQuery(type, comment)); this.mainQueries.unshift(...queries); this.enumTypeMap.set(enumTypeName, { enumValues: e.values, type: type, name: e.name, }); } modifyEnum(e: GraphQLEnumsType): void { const enumName = enumNameToHash(e.name); const existingEnum = this.enumTypeMap.get(enumName); if (!existingEnum) { throw new Error(`Enum ${e.name} does not exist`); } const newValues = e.values.filter((value) => !existingEnum.enumValues.includes(value)); if (newValues.length === 0) { return; } // Add each new value in a separate ALTER TYPE query const typeName = `"${this.schemaName}"."${enumName}"`; for (const value of newValues) { this.mainQueries.push(syncHelper.addEnumValueQuery(typeName, value)); // this.mainQueries.push(`ALTER TYPE "${this.schemaName}"."${enumName}" ADD VALUE IF NOT EXISTS '${value}';`); } // Update the enum type map this.enumTypeMap.set(enumName, { name: enumName, type: typeName, enumValues: e.values, }); } dropEnum(e: GraphQLEnumsType): void { const enumTypeName = enumNameToHash(e.name); const enumTypeNameDeprecated = `${this.schemaName}_enum_${enumNameToHash(e.name)}`; [enumTypeName, enumTypeNameDeprecated].forEach((typeName) => { if (this.enumTypeMap.has(typeName)) { this.mainQueries.push(syncHelper.dropEnumQuery(typeName, this.schemaName)); this.enumTypeMap.delete(typeName); } }); } createFullText(model: GraphQLModelsType): void { assert(model.fullText, `Expected fullText to exist on model ${model.name}`); const table = modelToTableName(model.name); const queries = [ syncHelper.createTsVectorColumnQuery(this.schemaName, table, model.fullText.fields, model.fullText.language), syncHelper.createTsVectorCommentQuery(this.schemaName, table), syncHelper.createTsVectorIndexQuery(this.schemaName, table), syncHelper.createSearchFunctionQuery(this.schemaName, table), syncHelper.commentSearchFunctionQuery(this.schemaName, table), ]; this.mainQueries.push(...queries); } dropFullText(model: GraphQLModelsType): void { const table = modelToTableName(model.name); const queries = [ syncHelper.dropSearchFunctionQuery(this.schemaName, table), syncHelper.dropTsVectorIndexQuery(this.schemaName, table), syncHelper.dropTsVectorColumnQuery(this.schemaName, table), ]; this.mainQueries.push(...queries); } } ================================================ FILE: packages/node-core/src/db/sequelizeUtil.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import assert from 'assert'; import NodeUtil from 'node:util'; import {BigInt, Boolean, Bytes, DateObj, Int, Json, SequelizeTypes, String} from '@subql/utils'; import { DataType, DataTypes, IndexesOptions, ModelAttributeColumnOptions, TableName, Utils, TableNameWithSchema, } from '@subql/x-sequelize'; import {underscored} from './sync-helper'; // This method is simplified from https://github.com/sequelize/sequelize/blob/066421c00aad61694dcdbb624d4b73dbac7c7b42/packages/core/src/model-definition.ts#L245 export function modelToTableName(modelName: string): string { // Align underscored = true, same as in storeService sequelizeModel return Utils.underscoredIf(Utils.pluralize(modelName), true); } export function formatColumnName(columnName: string): string { return Utils.underscoredIf(columnName, true); } // Rewrite due to method is not exported from sequelize // This method is same from https://github.com/sequelize/sequelize/blob/26beda5bf76bd65e30264ebf135e39efaa7d514d/packages/core/src/utils/string.ts#L89 export function generateIndexName(tableName: TableName, index: IndexesOptions): string { const tableNameStr = typeof tableName === 'string' ? tableName : tableName.tableName; if (!index.fields) { throw new Error(`Index on table ${tableNameStr} has not fields: ${NodeUtil.inspect(index)}`); } const fields = index.fields.map((field) => { // We always pass string in indexes field if (typeof field === 'string') { return field; } throw new Error(`Generate index name failed, index ${index.name} field should be string type`); }); let out = `${tableNameStr}_${fields.join('_')}`; if (index.unique) { out += '_unique'; } return underscored(out); } export function formatReferences(columnOptions: ModelAttributeColumnOptions, schema: string): string { if (!columnOptions.references) { return ''; } assert(typeof columnOptions.references !== 'string', 'reference is type string'); assert(typeof columnOptions.references.model !== 'string', 'reference.model is type string'); let referenceStatement = `REFERENCES "${schema}"."${ (columnOptions.references.model as TableNameWithSchema).tableName }" ("${columnOptions.references.key}")`; if (columnOptions.onDelete) { referenceStatement += ` ON DELETE ${columnOptions.onDelete}`; } if (columnOptions.onUpdate) { referenceStatement += ` ON UPDATE ${columnOptions.onUpdate}`; } return referenceStatement; } export function formatAttributes( columnOptions: ModelAttributeColumnOptions, schema: string, withoutForeignKey: boolean ): string { const type = formatDataType(columnOptions.type); const allowNull = columnOptions.allowNull === false ? 'NOT NULL' : ''; const unique = columnOptions.unique ? 'UNIQUE' : ''; const autoIncrement = columnOptions.autoIncrement ? 'AUTO_INCREMENT' : ''; // PostgreSQL const references = formatReferences(columnOptions, schema); return `${type} ${allowNull} ${unique} ${autoIncrement} ${withoutForeignKey ? '' : references}`.trim(); } // TODO this should be using TypeClass.types['dbType'] instead of TypeClass.key const sequelizeToPostgresTypeMap = { [DataTypes.STRING.name]: (dataType: DataType) => String.sequelizeType, [DataTypes.INTEGER.name]: () => Int.sequelizeType, [DataTypes.BIGINT.name]: () => BigInt.sequelizeType, [DataTypes.UUID.name]: () => DataTypes.UUID, [DataTypes.BOOLEAN.name]: () => Boolean.sequelizeType, [DataTypes.FLOAT.name]: () => 'double precision', // to maintain compatibility we will use float8 [DataTypes.DATE.name]: () => DateObj.sequelizeType, [DataTypes.JSONB.name]: () => Json.sequelizeType, [DataTypes.RANGE.name]: () => 'int8range', [DataTypes.BLOB.name]: () => 'bytea', }; export function formatDataType(dataType: DataType): SequelizeTypes { if (typeof dataType === 'string') { return dataType; } else { const formatter = sequelizeToPostgresTypeMap[dataType.key]; if (!formatter) { throw new Error(`Unsupported data type: ${dataType.key}`); } return formatter(dataType); } } ================================================ FILE: packages/node-core/src/db/sync-helper.spec.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import {GraphQLModelsType} from '@subql/utils'; import {Model, ModelAttributeColumnOptions, ModelStatic, Sequelize} from '@subql/x-sequelize'; import {formatDataType, formatReferences} from './sequelizeUtil'; import { sortModels, getFkConstraint, getExistingEnums, generateForeignKeyQuery, generateCreateTableQuery, generateCreateIndexQuery, } from './sync-helper'; jest.mock('@subql/x-sequelize', () => { const actualSequelize = jest.requireActual('@subql/x-sequelize'); return { ...actualSequelize, Sequelize: jest.fn().mockImplementation(() => ({ authenticate: jest.fn(), define: jest.fn().mockReturnValue({ findOne: jest.fn(), create: jest.fn((input) => input), }), query: jest.fn(), // Leave this generic for now showAllSchemas: jest.fn().mockResolvedValue(['enum-sync-1']), model: jest.fn().mockReturnValue({upsert: jest.fn()}), sync: jest.fn(), transaction: jest.fn().mockReturnValue({ commit: jest.fn(), rollback: jest.fn(), afterCommit: jest.fn(), }), })), }; }); describe('sync-helper', () => { const mockModel = { schema: { name: 'test', }, tableName: 'test-table', options: { indexes: [ { fields: ['from_id', '_block_range'], unique: false, using: 'gist', name: '0xf48017d5c5d3d768', type: '', parser: null, }, { fields: ['id'], unique: false, name: '0xb91efc8ed4021e6e', type: '', parser: null, }, ], }, getAttributes: () => { return { // ID id: { type: 'text', comment: 'id field is always required and must look like this', allowNull: false, primaryKey: false, fieldName: 'id', _modelAttribute: true, field: 'id', }, // BIGINT amount: { type: 'numeric', comment: 'Amount that is transferred', allowNull: false, primaryKey: false, fieldName: 'amount', _modelAttribute: true, field: 'amount', }, // TIMESTAMP date: { type: 'timestamp', comment: 'The date of the transfer', allowNull: false, primaryKey: false, fieldName: 'date', _modelAttribute: true, field: 'date', }, // RELATION with HISTORICAL fromId: { type: 'text', comment: 'The account that transfers are made from', allowNull: false, primaryKey: false, fieldName: 'fromId', _modelAttribute: true, field: 'from_id', }, // UUID __id: { type: { key: 'UUID', }, defaultValue: {}, allowNull: false, primaryKey: true, fieldName: '__id', _modelAttribute: true, field: '_id', }, // HISTORICAL RANGE __block_range: { type: { key: 'RANGE', _subtype: 'BIGINT', options: { subtype: { options: {}, }, }, }, allowNull: false, fieldName: '__block_range', _modelAttribute: true, field: '_block_range', }, // NULLABLE lastTransferBlock: { type: 'integer', comment: 'The most recent block on which we see a transfer involving this account', allowNull: true, primaryKey: false, fieldName: 'lastTransferBlock', _modelAttribute: true, field: 'last_transfer_block', }, }; }, } as unknown as ModelStatic>; it('Ensure correct fkConstraint', () => { console.log(getFkConstraint('many_to_many_test_entities', 'AccountId')); expect(getFkConstraint('ManyToManyTestEntities', 'AccountId')).toBe('many_to_many_test_entities_account_id_fkey'); }); it('Generate SQL statement for table creation with historical', () => { const statement = generateCreateTableQuery(mockModel, 'test', false); const expectedStatement = [ 'CREATE TABLE IF NOT EXISTS "test"."test-table" ("id" text NOT NULL,\n "amount" numeric NOT NULL,\n "date" timestamp NOT NULL,\n "from_id" text NOT NULL,\n "_id" UUID NOT NULL,\n "_block_range" int8range NOT NULL,\n "last_transfer_block" integer, PRIMARY KEY ("_id"));', { sql: `COMMENT ON COLUMN "test"."test-table"."id" IS ?;`, replacements: [`id field is always required and must look like this`], }, {sql: `COMMENT ON COLUMN "test"."test-table"."amount" IS ?;`, replacements: [`Amount that is transferred`]}, {sql: `COMMENT ON COLUMN "test"."test-table"."date" IS ?;`, replacements: [`The date of the transfer`]}, { sql: `COMMENT ON COLUMN "test"."test-table"."from_id" IS ?;`, replacements: [`The account that transfers are made from`], }, { sql: `COMMENT ON COLUMN "test"."test-table"."last_transfer_block" IS ?;`, replacements: [`The most recent block on which we see a transfer involving this account`], }, ]; expect(statement).toStrictEqual(expectedStatement); }); it('Generate SQL statement for Indexes', () => { const statement = generateCreateIndexQuery( mockModel.options.indexes as any, mockModel.schema.name, mockModel.tableName ); expect(statement).toStrictEqual([ `CREATE INDEX IF NOT EXISTS "0xf48017d5c5d3d768" ON "test"."${mockModel.tableName}" USING gist ("from_id", "_block_range");`, `CREATE INDEX IF NOT EXISTS "0xb91efc8ed4021e6e" ON "test"."${mockModel.tableName}" ("id");`, ]); }); it('Generate table statement no historical, no multi primary keys', () => { jest.spyOn(mockModel, 'getAttributes').mockImplementationOnce(() => { return { id: { type: 'text', comment: 'id field is always required and must look like this', allowNull: false, primaryKey: true, fieldName: 'id', _modelAttribute: true, field: 'id', }, }; }); const statement = generateCreateTableQuery(mockModel, 'test', false); expect(statement).toStrictEqual([ `CREATE TABLE IF NOT EXISTS "test"."test-table" ("id" text NOT NULL, PRIMARY KEY ("id"));`, { sql: `COMMENT ON COLUMN "test"."test-table"."id" IS ?;`, replacements: ['id field is always required and must look like this'], }, ]); }); it('Reference statement', () => { const attribute = { type: 'text', comment: 'The account that transfers are made from', allowNull: false, primaryKey: false, fieldName: 'fromId', _modelAttribute: true, field: 'from_id', references: { model: { tableName: 'accounts', table: 'accounts', name: 'Account', schema: 't-sync-4', delimiter: '.', }, key: 'id', }, onDelete: 'NO ACTION', onUpdate: 'CASCADE', } as ModelAttributeColumnOptions; const statement = formatReferences(attribute, 'test'); expect(statement).toBe(`REFERENCES "test"."accounts" ("id") ON DELETE NO ACTION ON UPDATE CASCADE`); }); it('Ensure correct foreignkey statement', () => { jest.spyOn(mockModel, 'getAttributes').mockImplementationOnce(() => { return { transferIdId: { type: 'text', comment: undefined, allowNull: false, primaryKey: false, field: 'transfer_id_id', references: { model: { schema: 'test', tableName: 'transfers', }, key: 'id', }, onDelete: 'NO ACTION', onUpdate: 'CASCADE', }, } as any; }); const referenceQueries: string[] = []; Object.values(mockModel.getAttributes()).forEach((a) => { const refStatement = generateForeignKeyQuery(a, mockModel.tableName); if (refStatement) { referenceQueries.push(refStatement); } }); expect(referenceQueries[0]).toBe( `DO $$ BEGIN ALTER TABLE "test"."test-table" ADD CONSTRAINT test-table_transfer_id_id_fkey FOREIGN KEY (transfer_id_id) REFERENCES "test"."transfers" (id) ON DELETE NO ACTION ON UPDATE CASCADE; EXCEPTION WHEN duplicate_object THEN RAISE NOTICE 'Constraint already exists. Ignoring...'; END$$;;` ); }); it('sortModel with toposort on cyclic schema', () => { const mockRelations = [ { from: 'Transfer', to: 'Account', }, { from: 'Account', to: 'Transfer', }, ] as any[]; const mockModels = [ { name: 'Transfer', }, { name: 'Account', }, ] as GraphQLModelsType[]; expect(sortModels(mockRelations, mockModels)).toBe(null); }); it('sortModel with toposort on non cyclic schema', () => { const mockRelations = [ { from: 'Transfer', to: 'TestEntity', }, { from: 'Account', to: 'TestEntity', }, ] as any[]; const mockModels = [ { name: 'Transfer', }, { name: 'Account', }, { name: 'TestEntity', }, { name: 'LonelyEntity', }, ] as GraphQLModelsType[]; expect(sortModels(mockRelations, mockModels)).toEqual([ { name: 'LonelyEntity', }, { name: 'Account', }, { name: 'Transfer', }, { name: 'TestEntity', }, ]); }); it('Ensure correct enumTypeMap', async () => { const sequelize = new Sequelize() as any; sequelize.query.mockResolvedValue([ {enum_value: 'GOOD', type_name: '1a131454ff'}, {enum_value: 'BAD', type_name: '1a131454ff'}, {enum_value: 'NEUTRAL', type_name: '1a131454ff'}, {enum_value: 'CHAOS', type_name: '1a131454ff'}, {enum_value: 'DROP', type_name: 'e9b7360cdc'}, ]); const v = await getExistingEnums('enum-sync-1', sequelize); const expectedMap = [ [ '1a131454ff', { enumValues: ['GOOD', 'BAD', 'NEUTRAL', 'CHAOS'], }, ], [ 'e9b7360cdc', { enumValues: ['DROP'], }, ], ]; expect(Array.from(v.entries())).toEqual(expectedMap); }); it('sequelize to correct postgres type map', () => { // TODO this should be using {types: postgres: ['jsonb']} instead of its key const v = formatDataType({key: 'JSONB'} as any); expect(v.toString()).toBe('JSONB'); }); }); ================================================ FILE: packages/node-core/src/db/sync-helper.test.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import {INestApplication} from '@nestjs/common'; import {Test} from '@nestjs/testing'; import {delay} from '@subql/common'; import {hashName} from '@subql/utils'; import {Sequelize} from '@subql/x-sequelize'; import {PoolClient} from 'pg'; import {NodeConfig} from '../configure/NodeConfig'; import {DbModule} from './db.module'; import {createSendNotificationTriggerFunction, createNotifyTrigger, getDbSizeAndUpdateMetadata} from './sync-helper'; const nodeConfig = new NodeConfig({subquery: 'packages/node-core/test/v1.0.0', subqueryName: 'test'}); describe('sync helper test', () => { let app: INestApplication; let sequelize: Sequelize; let schema: string; afterEach(async () => { await sequelize.dropSchema(schema, {}); await sequelize.close(); return app?.close(); }); it('can check project db size', async () => { const module = await Test.createTestingModule({ imports: [DbModule.forRootWithConfig(nodeConfig)], }).compile(); app = module.createNestApplication(); await app.init(); sequelize = app.get(Sequelize); schema = 'admin-test'; await sequelize.createSchema(schema, {}); // mock create metadata table await sequelize.query(` CREATE TABLE IF NOT EXISTS "${schema}"._metadata ( key VARCHAR(255) NOT NULL PRIMARY KEY, value JSONB, "createdAt" TIMESTAMP WITH TIME ZONE NOT NULL, "updatedAt" TIMESTAMP WITH TIME ZONE NOT NULL )`); const dbSize = await getDbSizeAndUpdateMetadata(sequelize, schema); expect(dbSize).not.toBeUndefined(); }, 50000); describe('has the correct notification trigger payload', () => { let client: PoolClient; afterEach(async () => { if (client) { await (client as any).query('UNLISTEN "0xc4e66f9e1358fa3c"'); (client as any).removeAllListeners('notification'); sequelize.connectionManager.releaseConnection(client); } }); it('without historical', async () => { const module = await Test.createTestingModule({ imports: [DbModule.forRootWithConfig(nodeConfig)], }).compile(); app = module.createNestApplication(); await app.init(); sequelize = app.get(Sequelize); schema = 'trigger-test'; const tableName = 'test'; await sequelize.createSchema(schema, {}); // mock create metadata table await sequelize.query(` CREATE TABLE IF NOT EXISTS "${schema}".${tableName} ( id text NOT NULL, block_number int4 NOT NULL )`); await sequelize.query(createSendNotificationTriggerFunction(schema)); await sequelize.query(createNotifyTrigger(schema, tableName)); client = (await sequelize.connectionManager.getConnection({ type: 'read', })) as PoolClient; await client.query('LISTEN "0xc4e66f9e1358fa3c"'); const listener = jest.fn(); (client as any).on('notification', (msg: any) => { console.log('Payload:', msg.payload); listener(msg.payload); }); await sequelize.query(`INSERT INTO "${schema}".${tableName} (id, block_number) VALUES ('1', 1);`); await sequelize.query(`UPDATE "${schema}".${tableName} SET block_number = 2 WHERE id = '1';`); await sequelize.query(`DELETE FROM "${schema}".${tableName} WHERE id = '1';`); await delay(1); expect(listener).toHaveBeenNthCalledWith( 1, `{"id": "1", "_entity": {"id": "1", "block_number": 1}, "mutation_type": "INSERT"}` ); expect(listener).toHaveBeenNthCalledWith( 2, `{"id": "1", "_entity": {"id": "1", "block_number": 2}, "mutation_type": "UPDATE"}` ); expect(listener).toHaveBeenNthCalledWith( 3, `{"id": "1", "_entity": {"id": "1", "block_number": 2}, "mutation_type": "DELETE"}` ); }, 10_000); it('with historical', async () => { const module = await Test.createTestingModule({ imports: [DbModule.forRootWithConfig(nodeConfig)], }).compile(); app = module.createNestApplication(); await app.init(); sequelize = app.get(Sequelize); schema = 'trigger-test'; const tableName = 'test'; await sequelize.createSchema(schema, {}); // mock create metadata table await sequelize.query(` CREATE TABLE IF NOT EXISTS "${schema}".${tableName} ( id text NOT NULL, block_number int4 NOT NULL, "_id" uuid NOT NULL, "_block_range" int8range NOT NULL, CONSTRAINT test_pk PRIMARY KEY (_id) )`); await sequelize.query(createSendNotificationTriggerFunction(schema)); await sequelize.query(createNotifyTrigger(schema, tableName)); client = (await sequelize.connectionManager.getConnection({ type: 'read', })) as PoolClient; await (client as any).query('LISTEN "0xc4e66f9e1358fa3c"'); const listener = jest.fn(); (client as any).on('notification', (msg: any) => { console.log('Payload:', msg.payload); listener(msg.payload); }); // Insert await sequelize.query( `INSERT INTO "${schema}".${tableName} (id, block_number, _id, _block_range) VALUES ('1', 1, 'adde2f8c-cb87-4e84-9600-77f434556e6d', int8range(1, NULL));` ); // Simulate Update const tx1 = await sequelize.transaction(); await sequelize.query( `INSERT INTO "${schema}".${tableName} (id, block_number, _id, _block_range) VALUES ('1', 2, '9396aca4-cef2-4b52-98a7-c5f1ed3edb81', int8range(2, NULL));` ); await sequelize.query( `UPDATE "${schema}".${tableName} SET block_number = 2, _block_range = int8range(1, 2) WHERE _id = 'adde2f8c-cb87-4e84-9600-77f434556e6d';`, {transaction: tx1} ); await tx1.commit(); // Simulate delete const tx2 = await sequelize.transaction(); await sequelize.query( `UPDATE "${schema}".${tableName} SET _block_range = int8range(2, 3) WHERE _id = '9396aca4-cef2-4b52-98a7-c5f1ed3edb81';`, {transaction: tx2} ); await tx2.commit(); await delay(1); // There is a limitation with our historical implementation where with the order or queries means we cant easily determine the difference between insert and update. // For that reason the behaviour is kept the same as before delete was fixed. expect(listener).toHaveBeenNthCalledWith( 1, `{"id": "1", "_entity": {"id": "1", "_id": "adde2f8c-cb87-4e84-9600-77f434556e6d", "block_number": 1}, "_block_height": 1, "mutation_type": "UPDATE"}` ); expect(listener).toHaveBeenNthCalledWith( 2, `{"id": "1", "_entity": {"id": "1", "_id": "9396aca4-cef2-4b52-98a7-c5f1ed3edb81", "block_number": 2}, "_block_height": 2, "mutation_type": "UPDATE"}` ); expect(listener).toHaveBeenNthCalledWith( 3, `{"id": "1", "_entity": {"id": "1", "_id": "9396aca4-cef2-4b52-98a7-c5f1ed3edb81", "block_number": 2}, "_block_height": 2, "mutation_type": "DELETE"}` ); }, 10_000); }); }); ================================================ FILE: packages/node-core/src/db/sync-helper.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import assert from 'assert'; import {hashName, blake2AsHex, IndexType, GraphQLModelsType, GraphQLRelationsType} from '@subql/utils'; import { DataTypes, IndexesOptions, Model, ModelAttributeColumnOptions, ModelAttributes, ModelStatic, QueryTypes, Sequelize, TableNameWithSchema, Utils, } from '@subql/x-sequelize'; import {ModelAttributeColumnReferencesOptions, ModelIndexesOptions} from '@subql/x-sequelize/types/model'; import {MultiChainRewindEvent} from '../events'; import {MultiChainRewindStatus} from '../indexer'; import {EnumType} from '../utils'; import {formatAttributes, generateIndexName, modelToTableName} from './sequelizeUtil'; const Toposort = require('toposort-class'); export type Query = { sql: string; replacements?: any[]; // TODO be stricter with type }; /** * @deprecated use Query instead for increased security * */ export type QueryString = Query | string; export function isQuery(input: QueryString): input is Query { return (input as any).sql; } export interface SmartTags { foreignKey?: string; foreignFieldName?: string; singleForeignFieldName?: string; } const tagOrder = { foreignKey: 0, foreignFieldName: 1, singleForeignFieldName: 2, }; export interface NotifyTriggerPayload { triggerName: string; eventManipulation: string; } const NotifyTriggerManipulationType = [`INSERT`, `DELETE`, `UPDATE`]; const byTagOrder = (a: [keyof SmartTags, any], b: [keyof SmartTags, any]) => { return tagOrder[a[0]] - tagOrder[b[0]]; }; export function smartTags(tags: SmartTags, separator = '\n'): string { return (Object.entries(tags) as [keyof SmartTags, any][]) .sort(byTagOrder) .map(([k, v]) => `@${k} ${v}`) .join(separator); } export function getVirtualFkTag(field: string, to: string): string { return `(${underscored(field)}) REFERENCES ${to} (id)`; } export const underscored = (input: string) => Utils.underscoredIf(input, true); export function getFkConstraint(tableName: string, foreignKey: string): string { return [tableName, foreignKey, 'fkey'].map(underscored).join('_'); } export function getUniqConstraint(tableName: string, field: string): string { return [tableName, field, 'uindex'].map(underscored).join('_'); } function escapedName(...args: string[]): string { return args.map((a) => `"${a}"`).join('.'); } function commentOn( type: 'CONSTRAINT' | 'TABLE' | 'COLUMN' | 'FUNCTION', entity: string, comment: string, constraint?: string ): Query { const constraintPart = constraint ? `${constraint} ON ` : ''; return {sql: `COMMENT ON ${type} ${constraintPart}${entity} IS ?;`, replacements: [comment]}; } export function commentConstraintQuery(schema: string, table: string, constraint: string, comment: string): Query { return commentOn('CONSTRAINT', escapedName(schema, table), comment, constraint); } export function commentTableQuery(schema: string, table: string, comment: string): Query { return commentOn('TABLE', escapedName(schema, table), comment); } export function commentColumnQuery(schema: string, table: string, column: string, comment: string): Query { return commentOn('COLUMN', escapedName(schema, table, column), comment); } export function commentOnFunction(schema: string, functionName: string, comment: string): Query { return commentOn('FUNCTION', escapedName(schema, functionName), comment); } // This is used when historical is disabled so that we can perform bulk updates export function constraintDeferrableQuery(table: string, constraint: string): string { return `ALTER TABLE ${table} ALTER CONSTRAINT ${constraint} DEFERRABLE INITIALLY IMMEDIATE`; } export function addTagsToForeignKeyMap( map: Map>, tableName: string, foreignKey: string, newTags: SmartTags ): void { if (!map.has(tableName)) { map.set(tableName, new Map()); } const tableKeys = map.get(tableName); let foreignKeyTags = tableKeys?.get(foreignKey) || ({} as SmartTags); foreignKeyTags = Object.assign(foreignKeyTags, newTags); tableKeys?.set(foreignKey, foreignKeyTags); } export const BTREE_GIST_EXTENSION_EXIST_QUERY = `SELECT * FROM pg_extension where extname = 'btree_gist'`; export function createUniqueIndexQuery(schema: string, table: string, field: string): string { return `create unique index if not exists "${getUniqConstraint( table, field )}" on "${schema}"."${table}" (${underscored(field)})`; } // Subscriptions export async function getTriggers(sequelize: Sequelize, triggerName: string): Promise { return sequelize.query( `select trigger_name as "triggerName", event_manipulation as "eventManipulation" from information_schema.triggers WHERE trigger_name = :triggerName`, { replacements: {triggerName}, type: QueryTypes.SELECT, } ); } export async function getFunctions(sequelize: Sequelize, schema: string, functionName: string): Promise { return sequelize.query( `SELECT routine_schema as function_schema, routine_name as function_name FROM information_schema.routines WHERE specific_schema not in ('pg_catalog', 'information_schema') and routine_type = 'FUNCTION' and routine_schema = :schema and routine_name = :functionName; `, { replacements: {schema, functionName}, type: QueryTypes.SELECT, } ); } export function createSendNotificationTriggerFunction(schema: string): string { return ` CREATE OR REPLACE FUNCTION "${schema}".send_notification() RETURNS trigger AS $$ DECLARE channel TEXT; table_name TEXT; row RECORD; payload JSONB; prev_entity BOOLEAN; next_entity BOOLEAN; BEGIN channel:= TG_ARGV[0]; table_name:= TG_TABLE_NAME; IF (TG_OP = 'DELETE') THEN row = OLD; ELSE row = NEW; END IF; payload = jsonb_build_object( 'id', row.id, 'mutation_type', TG_OP, '_entity', row); IF payload -> '_entity' ? '_block_range' then payload = payload #- '{"_entity","_block_range"}'; payload = payload || jsonb_build_object('_block_height', lower(row._block_range)); IF NOT upper_inf(row._block_range) then -- Check if a newer version of the entity exists to determine operation EXECUTE FORMAT( 'SELECT EXISTS (SELECT 1 FROM "${schema}".%I WHERE id = $1 AND lower(_block_range) = upper($2))', TG_TABLE_NAME ) INTO next_entity USING row.id, row._block_range; IF NOT next_entity THEN payload = payload || '{"mutation_type": "DELETE"}'; ELSE RETURN NULL; END IF; ELSE -- Because of the oerder of operations with historical, we cannot determine if this is an update or insert payload = payload || '{"mutation_type": "UPDATE"}'; -- EXECUTE FORMAT( -- 'SELECT EXISTS (SELECT 1 FROM "${schema}".%I WHERE id = $1 AND upper(_block_range) = lower($2))', -- TG_TABLE_NAME -- ) -- INTO prev_entity -- USING row.id, row._block_range; -- IF NOT prev_entity THEN -- payload = payload || '{"mutation_type": "INSERT"}'; -- ELSE -- payload = payload || '{"mutation_type": "UPDATE"}'; -- END IF; END IF; END IF; IF (octet_length(payload::text) >= 8000) THEN payload = payload || '{"_entity": null}'; END IF; PERFORM pg_notify( channel::text, payload::text); RETURN NULL; END; $$ LANGUAGE plpgsql;`; } export function createNotifyTrigger(schema: string, table: string): string { const triggerName = hashName(schema, 'notify_trigger', table); const channelName = hashName(schema, 'notify_channel', table); return ` DO $$ BEGIN CREATE TRIGGER "${triggerName}" AFTER INSERT OR UPDATE OR DELETE ON "${schema}"."${table}" FOR EACH ROW EXECUTE FUNCTION "${schema}".send_notification('${channelName}'); EXCEPTION WHEN duplicate_object THEN RAISE NOTICE 'Trigger already exists. Ignoring...'; END$$; `; } function dropTrigger(schema: string, table: string, triggerName: string): string { return `DROP TRIGGER IF EXISTS "${triggerName}" ON "${schema}"."${table}";`; } export function dropNotifyTrigger(schema: string, table: string): string { const triggerName = hashName(schema, 'notify_trigger', table); return dropTrigger(schema, table, triggerName); } function dropFunction(schema: string, functionName: string): string { return `DROP FUNCTION IF EXISTS "${schema}"."${functionName}";`; } export function dropNotifyFunction(schema: string): string { return dropFunction(schema, 'send_notification'); } // Hot schema reload, _metadata table // Should also use Idempotent export function createSchemaTrigger(schema: string, metadataTableName: string): string { const triggerName = hashName(schema, 'schema_trigger', metadataTableName); return ` CREATE TRIGGER "${triggerName}" AFTER UPDATE ON "${schema}"."${metadataTableName}" FOR EACH ROW WHEN ( new.key = 'schemaMigrationCount') EXECUTE FUNCTION "${schema}".schema_notification();`; } export function createSchemaTriggerFunction(schema: string): string { return ` CREATE OR REPLACE FUNCTION "${schema}".schema_notification() RETURNS trigger AS $$ BEGIN PERFORM pg_notify( '${hashName(schema, 'schema_channel', '_metadata')}', 'schema_updated'); RETURN NULL; END; $$ LANGUAGE plpgsql;`; } export function createRewindTrigger(schema: string): string { const triggerName = hashName(schema, 'rewind_trigger', '_global'); return ` CREATE TRIGGER "${triggerName}" AFTER INSERT OR UPDATE OR DELETE ON "${schema}"."_global" FOR EACH ROW EXECUTE FUNCTION "${schema}".rewind_notification(); `; } export function createRewindTriggerFunction(schema: string): string { const triggerName = hashName(schema, 'rewind_trigger', '_global'); return ` CREATE OR REPLACE FUNCTION "${schema}".rewind_notification() RETURNS trigger AS $$ BEGIN IF TG_OP = 'INSERT' THEN PERFORM pg_notify( '${triggerName}', format('{"event":"%s","chainId":"%s"}', '${MultiChainRewindEvent.Rewind}', NEW."chainId") ); ELSIF TG_OP = 'UPDATE' THEN IF NEW.status = '${MultiChainRewindStatus.Complete}' THEN PERFORM pg_notify( '${triggerName}', format('{"event":"%s","chainId":"%s"}', '${MultiChainRewindEvent.RewindComplete}', NEW."chainId") ); ELSIF NEW."rewindTimestamp" < OLD."rewindTimestamp" THEN PERFORM pg_notify( '${triggerName}', format('{"event":"%s","chainId":"%s"}', '${MultiChainRewindEvent.RewindTimestampDecreased}', NEW."chainId") ); END IF; ELSIF TG_OP = 'DELETE' THEN PERFORM pg_notify( '${triggerName}', format('{"event":"%s","chainId":"%s"}', '${MultiChainRewindEvent.FullyRewind}', OLD."chainId") ); END IF; RETURN NULL; END; $$ LANGUAGE plpgsql; `; } export function getExistedIndexesQuery(schema: string): string { return `SELECT indexname FROM pg_indexes WHERE schemaname = '${schema}'`; } export async function getDbSizeAndUpdateMetadata(sequelize: Sequelize, schema: string): Promise { const [result] = ( await sequelize.query( ` WITH schema_size AS ( SELECT sum(pg_total_relation_size(quote_ident(schemaname) || '.' || quote_ident(tablename)))::bigint AS size FROM pg_tables WHERE schemaname = :schema ) INSERT INTO "${schema}"._metadata (key, value, "createdAt", "updatedAt") VALUES ('dbSize', to_jsonb((SELECT size FROM schema_size)), now(), now()) ON CONFLICT (key) DO UPDATE SET value = to_jsonb((SELECT size FROM schema_size)), "updatedAt" = now() RETURNING (SELECT size FROM schema_size) AS size; `, { replacements: {schema}, type: QueryTypes.INSERT, } ) )[0] as unknown as {size: number}[]; return BigInt(result.size); } // SQL improvement const DEFAULT_SQL_EXE_BATCH = 2000; /** * Improve SQL which could potentially increase DB IO significantly, * this executes it by batch size, and in ASC id order **/ export const sqlIterator = (tableName: string, sql: string, batch: number = DEFAULT_SQL_EXE_BATCH): string => { return ` DO $$ DECLARE start_id INT; end_id INT; batch_size INT := ${batch}; current_id INT; BEGIN SELECT MIN(id), MAX(id) INTO start_id, end_id FROM ${tableName}; IF start_id IS NOT NULL AND end_id IS NOT NULL THEN FOR current_id IN start_id..end_id BY batch_size LOOP ${sql}; END LOOP; END IF; END $$ `; }; // Only used with historical to add indexes to ID fields for getting entities by ID export function addHistoricalIdIndex(model: GraphQLModelsType, indexes: IndexesOptions[]): void { const idFieldName = model.fields.find((field) => field.type === 'ID')?.name; if (idFieldName && !indexes.find((idx) => idx.fields?.includes(idFieldName))) { indexes.push({ fields: [Utils.underscoredIf(idFieldName, true)], unique: false, }); } } export function generateHashedIndexName(modelName: string, indexOptions: IndexesOptions): string { return blake2AsHex(`${modelName}_${(indexOptions.fields ?? []).join('_')}`, 64).substring(0, 63); } export function updateIndexesName(modelName: string, indexes: IndexesOptions[], existedIndexes: string[]): void { indexes.forEach((index) => { // follow same pattern as _generateIndexName const tableName = modelToTableName(modelName); const deprecated = generateIndexName(tableName, index); if (!existedIndexes.includes(deprecated)) { index.name = generateHashedIndexName(modelName, index); } }); } export function addIdAndBlockRangeAttributes(attributes: ModelAttributes, any>): void { (attributes.id as ModelAttributeColumnOptions).primaryKey = false; attributes.__id = { type: DataTypes.UUID, defaultValue: DataTypes.UUIDV4, allowNull: false, primaryKey: true, } as ModelAttributeColumnOptions; attributes.__block_range = { type: DataTypes.RANGE(DataTypes.BIGINT), allowNull: false, } as ModelAttributeColumnOptions; } export function addBlockRangeColumnToIndexes(indexes: IndexesOptions[]): void { indexes.forEach((index) => { if (index.using === IndexType.GIN) { return; } if (!index.fields) { index.fields = []; } index.fields.push('_block_range'); index.using = IndexType.GIST; // GIST does not support unique indexes index.unique = false; }); } export function addRelationToMap( relation: GraphQLRelationsType, foreignKeys: Map>, model: ModelStatic, relatedModel: ModelStatic ): void { switch (relation.type) { case 'belongsTo': { addTagsToForeignKeyMap(foreignKeys, model.tableName, relation.foreignKey, { foreignKey: getVirtualFkTag(relation.foreignKey, relatedModel.tableName), }); break; } case 'hasOne': { addTagsToForeignKeyMap(foreignKeys, relatedModel.tableName, relation.foreignKey, { singleForeignFieldName: relation.fieldName, }); break; } case 'hasMany': { addTagsToForeignKeyMap(foreignKeys, relatedModel.tableName, relation.foreignKey, { foreignFieldName: relation.fieldName, }); break; } default: throw new Error('Relation type is not supported'); } } export function generateCreateTableQuery( model: ModelStatic>, schema: string, withoutForeignKey: boolean ): QueryString[] { const tableName = model.tableName; const attributes = model.getAttributes(); const columnDefinitions: string[] = []; const primaryKeyColumns: string[] = []; const comments: Query[] = []; Object.keys(attributes).forEach((key) => { const attr = attributes[key]; assert(attr.field, 'Expected field to be set on attribute'); const columnDefinition = `"${attr.field}" ${formatAttributes(attr, schema, withoutForeignKey)}`; columnDefinitions.push(columnDefinition); if (attr.comment) { comments.push(commentColumnQuery(schema, tableName, attr.field, attr.comment)); } if (attr.primaryKey) { primaryKeyColumns.push(`"${attr.field}"`); } }); const primaryKeyDefinition = `, PRIMARY KEY (${primaryKeyColumns.join(', ')})`; const tableQuery = `CREATE TABLE IF NOT EXISTS "${schema}"."${tableName}" (${columnDefinitions.join( ',\n ' )}${primaryKeyDefinition});`; return [tableQuery, ...comments]; } export function generateCreateIndexQuery( indexes: readonly ModelIndexesOptions[], schema: string, tableName: string ): string[] { const indexQueries: string[] = []; indexes.forEach((index) => { const fieldsList = index.fields?.map((field) => `"${field}"`).join(', '); const unique = index.unique ? 'UNIQUE' : ''; const indexUsed = index.using ? `USING ${index.using}` : ''; const indexName = index.name; const query = `CREATE ${unique} INDEX IF NOT EXISTS "${indexName}" ON "${schema}"."${tableName}" ${indexUsed} (${fieldsList});`; indexQueries.push(query); }); return indexQueries; } export function sortModels(relations: GraphQLRelationsType[], models: GraphQLModelsType[]): GraphQLModelsType[] | null { const sorter = new Toposort(); models.forEach((model) => { sorter.add(model.name, []); }); relations.forEach(({from, to}) => { sorter.add(from, to); }); let sortedModelNames: string[]; try { sortedModelNames = sorter.sort(); } catch (error) { // Handle cyclic dependency error by returning null if (error instanceof Error && error.message.startsWith('Cyclic dependency found.')) { return null; } else { throw error; } } const sortedModels = sortedModelNames .map((modelName) => models.find((model) => model.name === modelName)) .filter(Boolean) as GraphQLModelsType[]; return sortedModels.length > 0 ? sortedModels : null; } export function validateNotifyTriggers(triggerName: string, triggers: NotifyTriggerPayload[]): void { if (triggers.length !== NotifyTriggerManipulationType.length) { throw new Error( `Found ${triggers.length} ${triggerName} triggers, expected ${NotifyTriggerManipulationType.length} triggers` ); } triggers.map((t) => { if (!NotifyTriggerManipulationType.includes(t.eventManipulation)) { throw new Error(`Found unexpected trigger ${t.triggerName} with manipulation ${t.eventManipulation}`); } }); } export async function getExistingForeignKeys(schema: string, sequelize: Sequelize): Promise { const results = (await sequelize.query( ` SELECT tc.constraint_name FROM information_schema.table_constraints AS tc JOIN information_schema.key_column_usage AS kcu ON tc.constraint_name = kcu.constraint_name AND tc.table_schema = kcu.table_schema JOIN information_schema.constraint_column_usage AS ccu ON ccu.constraint_name = tc.constraint_name AND ccu.table_schema = tc.table_schema WHERE tc.constraint_type = 'FOREIGN KEY' AND tc.table_schema = :schema; `, { replacements: {schema: schema}, type: QueryTypes.SELECT, } )) as {constraint_name: string}[]; return results.map((r) => r.constraint_name); } export async function getExistingEnums(schema: string, sequelize: Sequelize): Promise> { const enumTypeMap = new Map(); const results = (await sequelize.query( ` SELECT pg_enum.enumlabel as enum_value, t.typname as type_name FROM pg_type t JOIN pg_enum ON pg_enum.enumtypid = t.oid JOIN pg_catalog.pg_namespace n ON n.oid = t.typnamespace WHERE n.nspname = :schema ORDER BY t.typname, enumsortorder; `, { replacements: {schema: schema}, type: QueryTypes.SELECT, } )) as {enum_value: string; type_name: string}[]; results.forEach(({enum_value, type_name}) => { if (!enumTypeMap.has(type_name)) { enumTypeMap.set(type_name, {enumValues: [enum_value]}); } else { enumTypeMap.get(type_name)?.enumValues.push(enum_value); } }); return enumTypeMap; } // enums export const dropEnumQuery = (enumTypeValue: string, schema: string): string => `DROP TYPE IF EXISTS "${schema}"."${enumTypeValue}";`; export const commentOnEnumQuery = (type: string, comment: string): string => `COMMENT ON TYPE ${type} IS E${comment};`; export const createEnumQuery = (type: string, enumValues: string): string => `CREATE TYPE ${type} AS ENUM (${enumValues});`; export const addEnumValueQuery = (type: string, newValue: string): string => `ALTER TYPE ${type} ADD VALUE IF NOT EXISTS '${newValue}';`; // relations export const dropRelationQuery = (schemaName: string, tableName: string, fkConstraint: string): string => `ALTER TABLE "${schemaName}"."${tableName}" DROP CONSTRAINT IF EXISTS ${fkConstraint};`; export function generateForeignKeyQuery(attribute: ModelAttributeColumnOptions, tableName: string): string | void { const references = attribute?.references as ModelAttributeColumnReferencesOptions; if (!references) { return; } const foreignTable = references.model as TableNameWithSchema; assert(attribute.field, 'Missing field on attribute'); const fkey = getFkConstraint(tableName, attribute.field); let query = ` DO $$ BEGIN ALTER TABLE "${foreignTable.schema}"."${tableName}" ADD CONSTRAINT ${fkey} FOREIGN KEY (${attribute.field}) REFERENCES "${foreignTable.schema}"."${foreignTable.tableName}" (${references.key})`; if (attribute.onDelete) { query += ` ON DELETE ${attribute.onDelete}`; } if (attribute.onUpdate) { query += ` ON UPDATE ${attribute.onUpdate}`; } if (references.deferrable) { query += ` DEFERRABLE`; } query += `; EXCEPTION WHEN duplicate_object THEN RAISE NOTICE 'Constraint already exists. Ignoring...'; END$$; `; return `${query.trim()};`; } // indexes export const dropIndexQuery = (schema: string, hashedIndexName: string): string => `DROP INDEX IF EXISTS "${schema}"."${hashedIndexName}";`; export const createIndexQuery = (indexOptions: IndexesOptions, tableName: string, schema: string): string => { if (!indexOptions.fields || indexOptions.fields.length === 0) { throw new Error("The 'fields' property is required and cannot be empty."); } return ( `CREATE ${indexOptions.unique ? 'UNIQUE ' : ''}INDEX IF NOT EXISTS "${indexOptions.name}" ` + `ON "${schema}"."${tableName}" ` + `${indexOptions.using ? `USING ${indexOptions.using} ` : ''}` + `(${indexOptions.fields.join(', ')});` ); }; // columns export const dropColumnQuery = (schema: string, columnName: string, tableName: string): string => `ALTER TABLE "${schema}"."${modelToTableName(tableName)}" DROP COLUMN IF EXISTS ${columnName};`; export const createColumnQuery = (schema: string, table: string, columnName: string, attributes: string): string => `ALTER TABLE ${escapedName(schema, table)} ADD COLUMN IF NOT EXISTS "${columnName}" ${attributes};`; // fullTextSearch const TS_VECTOR_COL = '_tsv'; export const dropTsVectorColumnQuery = (schema: string, table: string): string => dropColumnQuery(schema, table, TS_VECTOR_COL); export const createTsVectorColumnQuery = ( schema: string, table: string, fields: string[], language = 'english' ): string => { const generated = `GENERATED ALWAYS as (to_tsvector('pg_catalog.${language}', ${fields .map((field) => `coalesce(${escapedName(field)}, '')`) .join(` || ' ' || `)})) STORED`; return createColumnQuery(schema, table, TS_VECTOR_COL, `tsvector ${generated}`); }; export const createTsVectorCommentQuery = (schema: string, table: string): Query => commentColumnQuery(schema, table, TS_VECTOR_COL, '@omit all'); const tsVectorIndexName = (schema: string, table: string) => hashName(schema, 'fulltext_idx', table); export const dropTsVectorIndexQuery = (schema: string, table: string): string => dropIndexQuery(schema, tsVectorIndexName(schema, table)); export const createTsVectorIndexQuery = (schema: string, table: string): string => createIndexQuery({using: 'gist', fields: [TS_VECTOR_COL], name: tsVectorIndexName(schema, table)}, table, schema); const searchFunctionName = (schema: string, table: string): string => hashName(schema, 'search', table); export const dropSearchFunctionQuery = (schema: string, table: string): string => dropFunction(schema, searchFunctionName(schema, table)); export const createSearchFunctionQuery = (schema: string, table: string): string => { const functionName = searchFunctionName(schema, table); return ` create or replace function ${escapedName(schema, functionName)}(search text) returns setof ${escapedName(schema, table)} as $$ select * from ${escapedName(schema, table)} as "table" where "table"."${TS_VECTOR_COL}" @@ to_tsquery(search) $$ language sql stable; `; }; export const commentSearchFunctionQuery = (schema: string, table: string): Query => commentOnFunction(schema, searchFunctionName(schema, table), `@name search_${table}`); export const tableExistsQuery = (schema: string): string => { return `SELECT table_name FROM information_schema.tables where table_schema='${schema}'`; }; ================================================ FILE: packages/node-core/src/events.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 export enum IndexerEvent { ApiConnected = 'api_connected', BlockTarget = 'block_target_height', BlockBest = 'block_best_height', BlockProcessing = 'block_processing_height', BlockProcessedCount = 'block_processed_count', BlockQueueSize = 'block_queue_size', BlocknumberQueueSize = 'blocknumber_queue_size', NetworkMetadata = 'network_metadata', UsingDictionary = 'using_dictionary', SkipDictionary = 'skip_dictionary', StoreCacheThreshold = 'store_cache_threshold', StoreCacheRecordsSize = 'store_cache_records_size', Ready = 'ready', RewindSuccess = 'rewind_success', RewindFailure = 'rewind_failure', } export enum AdminEvent { rewindTarget = 'rewind_target', RewindTargetResponse = 'rewind_target_response', } export enum PoiEvent { LatestSyncedPoi = 'poi_synced', PoiTarget = 'poi_target', } export enum MultiChainRewindEvent { Rewind = 'rewind', RewindComplete = 'rewind_complete', RewindTimestampDecreased = 'timestamp_decreased', FullyRewind = 'fully_rewind', } export interface RewindPayload { success: boolean; height: number; message?: string; } export interface ProcessBlockPayload { height: number; timestamp: number; } export interface ProcessedBlockCountPayload { processedBlockCount: number; timestamp: number; } export interface TargetBlockPayload { height: number; } export interface BestBlockPayload { height: number; } export interface EventPayload { value: T; } export interface NetworkMetadataPayload { chain: string; specName: string; genesisHash: string; } ================================================ FILE: packages/node-core/src/index.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import './utils/bigint'; export * from './api.service'; export * from './api.connection.error'; export * from './logger'; export * from './process'; export * from './profiler'; export * from './events'; export * from './configure'; export * from './db'; export * from './meta'; export * from './utils'; export * from './indexer'; export * from './subcommands'; export * from './yargs'; export * from './admin'; export * from './blockchain.service'; ================================================ FILE: packages/node-core/src/indexer/StoreOperations.spec.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import {GraphQLJsonFieldType, GraphQLModelsType, u8aToHex} from '@subql/utils'; import {StoreOperations} from './StoreOperations'; import {OperationType} from './types'; type StarterEntity = { id: string; field1: number; field2?: string; field3?: bigint; field4?: Date; field5?: boolean; field6?: any; field7?: number; createdAt: Date; updatedAt: Date; }; const testOperations = [ { operation: OperationType.Set, entityType: 'StarterEntity', data: { id: '0x2494bd5d089cf370c366351e851755ee42e8477df1c17ea1d9c2ae94e4f77ea8', field1: 41914, }, }, { operation: OperationType.Set, entityType: 'StarterEntity', data: { id: '0x2494bd5d089cf370c366351e851755ee42e8477df1c17ea1d9c2ae94e4f77ea8', field3: undefined, field1: 41914, field2: undefined, field4: new Date('2020-05-29T13:28:36.000Z'), field5: true, createdAt: new Date('2021-08-18T02:36:06.549Z'), updatedAt: new Date('2021-08-18T02:36:06.549Z'), }, }, { operation: OperationType.Set, entityType: 'StarterEntity', data: { id: '0x2494bd5d089cf370c366351e851755ee42e8477df1c17ea1d9c2ae94e4f77ea8', field3: undefined, field1: 41914, field2: undefined, field4: new Date('2020-05-29T13:28:36.000Z'), field5: true, createdAt: new Date('2021-08-18T02:36:06.549Z'), updatedAt: new Date('2021-08-18T02:36:06.549Z'), }, }, { operation: OperationType.Set, entityType: 'StarterEntity', data: { id: '0x2494bd5d089cf370c366351e851755ee42e8477df1c17ea1d9c2ae94e4f77ea8', field3: undefined, field1: 41914, field2: undefined, field4: new Date('2020-05-29T13:28:36.000Z'), field5: true, field6: {meat: 0, fruit: {apple: 'Apple'}}, createdAt: new Date('2021-08-18T02:36:06.549Z'), updatedAt: new Date('2021-08-18T02:36:06.549Z'), field7: parseFloat('3.14'), field8: 'Foo', }, }, { operation: OperationType.Remove, entityType: 'StarterEntity', data: '0x2494bd5d089cf370c366351e851755ee42e8477df1c17ea1d9c2ae94e4f77ea8', }, ]; // Single object in operations const testOperations2 = [ { operation: OperationType.Set, entityType: 'IndexEra', data: { id: '0x2494bd5d089cf370c366351e851755ee42e8477df1c17ea1d9c2ae94e4f77ea8', field1: 41914, }, }, ]; // negative in the field const testOperations3 = [ { operation: OperationType.Set, entityType: 'StarterEntity', data: { id: '0x2494bd5d089cf370c366351e851755ee42e8477df1c17ea1d9c2ae94e4f77ea8', field1: -1, }, }, ]; const falseOperation = { operation: OperationType.Remove, entityType: 'StarterEntity', data: { id: '0x2494bd5d089cf370c366351e851755ee42e8477df1c17ea1d9c2ae94e4f77ea8', field3: undefined, field1: 41914, field2: undefined, field4: new Date('2020-05-29T13:28:36.000Z'), field5: true, field6: {meat: 0, fruit: {apple: 'Apple'}}, createdAt: new Date('2021-08-18T02:36:06.549Z'), updatedAt: new Date('2021-08-18T02:36:06.549Z'), field7: parseFloat('3.14'), }, }; const apple: GraphQLJsonFieldType = { name: 'apple', type: 'String', nullable: true, isArray: false, }; const fruitJson: GraphQLJsonFieldType = { name: 'fruit', type: 'Json', jsonInterface: {name: 'Fruit', fields: [apple]}, isArray: false, nullable: true, }; const meatJson: GraphQLJsonFieldType = { name: 'meat', type: 'Int', nullable: true, isArray: false, }; const models = [ { name: 'StarterEntity', fields: [ { name: 'id', type: 'ID', isArray: false, nullable: false, isEnum: false, }, { name: 'field1', type: 'Int', isArray: false, nullable: false, isEnum: false, }, { name: 'field2', type: 'String', isArray: false, nullable: true, isEnum: false, }, { name: 'field3', type: 'BigInt', isArray: false, nullable: true, isEnum: false, }, { name: 'field4', type: 'Date', isArray: false, nullable: true, isEnum: false, }, { name: 'field5', type: 'Boolean', isArray: false, nullable: true, isEnum: false, }, { name: 'field6', type: 'Json', jsonInterface: {name: 'Food', fields: [meatJson, fruitJson]}, isArray: false, nullable: true, isEnum: false, }, { name: 'field7', type: 'Float', isArray: false, nullable: true, isEnum: false, }, { type: 'TestEnum', description: 'Field description', isEnum: true, isArray: false, nullable: false, name: 'field8', }, ], indexes: [], }, { name: 'IndexEra', fields: [ { name: 'id', type: 'ID', isArray: false, nullable: false, isEnum: false, }, { name: 'field1', type: 'Int', isArray: false, nullable: false, isEnum: false, }, ], indexes: [], }, ]; describe('StoreOperations', () => { it('single leaf, expect merkleRoot to be hashed', () => { const operationStack = new StoreOperations(models); for (const o of testOperations2) { operationStack.put(o.operation, o.entityType, o.data); } operationStack.makeOperationMerkleTree(); expect(operationStack.getOperationLeafCount()).toBe(1); const mRoot = operationStack.getOperationMerkleRoot(); // To be hashed and 32 bytes long expect(mRoot?.length).toBe(32); console.log(`Root in hex: ${u8aToHex(mRoot)}`); operationStack.reset(); expect(operationStack.getOperationLeafCount()).toBe(0); }); it('put operation into the merkel leaf, and generate Merkle Root, also able to reset', () => { const operationStack = new StoreOperations(models); for (const o of testOperations) { operationStack.put(o.operation, o.entityType, o.data); } operationStack.makeOperationMerkleTree(); expect(operationStack.getOperationLeafCount()).toBe(5); const mRoot = operationStack.getOperationMerkleRoot(); expect(mRoot?.length).toBe(32); console.log(`Root in hex: ${u8aToHex(mRoot)}`); operationStack.reset(); expect(operationStack.getOperationLeafCount()).toBe(0); }); it('throw error when remove data is not string type', () => { const operationStack = new StoreOperations(models); expect(() => operationStack.put(falseOperation.operation, falseOperation.entityType, falseOperation.data)).toThrow( `Remove operation only accept data in string type` ); }); it('could generate operation hash with negative value', () => { const operationStack = new StoreOperations(models); for (const o of testOperations3) { operationStack.put(o.operation, o.entityType, o.data); } expect(() => operationStack.makeOperationMerkleTree()).not.toThrow(); }); describe('arrays', () => { // There was no explicit support for arrays, and most data types converted to bytes without issue if they were arrays. // BigInt, Bytes and Date were a problem so there is a specific case for that. it('retains support for arrays as a single value', () => { const models: GraphQLModelsType[] = [ { name: 'DelegationEntity', fields: [ { name: 'id', type: 'ID', isArray: false, nullable: false, isEnum: false, }, { name: 'delegatorAddress', type: 'String', isArray: true, nullable: false, isEnum: false, }, ], indexes: [], }, ]; const operationStack = new StoreOperations(models); const data = { id: 'Test', delegatorAddress: ['0x2fd781561631df6Ae95B8f590b38ea8f1267d690', '0xCcFC53103Dc0D227abc190a678afe969f38c14e0'], }; operationStack.put(OperationType.Set, 'DelegationEntity', data); operationStack.makeOperationMerkleTree(); expect(operationStack.getOperationLeafCount()).toBe(1); const mRoot = operationStack.getOperationMerkleRoot(); expect(Buffer.from(mRoot!).toString('hex')).toEqual( '25f69c94b779ed53fb6acafb0360148fc3e57944d965d0a2c1f3296747a9646f' ); }); it('Can generate an operation hash all types as an array', () => { const models: GraphQLModelsType[] = [ { name: 'DelegationEntity', fields: [ { name: 'id', type: 'ID', isArray: false, nullable: false, isEnum: false, }, { name: 'bigIntArray', type: 'BigInt', isArray: true, nullable: false, isEnum: false, }, { name: 'booleanArray', type: 'Boolean', isArray: true, nullable: false, isEnum: false, }, { name: 'bytesArray', type: 'Bytes', isArray: true, nullable: false, isEnum: false, }, { name: 'dateArray', type: 'Date', isArray: true, nullable: false, isEnum: false, }, { name: 'floatArray', type: 'Float', isArray: true, nullable: false, isEnum: false, }, { name: 'intArray', type: 'Int', isArray: true, nullable: false, isEnum: false, }, { name: 'jsonArray', type: 'Json', isArray: true, nullable: false, isEnum: false, }, { name: 'stringArray', type: 'String', isArray: true, nullable: false, isEnum: false, }, ], indexes: [], }, ]; const operationStack = new StoreOperations(models); const data = { id: 'Test', bigIntArray: [200000000000000000000000n, 1000000000000000000000n], booleanArray: [true, false], bytesArray: [Buffer.from('hello'), Buffer.from('world')], dateArray: [new Date('2020-05-29T13:28:36.000Z'), new Date('2021-05-29T13:28:36.000Z')], floatArray: [3.14, 2.71], intArray: [42, 69], jsonArray: [{foo: 'bar'}, {baz: 123}], stringArray: ['Hello', 'World'], }; operationStack.put(OperationType.Set, 'DelegationEntity', data); operationStack.makeOperationMerkleTree(); expect(operationStack.getOperationLeafCount()).toBe(1); const mRoot = operationStack.getOperationMerkleRoot(); expect(Buffer.from(mRoot!).toString('hex')).toEqual( '348f203090055906afd4c2d8ac470a2403537bd4c5e3fdc67ce8a6b6b5eda414' ); }); }); }); ================================================ FILE: packages/node-core/src/indexer/StoreOperations.test.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import assert from 'assert'; import {Entity, FunctionPropertyNames, Store} from '@subql/types-core'; import {GraphQLModelsType, u8aToHex} from '@subql/utils'; import {Sequelize} from '@subql/x-sequelize'; import {CachedModel, DbOption, handledStringify, modelsTypeToModelAttributes, NodeConfig} from '../'; import {EntityClass} from './store/entity'; import {StoreOperations} from './StoreOperations'; import {OperationType} from './types'; interface TestJson { testItem: string; amount?: bigint; } interface DelegationFrom { delegator: string; amount?: bigint; nested?: TestJson; } // eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents type EraProps = Omit> | '_name'>; class EraEntity implements Entity { constructor(id: string, startTime: Date) { this.id = id; this.startTime = startTime; } id: string; startTime: Date; endTime?: Date; forceNext?: boolean; createdBlock?: number; lastEvent?: string; delegators?: DelegationFrom[]; static create(record: EraProps): EraEntity { assert(typeof record.id === 'string', 'id must be provided'); const entity = new this(record.id, record.startTime); Object.assign(entity, record); return entity; } } const models: GraphQLModelsType[] = [ { name: 'EraEntity', fields: [ { name: 'id', type: 'ID', isArray: false, nullable: false, isEnum: false, }, { name: 'startTime', type: 'Date', isArray: false, nullable: false, isEnum: false, }, { name: 'endTime', type: 'Date', isArray: false, nullable: true, isEnum: false, }, { name: 'forceNext', type: 'Boolean', isArray: false, nullable: true, isEnum: false, }, { name: 'createdBlock', type: 'Int', isArray: false, nullable: true, isEnum: false, }, { name: 'lastEvent', type: 'String', isArray: false, nullable: true, isEnum: false, }, { name: 'delegators', type: 'Json', nullable: true, jsonInterface: { name: 'DelegationFrom', fields: [ {name: 'delegator', type: 'String', isArray: false, nullable: false}, {name: 'amount', type: 'BigInt', isArray: false, nullable: true}, { name: 'nested', type: 'Json', isArray: false, nullable: false, jsonInterface: { name: 'TestJson', fields: [ {name: 'testItem', type: 'String', isArray: false, nullable: false}, {name: 'amount', type: 'BigInt', isArray: false, nullable: true}, ], }, }, ], }, isEnum: false, isArray: true, }, ], indexes: [], }, ]; const option: DbOption = { host: process.env.DB_HOST ?? '127.0.0.1', port: process.env.DB_PORT ? Number(process.env.DB_PORT) : 5432, username: process.env.DB_USER ?? 'postgres', password: process.env.DB_PASS ?? 'postgres', database: process.env.DB_DATABASE ?? 'postgres', timezone: 'utc', }; jest.setTimeout(50_000); describe('StoreOperations with db', () => { let sequelize: Sequelize; let schema: string; let model: any; let cacheModel: CachedModel; const flush = async (blockHeight: number) => { const tx = await sequelize.transaction(); await cacheModel.flush(tx, blockHeight); await tx.commit(); }; beforeAll(async () => { process.env.TZ = 'UTC'; sequelize = new Sequelize( `postgresql://${option.username}:${option.password}@${option.host}:${option.port}/${option.database}`, option ); await sequelize.authenticate(); schema = '"storeOp-test-1"'; await sequelize.createSchema(schema, {}); const modelAttributes = modelsTypeToModelAttributes(models[0], new Map(), schema); const modelFactory = sequelize.define('eraEntity', modelAttributes, {timestamps: false, schema: schema}); model = await modelFactory.sync().catch((e) => { console.log('error', e); throw e; }); let i = 0; cacheModel = new CachedModel(model, false, new NodeConfig({} as any), () => i++); }); afterAll(async () => { await sequelize.dropSchema(schema, {logging: false}); await sequelize.close(); }); // If this test failed, please check environment variables TZ is set to UTC it('Timestamp, check operation stack consistency with data fetched from db and cache', async () => { const operationStackDb = new StoreOperations(models); const operationStackCache = new StoreOperations(models); cacheModel.set( `0x01`, { id: `0x01`, startTime: new Date('2024-02-14T02:38:51.000Z'), forceNext: false, createdBlock: 10544492, }, 1 ); await flush(2); const rawDb = (await cacheModel.model.findOne({where: {id: '0x01'}}))?.toJSON(); const rawCache = await (cacheModel as any).getCache.get('0x01'); const entityDb = EntityClass.create('EraEntity', rawDb, {} as Store); expect(entityDb).toBeDefined(); if (entityDb) { // Mock set end time entityDb.endTime = new Date('2024-02-24T02:38:51.000Z'); console.log(`db data: ${handledStringify(entityDb)}`); operationStackDb.put(OperationType.Set, 'EraEntity', entityDb); } const entityCache = EntityClass.create('EraEntity', rawCache, {} as Store); expect(entityCache).toBeDefined(); if (entityCache) { // Mock set end time entityCache.endTime = new Date('2024-02-24T02:38:51.000Z'); console.log(`cache data: ${handledStringify(entityCache)}`); operationStackCache.put(OperationType.Set, 'EraEntity', entityCache); } operationStackDb.makeOperationMerkleTree(); expect(operationStackDb.getOperationLeafCount()).toBe(1); const mRootDb = operationStackDb.getOperationMerkleRoot(); operationStackCache.makeOperationMerkleTree(); expect(operationStackCache.getOperationLeafCount()).toBe(1); const mRootCache = operationStackCache.getOperationMerkleRoot(); expect(entityCache?.delegators).toBeUndefined(); expect(entityDb?.delegators).toBe(null); console.log(`Db mmr Root in hex: ${u8aToHex(mRootDb)}`); console.log(`Cache mmr Root in hex: ${u8aToHex(mRootCache)}`); expect(mRootDb).toEqual(mRootCache); }); it('JSONB array, check operation stack consistency with data fetched from db and cache', async () => { const operationStackDb = new StoreOperations(models); const operationStackCache = new StoreOperations(models); cacheModel.set( `0x03`, { id: `0x03`, startTime: new Date('2024-02-14T02:38:51.000Z'), forceNext: false, createdBlock: 10544492, delegators: [ { delegator: '0x05', amount: BigInt(8000000000000000000000n), nested: {testItem: 'test', amount: undefined}, }, { delegator: '0x06', amount: undefined, nested: {testItem: 'test', amount: BigInt(1000000000000000000000n)}, }, ], }, 1 ); await flush(2); const rawDb = (await cacheModel.model.findOne({where: {id: '0x03'}}))?.toJSON(); const rawCache = await (cacheModel as any).getCache.get('0x03'); const entityDb = EntityClass.create('EraEntity', rawDb, {} as Store); expect(entityDb).toBeDefined(); if (entityDb) { entityDb.delegators?.push({ delegator: '0x07', amount: undefined, nested: {testItem: 'test', amount: BigInt(3000000000000000000000n)}, }); console.log(`db data: ${handledStringify(entityDb)}`); operationStackDb.put(OperationType.Set, 'EraEntity', entityDb); } const entityCache = EntityClass.create('EraEntity', rawCache, {} as Store); expect(entityCache).toBeDefined(); if (entityCache) { entityCache.delegators?.push({ delegator: '0x07', amount: undefined, nested: {testItem: 'test', amount: BigInt(3000000000000000000000n)}, }); console.log(`cache data: ${handledStringify(entityCache)}`); operationStackCache.put(OperationType.Set, 'EraEntity', entityCache); } operationStackDb.makeOperationMerkleTree(); expect(operationStackDb.getOperationLeafCount()).toBe(1); const mRootDb = operationStackDb.getOperationMerkleRoot(); operationStackCache.makeOperationMerkleTree(); expect(operationStackCache.getOperationLeafCount()).toBe(1); const mRootCache = operationStackCache.getOperationMerkleRoot(); console.log(`Db mmr Root in hex: ${u8aToHex(mRootDb)}`); console.log(`Cache mmr Root in hex: ${u8aToHex(mRootCache)}`); expect(mRootDb).toEqual(mRootCache); }); }); ================================================ FILE: packages/node-core/src/indexer/StoreOperations.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import {Entity} from '@subql/types-core'; import {getTypeByScalarName, GraphQLModelsType, u8aConcat, u8aToBuffer, isString} from '@subql/utils'; import MerkleTools from 'merkle-tools'; import {monitorWrite} from '../process'; import {OperationEntity, OperationType} from './types'; export class StoreOperations { private merkleTools: MerkleTools; constructor(private models: GraphQLModelsType[]) { this.merkleTools = new MerkleTools({ hashType: 'sha256', }); } private operationEntityToUint8Array(operation: OperationEntity): Uint8Array { const dataBufferArray: Uint8Array[] = []; if (operation.operation === OperationType.Remove) { //remove case if (isString(operation.data)) { dataBufferArray.push(Buffer.from(operation.data)); } else { throw new Error(`Remove operation only accept data in string type`); } } else { const operationModel = this.models.find(({name}) => name === operation.entityType); if (!operationModel) { throw new Error(`Unable to find model with name ${operation.entityType}`); } for (const field of operationModel.fields) { const fieldValue = (operation.data as Entity & Record)[field.name]; dataBufferArray.push(Buffer.from(field.name)); if (fieldValue !== undefined && fieldValue !== null) { const type = field.isEnum ? getTypeByScalarName('String') : getTypeByScalarName(field.type); if (!type) { throw new Error('Unable to get type by scalar name'); } // This should be done for all types when we have an array, but for backwards compatibility this is only for BigInt, Date and Bytes as using an array would throw an error. if (field.isArray && ['BigInt', 'Bytes', 'Date'].includes(type.name)) { for (const item of fieldValue as Array) { dataBufferArray.push(type.hashCode(item)); } } else { dataBufferArray.push(type.hashCode(fieldValue)); } } } } return u8aConcat(Buffer.from(operation.operation), Buffer.from(operation.entityType), ...dataBufferArray); } put(operation: OperationType, entity: string, data: Entity | string): void { const operationEntity: OperationEntity = { operation: operation, entityType: entity, data: data, }; // skip full data, should write in higher level monitorWrite( `-- [POI][StoreOperations][put] ${operation} entity ${entity}, data/id: ${ typeof data === 'string' ? data : data.id }` ); this.merkleTools.addLeaf(u8aToBuffer(this.operationEntityToUint8Array(operationEntity)), true); } reset(): void { // Bad types (this.merkleTools as any).resetTree(); } makeOperationMerkleTree(): void { this.merkleTools.makeTree(); } getOperationMerkleRoot(): Uint8Array | null { if (this.merkleTools.getTreeReadyState()) { return this.merkleTools.getMerkleRoot(); } else { throw new Error(`Failed to get Merkle root from operations, tree is not built yet`); } } getOperationLeafCount(): any { return this.merkleTools.getLeafCount(); } } ================================================ FILE: packages/node-core/src/indexer/benchmark.service.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import {Injectable} from '@nestjs/common'; import {OnEvent} from '@nestjs/event-emitter'; import {SchedulerRegistry} from '@nestjs/schedule'; import dayjs from 'dayjs'; import duration from 'dayjs/plugin/duration'; import {NodeConfig} from '../configure'; import {IndexerEvent, PoiEvent, ProcessBlockPayload, ProcessedBlockCountPayload, TargetBlockPayload} from '../events'; import {getLogger} from '../logger'; import {delay} from '../utils/promise'; const SAMPLING_TIME_VARIANCE = 15; const logger = getLogger('benchmark'); dayjs.extend(duration); @Injectable() abstract class BaseBenchmarkService { protected currentProcessingHeight?: number; protected currentProcessingTimestamp?: number; protected targetHeight?: number; protected currentProcessedBlockAmount?: number; private lastRegisteredHeight?: number; private lastRegisteredTimestamp?: number; private blockPerSecond?: number; private lastProcessedBlockAmount?: number; protected constructor( private nodeConfig: NodeConfig, readonly schedulerRegistry: SchedulerRegistry, private eventName: string, private unitName: string ) {} setupInterval(intervalName: string) { if (this.schedulerRegistry.doesExist('interval', intervalName)) { return; } this.schedulerRegistry.addInterval( intervalName, setInterval( () => void this.benchMarking(), SAMPLING_TIME_VARIANCE * 1000 // Convert to miliseconds ) ); } private async benchMarking(): Promise { if (!this.currentProcessingHeight || !this.currentProcessingTimestamp) { await delay(10); } else { if (this.lastRegisteredHeight && this.lastRegisteredTimestamp) { const heightDiff = this.currentProcessingHeight - this.lastRegisteredHeight; const timeDiff = this.currentProcessingTimestamp - this.lastRegisteredTimestamp; this.blockPerSecond = heightDiff === 0 || timeDiff === 0 ? 0 : heightDiff / (timeDiff / 1000); if (!this.targetHeight) { logger.debug(`${this.eventName}: Target height is not defined, not logging benchmark`); } else { const blockDuration = dayjs.duration( (this.targetHeight - this.currentProcessingHeight) / this.blockPerSecond, 'seconds' ); const hoursMinsStr = blockDuration.format('HH [hours] mm [mins]'); const days = Math.floor(blockDuration.asDays()); const durationStr = `${days} days ${hoursMinsStr}`; // Poi will ignore this by default, as poi doesn't record processedCount if (this.nodeConfig.profiler && this.currentProcessedBlockAmount && this.lastProcessedBlockAmount) { logger.info( `${this.eventName}: Processed ${this.currentProcessedBlockAmount - this.lastProcessedBlockAmount} ${ this.unitName } in the last ${SAMPLING_TIME_VARIANCE}secs ` ); } logger.info( `${this.eventName}: ${ this.targetHeight === this.lastRegisteredHeight && this.blockPerSecond === 0 ? `Fully synced, waiting for new ${this.unitName}` : `${this.blockPerSecond.toFixed(2)} ${ this.unitName }/s. Target height: ${this.targetHeight.toLocaleString()}. Current height: ${this.currentProcessingHeight.toLocaleString()}. Estimated time remaining: ${ this.blockPerSecond === 0 ? 'unknown' : durationStr }` }` ); } } this.lastRegisteredHeight = this.currentProcessingHeight; this.lastRegisteredTimestamp = this.currentProcessingTimestamp; this.lastProcessedBlockAmount = this.currentProcessedBlockAmount; } } } @Injectable() export class PoiBenchmarkService extends BaseBenchmarkService { constructor(nodeConfig: NodeConfig, schedulerRegistry: SchedulerRegistry) { super(nodeConfig, schedulerRegistry, 'POI', 'poi blocks'); if (nodeConfig.proofOfIndex) { this.setupInterval('poiBenchmarking'); } } @OnEvent(PoiEvent.LatestSyncedPoi) handleLatestSyncedPoi(blockPayload: ProcessBlockPayload): void { this.currentProcessingHeight = blockPayload.height; this.currentProcessingTimestamp = blockPayload.timestamp; } @OnEvent(PoiEvent.PoiTarget) handlePoiTarget(blockPayload: ProcessBlockPayload): void { this.targetHeight = blockPayload.height; this.currentProcessingTimestamp = blockPayload.timestamp; } } @Injectable() export class IndexingBenchmarkService extends BaseBenchmarkService { constructor(nodeConfig: NodeConfig, schedulerRegistry: SchedulerRegistry) { super(nodeConfig, schedulerRegistry, 'INDEXING', 'blocks'); this.setupInterval('indexBenchmarking'); } @OnEvent(IndexerEvent.BlockProcessing) handleProcessingBlock(blockPayload: ProcessBlockPayload): void { this.currentProcessingHeight = blockPayload.height; this.currentProcessingTimestamp = blockPayload.timestamp; } @OnEvent(IndexerEvent.BlockProcessedCount) handleProcessedBlock(blockPayload: ProcessedBlockCountPayload): void { this.currentProcessedBlockAmount = blockPayload.processedBlockCount; this.currentProcessingTimestamp = blockPayload.timestamp; } @OnEvent(IndexerEvent.BlockTarget) handleTargetBlock(blockPayload: TargetBlockPayload): void { this.targetHeight = blockPayload.height; } } ================================================ FILE: packages/node-core/src/indexer/blockDispatcher/base-block-dispatcher.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import assert from 'assert'; import {EventEmitter2, OnEvent} from '@nestjs/event-emitter'; import {ICoreBlockchainService} from '@subql/node-core/blockchain.service'; import {hexToU8a, u8aEq} from '@subql/utils'; import {Transaction} from '@subql/x-sequelize'; import {NodeConfig, IProjectUpgradeService} from '../../configure'; import {AdminEvent, IndexerEvent, PoiEvent, TargetBlockPayload} from '../../events'; import {getLogger} from '../../logger'; import {exitWithError, monitorCreateBlockFork, monitorCreateBlockStart, monitorWrite} from '../../process'; import {AutoQueue, IQueue, isTaskFlushedError, mainThreadOnly} from '../../utils'; import {MultiChainRewindService} from '../multiChainRewind.service'; import {PoiBlock, PoiSyncService} from '../poi'; import {StoreService} from '../store.service'; import {IStoreModelProvider, StoreCacheService} from '../storeModelProvider'; import {IPoi} from '../storeModelProvider/poi'; import {Header, IBlock, IProjectService, ISubqueryProject} from '../types'; import {isBlockUnavailableError} from '../worker'; const logger = getLogger('BaseBlockDispatcherService'); export type ProcessBlockResponse = { dynamicDsCreated: boolean; reindexBlockHeader: Header | null; }; export interface IBlockDispatcher { init(onDynamicDsCreated: (height: number) => void): Promise; // now within enqueueBlock should handle getLatestBufferHeight enqueueBlocks(heights: (IBlock | number)[], latestBufferHeight: number): void | Promise; queueSize: number; freeSize: number; latestBufferedHeight: number; batchSize: number; setLatestProcessedHeight(height: number): void; // Remove all enqueued blocks, used when a dynamic ds is created flushQueue(height: number): void; } const NULL_MERKEL_ROOT = hexToU8a('0x00'); function isNullMerkelRoot(operationHash: Uint8Array): boolean { return u8aEq(operationHash, NULL_MERKEL_ROOT); } export abstract class BaseBlockDispatcher implements IBlockDispatcher { protected _latestBufferedHeight = 0; protected _processedBlockCount = 0; protected _latestProcessedHeight = 0; protected currentProcessingHeight = 0; private _onDynamicDsCreated?: (height: number) => void; private _pendingRewindHeader?: Header; protected isShutdown = false; /* The height at which a block fetch failure first ocurrs, ensuring that we don't process any blocks after this */ protected fetchFailureHeight?: number; constructor( protected nodeConfig: NodeConfig, protected eventEmitter: EventEmitter2, private project: ISubqueryProject, protected projectService: IProjectService, private projectUpgradeService: IProjectUpgradeService, protected queue: Q, protected storeService: StoreService, private storeModelProvider: IStoreModelProvider, private poiSyncService: PoiSyncService, private blockChainService: ICoreBlockchainService, private multiChainRewindService: MultiChainRewindService ) {} abstract enqueueBlocks(heights: (IBlock | number)[], latestBufferHeight?: number): void | Promise; async init(onDynamicDsCreated: (height: number) => void): Promise { this._onDynamicDsCreated = onDynamicDsCreated; // eslint-disable-next-line @typescript-eslint/no-non-null-assertion this.setProcessedBlockCount((await this.storeModelProvider.metadata.find('processedBlockCount', 0))!); } get queueSize(): number { return this.queue.size; } get freeSize(): number { assert(this.queue.freeSpace !== undefined, 'Queues for base block dispatcher must have a capacity set'); return this.queue.freeSpace; } get batchSize(): number { return this.nodeConfig.batchSize; } get latestProcessedHeight(): number { return this._latestProcessedHeight; } setLatestProcessedHeight(height: number): void { this._latestProcessedHeight = height; } protected get onDynamicDsCreated(): (height: number) => void { if (!this._onDynamicDsCreated) { throw new Error('BaseBlockDispatcher has not been initialized'); } return this._onDynamicDsCreated; } get latestBufferedHeight(): number { return this._latestBufferedHeight; } set latestBufferedHeight(height: number) { this.eventEmitter.emit(IndexerEvent.BlocknumberQueueSize, { value: this.queueSize, }); this._latestBufferedHeight = height; } protected setProcessedBlockCount(processedBlockCount: number): void { this._processedBlockCount = processedBlockCount; this.eventEmitter.emit(IndexerEvent.BlockProcessedCount, { processedBlockCount, timestamp: Date.now(), }); } /** * rewind() is called from this.postProcessBlock(), * it handles runtime status like compare it with current indexing number, if last corrected is already indexed * then dispatch to projectService.reindex() * not likely happen but if rewind to future block, flush queue only * @param lastCorrectHeight */ @mainThreadOnly() protected async rewind(lastCorrectHeader: Header): Promise { if (lastCorrectHeader.blockHeight <= this.currentProcessingHeight) { logger.info(`Found last verified block at height ${lastCorrectHeader.blockHeight}, rewinding...`); await this.projectService.reindex(lastCorrectHeader); this.setLatestProcessedHeight(lastCorrectHeader.blockHeight); logger.info(`Successful rewind to block ${lastCorrectHeader.blockHeight}!`); } this.flushQueue(lastCorrectHeader.blockHeight); logger.info(`Queued blocks flushed!`); //Also last buffered height reset, next fetching should start after lastCorrectHeight } flushQueue(height: number): void { logger.info(`Queue flushed, height="${height}"`); this.latestBufferedHeight = height; this.queue.flush(); } // Is called directly before a block is processed @mainThreadOnly() protected async preProcessBlock(header: Header): Promise { const {blockHeight} = header; monitorCreateBlockStart(blockHeight); await this.storeService.setBlockHeader(header); await this.projectUpgradeService.setCurrentHeight(blockHeight); this.currentProcessingHeight = blockHeight; this.eventEmitter.emit(IndexerEvent.BlockProcessing, { height: blockHeight, timestamp: Date.now(), }); } // Is called directly after a block is processed @mainThreadOnly() protected async postProcessBlock(header: Header, processBlockResponse: ProcessBlockResponse): Promise { const {blockHash, blockHeight: height} = header; const {dynamicDsCreated, reindexBlockHeader: processReindexBlockHeader} = processBlockResponse; // Rewind height received from admin api have higher priority than processed reindexBlockHeight const reindexBlockHeader = this._pendingRewindHeader ?? this.multiChainRewindService.waitRewindHeader ?? processReindexBlockHeader; monitorWrite(`Finished block ${height}`); if (reindexBlockHeader !== null && reindexBlockHeader !== undefined) { try { // End transaction await this.storeModelProvider.applyPendingChanges( height, !this.projectService.hasDataSourcesAfterHeight(height), this.storeService.transaction ); if (this.nodeConfig.proofOfIndex) { await this.poiSyncService.stopSync(); this.poiSyncService.clear(); monitorWrite(`poiSyncService stopped, cache cleared`); } monitorCreateBlockFork(reindexBlockHeader.blockHeight); this.resetPendingRewindHeader(); await this.rewind(reindexBlockHeader); // Bring poi sync service back to sync again. if (this.nodeConfig.proofOfIndex) { void this.poiSyncService.syncPoi(); } this.eventEmitter.emit(IndexerEvent.RewindSuccess, {success: true, height: reindexBlockHeader.blockHeight}); return; } catch (e: any) { this.eventEmitter.emit(IndexerEvent.RewindFailure, {success: false, message: e.message}); monitorWrite(`***** Rewind failed: ${e.message}`); throw e; } } else { await this.updateStoreMetadata(height, header.timestamp, undefined, this.storeService.transaction); const operationHash = this.storeService.getOperationMerkleRoot(); await this.createPOI(height, blockHash, operationHash, this.storeService.transaction); if (dynamicDsCreated) { this.onDynamicDsCreated(height); } assert( !this.latestProcessedHeight || height > this.latestProcessedHeight, `Block processed out of order. Height: ${height}. Latest: ${this.latestProcessedHeight}` ); // In memory _processedBlockCount increase, db metadata increase BlockCount in indexer.manager this.setProcessedBlockCount(this._processedBlockCount + 1); this.setLatestProcessedHeight(height); } await this.storeModelProvider.applyPendingChanges( height, !this.projectService.hasDataSourcesAfterHeight(height), this.storeService.transaction ); } @OnEvent(AdminEvent.rewindTarget) async handleAdminRewind(blockPayload: TargetBlockPayload): Promise { if (this.currentProcessingHeight < blockPayload.height) { // this will throw back to admin controller, will NOT lead current indexing exit throw new Error( `Current processing block ${this.currentProcessingHeight}, can not rewind to future block ${blockPayload.height}` ); } // TODO can this work without this._pendingRewindHeader = await this.blockChainService.getHeaderForHeight(blockPayload.height); const message = `Received admin command to rewind to block ${blockPayload.height}`; monitorWrite(`***** [ADMIN] ${message}`); logger.warn(message); } private resetPendingRewindHeader(): void { this._pendingRewindHeader = undefined; } /** * Process a block with any pre and post processing as well as a check to discard the block. * */ private async processBlockTask( data: T, getHeader: (data: T) => Header, discardBlock: (header: Header) => boolean, processBlock: (data: T) => Promise ): Promise { const header = getHeader(data); try { if (discardBlock(header)) { logger.debug(`Queue was reset for new DS, discarding fetched blocks`); return; } await this.preProcessBlock(header); const processBlockResponse = await processBlock(data); await this.postProcessBlock(header, processBlockResponse); } catch (e: any) { // TODO discard any cache changes from this block height if (this.isShutdown) { return; } logger.error( e, `Failed to index block at height ${header.blockHeight} ${e.handler ? `${e.handler}(${e.stack ?? ''})` : ''}` ); throw e; } } /** * Pipes a pending block to be processed. * This includes error handling and will facilitate shutdown. * If a block fails to fetch then and existing blocks that need to be fetched are processed before exiting. * */ protected async pipeBlock(options: { /** * A promise that resolves once the block is fetched. * */ fetchTask: Promise; /** * A function that triggers the block to be indexed. * */ processBlock: (input: T) => Promise; /** * Used to determine if a fetched block should be discarded and not processed. This happens with rewinds * */ discardBlock: (header: Header) => boolean; /** * The queue used to process blocks * */ processQueue: AutoQueue; /** * A function to abort fetching any other blokcs. This is called when there is an error with the fetch task */ abortFetching: () => Promise | void; getHeader: (input: T) => Header; height: number; }): Promise { return options.fetchTask .catch(async (e) => { // Failed to fetch block if (isTaskFlushedError(e)) { return; } if (isBlockUnavailableError(e)) { return; } // Block fetching has failed, start shutting down things. But we can wait until the ramining fetched blocks can be processed console.error('ERROR', e); logger.error(`Failed to fetch block, waiting for fetched blocks to be processed before shutting down.`, e); if (!this.isShutdown) { this.isShutdown = true; this.fetchFailureHeight = options.height; await options.abortFetching(); // this.fetchQueue.abort(); // Wait for any pending blocks to be processed await options.processQueue.onIdle(); // Ensure any pending changes are persisted if (this.storeModelProvider instanceof StoreCacheService) { await this.storeModelProvider.flushData(true); } exitWithError(new Error(`Failed to fetch block ${options.height}.`, {cause: e}), logger); } }) .then((data) => { // Don't add more data to index if theres a failure fetching an earlier block if (!data || (this.fetchFailureHeight && options.height > this.fetchFailureHeight)) { return; } return options.processQueue .put(() => this.processBlockTask(data, options.getHeader, options.discardBlock, options.processBlock)) .catch((e) => { if (isTaskFlushedError(e)) { // Do nothing, fetching the block was flushed, this could be caused by forked blocks or dynamic datasources return; } logger.error(e, `Failed to process block ${options.height}`); throw e; }); }) .catch((e: any) => { // Failed to process block exitWithError(new Error(`Failed to index block ${options.height}`, {cause: e}), logger); }); } /** * If index a block generate store operation, this will create a POI * and this createdPoi will be upsert into CachedPoi * @param height * @param blockHash * @param operationHash * @private */ private async createPOI( height: number, blockHash: string, operationHash: Uint8Array, tx?: Transaction ): Promise { if (!this.nodeConfig.proofOfIndex) { return; } if (isNullMerkelRoot(operationHash)) { return; } const poiBlock = PoiBlock.create(height, blockHash, operationHash, this.project.id); // This is the first creation of POI await this.poi.bulkUpsert([poiBlock], tx); await this.storeModelProvider.metadata.setBulk([{key: 'lastCreatedPoiHeight', value: height}], tx); this.eventEmitter.emit(PoiEvent.PoiTarget, { height, timestamp: Date.now(), }); } @mainThreadOnly() private async updateStoreMetadata( height: number, blockTimestamp?: Date, updateProcessed = true, tx?: Transaction ): Promise { const meta = this.storeModelProvider.metadata; // Update store metadata await meta.setBulk( [ {key: 'lastProcessedHeight', value: height}, {key: 'lastProcessedTimestamp', value: Date.now()}, ], tx ); // Db Metadata increase BlockCount, in memory ref to block-dispatcher _processedBlockCount if (updateProcessed) { await meta.setIncrement('processedBlockCount', undefined, tx); } if (blockTimestamp) { await meta.set('lastProcessedBlockTimestamp', blockTimestamp.getTime(), tx); } } private get poi(): IPoi { const poi = this.storeModelProvider.poi; if (!poi) { throw new Error('Poi service expected poi repo but it was not found'); } return poi; } } ================================================ FILE: packages/node-core/src/indexer/blockDispatcher/block-dispatcher.spec.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import {EventEmitter2} from '@nestjs/event-emitter'; import {delay} from '@subql/common'; import {isTaskFlushedError, TaskFlushedError} from '@subql/node-core/utils'; import {NodeConfig} from '../../configure'; import {exitWithError} from '../../process'; import {ConnectionPoolStateManager} from '../connectionPoolState.manager'; import {MultiChainRewindService} from '../multiChainRewind.service'; import {Header, IBlock} from '../types'; import {BaseWorkerService, BlockUnavailableError, IBaseIndexerWorker, WorkerStatusResponse} from '../worker'; import {IBlockDispatcher, ProcessBlockResponse} from './base-block-dispatcher'; import {BlockDispatcher} from './block-dispatcher'; import {WorkerBlockDispatcher} from './worker-block-dispatcher'; let failureBlocks: number[] = []; let indexBlockFunction: (block: IBlock) => Promise; let workerIdx = 0; const nodeConfig = new NodeConfig({batchSize: 10, workers: 2} as any); const defaultFetchBlocksFunction = async (height: number): Promise> => { await delay(0.1); if (failureBlocks.includes(height)) { await delay(0.3); throw new Error(`Failed to fetch block ${height}`); } return { block: height, getHeader: () => ({ blockHeight: height, blockHash: height.toString(), parentHash: (height - 1).toString(), timestamp: new Date(), }), }; }; let dynamicDsCreatedBlock: number[] = []; let fetchBlocksFunction = defaultFetchBlocksFunction; function resolveablePromise(): [Promise, () => void] { let resolve: () => void; const promise = new Promise((res) => { resolve = res; }); return [promise, resolve!]; } const projectService = { getDataSources: jest.fn(), hasDataSourcesAfterHeight: jest.fn(), reindex: jest.fn(), } as any; const projectUpgradeService = { setCurrentHeight: jest.fn(), } as any; const storeService = { setBlockHeader: jest.fn(), getOperationMerkleRoot: jest.fn(), transaction: null, getStore: jest.fn(), } as any; const storeModelProvider = { metadata: { find: jest.fn(), set: jest.fn(), setBulk: jest.fn(), setIncrement: jest.fn(), }, applyPendingChanges: jest.fn(), } as any; const blockchainService = { getBlockSize: jest.fn(), fetchBlocks: async ([blockNum]: number[]) => { const res = await fetchBlocksFunction(blockNum); return [res]; }, fetchBlockWorker: (worker: TestWorker, height: number) => worker.fetchBlock(height), } as any; const multichainRewindService = {waitRewindHeader: undefined} as MultiChainRewindService; class TestWorkerService extends BaseWorkerService { async fetchChainBlock(height: number): Promise> { return fetchBlocksFunction(height); } toBlockResponse(block: IBlock): Header { return { blockHeight: block.block, blockHash: block.block.toString(), parentHash: (block.block - 1).toString(), timestamp: new Date(), }; } async processFetchedBlock(block: IBlock): Promise { const res = await indexBlockFunction?.(block); if (res) { return res; } return { dynamicDsCreated: dynamicDsCreatedBlock.includes(block.block), reindexBlockHeader: null, }; } getBlockSize(block: IBlock): number { return 1; } } class TestWorker implements IBaseIndexerWorker { private threradId = workerIdx++; constructor(public workerService: TestWorkerService) {} async processBlock(height: number): Promise { return this.workerService.processBlock(height); } async fetchBlock(height: number): Promise

{ return this.workerService.fetchBlock(height, {}); } // eslint-disable-next-line @typescript-eslint/require-await async numFetchedBlocks(): Promise { return this.workerService.numFetchedBlocks; } // eslint-disable-next-line @typescript-eslint/require-await async numFetchingBlocks(): Promise { return this.workerService.numFetchingBlocks; } // eslint-disable-next-line @typescript-eslint/require-await async getStatus(): Promise { return { threadId: this.threradId + 1, isIndexing: this.workerService.isIndexing, fetchedBlocks: this.workerService.numFetchedBlocks, toFetchBlocks: this.workerService.numFetchingBlocks, }; } // eslint-disable-next-line @typescript-eslint/require-await async getMemoryLeft(): Promise { return 1; } // eslint-disable-next-line @typescript-eslint/require-await async abortFetching(): Promise { return this.workerService.abortFetching(); } terminate() { /* Do nothing*/ } } // Stop the application exiting jest.mock('../../process', () => ({ ...jest.requireActual('../../process'), exitWithError: jest.fn(), })); jest.mock('../../utils/queues/autoQueue', () => { const original = jest.requireActual('../../utils/queues/autoQueue'); return { ...original, isTaskFlushedError: jest.fn(original.isTaskFlushedError), }; }); jest.mock('../worker', () => ({ ...jest.requireActual('../worker'), createIndexerWorker: jest.fn(() => { const workerService = new TestWorkerService(projectService, projectUpgradeService, nodeConfig); return new TestWorker(workerService); }), })); describe.each<[string, () => IBlockDispatcher]>([ [ 'BlockDispatcher', (): IBlockDispatcher => { const indexerManager = { indexBlock: async (input: IBlock) => { const res = await indexBlockFunction(input); if (res) { return res; } return { dynamicDsCreated: dynamicDsCreatedBlock.includes(input.block), reindexBlockHeader: null, }; }, } as any; return new BlockDispatcher( nodeConfig, new EventEmitter2(), projectService, projectUpgradeService, storeService, storeModelProvider, {} as any, // PoiSyncService { id: 'id', } as any, // ISubqueryProject blockchainService, indexerManager, multichainRewindService ); }, ], [ 'WorkerBlockDispatcher', (): IBlockDispatcher => { return new WorkerBlockDispatcher( nodeConfig, new EventEmitter2(), projectService, projectUpgradeService, storeService, storeModelProvider, {getCache: jest.fn()} as any, // CacheService {} as any, // PoiSyncService {} as any, // DynamicDsService {} as any, // UnfinalizedBlockService new ConnectionPoolStateManager(() => { /* Do nothing */ }), { id: 'id', } as any, // ISubqueryProject blockchainService, multichainRewindService, '', // workerPath [] // workerFns ); }, ], ])('%s', (name, initDispatcher) => { let blockDispatcher: IBlockDispatcher; beforeEach(async () => { fetchBlocksFunction = defaultFetchBlocksFunction; failureBlocks = []; indexBlockFunction = jest.fn(); workerIdx = 0; blockDispatcher = initDispatcher(); await blockDispatcher.init(blockDispatcher.flushQueue.bind(blockDispatcher)); }); afterEach(async () => { dynamicDsCreatedBlock = []; if (blockDispatcher instanceof BlockDispatcher || blockDispatcher instanceof WorkerBlockDispatcher) { await blockDispatcher.onApplicationShutdown(); } }); it('should finish indexing fetched blocks before shutdown when fetching a block fails', async () => { const indexedBlocks: number[] = []; failureBlocks = [5]; indexBlockFunction = jest.fn(async (block: IBlock) => { await delay(0.4); indexedBlocks.push(block.block); }); await blockDispatcher.enqueueBlocks([1, 2, 3, 4, 5, 6, 7], 7); await delay(2); await blockDispatcher.enqueueBlocks([8, 9, 10], 10); expect(exitWithError).toHaveBeenCalled(); // Should index 4 blocks expect(indexBlockFunction).toHaveBeenCalledTimes(4); expect(indexedBlocks).toEqual([1, 2, 3, 4]); }); it('should finish indexing fetched blocks before shutdown when fetching multiple blocks fail', async () => { const indexedBlocks: number[] = []; failureBlocks = [5, 6, 7]; indexBlockFunction = jest.fn(async (block: IBlock) => { await delay(0.4); indexedBlocks.push(block.block); }); await blockDispatcher.enqueueBlocks([1, 2, 3, 4, 5, 6, 7], 7); await delay(2); await blockDispatcher.enqueueBlocks([8, 9, 10], 10); expect(exitWithError).toHaveBeenCalled(); // Should index 4 blocks expect(indexBlockFunction).toHaveBeenCalledTimes(4); expect(indexedBlocks).toEqual([1, 2, 3, 4]); }); it('should finish indexing fetched blocks before shutdown when an earlier block fails to fetch after a later block', async () => { const indexedBlocks: number[] = []; failureBlocks = [5]; fetchBlocksFunction = async (height: number): Promise> => { await delay(0.1); if (failureBlocks.includes(height)) { await delay(1); throw new Error(`Failed to fetch block ${height}`); } return { block: height, getHeader: () => ({ blockHeight: height, blockHash: height.toString(), parentHash: (height - 1).toString(), timestamp: new Date(), }), }; }; indexBlockFunction = jest.fn(async (block: IBlock) => { await delay(0.4); indexedBlocks.push(block.block); }); // Split over 2 calls to be sent do different workers. await blockDispatcher.enqueueBlocks([1, 2, 3, 4, 5], 5); await blockDispatcher.enqueueBlocks([6, 7, 8], 8); await delay(2); expect(exitWithError).toHaveBeenCalled(); // Should index 4 blocks expect(indexBlockFunction).toHaveBeenCalledTimes(4); expect(indexedBlocks).toEqual([1, 2, 3, 4]); }); // This simulates a rewind or a new dynamic datasource changing the blocks to index it('discards blocks from fetching if the latest buffered height reduces', async () => { const indexedBlocks: number[] = []; const [pendingBlock3, resolveBlock3] = resolveablePromise(); const [pendingBlock5, resolveBlock5] = resolveablePromise(); indexBlockFunction = jest.fn(async (block: IBlock) => { await delay(0.4); indexedBlocks.push(block.block); if (block.block === 3) { resolveBlock3(); } if (block.block === 5) { resolveBlock5(); } }); await blockDispatcher.enqueueBlocks([1, 3, 5, 7], 7); // Wait for some blocks to be indexed await pendingBlock3; // Update blocks, rewinding last processed height await blockDispatcher.enqueueBlocks([4, 5], 5); await pendingBlock5; expect(indexedBlocks).toEqual([1, 3, 4, 5]); }); it('correctly sets the free size', async () => { const [pendingBlock, resolveBlock] = resolveablePromise(); fetchBlocksFunction = async (height: number): Promise> => { await pendingBlock; return { block: height, getHeader: () => ({ blockHeight: height, blockHash: height.toString(), parentHash: (height - 1).toString(), timestamp: new Date(), }), }; }; // Startup should have free size expect(blockDispatcher.freeSize).toBeGreaterThan(0); const blocks = new Array(blockDispatcher.freeSize).fill(0).map((_, idx) => idx + 1); const lastBlock = blocks[blocks.length - 1]; await blockDispatcher.enqueueBlocks(blocks, lastBlock); // BlockDispatcher will take all the items from the queue and put them straight into the fetch queue. So the value doesn't change initially const expectedSize = blockDispatcher instanceof BlockDispatcher ? 30 : 0; expect(blockDispatcher.freeSize).toBe(expectedSize); // Trigger blocks being fetched resolveBlock(); }); it('handles a task flushed error', async () => { const indexedBlocks: number[] = []; fetchBlocksFunction = async (height: number): Promise> => { await delay(0.1); return { block: height, getHeader: () => ({ blockHeight: height, blockHash: height.toString(), parentHash: (height - 1).toString(), timestamp: new Date(), }), }; }; indexBlockFunction = jest.fn(async (block: IBlock) => { await delay(0.1); indexedBlocks.push(block.block); if (block.block === 2) { return { dynamicDsCreated: true, reindexBlockHeader: block.getHeader(), }; } }); // Split over 2 calls to be sent do different workers. await blockDispatcher.enqueueBlocks([1, 2, 3, 4, 5], 5); await blockDispatcher.enqueueBlocks([6, 7, 8], 8); await delay(2); // This should flush the blocks after the height where dynamicDs is created expect(indexBlockFunction).toHaveBeenCalledTimes(2); expect(indexedBlocks).toEqual([1, 2]); }); it('handles a block unavailable error', async () => { const indexedBlocks: number[] = []; const unavailableBlocks = [4]; fetchBlocksFunction = async (height: number): Promise> => { await delay(0.1); if (unavailableBlocks.includes(height)) { throw new BlockUnavailableError(`Block ${height} is unavailable`); } return { block: height, getHeader: () => ({ blockHeight: height, blockHash: height.toString(), parentHash: (height - 1).toString(), timestamp: new Date(), }), }; }; indexBlockFunction = jest.fn(async (block: IBlock) => { await delay(0.1); indexedBlocks.push(block.block); }); // Split over 2 calls to be sent do different workers. await blockDispatcher.enqueueBlocks([1, 2, 3, 4, 5], 5); await blockDispatcher.enqueueBlocks([6, 7, 8], 8); await delay(2); // This should flush the blocks after the height where dynamicDs is created expect(indexBlockFunction).toHaveBeenCalledTimes(7); expect(indexedBlocks).toEqual([1, 2, 3, 5, 6, 7, 8]); }); describe('postProcessBlock', () => { beforeEach(() => { jest.clearAllMocks(); }); it('should call storeModelProvider.applyPendingChanges with correct parameters during normal processing', async () => { // Arrange const header: Header = { blockHeight: 100, blockHash: '0xhash', parentHash: '0xparenthash', timestamp: new Date(), }; const processBlockResponse: ProcessBlockResponse = { dynamicDsCreated: false, reindexBlockHeader: null, }; // Act await (blockDispatcher as any).postProcessBlock(header, processBlockResponse); // Assert expect(storeModelProvider.applyPendingChanges).toHaveBeenCalledWith( header.blockHeight, true, // !projectService.hasDataSourcesAfterHeight(height) storeService.transaction ); }); it('should call applyPendingChanges correctly when handling a reindex', async () => { // Arrange const header: Header = { blockHeight: 100, blockHash: '0xhash', parentHash: '0xparenthash', timestamp: new Date(), }; const reindexBlockHeader: Header = { blockHeight: 90, blockHash: '0xoldhash', parentHash: '0xoldparenthash', timestamp: new Date(), }; const processBlockResponse: ProcessBlockResponse = { dynamicDsCreated: false, reindexBlockHeader, }; // Mock rewind method to avoid executing the full rewind logic (blockDispatcher as any).rewind = jest.fn().mockResolvedValue(undefined); // Act await (blockDispatcher as any).postProcessBlock(header, processBlockResponse); // Assert expect(storeModelProvider.applyPendingChanges).toHaveBeenCalledWith( header.blockHeight, true, // !projectService.hasDataSourcesAfterHeight(height) storeService.transaction ); }); it('should call applyPendingChanges correctly when a dynamic datasource is created', async () => { (blockDispatcher as any)._onDynamicDsCreated = jest.fn(); // Arrange const header: Header = { blockHeight: 100, blockHash: '0xhash', parentHash: '0xparenthash', timestamp: new Date(), }; const processBlockResponse: ProcessBlockResponse = { dynamicDsCreated: true, // Dynamic datasource was created reindexBlockHeader: null, }; // Act await (blockDispatcher as any).postProcessBlock(header, processBlockResponse); // Assert expect((blockDispatcher as any)._onDynamicDsCreated).toHaveBeenCalledWith(header.blockHeight); expect(storeModelProvider.applyPendingChanges).toHaveBeenCalledWith( header.blockHeight, true, storeService.transaction ); }); it('should call _onDynamicDsCreated when dynamic datasource is created', async () => { dynamicDsCreatedBlock = [7]; const onDynamicDsCreatedSpy = jest.spyOn(blockDispatcher as any, '_onDynamicDsCreated'); await blockDispatcher.enqueueBlocks([7], 7); await blockDispatcher.enqueueBlocks([8], 8); await delay(2); const queueName = blockDispatcher instanceof BlockDispatcher ? 'Process' : 'Fetch'; expect(onDynamicDsCreatedSpy).toHaveBeenCalledWith(7); expect(isTaskFlushedError).toHaveBeenCalledWith(new TaskFlushedError(queueName)); }); }); describe('Multi chain rewind', () => { beforeEach(() => { multichainRewindService.waitRewindHeader = { blockHeight: 10, blockHash: '0xhash', parentHash: '0xparenthash', timestamp: new Date(), }; jest.clearAllMocks(); }); afterAll(() => { multichainRewindService.waitRewindHeader = undefined; }); it('Data before the rollback height is reached can be written normally', async () => { await blockDispatcher.enqueueBlocks([7, 8, 9], 9); await delay(2); expect(projectService.reindex).toHaveBeenCalledTimes(0); await blockDispatcher.enqueueBlocks([10], 10); await delay(2); expect(projectService.reindex).toHaveBeenCalledWith(multichainRewindService.waitRewindHeader); }); }); }); ================================================ FILE: packages/node-core/src/indexer/blockDispatcher/block-dispatcher.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import {OnApplicationShutdown} from '@nestjs/common'; import {EventEmitter2} from '@nestjs/event-emitter'; import {Interval} from '@nestjs/schedule'; import {BaseDataSource} from '@subql/types-core'; import {IBlockchainService} from '../../blockchain.service'; import {NodeConfig} from '../../configure'; import {IProjectUpgradeService} from '../../configure/ProjectUpgrade.service'; import {IndexerEvent} from '../../events'; import {getBlockHeight, IBlock, MultiChainRewindService, PoiSyncService, StoreService} from '../../indexer'; import {getLogger} from '../../logger'; import {exitWithError, monitorWrite} from '../../process'; import {profilerWrap} from '../../profiler'; import {Queue, AutoQueue, RampQueue, delay} from '../../utils'; import {IStoreModelProvider} from '../storeModelProvider'; import {IIndexerManager, IProjectService, ISubqueryProject} from '../types'; import {BaseBlockDispatcher} from './base-block-dispatcher'; const logger = getLogger('BlockDispatcherService'); type BatchBlockFetcher = (heights: number[]) => Promise[]>; /** * @description Intended to behave the same as WorkerBlockDispatcherService but doesn't use worker threads or any parallel processing */ export class BlockDispatcher extends BaseBlockDispatcher | number>, DS, B> implements OnApplicationShutdown { private fetchQueue: AutoQueue>; private processQueue: AutoQueue; private fetchBlocksBatches: BatchBlockFetcher; private fetching = false; constructor( nodeConfig: NodeConfig, eventEmitter: EventEmitter2, projectService: IProjectService, projectUpgradeService: IProjectUpgradeService, storeService: StoreService, storeModelProvider: IStoreModelProvider, poiSyncService: PoiSyncService, project: ISubqueryProject, blockchainService: IBlockchainService, private indexerManager: IIndexerManager, multiChainRewindService: MultiChainRewindService ) { super( nodeConfig, eventEmitter, project, projectService, projectUpgradeService, new Queue(nodeConfig.batchSize * 3), storeService, storeModelProvider, poiSyncService, blockchainService, multiChainRewindService ); this.processQueue = new AutoQueue(nodeConfig.batchSize * 3, 1, nodeConfig.timeout, 'Process'); this.fetchQueue = new RampQueue( blockchainService.getBlockSize.bind(this), nodeConfig.batchSize, nodeConfig.batchSize * 3, nodeConfig.timeout, 'Fetch' ); if (this.nodeConfig.profiler) { this.fetchBlocksBatches = profilerWrap( blockchainService.fetchBlocks.bind(blockchainService), 'BlockDispatcher', 'fetchBlocksBatches' ); } else { this.fetchBlocksBatches = blockchainService.fetchBlocks.bind(blockchainService); } } onApplicationShutdown(): void { this.isShutdown = true; this.processQueue.abort(); this.fetchQueue.abort(); } enqueueBlocks(heights: (IBlock | number)[], latestBufferHeight: number): void { // In the case where factors of batchSize is equal to bypassBlock or when heights is [] // to ensure block is bypassed, we set the latestBufferHeight to the heights // make sure lastProcessedHeight in metadata is updated if (!heights.length) { heights = [latestBufferHeight]; } const startBlockHeight = getBlockHeight(heights[0]); const endBlockHeight = getBlockHeight(heights[heights.length - 1]); logger.info(`Enqueueing blocks ${startBlockHeight}...${endBlockHeight}, total ${heights.length} blocks`); this.queue.putMany(heights); this.latestBufferedHeight = latestBufferHeight; void this.fetchBlocksFromQueue(); } flushQueue(height: number): void { super.flushQueue(height); this.fetchQueue.flush(); this.processQueue.flush(); } @Interval(10000) queueStats(stat: 'size' | 'freeSpace' = 'freeSpace'): void { // NOTE: If the free space of the process queue is low it means that processing is the limiting factor. If it is large then fetching blocks is the limitng factor. logger.debug( `QUEUE INFO ${stat}: Block numbers: ${this.queue[stat]}, fetch: ${this.fetchQueue[stat]}, process: ${this.processQueue[stat]}` ); } private async fetchBlocksFromQueue(): Promise { if (this.fetching || this.isShutdown) return; this.fetching = true; try { while (!this.isShutdown) { // Wait for blocks or capacity in queues. There needs to be a check that the output of the fetch queue has capacity to go to the process queue // eslint-disable-next-line @typescript-eslint/no-non-null-assertion if (!this.queue.size || !this.fetchQueue.freeSpace! || this.fetchQueue.size >= this.processQueue.freeSpace!) { await delay(1); continue; } const blockOrNum = this.queue.take(); // This shouldn't happen but if it does it whould get caught above if (!blockOrNum) { continue; } // Used to compare before and after as a way to check if queue was flushed const bufferedHeight = this._latestBufferedHeight; const pendingBlock = this.fetchQueue.put(async () => { if (typeof blockOrNum !== 'number') { // Type is of block return blockOrNum; } const [block] = await this.fetchBlocksBatches([blockOrNum]); return block; }); void this.pipeBlock({ fetchTask: pendingBlock, processBlock: async (block: IBlock) => { monitorWrite(`Processing from main thread`); // Inject runtimeVersion here to enhance api.at preparation const processBlockResponse = await this.indexerManager.indexBlock( block, await this.projectService.getDataSources(block.getHeader().blockHeight) ); //set block to null for garbage collection (block as any) = null; return processBlockResponse; }, discardBlock: (header) => { // Check if the queues have been flushed between queue.takeMany and fetchBlocksBatches resolving // Peeking the queue is because the latestBufferedHeight could have regrown since fetching block const peeked = this.queue.peek(); return !!( bufferedHeight > this._latestBufferedHeight || (peeked && getBlockHeight(peeked) < header.blockHeight) ); }, processQueue: this.processQueue, abortFetching: this.fetchQueue.abort.bind(this.fetchQueue), getHeader: (block) => block.getHeader(), height: getBlockHeight(blockOrNum), }); this.eventEmitter.emit(IndexerEvent.BlockQueueSize, { value: this.processQueue.size, }); } } catch (e: any) { if (!this.isShutdown) { exitWithError(new Error(`Failed to process blocks from queue`, {cause: e}), logger); } } finally { this.fetching = false; } } } ================================================ FILE: packages/node-core/src/indexer/blockDispatcher/factory.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import {EventEmitter2} from '@nestjs/event-emitter'; import {BaseDataSource} from '@subql/types-core'; import {IApiConnectionSpecific} from '../../api.service'; import {IBlockchainService} from '../../blockchain.service'; import {IProjectUpgradeService, NodeConfig} from '../../configure'; import {ConnectionPoolStateManager} from '../connectionPoolState.manager'; import {DynamicDsService} from '../dynamic-ds.service'; import {InMemoryCacheService} from '../inMemoryCache.service'; import {MonitorService} from '../monitor.service'; import {MultiChainRewindService} from '../multiChainRewind.service'; import {PoiSyncService} from '../poi'; import {ProjectService} from '../project.service'; import {StoreService} from '../store.service'; import {IStoreModelProvider} from '../storeModelProvider'; import {IIndexerManager, ISubqueryProject} from '../types'; import {UnfinalizedBlocksService} from '../unfinalizedBlocks.service'; import {createIndexerWorker, IBaseIndexerWorker} from '../worker'; import {IBlockDispatcher} from './base-block-dispatcher'; import {BlockDispatcher} from './block-dispatcher'; import {WorkerBlockDispatcher} from './worker-block-dispatcher'; export const blockDispatcherFactory = ( workerPath: string, workerFns: Parameters>[1], workerData?: unknown ) => ( nodeConfig: NodeConfig, eventEmitter: EventEmitter2, projectService: ProjectService, projectUpgradeService: IProjectUpgradeService, cacheService: InMemoryCacheService, storeService: StoreService, storeModelProvider: IStoreModelProvider, poiSyncService: PoiSyncService, project: ISubqueryProject, dynamicDsService: DynamicDsService, unfinalizedBlocks: UnfinalizedBlocksService, connectionPoolState: ConnectionPoolStateManager, blockchainService: IBlockchainService, indexerManager: IIndexerManager, multiChainRewindService: MultiChainRewindService, monitorService?: MonitorService ): IBlockDispatcher => { return nodeConfig.workers ? new WorkerBlockDispatcher( nodeConfig, eventEmitter, projectService, projectUpgradeService, storeService, storeModelProvider, cacheService, poiSyncService, dynamicDsService, unfinalizedBlocks, connectionPoolState, project, blockchainService, multiChainRewindService, workerPath, workerFns, monitorService, workerData ) : new BlockDispatcher( nodeConfig, eventEmitter, projectService, projectUpgradeService, storeService, storeModelProvider, poiSyncService, project, blockchainService, indexerManager, multiChainRewindService ); }; ================================================ FILE: packages/node-core/src/indexer/blockDispatcher/index.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 export * from './base-block-dispatcher'; export * from './block-dispatcher'; export * from './worker-block-dispatcher'; export * from './factory'; ================================================ FILE: packages/node-core/src/indexer/blockDispatcher/worker-block-dispatcher.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import assert from 'assert'; import {Inject, Injectable, OnApplicationShutdown} from '@nestjs/common'; import {EventEmitter2} from '@nestjs/event-emitter'; import {Interval} from '@nestjs/schedule'; import {BaseDataSource} from '@subql/types-core'; import {last} from 'lodash'; import {IApiConnectionSpecific} from '../../api.service'; import {IBlockchainService} from '../../blockchain.service'; import {NodeConfig} from '../../configure'; import {IProjectUpgradeService} from '../../configure/ProjectUpgrade.service'; import {IndexerEvent} from '../../events'; import { ConnectionPoolStateManager, createIndexerWorker, DynamicDsService, IBaseIndexerWorker, IBlock, InMemoryCacheService, MultiChainRewindService, PoiSyncService, TerminateableWorker, UnfinalizedBlocksService, } from '../../indexer'; import {getLogger} from '../../logger'; import {monitorWrite} from '../../process'; import {AutoQueue} from '../../utils'; import {MonitorServiceInterface} from '../monitor.service'; import {StoreService} from '../store.service'; import {IStoreModelProvider} from '../storeModelProvider'; import {ISubqueryProject, IProjectService, Header} from '../types'; import {BaseBlockDispatcher} from './base-block-dispatcher'; const logger = getLogger('WorkerBlockDispatcherService'); function initAutoQueue( workers: number | undefined, batchSize: number, timeout?: number, name?: string ): AutoQueue { assert(workers && workers > 0, 'Number of workers must be greater than 0'); const capacity = workers * batchSize * 2; // Concurrency is the same as capacity here, we want maximum throughput return new AutoQueue(capacity, capacity, timeout, name); } @Injectable() export class WorkerBlockDispatcher< DS extends BaseDataSource = BaseDataSource, Worker extends IBaseIndexerWorker = IBaseIndexerWorker, Block = any, ApiConn extends IApiConnectionSpecific = IApiConnectionSpecific, > extends BaseBlockDispatcher, DS, Block> implements OnApplicationShutdown { protected workers: TerminateableWorker[] = []; private numWorkers: number; private processQueue: AutoQueue; private createWorker: () => Promise>; constructor( nodeConfig: NodeConfig, eventEmitter: EventEmitter2, @Inject('IProjectService') projectService: IProjectService, @Inject('IProjectUpgradeService') projectUpgradeService: IProjectUpgradeService, storeService: StoreService, storeModelProvider: IStoreModelProvider, cacheService: InMemoryCacheService, poiSyncService: PoiSyncService, dynamicDsService: DynamicDsService, unfinalizedBlocksService: UnfinalizedBlocksService, connectionPoolState: ConnectionPoolStateManager, @Inject('ISubqueryProject') project: ISubqueryProject, @Inject('IBlockchainService') private blockchainService: IBlockchainService, multiChainRewindService: MultiChainRewindService, workerPath: string, workerFns: Parameters>[1], monitorService?: MonitorServiceInterface, workerData?: unknown ) { super( nodeConfig, eventEmitter, project, projectService, projectUpgradeService, initAutoQueue(nodeConfig.workers, nodeConfig.batchSize, nodeConfig.timeout, 'Fetch'), storeService, storeModelProvider, poiSyncService, blockchainService, multiChainRewindService ); this.processQueue = new AutoQueue(this.queue.capacity, 1, nodeConfig.timeout, 'Process'); this.createWorker = () => createIndexerWorker( workerPath, workerFns, storeService.getStore(), cacheService.getCache(), dynamicDsService, unfinalizedBlocksService, connectionPoolState, project.root, projectService.startHeight, monitorService, workerData ); // initAutoQueue will assert that workers is set. unfortunately we cant do anything before the super call // eslint-disable-next-line @typescript-eslint/no-non-null-assertion this.numWorkers = nodeConfig.workers!; } get freeSize(): number { assert( this.queue.freeSpace !== undefined && this.processQueue.freeSpace !== undefined, 'Queues for worker block dispatcher must have a capacity set' ); // These queues have the same capacity, we need to consider the known items from the queue that will occupy the process queue return this.processQueue.freeSpace - this.queue.size; } async init(onDynamicDsCreated: (height: number) => void): Promise { this.workers = await Promise.all(new Array(this.numWorkers).fill(0).map(() => this.createWorker())); return super.init(onDynamicDsCreated); } async onApplicationShutdown(): Promise { this.isShutdown = true; // Stop processing blocks this.queue.abort(); this.processQueue.abort(); // Stop all workers if (this.workers) { await Promise.all(this.workers.map((w) => w.terminate())); } } async enqueueBlocks(heights: (IBlock | number)[], latestBufferHeight?: number): Promise { assert( heights.every((h) => typeof h === 'number'), `Workers don't support full blocks. Because of the dictionary providing full blocks, the workers flag should be removed.` ); // In the case where factors of batchSize is equal to bypassBlock or when heights is [] // to ensure block is bypassed, we set the latestBufferHeight to the heights // make sure lastProcessedHeight in metadata is updated if (!!latestBufferHeight && !heights.length) { heights = [latestBufferHeight]; } logger.info(`Enqueuing blocks ${heights[0]}...${last(heights)}, total ${heights.length} blocks`); // Needs to happen before enqueuing heights so discardBlock check works. // Unlike with the normal dispatcher there is not a queue ob blockHeights to delay this. this.latestBufferedHeight = latestBufferHeight ?? last(heights as number[]) ?? this.latestBufferedHeight; // eslint-disable-next-line no-constant-condition if (true) { /* * Load balancing: * worker1: 1,2,3 * worker2: 4,5,6 */ const workerIdx = await this.getNextWorkerIndex(); heights.map((height) => this.enqueueBlock(height as number, workerIdx)); } else { /* * Load balancing: * worker1: 1,3,5 * worker2: 2,4,6 */ heights.map(async (height) => this.enqueueBlock(height as number, await this.getNextWorkerIndex())); } } private enqueueBlock(height: number, workerIdx: number): void { if (this.isShutdown) return; const worker = this.workers[workerIdx]; assert(worker, `Worker ${workerIdx} not found`); // Used to compare before and after as a way to check if queue was flushed const bufferedHeight = this.latestBufferedHeight; /* Wrap the promise in a fetchQueue for 2 reasons: 1. It retains the order when resolving the fetched promises 2. It means `this.queue` doesn't fill up with tasks awaiting pendingBlocks which then means we can abort fetching and wait for idle */ const pendingBlock = this.queue.put(() => this.blockchainService.fetchBlockWorker(worker, height, {workers: this.workers}) ); void this.pipeBlock({ fetchTask: pendingBlock, processBlock: async () => { monitorWrite(`Processing from worker #${workerIdx}`); return worker.processBlock(height); }, discardBlock: () => bufferedHeight > this.latestBufferedHeight, processQueue: this.processQueue, abortFetching: async () => { await Promise.all(this.workers.map((w) => w.abortFetching())); // Wait for any pending blocks to be processed this.queue.abort(); }, getHeader: (header) => header, height, }); } flushQueue(height: number): void { super.flushQueue(height); this.processQueue.flush(); } @Interval(15000) async sampleWorkerStatus(): Promise { const statuses = await Promise.all(this.workers.map((worker) => worker.getStatus())); if (!statuses.length) return; logger.info(` Host Status: Total Fetching: ${this.queue.size} Awaiting process: ${this.processQueue.size} Worker Status: ${statuses.map((s) => `Worker ${s.threadId} - To Fetch: ${s.toFetchBlocks} blocks, Fetched: ${s.fetchedBlocks} blocks`).join('\n ')} `); } // Getter doesn't seem to cary from abstract class get latestBufferedHeight(): number { return this._latestBufferedHeight; } set latestBufferedHeight(height: number) { super.latestBufferedHeight = height; // There is only a single queue with workers so we treat them as the same this.eventEmitter.emit(IndexerEvent.BlockQueueSize, { value: this.queueSize, }); } // Finds the minimum toFetchBlocks amongst workers then randomly selects from onese that have a matching minimum private async getNextWorkerIndex(): Promise { const statuses = await Promise.all(this.workers.map((worker) => worker.getStatus())); const metric = statuses.map((s) => s.toFetchBlocks); const lowest = statuses.filter((s) => s.toFetchBlocks === Math.min(...metric)); const randIndex = Math.floor(Math.random() * lowest.length); return lowest[randIndex].threadId - 1; } } ================================================ FILE: packages/node-core/src/indexer/connectionPool.service.spec.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import {delay} from '@subql/common'; import {ApiErrorType, ConnectionPoolStateManager, getLogger, IApiConnectionSpecific, NodeConfig} from '..'; import {ConnectionPoolService} from './connectionPool.service'; async function waitFor(conditionFn: () => boolean, timeout = 50000, interval = 100): Promise { return new Promise((resolve, reject) => { const startTime = Date.now(); const checkCondition = () => { if (conditionFn()) { resolve(); } else if (Date.now() - startTime > timeout) { reject(new Error(`Timed out waiting for ${conditionFn.name} after ${timeout}ms`)); } else { setTimeout(checkCondition, interval); } }; checkCondition(); }); } const mockApiConnection: IApiConnectionSpecific = { apiConnect: jest.fn(), apiDisconnect: jest.fn(), handleError: jest.fn(), safeApi: jest.fn(), unsafeApi: jest.fn(), fetchBlocks: jest.fn(), networkMeta: { chain: '', specName: '', genesisHash: '', }, }; const TEST_URL = 'https://example.com/api'; describe('ConnectionPoolService', () => { let connectionPoolService: ConnectionPoolService; let stateManager: ConnectionPoolStateManager; const nodeConfig: NodeConfig = new NodeConfig({ batchSize: 1, subquery: 'example', }); const allConnectionsRemoved = jest.fn(() => { /* nothing*/ }); beforeEach(async () => { stateManager = new ConnectionPoolStateManager(allConnectionsRemoved); connectionPoolService = new ConnectionPoolService(nodeConfig, stateManager); await connectionPoolService.addToConnections(mockApiConnection, TEST_URL); }); afterEach(async () => { // Clean up timeouts/intervals await Promise.all([stateManager.onApplicationShutdown(), connectionPoolService.onApplicationShutdown()]); jest.clearAllMocks(); }); describe('handleApiDisconnects', () => { it('should handle successful reconnection on the first attempt', async () => { (mockApiConnection.apiConnect as any).mockImplementation(() => Promise.resolve()); const apiConnectSpy = jest.spyOn(mockApiConnection, 'apiConnect'); (connectionPoolService as any).handleApiDisconnects(TEST_URL); await waitFor(() => (mockApiConnection.apiConnect as any).mock.calls.length === 1); expect(apiConnectSpy).toHaveBeenCalledTimes(1); expect(connectionPoolService.numConnections).toBe(1); }, 10000); it('should handle successful reconnection after multiple attempts', async () => { (mockApiConnection.apiConnect as any) .mockImplementationOnce(() => Promise.reject(new Error('Reconnection failed'))) .mockImplementationOnce(() => Promise.reject(new Error('Reconnection failed'))) .mockImplementation(() => Promise.resolve()); const apiConnectSpy = jest.spyOn(mockApiConnection, 'apiConnect'); (connectionPoolService as any).handleApiDisconnects(TEST_URL); await waitFor(() => (mockApiConnection.apiConnect as any).mock.calls.length === 3); expect(apiConnectSpy).toHaveBeenCalledTimes(3); expect(connectionPoolService.numConnections).toBe(1); }, 20000); it('should handle failed reconnection after max attempts', async () => { (mockApiConnection.apiConnect as any).mockImplementation(() => Promise.reject(new Error('Reconnection failed'))); const apiConnectSpy = jest.spyOn(mockApiConnection, 'apiConnect'); (connectionPoolService as any).handleApiDisconnects(TEST_URL); await waitFor(() => (mockApiConnection.apiConnect as any).mock.calls.length === 5); expect(apiConnectSpy).toHaveBeenCalledTimes(5); expect(connectionPoolService.numConnections).toBe(0); // Application would exit under normal circumstances as there is only one connection expect(allConnectionsRemoved).toHaveBeenCalledTimes(1); }, 50000); it('should call handleApiDisconnects only once when multiple connection errors are triggered', async () => { // Create another connection to remove a special case, TODO fix this weird behaviour await connectionPoolService.addToConnections(mockApiConnection, `${TEST_URL}/2`); // Mock apiConnection.apiConnect() to not resolve for a considerable time (mockApiConnection.apiConnect as any).mockImplementation(() => delay(10)); const handleApiDisconnectsSpy = jest.spyOn(connectionPoolService as any, 'handleApiDisconnects'); // Trigger handleApiError with connection issue twice void connectionPoolService.handleApiError(TEST_URL, { name: 'ConnectionError', errorType: ApiErrorType.Connection, message: 'Connection error', }); void connectionPoolService.handleApiError(TEST_URL, { name: 'ConnectionError', errorType: ApiErrorType.Connection, message: 'Connection error', }); // Wait for a while to see if handleApiDisconnects gets called multiple times await delay(5); expect(handleApiDisconnectsSpy).toHaveBeenCalledTimes(1); }, 15000); }); describe('Rate limit endpoint delay', () => { it('call delay', async () => { const logger = getLogger('connection-pool'); const consoleSpy = jest.spyOn(logger, 'info'); await connectionPoolService.addToConnections(mockApiConnection, TEST_URL); await connectionPoolService.addToConnections(mockApiConnection, `${TEST_URL}/2`); await connectionPoolService.handleApiError(TEST_URL, { name: 'timeout', errorType: ApiErrorType.Timeout, message: 'timeout error', }); await connectionPoolService.handleApiError(`${TEST_URL}/2`, { name: 'DefaultError', errorType: ApiErrorType.Default, message: 'Default error', }); await (connectionPoolService as any).flushResultCache(); await connectionPoolService.api.fetchBlocks([34365]); expect(consoleSpy).toHaveBeenCalledWith('throtling on ratelimited endpoint 10s'); consoleSpy.mockRestore(); }, 30000); }); }); ================================================ FILE: packages/node-core/src/indexer/connectionPool.service.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import assert from 'assert'; import {isMainThread} from 'node:worker_threads'; import {OnApplicationShutdown, Injectable} from '@nestjs/common'; import {Interval} from '@nestjs/schedule'; import chalk from 'chalk'; import {ApiConnectionError, ApiErrorType} from '../api.connection.error'; import {IApiConnectionSpecific} from '../api.service'; import {NodeConfig} from '../configure'; import {getLogger} from '../logger'; import {backoffRetry, delay} from '../utils'; import {ConnectionPoolStateManager} from './connectionPoolState.manager'; const logger = getLogger('connection-pool'); const LOG_INTERVAL_MS = 60 * 1000; // Log every 60 seconds export const errorTypeToScoreAdjustment = { [ApiErrorType.Timeout]: -10, [ApiErrorType.Connection]: -20, [ApiErrorType.RateLimit]: -10, [ApiErrorType.Default]: -5, }; type ResultCacheEntry = { endpoint: string; type: 'success' | 'error'; data: T; }; @Injectable() export class ConnectionPoolService> implements OnApplicationShutdown { private allApi: Record = {}; private cachedEndpoint: string | undefined; private reconnectingEndpoints: Record | undefined> = {}; private resultCache: Array> = []; private lastCacheFlushTime: number = Date.now(); private cacheSizeThreshold = 10; private cacheFlushInterval = 60 * 100; constructor( private nodeConfig: NodeConfig, private poolStateManager: ConnectionPoolStateManager ) { this.cacheSizeThreshold = this.nodeConfig.batchSize; } async onApplicationShutdown(): Promise { await Promise.all(Object.values(this.allApi).map((api) => api?.apiDisconnect())); } async addToConnections(api: T, endpoint: string): Promise { this.allApi[endpoint] = api; await this.poolStateManager.addToConnections(endpoint, endpoint === this.nodeConfig.primaryNetworkEndpoint?.[0]); if (api !== null) { await this.updateNextConnectedApiIndex(); } } async addBatchToConnections(endpointToApiIndex: Record): Promise { for (const endpoint in endpointToApiIndex) { await this.addToConnections(endpointToApiIndex[endpoint], endpoint); } } async updateConnection(api: T, endpoint: string): Promise { if (this.allApi[endpoint] === undefined) { throw new Error(`Attempting to update connection that does not exist: ${endpoint}`); } this.allApi[endpoint] = api; await this.updateNextConnectedApiIndex(); } async connectToApi(endpoint: string): Promise { await this.allApi[endpoint].apiConnect(); } private async updateNextConnectedApiIndex(): Promise { const newEndpoint = await this.poolStateManager.getNextConnectedEndpoint(Object.keys(this.allApi)); if (!!newEndpoint && this.allApi[newEndpoint] === null) { return this.updateNextConnectedApiIndex(); } this.cachedEndpoint = newEndpoint; } get api(): T { const endpoint = this.cachedEndpoint; if (endpoint === undefined) { throw new Error( 'All endpoints in the pool are either suspended due to rate limits or attempting to reconnect. Please wait or add healthier endpoints.' ); } const api = this.allApi[endpoint]; assert(api, `Api for endpoint ${endpoint} not found`); const wrappedApi = new Proxy(api, { get: (target, prop, receiver) => { if (prop === 'fetchBlocks') { return async (heights: number[], ...args: any): Promise => { try { // Check if the endpoint is rate-limited if (await this.poolStateManager.getFieldValue(endpoint, 'rateLimited')) { logger.info(`throtling on ratelimited endpoint 10s`); await delay(10); } const start = Date.now(); const result = await target.fetchBlocks(heights, ...args); const end = Date.now(); await this.handleApiSuccess(endpoint, end - start); await this.poolStateManager.setFieldValue(endpoint, 'lastRequestTime', end); // Update the last request time return result; } catch (error: any) { await this.handleApiError(endpoint, target.handleError(error)); throw error; } }; } // Delegate other property access and method calls to the original api object return Reflect.get(target, prop, receiver); }, }); return wrappedApi as T; } get numConnections(): number { return this.poolStateManager.numConnections; } async handleApiDisconnects(endpoint: string): Promise { logger.warn(`disconnected from ${endpoint}`); const tryReconnect = async () => { try { logger.info(`Attempting to reconnect to ${endpoint}`); await this.allApi[endpoint].apiConnect(); await this.poolStateManager.setFieldValue(endpoint, 'connected', true); this.reconnectingEndpoints[endpoint] = undefined; logger.info(`Reconnected to ${endpoint} successfully`); } catch (e) { logger.error(`Reconnection failed: ${e}`); throw e; } }; this.reconnectingEndpoints[endpoint] = backoffRetry(tryReconnect, 5).catch(async (e: any) => { logger.error(`Reached max reconnection attempts. Removing connection ${endpoint} from pool.`); await this.poolStateManager.removeFromConnections(endpoint); }); await this.handleConnectionStateChange(); logger.info(`reconnected to ${endpoint}!`); } @Interval(LOG_INTERVAL_MS) async logEndpointStatus(): Promise { if (!isMainThread) { return; } const suspendedEnpoints = await this.poolStateManager.getSuspendedEndpoints(); if (suspendedEnpoints.length === 0) { return; } let suspendedEndpointsInfo = chalk.yellow('Suspended endpoints:\n'); await Promise.all( suspendedEnpoints.map(async (e) => { const endpoint = chalk.cyan(new URL(e).hostname); const failures = chalk.red(`Failures: ${await this.poolStateManager.getFieldValue(e, 'failureCount')}`); const backoff = chalk.yellow(`Backoff (ms): ${await this.poolStateManager.getFieldValue(e, 'backoffDelay')}`); suspendedEndpointsInfo += `\n- ${endpoint}\n ${failures}\n ${backoff}\n`; }) ); logger.info(suspendedEndpointsInfo); } async handleApiSuccess(endpoint: string, responseTime: number): Promise { this.addToResultCache(endpoint, 'success', responseTime); await this.flushResultCacheIfNeeded(); await this.handleConnectionStateChange(); } async handleApiError(endpoint: string, error: ApiConnectionError): Promise { this.addToResultCache(endpoint, 'error', error.errorType); await this.flushResultCacheIfNeeded(); await this.handleConnectionStateChange(); } async handleConnectionStateChange(): Promise { // Update the cached value await this.updateNextConnectedApiIndex(); const disconnectedEndpoints = await this.poolStateManager.getDisconnectedEndpoints(); disconnectedEndpoints.map((endpoint) => { if (this.reconnectingEndpoints[endpoint] !== undefined) { return; } void this.handleApiDisconnects(endpoint); }); } private addToResultCache( endpoint: string, dataType: 'success' | 'error', data: number | ApiConnectionError['errorType'] ): void { const entry: ResultCacheEntry = { endpoint, type: dataType, data, }; this.resultCache.push(entry); } private async flushResultCacheIfNeeded(): Promise { const currentTime = Date.now(); const timeSinceLastFlush = currentTime - this.lastCacheFlushTime; if (this.resultCache.length >= this.cacheSizeThreshold || timeSinceLastFlush >= this.cacheFlushInterval) { await this.flushResultCache(); } } private async flushResultCache(): Promise { const successResults: Array<{endpoint: string; responseTime: number}> = []; const errorResults: Array<{endpoint: string; errorType: ApiErrorType}> = []; for (const result of this.resultCache) { if (result.type === 'success') { successResults.push({endpoint: result.endpoint, responseTime: result.data as number}); } else { errorResults.push({endpoint: result.endpoint, errorType: result.data as ApiErrorType}); } } await this.poolStateManager.handleBatchApiSuccess(successResults); await this.poolStateManager.handleBatchApiError(errorResults); this.resultCache = []; this.lastCacheFlushTime = Date.now(); await this.handleConnectionStateChange(); } async updateChainTypes(newChainTypes: unknown): Promise { for (const endpoint in this.allApi) { await this.allApi[endpoint].updateChainTypes?.(newChainTypes); } logger.info(`Network chain types updated!`); } } ================================================ FILE: packages/node-core/src/indexer/connectionPoolState.manager.spec.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import {ApiErrorType} from '../api.connection.error'; import {ConnectionPoolItem, ConnectionPoolStateManager} from './connectionPoolState.manager'; describe('ConnectionPoolStateManager', function () { let connectionPoolStateManager: ConnectionPoolStateManager; const EXAMPLE_ENDPOINT1 = 'http://example1.com'; const EXAMPLE_ENDPOINT2 = 'http://example2.com'; beforeEach(function () { connectionPoolStateManager = new ConnectionPoolStateManager(); }); afterEach(async function () { await connectionPoolStateManager.onApplicationShutdown(); }); it('chooses primary endpoint first', async function () { await connectionPoolStateManager.addToConnections(EXAMPLE_ENDPOINT1, true); await connectionPoolStateManager.addToConnections(EXAMPLE_ENDPOINT2, false); expect(await connectionPoolStateManager.getNextConnectedEndpoint()).toEqual(EXAMPLE_ENDPOINT1); }); it('does not choose primary endpoint if failed', async function () { await connectionPoolStateManager.addToConnections(EXAMPLE_ENDPOINT1, true); await connectionPoolStateManager.addToConnections(EXAMPLE_ENDPOINT2, false); await connectionPoolStateManager.handleApiError(EXAMPLE_ENDPOINT1, ApiErrorType.Default); expect(await connectionPoolStateManager.getNextConnectedEndpoint()).toEqual(EXAMPLE_ENDPOINT2); }); it('All endpoints backoff; select a rateLimited endpoint. reason: ApiErrorType.Timeout', async function () { await connectionPoolStateManager.addToConnections(EXAMPLE_ENDPOINT1, false); await connectionPoolStateManager.addToConnections(EXAMPLE_ENDPOINT2, false); await connectionPoolStateManager.handleApiError(EXAMPLE_ENDPOINT1, ApiErrorType.Default); await connectionPoolStateManager.handleApiError(EXAMPLE_ENDPOINT2, ApiErrorType.Timeout); const nextEndpoint = await connectionPoolStateManager.getNextConnectedEndpoint(); const endpointInfo = (connectionPoolStateManager as any).pool[EXAMPLE_ENDPOINT2] as ConnectionPoolItem; expect(nextEndpoint).toEqual(EXAMPLE_ENDPOINT2); expect(endpointInfo.rateLimited).toBe(true); }); it('All endpoints backoff; select a rateLimited endpoint. reason: ApiErrorType.RateLimit', async function () { await connectionPoolStateManager.addToConnections(EXAMPLE_ENDPOINT1, false); await connectionPoolStateManager.addToConnections(EXAMPLE_ENDPOINT2, false); await connectionPoolStateManager.handleApiError(EXAMPLE_ENDPOINT1, ApiErrorType.Default); await connectionPoolStateManager.handleApiError(EXAMPLE_ENDPOINT2, ApiErrorType.RateLimit); const nextEndpoint = await connectionPoolStateManager.getNextConnectedEndpoint(); const endpointInfo = (connectionPoolStateManager as any).pool[EXAMPLE_ENDPOINT2] as ConnectionPoolItem; expect(nextEndpoint).toEqual(EXAMPLE_ENDPOINT2); expect(endpointInfo.rateLimited).toBe(true); }); it('can calculate performance score for response time of zero', function () { const score = (connectionPoolStateManager as any).calculatePerformanceScore(0, 0); expect(score).not.toBeNaN(); }); it('performance score decreases with increasing response time', function () { const score1 = (connectionPoolStateManager as any).calculatePerformanceScore(1, 0); const score2 = (connectionPoolStateManager as any).calculatePerformanceScore(2, 0); expect(score1).toBeGreaterThan(score2); }); }); ================================================ FILE: packages/node-core/src/indexer/connectionPoolState.manager.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import {OnApplicationShutdown} from '@nestjs/common'; import {Interval} from '@nestjs/schedule'; import chalk from 'chalk'; import {ApiErrorType} from '../api.connection.error'; import {IApiConnectionSpecific} from '../api.service'; import {getLogger} from '../logger'; import {exitWithError} from '../process'; import {errorTypeToScoreAdjustment} from './connectionPool.service'; const RETRY_DELAY = 10 * 1000; const MAX_RETRY_DELAY = 32 * RETRY_DELAY; const MAX_FAILURES = 5; const RESPONSE_TIME_WEIGHT = 0.7; const FAILURE_WEIGHT = 0.3; export interface ConnectionPoolItem { endpoint: string; primary: boolean; performanceScore: number; backoffDelay: number; failureCount: number; rateLimited: boolean; failed: boolean; lastRequestTime: number; connected: boolean; timeoutId?: NodeJS.Timeout; } const logger = getLogger('ConnectionPoolState'); export interface IConnectionPoolStateManager> { addToConnections(endpoint: string, primary: boolean, initFailed: boolean): Promise; // Connected endpoints allows reducing the endpoints to ones connected in the worker getNextConnectedEndpoint(connectedEndpoints?: string[]): Promise; // Async to be compatible with workers getFieldValue>(endpoint: string, field: K): Promise[K]>; // Async to be compatible with workers setFieldValue>( endpoint: string, field: K, value: ConnectionPoolItem[K] ): Promise; getSuspendedEndpoints(): Promise; removeFromConnections(endpoint: string): Promise; handleApiError(endpoint: string, errorType: ApiErrorType): Promise; handleApiSuccess(endpoint: string, responseTime: number): Promise; getDisconnectedEndpoints(): Promise; } export class ConnectionPoolStateManager> implements OnApplicationShutdown { private pool: Record> = {}; /** * @param onAllConnectionsRemoved - allows overwritting the behaviour when all connections are removed * */ constructor( private onAllConnectionsRemoved: () => void = () => { exitWithError(`All api connection removed`); } ) {} //eslint-disable-next-line @typescript-eslint/require-await async addToConnections(endpoint: string, primary: boolean): Promise { const poolItem: ConnectionPoolItem = { primary, performanceScore: 100, failureCount: 0, endpoint, backoffDelay: 0, rateLimited: false, failed: false, connected: true, lastRequestTime: 0, }; this.pool[endpoint] = poolItem; if (primary) { logger.info(`Primary endpoint ${endpoint} added.`); } } @Interval(15000) logConnectionStatus(): void { logger.debug( JSON.stringify( this.pool, (key, value) => { // Cannot stringify NodeJs timeouts if (key === 'timeoutId') { return undefined; } return value; }, 2 ) ); } //eslint-disable-next-line @typescript-eslint/require-await async getNextConnectedEndpoint(connectedEndpoints?: string[]): Promise { const primaryendpoint = this.getPrimaryEndpoint(); if (primaryendpoint !== undefined) { return primaryendpoint; } const availableEndpoints = Object.keys(this.pool).filter( (endpoint) => !connectedEndpoints || connectedEndpoints.includes(endpoint) ); const endpoints = availableEndpoints.filter( (endpoint) => !this.pool[endpoint].backoffDelay && this.pool[endpoint].connected && !this.pool[endpoint].failed ); if (endpoints.length === 0) { // If all endpoints are suspended, try to find a rate-limited one const rateLimitedEndpoints = availableEndpoints.filter( (endpoint) => this.pool[endpoint].backoffDelay && this.pool[endpoint].rateLimited ); if (rateLimitedEndpoints.length === 0) { // If no rate-limited endpoints found, return undefined // FIXME: We better block the promise until one endpoint is recovered from suspension return undefined; } // If there are rate-limited endpoints, return one of them at random return rateLimitedEndpoints[Math.floor(Math.random() * rateLimitedEndpoints.length)]; } // Sort indices based on their performance scores in descending order endpoints.sort((a, b) => this.pool[b].performanceScore - this.pool[a].performanceScore); // Calculate the sum of performance scores const sumScores = endpoints.reduce((acc, idx) => acc + this.pool[idx].performanceScore, 0); // Calculate the cumulative probability distribution const cumulativeProbs: number[] = []; endpoints.forEach((idx, i) => { const prevProb = i > 0 ? cumulativeProbs[i - 1] : 0; cumulativeProbs[i] = prevProb + this.pool[idx].performanceScore / sumScores; }); // Choose a random number between 0 and 1 const rand = Math.random(); // Find the first endpoint in the cumulative probability distribution that is greater than the random number const selectedIndex = cumulativeProbs.findIndex((prob) => prob >= rand); // Return the corresponding endpoint from the sorted indices return endpoints[selectedIndex]; } private getPrimaryEndpoint(): string | undefined { return Object.keys(this.pool).find( (endpoint) => this.pool[endpoint].primary && !this.pool[endpoint].backoffDelay && this.pool[endpoint].connected && !this.pool[endpoint].failed ); } get numConnections(): number { return Object.keys(this.pool).length; } //eslint-disable-next-line @typescript-eslint/require-await async getFieldValue>( endpoint: string, field: K ): Promise[K]> { return this.pool[endpoint]?.[field]; } //eslint-disable-next-line @typescript-eslint/require-await async setFieldValue>( endpoint: string, field: K, value: ConnectionPoolItem[K] ): Promise { this.pool[endpoint][field] = value; } //eslint-disable-next-line @typescript-eslint/require-await async getSuspendedEndpoints(): Promise { return Object.keys(this.pool).filter((endpoint) => this.pool[endpoint].backoffDelay !== 0); } //eslint-disable-next-line @typescript-eslint/require-await async setRecoverTimeout(endpoint: string, delay: number): Promise { // Make sure there is no existing timeout await this.clearTimeout(endpoint); this.pool[endpoint].timeoutId = setTimeout(() => { this.pool[endpoint].backoffDelay = 0; // Reset backoff delay only if there are no consecutive errors // this.pool[endpoint].rateLimited = false; // Do not reset rateLimited status this.pool[endpoint].failed = false; this.pool[endpoint].timeoutId = undefined; // Clear the timeout ID const suspendedEndpoints = Object.keys(this.pool).filter((endpoint) => this.pool[endpoint].backoffDelay !== 0); if (suspendedEndpoints.length === 0) { logger.info(chalk.green('No suspended endpoints.')); } }, delay); } //eslint-disable-next-line @typescript-eslint/require-await async clearTimeout(endpoint: string): Promise { if (this.pool[endpoint].timeoutId) { clearTimeout(this.pool[endpoint].timeoutId); this.pool[endpoint].timeoutId = undefined; } } //eslint-disable-next-line @typescript-eslint/require-await async removeFromConnections(endpoint: string): Promise { delete this.pool[endpoint]; if (Object.keys(this.pool).length === 0) { // Cannot throw here because it would be off stack logger.error('No more connections available. Please add healthier endpoints'); this.onAllConnectionsRemoved(); } } //eslint-disable-next-line @typescript-eslint/require-await async onApplicationShutdown(): Promise { Object.keys(this.pool).forEach((endpoint) => { this.clearTimeout(endpoint); }); } //eslint-disable-next-line @typescript-eslint/require-await async handleApiError(endpoint: string, errorType: ApiErrorType): Promise { if (Object.keys(this.pool).length === 1 || this.pool[endpoint].failed || this.pool[endpoint].rateLimited) { //if this api was used again then it must be in the same batch of blocks return; } const adjustment = errorTypeToScoreAdjustment[errorType] || errorTypeToScoreAdjustment.default; this.pool[endpoint].performanceScore += adjustment; this.pool[endpoint].failureCount++; switch (errorType) { case ApiErrorType.Connection: { if (this.pool[endpoint].connected) { // The connected status does not provide service. handleApiDisconnects() will be called to handle this. this.pool[endpoint].connected = false; } return; } case ApiErrorType.Timeout: case ApiErrorType.RateLimit: { // The “rateLimited” status will be selected when no endpoints are available, so we should avoid setting a large delay. this.pool[endpoint].rateLimited = true; break; } case ApiErrorType.Default: { // The “failed” status does not provide service. this.pool[endpoint].failed = true; break; } default: { throw new Error(`Unknown error type ${errorType}`); } } const nextDelay = this.calculateNextDelay(this.pool[endpoint]); this.pool[endpoint].backoffDelay = nextDelay; await this.setRecoverTimeout(endpoint, nextDelay); logger.warn( `Endpoint ${this.pool[endpoint].endpoint} experienced an error (${errorType}). Suspending for ${ nextDelay / 1000 }s.` ); } private calculateNextDelay(poolItem: ConnectionPoolItem): number { // Exponential backoff using failure count, Start with RETRY_DELAY and double on each failure, MAX_RETRY_DELAY is the maximum delay return Math.min(RETRY_DELAY * Math.pow(2, poolItem.failureCount - 1), MAX_RETRY_DELAY); } private calculatePerformanceScore(responseTime: number, failureCount: number): number { const responseTimeScore = 1 / (1 + Math.log(1 + responseTime)); const failureScore = 1 - failureCount / MAX_FAILURES; return RESPONSE_TIME_WEIGHT * responseTimeScore + FAILURE_WEIGHT * failureScore; } //eslint-disable-next-line @typescript-eslint/require-await async handleApiSuccess(endpoint: string, responseTime: number): Promise { const performanceScore = this.pool[endpoint].performanceScore; const failureCount = this.pool[endpoint].failureCount; const updatedScore = performanceScore + this.calculatePerformanceScore(responseTime, failureCount); this.pool[endpoint].performanceScore = updatedScore; } async handleBatchApiSuccess(successResults: Array<{endpoint: string; responseTime: number}>): Promise { for (const result of successResults) { await this.handleApiSuccess(result.endpoint, result.responseTime); } } async handleBatchApiError(errorResults: Array<{endpoint: string; errorType: ApiErrorType}>): Promise { for (const result of errorResults) { await this.handleApiError(result.endpoint, result.errorType); } } //eslint-disable-next-line @typescript-eslint/require-await async getDisconnectedEndpoints(): Promise { return Object.keys(this.pool).filter((endpoint) => !this.pool[endpoint].connected); } } ================================================ FILE: packages/node-core/src/indexer/core.module.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import {Module} from '@nestjs/common'; import {EventEmitter2} from '@nestjs/event-emitter'; import {Sequelize} from '@subql/x-sequelize'; import {AdminController, AdminListener} from '../admin/admin.controller'; import {NodeConfig} from '../configure'; import {IndexingBenchmarkService, PoiBenchmarkService} from './benchmark.service'; import {ConnectionPoolService} from './connectionPool.service'; import {ConnectionPoolStateManager} from './connectionPoolState.manager'; import {InMemoryCacheService} from './inMemoryCache.service'; import {MonitorService} from './monitor.service'; import {PoiService, PoiSyncService} from './poi'; import {SandboxService} from './sandbox.service'; import {StoreService} from './store.service'; import {storeModelFactory} from './storeModelProvider'; @Module({ providers: [ InMemoryCacheService, SandboxService, ConnectionPoolStateManager, ConnectionPoolService, IndexingBenchmarkService, PoiBenchmarkService, MonitorService, PoiService, PoiSyncService, StoreService, { provide: 'IStoreModelProvider', useFactory: storeModelFactory, inject: [NodeConfig, EventEmitter2, Sequelize], }, AdminListener, ], controllers: [AdminController], exports: [ ConnectionPoolService, ConnectionPoolStateManager, SandboxService, MonitorService, PoiService, PoiSyncService, StoreService, 'IStoreModelProvider', InMemoryCacheService, ], }) export class CoreModule {} ================================================ FILE: packages/node-core/src/indexer/dictionary/coreDictionary.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import {NodeConfig} from '../../configure'; import {BlockHeightMap} from '../../utils/blockHeightMap'; import {IBlock} from '../types'; import {DictionaryResponse, IDictionary} from './types'; import {FieldSelector} from './v2'; export abstract class CoreDictionary implements IDictionary { protected queriesMap?: BlockHeightMap; protected _startHeight = 1; protected _metadata?: M; metadataValid: boolean | undefined; constructor( protected chainId: string, protected readonly nodeConfig: NodeConfig ) {} abstract getData( startBlock: number, queryEndBlock: number, limit: number, fieldSelector?: FieldSelector ): Promise | undefined>; protected abstract init(): Promise; protected abstract dictionaryValidation(metaData?: M, startBlockHeight?: number): boolean; protected abstract buildDictionaryQueryEntries(dataSources: DS[]): E | undefined; abstract queryMapValidByHeight(height: number): boolean; abstract getQueryEndBlock(targetBlockHeight: number, apiFinalizedHeight: number): number; get startHeight(): number { return this._startHeight; } protected get metadata(): M { if (!this._metadata) { throw new Error(`Dictionary metadata hasn't been initialized`); } return this._metadata; } protected get useDictionary(): boolean { return !!this.metadataValid; } protected setDictionaryStartHeight(start: number | undefined): void { // Since not all dictionary has adopted start height, if it is not set, we just consider it is 1. if (this._startHeight !== undefined) { return; } this._startHeight = start ?? 1; } // filter dictionary with start height heightValidation(height: number): boolean { // validate metadata, and then validate query maps return this.dictionaryValidation(this._metadata, height) && this.queryMapValidByHeight(height); } updateQueriesMap(dataSources: BlockHeightMap): void { this.queriesMap = dataSources.map((d) => this.buildDictionaryQueryEntries(d)); } protected getQueryConditions( startBlock: number, queryEndBlock: number ): {queryEndBlock: number; conditions: E | undefined} { const queryDetails = this.queriesMap?.getDetails(startBlock); const conditions = queryDetails?.value; queryEndBlock = queryDetails?.endHeight && queryDetails?.endHeight < queryEndBlock ? queryDetails.endHeight : queryEndBlock; return {queryEndBlock, conditions}; } } ================================================ FILE: packages/node-core/src/indexer/dictionary/dictionary.fixtures.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import {SubstrateDatasourceKind, SubstrateHandlerKind} from '@subql/types'; import {DictionaryQueryEntry} from '@subql/types-core'; import {NodeConfig} from '../../configure'; import {BlockHeightMap} from '../../utils'; import {IBlock} from '../types'; import {DictionaryResponse} from './types'; import {DictionaryV1} from './v1'; import {DictionaryV2, DictionaryV2Metadata, DictionaryV2QueryEntry, RawDictionaryResponseData} from './v2'; // export use in dictionary service test export class TestDictionaryV1 extends DictionaryV1 { constructor( endpoint: string, chainId: string, nodeConfig: NodeConfig, private queryEntry: DictionaryQueryEntry[] ) { super(endpoint, chainId, nodeConfig); } buildDictionaryQueryEntries(dataSources: any[]): DictionaryQueryEntry[] { return this.queryEntry; } } export const HAPPY_PATH_CONDITIONS: DictionaryQueryEntry[] = [ { entity: 'events', conditions: [ {field: 'module', value: 'staking'}, {field: 'event', value: 'Bonded'}, ], }, { entity: 'events', conditions: [ {field: 'module', value: 'balances'}, {field: 'event', value: 'Reward'}, ], }, { entity: 'events', conditions: [ {field: 'module', value: 'balances'}, {field: 'event', value: 'Slash'}, ], }, { entity: 'extrinsics', conditions: [ {field: 'module', value: 'staking'}, {field: 'call', value: 'bond'}, ], }, ]; export const mockDS = [ { name: 'runtime', kind: SubstrateDatasourceKind.Runtime, startBlock: 100, mapping: { handlers: [ { handler: 'handleTest', kind: SubstrateHandlerKind.Event, filter: { module: 'balances', method: 'Deposit', }, }, ], file: '', }, }, { name: 'runtime', kind: SubstrateDatasourceKind.Runtime, startBlock: 500, mapping: { handlers: [ { handler: 'handleTest', kind: SubstrateHandlerKind.Call, filter: { module: 'balances', method: 'Deposit', success: true, }, }, ], file: '', }, }, { name: 'runtime', kind: SubstrateDatasourceKind.Runtime, startBlock: 1000, mapping: { handlers: [ { handler: 'handleTest', kind: SubstrateHandlerKind.Call, filter: { module: 'balances', method: 'Deposit', success: true, }, }, ], file: '', }, }, ]; const m = new Map(); mockDS.forEach((ds, index, dataSources) => { m.set(ds.startBlock, dataSources.slice(0, index + 1)); }); export const dsMap = new BlockHeightMap(m); export interface TestFB { gasLimit: bigint; gasUsed: bigint; hash: string; } export class TestDictionaryV2 extends DictionaryV2 { get testMetadata(): DictionaryV2Metadata | undefined { return this._metadata; } setMockedApi(mocked: {post: () => any}): void { this.dictionaryApi = mocked as any; } buildDictionaryQueryEntries(dataSources: any[]): DictionaryV2QueryEntry { // Test fixture object with non-empty conditions to satisfy running a query return {property: ['value']}; } convertResponseBlocks(result: RawDictionaryResponseData): DictionaryResponse> | undefined { return { batchBlocks: result.blocks as IBlock[], lastBufferedHeight: (result.blocks as number[])[result.blocks.length - 1], }; } // eslint-disable-next-line @typescript-eslint/require-await async mockInit(): Promise { (this as any).init = () => Promise.resolve(); this._metadata = { start: 1, end: 100000, chainId: 'mockChainId', genesisHash: '0x21121', filters: { complete: ['block', 'transaction'], }, supported: ['complete'], }; this.setDictionaryStartHeight(this._metadata.start); } } ================================================ FILE: packages/node-core/src/indexer/dictionary/dictionary.service.spec.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import {EventEmitter2} from '@nestjs/event-emitter'; import {NETWORK_FAMILY} from '@subql/common'; import {NodeConfig} from '../..'; import { TestDictionaryV1, TestDictionaryV2, dsMap as mockedDsMap, TestFB, HAPPY_PATH_CONDITIONS, } from './dictionary.fixtures'; import {DictionaryService} from './dictionary.service'; const dictionaryV1Endpoints = [ 'https://gx.api.subquery.network/sq/subquery/eth-dictionary', 'https://dict-tyk.subquery.network/query/eth-mainnet', ]; const dictionaryV2Endpoints = ['http://mock-dictionary-v2/rpc']; class TestDictionaryService extends DictionaryService { async initDictionaries(): Promise { // Mock version inspection completed const dictionariesV1: TestDictionaryV1[] = []; for (const endpoint of dictionaryV1Endpoints) { try { const dictionary = new TestDictionaryV1(endpoint, 'mockChainId', this.nodeConfig, HAPPY_PATH_CONDITIONS); await (dictionary as any).init(); dictionariesV1.push(dictionary); } catch (e) { // ignore the dictionary } } const mockDictionaryV2 = new TestDictionaryV2(dictionaryV2Endpoints[0], 'mockChainId', this.nodeConfig); await mockDictionaryV2.mockInit(); await (mockDictionaryV2 as any).init(); const dictionariesV2 = [mockDictionaryV2]; this.init([...dictionariesV1, ...dictionariesV2]); } get currentDictionaryIndex(): number | undefined { return this._currentDictionaryIndex; } set currentDictionaryIndex(index: number | undefined) { this._currentDictionaryIndex = index; } } // Due to only valid dictionary will be added to dictionary service, therefore we need to add a mocked invalid dictionary to the service manually function addInvalidDictionary(dictionaryService: TestDictionaryService, index: number): void { const dictionary = new TestDictionaryV1( 'https://gx.api.subquery.network/sq/subquery/eth-dictionary', 'mockChainId', (TestDictionaryService as any).nodeConfig, HAPPY_PATH_CONDITIONS ); (dictionary as any)._metadata = { lastProcessedHeight: 1, targetHeight: 100000, chain: 'mockChainIdWrong', specName: 'mock', genesisHash: 'mock', startHeight: 1, }; (dictionaryService as any)._dictionaries.splice(index, 0, dictionary); dictionaryService.buildDictionaryEntryMap(mockedDsMap); } describe('Dictionary service', function () { let dictionaryService: TestDictionaryService; beforeEach(async () => { const nodeConfig = new NodeConfig({ subquery: 'dictionaryService', subqueryName: 'asdf', networkEndpoint: {'wss://eth.api.onfinality.io/public-ws': {}}, dictionaryTimeout: 10, networkDictionary: [...dictionaryV1Endpoints, ...dictionaryV2Endpoints], }); dictionaryService = new TestDictionaryService('0xchainId', nodeConfig, new EventEmitter2()); await dictionaryService.initDictionaries(); // await Promise.all((dictionaryService as any)._dictionaries.map((d: any) => d.init())); dictionaryService.buildDictionaryEntryMap(mockedDsMap); }); afterAll(() => dictionaryService.onApplicationShutdown()); it('can use the dictionary registry to resolve a url', async () => { const dictUrl: string[] = await (dictionaryService as any).resolveDictionary( NETWORK_FAMILY.ethereum, 1, 'https://github.com/subquery/templates/raw/main/dist/dictionary.json' ); expect(dictUrl.length).toBeGreaterThan(0); const dictUrl2: string[] = await (dictionaryService as any).resolveDictionary( NETWORK_FAMILY.substrate, '0x91b171bb158e2d3848fa23a9f1c25182fb8e20313b2c1eb49219da7a70ce90c3', 'https://github.com/subquery/templates/raw/main/dist/dictionary.json' ); expect(dictUrl2.length).toBeGreaterThan(0); }); it('init Dictionaries with mutiple endpoints, only valid dictionary will be added', () => { expect((dictionaryService as any)._dictionaries.length).toBe(2); }); it('can find valid dictionary with height', () => { // If we haven't set dictionary expect(dictionaryService.currentDictionaryIndex).toBeUndefined(); (dictionaryService as any).findDictionary(100, new Set()); expect(dictionaryService.currentDictionaryIndex).toBe(0); expect((dictionaryService as any).getDictionary(100)).toBeTruthy(); // Current only valid endpoint been provided expect((dictionaryService as any).getDictionary(100).dictionaryEndpoint).toBe( 'https://dict-tyk.subquery.network/query/eth-mainnet' ); }); it('scopedDictionaryEntries, dictionary get data should be called', async () => { const dictionary = (dictionaryService as any).getDictionary(1000); const spyDictionary = jest.spyOn(dictionary, 'getData'); await dictionaryService.scopedDictionaryEntries(1000, 11000, 100); expect(spyDictionary).toHaveBeenCalled(); }); it('scopedDictionaryEntries, if query failed/timeout, should try next valid dictionary for query', async () => { // mock current dictionary, it is an invalid dictionary, should allow scopedDictionaryEntries to find next dictionary addInvalidDictionary(dictionaryService, 0); dictionaryService.currentDictionaryIndex = 0; const failedDictionary = (dictionaryService as any)._dictionaries[0]; // mock this dictionary can pass validation failedDictionary._metadata = {startBlock: 1, lastProcessedHeight: 10000}; // (dictionaryService as any)._dictionaries[0].heightValidation= (height:number) => true; const getDataError = jest.fn(() => { return Promise.reject(new Error('Dictionary index 0 mock fetch failed')); }); failedDictionary.getData = getDataError; const passDictionary = (dictionaryService as any)._dictionaries[1]; const spyPassGetData = jest.spyOn(passDictionary, 'getData'); const spyScopedDictionaryEntries = jest.spyOn(dictionaryService as any, '_scopedDictionaryEntries'); const res = await dictionaryService.scopedDictionaryEntries(1000, 11000, 100); expect(getDataError).toHaveBeenCalledTimes(1); expect(spyPassGetData).toHaveBeenCalledTimes(1); // failed 1 time + 1 retry expect(spyScopedDictionaryEntries).toHaveBeenCalledTimes(2); expect(dictionaryService.currentDictionaryIndex).toBe(1); }); it('tried all dictionaries but all failed will return undefined', async () => { // remove the valid dictionary addInvalidDictionary(dictionaryService, 0); dictionaryService.currentDictionaryIndex = 0; // mock this dictionary can pass validation for (const dictionary of (dictionaryService as any)._dictionaries) { dictionary._metadata = {lastProcessedHeight: 10000}; dictionary.getData = () => { throw new Error('Dictionary fetch failed'); }; } const spyScopedDictionaryEntries = jest.spyOn(dictionaryService as any, '_scopedDictionaryEntries'); const blocks = await dictionaryService.scopedDictionaryEntries(1000, 11000, 100); expect(spyScopedDictionaryEntries).toHaveBeenCalledTimes(3); expect(blocks).toBeUndefined(); }, 50000); }); ================================================ FILE: packages/node-core/src/indexer/dictionary/dictionary.service.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import {OnApplicationShutdown} from '@nestjs/common'; import {EventEmitter2} from '@nestjs/event-emitter'; import {NETWORK_FAMILY} from '@subql/common'; import {IProjectNetworkConfig} from '@subql/types-core'; import {NodeConfig} from '../../configure'; import {IndexerEvent} from '../../events'; import {getLogger} from '../../logger'; import {BlockHeightMap} from '../../utils/blockHeightMap'; import {IBlock} from '../types'; import {DictionaryResponse, IDictionary, IDictionaryCtrl} from './types'; const logger = getLogger('DictionaryService'); export abstract class DictionaryService implements IDictionaryCtrl, OnApplicationShutdown { protected _dictionaries: IDictionary[] = []; protected _currentDictionaryIndex: number | undefined; constructor( protected chainId: string, protected readonly nodeConfig: NodeConfig, protected readonly eventEmitter: EventEmitter2 ) {} onApplicationShutdown(): void { this._dictionaries = []; this._currentDictionaryIndex = undefined; } abstract initDictionaries(): Promise; init(dictionaries: IDictionary[]): void { this._dictionaries = dictionaries; } private getDictionary(height: number, skipDictionaryIndex: Set = new Set()): IDictionary | undefined { const previousIndex = this._currentDictionaryIndex; const dict = this._getDictionary(height, skipDictionaryIndex); this.eventEmitter.emit(IndexerEvent.UsingDictionary, {value: Number(!!dict)}); if (!dict) { this.eventEmitter.emit(IndexerEvent.SkipDictionary); } // Only log on change of dictionary try { if (previousIndex !== this._currentDictionaryIndex) { if (this._currentDictionaryIndex === undefined) { if (this._dictionaries.length) { logger.warn(`No supported dictionary found`); } else { logger.debug(`No dictionaries available to use`); } } else { logger.info( `Changed dictionary: new index: ${this._currentDictionaryIndex}, type: ${this._dictionaries[this._currentDictionaryIndex]?.constructor?.name}` ); } } } catch (e) { // Do nothing, logging shouldn't cause errors } return dict; } private _getDictionary( height: number, skipDictionaryIndex: Set = new Set() ): IDictionary | undefined { if (this._dictionaries.length === 0) { return undefined; } // If current dictionary is valid, use current one instead of find a dictionary if ( this._currentDictionaryIndex !== undefined && !skipDictionaryIndex.has(this._currentDictionaryIndex) && this._dictionaries[this._currentDictionaryIndex].heightValidation(height) ) { return this._dictionaries[this._currentDictionaryIndex]; } else { this.findDictionary(height, skipDictionaryIndex); if (this._currentDictionaryIndex === undefined) { return undefined; } else { return this._dictionaries[this._currentDictionaryIndex]; } } } // Find the next valid dictionary private findDictionary(height: number, skipDictionaryIndex: Set) { // DO NOT remove dictionary not valid // As they can be valid for different block range, or work for other query const index = this._dictionaries.findIndex( (d, index) => d.heightValidation(height) && !skipDictionaryIndex.has(index) ); // If not find any, then still set undefined. this._currentDictionaryIndex = index < 0 ? undefined : index; } /** * * @param dataSources */ buildDictionaryEntryMap(dataSources: BlockHeightMap): void { for (const dict of this._dictionaries) { dict.updateQueriesMap(dataSources); } } async scopedDictionaryEntries( startBlockHeight: number, scaledBatchSize: number, chainHeadHeight: number //api FinalizedHeight ): Promise> | undefined> { const skipDictionaryIndex: Set = new Set(); return this._scopedDictionaryEntries(startBlockHeight, scaledBatchSize, chainHeadHeight, skipDictionaryIndex); } /** * Returns undefined if there is no valid dictionary or dictionary fails * */ private async _scopedDictionaryEntries( startBlockHeight: number, scaledBatchSize: number, chainHeadHeight: number, //api FinalizedHeight skipDictionaryIndex: Set = new Set() ): Promise> | undefined> { // Initialize skipDictionaryIndex as an empty array // Attempt to get data from the current dictionary const dictionary = this.getDictionary(startBlockHeight, skipDictionaryIndex); if (!dictionary) { return undefined; } try { const queryEndBlock = dictionary.getQueryEndBlock( startBlockHeight + this.nodeConfig.dictionaryQuerySize, chainHeadHeight ); return await dictionary.getData(startBlockHeight, queryEndBlock, scaledBatchSize); } catch (error: any) { // Handle errors by skipping the current dictionary if (this._currentDictionaryIndex === undefined) { throw new Error(`try get next dictionary but _currentDictionaryIndex is undefined`); } skipDictionaryIndex.add(this._currentDictionaryIndex); return this._scopedDictionaryEntries(startBlockHeight, scaledBatchSize, chainHeadHeight, skipDictionaryIndex); } } protected async resolveDictionary( networkFamily: NETWORK_FAMILY, chainId: string, registryUrl: string ): Promise { try { const response = await fetch(registryUrl); if (!response.ok) { throw new Error(`Bad response, code="${response.status}" body="${await response.text()}"`); } const dictionaryJson: any = await response.json(); const dictionaries = dictionaryJson[networkFamily.toLowerCase()][chainId]; if (Array.isArray(dictionaries) && dictionaries.length > 0) { return dictionaries; } else if (typeof dictionaries === 'string') { return [dictionaries]; } else { return []; } } catch (error: any) { logger.error(error, 'An error occurred while fetching the dictionary:'); return []; } } protected async getDictionaryEndpoints( networkFamily: NETWORK_FAMILY, network: IProjectNetworkConfig ): Promise { const registryDictionaries = await this.resolveDictionary( networkFamily, network.chainId, this.nodeConfig.dictionaryRegistry ); const dictionaryEndpoints: string[] = ( !Array.isArray(network.dictionary) ? (!network.dictionary ? [] : [network.dictionary]) : network.dictionary ).concat(registryDictionaries); return dictionaryEndpoints; } } ================================================ FILE: packages/node-core/src/indexer/dictionary/index.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 export * from './v1'; export * from './v2'; export * from './types'; export * from './dictionary.service'; export * from './utils'; ================================================ FILE: packages/node-core/src/indexer/dictionary/types.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import {BlockHeightMap} from '../../utils/blockHeightMap'; import {FieldSelector} from '../dictionary/v2'; import {IBlock} from '../types'; export type DictionaryResponse = { batchBlocks: B[]; lastBufferedHeight: number; }; export interface IDictionary { metadataValid: boolean | undefined; getData( startBlock: number, endBlock: number, limit: number, fieldSelector?: FieldSelector ): Promise | number> | undefined>; queryMapValidByHeight(height: number): boolean; getQueryEndBlock(targetEndHeight: number, apiFinalizedHeight: number): number; heightValidation(height: number): boolean; updateQueriesMap(dataSources: BlockHeightMap): void; } export interface IDictionaryCtrl { initDictionaries(): Promise | void; buildDictionaryEntryMap(dataSources: BlockHeightMap): void; scopedDictionaryEntries( startBlockHeight: number, queryEndBlock: number, scaledBatchSize: number ): Promise> | undefined>; } ================================================ FILE: packages/node-core/src/indexer/dictionary/utils.spec.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import {IBlock} from '../types'; import {mergeNumAndBlocks, mergeNumAndBlocksToNums} from './utils'; function mockIblock(n: number): IBlock<{height: number; hash: string}> { return { getHeader: () => { return {blockHeight: n, parentHash: `0x${n - 1}`, blockHash: `0x${n}`, timestamp: new Date()}; }, block: {height: n, hash: `0x${n}`}, }; } const outcomeBlocks = [ 10, mockIblock(12), mockIblock(20), mockIblock(22), mockIblock(23), 30, 40, mockIblock(44), mockIblock(45), mockIblock(50), ]; const outcomeBlocks2 = [10, 12, 20, 22, 23, 30, 40, 44, 45, 50]; it('mergeNumAndBlocks, merge and arrange blocks in order', () => { const moduloBlocks = [10, 20, 30, 40, 50]; const batchBlocks: IBlock[] = [ // should keep these fat blocks rather than number, so we don't have to fetch again mockIblock(50), mockIblock(12), mockIblock(22), mockIblock(23), mockIblock(44), mockIblock(45), // and it can order mockIblock(20), // and it can remove duplicate mockIblock(22), ]; expect(JSON.stringify(mergeNumAndBlocks(moduloBlocks, batchBlocks))).toBe(JSON.stringify(outcomeBlocks)); // also should work if batchBlocks is numbers const batchBlocks2 = [12, 22, 23, 44, 45, 22]; expect(mergeNumAndBlocks(moduloBlocks, batchBlocks2)).toEqual(outcomeBlocks2); }); it('mergeNumAndBlocksToNums, turn all blocks into number', () => { const moduloBlocks = [10, 20, 30, 40, 50]; function mockIblock(n: number): IBlock<{height: number; hash: string}> { return { getHeader: () => { return {blockHeight: n, parentHash: `0x${n - 1}`, blockHash: `0x${n}`, timestamp: new Date()}; }, block: {height: n, hash: `0x${n}`}, }; } const batchBlocks: IBlock[] = [ // should keep these fat blocks rather than number, so we don't have to fetch again mockIblock(50), mockIblock(12), mockIblock(22), mockIblock(23), mockIblock(44), mockIblock(45), // and it can order mockIblock(20), // and it can remove duplicate mockIblock(22), ]; expect(mergeNumAndBlocksToNums(moduloBlocks, batchBlocks)).toEqual(outcomeBlocks2); // also should work if batchBlocks is numbers const batchBlocks2 = [12, 22, 23, 44, 45, 22]; expect(mergeNumAndBlocksToNums(moduloBlocks, batchBlocks2)).toEqual(outcomeBlocks2); }); ================================================ FILE: packages/node-core/src/indexer/dictionary/utils.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import {uniq} from 'lodash'; import {IBlock} from '../../indexer'; export function getBlockHeight(block: number | IBlock): number { if (typeof block === 'number') { return block; } return block.getHeader().blockHeight; } export function mergeNumAndBlocks( numberBlocks: number[], batchBlocks: (IBlock | number)[] ): (number | IBlock)[] { let uniqueNumbers: number[] = uniq(numberBlocks); const uniqueBObjects: (IBlock | number)[] = []; // filter out modulo blocks that already exist in fat blocks for (const item of batchBlocks) { const height = getBlockHeight(item); if (!uniqueBObjects.some((b) => getBlockHeight(b) === height)) { uniqueBObjects.push(item); uniqueNumbers = uniqueNumbers.filter((un) => un !== height); } } // merge and order const combinedArray: (number | IBlock)[] = [...uniqueNumbers, ...uniqueBObjects].sort((a, b) => { const numA = typeof a === 'number' ? a : getBlockHeight(a); const numB = typeof b === 'number' ? b : getBlockHeight(b); return numA - numB; }); return combinedArray; } export function mergeNumAndBlocksToNums( firstBlocks: (number | IBlock)[], secondBlocks: (number | IBlock)[] ): number[] { const combinedArray: (number | IBlock)[] = [...firstBlocks, ...secondBlocks]; const uniqueNumbersSet = new Set(); for (const item of combinedArray) { if (typeof item === 'number') { uniqueNumbersSet.add(item); } else { uniqueNumbersSet.add(getBlockHeight(item)); } } const uniqueNumbersArray: number[] = Array.from(uniqueNumbersSet); const sortedArray: number[] = uniqueNumbersArray.sort((a, b) => a - b); return sortedArray; } ================================================ FILE: packages/node-core/src/indexer/dictionary/v1/dictionaryV1.spec.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import assert from 'assert'; import {ApolloClient, HttpLink, InMemoryCache} from '@apollo/client/core'; import fetch from 'cross-fetch'; import {range} from 'lodash'; import {NodeConfig} from '../../../configure'; import {BlockHeightMap} from '../../../utils/blockHeightMap'; import {dsMap, mockDS, TestDictionaryV1, HAPPY_PATH_CONDITIONS} from '../dictionary.fixtures'; import {getGqlType} from './utils'; const DICTIONARY_ENDPOINT = `https://gateway.subquery.network/query/QmSxAgGGpaMrYzooWpydmwzutREwomL5nupLZqxURzuJTo`; const DICTIONARY_CHAINID = `0x91b171bb158e2d3848fa23a9f1c25182fb8e20313b2c1eb49219da7a70ce90c3`; const nodeConfig = new NodeConfig({ subquery: 'asdf', subqueryName: 'asdf', networkEndpoint: {'wss://polkadot.api.onfinality.io/public-ws': {}}, dictionaryTimeout: 10, }); // Need longer timeout jest.setTimeout(50000); describe('GraphqlTypes', () => { it('Supports arrays of primitives', () => { const stringType = getGqlType(['a', 'b', 'c']); expect(stringType).toEqual(`[String!]`); const number = getGqlType([1, 2, 3]); expect(number).toEqual(`[BigFloat!]`); }); it('Throws arrays of non-primitives', () => { expect(() => getGqlType([{a: 1}])).toThrow('Object types not supported'); }); it('Throws with empty arrays', () => { expect(() => getGqlType([])).toThrow('Unable to determine array type'); }); }); async function prepareDictionary( endpoint = DICTIONARY_ENDPOINT, chainId = DICTIONARY_CHAINID, nfg = nodeConfig, dsM = dsMap ): Promise { const dictionary = new TestDictionaryV1(endpoint, chainId, nfg, HAPPY_PATH_CONDITIONS); await (dictionary as any).init(); dictionary.updateQueriesMap(dsM); return dictionary; } describe('Dictionary V1', () => { let dictionary: TestDictionaryV1; beforeAll(async () => { dictionary = await prepareDictionary(); }); afterEach(() => { jest.clearAllMocks(); }); describe('coreDictionary', () => { it('set startHeight of this dictionary', () => { // After metadata init, it should set startHeight of this dictionary expect(dictionary.startHeight).toEqual(1); }); it('validateChainMeta and useDictionary', () => { expect((dictionary as any).validateChainMeta((dictionary as any).metadata)).toBeTruthy(); }); it('validate dictionary with a height', () => { expect(dictionary.heightValidation(100)).toBeTruthy(); const beyond500 = (dictionary as any).metadata.lastProcessedHeight + 500; expect(dictionary.heightValidation(beyond500)).toBeFalsy(); }); it('able to build queryEntryMap', () => { dictionary.updateQueriesMap(dsMap); const _map = (dictionary as any).queriesMap?.getAll(); assert(_map, 'Map should exist'); expect([..._map.keys()]).toStrictEqual(mockDS.map((ds) => ds.startBlock)); expect(_map?.size).toEqual(mockDS.length); }); it('can use scoped dictionary query', async () => { dictionary.updateQueriesMap(dsMap); // Out of range of scoped entries const result = await dictionary.getData(100, 199, 10); expect(result?.batchBlocks.length).toEqual(0); const result2 = await dictionary.getData(1000, 10000, 10); expect(result2?.batchBlocks.length).toBeGreaterThan(0); }); it('able to getDicitonaryQueryEntries', () => { const dictionaryQueryMap = new Map(); // Mocks a Map object that where key == dataSource.startBlock and mocked DictionaryQueryEntries[] values // Hence testing, when provided a queryEndBlock, the correct DictionaryQueryEntries[] is returned for (let i = 0; i < mockDS.length; i++) { dictionaryQueryMap.set( [mockDS[i].startBlock], HAPPY_PATH_CONDITIONS.filter((dictionaryQuery, index) => i >= index) ); } (dictionary as any).queriesMap = new BlockHeightMap(dictionaryQueryMap); let queryEndBlock = 150; // queryEndBlock > dictionaryQuery_0 && < dictionaryQuery_1. Output: dictionaryQuery_0 expect((dictionary as any).queriesMap?.getSafe(queryEndBlock)).toEqual([HAPPY_PATH_CONDITIONS[0]]); queryEndBlock = 500; // queryEndBlock > dictionaryQuery_0 && == dictionaryQuery_1. Output: dictionaryQuery_1 expect((dictionary as any).queriesMap?.getSafe(queryEndBlock)).toEqual([ HAPPY_PATH_CONDITIONS[0], HAPPY_PATH_CONDITIONS[1], ]); queryEndBlock = 5000; // queryEndBlock > all dictionaryQuery expect((dictionary as any).queriesMap?.getSafe(queryEndBlock)).toEqual([ HAPPY_PATH_CONDITIONS[0], HAPPY_PATH_CONDITIONS[1], HAPPY_PATH_CONDITIONS[2], ]); queryEndBlock = 50; // queryEndBlock < min dictionaryQuery expect((dictionary as any).queriesMap?.getSafe(queryEndBlock)).toEqual(undefined); }); }); it('get metadata', () => { const metadata = (dictionary as any).metadata; expect(metadata.startHeight).toBe(1); expect(metadata.genesisHash).toBe('0x91b171bb158e2d3848fa23a9f1c25182fb8e20313b2c1eb49219da7a70ce90c3'); }); it('init metadata and get metadata', async () => { await (dictionary as any).init(); const metadata = (dictionary as any).metadata; expect(metadata.startHeight).toBe(1); expect(metadata.genesisHash).toBe('0x91b171bb158e2d3848fa23a9f1c25182fb8e20313b2c1eb49219da7a70ce90c3'); // After metadata init, it should set startHeight of this dictionary expect(dictionary.startHeight).toEqual(1); }); it('return dictionary query result', async () => { const batchSize = 30; const startBlock = 1000; // first event at 1463, this will pick the correct query map const endBlock = 10001; const dic = await dictionary.getData(startBlock, endBlock, batchSize); expect(dic?.batchBlocks.length).toBeGreaterThan(1); expect(dic?.batchBlocks[0]).toBe(1463); }); it('should return undefined startblock height greater than dictionary last processed height', async () => { const batchSize = 30; const startBlock = 400000000; const endBlock = 400010000; const dic = await dictionary.getData(startBlock, endBlock, batchSize); expect(dic).toBeUndefined(); }); it('should use metadata last process height at end of query height', () => { const fakeApiFinalHeight = 40001; // assume already synced up with chain // 1 + dictionaryQuerySize const endBlock = dictionary.getQueryEndBlock(10001, fakeApiFinalHeight); expect(endBlock).toEqual(10001); }); }); describe('Individual dictionary V1 test', () => { let dictionary: TestDictionaryV1; beforeEach(async () => { dictionary = await prepareDictionary(); }); it('return undefined when dictionary api failed', async () => { // Create a new dictionary for this test so we don't break other instances const dictionary = await prepareDictionary(); // Replace client with one that wont work (dictionary as any)._client = new ApolloClient({ cache: new InMemoryCache({resultCaching: true}), link: new HttpLink({uri: 'https://api.subquery.network/sq/subquery/dictionary-not-exist', fetch}), defaultOptions: { watchQuery: { fetchPolicy: 'no-cache', }, query: { fetchPolicy: 'no-cache', }, }, }); const batchSize = 30; const startBlock = 1; const endBlock = 10001; const dic = await dictionary.getData(startBlock, endBlock, batchSize); expect(dic).toBeUndefined(); }); it('limits the dictionary query to that block range', async () => { // Only have 1 condition for each range. This is to simulate each "project upgrade" having no overlapping ds dictionary.buildDictionaryQueryEntries = (ds) => [HAPPY_PATH_CONDITIONS[ds.length - 1]]; dictionary.updateQueriesMap(dsMap); const getDictionaryQuerySpy = jest.spyOn(dictionary as any, 'dictionaryQuery'); await dictionary.getData(200, 600, 10); expect(getDictionaryQuerySpy).toHaveBeenCalledWith(200, 499, 10, [ { entity: 'events', conditions: [ {field: 'module', value: 'staking'}, {field: 'event', value: 'Bonded'}, ], }, ]); }); it('test query the correct range', async () => { dictionary.buildDictionaryQueryEntries = (ds) => [ { entity: 'extrinsics', conditions: [ {field: 'module', value: 'timestamp'}, {field: 'call', value: 'set'}, ], }, ]; dictionary.updateQueriesMap(dsMap); const batchSize = 30; const startBlock = 1000; const endBlock = 10001; const dic = await dictionary.getData(startBlock, endBlock, batchSize); expect(dic?.batchBlocks).toEqual(range(startBlock, startBlock + batchSize)); }); it('use minimum value of event/extrinsic returned block as batch end block', async () => { const batchSize = 50; const startBlock = 333300; const endBlock = 340000; dictionary.buildDictionaryQueryEntries = (ds) => [ { entity: 'events', conditions: [ {field: 'module', value: 'session'}, {field: 'event', value: 'NewSession'}, ], }, { entity: 'events', conditions: [ {field: 'module', value: 'staking'}, {field: 'event', value: 'EraPayout'}, ], }, { entity: 'events', conditions: [ {field: 'module', value: 'staking'}, {field: 'event', value: 'Reward'}, ], }, { //last extrinsic at block 339186 entity: 'extrinsics', conditions: [ {field: 'module', value: 'staking'}, {field: 'call', value: 'payoutStakers'}, ], }, { entity: 'extrinsics', conditions: [ {field: 'module', value: 'utility'}, {field: 'call', value: 'batch'}, ], }, ]; dictionary.updateQueriesMap(dsMap); const dic = await dictionary.getData(startBlock, endBlock, batchSize); // with dictionary distinct, this should give last block at 339186 expect(dic?.batchBlocks[dic.batchBlocks.length - 1]).toBe(339186); }); }); ================================================ FILE: packages/node-core/src/indexer/dictionary/v1/dictionaryV1.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import {ApolloClient, gql, HttpLink, InMemoryCache, NormalizedCacheObject} from '@apollo/client/core'; import {DictionaryQueryCondition, DictionaryQueryEntry as DictionaryV1QueryEntry} from '@subql/types-core'; import {buildQuery, GqlNode, GqlQuery, GqlVar, MetaData as DictionaryV1Metadata} from '@subql/utils'; import {NodeConfig} from '../../../configure'; import {getLogger} from '../../../logger'; import {profiler} from '../../../profiler'; import {timeout} from '../../../utils'; import {CoreDictionary} from '../coreDictionary'; import {DictionaryResponse} from '../types'; import {buildDictQueryFragment, distinctErrorEscaped, startHeightEscaped} from './utils'; const logger = getLogger('dictionary-v1'); export abstract class DictionaryV1 extends CoreDictionary< DS, undefined, DictionaryV1Metadata, DictionaryV1QueryEntry[] > { private _client: ApolloClient; private useDistinct = true; private useStartHeight = true; constructor( readonly dictionaryEndpoint: string, chainId: string, nodeConfig: NodeConfig, protected readonly metadataKeys = ['lastProcessedHeight', 'genesisHash'], // Cosmos uses chain instead of genesisHash protected buildQueryFragment: typeof buildDictQueryFragment = buildDictQueryFragment ) { super(chainId, nodeConfig); this._client = new ApolloClient({ cache: new InMemoryCache({resultCaching: true}), link: new HttpLink({uri: dictionaryEndpoint}), defaultOptions: { watchQuery: { fetchPolicy: 'no-cache', }, query: { fetchPolicy: 'no-cache', }, }, }); } protected async init(): Promise { const {query} = this.metadataQuery(); try { const resp = await timeout( this.client.query({ query: gql(query), }), this.nodeConfig.dictionaryTimeout, `Dictionary metadata query timeout in ${ this.nodeConfig.dictionaryTimeout } seconds. Please increase --dictionary-timeout. ${this.nodeConfig.debug ? `\n GraphQL: ${query}` : ''}` ); this._metadata = resp.data._metadata; this.setDictionaryStartHeight(this.metadata.startHeight); } catch (err: any) { if (JSON.stringify(err).includes(startHeightEscaped)) { this.useStartHeight = false; logger.warn(`Dictionary doesn't support validate start height.`); // Rerun the query now with distinct disabled await this.init(); } logger.error(err, `Failed to get dictionary metadata`); throw err; } } getQueryEndBlock(targetBlockHeight: number, apiFinalizedHeight: number): number { return Math.min(targetBlockHeight, apiFinalizedHeight, this.metadata.lastProcessedHeight); } protected get client(): ApolloClient { if (!this._client) { throw new Error('Dictionary service has not been initialized'); } return this._client; } /** * * @param startBlock * @param queryEndBlock this block number will limit the max query range, increase dictionary query speed * @param batchSize * @param conditions */ @profiler() async getData( startBlock: number, endBlock: number, batchSize: number ): Promise | undefined> { const {conditions, queryEndBlock} = this.getQueryConditions(startBlock, endBlock); if (!conditions || conditions.length === 0) { return undefined; } const {query, variables} = this.dictionaryQuery(startBlock, queryEndBlock, batchSize, conditions); logger.debug(`query: ${query}`); logger.debug(`variables: ${JSON.stringify(variables, null, 2)}`); try { const resp = await timeout( this.client.query({ query: gql(query), variables, }), this.nodeConfig.dictionaryTimeout, `Dictionary query timeout in ${ this.nodeConfig.dictionaryTimeout } seconds. Please increase --dictionary-timeout. ${ this.nodeConfig.debug ? `\n GraphQL: ${query}, \n Variables: ${variables}` : '' }` ); const blockHeightSet = new Set(); const entityEndBlock: {[entity: string]: number} = {}; for (const entity of Object.keys(resp.data)) { if (entity !== '_metadata' && resp.data[entity].nodes.length >= 0) { for (const node of resp.data[entity].nodes) { blockHeightSet.add(Number(node.blockHeight)); entityEndBlock[entity] = Number(node.blockHeight); //last added event blockHeight } } } const _metadata = resp.data._metadata; const endBlock = Math.min(...Object.values(entityEndBlock).map((height) => (isNaN(height) ? Infinity : height))); const batchBlocks = Array.from(blockHeightSet) .filter((block) => block <= endBlock) .sort((n1, n2) => n1 - n2); if (!this.dictionaryValidation(_metadata, startBlock)) { return undefined; } return { lastBufferedHeight: Math.min(endBlock, queryEndBlock), batchBlocks, }; } catch (err: any) { // Check if the error is about distinct argument and disable distinct if so if (JSON.stringify(err).includes(distinctErrorEscaped)) { this.useDistinct = false; logger.warn(`Dictionary doesn't support distinct query.`); // Rerun the qeury now with distinct disabled return this.getData(startBlock, queryEndBlock, batchSize); } logger.warn(err, `failed to fetch dictionary result`); return undefined; } } queryMapValidByHeight(height: number): boolean { try { return !!this.queriesMap?.get(height)?.length; } catch (e: any) { logger.warn(e, `Unable to get query map by height ${height}`); return false; } } protected dictionaryValidation(metaData?: DictionaryV1Metadata, startBlockHeight?: number): boolean { const validate = (): boolean => { try { if (!metaData) { return false; } if (startBlockHeight !== undefined && metaData.lastProcessedHeight < startBlockHeight) { logger.warn(`Dictionary indexed block is behind current indexing block height`); return false; } return true; } catch (e: any) { logger.error(e, 'Unable to validate dictionary metadata'); return false; } }; const valid = validate(); this.metadataValid = valid; return valid; } private dictionaryQuery( startBlock: number, queryEndBlock: number, batchSize: number, conditions: DictionaryV1QueryEntry[] ): GqlQuery { const mapped = conditions.reduce>((acc, c) => { acc[c.entity] = acc[c.entity] || []; acc[c.entity].push(c.conditions); return acc; }, {}); // assemble const vars: GqlVar[] = []; const nodes: GqlNode[] = [ { entity: '_metadata', project: this.useStartHeight ? this.metadataKeys : this.metadataKeys.filter((obj) => obj !== 'startHeight'), }, ]; for (const entity of Object.keys(mapped)) { const [pVars, node] = this.buildQueryFragment( entity, startBlock, queryEndBlock, mapped[entity], batchSize, this.useDistinct ); nodes.push(node); vars.push(...pVars); } return buildQuery(vars, nodes); } private metadataQuery(): GqlQuery { const nodes: GqlNode[] = [ { entity: '_metadata', project: this.useStartHeight ? [...this.metadataKeys, 'startHeight'] : this.metadataKeys, }, ]; return buildQuery([], nodes); } protected validateChainMeta(metaData: DictionaryV1Metadata): boolean { return metaData.chain === this.chainId || metaData.genesisHash === this.chainId; } } ================================================ FILE: packages/node-core/src/indexer/dictionary/v1/index.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 export * from './dictionaryV1'; export * from './utils'; ================================================ FILE: packages/node-core/src/indexer/dictionary/v1/utils.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import assert from 'assert'; import {DictionaryQueryCondition} from '@subql/types-core'; import {GqlNode, GqlVar, MetaData as DictionaryV1Metadata} from '@subql/utils'; export const distinctErrorEscaped = `Unknown argument \\"distinct\\"`; export const startHeightEscaped = `Cannot query field \\"startHeight\\"`; export type SpecVersion = { id: string; start: number; //start with this block end: number; }; export type SpecVersionDictionary = { _metadata: DictionaryV1Metadata; specVersions: SpecVersion[]; }; export type MetadataDictionary = { _metadata: DictionaryV1Metadata; }; export function getGqlType(value: any): string { switch (typeof value) { case 'number': return 'BigFloat!'; case 'boolean': return 'Boolean!'; case 'object': { if (Array.isArray(value)) { if (!value.length) { throw new Error('Unable to determine array type'); } // Use the first value to get the type, assume they are all the same type return `[${getGqlType(value[0])}]`; } else { throw new Error('Object types not supported'); } } default: case 'string': return 'String!'; } } function extractVar(name: string, cond: DictionaryQueryCondition): GqlVar { const gqlType = cond.matcher === 'contains' ? 'JSON' : getGqlType(cond.value); return { name, gqlType, value: cond.value, }; } const ARG_FIELD_REGX = /[^a-zA-Z0-9-_]/g; function sanitizeArgField(input: string): string { return input.replace(ARG_FIELD_REGX, ''); } type Filter = {or: any[]}; function extractVars(entity: string, conditions: DictionaryQueryCondition[][]): [GqlVar[], Filter] { const gqlVars: GqlVar[] = []; const filter: Filter = {or: []}; conditions.forEach((i, outerIdx) => { if (i.length > 1) { filter.or[outerIdx] = { and: i.map((j, innerIdx) => { const v = extractVar(`${entity}_${outerIdx}_${innerIdx}`, j); gqlVars.push(v); return { [sanitizeArgField(j.field)]: { [j.matcher || 'equalTo']: `$${v.name}`, }, }; }), }; } else if (i.length === 1) { const v = extractVar(`${entity}_${outerIdx}_0`, i[0]); gqlVars.push(v); filter.or[outerIdx] = { [sanitizeArgField(i[0].field)]: { [i[0].matcher || 'equalTo']: `$${v.name}`, }, }; } }); return [gqlVars, filter]; } export function buildDictQueryFragment( entity: string, startBlock: number, queryEndBlock: number, conditions: DictionaryQueryCondition[][], batchSize: number, useDistinct: boolean ): [GqlVar[], GqlNode] { const [gqlVars, filter] = extractVars(entity, conditions); const node: GqlNode = { entity, project: [ { entity: 'nodes', project: ['blockHeight'], }, ], args: { filter: { ...filter, blockHeight: { greaterThanOrEqualTo: `"${startBlock}"`, lessThan: `"${queryEndBlock}"`, }, }, orderBy: 'BLOCK_HEIGHT_ASC', first: batchSize.toString(), }, }; if (useDistinct) { // Non null assertion here because we define the object explicitly assert(node.args, 'Args should be defined in the above definition of node'); node.args.distinct = ['BLOCK_HEIGHT']; } return [gqlVars, node]; } ================================================ FILE: packages/node-core/src/indexer/dictionary/v2/dictionaryV2.spec.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import {NodeConfig} from '../../../configure'; import {TestDictionaryV2, dsMap as mockedDsMap} from '../dictionary.fixtures'; jest.setTimeout(50000); const nodeConfig = new NodeConfig({ subquery: 'asdf', subqueryName: 'asdf', dictionaryTimeout: 10, }); describe('Individual dictionary V2 test', () => { const dictionary = new TestDictionaryV2('http://mock-dictionary-v2/rpc', '0x21121', nodeConfig); beforeAll(async () => { await dictionary.mockInit(); }); it('can init metadata and set start height', () => { expect(dictionary.testMetadata).toBeDefined(); expect(dictionary.testMetadata?.start).toBe(1); }, 500000); it('should get correct getQueryEndBlock', () => { // should use targeted query end height, start height + batch size const queryEndBlock1 = dictionary.getQueryEndBlock(1000, 1000000); expect(queryEndBlock1).toBe(1000); // should use dictionary metadata end, mock that api and targetHeight are beyond dictionary metadata const queryEndBlock2 = dictionary.getQueryEndBlock(10000000000, 10000000000); expect(queryEndBlock2).toBe(dictionary.testMetadata?.end); }, 500000); it('can get data', async () => { dictionary.updateQueriesMap(mockedDsMap); // mock api return dictionary.setMockedApi({ post: () => { return { status: 200, data: { result: { blocks: [105, 205, 600, 705], blockRange: ['0x1', '0xF4240'], genesisHash: 'mockedGenesisHash', }, }, }; }, }); const data = await dictionary.getData(100, 1100, 100, {event: {}, method: {}}); expect(data?.batchBlocks).toStrictEqual([105, 205, 600, 705]); expect(data?.lastBufferedHeight).toBe(705); // can update metadata block height expect(dictionary.testMetadata?.end).toBe(1000000); // can throw error if response failed dictionary.setMockedApi({ post: () => { throw new Error('Mock post error'); }, }); await expect(() => dictionary.getData(100, 1100, 100, {event: {}, method: {}})).rejects.toThrow( 'Dictionary query failed Error: Mock post error' ); jest.clearAllMocks(); }, 500000); it('can determine current dictionary query map is valid with block height', () => { dictionary.updateQueriesMap(mockedDsMap); expect(dictionary.queryMapValidByHeight(105)).toBeTruthy(); expect(dictionary.queryMapValidByHeight(1)).toBeFalsy(); }); it('should able to handle convertResponseBlocks return empty array blocks and lastBufferedHeight is undefined', async () => { dictionary.updateQueriesMap(mockedDsMap); dictionary.setMockedApi({ post: () => { return { status: 200, data: { result: { blocks: [105, 205, 600, 705], BlockRange: [1, 1000000], GenesisHash: 'mockedGenesisHash', }, }, }; }, }); // mock convertResponseBlocks (dictionary as any).convertResponseBlocks = () => { return { batchBlocks: [], lastBufferedHeight: undefined, }; }; const data = await dictionary.getData(1001, 2001, 100, {event: {}, method: {}}); expect(data?.lastBufferedHeight).toBe(2001); jest.clearAllMocks(); }); }); describe('determine dictionary V2 version', () => { it('if not supported dictionary endpoint, v2 should throw error if init failed', async () => { const dictionaryV2 = new TestDictionaryV2( 'https://dict-tyk.subquery.network/query/eth-mainnet/rpc', '0x21121', nodeConfig ); await expect((dictionaryV2 as any).init()).rejects.toThrow(); }); }); ================================================ FILE: packages/node-core/src/indexer/dictionary/v2/dictionaryV2.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import {hexStripZeros, hexToNumber, numberToHex} from '@subql/utils'; import axios, {AxiosInstance} from 'axios'; import {FieldSelector} from '../'; import {NodeConfig} from '../../../configure'; import {getLogger} from '../../../logger'; import {IBlock} from '../../types'; import {CoreDictionary} from '../coreDictionary'; import {DictionaryResponse} from '../types'; import {DictionaryV2Metadata, DictionaryV2QueryEntry, V2MetadataFilters, RawDictionaryResponseData} from './types'; const MIN_FETCH_LIMIT = 200; const BLOCKS_QUERY_METHOD = `subql_filterBlocks`; const META_QUERY_METHOD = `subql_filterBlocksCapabilities`; const logger = getLogger('dictionary v2'); type DictionaryV2Capabilities = { genesisHash: string; availableBlocks: {startHeight: number; endHeight: number}[]; supportedResponses: ('basic' | 'complete')[]; filters: V2MetadataFilters; chainId: string; }; async function subqlFilterBlocksCapabilities( endpoint: string, axiosInstance?: AxiosInstance ): Promise { axiosInstance ??= axios.create({ baseURL: endpoint, }); const requestData = { jsonrpc: '2.0', method: META_QUERY_METHOD, id: 1, }; const response = await axiosInstance.post<{ result?: DictionaryV2Capabilities; error?: {code: number; message: string}; }>(endpoint, requestData, { headers: { 'Content-Type': 'application/json', }, }); if (response.status >= 400) { throw new Error(`[${response.status}]: ${response.statusText}`); } if (response.data.error) { throw new Error(response.data.error.message); } const {result} = response.data; if (!result) { throw new Error('Malformed response'); } const metadata: DictionaryV2Metadata = { start: result.availableBlocks[0].startHeight, end: result.availableBlocks[0].endHeight, genesisHash: result.genesisHash, filters: result.filters, supported: result.supportedResponses, chainId: result.chainId, }; return metadata; } export abstract class DictionaryV2< FB, DS, QE extends DictionaryV2QueryEntry = DictionaryV2QueryEntry, > extends CoreDictionary { protected dictionaryApi: AxiosInstance; constructor( readonly dictionaryEndpoint: string, chainId: string, nodeConfig: NodeConfig ) { super(chainId, nodeConfig); this.dictionaryApi = axios.create({ baseURL: dictionaryEndpoint, headers: { Connection: 'keep-alive', 'Accept-Encoding': 'gzip, deflate', }, timeout: nodeConfig.dictionaryTimeout * 1000, // Seconds to ms }); } protected abstract buildDictionaryQueryEntries(dataSources: DS[]): QE; protected async init(): Promise { this._metadata = await subqlFilterBlocksCapabilities(this.dictionaryEndpoint); this.setDictionaryStartHeight(this._metadata.start); } getQueryEndBlock(targetBlockHeight: number, apiHeadHeight: number): number { return Math.min(targetBlockHeight, this.metadata.end, apiHeadHeight); } protected abstract convertResponseBlocks( result: RawDictionaryResponseData ): DictionaryResponse> | undefined; async getData( startBlock: number, endBlock: number, limit: number = MIN_FETCH_LIMIT, fieldSelector: FieldSelector ): Promise | number> | undefined> { const {conditions, queryEndBlock} = this.getQueryConditions(startBlock, endBlock); if (!conditions || Object.keys(conditions).length === 0) { return undefined; } const requestData = { jsonrpc: '2.0', method: BLOCKS_QUERY_METHOD, id: 1, params: [ { fromBlock: hexStripZeros(numberToHex(startBlock)), toBlock: hexStripZeros(numberToHex(queryEndBlock)), limit: hexStripZeros(numberToHex(limit)), blockFilter: conditions, fieldSelector, }, ], }; try { const response = await this.dictionaryApi.post<{ result?: RawDictionaryResponseData; error?: {code: number; message: string}; }>(this.dictionaryEndpoint, requestData, { headers: { 'Content-Type': 'application/json', }, }); if (response.data.error) { throw new Error(response.data.error.message); } if (!response.data.result) { return undefined; } const result = this.convertResponseBlocks(response.data.result); if (result && result?.lastBufferedHeight === undefined) { result.lastBufferedHeight = Math.min(endBlock, queryEndBlock); } try { this.metadata.end = hexToNumber(response.data.result.blockRange[1]); } catch (e: any) { logger.warn(e, 'Failed to update dictionary metadata from query'); } return result; } catch (error: any) { logger.error(error, `Dictionary query failed. request: ${JSON.stringify(requestData, null, 2)}`); // Handle the error as needed throw new Error(`Dictionary query failed ${error}`); } } queryMapValidByHeight(height: number): boolean { // we can not use map.has method here, has method only return true when value for corresponding key is set // but in BlockHeightMap it need to return any map <= key value, see `getDetails` method try { return !!this.queriesMap?.get(height); } catch (e) { return false; } } protected dictionaryValidation(metaData?: DictionaryV2Metadata, startBlockHeight?: number): boolean { if (metaData === undefined || startBlockHeight === undefined) { return false; } this.metadataValid = this.validateChainMeta(metaData) && startBlockHeight >= this.metadata.start && startBlockHeight < this.metadata.end; return this.metadataValid; } protected validateChainMeta(metaData: DictionaryV2Metadata): boolean { return metaData.genesisHash === this.chainId || metaData.chainId === this.chainId; } } ================================================ FILE: packages/node-core/src/indexer/dictionary/v2/index.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 export * from './types'; export * from './dictionaryV2'; ================================================ FILE: packages/node-core/src/indexer/dictionary/v2/types.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 export interface V2MetadataFilters { [key: string]: string[]; } export interface FieldSelector { [key: string]: boolean | FieldSelector; } export interface RawDictionaryResponseData { blocks: RFB[]; //raw fat blocks blockRange: [string, string]; // Hex encoded numbers genesisHash: string; } export interface DictionaryV2Metadata { start: number; end: number; genesisHash: string; chainId: string; filters: V2MetadataFilters; supported: string[]; } export type DictionaryV2QueryEntry = Record; ================================================ FILE: packages/node-core/src/indexer/ds-processor.service.spec.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import path from 'path'; import {BaseCustomDataSource, BaseDataSource} from '@subql/types-core'; import {GraphQLSchema} from 'graphql'; import {NodeConfig} from '../configure'; import {DsProcessorService} from './ds-processor.service'; import {ISubqueryProject} from './types'; function getTestProject(extraDataSources: BaseCustomDataSource[]): ISubqueryProject { return { id: 'test', root: path.resolve(__dirname, '../../'), network: { chainId: '0x', endpoint: ['wss://polkadot.api.onfinality.io/public-ws'], }, dataSources: [ { kind: 'substrate/Jsonfy', processor: {file: 'test/jsonfy.js'}, startBlock: 1, mapping: { handlers: [{handler: 'testSandbox', kind: 'substrate/JsonfyEvent'}], }, }, ...extraDataSources, ] as any, schema: new GraphQLSchema({}), templates: [], } as unknown as ISubqueryProject; } const nodeConfig = new NodeConfig({ subquery: 'asdf', subqueryName: 'asdf', }); function isCustomDs(ds: BaseDataSource): ds is BaseCustomDataSource { return ds.kind.startsWith('substrate/'); } describe('DsProcessorService', () => { let service: DsProcessorService; let project: ISubqueryProject; beforeEach(() => { project = getTestProject([]); service = new DsProcessorService(project, {isCustomDs} as any, nodeConfig); }); it('can validate custom ds', async () => { await expect(service.validateProjectCustomDatasources(project.dataSources)).resolves.not.toThrow(); }); it('can catch an invalid datasource kind', async () => { const badDs: BaseCustomDataSource = { kind: 'substrate/invalid', processor: {file: 'contract-processors/dist/jsonfy.js'}, assets: new Map([]), mapping: { file: '', handlers: [], }, }; project = getTestProject([badDs]); service = new DsProcessorService(project, {isCustomDs} as any, nodeConfig); await expect(service.validateProjectCustomDatasources(project.dataSources)).rejects.toThrow(); }); it('can run a custom ds processor', () => { const ds = project.dataSources[0]; if (!isCustomDs(ds)) { throw new Error('Expected custom data source'); } expect(() => service.getDsProcessor(ds)).not.toThrow(); }); }); ================================================ FILE: packages/node-core/src/indexer/ds-processor.service.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import fs from 'fs'; import path from 'path'; import {Inject, Injectable} from '@nestjs/common'; import { BaseCustomDataSource, SecondLayerHandlerProcessor_0_0_0, SecondLayerHandlerProcessor_1_0_0, BaseDataSource, DsProcessor, IProjectNetworkConfig, } from '@subql/types-core'; import {VMScript} from 'vm2'; import {IBlockchainService} from '../blockchain.service'; import {NodeConfig} from '../configure'; import {getLogger} from '../logger'; import {Sandbox, SandboxOption} from './sandbox'; import {ISubqueryProject} from './types'; const logger = getLogger('ds-sandbox'); function isSecondLayerHandlerProcessor_0_0_0< InputKinds extends string | symbol, HandlerInput extends Record, BaseHandlerFilters extends Record, F extends Record, E, API, DS extends BaseCustomDataSource = BaseCustomDataSource, >( processor: | SecondLayerHandlerProcessor_0_0_0 | SecondLayerHandlerProcessor_1_0_0 ): processor is SecondLayerHandlerProcessor_0_0_0 { // Existing datasource processors had no concept of specVersion, therefore undefined is equivalent to 0.0.0 return processor.specVersion === undefined; } function isSecondLayerHandlerProcessor_1_0_0< InputKinds extends string | symbol, HandlerInput extends Record, BaseHandlerFilters extends Record, F extends Record, E, API, DS extends BaseCustomDataSource = BaseCustomDataSource, >( processor: | SecondLayerHandlerProcessor_0_0_0 | SecondLayerHandlerProcessor_1_0_0 ): processor is SecondLayerHandlerProcessor_1_0_0 { return processor.specVersion === '1.0.0'; } export function asSecondLayerHandlerProcessor_1_0_0< InputKinds extends string | symbol, HandlerInput extends Record, BaseHandlerFilters extends Record, F extends Record, E, API, DS extends BaseCustomDataSource = BaseCustomDataSource, >( processor: | SecondLayerHandlerProcessor_0_0_0 | SecondLayerHandlerProcessor_1_0_0 ): SecondLayerHandlerProcessor_1_0_0 { if (isSecondLayerHandlerProcessor_1_0_0(processor)) { return processor; } if (!isSecondLayerHandlerProcessor_0_0_0(processor)) { throw new Error('Unsupported ds processor version'); } return { ...processor, specVersion: '1.0.0', filterProcessor: (params) => processor.filterProcessor(params.filter, params.input, params.ds), transformer: (params) => processor.transformer(params.input, params.ds, params.api, params.assets).then((res) => [res]), }; } class DsPluginSandbox

extends Sandbox { constructor(option: Omit, nodeConfig: NodeConfig) { super( option, new VMScript(`module.exports = require('${option.entry}').default;`, path.join(option.root, 'ds_sandbox')), nodeConfig ); this.freeze(logger, 'logger'); } getDsPlugin(): P { return this.run(this.script); } } export function getDsProcessor< P, DS extends BaseDataSource = BaseDataSource, CDS extends DS & BaseCustomDataSource = DS & BaseCustomDataSource, >( ds: CDS, isCustomDs: (ds: any) => boolean, processorCache: Record, root: string, chainId: string, nodeConfig: NodeConfig ): P { if (!isCustomDs(ds)) { throw new Error(`data source is not a custom data source`); } if (!processorCache[ds.processor.file]) { const sandbox = new DsPluginSandbox

( { root: root, entry: ds.processor.file, chainId: chainId, }, nodeConfig ); try { processorCache[ds.processor.file] = sandbox.getDsPlugin(); } catch (e: any) { logger.error(e, `not supported ds @${ds.kind}`); throw e; } } return processorCache[ds.processor.file] as unknown as P; } @Injectable() export class DsProcessorService< DS extends BaseDataSource = BaseDataSource, CDS extends DS & BaseCustomDataSource = DS & BaseCustomDataSource, P extends DsProcessor = DsProcessor, > { private processorCache: Record = {}; constructor( @Inject('ISubqueryProject') private readonly project: ISubqueryProject, @Inject('IBlockchainService') private blockchainService: IBlockchainService, private readonly nodeConfig: NodeConfig ) {} async validateCustomDs(datasources: CDS[]): Promise { for (const ds of datasources) { const processor = this.getDsProcessor(ds); /* Standard validation applicable to all custom ds and processors */ if (ds.kind !== processor.kind) { throw new Error(`ds kind (${ds.kind}) doesnt match processor (${processor.kind})`); } for (const handler of ds.mapping.handlers) { if (!(handler.kind in processor.handlerProcessors)) { throw new Error(`ds kind ${handler.kind} not one of ${Object.keys(processor.handlerProcessors).join(', ')}`); } } ds.mapping.handlers.map((handler) => processor.handlerProcessors[handler.kind].filterValidator(handler.filter)); /* Additional processor specific validation */ processor.validate(ds, await this.getAssets(ds)); } } async validateProjectCustomDatasources(dataSources: DS[]): Promise { await this.validateCustomDs(dataSources.filter((ds) => this.blockchainService.isCustomDs(ds)) as unknown as CDS[]); } getDsProcessor(ds: CDS): P { if (!this.blockchainService.isCustomDs(ds)) { throw new Error(`data source is not a custom data source`); } if (!this.processorCache[ds.processor.file]) { const sandbox = new DsPluginSandbox

( { root: this.project.root, entry: ds.processor.file, chainId: this.project.network.chainId, }, this.nodeConfig ); try { this.processorCache[ds.processor.file] = sandbox.getDsPlugin(); } catch (e: any) { logger.error(e, `not supported ds @${ds.kind}`); throw e; } } return this.processorCache[ds.processor.file] as unknown as P; } // eslint-disable-next-line @typescript-eslint/require-await async getAssets(ds: CDS): Promise> { if (!this.blockchainService.isCustomDs(ds)) { throw new Error(`data source is not a custom data source`); } if (!ds.assets) { return {}; } const res: Record = {}; for (const [name, {file}] of ds.assets) { // TODO update with https://github.com/subquery/subql/pull/511 try { res[name] = fs.readFileSync(file, { encoding: 'utf8', }); } catch (e) { logger.error(`Failed to load datasource asset ${file}`); throw e; } } return res; } } ================================================ FILE: packages/node-core/src/indexer/dynamic-ds.service.spec.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import {BaseDataSource} from '@subql/types-core'; import {IBlockchainService} from '../blockchain.service'; import {DatasourceParams, DynamicDsService} from './dynamic-ds.service'; import {CacheMetadataModel} from './storeModelProvider'; import {ISubqueryProject} from './types'; class TestDynamicDsService extends DynamicDsService { constructor(project: ISubqueryProject) { super(project, { updateDynamicDs: () => Promise.resolve(undefined), // Return the same value } as unknown as IBlockchainService); } // Make it public getTemplate(templateName: string, startBlock?: number): BaseDataSource { return super.getTemplate(templateName, startBlock); } } const testParam1 = {templateName: 'Test', startBlock: 1}; const testParam2 = {templateName: 'Test', startBlock: 2}; const testParam3 = {templateName: 'Test', startBlock: 3}; const testParam4 = {templateName: 'Test', startBlock: 4}; const mockMetadata = (initData: DatasourceParams[] = []) => { let datasourceParams: DatasourceParams[] = initData; return { set: (key: string, value: any) => { datasourceParams = value; }, find: (key: string) => Promise.resolve([...datasourceParams]), // Clone here to make source immutable setNewDynamicDatasource: (params: DatasourceParams) => datasourceParams.push(params), } as unknown as CacheMetadataModel; }; describe('DynamicDsService', () => { let service: TestDynamicDsService; const project = { templates: [{name: 'Test'}], } as any as ISubqueryProject; beforeEach(() => { service = new TestDynamicDsService(project); }); it('loads all datasources and params when init', async () => { await service.init(mockMetadata([testParam1])); await expect(service.getDynamicDatasources()).resolves.toEqual([{startBlock: testParam1.startBlock}]); expect((service as any)._datasourceParams).toEqual([testParam1]); }); it('keeps reference to added dynamic datasources', async () => { const meta = mockMetadata([testParam1]); await service.init(meta); await service.createDynamicDatasource(testParam2); expect((service as any)._datasourceParams).toEqual([testParam1, testParam2]); await expect(meta.find('dynamicDatasources')).resolves.toEqual([testParam1, testParam2]); await expect(service.getDynamicDatasources()).resolves.toEqual([ {startBlock: testParam1.startBlock}, {startBlock: testParam2.startBlock}, ]); }); it('resets dynamic datasources', async () => { const meta = mockMetadata([testParam1, testParam2, testParam3, testParam4]); await service.init(meta); await service.resetDynamicDatasource(2, null as any); await expect(meta.find('dynamicDatasources')).resolves.toEqual([testParam1, testParam2]); await expect(service.getDynamicDatasources()).resolves.toEqual([ {startBlock: testParam1.startBlock}, {startBlock: testParam2.startBlock}, ]); }); it('getDynamicDatasources with force reloads from metadata', async () => { const meta = mockMetadata([testParam1, testParam2]); await service.init(meta); await meta.set('dynamicDatasources', [testParam1, testParam2, testParam3, testParam4]); await expect(service.getDynamicDatasources()).resolves.toEqual([ {startBlock: testParam1.startBlock}, {startBlock: testParam2.startBlock}, ]); await expect(service.getDynamicDatasources(true)).resolves.toEqual([ {startBlock: testParam1.startBlock}, {startBlock: testParam2.startBlock}, {startBlock: testParam3.startBlock}, {startBlock: testParam4.startBlock}, ]); await expect(service.getDynamicDatasources()).resolves.toEqual([ {startBlock: testParam1.startBlock}, {startBlock: testParam2.startBlock}, {startBlock: testParam3.startBlock}, {startBlock: testParam4.startBlock}, ]); }); it('can find a template and cannot mutate the template', () => { const template1 = service.getTemplate('Test', 1); const template2 = service.getTemplate('Test', 2); expect(template1.startBlock).toEqual(1); expect((template1 as any).name).toBeUndefined(); expect(template2.startBlock).toEqual(2); expect((template2 as any).name).toBeUndefined(); expect(project.templates![0]).toEqual({name: 'Test'}); }); }); ================================================ FILE: packages/node-core/src/indexer/dynamic-ds.service.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import {Inject, Injectable} from '@nestjs/common'; import {BaseCustomDataSource, BaseDataSource, BaseTemplateDataSource} from '@subql/types-core'; import {Transaction} from '@subql/x-sequelize'; import {cloneDeep} from 'lodash'; import {IBlockchainService} from '../blockchain.service'; import {getLogger} from '../logger'; import {exitWithError} from '../process'; import {IMetadata} from './storeModelProvider'; import {ISubqueryProject} from './types'; const logger = getLogger('dynamic-ds'); const METADATA_KEY = 'dynamicDatasources'; export interface DatasourceParams { templateName: string; args?: Record; startBlock: number; } export interface IDynamicDsService { dynamicDatasources: DS[]; createDynamicDatasource(params: DatasourceParams): Promise; getDynamicDatasources(forceReload?: boolean): Promise; } @Injectable() export class DynamicDsService implements IDynamicDsService { private _metadata?: IMetadata; private _datasources?: DS[]; private _datasourceParams?: DatasourceParams[]; constructor( @Inject('ISubqueryProject') private readonly project: P, @Inject('IBlockchainService') private readonly blockchainService: IBlockchainService ) {} async init(metadata: IMetadata): Promise { this._metadata = metadata; await this.getDynamicDatasources(true); } get dynamicDatasources(): DS[] { if (!this._datasources) { throw new Error('DynamicDsService has not been initialized'); } return this._datasources; } private get metadata(): IMetadata { if (!this._metadata) { throw new Error('DynamicDsService has not been initialized'); } return this._metadata; } /** * remove dynamic ds that is created after this height * @param targetHeight this height is exclusive */ async resetDynamicDatasource(targetHeight: number, tx: Transaction): Promise { if (this._datasourceParams && this._datasourceParams.length !== 0) { const filteredDs = this._datasourceParams.filter((ds) => ds.startBlock <= targetHeight); await this.metadata.set(METADATA_KEY, filteredDs, tx); await this.loadDynamicDatasources(filteredDs); } } // TODO make tx required async createDynamicDatasource(params: DatasourceParams, tx?: Transaction): Promise { try { const ds = await this.getDatasource(params); await this.metadata.setNewDynamicDatasource(params, tx); logger.info(`Created new dynamic datasource from template: "${params.templateName}"`); if (!this._datasources) this._datasources = []; if (!this._datasourceParams) this._datasourceParams = []; this._datasources.push(ds); this._datasourceParams.push(params); return ds; } catch (e: any) { exitWithError(new Error(`Failed to create dynamic ds`, {cause: e}), logger); } } // Not force only seems to be used for project changes async getDynamicDatasources(forceReload?: boolean): Promise { // Workers should not cache this result in order to keep in sync if (!this._datasources || forceReload) { const params = (await this.metadata.find(METADATA_KEY)) ?? []; await this.loadDynamicDatasources(params); } // loadDynamicDatasources ensures this is set return this._datasources as DS[]; } private async loadDynamicDatasources(params: DatasourceParams[]): Promise { const dataSources = await Promise.all(params.map((params) => this.getDatasource(params))); logger.info(`Loaded ${dataSources.length} dynamic datasources`); this._datasourceParams = params; this._datasources = dataSources; } /** * Finds the template based on name and gives a cloned version that can be used to construct a datasource. * * This will throw if the template cannot be found by name. * * Inserts the startBlock into the template. * */ protected getTemplate(templateName: string, startBlock?: number): DS { const t = (this.project.templates ?? []).find((t) => t.name === templateName); if (!t) { throw new Error(`Unable to find matching template in project for name: "${templateName}"`); } const {name, ...template} = cloneDeep(t); return {...template, startBlock} as DS; } private async getDatasource(params: DatasourceParams): Promise { const dsObj = this.getTemplate(params.templateName, params.startBlock); try { await this.blockchainService.updateDynamicDs(params, dsObj); return dsObj; } catch (e) { throw new Error(`Unable to create dynamic datasource.\n ${(e as any).message}`); } } } ================================================ FILE: packages/node-core/src/indexer/entities/GlobalData.entity.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import {BuildOptions, DataTypes, Model, Sequelize} from '@subql/x-sequelize'; export enum MultiChainRewindStatus { /** Indicates a normal state. Each chain needs to register before starting to sync blocks. */ Normal = 'normal', /** The rewind task has been completed. The rollback height can be determined using rewindTimestamp. */ Complete = 'complete', /** Unprocessed rewind task. The rollback height can be determined using rewindTimestamp. */ Incomplete = 'incomplete', } export interface GlobalData { chainId: string; rewindTimestamp: Date; status: MultiChainRewindStatus; initiator: boolean; } interface GlobalDataEntity extends Model, GlobalData {} export type GlobalDataRepo = typeof Model & { new (values?: unknown, options?: BuildOptions): GlobalDataEntity; }; export function GlobalDataFactory(sequelize: Sequelize, schema: string): GlobalDataRepo { const tableName = '_global'; return sequelize.define( tableName, { chainId: { type: DataTypes.STRING, primaryKey: true, }, rewindTimestamp: { type: DataTypes.DATE, defaultValue: new Date(0), }, status: { type: DataTypes.ENUM, values: [MultiChainRewindStatus.Complete, MultiChainRewindStatus.Incomplete], }, initiator: { type: DataTypes.BOOLEAN, defaultValue: false, }, }, {freezeTableName: true, schema: schema} ); } ================================================ FILE: packages/node-core/src/indexer/entities/Metadata.entity.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import {getMetadataTableName} from '@subql/utils'; import {BuildOptions, DataTypes, Model, QueryTypes, Sequelize} from '@subql/x-sequelize'; import {DatasourceParams} from '../dynamic-ds.service'; import {HistoricalMode} from '../types'; export interface MetadataKeys { chain: string; genesisHash: string; startHeight: number; historicalStateEnabled: HistoricalMode; indexerNodeVersion: string; lastProcessedHeight: number; lastProcessedBlockTimestamp: number; // The unix timestamp of the block in MS lastProcessedTimestamp: string; processedBlockCount: number; blockOffset: number; runnerNode: string; runnerNodeVersion: string; runnerQuery: string; runnerQueryVersion: string; specName: string; lastFinalizedVerifiedHeight: number; indexerHealthy: boolean; targetHeight: number; dynamicDatasources: DatasourceParams[]; unfinalizedBlocks: string; schemaMigrationCount: number; deployments: string; lastCreatedPoiHeight: number; latestSyncedPoiHeight: number; dbSize: bigint; latestPoiWithMmr: string; // Deprecated, keep for poi migration lastPoiHeight: string; // Deprecated, keep for poi migration } export interface Metadata { key: keyof MetadataKeys; value: MetadataKeys[keyof MetadataKeys]; } interface MetadataEntity extends Model, Metadata {} export type MetadataRepo = typeof Model & { new (values?: unknown, options?: BuildOptions): MetadataEntity; }; async function checkSchemaMetadata(sequelize: Sequelize, schema: string, chainId: string): Promise { try { const res = await sequelize.query(`SELECT * FROM "${schema}"._metadata WHERE key = 'genesisHash'`, { type: QueryTypes.SELECT, }); return res[0]?.value === chainId; } catch (e) { return false; } } export async function MetadataFactory( sequelize: Sequelize, schema: string, multichain: boolean, chainId: string ): Promise { let tableName = '_metadata'; if (multichain) { const singularMetadata = await checkSchemaMetadata(sequelize, schema, chainId); if (singularMetadata) { throw new Error( '"_metadata" entry found, for multichain project metadata must match _metadata_[chainId] syntax, please clear schema and reindex with --multichain.' ); } tableName = getMetadataTableName(chainId); } return sequelize.define( tableName, { key: { type: DataTypes.STRING, primaryKey: true, }, value: { type: DataTypes.JSONB, }, }, {freezeTableName: true, schema: schema} ); } ================================================ FILE: packages/node-core/src/indexer/entities/Poi.entity.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import {HexString} from '@polkadot/util/types'; import {BuildOptions, DataTypes, Model, Op, Sequelize} from '@subql/x-sequelize'; export interface ProofOfIndex { id: number; //blockHeight chainBlockHash: Uint8Array | null; hash: Uint8Array | undefined; parentHash: Uint8Array | undefined; operationHashRoot: Uint8Array | null; projectId?: string; } export interface SyncedProofOfIndex extends ProofOfIndex { hash: Uint8Array; parentHash: Uint8Array; } export interface ProofOfIndexHuman extends Omit { chainBlockHash: HexString | undefined; hash: HexString | undefined; parentHash: HexString | undefined; operationHashRoot: HexString | undefined; } export interface PoiModel extends Model, ProofOfIndex {} export type PoiRepo = typeof Model & { new (values?: unknown, options?: BuildOptions): PoiModel; }; // Project Id is deprecated export function PoiFactoryDeprecate(sequelize: Sequelize, schema: string): PoiRepo { return sequelize.define( `_poi`, { id: { type: DataTypes.INTEGER, primaryKey: true, }, chainBlockHash: { type: DataTypes.BLOB, allowNull: false, unique: true, }, hash: { type: DataTypes.BLOB, allowNull: false, unique: true, }, parentHash: { type: DataTypes.BLOB, allowNull: false, unique: true, }, operationHashRoot: { type: DataTypes.BLOB, allowNull: false, }, projectId: { type: DataTypes.STRING, allowNull: false, defaultValue: '0', }, }, { freezeTableName: true, schema: schema, indexes: [{fields: ['hash']}], } ); } export function PoiFactory(sequelize: Sequelize, schema: string): PoiRepo { return sequelize.define( `_poi`, { id: { type: DataTypes.INTEGER, primaryKey: true, }, chainBlockHash: { type: DataTypes.BLOB, allowNull: true, unique: true, }, hash: { type: DataTypes.BLOB, allowNull: true, unique: true, }, parentHash: { type: DataTypes.BLOB, allowNull: true, unique: true, }, operationHashRoot: { type: DataTypes.BLOB, allowNull: true, }, }, { freezeTableName: true, schema: schema, } ); } ================================================ FILE: packages/node-core/src/indexer/entities/index.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 export * from './Poi.entity'; export * from './Metadata.entity'; export * from './GlobalData.entity'; ================================================ FILE: packages/node-core/src/indexer/fetch.service.spec.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import {EventEmitter2} from '@nestjs/event-emitter'; import {SchedulerRegistry} from '@nestjs/schedule'; import {BaseCustomDataSource, BaseDataSource, BaseHandler, BaseMapping, DictionaryQueryEntry} from '@subql/types-core'; import { UnfinalizedBlocksService, BlockDispatcher, delay, Header, IBlock, IBlockDispatcher, IProjectService, NodeConfig, IBlockchainService, ISubqueryProject, DatasourceParams, IBaseIndexerWorker, BypassBlocks, MultiChainRewindService, MultiChainRewindStatus, reindex, getLogger, } from '../'; import {BlockHeightMap} from '../utils/blockHeightMap'; import {DictionaryService} from './dictionary/dictionary.service'; import {FetchService} from './fetch.service'; const CHAIN_INTERVAL = 100; // 100ms class TestFetchService extends FetchService, any> { setBypassBlocks(blocks: BypassBlocks) { this.projectService.bypassBlocks = blocks; } protected buildDictionaryQueryEntries( dataSources: BaseDataSource, BaseMapping>>[] ): DictionaryQueryEntry[] { return []; } protected getModulos(dataSources: BaseDataSource[]): number[] { // This is mocks get modulos, checkes every handler const modulos: number[] = []; for (const ds of dataSources) { for (const handler of ds.mapping.handlers) { if (handler.filter && handler.filter.modulo) { modulos.push(handler.filter.modulo); } } } return modulos; } // Only used in the test to mock `getModulos` outputs mockGetModulos(numbers: number[]): void { this.getModulos = () => numbers; } mockDsMap(blockHeightMap: BlockHeightMap): void { this.projectService.getDataSourcesMap = jest.fn(() => blockHeightMap); } } class TestBlockchainService implements IBlockchainService { finalizedHeight = 1000; bestHeight = 20; blockHandlerKind = ''; packageVersion = '1.0.0'; // eslint-disable-next-line @typescript-eslint/promise-function-async fetchBlocks(blockNums: number[]): Promise[]> { throw new Error('Method not implemented.'); } // eslint-disable-next-line @typescript-eslint/promise-function-async fetchBlockWorker( worker: IBaseIndexerWorker, blockNum: number, context: {workers: IBaseIndexerWorker[]} ): Promise

{ throw new Error('Method not implemented.'); } async getFinalizedHeader(): Promise
{ return Promise.resolve({ blockHeight: this.finalizedHeight, blockHash: '0xxx', parentHash: '0xxx', timestamp: new Date(), }); } async getBestHeight(): Promise { return Promise.resolve(this.bestHeight); } async getChainInterval(): Promise { return Promise.resolve(CHAIN_INTERVAL); } getBlockSize(block: IBlock): number { throw new Error('Not implemented'); } // eslint-disable-next-line @typescript-eslint/promise-function-async getHeaderForHash(hash: string): Promise
{ throw new Error('Method not implemented.'); } // eslint-disable-next-line @typescript-eslint/promise-function-async getHeaderForHeight(height: number): Promise
{ throw new Error('Method not implemented.'); } // eslint-disable-next-line @typescript-eslint/promise-function-async updateDynamicDs( params: DatasourceParams, template: BaseDataSource | (BaseCustomDataSource & BaseDataSource) ): Promise { throw new Error('Method not implemented.'); } isCustomDs(x: BaseDataSource | (BaseCustomDataSource & BaseDataSource)): x is BaseCustomDataSource { throw new Error('Method not implemented.'); } isRuntimeDs(x: BaseDataSource | (BaseCustomDataSource & BaseDataSource)): x is BaseDataSource { throw new Error('Method not implemented.'); } // eslint-disable-next-line @typescript-eslint/promise-function-async getSafeApi(block: any): Promise { throw new Error('Method not implemented.'); } // eslint-disable-next-line @typescript-eslint/promise-function-async onProjectChange(project: ISubqueryProject): Promise | void { throw new Error('Method not implemented.'); } // eslint-disable-next-line @typescript-eslint/promise-function-async getBlockTimestamp(height: number): Promise { throw new Error('Method not implemented.'); } async getRequiredHeaderForHeight(height: number): Promise
{ return (await this.getHeaderForHeight(height)) as any; } } const nodeConfig = new NodeConfig({ subquery: '', batchSize: 10, unfinalizedBlocks: false, networkDictionary: [''], }); const mockDs: BaseDataSource = { kind: 'mock/DataSource', startBlock: 1, mapping: { file: '', handlers: [ { kind: 'mock/Handler', handler: 'mockFunction', }, ], }, }; function mockModuloDs(startBlock: number, endBlock: number, modulo: number): BaseDataSource { return { kind: 'mock/DataSource', startBlock: startBlock, endBlock: endBlock, mapping: { file: '', handlers: [ { kind: 'mock/Handler', handler: 'mockFunction', filter: {modulo: modulo}, }, ], }, }; } const getDictionaryService = () => ({ useDictionary: () => { return false; }, findDictionary: () => { /* TODO*/ }, buildDictionaryEntryMap: () => { /* TODO*/ }, initValidation: () => { /* TODO */ }, scopedDictionaryEntries: () => { /* TODO */ }, initDictionaries: () => { /* TODO */ }, }) as any as DictionaryService; const getBlockDispatcher = () => { const inst = { init: (fn: any) => Promise.resolve(), latestBufferedHeight: 0, batchSize: 10, freeSize: 10, enqueueBlocks: (heights: number[], latestBufferHeight: number) => { (inst as any).freeSize = inst.freeSize - heights.length; inst.latestBufferedHeight = heights.length ? heights[heights.length - 1] : latestBufferHeight; }, flushQueue: (height: number) => { /* TODO */ }, } as BlockDispatcher; return inst; }; jest.mock('../utils/promise', () => { const original = jest.requireActual('../utils/promise'); return { ...original, delay: jest.fn(original.delay), }; }); describe('Fetch Service', () => { let fetchService: TestFetchService; let blockDispatcher: IBlockDispatcher; let dictionaryService: DictionaryService; let dataSources: BaseDataSource[]; let unfinalizedBlocksService: UnfinalizedBlocksService; let blockchainService: TestBlockchainService; const multichainRewindService: MultiChainRewindService = {} as MultiChainRewindService; let projectService: IProjectService; let spyOnEnqueueSequential: jest.SpyInstance< void | Promise, [startBlockHeight: number, scaledBatchSize: number, latestHeight: number] >; let enqueueBlocksSpy: jest.SpyInstance< void | Promise, [heights: (number | IBlock)[], lastBufferedHeight: number] >; beforeEach(() => { dataSources = [mockDs]; const eventEmitter = new EventEmitter2(); const schedulerRegistry = new SchedulerRegistry(); projectService = { getStartBlockFromDataSources: jest.fn(() => Math.min(...dataSources.map((ds) => ds.startBlock ?? 0))), getAllDataSources: jest.fn(() => dataSources), getDataSourcesMap: jest.fn(() => { // XXX this doesn't consider end blocks const x = new Map(); dataSources.map((ds, idx, dss) => { x.set( ds.startBlock ?? 0, dss.filter((d) => (d.startBlock ?? 0) <= (ds.startBlock ?? 0)) ); }); return new BlockHeightMap(x); }), bypassBlocks: [], reindex: jest.fn(), } as any as IProjectService; blockDispatcher = getBlockDispatcher(); dictionaryService = getDictionaryService(); blockchainService = new TestBlockchainService(); unfinalizedBlocksService = { registerFinalizedBlock: jest.fn(), } as unknown as UnfinalizedBlocksService; fetchService = new TestFetchService( nodeConfig, projectService, blockDispatcher, dictionaryService, eventEmitter, schedulerRegistry, unfinalizedBlocksService, { metadata: { set: jest.fn(), }, } as any, blockchainService, multichainRewindService ); spyOnEnqueueSequential = jest.spyOn(fetchService as any, 'enqueueSequential') as any; enqueueBlocksSpy = jest.spyOn(blockDispatcher, 'enqueueBlocks'); }); const enableDictionary = () => { // Mock the remainder of dictionary service so it works (dictionaryService as any).useDictionary = () => jest.fn(() => true); // dictionaryService.queriesMap = new BlockHeightMap(new Map([[1, [{entity: 'mock', conditions: []}]]])); (dictionaryService as any).getDictionary = () => jest.fn(() => { return { queryMapValidByHeight: () => true, startHeight: 1, getQueryEndBlock: () => 1000, }; }); dictionaryService.scopedDictionaryEntries = (start, end, batch) => { return Promise.resolve({ batchBlocks: [2, 4, 6, 8, 10], queryEndBlock: end, _metadata: { lastProcessedHeight: 1000, }, lastBufferedHeight: 1000, }); }; }; const moduloBlockHeightMap = new BlockHeightMap( new Map([ [1, [{...mockModuloDs(1, 100, 20), startBlock: 1, endBlock: 100}]], [ 101, // empty gap for discontinuous block [], ], [201, [{...mockModuloDs(201, 500, 30), startBlock: 201, endBlock: 500}]], // to infinite [500, [{...mockModuloDs(500, Number.MAX_SAFE_INTEGER, 99), startBlock: 500}]], // multiple ds [ 600, [ {...mockModuloDs(500, 800, 99), startBlock: 600, endBlock: 800}, {...mockModuloDs(700, Number.MAX_SAFE_INTEGER, 101), startBlock: 700}, ], ], ]) ); afterEach(() => { fetchService.onApplicationShutdown(); jest.clearAllMocks(); }); it('adds bypassBlocks for empty datasources', async () => { fetchService.mockDsMap( new BlockHeightMap( new Map([ [ 1, [ {...mockDs, startBlock: 1, endBlock: 300}, {...mockDs, startBlock: 1, endBlock: 100}, ], ], [ 10, [ {...mockDs, startBlock: 1, endBlock: 300}, {...mockDs, startBlock: 1, endBlock: 100}, {...mockDs, startBlock: 10, endBlock: 20}, ], ], [ 21, [ {...mockDs, startBlock: 1, endBlock: 300}, {...mockDs, startBlock: 1, endBlock: 100}, ], ], [ 50, [ {...mockDs, startBlock: 1, endBlock: 300}, {...mockDs, startBlock: 1, endBlock: 100}, {...mockDs, startBlock: 50, endBlock: 200}, ], ], [ 101, [ {...mockDs, startBlock: 1, endBlock: 300}, {...mockDs, startBlock: 50, endBlock: 200}, ], ], [201, [{...mockDs, startBlock: 1, endBlock: 300}]], [301, []], [500, [{...mockDs, startBlock: 500}]], ]) ) ); await fetchService.init(1); expect((fetchService as any).getDatasourceBypassBlocks()).toEqual([`301-499`]); }); it('checks chain heads at an interval', async () => { const finalizedSpy = jest.spyOn(blockchainService, 'getFinalizedHeader'); const bestSpy = jest.spyOn(blockchainService, 'getBestHeight'); await fetchService.init(1); // Initial calls within init expect(finalizedSpy).toHaveBeenCalledTimes(1); expect(bestSpy).toHaveBeenCalledTimes(1); await delay((CHAIN_INTERVAL / 1000) * 1.5); // Convert to seconds then half a block interval off expect(finalizedSpy).toHaveBeenCalledTimes(2); expect(bestSpy).toHaveBeenCalledTimes(2); await expect(blockchainService.getFinalizedHeader()).resolves.toMatchObject({ blockHeight: blockchainService.finalizedHeight, blockHash: '0xxx', parentHash: '0xxx', }); }); it('enqueues blocks WITHOUT dictionary', async () => { const dictionarySpy = jest.spyOn(dictionaryService, 'scopedDictionaryEntries'); await fetchService.init(1); expect(enqueueBlocksSpy).toHaveBeenCalledWith([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10); expect(dictionarySpy).toHaveReturnedWith(undefined); // Dictionary not used }); it('enqueues blocks WITH valid dictionary results', async () => { enableDictionary(); const dictionarySpy = jest.spyOn(dictionaryService, 'scopedDictionaryEntries'); await fetchService.init(1); expect(enqueueBlocksSpy).toHaveBeenCalledWith([2, 4, 6, 8, 10], 10); expect(dictionarySpy).toHaveBeenCalled(); }); it('updates the last processed height if the dictionary result is empty', async () => { enableDictionary(); dictionaryService.scopedDictionaryEntries = (start, end, batch) => { return Promise.resolve({ batchBlocks: [], queryEndBlock: end, _metadata: { lastProcessedHeight: 1000, } as any, lastBufferedHeight: 1000, }); }; const dictionarySpy = jest.spyOn(dictionaryService, 'scopedDictionaryEntries'); await fetchService.init(1); // Update the last processed height but not enqueue blocks expect(enqueueBlocksSpy).toHaveBeenCalledWith([], 1000); // Wait and see that it has only called the dictionary once, it should stop using it after that await delay(2); expect(dictionarySpy).toHaveBeenCalledTimes(1); }); it('waits for blockDispatcher to have capacity', async () => { blockDispatcher.freeSize = 0; await fetchService.init(1); // Should not be called as there is capacity expect(enqueueBlocksSpy).not.toHaveBeenCalled(); await delay(1); // Should still not be called but should be checking expect(enqueueBlocksSpy).not.toHaveBeenCalled(); // Add free space and expect blocks to be enqueued blockDispatcher.freeSize = 10; // Loop waits 1s before checking for free space await delay(1); expect(enqueueBlocksSpy).toHaveBeenCalled(); }); it('enqueues modulo blocks WITHOUT dictionary', async () => { // Set modulos to every 3rd block. We only have 1 data source fetchService.mockGetModulos([3]); const dictionarySpy = jest.spyOn(dictionaryService, 'scopedDictionaryEntries'); await fetchService.init(1); // expect((fetchService as any).useDictionary).toBeFalsy(); expect(enqueueBlocksSpy).toHaveBeenCalledWith([3, 6, 9, 12, 15, 18, 21, 24, 27, 30], 30); expect(dictionarySpy).toHaveReturnedWith(undefined); // Dictionary not used }); it('enqueues modulo blocks WITH dictionary', async () => { fetchService.mockGetModulos([3]); enableDictionary(); const dictionarySpy = jest.spyOn(dictionaryService, 'scopedDictionaryEntries'); await fetchService.init(1); // This should include dictionary results interleaved with modulo blocks // [2, 4, 6, 8, 10] + [3, 6, 9, 12, 15, 18]. 18 is included because there is a duplicate of 6 expect(enqueueBlocksSpy).toHaveBeenCalledWith([2, 3, 4, 6, 8, 9, 10, 12, 15, 18], 18); expect(dictionarySpy).not.toHaveReturnedWith(undefined); // Dictionary used }); it('if useModuloHandlersOnly is false, will enqueue sequentially', async () => { // 2 handlers, modulo filter is mixed with other handler const moduloBlockHeightMap2 = new BlockHeightMap( new Map([ [ 600, [ { kind: 'mock/DataSource', startBlock: 600, mapping: { file: '', handlers: [ { kind: 'mock/BlockHandler', handler: 'mockFunction', filter: {modulo: 3}, }, { kind: 'mock/CallHandler', handler: 'mockFunction', }, ], }, }, ], ], ]) ); fetchService.mockDsMap(moduloBlockHeightMap2); await fetchService.init(600); expect(enqueueBlocksSpy).toHaveBeenCalledWith([600, 601, 602, 603, 604, 605, 606, 607, 608, 609], 609); }); // get modulo blocks with multiple dataSource block heights it('enqueue modulo blocks with match height', async () => { fetchService.mockDsMap(moduloBlockHeightMap); await fetchService.init(1); expect(enqueueBlocksSpy).toHaveBeenCalledWith([20, 40, 60, 80, 100], 100); }); it('skip modulo blocks if in that ranges has no data source, it should enqueue nothing', async () => { fetchService.mockDsMap(moduloBlockHeightMap); await fetchService.init(105); // Empty blocks with range end height , 105 + 10 -1 expect(enqueueBlocksSpy).toHaveBeenCalledWith([], 114); }); it('enqueue modulo blocks until next block map start', async () => { fetchService.mockDsMap(moduloBlockHeightMap); await fetchService.init(250); expect(enqueueBlocksSpy).toHaveBeenCalledWith([270, 300, 330, 360, 390, 420, 450, 480], 480); }); it('enqueue modulo blocks when ds has no endHeight, end before next blockHeight key', async () => { fetchService.mockDsMap(moduloBlockHeightMap); await fetchService.init(500); expect(enqueueBlocksSpy).toHaveBeenCalledWith([594], 594); }); it('enqueue modulo blocks with mutiple ds modulo filters', async () => { fetchService.mockDsMap(moduloBlockHeightMap); await fetchService.init(600); expect(enqueueBlocksSpy).toHaveBeenCalledWith([606, 693, 707, 792, 808, 891, 909, 990], 990); }); it('update the LatestBufferHeight when modulo blocks full synced', async () => { fetchService.mockGetModulos([20]); blockchainService.finalizedHeight = 55; // simulate we have synced to block 50, and modulo is 20, next block to handle suppose be 60,80,100... // we will still enqueue 55 to update LatestBufferHeight await fetchService.init(50); expect(enqueueBlocksSpy).toHaveBeenLastCalledWith([], 55); }); it('enqueues modulo blocks correctly', async () => { fetchService.mockGetModulos([150]); dataSources = [ { kind: 'mock/DataSource', startBlock: 1, mapping: { file: '', handlers: [ { kind: 'mock/Handler', handler: 'mockFunction', filter: {}, }, { kind: 'mock/Handler', handler: 'mockFunction', filter: { modulo: 150, }, }, ], }, }, ]; await fetchService.init(2); expect(enqueueBlocksSpy).toHaveBeenLastCalledWith([2, 3, 4, 5, 6, 7, 8, 9, 10, 11], 11); }); it('when enqueue ds endHeight less than modulo height, should not include any modulo', async () => { dataSources = [ { kind: 'mock/DataSource', startBlock: 1, endBlock: 9, mapping: { file: '', handlers: [ { kind: 'mock/Handler', handler: 'mockFunction', filter: {}, }, ], }, }, { kind: 'mock/DataSource', startBlock: 10, mapping: { file: '', handlers: [ { kind: 'mock/Handler', handler: 'mockFunction', filter: { modulo: 150, }, }, ], }, }, ]; // First ds not found modulo will enqueue block until next ds startHeight -1, so it is 9 here await fetchService.init(2); expect(enqueueBlocksSpy).toHaveBeenLastCalledWith([2, 3, 4, 5, 6, 7, 8, 9], 9); }); it('enqueues modulo blocks with furture dataSources', async () => { fetchService.mockGetModulos([3]); dataSources.push({...mockDs, startBlock: 20}); await fetchService.init(1); expect((fetchService as any).useDictionary).toBeFalsy(); // This should include dictionary results interleaved with modulo blocks // [2, 4, 6, 8, 10] + [3, 6, 9, 12, 15, 18]. 18 is included because there is a duplicate of 6 expect(enqueueBlocksSpy).toHaveBeenCalledWith([3, 6, 9, 12, 15, 18], 18); }); it('at the end of modulo block filter, enqueue END should be min of data source range end height and api last height', async () => { // So this will skip next data source fetchService.mockGetModulos([10]); dataSources.push({...mockDs, startBlock: 200}); await fetchService.init(191); expect((fetchService as any).useDictionary).toBeFalsy(); expect(enqueueBlocksSpy).toHaveBeenCalledWith([], 199); }); it('skips bypassBlocks', async () => { fetchService.setBypassBlocks([3]); await fetchService.init(1); expect((fetchService as any).useDictionary).toBeFalsy(); // Note the batch size is smaller because we exclude from the initial batch size expect(enqueueBlocksSpy).toHaveBeenCalledWith([1, 2, 4, 5, 6, 7, 8, 9, 10], 10); }); it('transforms bypassBlocks', async () => { // Set a range so on init its transformed fetchService.setBypassBlocks(['2-5']); await fetchService.init(1); // Note the batch size is smaller because we exclude from the initial batch size expect(enqueueBlocksSpy).toHaveBeenCalledWith([1, 6, 7, 8, 9, 10], 10); }); it('dictionary page limited result and modulo block enqueues correct blocks', async () => { fetchService.mockGetModulos([50]); enableDictionary(); // Increase free size to be greater than batch size blockDispatcher.freeSize = 20; // Return results the size of the batch but less than end dictionaryService.scopedDictionaryEntries = (start, end, batch) => { const blocks = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]; return Promise.resolve({ batchBlocks: blocks, lastBufferedHeight: blocks[blocks.length - 1], }); }; await fetchService.init(1); // Modulo blocks should not be added as we are within batch size expect(enqueueBlocksSpy).toHaveBeenCalledWith([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10); }); it('dictionary dictionary queries to be limited to target block height (finalized/latest depending on settings)', async () => { // Set finalized height behind dict results // This can happen when an RPC endpoint is behind the dictionary enableDictionary(); const FINALIZED_HEIGHT = 10; blockchainService.finalizedHeight = FINALIZED_HEIGHT; // change query end (dictionaryService as any).getDictionary(1).getQueryEndBlock = () => 10; const dictSpy = jest.spyOn(dictionaryService, 'scopedDictionaryEntries'); await fetchService.init(1); expect(dictSpy).toHaveBeenCalledWith(1, FINALIZED_HEIGHT, 10); }); it('throws if the start block is greater than the chain latest height', async () => { await expect(() => fetchService.init(1002)).rejects.toThrow( `The startBlock of dataSources in your project manifest (1002) is higher than the current chain height (1000). Please adjust your startBlock to be less that the current chain height.` ); }); it('should use enqueueSequential if use dictionary fetch failed', async () => { enableDictionary(); (fetchService as any).dictionaryService.scopedDictionaryEntries = () => { throw new Error('Mock dictionary fetch failed'); }; await fetchService.init(10); expect(spyOnEnqueueSequential).toHaveBeenCalledTimes(1); expect(enqueueBlocksSpy).toHaveBeenLastCalledWith([10, 11, 12, 13, 14, 15, 16, 17, 18, 19], 19); }); it(`falls back to sequential blocks if dictionary returns undefined`, async () => { enableDictionary(); (fetchService as any).dictionaryService.scopedDictionaryEntries = () => { return undefined; }; blockchainService.bestHeight = 500; const dictionarySpy = jest.spyOn((fetchService as any).dictionaryService, 'scopedDictionaryEntries'); await fetchService.init(10); expect(dictionarySpy).toHaveBeenCalledTimes(1); expect(spyOnEnqueueSequential).toHaveBeenCalledTimes(1); expect(enqueueBlocksSpy).toHaveBeenLastCalledWith([10, 11, 12, 13, 14, 15, 16, 17, 18, 19], 19); }); it(`doesn't use dictionary if processing near latest height`, async () => { enableDictionary(); (fetchService as any).dictionaryService.scopedDictionaryEntries = () => { return undefined; }; blockchainService.bestHeight = 500; const dictionarySpy = jest.spyOn((fetchService as any).dictionaryService, 'scopedDictionaryEntries'); await fetchService.init(490); expect(dictionarySpy).toHaveBeenCalledTimes(0); expect(spyOnEnqueueSequential).toHaveBeenCalledTimes(1); expect(enqueueBlocksSpy).toHaveBeenLastCalledWith([490, 491, 492, 493, 494, 495, 496, 497, 498, 499], 499); }); it('fetch init when last processed height is same as', async () => { // when last processed height is 1000, finalized height is 1000 await expect(fetchService.init(1001)).resolves.not.toThrow(); }); it('When the index height reaches the dictionary’s lastBufferedHeight, it can enqueue normally.', async () => { enableDictionary(); dictionaryService.scopedDictionaryEntries = (start, end, batch) => { return Promise.resolve({ batchBlocks: [], queryEndBlock: 900, _metadata: { lastProcessedHeight: 900, } as any, lastBufferedHeight: 900, }); }; blockchainService.bestHeight = 1000; const dictionarySpy = jest.spyOn((fetchService as any).dictionaryService, 'scopedDictionaryEntries'); // first enqueue await fetchService.init(10); expect(dictionarySpy).toHaveBeenCalledTimes(1); expect((fetchService as any).blockDispatcher.latestBufferedHeight).toEqual(900); // Second enqueue blockDispatcher.freeSize = 10; await delay(1); expect(dictionarySpy).toHaveBeenCalledTimes(2); expect(spyOnEnqueueSequential).toHaveBeenCalledTimes(1); expect((fetchService as any).blockDispatcher.latestBufferedHeight).toEqual(910); }, 10000); it('MultiChainRewindStatus.Complete message', async () => { const logger = getLogger('FetchService'); const consoleSpy = jest.spyOn(logger, 'info'); (multichainRewindService as any).status = MultiChainRewindStatus.Complete; await fetchService.init(10); expect(consoleSpy).toHaveBeenCalledWith(expect.stringMatching(/Waiting for all chains to complete rewind/)); }); }); ================================================ FILE: packages/node-core/src/indexer/fetch.service.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import assert from 'assert'; import {Inject, Injectable, OnApplicationShutdown} from '@nestjs/common'; import {EventEmitter2} from '@nestjs/event-emitter'; import {SchedulerRegistry} from '@nestjs/schedule'; import {BaseDataSource} from '@subql/types-core'; import {range} from 'lodash'; import {IBlockchainService} from '../blockchain.service'; import {NodeConfig} from '../configure'; import {IndexerEvent} from '../events'; import {getLogger} from '../logger'; import {delay, filterBypassBlocks, getModulos} from '../utils'; import {IBlockDispatcher} from './blockDispatcher'; import {mergeNumAndBlocksToNums} from './dictionary'; import {DictionaryService} from './dictionary/dictionary.service'; import {mergeNumAndBlocks} from './dictionary/utils'; import {MultiChainRewindStatus} from './entities'; import {MultiChainRewindService} from './multiChainRewind.service'; import {IStoreModelProvider} from './storeModelProvider'; import {BypassBlocks, IBlock, IProjectService} from './types'; import {IUnfinalizedBlocksServiceUtil} from './unfinalizedBlocks.service'; const logger = getLogger('FetchService'); // Unit is ms const multiChainRewindDelay = 3; @Injectable() export class FetchService, FB> implements OnApplicationShutdown { private _latestBestHeight?: number; private _latestFinalizedHeight?: number; private isShutdown = false; constructor( private nodeConfig: NodeConfig, @Inject('IProjectService') protected projectService: IProjectService, @Inject('IBlockDispatcher') protected blockDispatcher: B, protected dictionaryService: DictionaryService, private eventEmitter: EventEmitter2, private schedulerRegistry: SchedulerRegistry, @Inject('IUnfinalizedBlocksService') private unfinalizedBlocksService: IUnfinalizedBlocksServiceUtil, @Inject('IStoreModelProvider') private storeModelProvider: IStoreModelProvider, @Inject('IBlockchainService') private blockchainSevice: IBlockchainService, private multiChainRewindService: MultiChainRewindService ) {} private get latestBestHeight(): number { assert(this._latestBestHeight !== undefined, new Error('Latest Best Height is not available')); return this._latestBestHeight; } private get latestFinalizedHeight(): number { // Devnets don't always finalize blocks, in those cases we set the finalized block to be 0 and we need to specifically check for undefined here. assert(this._latestFinalizedHeight !== undefined, new Error('Latest Finalized Height is not available')); return this._latestFinalizedHeight; } protected getModulos(dataSources: DS[]): number[] { return getModulos(dataSources, this.blockchainSevice.isCustomDs, this.blockchainSevice.blockHandlerKind); } onApplicationShutdown(): void { try { this.schedulerRegistry.deleteInterval('getFinalizedBlockHead'); this.schedulerRegistry.deleteInterval('getBestBlockHead'); } catch (e) { //ignore if interval not exist } this.isShutdown = true; } async init(startHeight: number): Promise { const interval = await this.blockchainSevice.getChainInterval(); await Promise.all([this.getFinalizedBlockHead(), this.getBestBlockHead()]); const chainLatestHeight = this.latestHeight(); if (startHeight > chainLatestHeight) { // This is at init stage, lastProcessedHeight should be always - 1 from the startHeight in this case // this is reverse calculated from projectService.nextProcessHeight() // Alternative, we can expose async function getLastProcessedHeight() to ensure accuracy. if (startHeight - 1 === chainLatestHeight) { logger.warn( `Project last processed height is same as current chain height (${chainLatestHeight}). Please ensure the RPC endpoint provider is behaving correctly.` ); } else { throw new Error( `The startBlock of dataSources in your project manifest (${startHeight}) is higher than the current chain height (${chainLatestHeight}). Please adjust your startBlock to be less that the current chain height.` ); } } this.schedulerRegistry.addInterval( 'getFinalizedBlockHead', setInterval(() => void this.getFinalizedBlockHead(), interval) ); this.schedulerRegistry.addInterval( 'getBestBlockHead', setInterval(() => void this.getBestBlockHead(), interval) ); await this.dictionaryService.initDictionaries(); // Update all dictionaries execute before find one usable dictionary this.updateDictionary(); // Find one usable dictionary at start await this.blockDispatcher.init(this.resetForNewDs.bind(this)); void this.startLoop(startHeight); } private updateDictionary(): void { return this.dictionaryService.buildDictionaryEntryMap(this.projectService.getDataSourcesMap()); } async getFinalizedBlockHead(): Promise { try { const currentFinalizedHeader = await this.blockchainSevice.getFinalizedHeader(); // Rpc could return finalized height below last finalized height due to unmatched nodes, and this could lead indexing stall // See how this could happen in https://gist.github.com/jiqiang90/ea640b07d298bca7cbeed4aee50776de if ( this._latestFinalizedHeight === undefined || currentFinalizedHeader.blockHeight > this._latestFinalizedHeight ) { this._latestFinalizedHeight = currentFinalizedHeader.blockHeight; this.unfinalizedBlocksService.registerFinalizedBlock(currentFinalizedHeader); if (!this.nodeConfig.unfinalizedBlocks) { this.eventEmitter.emit(IndexerEvent.BlockTarget, { height: this.latestFinalizedHeight, }); } } } catch (e: any) { logger.error(e, `Having a problem when getting finalized block`); } } async getBestBlockHead(): Promise { try { const currentBestHeight = await this.blockchainSevice.getBestHeight(); if (this._latestBestHeight !== currentBestHeight) { this._latestBestHeight = currentBestHeight; this.eventEmitter.emit(IndexerEvent.BlockBest, { height: this.latestBestHeight, }); if (this.nodeConfig.unfinalizedBlocks) { this.eventEmitter.emit(IndexerEvent.BlockTarget, { height: this.latestBestHeight, }); } } } catch (e: any) { logger.error(e, `Having a problem when getting best block`); } } private async startLoop(initBlockHeight: number): Promise { await this.fillNextBlockBuffer(initBlockHeight); } private latestHeight(): number { return this.nodeConfig.unfinalizedBlocks ? this.latestBestHeight : this.latestFinalizedHeight; } // eslint-disable-next-line complexity async fillNextBlockBuffer(initBlockHeight: number): Promise { let startBlockHeight: number; let scaledBatchSize: number; const getStartBlockHeight = (): number => { return this.blockDispatcher.latestBufferedHeight ? this.blockDispatcher.latestBufferedHeight + 1 : initBlockHeight; }; while (!this.isShutdown) { startBlockHeight = getStartBlockHeight(); scaledBatchSize = this.blockDispatcher.batchSize; const latestHeight = this.latestHeight(); if (this.blockDispatcher.freeSize < scaledBatchSize || startBlockHeight > latestHeight) { if (this.blockDispatcher.freeSize < scaledBatchSize) { logger.debug( `Fetch service is waiting for free space in the block dispatcher queue, free size: ${this.blockDispatcher.freeSize}, scaledBatchSize: ${scaledBatchSize}` ); } if (startBlockHeight > latestHeight) { logger.debug( `Fetch service is waiting for new blocks, startBlockHeight: ${startBlockHeight}, latestHeight: ${latestHeight}` ); } await delay(1); continue; } // Update the target height, this happens here to stay in sync with the rest of indexing void this.storeModelProvider.metadata.set('targetHeight', latestHeight); // If we're rewinding, we should wait until it's done const multiChainStatus = this.multiChainRewindService.status; if (MultiChainRewindStatus.Complete === multiChainStatus) { logger.info( `Waiting for all chains to complete rewind, current chainId: ${this.multiChainRewindService.chainId}` ); await delay(multiChainRewindDelay); continue; } // This could be latestBestHeight, dictionary should never include finalized blocks // TODO add buffer so dictionary not used when project synced if (startBlockHeight < this.latestBestHeight - scaledBatchSize) { try { const dictionary = await this.dictionaryService.scopedDictionaryEntries( startBlockHeight, scaledBatchSize, latestHeight ); if (startBlockHeight !== getStartBlockHeight()) { logger.debug(`Queue was reset for new DS, discarding dictionary query result`); continue; } if (dictionary) { const {batchBlocks, lastBufferedHeight} = dictionary; // the last block returned from batch should have max height in this batch const mergedBlocks = mergeNumAndBlocks( this.getModuloBlocks(startBlockHeight, lastBufferedHeight), batchBlocks ); if (mergedBlocks.length === 0) { // There we're no blocks in this query range, we can set a new height we're up to if (startBlockHeight <= lastBufferedHeight) { await this.enqueueBlocks([], lastBufferedHeight); } else { // Exceeds the dictionary search height await this.enqueueSequential(startBlockHeight, scaledBatchSize, latestHeight); } } else { const maxBlockSize = Math.min(mergedBlocks.length, this.blockDispatcher.freeSize); const enqueueBlocks = mergedBlocks.slice(0, maxBlockSize); await this.enqueueBlocks(enqueueBlocks, latestHeight); } continue; // skip nextBlockRange() way } else { await this.enqueueSequential(startBlockHeight, scaledBatchSize, latestHeight); } } catch (e: any) { logger.debug(`Fetch dictionary stopped: ${e.message}`); this.eventEmitter.emit(IndexerEvent.SkipDictionary); await this.enqueueSequential(startBlockHeight, scaledBatchSize, latestHeight); } } else { await this.enqueueSequential(startBlockHeight, scaledBatchSize, latestHeight); } } } // get all modulo numbers with a specific block ranges private getModuloBlocks(startHeight: number, endHeight: number): number[] { // Find relevant ds const {endHeight: rangeEndHeight, value: relevantDS} = this.getRelevantDsDetails(startHeight); const moduloNumbers = this.getModulos(relevantDS); // no modulos in the filters been found in current ds if (!moduloNumbers.length) return []; const maxModulosBlockHeight = this.nodeConfig.batchSize * Math.max(...moduloNumbers) + startHeight; const moduloEndHeight = Math.min(rangeEndHeight ?? Number.MAX_SAFE_INTEGER, maxModulosBlockHeight, endHeight); const moduloBlocks: number[] = []; for (let i = startHeight; i <= moduloEndHeight; i++) { if (moduloNumbers.find((m) => i % m === 0)) { moduloBlocks.push(i); } } return moduloBlocks; } /** * * @param startBlockHeight * @param endBlockHeight is either FinalizedHeight or BestHeight, ensure ModuloBlocks not greater than this number */ private getEnqueuedModuloBlocks(startBlockHeight: number, endBlockHeight: number): (IBlock | number)[] { return this.getModuloBlocks(startBlockHeight, endBlockHeight).slice(0, this.nodeConfig.batchSize); } private useModuloHandlersOnly(relevantDS: DS[]): boolean { // If there are modulos handlers only, then number of moduloNumbers should be match number of with handlers const moduloNumbers = this.getModulos(relevantDS); const handlers = [...relevantDS.map((ds) => ds.mapping.handlers)].flat(); return !!handlers.length && moduloNumbers.length === handlers.length; } private getRelevantDsDetails(startBlockHeight: number): {endHeight: number | undefined; value: DS[]} { const details = this.projectService.getDataSourcesMap().getDetails(startBlockHeight); assert(details, `Datasources not found for height ${startBlockHeight}`); return {endHeight: details.endHeight, value: details.value}; } // Enqueue block sequentially private async enqueueSequential( startBlockHeight: number, scaledBatchSize: number, latestHeight: number ): Promise { // End height from current dataSource const {endHeight, value: relevantDs} = this.getRelevantDsDetails(startBlockHeight); // Estimated range end height const estRangeEndHeight = Math.min( endHeight ?? Number.MAX_SAFE_INTEGER, this.nextEndBlockHeight(startBlockHeight, scaledBatchSize), latestHeight ); const enqueuingBlocks = this.useModuloHandlersOnly(relevantDs) ? this.getEnqueuedModuloBlocks(startBlockHeight, latestHeight) : range(startBlockHeight, estRangeEndHeight + 1); await this.enqueueBlocks(enqueuingBlocks, estRangeEndHeight); } private async enqueueBlocks(enqueuingBlocks: (IBlock | number)[], latestHeight: number): Promise { const cleanedBatchBlocks = filterBypassBlocks(enqueuingBlocks, [ ...this.projectService.bypassBlocks, ...this.getDatasourceBypassBlocks(), ]); await this.blockDispatcher.enqueueBlocks( cleanedBatchBlocks, this.getLatestBufferHeight(enqueuingBlocks, latestHeight) ); } /** * * @param rawBatchBlocks * @param latestHeight * @private */ private getLatestBufferHeight(rawBatchBlocks: (IBlock | number)[], latestHeight: number): number { // When both BatchBlocks are empty, mean no blocks to enqueue and full synced, // we are safe to update latestBufferHeight to this number if (rawBatchBlocks.length === 0) { return latestHeight; } return Math.max(...mergeNumAndBlocksToNums([], rawBatchBlocks)); } /** * If a projects datasources are not continuious we can add add them to the bypass blocks * */ private getDatasourceBypassBlocks(): BypassBlocks { const datasources = this.projectService.getDataSourcesMap().getAll(); const heights = Array.from(datasources.keys()); const bypassBlocks: BypassBlocks = []; for (let i = 0; i < heights.length - 1; i++) { const currentHeight = heights[i]; const nextHeight = heights[i + 1]; const currentDS = datasources.get(currentHeight); // If the value for the current height is an empty array, then it's a gap if (currentDS?.length === 0) { bypassBlocks.push(`${currentHeight}-${nextHeight - 1}`); } } return bypassBlocks; } private nextEndBlockHeight(startBlockHeight: number, scaledBatchSize: number): number { let endBlockHeight = startBlockHeight + scaledBatchSize - 1; if (endBlockHeight > this.latestFinalizedHeight) { if (this.nodeConfig.unfinalizedBlocks) { if (endBlockHeight >= this.latestBestHeight) { endBlockHeight = this.latestBestHeight; } } else { endBlockHeight = this.latestFinalizedHeight; } } return endBlockHeight; } resetForNewDs(blockHeight: number): void { this.updateDictionary(); this.blockDispatcher.flushQueue(blockHeight); } getLatestFinalizedHeight(): number { return this.latestFinalizedHeight; } } ================================================ FILE: packages/node-core/src/indexer/inMemoryCache.service.spec.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import {InMemoryCacheService} from './inMemoryCache.service'; describe('InMemoryCacheService', () => { let service: InMemoryCacheService; beforeEach(() => { service = new InMemoryCacheService(); }); it('should be created', () => { expect(service).toBeTruthy(); }); it('should set and get value correctly', async () => { const cache = service.getCache(); // Test with string await cache.set('testKey', 'testValue'); const fetched_string = await cache.get('testKey'); expect(fetched_string).toEqual('testValue'); // Test with number await cache.set('testKey2', 123); const fetched_number = await cache.get('testKey2'); expect(fetched_number).toEqual(123); // Test with object const obj = {prop: 'value'}; await cache.set('testKey3', obj); const fetched_object = await cache.get('testKey3'); expect(fetched_object).toEqual(obj); }); it('should return undefined if key does not exist', async () => { const cache = service.getCache(); const fetched = await cache.get('nonExistentKey'); expect(fetched).toBeUndefined(); }); }); ================================================ FILE: packages/node-core/src/indexer/inMemoryCache.service.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import {Injectable} from '@nestjs/common'; import {Cache} from '@subql/types-core'; /** * The `InMemoryCacheService` class provides an in-memory caching solution. * It's designed to temporarily store data that doesn't need to be persisted in a database. * The service is injectable and designed to be used within the sandbox */ @Injectable() export class InMemoryCacheService = Record> { private cache: T = {} as T; getCache(): Cache { return { //eslint-disable-next-line @typescript-eslint/require-await get: async (key: keyof T): Promise => { return this.cache[key]; }, //eslint-disable-next-line @typescript-eslint/require-await set: async (key: keyof T, value: T[keyof T]): Promise => { this.cache[key] = value; }, }; } } ================================================ FILE: packages/node-core/src/indexer/index.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 export * from './connectionPool.service'; export * from './connectionPoolState.manager'; export * from './entities'; export * from './poi'; export * from './types'; export * from './StoreOperations'; export * from './store.service'; export * from './inMemoryCache.service'; export * from './storeModelProvider'; export * from './worker'; export * from './dictionary'; export * from './sandbox'; export * from './sandbox.service'; export * from './blockDispatcher'; export * from './dynamic-ds.service'; export * from './testing.service'; export * from './test.runner'; export * from './project.service'; export * from './fetch.service'; export * from './indexer.manager'; export * from './ds-processor.service'; export * from './unfinalizedBlocks.service'; export * from './monitor.service'; export * from './multiChainRewind.service'; export * from './core.module'; ================================================ FILE: packages/node-core/src/indexer/indexer.manager.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import assert from 'assert'; import {BaseCustomDataSource, BaseDataSource, IProjectNetworkConfig} from '@subql/types-core'; import {IApi} from '../api.service'; import {IBlockchainService} from '../blockchain.service'; import {NodeConfig} from '../configure'; import {getLogger} from '../logger'; import {exitWithError, monitorWrite} from '../process'; import {profilerWrap} from '../profiler'; import {handledStringify} from './../utils'; import {ProcessBlockResponse} from './blockDispatcher'; import {asSecondLayerHandlerProcessor_1_0_0, DsProcessorService} from './ds-processor.service'; import {DynamicDsService} from './dynamic-ds.service'; import {IndexerSandbox} from './sandbox'; import {Header, IBlock, IIndexerManager, ISubqueryProject} from './types'; import {IUnfinalizedBlocksService} from './unfinalizedBlocks.service'; const logger = getLogger('indexer'); export type HandlerKinds = string[]; export type FilterTypeMap = Record< string, (data: any, filter: any, ds: DS) => boolean >; export type ProcessorTypeMap> = { [K in keyof FM]: (data: any) => boolean; }; export type HandlerInputTypeMap> = {[K in keyof FM]: any}; export interface CustomHandler> { handler: string; kind: K; filter?: F; } export abstract class BaseIndexerManager< A, // Api Type SA, // SafeApi Type B, // Block Type API extends IApi[]>, DS extends BaseDataSource, CDS extends DS & BaseCustomDataSource, // Custom datasource FilterMap extends FilterTypeMap, ProcessorMap extends ProcessorTypeMap, HandlerInputMap extends HandlerInputTypeMap, > implements IIndexerManager { abstract indexBlock(block: IBlock, datasources: DS[]): Promise; protected abstract indexBlockData( block: B, dataSources: DS[], getVM: (d: DS) => Promise ): Promise; // This is used by Ethereum to parse logs and transaction data with ABIs protected abstract prepareFilteredData(kind: keyof FilterMap, data: T, ds: DS): Promise; constructor( protected readonly apiService: API, protected readonly nodeConfig: NodeConfig, protected sandboxService: {getDsProcessor: (ds: DS, api: SA, unsafeApi: A) => IndexerSandbox}, private dsProcessorService: DsProcessorService, private dynamicDsService: DynamicDsService, private unfinalizedBlocksService: IUnfinalizedBlocksService, private filterMap: FilterMap, private processorMap: ProcessorMap, protected blockchainService: IBlockchainService, SA, B, B> ) { logger.info('indexer manager start'); } /** * This function can be overwritten to provide extra values to the sandbox * E.g Cosmos injecting the registry * */ protected getDsProcessor(ds: DS, safeApi: SA): IndexerSandbox { return this.sandboxService.getDsProcessor(ds, safeApi, this.apiService.unsafeApi); } protected async internalIndexBlock( block: IBlock, dataSources: DS[], getApi: () => Promise ): Promise { let dynamicDsCreated = false; const blockHeight = block.getHeader().blockHeight; monitorWrite(`- BlockHash: ${block.getHeader().blockHash}`); const filteredDataSources = this.filterDataSources(blockHeight, dataSources); this.assertDataSources(filteredDataSources, blockHeight); let apiAt: SA; const reindexBlockHeader = (await this.processUnfinalizedBlocks(block)) ?? null; // Only index block if we're not going to reindex if (!reindexBlockHeader) { await this.indexBlockData(block.block, filteredDataSources, async (ds: DS) => { // Injected runtimeVersion from fetch service might be outdated apiAt ??= await getApi(); const vm = this.getDsProcessor(ds, apiAt); // Inject function to create ds into vm vm.freeze(async (templateName: string, args?: Record) => { const newDs = await this.dynamicDsService.createDynamicDatasource({ templateName, args, startBlock: blockHeight, }); // Push the newly created dynamic ds to be processed this block on any future extrinsics/events filteredDataSources.push(newDs); dynamicDsCreated = true; }, 'createDynamicDatasource'); return vm; }); } return { dynamicDsCreated, reindexBlockHeader, }; } protected async processUnfinalizedBlocks(block: IBlock): Promise
{ if (this.nodeConfig.unfinalizedBlocks) { return this.unfinalizedBlocksService.processUnfinalizedBlocks(block); } } private filterDataSources(nextProcessingHeight: number, dataSources: DS[]): DS[] { let filteredDs: DS[]; filteredDs = dataSources.filter( (ds) => ds.startBlock !== undefined && ds.startBlock <= nextProcessingHeight && (ds.endBlock ?? Number.MAX_SAFE_INTEGER) >= nextProcessingHeight ); // perform filter for custom ds filteredDs = filteredDs.filter((ds) => { if (this.blockchainService.isCustomDs(ds)) { return this.dsProcessorService.getDsProcessor(ds).dsFilterProcessor(ds, this.apiService.unsafeApi); } else { return true; } }); return filteredDs; } private assertDataSources(ds: DS[], blockHeight: number) { if (!ds.length) { exitWithError( `Issue detected with data sources: \n Either all data sources have a 'startBlock' greater than the current indexed block height (${blockHeight}), or they have an 'endBlock' less than the current block. \n Solution options: \n 1. Adjust 'startBlock' in project.yaml to be less than or equal to ${blockHeight}, and 'endBlock' to be greater than or equal to ${blockHeight}. \n 2. Delete your database and start again with the currently specified 'startBlock' and 'endBlock'.`, logger ); } } protected async indexData( kind: K, data: HandlerInputMap[K], ds: DS, getVM: (ds: DS) => Promise ): Promise { assert(this.filterMap[kind], `Unsupported handler kind: ${kind.toString()}`); if (this.blockchainService.isRuntimeDs(ds)) { const handlers = ds.mapping.handlers.filter( (h) => h.kind === kind && this.filterMap[kind](data as any, h.filter, ds) ); if (!handlers.length) { return; } const parsedData = await this.prepareFilteredData(kind, data, ds); const vm = await getVM(ds); for (const handler of handlers) { monitorWrite( () => `- Handler: ${handler.handler}, args:${handledStringify(data, this.nodeConfig.monitorObjectMaxDepth)}` ); if (this.nodeConfig.profiler) { await profilerWrap( vm.securedExec.bind(vm), 'handlerPerformance', handler.handler )(handler.handler, [parsedData]); } else { await vm.securedExec(handler.handler, [parsedData]); } } } else if (this.blockchainService.isCustomDs(ds)) { const handlers = this.filterCustomDsHandlers(ds, data, this.processorMap[kind], (data, baseFilter) => { if (!baseFilter.length) return true; return baseFilter.find((filter) => this.filterMap[kind](data, filter, ds)); }); if (!handlers.length) { return; } const vm = await getVM(ds); for (const handler of handlers) { monitorWrite( () => `- Handler: ${handler.handler}, args:${handledStringify(data, this.nodeConfig.monitorObjectMaxDepth)}` ); await this.transformAndExecuteCustomDs(ds, vm, handler, data); } } } private filterCustomDsHandlers( ds: CDS, //SubstrateCustomDataSource, data: HandlerInputMap[K], baseHandlerCheck: ProcessorMap[K], baseFilter: (data: HandlerInputMap[K], baseFilter: any[]) => boolean ): CustomHandler[] { const plugin = this.dsProcessorService.getDsProcessor(ds); return ds.mapping.handlers .filter((handler) => { const processor = plugin.handlerProcessors[handler.kind]; if (baseHandlerCheck(processor)) { return baseFilter(data, processor.baseFilter); } return false; }) .filter((handler) => { const processor = asSecondLayerHandlerProcessor_1_0_0(plugin.handlerProcessors[handler.kind]); try { return processor.filterProcessor({ filter: handler.filter, input: data, ds, }); } catch (e: any) { logger.error(e, 'Failed to run ds processer filter.'); throw e; } }); } private async transformAndExecuteCustomDs( ds: CDS, //SubstrateCustomDataSource, vm: IndexerSandbox, handler: CustomHandler, data: HandlerInputMap[K] ): Promise { const plugin = this.dsProcessorService.getDsProcessor(ds); const assets = await this.dsProcessorService.getAssets(ds); const processor = asSecondLayerHandlerProcessor_1_0_0(plugin.handlerProcessors[handler.kind]); const transformedData = await processor .transformer({ input: data, ds, filter: handler.filter, api: this.apiService.unsafeApi, assets, }) .catch((e: any) => { logger.error(e, 'Failed to transform data with ds processor.'); throw e; }); // We can not run this in parallel. the transformed data items may be dependent on one another. // An example of this is with Acala EVM packing multiple EVM logs into a single Substrate event for (const _data of transformedData) { await vm.securedExec(handler.handler, [_data]); } } } ================================================ FILE: packages/node-core/src/indexer/monitor.service.test.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import fs from 'fs'; import path from 'path'; import {makeTempDir} from '@subql/common'; import {NodeConfig} from '../configure'; import {MonitorService} from './monitor.service'; class testMonitorService extends MonitorService { testGetBlockIndexEntries(height: number) { return (this as any).getBlockIndexEntries(height); } testResetFile(file: 'A' | 'B') { return (this as any).resetFile(file); } testRemoveIndexFile() { fs.rmSync((this as any).indexPath); } testInit() { (this as any).init(); } testWrite(blockData: string) { (this as any).write(blockData); } resetService() { (this as any)._cachedFileStats = undefined; (this as any)._currentFile = undefined; (this as any).currentIndexHeight = undefined; } } function removeLinesFromFile(filePath: string, startLine: number, endLine: number): void { try { const fileContent = fs.readFileSync(filePath, 'utf-8'); const lines = fileContent.split('\n'); lines.splice(startLine - 1, endLine - startLine + 1); const updatedContent = lines.join('\n'); fs.writeFileSync(filePath, updatedContent, 'utf-8'); console.log(`Lines ${startLine}-${endLine} removed successfully from ${filePath}`); } catch (error) { console.error(`Error removing lines from file: ${error}`); } } describe('Monitor service', () => { let monitorDir: string; let monitorService1: testMonitorService; let nodeConfig: NodeConfig; beforeEach(async () => { monitorDir = await makeTempDir(); nodeConfig = {monitorOutDir: monitorDir, monitorFileSize: 1024, dbSchema: 'test-db'} as NodeConfig; monitorService1 = new testMonitorService(nodeConfig); monitorService1.resetAll(); }); afterEach(() => { fs.rmSync(monitorDir, {recursive: true, force: true}); }); function mockWriteBlockData(blockHeight: number, monitorService: testMonitorService = monitorService1) { monitorService.createBlockStart(blockHeight); monitorService.testWrite(`fetch block ${blockHeight}`); monitorService.testWrite(`processing block ${blockHeight}`); monitorService.testWrite(`block handler ${blockHeight}`); monitorService.testWrite(`event handler ${blockHeight}, data :{entity: starter,{}}`); monitorService.testWrite('post process'); monitorService.testWrite(`----- end block ${blockHeight}`); } it('monitor could write data', async () => { mockWriteBlockData(55); await expect(monitorService1.getBlockIndexRecords(55)).resolves.toContain('+++++ Start block 55'); await expect(monitorService1.getBlockIndexRecords(55)).resolves.toContain('fetch block 55'); await expect(monitorService1.getBlockIndexRecords(55)).resolves.toContain('----- end block 55'); }); it('reset file', () => { mockWriteBlockData(55); monitorService1.testResetFile('A'); // should get nothing from entries expect(monitorService1.testGetBlockIndexEntries(55)).toStrictEqual([]); }); it('when write one file is full, it could rotate to next file, and could getBlockIndexEntries, getBlockIndexRecords', async () => { const monitorService2 = new testMonitorService(nodeConfig); // set to small size, so it could rotate (monitorService2 as any).monitorFileSize = 150; const spySwitchFile = jest.spyOn(monitorService2 as any, 'switchToFile'); const spyInitCacheFileStats = jest.spyOn(monitorService2 as any, 'initCacheFileStats'); monitorService2.resetAll(); const writeBlocks = [2, 5, 15, 25, 35, 55]; for (const height of writeBlocks) { mockWriteBlockData(height, monitorService2); } expect(spySwitchFile).toHaveBeenCalledTimes(5); // rotate file many times, but FileStats should on been fetched once at init expect(spyInitCacheFileStats).toHaveBeenCalledTimes(1); // getBlockIndexEntries expect(monitorService2.testGetBlockIndexEntries(25)).toStrictEqual([]); expect(monitorService2.testGetBlockIndexEntries(35)).toStrictEqual([ { blockHeight: 35, endLine: 5, file: 'A', forked: false, startLine: 0, }, ]); expect(monitorService2.testGetBlockIndexEntries(55)).toStrictEqual( // return two indexes as switch files, start in file A, end in file B [ { blockHeight: 55, endLine: 7, file: 'A', forked: false, startLine: 6, }, { blockHeight: 55, endLine: 5, file: 'B', forked: false, startLine: 0, }, ] ); // getBlockIndexRecords await expect(monitorService2.getBlockIndexRecords(2)).resolves.toBeUndefined(); await expect(monitorService2.getBlockIndexRecords(55)).resolves.toStrictEqual([ '+++++ Start block 55', 'fetch block 55', 'processing block 55', 'block handler 55', 'event handler 55, data :{entity: starter,{}}', 'post process', '----- end block 55', ]); }); it('handle block forks happens', async () => { // set to small size, so it could rotate const monitorService2 = new testMonitorService(nodeConfig); monitorService2.resetAll(); const beforeForkBlocks = [100, 105, 300]; for (const height of beforeForkBlocks) { mockWriteBlockData(height, monitorService2); } monitorService2.createBlockFork(102); const afterForkBlocks = [103, 105, 109, 300]; for (const height of afterForkBlocks) { mockWriteBlockData(height, monitorService2); } monitorService2.createBlockFork(200); await expect(monitorService2.getForkedRecords()).resolves.toStrictEqual([ '***** Forked at block 102', '***** Forked at block 200', ]); expect(monitorService2.getBlockIndexHistory()).toStrictEqual( // block 300 continued to file B, but we only keep one record here [100, 105, 300, 'Forked 102', 103, 105, 109, 300, 'Forked 200'] ); }); it('init validation failed it could reset by itself', () => { const monitorService2 = new testMonitorService(nodeConfig); const beforeForkBlocks = [100, 105, 300]; for (const height of beforeForkBlocks) { mockWriteBlockData(height, monitorService2); } const spyResetAll = jest.spyOn(monitorService2, 'resetAll'); // Case 1 .Mock index file is lost monitorService2.testRemoveIndexFile(); monitorService2.testInit(); expect(spyResetAll).toHaveBeenCalledTimes(1); jest.clearAllMocks(); // Case 2 .Mock last index record block file is lost // Rewrite some data first for (const height of beforeForkBlocks) { mockWriteBlockData(height, monitorService2); } const lastIndexEntries = monitorService2.testGetBlockIndexEntries(300); // Mock file lost fs.rmSync((monitorService2 as any).getFilePath(lastIndexEntries[lastIndexEntries.length - 1].file)); monitorService2.testInit(); expect(spyResetAll).toHaveBeenCalledTimes(1); jest.clearAllMocks(); // Case 3 .Mock last index entry and corresponding file is found , but file is broken/missing records // Rewrite some data first for (const height of beforeForkBlocks) { mockWriteBlockData(height, monitorService2); } const block300Entry = monitorService2.testGetBlockIndexEntries(300)[0]; // Mock lost block 300 record before init (We are not expect to loss any data during indexing, we can not handle this as file stats are cached) removeLinesFromFile( (monitorService2 as any).getFilePath(block300Entry.file), block300Entry.startLine, block300Entry.endLine ); // Mock indexing stopped and cache cleared monitorService2.resetService(); monitorService2.testInit(); expect(spyResetAll).toHaveBeenCalledTimes(1); }); it('should generate correct file path with sanitized dbSchema', () => { const expectedPath1 = path.join(monitorDir, 'test-db-fileA.txt'); expect((monitorService1 as any).getFilePath('A')).toBe(expectedPath1); const nodeConfig2 = { monitorOutDir: monitorDir, monitorFileSize: 1024, dbSchema: 'd-1234/subquery/subquery-mainnet', } as NodeConfig; const monitorService2 = new testMonitorService(nodeConfig2); const expectedPath2 = path.join(monitorDir, 'd-1234-subquery-subquery-mainnet-fileA.txt'); const indexPath = path.join(monitorDir, 'd-1234-subquery-subquery-mainnet-index.csv'); expect((monitorService2 as any).getFilePath('A')).toBe(expectedPath2); expect((monitorService2 as any).indexPath).toBe(indexPath); }); }); ================================================ FILE: packages/node-core/src/indexer/monitor.service.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import * as fs from 'fs'; import path from 'path'; import * as readline from 'readline'; import {Injectable} from '@nestjs/common'; import {NodeConfig} from '../configure'; import {getLogger} from '../logger'; import {setMonitorService} from '../process'; const UNIT_MB = 1024 * 1024; const logger = getLogger('Monitor'); enum FileLocation { 'A' = 'fileA.txt', 'B' = 'fileB.txt', } interface IndexEntry { blockHeight: number; startLine: number; file: keyof typeof FileLocation; // 'A' or 'B' for fileAPath and fileBPath respectively forked?: boolean; } interface IndexBlockEntry extends IndexEntry { endLine: number; } interface FileStat { fileSize: number; fileEndLine: number; } export interface MonitorServiceInterface { write(blockData: string | (() => string)): void; createBlockFork(blockHeight: number): void; createBlockStart(blockHeight: number): void; } function sanitizeDbName(dbName: string): string { return dbName.replace(/[\\/]/g, '-'); } @Injectable() export class MonitorService implements MonitorServiceInterface { private readonly outputPath: string; private readonly monitorFileSize: number; private readonly indexPath: string; private _currentFile: keyof typeof FileLocation | undefined; private currentIndexHeight: number | undefined; // We need to keep this to update index when switch file, so we know current processing height private _cachedFileStats: Record | undefined; constructor(protected config: NodeConfig) { this.outputPath = config.monitorOutDir; this.monitorFileSize = config.monitorFileSize * UNIT_MB; this.indexPath = path.join(this.outputPath, `${sanitizeDbName(this.config.dbSchema)}-index.csv`); this.init(); setMonitorService(this); } static forceClean(monitorDir: string): void { if (fs.existsSync(monitorDir)) { fs.rmSync(monitorDir, {recursive: true, force: true}); logger.info('force cleaned monitor service files'); } } // maybe a good idea to expose this, if error didn't be caught api could still use reset /** * Reset all files and memory values */ resetAll(): void { fs.mkdirSync(this.outputPath, {recursive: true}); this.createOrResetFile(this.getFilePath('A')); this.createOrResetFile(this.getFilePath('B')); this.createOrResetFile(this.indexPath); this._cachedFileStats = this.initCacheFileStats(); this._currentFile = 'A'; } get currentFile(): keyof typeof FileLocation { if (!this._currentFile) throw new Error(`Current write file is not defined`); return this._currentFile; } get cachedFileStats(): Record { if (this._cachedFileStats === undefined) { this._cachedFileStats = this.initCacheFileStats(); } return this._cachedFileStats; } get currentFileSize(): number { return this.cachedFileStats[this.currentFile].fileSize; } set currentFileSize(number: number) { this.cachedFileStats[this.currentFile].fileSize = number; } get currentFileLastLine(): number { return this.cachedFileStats[this.currentFile].fileEndLine; } set currentFileLastLine(number: number) { this.cachedFileStats[this.currentFile].fileEndLine = number; } /** * Init service, also validate */ private init(): void { if (this.monitorFileSize <= 0) { return; } if (!fs.existsSync(this.outputPath) || !fs.existsSync(this.indexPath)) { this.resetAll(); } else { try { // `readLastIndexEntry` also include assertion to make sure endLine is valid const lastIndexEntry = this.readLastIndexEntry(); // No index info been found, then reset if (lastIndexEntry === undefined) { throw new Error(`Last index entry is not found or incomplete`); } else if (!fs.existsSync(this.getFilePath(lastIndexEntry.file))) { throw new Error( `Last index entry point to file ${lastIndexEntry.file}, but not found under dir ${this.outputPath}` ); } else { this._currentFile = lastIndexEntry.file; } } catch (e) { logger.error(`${e}, will try to reset monitor files`); this.resetAll(); } } } // To human-readable block history,still experimental, this can be more friendly getBlockIndexHistory(): (number | string)[] { const mixedArray: (number | string)[] = []; const indexEntries = this.getAllIndexEntries(); indexEntries.forEach((entry) => { if (entry.forked) { mixedArray.push(`Forked ${entry.blockHeight}`); } else { // Skip this block height, treat it as 2nd index of same block but in another file if (entry.startLine === 0 && mixedArray[mixedArray.length - 1] === entry.blockHeight) { return; } mixedArray.push(entry.blockHeight); } }); return mixedArray; } /** * Get all forked heights and records */ async getForkedRecords(): Promise { const forkedEntries = this.getForkedEntries(); return this.getRecordsWithEntries(forkedEntries); } /** * Get block height index records * @param blockHeight */ async getBlockIndexRecords(blockHeight: number): Promise { const indexEntries = this.getBlockIndexEntries(blockHeight); return this.getRecordsWithEntries(indexEntries); } /** * create a record for fork * @param blockHeight */ createBlockFork(blockHeight: number): void { if (this.monitorFileSize <= 0) { return; } this.currentIndexHeight = blockHeight; this.write(`***** Forked at block ${blockHeight}`); this.updateIndex({ blockHeight, startLine: this.currentFileLastLine, file: this.currentFile, forked: true, }); } /** * create a record for block start * @param blockHeight */ createBlockStart(blockHeight: number): void { if (this.monitorFileSize <= 0) { return; } this.currentIndexHeight = blockHeight; this.write(`+++++ Start block ${blockHeight}`); this.updateIndex({ blockHeight, startLine: this.currentFileLastLine, file: this.currentFile, forked: false, }); } /** * Write block record data to file * @param blockData string or function that returns a string, this allows lazy interpolation for any heavy stringification */ write(blockData: string | (() => string)): void { if (this.monitorFileSize <= 0) { return; } this.checkAndSwitchFile(); const escapedBlockData = (typeof blockData === 'string' ? blockData : blockData()).replace(/\n/g, '\\n'); fs.appendFileSync(this.getFilePath(this.currentFile), `${escapedBlockData}\n`); this.currentFileSize += Buffer.byteLength(escapedBlockData) + 1; // + 1 for the new line this.currentFileLastLine += 1; } private initCacheFileStats(): Record { return { A: { fileSize: this.getFileSize('A'), fileEndLine: this.getGetNumberOfLines('A'), }, B: { fileSize: this.getFileSize('B'), fileEndLine: this.getGetNumberOfLines('B'), }, }; } /** * By given a list of index entry (from index file), found corresponding block index records * @param indexEntries * @private */ private async getRecordsWithEntries(indexEntries: IndexBlockEntry[]): Promise { if (!indexEntries.length) { return undefined; } const records: string[] = []; for (const indexEntry of indexEntries) { const filePath = this.getFilePath(indexEntry.file); try { const fileStream = fs.createReadStream(filePath); const rl = readline.createInterface({ input: fileStream, crlfDelay: Infinity, }); let currentLine = 0; rl.on('line', (line) => { currentLine++; if (currentLine >= indexEntry.startLine && currentLine <= indexEntry.endLine) { records.push(line); } if (currentLine > indexEntry.endLine) { rl.close(); // Stop reading the file further } }); await new Promise((resolve, reject) => { rl.on('close', resolve); rl.on('error', reject); fileStream.on('error', reject); }); } catch (error) { logger.error(`Error get block records in file ${filePath}:`, error); return undefined; // Or handle the error as needed } } return records; } /** * Get all index entries * @private */ private getAllIndexEntries(): IndexEntry[] { const indexData = fs.readFileSync(this.indexPath, 'utf-8'); const data = indexData.trim().split('\n'); return data.map((d) => this.decodeIndexRow(d)); } private getForkedEntries(): IndexBlockEntry[] { const results: IndexBlockEntry[] = []; const indexEntries = this.getAllIndexEntries(); indexEntries.forEach((entry) => { if (entry.forked) { results.push({...entry, endLine: entry.startLine}); } }); return results; } private getBlockIndexEntries(blockHeight: number): IndexBlockEntry[] { const results: IndexBlockEntry[] = []; const indexData = fs.readFileSync(this.indexPath, 'utf-8'); const data = indexData.trim().split('\n'); for (let i = 0; i < data.length; i++) { const indexBlockEntry = this.decodeIndexRow(data[i]); if (indexBlockEntry.blockHeight === blockHeight) { let endLine: number | undefined; const nextIndex = i + 1; if (nextIndex < data.length) { const nextIndexBlockEntry = this.decodeIndexRow(data[nextIndex]); // If next entry are in same file, then we can calculate current index endline if (indexBlockEntry.file === nextIndexBlockEntry.file) { endLine = nextIndexBlockEntry.startLine - 1; } // not same, means file location has changed else { endLine = this.cachedFileStats[indexBlockEntry.file].fileEndLine; } } else { // Last index record in index file endLine = this.cachedFileStats[indexBlockEntry.file].fileEndLine; } results?.push({...indexBlockEntry, endLine}); } } return results; } /** * Read last index, and return IndexBlockInfo, if no record, return undefined * @private */ private readLastIndexEntry(): IndexBlockEntry | undefined { try { const indexData = fs.readFileSync(this.indexPath, 'utf-8'); const rows = indexData.trim().split('\n'); if (!rows || rows[0] === '') { return undefined; } const lastRow = rows[rows.length - 1]; const indexEntry = this.decodeIndexRow(lastRow); const endLine = this.cachedFileStats[indexEntry.file].fileEndLine; if (endLine < indexEntry.startLine) { throw new Error( `Expect last entry record block ${indexEntry.blockHeight}, in file ${indexEntry.file} start from line ${indexEntry.startLine}, but last line in file is ${endLine} ` ); } return {...indexEntry, endLine}; } catch (error) { // Error will be handled in higher level with undefined result logger.error(`Error read last index entry : ${error}`); } return undefined; } private resetFile(file: keyof typeof FileLocation): void { const backupIndexPath = `${this.indexPath}.bak`; try { // Backup the original index file const backupContent = fs.readFileSync(this.indexPath, 'utf-8'); fs.writeFileSync(backupIndexPath, backupContent, 'utf-8'); this.removeIndexEntriesByFile(file); } catch (e) { // Rollback by restoring the backup const backupContent = fs.readFileSync(backupIndexPath, 'utf-8'); fs.writeFileSync(this.indexPath, backupContent, 'utf-8'); fs.rmSync(backupIndexPath); throw new Error(`Error during index removal: ${e}`); } // Only remove file when index is successful removed fs.rmSync(this.getFilePath(file)); fs.rmSync(backupIndexPath); this.createOrResetFile(this.getFilePath(file)); } private getFileSize(file: keyof typeof FileLocation): number { const filePath = this.getFilePath(file); const stats = fs.statSync(filePath); return stats.size; } private getFilePath(file: keyof typeof FileLocation): string { return path.join(this.outputPath, `${sanitizeDbName(this.config.dbSchema)}-${FileLocation[file]}`); } private updateIndex(indexEntry: IndexEntry): void { const csvLine = `${indexEntry.blockHeight},${indexEntry.startLine},${indexEntry.file},${ indexEntry.forked ? '*' : '' }\n`; fs.appendFileSync(this.indexPath, csvLine); // Append the index entry to the CSV file } private removeIndexEntriesByFile(file: keyof typeof FileLocation): void { const fileContent = fs.readFileSync(this.indexPath, 'utf-8'); const rows = fileContent.split('\n'); const filteredRows = rows.filter((line) => { const [, , fileLocationStr] = line.split(','); return fileLocationStr !== file; }); const filteredContent = filteredRows.join('\n'); fs.writeFileSync(this.indexPath, filteredContent, 'utf-8'); } private decodeIndexRow(row: string): IndexEntry { const [entryBlockHeightStr, startLineStr, fileLocationStr, forkedStr] = row.split(','); const file = fileLocationStr as keyof typeof FileLocation; return { blockHeight: parseInt(entryBlockHeightStr), startLine: parseInt(startLineStr), file, forked: forkedStr === '*', }; } // this is expecting to be found, as given file is from index entry // if unmatched is found, it will throw from here. private getGetNumberOfLines(file: keyof typeof FileLocation): number { try { const filePath = this.getFilePath(file); const fileData = fs.readFileSync(filePath, 'utf-8'); // return 0 for new file if (fileData === '') { return 0; } const lines = fileData.trim().split('\n'); return lines.length; } catch (e) { throw new Error(`Get last line from given file ${file} failed, ${e}`); } } private checkAndSwitchFile(): void { if (this.currentFileSize >= this.monitorFileSize) { if (this.currentFile === 'A') { this.switchToFile('B'); } else { this.switchToFile('A'); } } } private switchToFile(file: keyof typeof FileLocation): void { logger.debug(`Switch to file ${file}`); if (this.currentIndexHeight === undefined) { throw new Error(`Switch to new file but current index height is not defined`); } this.resetFile(file); this._currentFile = file; this.currentFileSize = 0; this.currentFileLastLine = 0; this.updateIndex({blockHeight: this.currentIndexHeight, startLine: this.currentFileLastLine, file}); } private createOrResetFile(filePath: string): void { fs.writeFileSync(filePath, ''); } } ================================================ FILE: packages/node-core/src/indexer/multiChainRewind.service.test.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import {buildSchemaFromString} from '@subql/utils'; import {QueryTypes, Sequelize} from '@subql/x-sequelize'; import {NodeConfig} from '../configure'; import {DbOption} from '../db'; import {delay} from '../utils'; import {MultiChainRewindStatus} from './entities'; import {MultiChainRewindService} from './multiChainRewind.service'; import {StoreService} from './store.service'; import {PlainStoreModelService} from './storeModelProvider'; const option: DbOption = { host: process.env.DB_HOST ?? '127.0.0.1', port: process.env.DB_PORT ? Number(process.env.DB_PORT) : 5432, username: process.env.DB_USER ?? 'postgres', password: process.env.DB_PASS ?? 'postgres', database: process.env.DB_DATABASE ?? 'postgres', timezone: 'utc', }; jest.setTimeout(60000); // Mock 1740100000 is the timestamp of the genesis block const genBlockTimestamp = (height: number) => { const rewindTimestamp = (1740100000 + height) * 1000; return {rewindTimestamp, rewindDate: new Date(rewindTimestamp)}; }; const testSchemaName = 'test_multi_chain_rewind'; const schema = buildSchemaFromString(` type Account @entity { id: ID! # Account address balance: Int } `); async function createChainProject(chainId: string, mockBlockchainService: any, sequelize: Sequelize) { const nodeConfig = new NodeConfig({ subquery: 'test', dbSchema: testSchemaName, proofOfIndex: true, enableCache: false, multiChain: true, }); const project = {network: {chainId}, schema} as any; const dbModel = new PlainStoreModelService(sequelize, nodeConfig); const storeService = new StoreService(sequelize, nodeConfig, dbModel, project); await storeService.initCoreTables(testSchemaName); const tx = await sequelize.transaction(); await storeService.init(testSchemaName, tx); await storeService.modelProvider.metadata.set('chain', chainId, tx); await storeService.modelProvider.metadata.set('startHeight', 1, tx); await storeService.modelProvider.metadata.set('lastProcessedHeight', 10000, tx); await storeService.modelProvider.metadata.set( 'lastProcessedBlockTimestamp', genBlockTimestamp(10000).rewindTimestamp, tx ); await tx.commit(); const multiChainRewindService = new MultiChainRewindService( nodeConfig, sequelize, storeService, mockBlockchainService ); const reindex = jest.fn(); // Initialize the service await multiChainRewindService.init(chainId, reindex); return {sequelize, storeService, multiChainRewindService}; } describe('MultiChain Rewind Service', () => { const notifyHandleDelay = 0.5; const lockInfoSql = `SELECT "chainId","rewindTimestamp","status" FROM "${testSchemaName}"."_global";`; const chainId1 = 'chain1'; const chainId2 = 'chain2'; let sequelize: Sequelize; let sequelize1: Sequelize; let sequelize2: Sequelize; let storeService1: StoreService, multiChainRewindService1: MultiChainRewindService; let storeService2: StoreService, multiChainRewindService2: MultiChainRewindService; // Mock IBlockchainService const mockBlockchainService = { getHeaderForHeight: jest.fn((height: number) => ({ blockHeight: height, timestamp: genBlockTimestamp(height).rewindDate, blockHash: `hash${height}`, parentHash: height > 0 ? `hash${height - 1}` : '', })), }; beforeEach(async () => { sequelize = new Sequelize( `postgresql://${option.username}:${option.password}@${option.host}:${option.port}/${option.database}`, option ); await sequelize.authenticate(); await sequelize.query(`CREATE SCHEMA ${testSchemaName};`); sequelize1 = new Sequelize( `postgresql://${option.username}:${option.password}@${option.host}:${option.port}/${option.database}`, option ); const projectChain1 = await createChainProject(chainId1, mockBlockchainService, sequelize1); storeService1 = projectChain1.storeService; multiChainRewindService1 = projectChain1.multiChainRewindService; sequelize2 = new Sequelize( `postgresql://${option.username}:${option.password}@${option.host}:${option.port}/${option.database}`, option ); const projectChain2 = await createChainProject(chainId2, mockBlockchainService, sequelize2); storeService2 = projectChain2.storeService; multiChainRewindService2 = projectChain2.multiChainRewindService; }); afterEach(async () => { await multiChainRewindService1.onApplicationShutdown(); await multiChainRewindService2.onApplicationShutdown(); await sequelize.query(`DROP SCHEMA ${testSchemaName} CASCADE;`); await sequelize.close(); }); describe('acquireGlobalRewindLock', () => { it('setGlobalRewindLock should set the lock timestamp', async () => { const {rewindDate} = genBlockTimestamp(5); const result = await multiChainRewindService1.acquireGlobalRewindLock(rewindDate); expect(result).toEqual(true); const res = await sequelize.query(lockInfoSql, {type: QueryTypes.SELECT}); expect(res).toEqual( expect.arrayContaining([ {chainId: chainId1, rewindTimestamp: rewindDate, status: MultiChainRewindStatus.Incomplete}, {chainId: chainId2, rewindTimestamp: rewindDate, status: MultiChainRewindStatus.Incomplete}, ]) ); }); it('A rewind can be moved further back when there is already one in progress.', async () => { const {rewindDate: rewindDate10} = genBlockTimestamp(10); const {rewindDate: rewindDate5} = genBlockTimestamp(5); await expect(multiChainRewindService1.acquireGlobalRewindLock(rewindDate10)).resolves.toBe(true); let res = await sequelize.query(lockInfoSql, {type: QueryTypes.SELECT}); expect(res).toEqual( expect.arrayContaining([ {chainId: chainId1, rewindTimestamp: rewindDate10, status: MultiChainRewindStatus.Incomplete}, {chainId: chainId2, rewindTimestamp: rewindDate10, status: MultiChainRewindStatus.Incomplete}, ]) ); await expect(multiChainRewindService1.acquireGlobalRewindLock(rewindDate5)).resolves.toBe(true); res = await sequelize.query(lockInfoSql, {type: QueryTypes.SELECT}); expect(res).toEqual( expect.arrayContaining([ {chainId: chainId1, rewindTimestamp: rewindDate5, status: MultiChainRewindStatus.Incomplete}, {chainId: chainId2, rewindTimestamp: rewindDate5, status: MultiChainRewindStatus.Incomplete}, ]) ); }); it('Not allowed to lock further backward', async () => { const {rewindDate: rewindDate10} = genBlockTimestamp(10); const {rewindDate: rewindDate5} = genBlockTimestamp(5); await expect(multiChainRewindService1.acquireGlobalRewindLock(rewindDate5)).resolves.toBe(true); let res = await sequelize.query(lockInfoSql, {type: QueryTypes.SELECT}); expect(res).toEqual( expect.arrayContaining([ {chainId: chainId1, rewindTimestamp: rewindDate5, status: MultiChainRewindStatus.Incomplete}, {chainId: chainId2, rewindTimestamp: rewindDate5, status: MultiChainRewindStatus.Incomplete}, ]) ); await expect(multiChainRewindService1.acquireGlobalRewindLock(rewindDate10)).resolves.toBe(false); res = await sequelize.query(lockInfoSql, {type: QueryTypes.SELECT}); expect(res).toEqual( expect.arrayContaining([ {chainId: chainId1, rewindTimestamp: rewindDate5, status: MultiChainRewindStatus.Incomplete}, {chainId: chainId2, rewindTimestamp: rewindDate5, status: MultiChainRewindStatus.Incomplete}, ]) ); }); it('Only one can successfully acquire the lock.', async () => { const {rewindDate: rewindDate1} = genBlockTimestamp(5); const {rewindDate: rewindDate2} = genBlockTimestamp(5); const results = await Promise.allSettled([ multiChainRewindService1.acquireGlobalRewindLock(rewindDate1), multiChainRewindService2.acquireGlobalRewindLock(rewindDate2), ]); const success = results.filter((result) => result.status === 'fulfilled'); const failures = results.filter((result) => result.status === 'rejected'); expect(success.length).toBe(1); expect(failures.length).toBe(1); }); }); describe('releaseChainRewindLock', () => { const {rewindDate} = genBlockTimestamp(5); beforeEach(async () => { await multiChainRewindService1.acquireGlobalRewindLock(rewindDate); }); it('Same height as the target, release lock', async () => { const tx = await sequelize1.transaction(); const remaining = await multiChainRewindService1.releaseChainRewindLock(tx, rewindDate); await tx.commit(); expect(remaining).toBe(1); }); it('Different height from the target, release failed.', async () => { const tx = await sequelize1.transaction(); await expect(multiChainRewindService1.releaseChainRewindLock(tx, new Date())).rejects.toThrow(); await tx.rollback(); }); it('The height of rewindLock is greater than or equal to lastProcessHeight, it can be forcibly released.', async () => { const {rewindDate: allowLastDate} = genBlockTimestamp(5); const tx = await sequelize1.transaction(); const remaining = await multiChainRewindService1.releaseChainRewindLock(tx, rewindDate, allowLastDate); await tx.commit(); expect(remaining).toBe(1); }); it('rewindLock is less than lastProcessHeight, it cannot be forcibly released.', async () => { const {rewindDate: allowLastDate} = genBlockTimestamp(6); const tx = await sequelize1.transaction(); await expect(multiChainRewindService1.releaseChainRewindLock(tx, rewindDate, allowLastDate)).rejects.toThrow(); await tx.rollback(); }); }); describe('The situation where notifyHandle controls the state', () => { it('A chain rollback has been completed.', async () => { const {rewindDate} = genBlockTimestamp(5); await multiChainRewindService1.acquireGlobalRewindLock(rewindDate); await delay(notifyHandleDelay); expect(multiChainRewindService1.status).toBe(MultiChainRewindStatus.Incomplete); const tx = await sequelize1.transaction(); const remaining = await multiChainRewindService1.releaseChainRewindLock(tx, rewindDate); await tx.commit(); expect(multiChainRewindService1.status).toBe(MultiChainRewindStatus.Complete); await delay(notifyHandleDelay); expect(remaining).toBe(1); expect(multiChainRewindService2.status).toEqual(MultiChainRewindStatus.Incomplete); expect(multiChainRewindService2.waitRewindHeader).toEqual({ blockHash: 'hash5', blockHeight: 5, parentHash: 'hash4', timestamp: rewindDate, }); }); it('should handle multiple concurrent rewind requests', async () => { const {rewindDate: rewindDate1} = genBlockTimestamp(5); const {rewindDate: rewindDate2} = genBlockTimestamp(3); // Earlier timestamp await multiChainRewindService1.acquireGlobalRewindLock(rewindDate1); await delay(notifyHandleDelay); expect(multiChainRewindService1.status).toBe(MultiChainRewindStatus.Incomplete); await multiChainRewindService2.acquireGlobalRewindLock(rewindDate2); await delay(notifyHandleDelay); expect(multiChainRewindService2.status).toBe(MultiChainRewindStatus.Incomplete); // The rewindTimestamp of the later chain will overwrite that of the earlier chain. const res = await sequelize.query(lockInfoSql, {type: QueryTypes.SELECT}); expect(res).toEqual([ {chainId: chainId1, rewindTimestamp: rewindDate2, status: MultiChainRewindStatus.Incomplete}, {chainId: chainId2, rewindTimestamp: rewindDate2, status: MultiChainRewindStatus.Incomplete}, ]); // Rollback to rewindDate1 is not allowed because it has already been overwritten. let remaining = 2; let tx = await sequelize1.transaction(); await expect(multiChainRewindService1.releaseChainRewindLock(tx, rewindDate1)).rejects.toThrow(); await tx.rollback(); expect(multiChainRewindService1.status).toBe(MultiChainRewindStatus.Incomplete); // Rollback to rewindDate2 is allowed. tx = await sequelize1.transaction(); remaining = await multiChainRewindService1.releaseChainRewindLock(tx, rewindDate2); await tx.commit(); expect(remaining).toBe(1); expect(multiChainRewindService1.status).toBe(MultiChainRewindStatus.Complete); // Chain2 has started rolling back. tx = await sequelize2.transaction(); remaining = await multiChainRewindService2.releaseChainRewindLock(tx, rewindDate2); await tx.commit(); // This can fail because the notification has already come in and the status is back to normal expect(multiChainRewindService2.status).toBe(MultiChainRewindStatus.Complete); await delay(notifyHandleDelay); // The last chain rollback is complete, all chains have finished rolling back. expect(remaining).toBe(0); expect(multiChainRewindService1.status).toBe(MultiChainRewindStatus.Normal); expect(multiChainRewindService2.status).toBe(MultiChainRewindStatus.Normal); }); it('should handle binary search edge cases for timestamp matching', async () => { // Mock the binary search to simulate a large gap between blocks const mockGetHeaderByBinarySearch = jest.spyOn(multiChainRewindService1 as any, 'getHeaderByBinarySearch'); mockGetHeaderByBinarySearch.mockResolvedValueOnce({ blockHeight: 4, timestamp: genBlockTimestamp(4).rewindDate, blockHash: 'hash4', parentHash: 'hash3', }); const {rewindDate} = genBlockTimestamp(4.5); // Timestamp between blocks 4 and 5 await multiChainRewindService1.acquireGlobalRewindLock(rewindDate); await delay(notifyHandleDelay); expect(multiChainRewindService1.status).toBe(MultiChainRewindStatus.Incomplete); expect(mockGetHeaderByBinarySearch).toHaveBeenCalledWith(expect.any(Date)); expect(multiChainRewindService1.waitRewindHeader).toEqual({ blockHeight: 4, timestamp: genBlockTimestamp(4.5).rewindDate, blockHash: 'hash4', parentHash: 'hash3', }); const tx = await sequelize1.transaction(); const remaining = await multiChainRewindService1.releaseChainRewindLock(tx, rewindDate); await tx.commit(); expect(multiChainRewindService1.status).toBe(MultiChainRewindStatus.Complete); expect(remaining).toBe(1); expect(multiChainRewindService1.waitRewindHeader).toBeUndefined(); }); }); describe('getHeaderByBinarySearch', () => { beforeEach(async () => { (multiChainRewindService1 as any).startHeight = 20; await storeService1.modelProvider.metadata.set('lastProcessedHeight', 10000); }); it('Within the already processed interval', async () => { const {rewindDate} = genBlockTimestamp(23); const header = await (multiChainRewindService1 as any).getHeaderByBinarySearch(rewindDate); expect(header).toEqual({ blockHeight: 23, timestamp: rewindDate, blockHash: 'hash23', parentHash: 'hash22', }); }); it('Not within the already processed interval', async () => { const {rewindDate: rewindDate19} = genBlockTimestamp(19); const {rewindDate: rewindDate20} = genBlockTimestamp(20); const header = await (multiChainRewindService1 as any).getHeaderByBinarySearch(rewindDate19); expect(header).toEqual({ blockHeight: 20, timestamp: rewindDate20, blockHash: 'hash20', parentHash: 'hash19', }); const {rewindDate: rewindDate10001} = genBlockTimestamp(10001); const {rewindDate: rewindDate10000} = genBlockTimestamp(10000); const header10001 = await (multiChainRewindService1 as any).getHeaderByBinarySearch(rewindDate10001); expect(header10001).toEqual({ blockHeight: 10000, timestamp: rewindDate10000, blockHash: 'hash10000', parentHash: 'hash9999', }); }); }); describe('Project initialization', () => { const reindex = jest.fn(); let multiChainRewindService: MultiChainRewindService; beforeEach(async () => { const nodeConfig = new NodeConfig({ subquery: 'test', dbSchema: testSchemaName, proofOfIndex: true, enableCache: false, multiChain: true, }); const project = {network: {chainId: chainId1}, schema} as any; const dbModel = new PlainStoreModelService(sequelize, nodeConfig); const storeService = new StoreService(sequelize, nodeConfig, dbModel, project); await storeService.initCoreTables(testSchemaName); const tx = await sequelize.transaction(); await storeService.init(testSchemaName, tx); await tx.commit(); multiChainRewindService = new MultiChainRewindService( nodeConfig, sequelize, storeService, mockBlockchainService as any ); }); afterEach(async () => { await multiChainRewindService.onApplicationShutdown(); jest.clearAllMocks(); }); it('Normal startup, starting will not trigger a reindex.', async () => { // Initialize the service await multiChainRewindService.init(chainId1, reindex); expect(reindex).toHaveBeenCalledTimes(0); }); it('After another chain undergoes a rewind, the current chain starts, which can trigger a reindex.', async () => { const {rewindDate} = genBlockTimestamp(5); await multiChainRewindService1.acquireGlobalRewindLock(rewindDate); // Initialize the service await multiChainRewindService.init(chainId1, reindex); expect(reindex).toHaveBeenCalledTimes(1); expect(multiChainRewindService.status).toBe(MultiChainRewindStatus.Incomplete); expect(multiChainRewindService.waitRewindHeader).toEqual({ blockHeight: 5, timestamp: rewindDate, blockHash: 'hash5', parentHash: 'hash4', }); }); it('The current chain has already completed the rewind, and there are still other chains that need to rewind. In this case, starting will not trigger a reindex.', async () => { const {rewindDate} = genBlockTimestamp(5); await multiChainRewindService1.acquireGlobalRewindLock(rewindDate); const tx = await sequelize1.transaction(); await multiChainRewindService1.releaseChainRewindLock(tx, rewindDate); await tx.commit(); // Initialize the service await multiChainRewindService.init(chainId1, reindex); expect(multiChainRewindService.status).toBe(MultiChainRewindStatus.Complete); expect(reindex).toHaveBeenCalledTimes(0); }); }); }); ================================================ FILE: packages/node-core/src/indexer/multiChainRewind.service.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import assert from 'assert'; import {Inject, Injectable, OnApplicationShutdown} from '@nestjs/common'; import {hashName} from '@subql/utils'; import {Transaction, Sequelize} from '@subql/x-sequelize'; import {Connection} from '@subql/x-sequelize/types/dialects/abstract/connection-manager'; import {uniqueId} from 'lodash'; import {Notification, PoolClient} from 'pg'; import {IBlockchainService} from '../blockchain.service'; import {NodeConfig} from '../configure'; import {createRewindTrigger, createRewindTriggerFunction, getTriggers} from '../db'; import {MultiChainRewindEvent} from '../events'; import {getLogger} from '../logger'; import {mainThreadOnly} from '../utils'; import {MultiChainRewindStatus} from './entities'; import {StoreService} from './store.service'; import {PlainGlobalModel} from './storeModelProvider/global/global'; import {Header} from './types'; const logger = getLogger('MultiChainRewindService'); /** * Working principle: * multiChainRewindService is primarily responsible for coordinating multi-chain projects. * When global.rewindLock changes, a PG trigger sends a notification, and all subscribed chain projects will receive the rollback notification. * This triggers a rollback process, where the fetch service handles the message by clearing the queue. * During the next fillNextBlockBuffer loop, if it detects the rewinding state, it will execute the rollback. */ @Injectable() export class MultiChainRewindService implements OnApplicationShutdown { private _shutdown = false; private _status: MultiChainRewindStatus = MultiChainRewindStatus.Normal; private _chainId?: string; private dbSchema: string; private rewindTriggerName: string; private startHeight = 0; private pgListener?: PoolClient; private _globalModel?: PlainGlobalModel = undefined; private processingPromise: Promise = Promise.resolve(); waitRewindHeader?: Header; constructor( private nodeConfig: NodeConfig, private sequelize: Sequelize, private storeService: StoreService, @Inject('IBlockchainService') private readonly blockchainService: IBlockchainService ) { this.dbSchema = this.nodeConfig.dbSchema; this.rewindTriggerName = hashName(this.dbSchema, 'rewind_trigger', '_global'); } get chainId(): string { assert(this._chainId, 'chainId is not set'); return this._chainId; } private set status(status: MultiChainRewindStatus) { this._status = status; } get status(): MultiChainRewindStatus { assert(this._status, 'status is not set'); return this._status; } get globalModel(): PlainGlobalModel { if (!this._globalModel) { this._globalModel = new PlainGlobalModel(this.dbSchema, this.chainId, this.storeService.globalDataRepo); } return this._globalModel; } async onApplicationShutdown(): Promise { this._shutdown = true; await this.processingPromise; if (this.pgListener) { this.sequelize.connectionManager.releaseConnection(this.pgListener as Connection); this.pgListener = undefined; } } @mainThreadOnly() async init(chainId: string, reindex?: (targetHeader: Header) => Promise): Promise
{ this._chainId = chainId; if (reindex === undefined) { // When using the reindex command, this parameter is not required. return; } if (!this.storeService.isMultichain) return; await this.sequelize.query(`${createRewindTriggerFunction(this.dbSchema)}`); const rewindTriggers = await getTriggers(this.sequelize, this.rewindTriggerName); if (rewindTriggers.length === 0) { await this.sequelize.query(`${createRewindTrigger(this.dbSchema)}`); } const startHeight = await this.storeService.modelProvider.metadata.find('startHeight'); assert(startHeight !== undefined, 'startHeight is not set'); this.startHeight = startHeight; // Register a listener and create a schema notification sending function. await this.registerPgListener(); if (this.waitRewindHeader) { const rewindHeader = {...this.waitRewindHeader}; await reindex(rewindHeader); return rewindHeader; } } private async registerPgListener() { if (this.pgListener) return; // Creating a new pgClient is to avoid using the same database connection as the block scheduler, // which may prevent real-time listening to rollback events. this.pgListener = (await this.sequelize.connectionManager.getConnection({ type: 'read', })) as PoolClient; this.pgListener.on('notification', this.notifyHandle.bind(this)); await this.pgListener.query(`LISTEN "${this.rewindTriggerName}"`); logger.info(`Register rewind listener success, chainId: ${this.chainId}`); // Check whether the current state is in rollback. // If a global lock situation occurs, prioritize setting it to the WaitOtherChain state. If a rollback is still required, then set it to the rewinding state. const chainRewindInfo = await this.globalModel.getChainRewindInfo(); if (!chainRewindInfo) return; if (chainRewindInfo.status === MultiChainRewindStatus.Complete) { this.status = MultiChainRewindStatus.Complete; } if (chainRewindInfo.status === MultiChainRewindStatus.Incomplete) { this.status = MultiChainRewindStatus.Incomplete; this.waitRewindHeader = await this.searchWaitRewindHeader(chainRewindInfo.rewindTimestamp); } } private notifyHandle(msg: Notification) { this.processingPromise = this.processingPromise.then(async () => { // We're shutdown but still receiving messages, so we ignore them. if (this._shutdown) return; assert(msg.payload, 'Payload is empty'); const {chainId, event: eventType} = JSON.parse(msg.payload) as {chainId: string; event: MultiChainRewindEvent}; if (chainId !== this.chainId) return; const sessionUuid = uniqueId(); logger.info(`[${sessionUuid}]Received rewind event: ${eventType}, chainId: ${this.chainId}`); switch (eventType) { case MultiChainRewindEvent.Rewind: case MultiChainRewindEvent.RewindTimestampDecreased: { const chainRewindInfo = await this.globalModel.getChainRewindInfo(); assert(chainRewindInfo, `Not registered rewind timestamp in global data, chainId: ${this.chainId}`); await this.setStatus(MultiChainRewindStatus.Incomplete, chainRewindInfo.rewindTimestamp); break; } case MultiChainRewindEvent.RewindComplete: await this.setStatus(MultiChainRewindStatus.Complete); break; case MultiChainRewindEvent.FullyRewind: await this.setStatus(MultiChainRewindStatus.Normal); break; default: throw new Error(`Unknown rewind event: ${eventType}`); } logger.info(`[${sessionUuid}]Handle success rewind event: ${eventType}, chainId: ${this.chainId}`); }); } private async searchWaitRewindHeader(rewindTimestamp: Date): Promise
{ const rewindBlockHeader = await this.getHeaderByBinarySearch(rewindTimestamp); // The blockHeader.timestamp obtained from the query cannot be used directly, as it will cause an infinite loop. // Different chains have timestamp discrepancies, which will result in infinite backward tracing. return {...rewindBlockHeader, timestamp: rewindTimestamp}; } /** * If the set rewindTimestamp is greater than or equal to the current blockHeight, we do nothing because we will roll back to an earlier time. * If the set rewindTimestamp is less than the current blockHeight, we should roll back to the earlier rewindTimestamp. * @param rewindTimestamp rewindTimestamp in milliseconds */ @mainThreadOnly() async acquireGlobalRewindLock(rewindTimestamp: Date): Promise { const {lockTimestamp} = await this.globalModel.acquireGlobalRewindLock(rewindTimestamp); const existEarlierLock = lockTimestamp < rewindTimestamp; if (!existEarlierLock) { logger.info(`setGlobalRewindLock success chainId: ${this.chainId}, rewindTimestamp: ${rewindTimestamp}`); } return !existEarlierLock; } @mainThreadOnly() /** * Check if the height is consistent before unlocking. * @param tx * @param rewindTimestamp The timestamp to roll back to. * @param allowRewindTimestamp Set a rewind-allowed height; only heights greater than or equal this can be released. * @returns the number of remaining rewind chains */ async releaseChainRewindLock(tx: Transaction, rewindTimestamp: Date, allowRewindTimestamp?: Date): Promise { const chainsCount = await this.globalModel.releaseChainRewindLock(tx, rewindTimestamp, allowRewindTimestamp); // The current chain has completed the rewind, and we still need to wait for other chains to finish. // When fully synchronized, set the status back to normal by pgListener. await this.setStatus(MultiChainRewindStatus.Complete); logger.info(`Rewind success chainId: ${JSON.stringify({chainsCount, chainId: this.chainId, rewindTimestamp})}`); return chainsCount; } private async setStatus(status: MultiChainRewindStatus, rewindTimestamp?: Date) { if (status === MultiChainRewindStatus.Incomplete) { assert(rewindTimestamp, 'rewindTimestamp is not set'); this.status = MultiChainRewindStatus.Incomplete; this.waitRewindHeader = await this.searchWaitRewindHeader(rewindTimestamp); } else { this.status = status; this.waitRewindHeader = undefined; } } /** * Get the block header closest to the given timestamp * @param timestamp To find the block closest to a given timestamp * @returns */ private async getHeaderByBinarySearch(timestamp: Header['timestamp']): Promise
{ let left = this.startHeight; let {height: right} = await this.storeService.getLastProcessedBlock(); let searchNum = 0; while (left < right) { searchNum++; const mid = Math.floor((left + right) / 2); const header = await this.blockchainService.getHeaderForHeight(mid); if (header.timestamp === timestamp) { return header; } else if (header.timestamp < timestamp) { left = mid + 1; } else { right = mid; } } const targetHeader = await this.blockchainService.getHeaderForHeight(left); logger.info(`Binary search times: ${searchNum}, target Header: ${JSON.stringify(targetHeader)}`); return targetHeader; } } ================================================ FILE: packages/node-core/src/indexer/poi/PoiBlock.spec.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import {PoiBlock} from './PoiBlock'; describe('Poi Block', () => { it('create default block, block that has no operation and not been fetched', () => { const poiBlock = PoiBlock.create(100, null, null, 'test', new Uint8Array()); expect(poiBlock.hash).toBeDefined(); }); it('chainBlockHash and Operation hash should either both null or both defined, otherwise should throw error', () => { expect(() => PoiBlock.create( 100, '0xe1858e5710e2a60caad17505d799baafa8bc58a49bb52b9b9009427e9dc764ee', null, 'test', new Uint8Array() ) ).toThrow(); }); it('for default block, parentHash must be provided, otherwise should throw', () => { expect(() => PoiBlock.create(100, null, null, 'test', undefined)).toThrow(); }); it('create new block with operations, and place hold for parent hash and hash', () => { const poiBlock = PoiBlock.create( 1, '0xe1858e5710e2a60caad17505d799baafa8bc58a49bb52b9b9009427e9dc764ee', new Uint8Array(), 'test', undefined ); expect(poiBlock.hash).toBeUndefined(); expect(poiBlock.parentHash).toBeUndefined(); expect(poiBlock.operationHashRoot).toBeDefined(); }); it('update existing block with parent hash, it should create its own block hash', () => { const poiBlock = PoiBlock.create( 1, '0xe1858e5710e2a60caad17505d799baafa8bc58a49bb52b9b9009427e9dc764ee', new Uint8Array(), 'test', new Uint8Array() ); expect(poiBlock.hash).toBeDefined(); expect(poiBlock.parentHash).toBeDefined(); }); it('supports hex block hashes', () => { // Shiden // https://polkadot.js.org/apps/#/explorer/query/0xe1858e5710e2a60caad17505d799baafa8bc58a49bb52b9b9009427e9dc764ee const poiBlock = PoiBlock.create( 1, '0xe1858e5710e2a60caad17505d799baafa8bc58a49bb52b9b9009427e9dc764ee', new Uint8Array(), 'test', undefined ); expect(poiBlock.chainBlockHash).toBeDefined(); }); it('supports u8a block hashes', () => { const hash = new Uint8Array([ 225, 133, 142, 87, 16, 226, 166, 12, 170, 209, 117, 5, 215, 153, 186, 175, 168, 188, 88, 164, 155, 181, 43, 155, 144, 9, 66, 126, 157, 199, 100, 238, ]); const poiBlock = PoiBlock.create(1, hash, new Uint8Array(), 'test', new Uint8Array()); expect(poiBlock.chainBlockHash).toBeDefined(); }); it('supports base58 block hashes', () => { // https://explorer.near.org/blocks/8gBy5MhHUAg2gVv5Uu9A8mTJF4hpDXteoKykgJiwSFZS const poiBlock = PoiBlock.create( 1, '8gBy5MhHUAg2gVv5Uu9A8mTJF4hpDXteoKykgJiwSFZS', new Uint8Array(), 'test', new Uint8Array() ); expect(poiBlock.chainBlockHash).toBeDefined(); }); it('supports base64 block hashes', () => { // https://algoexplorer.io/block/100798 let poiBlock = PoiBlock.create( 1, 'KDG6EJ7FUMNFWZJLHDIJQICOZZ4PORTW5OZPUPRJRGOOM63WQ74A', new Uint8Array(), 'test', new Uint8Array() ); expect(poiBlock.chainBlockHash).toBeDefined(); poiBlock = PoiBlock.create( 1, '7mxLwnp5sElF3ZtZaR2Pe/28+ytwwVNn3hfcQnSurV4=', new Uint8Array(), 'test', new Uint8Array() ); expect(poiBlock.chainBlockHash).toBeDefined(); // https://github.com/polkadot-js/common/issues/1841 poiBlock = PoiBlock.create( 1, 'a1UbyspTdnyZXLUQaQbciCxrCWWxz24kgSwGXSQnkbs=', new Uint8Array(), 'test', new Uint8Array() ); expect(poiBlock.chainBlockHash).toBeDefined(); }); it('throws on unsupported block hash format', () => { expect(() => PoiBlock.create(1, '!@#$%^&', new Uint8Array(), 'test', new Uint8Array())).toThrow(); }); }); ================================================ FILE: packages/node-core/src/indexer/poi/PoiBlock.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import { u8aConcat, numberToU8a, hexToU8a, isHex, isU8a, blake2AsU8a, isBase58, base58Decode, isBase64, base64Decode, u8aToBuffer, } from '@subql/utils'; import {ProofOfIndex} from '../entities/Poi.entity'; export const DEFAULT_BLOCK_HASH = hexToU8a('0x00'); export const NULL_OPERATION_HASH = hexToU8a('0x00'); const poiBlockHash = ( id: number, chainBlockHash: string | Uint8Array | null, operationHashRoot: Uint8Array | null, projectId: string, parentHash: Uint8Array ): Uint8Array => { if (!id || !projectId || chainBlockHash === undefined || operationHashRoot === undefined) { throw new Error('Poof of index: can not generate block hash'); } return blake2AsU8a( u8aConcat( numberToU8a(id), chainBlockHash ?? u8aToBuffer(DEFAULT_BLOCK_HASH), operationHashRoot ?? u8aToBuffer(NULL_OPERATION_HASH), Buffer.from(projectId), parentHash ) ); }; export class PoiBlock implements ProofOfIndex { // poi block id, this usually same as on chain block height readonly id: number; // on chain block hash readonly chainBlockHash: Uint8Array | null; // Hash generated from store actions within current block readonly operationHashRoot: Uint8Array | null; // project deployment ID readonly projectId: string; // previous poi block hash readonly parentHash: Uint8Array | undefined; // current poi hash, this is hash from above values. readonly hash: Uint8Array | undefined; constructor( id: number, chainBlockHash: Uint8Array | null, operationHashRoot: Uint8Array | null, projectId: string, parentHash?: Uint8Array, hash?: Uint8Array ) { this.id = id; this.chainBlockHash = chainBlockHash; this.operationHashRoot = operationHashRoot; this.projectId = projectId; this.parentHash = parentHash; this.hash = hash; } static create( id: number, chainBlockHash: string | Uint8Array | null, operationHashRoot: Uint8Array | null, projectId: string, parentHash?: Uint8Array ): PoiBlock { // projectId is deprecated from _POI table, but in order to keep consist with previous hash, // We still take projectId as part of the calculation // Validation for default empty block if ( (operationHashRoot === null && chainBlockHash !== null) || (operationHashRoot !== null && chainBlockHash === null) ) { throw new Error( `Create POI block ${id} failed, chainBlockHash and operationHashRoot should be both null or both defined` ); } if (operationHashRoot === null && chainBlockHash === null) { // For default empty block, it can not be a genesis hash, parentHash must be defined if (parentHash === undefined) { throw new Error(`Create default POI ${id} failed, parentHash must be defined.`); } } let _chainBlockHash: Uint8Array | null; if (isHex(chainBlockHash)) { _chainBlockHash = hexToU8a(chainBlockHash); } else if (isU8a(chainBlockHash)) { _chainBlockHash = chainBlockHash; // needs release with to remove second check https://github.com/polkadot-js/common/pull/1842 } else if (isBase58(chainBlockHash) && !chainBlockHash.includes('=')) { // Near block hashes are base58 encoded _chainBlockHash = base58Decode(chainBlockHash); } else if (isBase64(chainBlockHash)) { // Algorand block hashes are base64 encoded _chainBlockHash = base64Decode(chainBlockHash); } else if (chainBlockHash === null) { // For empty block, those we didn't process and skipped _chainBlockHash = null; } else { throw new Error(`Unable to create PoiBlock, chainBlockHash was not valid. Received: "${chainBlockHash}"`); } let hash: Uint8Array | undefined; if (parentHash !== undefined) { hash = poiBlockHash(id, _chainBlockHash, operationHashRoot, projectId, parentHash); } const poiBlock = new PoiBlock(id, _chainBlockHash, operationHashRoot, projectId, parentHash, hash); return poiBlock; } } ================================================ FILE: packages/node-core/src/indexer/poi/index.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 export * from './poi.service'; export * from './poiSync.service'; export * from './PoiBlock'; ================================================ FILE: packages/node-core/src/indexer/poi/poi.service.spec.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import {EventEmitter2} from '@nestjs/event-emitter'; import {Test, TestingModule} from '@nestjs/testing'; import {delay} from '@subql/common'; import {Sequelize, Transaction} from '@subql/x-sequelize'; import {NodeConfig} from '../../configure'; import {ProofOfIndex} from '../entities/Poi.entity'; import {StoreCacheService} from '../storeModelProvider'; import {PoiService} from './poi.service'; jest.mock('@subql/x-sequelize', () => { let data: Record = {}; let pendingData: typeof data = {}; let afterCommitHooks: Array<() => void> = []; const mSequelize = { authenticate: jest.fn(), define: () => ({ findOne: jest.fn(), create: (input: any) => input, findByPk: jest.fn((key: string) => ({ toJSON: () => (key === 'latestSyncedPoiHeight' ? {values: 10} : undefined), })), }), query: () => [{nextval: 1}], showAllSchemas: () => ['subquery_1'], sync: jest.fn(), transaction: () => ({ commit: jest.fn(async () => { await delay(1); data = {...data, ...pendingData}; pendingData = {}; afterCommitHooks.map((fn) => fn()); afterCommitHooks = []; }), // Delay of 1s is used to test whether we wait for cache to flush rollback: jest.fn(), afterCommit: jest.fn((fn) => afterCommitHooks.push(fn)), }), // createSchema: jest.fn(), }; const actualSequelize = jest.requireActual('@subql/x-sequelize'); return { ...actualSequelize, Sequelize: jest.fn(() => mSequelize), }; }); describe('PoiService', () => { let service: PoiService; let nodeConfig: NodeConfig; let storeCache: StoreCacheService; beforeEach(async () => { nodeConfig = { proofOfIndex: true, debug: false, } as unknown as NodeConfig; const sequelize = new Sequelize(); storeCache = new StoreCacheService(sequelize, nodeConfig, new EventEmitter2()); storeCache.init('height', {} as any, {} as any); (storeCache as any).cachedModels._metadata = { find: jest.fn().mockResolvedValue(10), bulkRemove: jest.fn(), set: jest.fn(), findByPk: jest.fn(), } as any; const module: TestingModule = await Test.createTestingModule({ providers: [PoiService, {provide: 'IStoreModelProvider', useValue: storeCache}], }).compile(); service = module.get(PoiService); }); afterEach(async () => { await storeCache?.beforeApplicationShutdown(); service.onApplicationShutdown(); }); it('should be defined', () => { expect(service).toBeDefined(); }); describe('PoiToHuman', () => { it('should convert ProofOfIndex to ProofOfIndexHuman', () => { const proofOfIndex: ProofOfIndex = { id: 1, parentHash: Buffer.from('parentHash'), hash: Buffer.from('hash'), chainBlockHash: Buffer.from('chainBlockHash'), operationHashRoot: Buffer.from('operationHashRoot'), }; const result = PoiService.PoiToHuman(proofOfIndex); expect(result).toEqual({ ...proofOfIndex, parentHash: '0x706172656e7448617368', hash: '0x68617368', chainBlockHash: '0x636861696e426c6f636b48617368', operationHashRoot: '0x6f7065726174696f6e48617368526f6f74', }); }); }); describe('init', () => { it('should initialize the poiRepo and migratePoi if needed', async () => { (storeCache as any).cachedModels._metadata = { find: jest.fn().mockResolvedValue(undefined), bulkRemove: jest.fn(), set: jest.fn(), findByPk: jest.fn().mockResolvedValue(undefined), } as any; (service as any).migratePoi = jest.fn(); const spyOnMigration = jest.spyOn(service as any, 'migratePoi'); await service.init('testSchema'); expect(storeCache.metadata.find).toHaveBeenCalledWith('latestSyncedPoiHeight'); expect(spyOnMigration).toHaveBeenCalled(); }); it('should not migratePoi if latestSyncedPoiHeight is defined', async () => { await service.init('testSchema'); expect(storeCache.metadata.find).toHaveBeenCalledWith('latestSyncedPoiHeight'); }); }); describe('rewind', () => { it('should rewind the poi records and update metadata', async () => { const transaction = {} as Transaction; const targetBlockHeight = 5; (storeCache as any).cachedModels._metadata = { find: jest.fn().mockResolvedValue(10), bulkRemove: jest.fn(), set: jest.fn(), } as any; (service as any)._poiRepo = { model: { findOne: jest.fn().mockResolvedValueOnce({id: 1}), findAll: jest .fn() .mockResolvedValueOnce([{id: 1}]) .mockResolvedValueOnce([]), // first time return to destroy, second time to stop destroy: jest.fn().mockResolvedValueOnce(1), }, } as any; await service.rewind(targetBlockHeight, transaction); expect(storeCache.metadata.bulkRemove).toHaveBeenCalledWith(['lastCreatedPoiHeight'], transaction); }); }); describe('migratePoi', () => { it('should migrate the POI table', async () => { const schema = 'testSchema'; const mockRepo = { model: { getTableName: jest.fn().mockReturnValue('poi'), sequelize: { query: jest.fn(), transaction: jest.fn().mockResolvedValue({ commit: jest.fn(), }), }, }, }; (service as any)._poiRepo = mockRepo as any; await (service as any).migratePoi(schema); expect(mockRepo.model.getTableName).toHaveBeenCalled(); }); it('should throw an error if migration fails', async () => { const schema = 'testSchema'; const mockRepo = { model: { getTableName: jest.fn().mockReturnValue('testTable'), sequelize: { query: jest.fn().mockRejectedValue(new Error('Migration failed')), transaction: jest.fn().mockResolvedValue({ commit: jest.fn(), }), }, }, }; (service as any)._poiRepo = mockRepo as any; await expect((service as any).migratePoi(schema)).rejects.toThrow('Failed to migrate poi table. {e}'); }); }); }); ================================================ FILE: packages/node-core/src/indexer/poi/poi.service.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import {Inject, Injectable, OnApplicationShutdown} from '@nestjs/common'; import {u8aToHex} from '@subql/utils'; import {Op, QueryTypes, Transaction} from '@subql/x-sequelize'; import {sqlIterator} from '../../db'; import {getLogger} from '../../logger'; import {PoiRepo} from '../entities'; import {ProofOfIndex, ProofOfIndexHuman, SyncedProofOfIndex} from '../entities/Poi.entity'; import {IStoreModelProvider} from '../storeModelProvider'; import {IPoi, CachePoiModel, PlainPoiModel} from '../storeModelProvider/poi'; const logger = getLogger('PoiService'); /** * Poi service responsible for Poi creation. * Also, could migrate previous poi table and recorded rewind poi */ @Injectable() export class PoiService implements OnApplicationShutdown { private isShutdown = false; private _poiRepo?: IPoi; constructor(@Inject('IStoreModelProvider') private storeModelProvider: IStoreModelProvider) {} onApplicationShutdown(): void { this.isShutdown = true; } static PoiToHuman(proofOfIndex: ProofOfIndex | SyncedProofOfIndex): ProofOfIndexHuman { return { ...proofOfIndex, parentHash: proofOfIndex.parentHash ? u8aToHex(proofOfIndex.parentHash) : undefined, hash: proofOfIndex.hash ? u8aToHex(proofOfIndex.hash) : undefined, chainBlockHash: proofOfIndex.chainBlockHash ? u8aToHex(proofOfIndex.chainBlockHash) : undefined, operationHashRoot: proofOfIndex.operationHashRoot ? u8aToHex(proofOfIndex.operationHashRoot) : undefined, }; } get poiRepo(): IPoi { if (!this._poiRepo) { throw new Error(`No poi repo inited`); } return this._poiRepo; } get plainPoiRepo(): PlainPoiModel { if (this.poiRepo instanceof CachePoiModel) { return this.poiRepo.plainPoiModel; } else if (this.poiRepo instanceof PlainPoiModel) { return this.poiRepo; } throw new Error(`No plainPoiRepo repo inited`); } /** * Init poi service, prepare poiRepo for rewind etc * Migrate poi if required. * @param schema */ async init(schema: string): Promise { this._poiRepo = this.storeModelProvider.poi ?? undefined; if (!this._poiRepo) { return; } const latestSyncedPoiHeight = await this.storeModelProvider.metadata.find('latestSyncedPoiHeight'); if (latestSyncedPoiHeight === undefined) { await this.migratePoi(schema); } } /** * Migrate previous poi table (with mmr etc) * @param schema * @private */ private async migratePoi(schema: string): Promise { try { // Remove and Change column from sequelize not work, it only applies to public schema // https://github.com/sequelize/sequelize/issues/13365 // await this.poiRepo?.model.sequelize?.getQueryInterface().changeColumn(tableName,'mmrRoot',{}) const tableName = this.poiRepo.model.getTableName().toString(); const checkAttributesQuery = `SELECT (NOT EXISTS (SELECT 1 FROM ${tableName} WHERE "operationHashRoot" IS NOT NULL)) AS operationhashroot_nullable, (NOT EXISTS (SELECT 1 FROM ${tableName} WHERE "chainBlockHash" IS NOT NULL)) AS chainblockhash_nullable, (NOT EXISTS (SELECT 1 FROM ${tableName} WHERE "hash" IS NOT NULL)) AS hash_nullable, (NOT EXISTS (SELECT 1 FROM ${tableName} WHERE "parentHash" IS NOT NULL)) AS parent_nullable, (EXISTS (SELECT 1 FROM information_schema.columns WHERE table_name = '_poi' AND column_name = 'mmrRoot' AND table_schema = '${schema}' )) AS mmr_exists;`; const checkResult = await this.poiRepo.model.sequelize?.query(checkAttributesQuery, { plain: true, }); // Drop previous keys in metadata await this.storeModelProvider.metadata.bulkRemove(['blockOffset', 'latestPoiWithMmr', 'lastPoiHeight']); const queries: string[] = []; if (checkResult) { if (checkResult.mmr_exists) { queries.push(`ALTER TABLE ${tableName} DROP COLUMN "mmrRoot";`); queries.push(`DROP TABLE IF EXISTS "${schema}"."_mmr";`); } if (!checkResult.operationhashroot_nullable) { queries.push(`ALTER TABLE ${tableName} ALTER COLUMN "operationHashRoot" DROP NOT NULL;`); } if (!checkResult.chainblockhash_nullable) { queries.push(`ALTER TABLE ${tableName} ALTER COLUMN "chainBlockHash" DROP NOT NULL;`); // keep existing chainBlockHash queries.push( sqlIterator( tableName, `CREATE UNIQUE INDEX IF NOT EXISTS "poi_chainBlockHash" ON ${tableName} ("hash") WHERE "hash" IS NOT NULL` ) ); } if (!checkResult.hash_nullable) { queries.push(`ALTER TABLE ${tableName} ALTER COLUMN "hash" DROP NOT NULL;`); queries.push(sqlIterator(tableName, `UPDATE ${tableName} SET hash = NULL`)); queries.push( sqlIterator( tableName, `CREATE UNIQUE INDEX IF NOT EXISTS "poi_hash" ON ${tableName} ("hash") WHERE "hash" IS NOT NULL` ) ); } if (!checkResult.parent_nullable) { queries.push(`ALTER TABLE ${tableName} ALTER COLUMN "parentHash" DROP NOT NULL;`); queries.push(sqlIterator(tableName, `UPDATE ${tableName} SET "parentHash" = NULL`)); queries.push( sqlIterator( tableName, `CREATE UNIQUE INDEX IF NOT EXISTS "poi_parent_hash" ON ${tableName} ("parentHash") WHERE "parentHash" IS NOT NULL` ) ); } } if (queries.length) { logger.info('Migrating POI table, this may take some time'); const tx = await this.poiRepo.model.sequelize?.transaction(); if (!tx) { throw new Error(`Create transaction for poi migration got undefined!`); } for (const query of queries) { try { await this.poiRepo?.model.sequelize?.query(query, {type: QueryTypes.SELECT, transaction: tx}); } catch (e) { logger.error(`Migration poi failed with query: ${query}`); throw e; } } await tx.commit(); logger.info('Migrating POI completed.'); if (checkResult?.mmr_exists) { logger.info(`If file based mmr were used previously, it can be clean up manually`); } } } catch (e) { throw new Error(`Failed to migrate poi table. {e}`); } } async rewind(targetBlockHeight: number, transaction: Transaction): Promise { await batchDeletePoi(this.poiRepo.model, transaction, targetBlockHeight); const lastSyncedPoiHeight = await this.storeModelProvider.metadata.find('latestSyncedPoiHeight'); if (lastSyncedPoiHeight !== undefined && lastSyncedPoiHeight > targetBlockHeight) { const genesisPoi = await this.poiRepo.model.findOne({ order: [['id', 'ASC']], transaction: transaction, }); // This indicates reindex height is less than genesis poi height // And genesis poi has been remove from `batchDeletePoi` if (!genesisPoi) { await this.storeModelProvider.metadata.bulkRemove(['latestSyncedPoiHeight'], transaction); } else { await this.storeModelProvider.metadata.set('latestSyncedPoiHeight', targetBlockHeight, transaction); } } await this.storeModelProvider.metadata.bulkRemove(['lastCreatedPoiHeight'], transaction); } } // REMOVE 10,000 record per batch async function batchDeletePoi( model: PoiRepo, transaction: Transaction, targetBlockHeight: number, batchSize = 10000 ): Promise { // eslint-disable-next-line no-constant-condition while (true) { try { const recordsToDelete = await model.findAll({ transaction, limit: batchSize, where: { id: { [Op.gt]: targetBlockHeight, }, }, }); if (recordsToDelete.length === 0) { break; } logger.debug(`Found Poi recordsToDelete ${recordsToDelete.length}`); if (recordsToDelete.length) { await model.destroy({ transaction, hooks: false, where: { id: { [Op.in]: recordsToDelete.map((record) => record.id), }, }, }); } // offset += batchSize; } catch (e) { throw new Error(`Reindex model Poi failed, please try to reindex again: ${e}`); } } } ================================================ FILE: packages/node-core/src/indexer/poi/poiSync.service.spec.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import {EventEmitter2} from '@nestjs/event-emitter'; import {delay} from '@subql/common'; import {Sequelize} from '@subql/x-sequelize'; import {range} from 'lodash'; import {NodeConfig} from '../../configure'; import {MetadataFactory, PoiFactory, ProofOfIndex} from '../../indexer'; import {Queue} from '../../utils'; import {PlainPoiModel} from '../storeModelProvider/poi'; import {ISubqueryProject} from '../types'; import {PoiSyncService} from './poiSync.service'; jest.mock('@subql/x-sequelize', () => { let data: Record = {}; let pendingData: typeof data = {}; let afterCommitHooks: Array<() => void> = []; const mSequelize = { authenticate: jest.fn(), define: () => ({ findOne: jest.fn(), create: (input: any) => input, findByPk: jest.fn((key: string) => ({ toJSON: () => (key === 'latestSyncedPoiHeight' ? {values: 10} : undefined), })), }), query: () => [{nextval: 1}], showAllSchemas: () => ['subquery_1'], // model: (entity: string) => ({ // getTableName: () => 'table1', // sequelize: { // escape: (key: any) => key, // query: (sql: string, option?: any) => jest.fn(), // fn: jest.fn().mockImplementation(() => { // return {fn: 'int8range', args: [41204769, null]}; // }), // }, // upsert: jest.fn(), // findByPk: jest.fn((key:string) => ({ // toJSON: () => (key === 'latestSyncedPoiHeight'?{values:10}:undefined), // })), // findOne: jest.fn(({transaction, where: {id}}) => ({ // toJSON: () => (transaction ? pendingData[id] ?? data[id] : data[id]), // })), // bulkCreate: jest.fn((records: {id: string}[]) => { // records.map((r) => (pendingData[r.id] = r)); // }), // destroy: jest.fn(), // }), sync: jest.fn(), transaction: () => ({ commit: jest.fn(async () => { await delay(1); data = {...data, ...pendingData}; pendingData = {}; afterCommitHooks.map((fn) => fn()); afterCommitHooks = []; }), // Delay of 1s is used to test whether we wait for cache to flush rollback: jest.fn(), afterCommit: jest.fn((fn) => afterCommitHooks.push(fn)), }), // createSchema: jest.fn(), }; const actualSequelize = jest.requireActual('@subql/x-sequelize'); return { ...actualSequelize, Sequelize: jest.fn(() => mSequelize), }; }); async function createPoiSyncService(): Promise { const nodeConfig = { proofOfIndex: true, debug: false, } as unknown as NodeConfig; const eventEmitter = new EventEmitter2(); const sequelize = new Sequelize(); const poiSyncService = new PoiSyncService(nodeConfig, eventEmitter, {id: 'testId'} as ISubqueryProject); (poiSyncService as any)._sequelize = sequelize; (poiSyncService as any)._poiRepo = new PlainPoiModel(PoiFactory(sequelize, 'testSchema')); (poiSyncService as any)._metadataRepo = await MetadataFactory( sequelize, 'testSchema', false, '' //No multi chain involved ); return poiSyncService; } async function createGenesisPoi(poiSyncService: PoiSyncService) { // mock poi repo const genesisPoi = { id: 100, chainBlockHash: new Uint8Array(), hash: new Uint8Array(), parentHash: new Uint8Array(), operationHashRoot: new Uint8Array(), }; (poiSyncService as any)._poiRepo = { getPoiById: (id = 100) => { return genesisPoi; }, getFirst: () => { return genesisPoi; }, bulkUpsert: jest.fn(), getPoiBlocksByRange: jest.fn(), }; (poiSyncService as any)._projectId = 'test'; (poiSyncService as any).updateMetadataSyncedPoi = jest.fn(); // Mock upsert metadata (poiSyncService as any).getMetadataLatestSyncedPoi = jest.fn(() => 100); await (poiSyncService as any).ensureGenesisPoi(); await (poiSyncService as any).syncLatestSyncedPoiFromDb(); } describe('Poi Service sync', () => { let poiSyncService: PoiSyncService; beforeEach(async () => { poiSyncService = await createPoiSyncService(); }); afterAll(() => { poiSyncService.stopSync(); poiSyncService.onApplicationShutdown(); }); it('sync hold until genesis poi been created', () => { const spyOnSync = jest.spyOn(poiSyncService as any, 'syncPoiJob'); void poiSyncService.syncPoi(100); expect(spyOnSync).not.toHaveBeenCalled(); }); it('could set genesis Poi into metadata', async () => { await createGenesisPoi(poiSyncService); expect(poiSyncService.latestSyncedPoi.hash).toBeDefined(); expect(poiSyncService.latestSyncedPoi.parentHash).toBeDefined(); expect(poiSyncService.latestSyncedPoi.id).toBe(100); }); it('should skip create genesis poi if latestSyncedPoi existed', async () => { const spyOnCreateGenesisPoi = jest.spyOn(poiSyncService as any, 'createGenesisPoi'); await createGenesisPoi(poiSyncService); //mock fetch poi block from db poiSyncService.poiRepo.getPoiBlocksByRange = jest.fn().mockImplementation(() => [ { id: 101, chainBlockHash: new Uint8Array(), parentHash: null, operationHashRoot: new Uint8Array(), }, { id: 102, chainBlockHash: new Uint8Array(), parentHash: null, operationHashRoot: new Uint8Array(), }, { id: 103, chainBlockHash: new Uint8Array(), parentHash: null, operationHashRoot: new Uint8Array(), }, ]); void poiSyncService.syncPoi(100); // should be only called once expect(spyOnCreateGenesisPoi).toHaveBeenCalledTimes(1); // And genesis poi should not be changed expect(poiSyncService.latestSyncedPoi.id).toBe(100); }); it('sync poi block in continuous range', async () => { await createGenesisPoi(poiSyncService); poiSyncService.poiRepo.bulkUpsert = jest.fn(); const spyOnPoiCreation = jest.spyOn(poiSyncService.poiRepo, 'bulkUpsert'); const spyOnCreateDefaultBlock = jest.spyOn(poiSyncService as any, 'addDefaultPoiBlocks'); // Reduce queue size, make sure flush triggered (poiSyncService as any).syncedPoiQueue = new Queue(2); // mock existing poi blocks data poiSyncService.poiRepo.getPoiBlocksByRange = jest.fn().mockImplementation(() => [ { id: 101, chainBlockHash: new Uint8Array(), parentHash: null, operationHashRoot: new Uint8Array(), }, { id: 102, chainBlockHash: new Uint8Array(), parentHash: null, operationHashRoot: new Uint8Array(), }, { id: 103, chainBlockHash: new Uint8Array(), parentHash: null, operationHashRoot: new Uint8Array(), }, ]); await poiSyncService.syncPoi(102); expect(spyOnPoiCreation).toHaveBeenCalled(); expect(spyOnCreateDefaultBlock).not.toHaveBeenCalled(); }); it('sync poi block in discontinuous range,should get default block created', async () => { await createGenesisPoi(poiSyncService); poiSyncService.poiRepo.bulkUpsert = jest.fn(); const spyOnPoiCreation = jest.spyOn(poiSyncService.poiRepo, 'bulkUpsert'); const spyOnCreateDefaultBlock = jest.spyOn(poiSyncService as any, 'addDefaultPoiBlocks'); const spyOnSetLatestSyncedPoi = jest.spyOn(poiSyncService as any, 'setLatestSyncedPoi'); // Reduce queue size, make sure flush triggered (poiSyncService as any).syncedPoiQueue = new Queue(4); // mock existing poi blocks data poiSyncService.poiRepo.getPoiBlocksByRange = jest.fn().mockImplementation(() => [ { id: 101, chainBlockHash: new Uint8Array(), parentHash: null, operationHashRoot: new Uint8Array(), }, { id: 102, chainBlockHash: new Uint8Array(), parentHash: null, operationHashRoot: new Uint8Array(), }, { id: 105, chainBlockHash: new Uint8Array(), parentHash: null, operationHashRoot: new Uint8Array(), }, ]); await poiSyncService.syncPoi(102); expect(spyOnPoiCreation).toHaveBeenCalled(); expect(spyOnCreateDefaultBlock).toHaveBeenCalledTimes(1); // Set block 101,102,103,104,105 expect(spyOnSetLatestSyncedPoi).toHaveBeenCalledTimes(5); }); it('if sync poi block out of order, it will throw', async () => { await createGenesisPoi(poiSyncService); poiSyncService.poiRepo.bulkUpsert = jest.fn(); (poiSyncService as any).syncedPoiQueue = new Queue(2); await (poiSyncService as any).syncPoiJob([ { id: 101, chainBlockHash: new Uint8Array(), parentHash: null, operationHashRoot: new Uint8Array(), }, { id: 105, chainBlockHash: new Uint8Array(), parentHash: null, operationHashRoot: new Uint8Array(), }, ]); await expect(() => (poiSyncService as any).syncPoiJob([ { id: 103, chainBlockHash: new Uint8Array(), parentHash: null, operationHashRoot: new Uint8Array(), }, ]) ).rejects.toThrow(/Sync poi block out of order, latest synced poi height/); }); it('could stop sync and clear', async () => { await createGenesisPoi(poiSyncService); poiSyncService.poiRepo.bulkUpsert = jest.fn(); // mock existing poi blocks data poiSyncService.poiRepo.getPoiBlocksByRange = jest.fn().mockImplementation(() => [ { id: 101, chainBlockHash: new Uint8Array(), parentHash: null, operationHashRoot: new Uint8Array(), }, { id: 102, chainBlockHash: new Uint8Array(), parentHash: null, operationHashRoot: new Uint8Array(), }, { id: 105, chainBlockHash: new Uint8Array(), parentHash: null, operationHashRoot: new Uint8Array(), }, ]); void poiSyncService.syncPoi(); await delay(2); // Assumed reindex happened, and rollback to 101 await poiSyncService.stopSync(); // Service still exist, and data should be last one synced expect(poiSyncService).toBeTruthy(); expect((poiSyncService as any).latestSyncedPoi.id).toBe(105); expect((poiSyncService as any).isSyncing).toBeFalsy(); expect((poiSyncService as any).isShutdown).toBeTruthy(); // clear data for rewind poiSyncService.clear(); expect((poiSyncService as any)._latestSyncedPoi).toBeUndefined(); // Should be empty expect((poiSyncService as any).syncedPoiQueue.size).toBe(0); }); it('found SyncedProofOfIndex is not complete will throw', async () => { // await createGenesisPoi(poiSyncService); // mock poi repo const genesisPoi = { id: 100, chainBlockHash: new Uint8Array(), hash: new Uint8Array(), parentHash: null, operationHashRoot: new Uint8Array(), }; (poiSyncService as any)._poiRepo = { getPoiById: (id = 100) => { return genesisPoi; }, getFirst: () => { return genesisPoi; }, bulkUpsert: jest.fn(), getPoiBlocksByRange: jest.fn(), }; (poiSyncService as any)._projectId = 'test'; (poiSyncService as any).updateMetadataSyncedPoi = jest.fn(); // Mock upsert metadata (poiSyncService as any).getMetadataLatestSyncedPoi = jest.fn(() => 100); await (poiSyncService as any).ensureGenesisPoi(); await expect((poiSyncService as any).syncLatestSyncedPoiFromDb()).rejects.toThrow(); poiSyncService.poiRepo.bulkUpsert = jest.fn(); }); }); describe('Independent Poi Service sync', () => { let poiSyncService: PoiSyncService; beforeEach(async () => { poiSyncService = await createPoiSyncService(); }); afterAll(() => { poiSyncService.stopSync(); poiSyncService.onApplicationShutdown(); }); function mockProofOfIndexes(start: number, end: number): ProofOfIndex[] { return range(start, end + 1).map((i) => ({ id: i, chainBlockHash: new Uint8Array(), operationHashRoot: new Uint8Array(), hash: new Uint8Array(), parentHash: new Uint8Array(), })); } it('should stop sync as soon when stopSync is called', async () => { const poiBlocks: ProofOfIndex[] = mockProofOfIndexes(4, 100); poiSyncService.poiRepo.getPoiBlocksByRange = jest.fn(async () => { return Promise.resolve(poiBlocks); }); (poiSyncService as any).ensureGenesisPoi = jest.fn(async () => { return Promise.resolve(1); }); // mock last synced poi is 2 (poiSyncService as any)._latestSyncedPoi = mockProofOfIndexes(2, 2)[0]; // this is important, we mock in syncPoiJob this stepes take longer to resolve // then we can shut down during for loop waiting time (poiSyncService as any).syncedPoiQueueAppend = jest.fn(async () => { await delay(1); return 1; }); const syncPoiJobSpy = jest.spyOn(poiSyncService as any, 'syncPoiJob'); // before start sync, latestSyncedPoi is 2 expect(poiSyncService.latestSyncedPoi.id).toBe(2); // Start sync in a separate promise to simulate async behavior const syncPromise = poiSyncService.syncPoi(); // We simulate let sync job keep going for a while await delay(2); // Call stopSync to stop the loop await poiSyncService.stopSync(); // Wait for the syncPoi method to complete await syncPromise; // Verify that the loop was stopped expect((poiSyncService as any).isShutdown).toBe(true); expect(syncPoiJobSpy).toHaveBeenCalled(); // stopped sync, latestSyncedPoi should be changed, like 10 expect(poiSyncService.latestSyncedPoi.id).toBeGreaterThan(2); // And it also should never sync to the end expect(poiSyncService.latestSyncedPoi.id).not.toBe(100); }, 50000); }); ================================================ FILE: packages/node-core/src/indexer/poi/poiSync.service.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import {Inject, Injectable, OnApplicationShutdown} from '@nestjs/common'; import {EventEmitter2} from '@nestjs/event-emitter'; import {DEFAULT_FETCH_RANGE, delay, POI_AWAIT_TIME} from '@subql/common'; import {hexToU8a} from '@subql/utils'; import {Op, Sequelize, Transaction} from '@subql/x-sequelize'; import {NodeConfig} from '../../configure'; import {establishNewSequelize} from '../../db'; import {PoiEvent} from '../../events'; import {getLogger} from '../../logger'; import {exitWithError} from '../../process'; import {hasValue, Queue} from '../../utils'; import {Metadata, MetadataFactory, MetadataRepo} from '../entities'; import {PoiFactory, ProofOfIndex, SyncedProofOfIndex} from '../entities/Poi.entity'; import {ensureProofOfIndexId, PlainPoiModel} from '../storeModelProvider/poi'; import {ISubqueryProject} from '../types'; import {PoiBlock} from './PoiBlock'; const GENESIS_PARENT_HASH = hexToU8a('0x00'); const logger = getLogger('PoiSyncService'); const syncingMsg = (start: number, end: number, size: number) => logger.info(`Synced POI [${start} - ${end}] Poi, total ${size} blocks `); function isSyncedProofOfIndex(poi?: ProofOfIndex | SyncedProofOfIndex): poi is SyncedProofOfIndex { return !!poi && !!(poi as SyncedProofOfIndex).parentHash && !!(poi as SyncedProofOfIndex).hash; } /** * There are two status of POI: * - createdPoi: Poi been created with operationHash, but not include hash and parentHash. Creation of Poi in completed in base-block-dispatcher. * - syncedPoi: appended Poi hash and parentHash, and pois should be continuous * * This PoiSyncService sync Poi from createdPoi to syncedPoi only. And it not uses any cache service. */ @Injectable() export class PoiSyncService implements OnApplicationShutdown { private isShutdown = false; private _poiRepo?: PlainPoiModel; private _metadataRepo?: MetadataRepo; private _sequelize?: Sequelize; private _latestSyncedPoi?: ProofOfIndex; private _lastFlushTs: Date; private isSyncing = false; private syncedPoiQueue: Queue; constructor( protected readonly nodeConfig: NodeConfig, private eventEmitter: EventEmitter2, @Inject('ISubqueryProject') private project: ISubqueryProject ) { this.syncedPoiQueue = new Queue(1000); this._lastFlushTs = new Date(); } onApplicationShutdown(): void { this.isShutdown = true; } get poiRepo(): PlainPoiModel { if (!this._poiRepo) { throw new Error(`No poi repo inited`); } return this._poiRepo; } get metadataRepo(): MetadataRepo { if (!this._metadataRepo) { throw new Error(`No metadata repo inited`); } return this._metadataRepo; } get sequelize(): Sequelize { if (!this._sequelize) { throw new Error(`Poi sync service sequelize not inited`); } return this._sequelize; } get projectId(): string { if (!this.project) { throw new Error(`No project inited`); } return this.project.id; } get latestSyncedPoi(): SyncedProofOfIndex { if (isSyncedProofOfIndex(this._latestSyncedPoi)) { return this._latestSyncedPoi; } else { throw new Error( `_latestSyncedPoi height ${ (this._latestSyncedPoi as SyncedProofOfIndex)?.id } in Poi service is not valid. Please check from the db` ); } } async init(schema: string): Promise { this._sequelize = await establishNewSequelize(this.nodeConfig); this._poiRepo = new PlainPoiModel(PoiFactory(this.sequelize, schema)); this._metadataRepo = await MetadataFactory( this.sequelize, schema, false, '' //No multi chain involved ); logger.info(`Poi sync service init completed, use independent sequelize connection`); } async syncPoi(exitHeight?: number): Promise { if (this.isSyncing) return; this.isSyncing = true; // Enable this after rewind this.isShutdown = false; try { while (!this.isShutdown) { if (!this._latestSyncedPoi) { // Try to sync latestSyncedPoi poi block from db await this.syncLatestSyncedPoiFromDb(); if (this._latestSyncedPoi) { continue; } else { const genesisPoiHeight = await this.ensureGenesisPoi(); // When genesis poi block is not set yet, this will await // Once it set, and `latestSyncedPoi` should also store in _metadata, this delay should never have been triggered, because // `latestSyncedPoi` should have been set from `syncLatestSyncedPoiFromDb` on top. if (genesisPoiHeight === undefined) { await delay(10); } } } else { if (this.isFlushable()) { await this.flushSyncedBlocks(); } // This only get pois already recorded in the _poi table // So we don't have to worry set cached Poi override synced Poi const poiBlocks = await this.poiRepo.getPoiBlocksByRange(this.latestSyncedPoi.id + 1); if (exitHeight !== undefined && this.latestSyncedPoi.id > exitHeight) { break; } if (poiBlocks.length !== 0) { await this.syncPoiJob(poiBlocks); // await this.flushSyncedBlocks() } // Slows down getPoiBlocksByRange when almost catch up last created poi if (poiBlocks.length < DEFAULT_FETCH_RANGE) { await delay(POI_AWAIT_TIME); } } } this.isSyncing = false; } catch (e) { this.isSyncing = false; exitWithError(new Error(`Failed to sync poi`, {cause: e}), logger); } } /** * Wait for current sync job stop, then stop the sync loop */ async stopSync(): Promise { this.isShutdown = true; return new Promise((resolve) => { const id = setInterval(() => { if (!this.isSyncing) { resolve(); clearInterval(id); } }, 200); }); } /** * Clear any cached data in poi sync service * - clear latestSyncedPoi * - clear syncedPoiQueue that waiting to be processed */ clear(): void { this._latestSyncedPoi = undefined; this.syncedPoiQueue.takeAll(); } /** * Get the record of latestSyncedPoiHeight in metadata table * @private */ private async getMetadataLatestSyncedPoi(): Promise { const record = await this.metadataRepo.findByPk('latestSyncedPoiHeight'); if (hasValue(record)) { return record.toJSON().value as number; } return; } private validateSyncedPoi(poi: ProofOfIndex, assertLocation: string) { if (!poi.parentHash || !poi.hash) { let errMsg = `[${assertLocation}] Found synced poi at height ${poi.id} is not valid, please check DB. `; if (!poi.parentHash) { errMsg = errMsg.concat(`\n Poi ${poi.id} parent hash is not defined.`); } if (!poi.hash) { errMsg = errMsg.concat(`\n Poi ${poi.id} hash is not defined.`); } throw new Error(errMsg); } } /** * Search backward from startHeight to find the last valid synced POI (with both hash and parentHash). * Uses direct model query for efficiency. * @param startHeight The height to start searching backward from * @private */ private async findLastValidSyncedPoi(startHeight: number): Promise { // Use raw SQL to avoid TypeScript issues with Op.ne and null const result = await this.poiRepo.model.findOne({ where: { id: {[Op.lte]: startHeight}, hash: {[Op.ne]: null} as any, parentHash: {[Op.ne]: null} as any, }, order: [['id', 'DESC']], }); if (result) { return ensureProofOfIndexId(result.toJSON()); } return undefined; } /** * Get latestSyncedPoi from metadata, and find from the Poi table and set it into the service. * This should only been called when service sync been called and _latestSyncedPoi is not set. * @private */ private async syncLatestSyncedPoiFromDb(): Promise { // Need to re-fetch after rewind, because reindex targetHeight ! == latestSyncedPoiHeight const latestSyncedPoiHeight = await this.getMetadataLatestSyncedPoi(); if (latestSyncedPoiHeight !== undefined) { const recordedPoi = await this.poiRepo.getPoiById(latestSyncedPoiHeight); if (recordedPoi) { try { this.validateSyncedPoi(recordedPoi, 'syncLatestSyncedPoiFromDb'); this.setLatestSyncedPoi(recordedPoi); } catch (e) { // POI exists but is not valid (created state, not synced) // Try to find the last valid synced POI logger.warn( `Metadata latestSyncedPoiHeight ${latestSyncedPoiHeight} points to an invalid POI (created state, not synced). Searching for last valid synced POI...` ); const validPoi = await this.findLastValidSyncedPoi(latestSyncedPoiHeight); if (validPoi) { logger.info(`Found last valid synced POI at height ${validPoi.id}, updating metadata`); const tx = await this.newTx(); await this.updateMetadataSyncedPoi(validPoi.id, tx); await tx.commit(); this.setLatestSyncedPoi(validPoi); } else { // No valid synced POI found, clear metadata logger.warn(`No valid synced POI found below height ${latestSyncedPoiHeight}, clearing metadata`); const tx = await this.newTx(); await this.metadataRepo.destroy({where: {key: 'latestSyncedPoiHeight'}, transaction: tx}); await tx.commit(); } } } else { // POI record doesn't exist at metadata height, search backward for valid POI logger.warn( `POI record not found at metadata height ${latestSyncedPoiHeight}, searching for last valid synced POI...` ); const validPoi = await this.findLastValidSyncedPoi(latestSyncedPoiHeight); if (validPoi) { logger.info(`Found last valid synced POI at height ${validPoi.id}, updating metadata`); const tx = await this.newTx(); await this.updateMetadataSyncedPoi(validPoi.id, tx); await tx.commit(); this.setLatestSyncedPoi(validPoi); } else { // No valid synced POI found, clear metadata logger.warn(`No valid synced POI found below height ${latestSyncedPoiHeight}, clearing metadata`); const tx = await this.newTx(); await this.metadataRepo.destroy({where: {key: 'latestSyncedPoiHeight'}, transaction: tx}); await tx.commit(); } } } } /** * Read first record from poi table (not cache), then create genesis poi * _latestSyncedPoi exist, return if genesis poi been created . * @private */ private async ensureGenesisPoi(): Promise { if (this._latestSyncedPoi) { return; } const genesisPoi = await this.poiRepo.getFirst(); if (genesisPoi) { await this.createGenesisPoi(genesisPoi); return genesisPoi.id; } } /** * Set the _latestSyncedPoi in the Poi sync service, also assert the order * @param poiBlock * @private */ private setLatestSyncedPoi(poiBlock: ProofOfIndex): void { if (this._latestSyncedPoi !== undefined && this.latestSyncedPoi.id >= poiBlock.id) { throw new Error( `Set latest synced poi out of order, current height ${this.latestSyncedPoi.id}, new height ${poiBlock.id} ` ); } this.validateSyncedPoi(poiBlock, 'setLatestSyncedPoi'); this._latestSyncedPoi = poiBlock; this.eventEmitter.emit(PoiEvent.LatestSyncedPoi, { height: poiBlock.id, timestamp: Date.now(), }); } /** * Create Genesis Poi * @param genesisPoi * @private */ private async createGenesisPoi(genesisPoi: ProofOfIndex): Promise { const poiBlock = PoiBlock.create( genesisPoi.id, genesisPoi.chainBlockHash, genesisPoi.operationHashRoot, this.projectId, GENESIS_PARENT_HASH ); const tx = await this.newTx(); await this.poiRepo.bulkUpsert([poiBlock], tx); await this.updateMetadataSyncedPoi(poiBlock.id, tx); await tx.commit(); logger.info(`Genesis Poi created at height ${poiBlock.id}!`); } /** * Take an array of un-synced Pois, and sync them, add hash & parentHash. * If Poi blocks id is not continuous, addDefaultPoiBlocks between them. * After sync, setLatestSyncedPoi in memory * @param poiBlocks * @private */ private async syncPoiJob(poiBlocks: ProofOfIndex[]): Promise { // const appendedBlocks: ProofOfIndex[] = []; for (let i = 0; i < poiBlocks.length; i++) { // Break if we received a signal to stop, otherwise if largeblock range this will keep running if (this.isShutdown) { break; } const nextBlock = poiBlocks[i]; if (this.latestSyncedPoi.id >= nextBlock.id) { throw new Error( `Sync poi block out of order, latest synced poi height ${this.latestSyncedPoi.id}, next poi height ${nextBlock.id}` ); } if (this.latestSyncedPoi.id + 1 < nextBlock.id) { // Fill the with default block await this.addDefaultPoiBlocks(nextBlock.id - 1); } const syncedPoiBlock = PoiBlock.create( nextBlock.id, nextBlock.chainBlockHash, nextBlock.operationHashRoot, this.projectId, this.latestSyncedPoi.hash ); await this.syncedPoiQueueAppend(syncedPoiBlock); this.setLatestSyncedPoi(syncedPoiBlock); } } /** * Add default poi from latestSyncedPoi height to endHeight * @param endHeight * @private */ private async addDefaultPoiBlocks(endHeight: number): Promise { for (let i = this.latestSyncedPoi.id + 1; i <= endHeight; i++) { const syncedPoiBlock = PoiBlock.create(i, null, null, this.projectId, this.latestSyncedPoi.hash); await this.syncedPoiQueueAppend(syncedPoiBlock); this.setLatestSyncedPoi(syncedPoiBlock); } } /** * Create new sequelize transaction for Synced Poi, also for metadata * @private */ private async newTx(): Promise { const tx = await this.sequelize.transaction(); if (!tx) { throw new Error(`Create transaction for poi got undefined!`); } return tx; } /** * Update latestSyncedPoiHeight in Metadata table immediately * @param height * @param tx * @private */ private async updateMetadataSyncedPoi(height: number, tx: Transaction): Promise { const ops: Metadata[] = [{key: 'latestSyncedPoiHeight', value: height}]; await Promise.all([ this.metadataRepo.bulkCreate(ops, { transaction: tx, updateOnDuplicate: ['key', 'value'], }), ]); } /** * Append syncPoi to syncedPoiQueue, check flush If queue is full or overtime, then put input block. * @param syncedPoiBlock * @private */ private async syncedPoiQueueAppend(syncedPoiBlock: PoiBlock) { if (this.isFlushable()) { await this.flushSyncedBlocks(); } this.syncedPoiQueue.put(syncedPoiBlock); } /** * Check the poi queue is flushable, either: * - syncedPoiQueue is full * - over flush threshold time (same as store flush), and the queue is not empty * @private */ private isFlushable(): boolean { const timeBasedFlush = new Date().getTime() - this._lastFlushTs.getTime() > this.nodeConfig.storeFlushInterval * 1000; return !this.syncedPoiQueue.freeSpace || (!!this.syncedPoiQueue.size && timeBasedFlush); } /** * Take out synced Poi out from queue and process * Upsert to Poi table * Also, update last upstarted poi to metadata * @private */ private async flushSyncedBlocks(): Promise { const syncedPois = this.syncedPoiQueue.takeAll(); const tx = await this.newTx(); if (syncedPois.length) { syncingMsg(syncedPois[0].id, syncedPois[syncedPois.length - 1].id, syncedPois.length); // if (this.nodeConfig.debug) { // syncingMsg(appendedBlocks[0].id, appendedBlocks[appendedBlocks.length - 1].id, appendedBlocks.length); // } await this.poiRepo.bulkUpsert(syncedPois, tx); await this.updateMetadataSyncedPoi(syncedPois[syncedPois.length - 1].id, tx); } await tx.commit(); this._lastFlushTs = new Date(); } } ================================================ FILE: packages/node-core/src/indexer/project.service.spec.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import {EventEmitter2} from '@nestjs/event-emitter'; import {buildSchemaFromString} from '@subql/utils'; import {IBlockchainService} from '../blockchain.service'; import {NodeConfig, ProjectUpgradeService} from '../configure'; import {DsProcessorService} from './ds-processor.service'; import {DatasourceParams, DynamicDsService} from './dynamic-ds.service'; import {ProjectService} from './project.service'; import {Header, IBlock, ISubqueryProject} from './types'; import { METADATA_LAST_FINALIZED_PROCESSED_KEY, METADATA_UNFINALIZED_BLOCKS_KEY, UnfinalizedBlocksService, } from './unfinalizedBlocks.service'; import {IBaseIndexerWorker} from './worker'; class TestProjectService extends ProjectService { packageVersion = '1.0.0'; async getBlockTimestamp(height: number): Promise { return Promise.resolve(new Date()); } onProjectChange(project: any): void { return; } protected async getExistingProjectSchema(): Promise { return Promise.resolve('test'); } } class TestBlockchainService implements IBlockchainService { packageVersion = '0.0.0'; blockHandlerKind = ''; // eslint-disable-next-line @typescript-eslint/promise-function-async fetchBlocks(blockNums: number[]): Promise[]> { throw new Error('Method fetchBlocks not implemented.'); } // eslint-disable-next-line @typescript-eslint/promise-function-async fetchBlockWorker( worker: IBaseIndexerWorker, blockNum: number, context: {workers: IBaseIndexerWorker[]} ): Promise
{ throw new Error('Method not implemented.'); } onProjectChange(project: ISubqueryProject): Promise | void { // throw new Error('Method onProjectChange not implemented.'); } // eslint-disable-next-line @typescript-eslint/promise-function-async getBlockTimestamp(height: number): Promise { return Promise.resolve(new Date()); } getBlockSize(block: IBlock): number { return 0; } // eslint-disable-next-line @typescript-eslint/promise-function-async getBestHeight(): Promise { throw new Error('Method getBestHeight not implemented.'); } // eslint-disable-next-line @typescript-eslint/promise-function-async getChainInterval(): Promise { throw new Error('Method getChainInterval not implemented.'); } // eslint-disable-next-line @typescript-eslint/promise-function-async updateDynamicDs(params: DatasourceParams, template: any): Promise { throw new Error('Method updateDynamicDs not implemented.'); } isCustomDs(x: any): x is any { return false; } isRuntimeDs(x: any): x is any { return false; } // eslint-disable-next-line @typescript-eslint/promise-function-async getSafeApi(block: any): Promise { throw new Error('Method not implemented.'); } // eslint-disable-next-line @typescript-eslint/require-await async getFinalizedHeader(): Promise
{ return { blockHash: 'asdf', blockHeight: 1000, parentHash: 'efgh', timestamp: new Date(), }; } // eslint-disable-next-line @typescript-eslint/require-await async getHeaderForHash(hash: string): Promise
{ const num = parseInt(hash.slice(1), 10); return { blockHeight: num, blockHash: hash, parentHash: `b${num - 1}`, timestamp: new Date(), }; } // eslint-disable-next-line @typescript-eslint/require-await async getHeaderForHeight(height: number): Promise
{ return { blockHeight: height, blockHash: `b${height}`, parentHash: `b${height - 1}`, timestamp: new Date(), }; } // eslint-disable-next-line @typescript-eslint/require-await async getRequiredHeaderForHeight(height: number): Promise
{ return { blockHeight: height, blockHash: `b${height}`, parentHash: `b${height - 1}`, timestamp: new Date(), }; } } describe('BaseProjectService', () => { let service: TestProjectService; beforeEach(() => { service = new TestProjectService( null as unknown as DsProcessorService, null as unknown as any, null as unknown as any, null as unknown as any, null as unknown as any, {dataSources: []} as unknown as ISubqueryProject, null as unknown as any, null as unknown as any, {unsafe: false} as unknown as NodeConfig, {getDynamicDatasources: jest.fn()} as unknown as DynamicDsService, null as unknown as any, null as unknown as any, new TestBlockchainService(), null as unknown as any ); }); it('hasDataSourcesAfterHeight', () => { (service as any).dynamicDsService.dynamicDatasources = []; (service as any).projectUpgradeService = { projects: [ [ 1, { dataSources: [ {startBlock: 1, endBlock: 300}, {startBlock: 10, endBlock: 20}, {startBlock: 1, endBlock: 100}, {startBlock: 50, endBlock: 200}, {startBlock: 500}, ], }, ], ], } as any; const result1 = service.hasDataSourcesAfterHeight(301); expect(result1).toBe(true); const result2 = service.hasDataSourcesAfterHeight(502); expect(result2).toBe(true); }); it('hasDataSourcesAfterHeight - no available datasource', () => { (service as any).dynamicDsService.dynamicDatasources = []; (service as any).projectUpgradeService = { projects: [ [ 1, { dataSources: [ {startBlock: 1, endBlock: 300}, {startBlock: 10, endBlock: 20}, {startBlock: 1, endBlock: 100}, {startBlock: 50, endBlock: 200}, ], }, ], ], } as any; const result = service.hasDataSourcesAfterHeight(301); expect(result).toBe(false); }); it('getDataSources', async () => { (service as any).project.dataSources = [ {startBlock: 100, endBlock: 200}, {startBlock: 1, endBlock: 100}, ]; (service as any).dynamicDsService.getDynamicDatasources = jest .fn() .mockResolvedValue([{startBlock: 150, endBlock: 250}]); const result = await service.getDataSources(175); expect(result).toEqual([ {startBlock: 100, endBlock: 200}, {startBlock: 150, endBlock: 250}, ]); }); describe('getDatasourceMap', () => { it('should add endBlock heights correctly', () => { (service as any).dynamicDsService.dynamicDatasources = []; (service as any).projectUpgradeService = { projects: [ [ 1, { dataSources: [ {startBlock: 1, endBlock: 300}, {startBlock: 10, endBlock: 20}, {startBlock: 1, endBlock: 100}, {startBlock: 50, endBlock: 200}, {startBlock: 500}, ], }, ], ], } as any; const result = service.getDataSourcesMap(); expect(result.getAll()).toEqual( new Map([ [ 1, [ {startBlock: 1, endBlock: 300}, {startBlock: 1, endBlock: 100}, ], ], [ 10, [ {startBlock: 1, endBlock: 300}, {startBlock: 1, endBlock: 100}, {startBlock: 10, endBlock: 20}, ], ], [ 21, [ {startBlock: 1, endBlock: 300}, {startBlock: 1, endBlock: 100}, ], ], [ 50, [ {startBlock: 1, endBlock: 300}, {startBlock: 1, endBlock: 100}, {startBlock: 50, endBlock: 200}, ], ], [ 101, [ {startBlock: 1, endBlock: 300}, {startBlock: 50, endBlock: 200}, ], ], [201, [{startBlock: 1, endBlock: 300}]], [301, []], [500, [{startBlock: 500}]], ]) ); }); it('should contain datasources from current project only', () => { (service as any).dynamicDsService.dynamicDatasources = []; (service as any).projectUpgradeService = { projects: [ [ 1, { dataSources: [{startBlock: 1}, {startBlock: 200}], }, ], [ 100, { dataSources: [{startBlock: 100}], }, ], ], } as any; const result = service.getDataSourcesMap(); expect(result.getAll()).toEqual( new Map([ [1, [{startBlock: 1}]], [100, [{startBlock: 100}]], ]) ); }); it('build correct map when upgrade has the same start height as first project', () => { (service as any).dynamicDsService.dynamicDatasources = []; (service as any).projectUpgradeService = { projects: [ [ 7408909, { dataSources: [{startBlock: 7408909}], }, ], [ 7880532, { dataSources: [{startBlock: 7408909}], }, ], ], } as any; const result = service.getDataSourcesMap(); expect(result.getAll()).toEqual( new Map([ [7408909, [{startBlock: 7408909}]], [7880532, [{startBlock: 7408909}]], ]) ); }); }); // Tests initializing the project service to ensure that things are initialized in the correct order // NOTE: this is not currently covering all scenarios describe('initializing services', () => { beforeAll(() => { process.env.TZ = 'utc'; }); const defaultProjects = [ { id: '1', network: { chainId: '1', }, dataSources: [{startBlock: 1}], schema: buildSchemaFromString(`type TestEntity @entity { id: ID! fieldOne: String fieldTwo: Int # fieldThree: BigInt! }`), applyCronTimestamps: jest.fn(), } as unknown as ISubqueryProject, ]; const setupProject = async ( startBlock = 1, unfinalizedBlocks: Header[] = [], lastFinalizedHeight?: number, projects: ISubqueryProject[] = defaultProjects ) => { const project = projects[0]; const projectUpgradeService = await ProjectUpgradeService.create(project, (id: string) => Promise.resolve(projects[parseInt(id, 10)]) ); const nodeConfig = {unsafe: false} as unknown as NodeConfig; const storeService = { init: jest.fn(), initCoreTables: jest.fn(), historical: true, modelProvider: { metadata: { findMany: jest.fn(async () => Promise.resolve({})), find: jest.fn(async (key: string): Promise => { let result: any; switch (key) { case METADATA_LAST_FINALIZED_PROCESSED_KEY: result = lastFinalizedHeight; break; case METADATA_UNFINALIZED_BLOCKS_KEY: result = JSON.stringify(unfinalizedBlocks); break; case 'lastProcessedHeight': result = startBlock - 1; break; case 'deployments': result = JSON.stringify({1: '1'}); break; default: result = undefined; break; } return Promise.resolve(result); }), set: jest.fn(), flush: jest.fn(), } as any, resetCache: jest.fn(), flushCache: jest.fn(), _flushCache: jest.fn(), }, rewind: jest.fn(), } as unknown as any; const blockchainService = new TestBlockchainService(); service = new TestProjectService( { validateProjectCustomDatasources: jest.fn(), } as unknown as DsProcessorService, // dsProcessorService {networkMeta: {}} as unknown as any, //apiService null as unknown as any, // poiService null as unknown as any, // poiSyncService { transaction: jest.fn(() => ({ rollback: jest.fn(), commit: jest.fn(), })), } as unknown as any, // sequelize project, // project projectUpgradeService, // projectUpgradeService storeService, // storeService nodeConfig, { init: jest.fn(), getDynamicDatasources: jest.fn(() => []), resetDynamicDatasource: jest.fn(), } as unknown as DynamicDsService, // dynamicDsService new EventEmitter2(), // eventEmitter new UnfinalizedBlocksService(nodeConfig, storeService.modelProvider, blockchainService), // unfinalizedBlocksService blockchainService, {init: jest.fn()} as any // MultiChainRewindService ); }; it('succeeds with no rewinds', async () => { await setupProject(); await service.init(); await expect(service.init()).resolves.not.toThrow(); }); it('succeeds with a project upgrade rewind', async () => { const projects = [ { ...defaultProjects[0], id: '0', parent: {block: 20, untilBlock: 20, reference: '1'}, schema: buildSchemaFromString(`type TestEntity @entity { id: ID! fieldOne: String fieldTwo: Int fieldThree: BigInt! }`), }, ...defaultProjects, ]; await setupProject(100, [], 100, projects); const reindexSpy = jest.spyOn(service, 'reindex'); await service.init(); // await expect(service.init()).resolves.not.toThrow(); expect(reindexSpy).toHaveReturnedTimes(1); }); it('succeeds with an unfinalized blocks rewind', async () => { await setupProject( 95, [ {blockHeight: 100, blockHash: 'a100', parentHash: 'a99', timestamp: new Date()}, {blockHeight: 99, blockHash: 'a99', parentHash: 'a98', timestamp: new Date()}, ], 90 ); const reindexSpy = jest.spyOn(service, 'reindex'); await expect(service.init()).resolves.not.toThrow(); expect(reindexSpy).toHaveReturnedTimes(1); }); }); }); ================================================ FILE: packages/node-core/src/indexer/project.service.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import assert from 'assert'; import {isMainThread} from 'worker_threads'; import {Inject} from '@nestjs/common'; import {EventEmitter2} from '@nestjs/event-emitter'; import {BaseDataSource, IProjectNetworkConfig} from '@subql/types-core'; import {Sequelize} from '@subql/x-sequelize'; import {IApi} from '../api.service'; import {ICoreBlockchainService} from '../blockchain.service'; import {IProjectUpgradeService, NodeConfig} from '../configure'; import {IndexerEvent} from '../events'; import {getLogger} from '../logger'; import {exitWithError, monitorWrite} from '../process'; import {getExistingProjectSchema, getStartHeight, hasValue, mainThreadOnly, reindex} from '../utils'; import {BlockHeightMap} from '../utils/blockHeightMap'; import {DsProcessorService} from './ds-processor.service'; import {DynamicDsService} from './dynamic-ds.service'; import {MetadataKeys} from './entities'; import {MultiChainRewindService} from './multiChainRewind.service'; import {PoiSyncService} from './poi'; import {PoiService} from './poi/poi.service'; import {StoreService} from './store.service'; import {cacheProviderFlushData} from './storeModelProvider'; import {ISubqueryProject, IProjectService, BypassBlocks, HistoricalMode, Header} from './types'; import {IUnfinalizedBlocksService} from './unfinalizedBlocks.service'; const logger = getLogger('Project'); class NotInitError extends Error { constructor() { super('ProjectService has not been initialized'); } } export class ProjectService< DS extends BaseDataSource = BaseDataSource, API extends IApi = IApi, UnfinalizedBlocksService extends IUnfinalizedBlocksService = IUnfinalizedBlocksService, > implements IProjectService { private _schema?: string; private _startHeight?: number; private _blockOffset?: number; constructor( private readonly dsProcessorService: DsProcessorService, @Inject('APIService') protected readonly apiService: API, @Inject(isMainThread ? PoiService : 'Null') private readonly poiService: PoiService, @Inject(isMainThread ? PoiSyncService : 'Null') private readonly poiSyncService: PoiSyncService, @Inject(isMainThread ? Sequelize : 'Null') private readonly sequelize: Sequelize, @Inject('ISubqueryProject') private readonly project: ISubqueryProject, @Inject('IProjectUpgradeService') private readonly projectUpgradeService: IProjectUpgradeService, @Inject(isMainThread ? StoreService : 'Null') private readonly storeService: StoreService, private readonly nodeConfig: NodeConfig, private readonly dynamicDsService: DynamicDsService, private eventEmitter: EventEmitter2, @Inject('IUnfinalizedBlocksService') private readonly unfinalizedBlockService: UnfinalizedBlocksService, @Inject('IBlockchainService') private blockchainService: ICoreBlockchainService, @Inject(isMainThread ? MultiChainRewindService : 'Null') private multiChainRewindService: MultiChainRewindService ) { if (this.nodeConfig.unsafe) { logger.warn( 'UNSAFE MODE IS ENABLED. This is not recommended for most projects and will not be supported by our hosted service' ); } } protected get schema(): string { assert(this._schema, new NotInitError()); return this._schema; } get startHeight(): number { assert(this._startHeight !== undefined, new NotInitError()); return this._startHeight; } get blockOffset(): number | undefined { return this._blockOffset; } get bypassBlocks(): BypassBlocks { return this.project.network.bypassBlocks ?? []; } protected get isHistorical(): HistoricalMode { return this.storeService.historical; } protected async getExistingProjectSchema(): Promise { return getExistingProjectSchema(this.nodeConfig, this.sequelize); } async init(startHeight?: number): Promise { this.ensureTimezone(); for (const [, project] of this.projectUpgradeService.projects) { await project.applyCronTimestamps(this.blockchainService.getBlockTimestamp.bind(this)); } // Do extra work on main thread to setup stuff if (isMainThread) { this._schema = await this.ensureProject(); // Init metadata before rest of schema so we can determine the correct project version to create the schema await this.storeService.initCoreTables(this._schema); await this.ensureMetadata(); // DynamicDsService is dependent on metadata so we need to ensure it exists first await this.dynamicDsService.init(this.storeService.modelProvider.metadata); /** * WARNING: The order of the following steps is very important. * * The right project needs to be used based on the start height which can change depending on rewinds * * The DB needs to be init for unfinalized and project upgrades to run any rewinds * */ this._startHeight = await this.nextProcessHeight(); // Nothing is indexed, the first project is the default so we can use that start height if (this._startHeight === undefined) { this._startHeight = this.projectUpgradeService.currentHeight; } // These need to be init before upgrade and unfinalized services because they may cause rewinds. await this.initDbSchema(); if (this.nodeConfig.proofOfIndex) { // Prepare for poi migration and creation await this.poiService.init(this.schema); // Sync poi from createdPoi to syncedPoi await this.poiSyncService.init(this.schema); void this.poiSyncService.syncPoi(undefined); } const reindexedUpgrade = await this.initUpgradeService(this.startHeight); const reindexMultiChain = await this.initMultiChainRewindService(); // Unfinalized is dependent on POI in some cases, it needs to be init after POI is init const reindexedUnfinalized = await this.initUnfinalizedInternal(); if (reindexedUnfinalized !== undefined) { this._startHeight = reindexedUnfinalized.blockHeight; } if (reindexedUpgrade !== undefined) { this._startHeight = reindexedUpgrade; } if (reindexMultiChain !== undefined) { this._startHeight = reindexMultiChain.blockHeight; } // Flush any pending operations to set up DB await cacheProviderFlushData(this.storeService.modelProvider, true); } else { assert(startHeight, 'ProjectService must be initialized with a start height in workers'); this.projectUpgradeService.initWorker(startHeight, this.handleProjectChange.bind(this)); // Called to allow handling the first project await this.blockchainService.onProjectChange(this.project); } // Used to load assets into DS-processor, has to be done in any thread await this.dsProcessorService.validateProjectCustomDatasources(await this.getDataSources()); } private ensureTimezone(): void { const timezone = process.env.TZ; if (!timezone || timezone.toLowerCase() !== 'utc') { throw new Error( 'Environment Timezone is not set to UTC. This may cause issues with indexing or proof of index\n Please try to set with "export TZ=UTC"' ); } } private async ensureProject(): Promise { let schema = await this.getExistingProjectSchema(); if (!schema) { schema = await this.createProjectSchema(); } this.eventEmitter.emit(IndexerEvent.Ready, { value: true, }); return schema; } private async createProjectSchema(): Promise { const schema = this.nodeConfig.dbSchema; const schemas = await this.sequelize.showAllSchemas({}); if (!(schemas as unknown as string[]).includes(schema)) { await this.sequelize.createSchema(`"${schema}"`, {}); } return schema; } private async initDbSchema(): Promise { const tx = await this.sequelize.transaction(); await this.storeService.init(this.schema, tx); await tx.commit(); } private async ensureMetadata(): Promise { const metadata = this.storeService.modelProvider.metadata; this.eventEmitter.emit(IndexerEvent.NetworkMetadata, this.apiService.networkMeta); const keys: (keyof MetadataKeys)[] = [ 'lastProcessedHeight', 'blockOffset', 'indexerNodeVersion', 'chain', 'specName', 'genesisHash', 'startHeight', 'processedBlockCount', 'lastFinalizedVerifiedHeight', 'schemaMigrationCount', 'dynamicDatasources', ]; const existing = await metadata.findMany(keys); const {chain, genesisHash, specName} = this.apiService.networkMeta; if (this.project.runner) { const {node, query} = this.project.runner; await metadata.setBulk([ {key: 'runnerNode', value: node.name}, {key: 'runnerNodeVersion', value: node.version}, {key: 'runnerQuery', value: query.name}, {key: 'runnerQueryVersion', value: query.version}, ]); } if (!existing.genesisHash) { await metadata.set('genesisHash', genesisHash); } else { // Check if the configured genesisHash matches the currently stored genesisHash assert( genesisHash === existing.genesisHash, `Specified project manifest chain id / genesis hash does not match database stored genesis hash, consider cleaning project schema using "force-clean".\n Database genesis hash = "${existing.genesisHash}"\n Network genesis hash = "${genesisHash}"` ); } if (existing.chain !== chain) { await metadata.set('chain', chain); } if (existing.specName !== specName) { await metadata.set('specName', specName); } // If project was created before this feature, don't add the key. If it is project created after, add this key. if (!existing.processedBlockCount && !existing.lastProcessedHeight) { await metadata.set('processedBlockCount', 0); } if (existing.indexerNodeVersion !== this.blockchainService.packageVersion) { await metadata.set('indexerNodeVersion', this.blockchainService.packageVersion); } if (!existing.schemaMigrationCount) { await metadata.set('schemaMigrationCount', 0); } if (!existing.startHeight) { await metadata.set('startHeight', this.getStartBlockFromDataSources()); } if (!existing.dynamicDatasources) { await metadata.set('dynamicDatasources', []); } else if (typeof existing.dynamicDatasources === 'string') { // Migration Step: In versions < 4.7.2 dynamic datasources was stored as a string in a json field. logger.info('Migrating dynamic datasources from string to object'); await metadata.set('dynamicDatasources', JSON.parse(existing.dynamicDatasources)); } } protected async getLastProcessedHeight(): Promise { return this.storeService.modelProvider.metadata.find('lastProcessedHeight'); } private async nextProcessHeight(): Promise { const lastProcessedHeight = await this.getLastProcessedHeight(); if (hasValue(lastProcessedHeight)) { return Number(lastProcessedHeight) + 1; } return undefined; } getStartBlockFromDataSources(): number { try { return getStartHeight(this.project.dataSources); } catch (e: any) { exitWithError(e, logger); } } getAllDataSources(): DS[] { assert(isMainThread, 'This method is only available on the main thread'); const dataSources = this.project.dataSources; const dynamicDs = this.dynamicDsService.dynamicDatasources; return [...dataSources, ...dynamicDs]; } hasDataSourcesAfterHeight(height: number): boolean { const datasourcesMap = this.getDataSourcesMap(); //check if there are datasoures for current height if (datasourcesMap.get(height + 1).length) { return true; } //check for datasources with height after the current height const dataSources = datasourcesMap.getAll(); return [...dataSources.entries()].some(([dsHeight, ds]) => dsHeight > height && ds.length); } async getDataSources(blockHeight?: number): Promise { const dataSources = this.project.dataSources; const dynamicDs = await this.dynamicDsService.getDynamicDatasources(); return [...dataSources, ...dynamicDs].filter( (ds) => blockHeight === undefined || (ds.startBlock !== undefined && ds.startBlock <= blockHeight && (ds.endBlock === undefined || ds.endBlock >= blockHeight)) ); } @mainThreadOnly() getDataSourcesMap(): BlockHeightMap { const dynamicDs = this.dynamicDsService.dynamicDatasources; const dsMap = new Map(); const projects = [...this.projectUpgradeService.projects]; for (let i = 0; i < projects.length; i++) { const [height, project] = projects[i]; let nextMinStartHeight: number; if (i + 1 < projects.length) { const nextProject = projects[i + 1][1]; nextMinStartHeight = Math.max( nextProject.dataSources .filter((ds): ds is DS & {startBlock: number} => !!ds.startBlock) .sort((a, b) => a.startBlock - b.startBlock)[0].startBlock, projects[i + 1][0] ); } const activeDataSources = new Set(); //events denote addition or deletion of datasources from height-datasource map entries at the specified block height const events: { block: number; //block height at which addition or deletion of datasource should take place start: boolean; //if start=TRUE, add the datasource. otherwise remove the datasource. ds: DS; }[] = []; [...project.dataSources, ...dynamicDs] .filter((ds): ds is DS & {startBlock: number} => { return !!ds.startBlock && (!nextMinStartHeight || nextMinStartHeight > ds.startBlock); }) .forEach((ds) => { events.push({block: Math.max(height, ds.startBlock), start: true, ds}); if (ds.endBlock) events.push({block: ds.endBlock + 1, start: false, ds}); }); // sort events by block in ascending order, start events come before end events const sortedEvents = events.sort((a, b) => a.block - b.block || Number(b.start) - Number(a.start)); sortedEvents.forEach((event) => { if (event.start) { activeDataSources.add(event.ds); } else { activeDataSources.delete(event.ds); } dsMap.set(event.block, Array.from(activeDataSources)); }); } return new BlockHeightMap(dsMap); } private async initUnfinalizedInternal(): Promise
{ if (this.nodeConfig.unfinalizedBlocks && !this.isHistorical) { exitWithError( 'Unfinalized blocks cannot be enabled without historical. You will need to reindex your project to enable historical', logger ); } return this.initUnfinalized(); } protected async initUnfinalized(): Promise
{ return this.unfinalizedBlockService.init(this.reindex.bind(this)); } /** * If the source project has changed this will align the ancestry of project upgrades. This can result in data being reindexed * @returns {number | undefined} - The height to continue indexing from * */ private async initUpgradeService(startHeight: number): Promise { const upgradePoint = await this.projectUpgradeService.init( this.storeService, startHeight, this.nodeConfig, this.sequelize, this.schema, this.handleProjectChange.bind(this) ); // Called to allow handling the first project await this.blockchainService.onProjectChange(this.project); if (isMainThread) { const lastProcessedHeight = await this.getLastProcessedHeight(); // New project or not using upgrades feature if (upgradePoint === undefined) { await this.projectUpgradeService.updateIndexedDeployments( this.project.id, lastProcessedHeight ?? this.getStartBlockFromDataSources() ); } else { if (lastProcessedHeight && upgradePoint < lastProcessedHeight) { if (!this.isHistorical) { exitWithError( `Unable to upgrade project. Cannot rewind to block ${upgradePoint} without historical indexing enabled.` ); } if (!this.projectUpgradeService.isRewindable) { exitWithError(`Due to dropped changes in schema migration, project cannot rewind`, logger); } const msg = `Rewinding project to preform project upgrade. Block height="${upgradePoint}"`; logger.info(msg); monitorWrite(msg); const timestamp = await this.blockchainService.getBlockTimestamp(upgradePoint); // Only timestamp and blockHeight are used with reindexing so its safe to convert to a header await this.reindex({ blockHeight: upgradePoint, timestamp, } as Header); return upgradePoint + 1; } } } return undefined; } private async initMultiChainRewindService(): Promise
{ return this.multiChainRewindService.init(this.apiService.networkMeta.chain, this.reindex.bind(this)); } private async handleProjectChange(): Promise { if (isMainThread && !this.nodeConfig.allowSchemaMigration) { await this.initDbSchema(); } // Reload the dynamic ds with new project await this.dynamicDsService.getDynamicDatasources(true); await this.blockchainService.onProjectChange(this.project); } async reindex(targetBlockHeader: Header): Promise { const [height, timestamp] = await Promise.all([ this.getLastProcessedHeight(), this.storeService.modelProvider.metadata.find('lastProcessedBlockTimestamp'), ]); if (height === undefined) { throw new Error('Cannot reindex with missing lastProcessedHeight'); } return reindex( this.getStartBlockFromDataSources(), targetBlockHeader, {height, timestamp}, this.storeService, this.unfinalizedBlockService, this.dynamicDsService, this.sequelize, this.projectUpgradeService, this.multiChainRewindService, this.nodeConfig.proofOfIndex ? this.poiService : undefined /* Not providing force clean service, it should never be needed */ ); } } ================================================ FILE: packages/node-core/src/indexer/sandbox.service.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import {isMainThread} from 'worker_threads'; import {Inject, Injectable} from '@nestjs/common'; import {BaseDataSource, Store} from '@subql/types-core'; import {NodeConfig} from '../configure'; import {loadProjectEnvConfig, createSandboxProcessEnv} from '../utils/env'; import {InMemoryCacheService} from './inMemoryCache.service'; import {IndexerSandbox} from './sandbox'; import {StoreService} from './store.service'; import {ISubqueryProject} from './types'; import {hostStoreToStore} from './worker'; /* It would be nice to move this to node core but need to find a way to inject other things into the sandbox */ @Injectable() export class SandboxService { private processorCache: Record = {}; private envConfig: Record = {}; constructor( @Inject(isMainThread ? StoreService : 'Null') private readonly storeService: StoreService, private readonly cacheService: InMemoryCacheService, private readonly nodeConfig: NodeConfig, @Inject('ISubqueryProject') private readonly project: ISubqueryProject ) { // Load environment variables from .env file const projectEnvConfig = loadProjectEnvConfig(this.project.root); this.envConfig = createSandboxProcessEnv(projectEnvConfig); } getDsProcessor( ds: BaseDataSource, api: Api, unsafeApi: UnsafeApi, extraInjections: Record = {} ): IndexerSandbox { const store: Store = isMainThread ? this.storeService.getStore() : hostStoreToStore((global as any).host); // Provided in worker.ts const cache = this.cacheService.getCache(); const entry = this.getDataSourceEntry(ds); let processor = this.processorCache[entry]; if (!processor) { processor = new IndexerSandbox( { cache, store, root: this.project.root, entry, chainId: this.project.network.chainId, envConfig: this.envConfig, }, this.nodeConfig ); this.processorCache[entry] = processor; } // Run this before injecting other values so they cannot be overwritten for (const [key, value] of Object.entries(extraInjections)) { processor.freeze(value, key); } processor.freeze(api, 'api'); if (this.nodeConfig.unsafe) { processor.freeze(unsafeApi, 'unsafeApi'); } processor.freeze(this.project.network.chainId, 'chainId'); return processor; } private getDataSourceEntry(ds: BaseDataSource): string { return ds.mapping.file; } } ================================================ FILE: packages/node-core/src/indexer/sandbox.spec.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import {existsSync, writeFileSync, mkdirSync, rmSync} from 'fs'; import {tmpdir} from 'os'; import * as path from 'path'; import {join} from 'path'; import {NodeVM, VMScript} from 'vm2'; import {NodeConfig} from '../configure/NodeConfig'; import {IndexerSandbox, TestSandbox} from './sandbox'; describe('sandbox for subql-node', () => { let vm: IndexerSandbox; afterEach(() => { vm?.removeAllListeners(); }); // This was caused by vm2@3.10.0 changes that were breaking in a minor release. it('Can use older libraries that use prototypes to set properties', () => { const script = ` const util = require('util'); const EventEmitter = require('events'); function MyStream() { console.log("This is sha1"); } util.inherits(MyStream, EventEmitter); `; const vmScript = new VMScript(script); const vm = new NodeVM({ console: 'inherit', require: { builtin: ['util', 'events'], }, }); expect(() => vm.run(vmScript)).not.toThrow(); }); it('wait until promise resolved', async () => { const root = path.resolve(__dirname, '../../test/sandbox'); const entry = './main.js'; vm = new IndexerSandbox( { store: undefined, root, entry, chainId: '1', // script: fs.readFileSync(path.join(root, entry)).toString(), }, new NodeConfig({subquery: ' ', subqueryName: ' '}) ); let sandboxFuncionEndAt: Date | undefined; vm.on('console.log', (line) => { if (line === 'OK') { sandboxFuncionEndAt = new Date(); } }); await vm.securedExec('testSandbox', []); const secureExecEndAt = new Date(); expect(sandboxFuncionEndAt).toBeDefined(); expect(secureExecEndAt.getTime()).toBeGreaterThanOrEqual(sandboxFuncionEndAt?.getTime() ?? 0); }); // Skip for now, inject Uint8Array into sandbox will break eth skd it.skip('buffer concat with Uint8Array within sandbox', async () => { // src code in the function, this should be resolved const str = 'Hello, Buffer!'; const strBuffer = Buffer.from(str); const uin8Array = new Uint8Array(2); uin8Array[0] = 72; //'H' uin8Array[1] = 101; //'e' expect(Buffer.concat([strBuffer, uin8Array])).toBeTruthy(); const root = path.resolve(__dirname, '../../test/sandbox'); const entry = './buffer-test.js'; vm = new IndexerSandbox( { store: undefined, root, entry, chainId: '1', // script: fs.readFileSync(path.join(root, entry)).toString(), }, new NodeConfig({subquery: ' ', subqueryName: ' '}) ); let sandboxFuncionEndAt1: Date | undefined; let sandboxFuncionEndAt2: Date | undefined; vm.on('console.log', (line) => { if (line === 'Hello, Buffer!He') { sandboxFuncionEndAt1 = new Date(); } if (line === 'HeHe') { sandboxFuncionEndAt2 = new Date(); } }); await vm.securedExec('testSandbox', []); await vm.securedExec('testUin8Array', []); const secureExecEndAt = new Date(); expect(sandboxFuncionEndAt1).toBeDefined(); expect(secureExecEndAt.getTime()).toBeGreaterThanOrEqual(sandboxFuncionEndAt1?.getTime() ?? 0); expect(sandboxFuncionEndAt2).toBeDefined(); }); it('inject atob into sandbox', async () => { // src code in the function, this should be resolved const base64String = 'SGVsbG8sIFdvcmxkIQ=='; expect(atob(base64String)).toBe('Hello, World!'); const root = path.resolve(__dirname, '../../test/sandbox'); const entry = './atob-test.js'; vm = new IndexerSandbox( { store: undefined, root, entry, chainId: '1', }, new NodeConfig({subquery: ' ', subqueryName: ' '}) ); let sandboxFuncionEndAt: Date | undefined; vm.on('console.log', (line) => { if (line === 'Hello, World!') { sandboxFuncionEndAt = new Date(); } }); await vm.securedExec('testSandbox', []); const secureExecEndAt = new Date(); expect(sandboxFuncionEndAt).toBeDefined(); expect(secureExecEndAt.getTime()).toBeGreaterThanOrEqual(sandboxFuncionEndAt?.getTime() ?? 0); }); it.each([ ['./sourcemap-test-esbuild.js', 'packages/node-core/test/src/mappings/mappingHandlers.ts:6:19'], ['./sourcemap-test-webpack.js', '/dymension/src/mappings/mappingHandlers.ts:8:11'], ])('can decode sourcemap %s', async (entry, mapped) => { const root = path.resolve(__dirname, '../../test/sandbox'); vm = new IndexerSandbox( { store: undefined, root, entry, chainId: '1', }, new NodeConfig({subquery: ' ', subqueryName: ' '}) ); const error = await vm.securedExec('throwError', []).then( () => new Error('Expected error to be thrown'), (e) => e ); expect(error.message).toBe('this is a test error'); expect(error.stack).toContain(mapped); }); }); describe('Sandbox Environment Variable Support', () => { let testDir: string; let srcDir: string; const mockNodeConfig: NodeConfig = { subquery: '/test/project', timeout: 30000, unsafe: false, } as NodeConfig; beforeEach(() => { testDir = join(tmpdir(), `subql-sandbox-test-${Date.now()}`); srcDir = join(testDir, 'src'); mkdirSync(srcDir, {recursive: true}); }); afterEach(() => { if (existsSync(testDir)) { rmSync(testDir, {recursive: true, force: true}); } }); describe('IndexerSandbox with environment variables', () => { it('should inject environment variables into sandbox', () => { const envConfig = { DATABASE_URL: 'postgresql://localhost:5432/test', API_KEY: 'test-key-123', NODE_ENV: 'test', }; const sandbox = new IndexerSandbox( { root: testDir, entry: 'src/mappings.js', chainId: 'test-chain', envConfig, }, mockNodeConfig ); // Check that environment variables were injected by examining the sandbox's globals const processGlobal = (sandbox as any).getGlobal('process'); expect(processGlobal).toBeDefined(); expect(processGlobal.env).toEqual({ DATABASE_URL: 'postgresql://localhost:5432/test', API_KEY: 'test-key-123', NODE_ENV: 'test', }); }); it('should work without environment variables', () => { const sandbox = new IndexerSandbox( { root: testDir, entry: 'src/mappings.js', chainId: 'test-chain', // No envConfig provided }, mockNodeConfig ); // Check that process global exists (vm2 injects it by default) but our custom env is not injected const processGlobal = (sandbox as any).getGlobal('process'); expect(processGlobal).toBeDefined(); // The env should be the default Node.js process.env, not our custom variables expect(processGlobal.env.DATABASE_URL).toBeUndefined(); expect(processGlobal.env.API_KEY).toBeUndefined(); }); it('should handle empty environment config', () => { const sandbox = new IndexerSandbox( { root: testDir, entry: 'src/mappings.js', chainId: 'test-chain', envConfig: {}, }, mockNodeConfig ); // Check that process global was injected with empty env const processGlobal = (sandbox as any).getGlobal('process'); expect(processGlobal).toBeDefined(); expect(processGlobal.env).toEqual({}); }); }); describe('TestSandbox with environment variables', () => { it('should inject environment variables into test sandbox', () => { const testContent = ` const result = { databaseUrl: process.env.DATABASE_URL, apiKey: process.env.API_KEY, hasProcess: typeof process !== 'undefined' }; global.subqlTests = [result]; `; const testPath = join(srcDir, 'test.js'); writeFileSync(testPath, testContent); const envConfig = { DATABASE_URL: 'postgresql://localhost:5432/test', API_KEY: 'test-key-456', }; const sandbox = new TestSandbox( { root: testDir, entry: testPath, chainId: 'test-chain', envConfig, }, mockNodeConfig ); const tests = sandbox.getTests(); expect(tests).toHaveLength(1); expect(tests[0]).toEqual({ databaseUrl: 'postgresql://localhost:5432/test', apiKey: 'test-key-456', hasProcess: true, }); }); it('should work without environment variables in test sandbox', () => { const testContent = ` const result = { hasProcess: typeof process !== 'undefined', processType: typeof process }; global.subqlTests = [result]; `; const testPath = join(srcDir, 'test.js'); writeFileSync(testPath, testContent); const sandbox = new TestSandbox( { root: testDir, entry: testPath, chainId: 'test-chain', // No envConfig }, mockNodeConfig ); const tests = sandbox.getTests(); expect(tests).toHaveLength(1); // Note: TestSandbox might still inject some globals, so we check that env is empty expect(tests[0]).toEqual({ hasProcess: true, processType: 'object', }); }); }); describe('Sandbox security with environment variables', () => { it('should inject custom environment variables correctly', () => { const sandbox = new IndexerSandbox( { root: testDir, entry: 'src/mappings.js', chainId: 'test-chain', envConfig: {SAFE_VAR: 'safe-value', ANOTHER_VAR: 'another-value'}, }, mockNodeConfig ); // Check that custom environment variables are injected const processGlobal = (sandbox as any).getGlobal('process'); expect(processGlobal).toBeDefined(); expect(processGlobal.env.SAFE_VAR).toBe('safe-value'); expect(processGlobal.env.ANOTHER_VAR).toBe('another-value'); // Verify that our custom environment variables are present expect(Object.keys(processGlobal.env)).toContain('SAFE_VAR'); expect(Object.keys(processGlobal.env)).toContain('ANOTHER_VAR'); }); it('should preserve original environment variables', () => { const originalEnv = {DATABASE_URL: 'postgresql://localhost:5432/original'}; const sandbox = new IndexerSandbox( { root: testDir, entry: 'src/mappings.js', chainId: 'test-chain', envConfig: originalEnv, }, mockNodeConfig ); // Verify the original env config is intact const processGlobal = (sandbox as any).getGlobal('process'); expect(processGlobal.env.DATABASE_URL).toBe('postgresql://localhost:5432/original'); }); }); }); ================================================ FILE: packages/node-core/src/indexer/sandbox.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import {existsSync, readFileSync} from 'fs'; import path from 'path'; import {SubqlTest} from '@subql/testing'; import {Cache, Store} from '@subql/types-core'; import {levelFilter} from '@subql/utils'; import {last, merge} from 'lodash'; import {SourceMapConsumer, NullableMappedPosition} from 'source-map'; import {NodeVM, NodeVMOptions, VMError, VMScript} from 'vm2'; import {NodeConfig} from '../configure/NodeConfig'; import {getLogger} from '../logger'; import {timeout} from '../utils/promise'; export const SANDBOX_DEFAULT_BUILTINS = ['assert', 'buffer', 'crypto', 'util', 'path', 'url', 'stream']; export interface SandboxOption { cache?: Cache; store?: Store; root: string; entry: string; chainId: string; envConfig?: Record; } const DEFAULT_OPTION = (unsafe = false): NodeVMOptions => { return { console: 'redirect', wasm: unsafe, // TextEncoder was added for Starknet but the reason is unknown. This caused issues with Polkadot so has been disabled. sandbox: {atob /*, TextEncoder*/}, require: { builtin: unsafe ? ['*'] : SANDBOX_DEFAULT_BUILTINS, external: true, context: 'sandbox', }, wrapper: 'commonjs', sourceExtensions: ['js', 'cjs'], }; }; const logger = getLogger('sandbox'); export class Sandbox extends NodeVM { private root: string; private entry: string; private sourceMap: any; constructor( option: SandboxOption, protected readonly script: VMScript, protected config: NodeConfig ) { super( merge(DEFAULT_OPTION(config.unsafe), { require: { root: option.root, resolve: (moduleName: string) => { return require.resolve(moduleName, {paths: [option.root]}); }, }, }) ); // polkadot api uses URL global this.setGlobal('URL', require('url').URL); this.root = config.subquery.startsWith('ipfs://') ? '' : option.root; this.entry = option.entry; this.freeze(option.chainId, 'chainId'); // Inject environment variables if provided if (option.envConfig) { this.freeze({env: option.envConfig}, 'process'); } const sourceMapFile = path.join(this.root, this.entry); if (existsSync(sourceMapFile)) { this.sourceMap = this.decodeSourceMap(sourceMapFile); } } async runTimeout(duration: number): Promise { try { return await timeout( this.run(this.script), duration, `Sandbox execution timeout in ${duration} seconds. Please increase --timeout` ); } catch (e) { const msgPart = 'Cannot find module '; if (e instanceof VMError && e.message.includes(msgPart)) { const err = new Error( `Unable to resolve module ${e.message.replace( msgPart, '' )}. To resolve this you can either:\n\tNarrow your import. e.g Instead of "import { BigNumber } from 'ethers'" you can use "import {BigNumber} from '@ethersproject/bignumber';"\n\tEnable the --unsafe flag.`, {cause: e} ); // Copy the stack so that the logged error is more useful err.stack = e.stack; throw err; } throw e; } } protected async convertStack(stackTrace: string | undefined): Promise { if (!stackTrace) return undefined; if (!this.sourceMap) { logger.warn('Unable to find a source map. Rebuild your project with latest @subql/cli to generate a source map.'); logger.warn('Logging unresolved stack trace.'); return stackTrace; } const entryFile = last(this.entry.split('/')) ?? ''; const entryParts = entryFile.split('.'); const regex = new RegExp(`${entryParts[0]}.${entryParts[1]}:([0-9]+):([0-9]+)`, 'gi'); const matches = [...stackTrace.matchAll(regex)]; for (const match of matches) { const lineNumber = Number.parseInt(match[1]); const columnNumber = Number.parseInt(match[2]); const lineInfo = await this.findLineInfo(this.sourceMap, lineNumber, columnNumber); const newLineTrace = `${lineInfo.source}:${lineInfo.line}:${lineInfo.column}`; stackTrace = stackTrace.replace(`${path.join(this.root, this.entry)}:${match[1]}:${match[2]}`, newLineTrace); } return stackTrace; } decodeSourceMap(sourceMapPath: string): any { const source = readFileSync(sourceMapPath).toString(); // Projects built with old @subql/cli with webpack let sourceMapBase64 = source.split(`//# sourceMappingURL=data:application/json;charset=utf-8;base64,`)[1]; if (!sourceMapBase64) { // Projects built with @subql/cli with esbuild sourceMapBase64 = source.split('//# sourceMappingURL=data:application/json;base64,')[1]; } if (!sourceMapBase64) { logger.warn('Unable to find a source map for project'); logger.warn('Build your project with latest @subql/cli to generate a source map'); return; } const sourceMap = Buffer.from(sourceMapBase64, 'base64').toString(); const json = JSON.parse(sourceMap); return json; } async findLineInfo( sourcemap: any, compiledLineNumber: number, compiledColumnNumber: number ): Promise { const consumer = await new SourceMapConsumer(sourcemap); const lineInfo = consumer.originalPositionFor({line: compiledLineNumber, column: compiledColumnNumber}); return lineInfo; } } export class IndexerSandbox extends Sandbox { constructor(option: SandboxOption, config: NodeConfig) { super( option, new VMScript( `const mappingFunctions = require('${option.entry}'); if(mappingFunctions[funcName] === undefined){ throw new Error('Handler function '+ funcName + ' is not found, available functions:' + JSON.stringify(Object.keys(mappingFunctions))) } module.exports = mappingFunctions[funcName](...args); `, path.join(option.root, 'sandbox') ), config ); this.injectGlobals(option); } async securedExec(funcName: string, args: unknown[]): Promise { this.setGlobal('args', args); this.setGlobal('funcName', funcName); try { await this.runTimeout(this.config.timeout); } catch (e: any) { const newStack = await this.convertStack(e.stack); e.stack = newStack; e.handler = funcName; if (this.config.logLevel && levelFilter('debug', this.config.logLevel)) { e.handlerArgs = JSON.stringify(args); } throw e; } finally { this.setGlobal('args', []); this.setGlobal('funcName', ''); } } private injectGlobals({cache, store}: SandboxOption) { if (store) { this.freeze(store, 'store'); } if (cache) { this.freeze(cache, 'cache'); } this.freeze(logger, 'logger'); } } export class TestSandbox extends Sandbox { constructor(option: SandboxOption, config: NodeConfig) { super( { ...option, }, new VMScript(`const tests = require('${option.entry}');`, path.join(option.root, 'sandbox')), config ); this.injectGlobals(option); } private injectGlobals({envConfig, store}: SandboxOption) { if (store) { this.freeze(store, 'store'); } if (envConfig) { this.freeze({env: envConfig}, 'process'); } this.freeze(logger, 'logger'); } getTests(): SubqlTest[] { this.run(this.script); return this.getGlobal('subqlTests'); } } ================================================ FILE: packages/node-core/src/indexer/store/entity.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import {Store, Entity} from '@subql/types-core'; type Properties = {id: string}; export class EntityClass

implements Entity { id: string; // Name needs to be private so that it can be converted to a generated entity #name: string; #store: Store; constructor(name: string, properties: P, store: Store) { this.#name = name; this.#store = store; this.id = properties.id; Object.assign(this, properties); } static create(name: string, properties: T | null | undefined, store: Store): T | undefined { if (!properties) return undefined; return new EntityClass(name, properties, store) as unknown as T; } async save(): Promise { return this.#store.set(this.#name, this.id, this); } } ================================================ FILE: packages/node-core/src/indexer/store/index.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 export * from './store'; ================================================ FILE: packages/node-core/src/indexer/store/store.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import assert from 'assert'; import {Store as IStore, Entity, FieldsExpression, GetOptions} from '@subql/types-core'; import {Transaction} from '@subql/x-sequelize'; import {NodeConfig} from '../../configure'; import {monitorWrite} from '../../process'; import {handledStringify} from '../../utils'; import {IStoreModelProvider} from '../storeModelProvider'; import {StoreOperations} from '../StoreOperations'; import {OperationType} from '../types'; import {EntityClass} from './entity'; /* A context is provided to allow it to be updated by the owner of the class instance */ type Context = { getHistoricalUnit: () => number; transaction?: Transaction; operationStack?: StoreOperations; isIndexed: (entity: string, field: string) => boolean; isIndexedHistorical: (entity: string, field: string) => boolean; }; export class Store implements IStore { /* These need to explicitly be private using JS style private properties in order to not leak these in the sandbox */ #config: NodeConfig; #modelProvider: IStoreModelProvider; #context: Context; constructor(config: NodeConfig, modelProvider: IStoreModelProvider, context: Context) { this.#config = config; this.#modelProvider = modelProvider; this.#context = context; } #queryLimitCheck(storeMethod: string, entity: string, options: GetOptions) { if (options.limit > this.#config.queryLimit) { throw new Error(`Query limit exceeds the maximum allowed value of ${this.#config.queryLimit}`); } } async get(entity: string, id: string): Promise { try { const raw = await this.#modelProvider.getModel(entity).get(id, this.#context.transaction); monitorWrite(() => `-- [Store][get] Entity ${entity} ID ${id}, data: ${handledStringify(raw)}`); return EntityClass.create(entity, raw, this); } catch (e) { throw new Error(`Failed to get Entity ${entity} with id ${id}: ${e}`); } } async getByField( entity: string, field: keyof T, value: T[keyof T] | T[keyof T][], options: GetOptions ): Promise { try { const indexed = this.#context.isIndexed(entity, String(field)); assert(indexed, `to query by field ${String(field)}, an index must be created on model ${entity}`); this.#queryLimitCheck('getByField', entity, options); const raw = await this.#modelProvider .getModel(entity) .getByFields([Array.isArray(value) ? [field, 'in', value] : [field, '=', value]], options); monitorWrite(() => `-- [Store][getByField] Entity ${entity}, data: ${handledStringify(raw)}`); return raw.map((v) => EntityClass.create(entity, v, this)) as T[]; } catch (e) { throw new Error(`Failed to getByField Entity ${entity} with field ${String(field)}: ${e}`); } } async getByFields( entity: string, filter: FieldsExpression[], options: GetOptions ): Promise { try { // Check that the fields are indexed filter.forEach((f) => { assert( this.#context.isIndexed(entity, String(f[0])), `to query by field ${String(f[0])}, an index must be created on model ${entity}` ); }); this.#queryLimitCheck('getByFields', entity, options); const raw = await this.#modelProvider.getModel(entity).getByFields(filter, options, this.#context.transaction); monitorWrite(() => `-- [Store][getByFields] Entity ${entity}, data: ${handledStringify(raw)}`); return raw.map((v) => EntityClass.create(entity, v, this)) as T[]; } catch (e) { throw new Error(`Failed to getByFields Entity ${entity}: ${e}`); } } async getOneByField(entity: string, field: keyof T, value: T[keyof T]): Promise { try { const indexed = this.#context.isIndexedHistorical(entity, field as string); assert(indexed, `to query by field ${String(field)}, a unique index must be created on model ${entity}`); const [raw] = await this.#modelProvider .getModel(entity) .getByFields([Array.isArray(value) ? [field, 'in', value] : [field, '=', value]], {limit: 1}); monitorWrite(() => `-- [Store][getOneByField] Entity ${entity}, data: ${handledStringify(raw)}`); return EntityClass.create(entity, raw, this); } catch (e) { throw new Error(`Failed to getOneByField Entity ${entity} with field ${String(field)}: ${e}`); } } async set(entity: string, _id: string, data: Entity): Promise { try { const historicalUnit = this.#context.getHistoricalUnit(); await this.#modelProvider.getModel(entity).set(_id, data, historicalUnit, this.#context.transaction); monitorWrite( () => `-- [Store][set] Entity ${entity}, height: ${historicalUnit}, data: ${handledStringify(data)}` ); this.#context.operationStack?.put(OperationType.Set, entity, data); } catch (e) { throw new Error(`Failed to set Entity ${entity} with _id ${_id}: ${e}`); } } async bulkCreate(entity: string, data: Entity[]): Promise { try { const historicalUnit = this.#context.getHistoricalUnit(); await this.#modelProvider.getModel(entity).bulkCreate(data, historicalUnit, this.#context.transaction); for (const item of data) { this.#context.operationStack?.put(OperationType.Set, entity, item); } monitorWrite( () => `-- [Store][bulkCreate] Entity ${entity}, height: ${historicalUnit}, data: ${handledStringify(data)}` ); } catch (e) { throw new Error(`Failed to bulkCreate Entity ${entity}: ${e}`); } } async bulkUpdate(entity: string, data: Entity[], fields?: string[]): Promise { try { const historicalUnit = this.#context.getHistoricalUnit(); await this.#modelProvider.getModel(entity).bulkUpdate(data, historicalUnit, fields, this.#context.transaction); for (const item of data) { this.#context.operationStack?.put(OperationType.Set, entity, item); } monitorWrite( () => `-- [Store][bulkUpdate] Entity ${entity}, height: ${historicalUnit}, data: ${handledStringify(data)}` ); } catch (e) { throw new Error(`Failed to bulkCreate Entity ${entity}: ${e}`); } } async remove(entity: string, id: string): Promise { return this.bulkRemove(entity, [id]); } async bulkRemove(entity: string, ids: string[]): Promise { try { const historicalUnit = this.#context.getHistoricalUnit(); await this.#modelProvider.getModel(entity).bulkRemove(ids, historicalUnit, this.#context.transaction); for (const id of ids) { this.#context.operationStack?.put(OperationType.Remove, entity, id); } monitorWrite( () => `-- [Store][remove] Entity ${entity}, height: ${historicalUnit}, ids: ${handledStringify(ids)}` ); } catch (e) { throw new Error(`Failed to bulkRemove Entity ${entity}: ${e}`); } } } ================================================ FILE: packages/node-core/src/indexer/store.service.spec.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import {DataTypes, Model, ModelAttributes} from '@subql/x-sequelize'; import {addIdAndBlockRangeAttributes} from '../db'; import {StoreService} from './store.service'; describe('Store Service', () => { let storeService: StoreService; it('addIdAndBlockRangeAttributes', () => { storeService = new StoreService(null as any, null as any, null as any, null as any); const attributes = { id: { type: DataTypes.STRING, primaryKey: true, }, } as ModelAttributes, any>; addIdAndBlockRangeAttributes(attributes); expect(Object.keys(attributes).length).toEqual(3); expect((attributes.id as any).primaryKey).toEqual(false); expect(attributes.__id).toEqual({ type: DataTypes.UUID, defaultValue: DataTypes.UUIDV4, allowNull: false, primaryKey: true, }); expect(attributes.__block_range).toEqual({ type: DataTypes.RANGE(DataTypes.BIGINT), allowNull: false, }); }); it('could find indexed field', () => { storeService = new StoreService(null as any, null as any, null as any, null as any); (storeService as any).__modelIndexedFields = [ { entityName: 'MinerIP', // This is a special case that upperFirst and camelCase will fail fieldName: 'net_uid', isUnique: false, type: 'btree', }, { entityName: 'MinerColdkey', fieldName: 'net_uid', isUnique: false, type: 'btree', }, ]; expect(() => storeService.isIndexed('MinerIP', 'netUid')).toBeTruthy(); }); it('isIndexed support snake case', () => { storeService = new StoreService( null as any, null as any, { getModel: (entityName: string) => { if (entityName !== 'Transfer') { return { model: { options: {}, }, }; } return { model: { options: { indexes: [ { fields: ['account_from_id'], unique: false, type: 'btree', }, { fields: ['account_to_id'], unique: false, type: 'btree', }, ], }, }, }; }, } as any, null as any ); expect(storeService.isIndexed('Transfer', 'account_fromId')).toEqual(true); expect(storeService.isIndexed('Transfer', 'accountToId')).toEqual(true); expect(storeService.isIndexed('Transfer', 'accountToId2')).toEqual(false); expect(storeService.isIndexed('Transfer2', 'accountToId')).toEqual(false); expect(storeService.isIndexed('Transfer', 'AccountToId')).toEqual(true); expect(storeService.isIndexed('Transfer', 'accountToID')).toEqual(true); expect(storeService.isIndexed('Transfer', 'accountTo_ID')).toEqual(true); expect(storeService.isIndexed('Transfer', 'accountTo_Id')).toEqual(true); }); it('isIndexedHistorical support snake case', () => { storeService = new StoreService( null as any, null as any, { getModel: (entityName: string) => { if (entityName !== 'Transfer') { return { model: { options: {}, }, }; } return { model: { options: { indexes: [ { fields: ['account_from_id'], unique: true, type: 'btree', }, { fields: ['account_to_id'], unique: true, type: 'btree', }, { fields: ['not_index_id'], unique: false, type: 'btree', }, ], }, }, }; }, } as any, null as any ); (storeService as any)._historical = false; expect(storeService.isIndexedHistorical('Transfer', 'account_fromId')).toEqual(true); expect(storeService.isIndexedHistorical('Transfer', 'accountToId')).toEqual(true); expect(storeService.isIndexedHistorical('Transfer', 'accountToId2')).toEqual(false); expect(storeService.isIndexedHistorical('Transfer2', 'accountToId')).toEqual(false); expect(storeService.isIndexedHistorical('Transfer', 'not_index_id')).toEqual(false); expect(storeService.isIndexedHistorical('Transfer', 'not_index_id')).toEqual(false); expect(storeService.isIndexed('Transfer', 'AccountToId')).toEqual(true); expect(storeService.isIndexed('Transfer', 'accountToID')).toEqual(true); expect(storeService.isIndexed('Transfer', 'accountTo_ID')).toEqual(true); expect(storeService.isIndexed('Transfer', 'accountTo_Id')).toEqual(true); }); }); ================================================ FILE: packages/node-core/src/indexer/store.service.test.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import {EventEmitter2} from '@nestjs/event-emitter'; import {buildSchemaFromString} from '@subql/utils'; import {Sequelize, QueryTypes} from '@subql/x-sequelize'; import {NodeConfig} from '../configure'; import {DbOption} from '../db'; import {StoreService} from './store.service'; import {CachedModel, PlainStoreModelService, StoreCacheService} from './storeModelProvider'; const option: DbOption = { host: process.env.DB_HOST ?? '127.0.0.1', port: process.env.DB_PORT ? Number(process.env.DB_PORT) : 5432, username: process.env.DB_USER ?? 'postgres', password: process.env.DB_PASS ?? 'postgres', database: process.env.DB_DATABASE ?? 'postgres', timezone: 'utc', }; jest.setTimeout(60000); // Mock 1740100000 is the timestamp of the genesis block const genBlockTimestamp = (height: number) => (1740100000 + height) * 1000; const genBlockDate = (height: number) => new Date(genBlockTimestamp(height)); const testSchemaName = 'test_model_store'; const schema = buildSchemaFromString(` type Account @entity { id: ID! # Account address balance: Int } `); describe('Check whether the db store and cache store are consistent.', () => { let sequelize: Sequelize; let storeService: StoreService; beforeAll(async () => { sequelize = new Sequelize( `postgresql://${option.username}:${option.password}@${option.host}:${option.port}/${option.database}`, option ); await sequelize.authenticate(); await sequelize.query(`CREATE SCHEMA ${testSchemaName};`); const nodeConfig = new NodeConfig({subquery: 'test', proofOfIndex: true, enableCache: false}); const project = {network: {chainId: '1'}, schema} as any; const dbModel = new PlainStoreModelService(sequelize, nodeConfig); storeService = new StoreService(sequelize, nodeConfig, dbModel, project); await storeService.initCoreTables(testSchemaName); const tx = await sequelize.transaction(); await storeService.init(testSchemaName, tx); await tx.commit(); }); afterAll(async () => { await sequelize.query(`DROP SCHEMA ${testSchemaName} CASCADE;`); await sequelize.close(); }); afterEach(async () => { if (storeService.transaction) { await storeService.modelProvider.applyPendingChanges(1, false, storeService.transaction); } }); it('Same block, Execute the set method multiple times.', async () => { await storeService.setBlockHeader({ blockHeight: 1, blockHash: '0x01', parentHash: '0x00', timestamp: genBlockDate(1), }); const accountEntity = {id: 'block-001', balance: 100}; // account not exist. let account = await storeService.getStore().get('Account', accountEntity.id); expect(account).toBeUndefined(); // insert account success. await storeService.getStore().set('Account', accountEntity.id, accountEntity as any); account = await storeService.getStore().get('Account', accountEntity.id); expect(account).toEqual(accountEntity); // block range check. const [dbData] = await sequelize.query(`SELECT * FROM "${testSchemaName}"."accounts" WHERE id = :id`, { replacements: {id: accountEntity.id}, type: QueryTypes.SELECT, transaction: storeService.transaction, }); expect(dbData._block_range).toEqual([ {value: '1', inclusive: true}, {value: null, inclusive: false}, ]); // update account success. const account001 = {id: 'block-001', balance: 10000}; await storeService.getStore().set('Account', account001.id, account001 as any); const account001After = await storeService.getStore().get('Account', account001.id); expect(account001After).toEqual(account001); console.log({accountAfter: account001After, accountEntityAfter: account001}); // only one record in db and block range check. const allDatas = await sequelize.query(`SELECT * FROM "${testSchemaName}"."accounts"`, { type: QueryTypes.SELECT, transaction: storeService.transaction, }); expect(allDatas).toHaveLength(1); expect(allDatas[0]._block_range).toEqual([ {value: '1', inclusive: true}, {value: null, inclusive: false}, ]); const account002 = {id: 'block-002', balance: 100}; await storeService.getStore().bulkCreate('Account', [account002, account001]); const account002After = await storeService.getStore().get('Account', account002.id); expect(account002After).toEqual(account002); // two records in db and block range check. const allDatas2 = await sequelize.query(`SELECT * FROM "${testSchemaName}"."accounts"`, { type: QueryTypes.SELECT, transaction: storeService.transaction, }); expect(allDatas2).toHaveLength(2); expect(allDatas2[0]._block_range).toEqual([ {value: '1', inclusive: true}, {value: null, inclusive: false}, ]); expect(allDatas2[1]._block_range).toEqual([ {value: '1', inclusive: true}, {value: null, inclusive: false}, ]); }, 30000); it('_block_range update check', async () => { await storeService.setBlockHeader({ blockHeight: 1000, blockHash: '0x1000', parentHash: '0x0999', timestamp: genBlockDate(1000), }); // insert new account. const account1000Data = {id: 'block-1000', balance: 999}; await storeService.getStore().set('Account', account1000Data.id, account1000Data as any); const account1000 = await storeService.getStore().get('Account', account1000Data.id); expect(account1000).toEqual(account1000Data); const allDatas = await sequelize.query(`SELECT * FROM "${testSchemaName}"."accounts"`, { type: QueryTypes.SELECT, transaction: storeService.transaction, }); expect(allDatas).toHaveLength(3); // set old account. const account002 = {id: 'block-002', balance: 222222}; await storeService.getStore().set('Account', account002.id, account002 as any); const account002After = await storeService.getStore().get('Account', account002.id); expect(account002After).toEqual(account002); expect((account002After as any).balance).toEqual(222222); const allDatas2 = await sequelize.query(`SELECT * FROM "${testSchemaName}"."accounts"`, { type: QueryTypes.SELECT, transaction: storeService.transaction, }); expect(allDatas2).toHaveLength(4); // check block range. const account002Datas = allDatas2.filter((v) => v.id === account002.id); expect(account002Datas).toHaveLength(2); expect(account002Datas.map((v) => v._block_range).sort((a, b) => b[0].value - a[0].value)).toEqual([ [ {value: '1000', inclusive: true}, {value: null, inclusive: false}, ], [ {value: '1', inclusive: true}, {value: '1000', inclusive: false}, ], ]); }, 100000); }); describe('Cache Provider', () => { let sequelize: Sequelize; let storeService: StoreService; let cacheModel: StoreCacheService; let Account: CachedModel; beforeAll(async () => { sequelize = new Sequelize( `postgresql://${option.username}:${option.password}@${option.host}:${option.port}/${option.database}`, option ); await sequelize.authenticate(); await sequelize.query(`CREATE SCHEMA ${testSchemaName};`); const nodeConfig = new NodeConfig({ subquery: 'test', proofOfIndex: true, enableCache: false, storeCacheAsync: true, storeCacheThreshold: 1, storeCacheUpperLimit: 1, storeFlushInterval: 0, }); const project = {network: {chainId: '1'}, schema} as any; cacheModel = new StoreCacheService(sequelize, nodeConfig, new EventEmitter2()); storeService = new StoreService(sequelize, nodeConfig, cacheModel, project); await storeService.initCoreTables(testSchemaName); const tx = await sequelize.transaction(); await storeService.init(testSchemaName, tx); await tx.commit(); Account = cacheModel.getModel('Account') as CachedModel; }); afterAll(async () => { await sequelize.query(`DROP SCHEMA ${testSchemaName} CASCADE;`); await sequelize.close(); }); beforeEach(async () => { await sequelize.query(`TRUNCATE TABLE "${testSchemaName}"."accounts" CASCADE;`); }); async function cacheFlush(blockHeight: number, handle: (blockHeight: number) => Promise) { const tx = await sequelize.transaction(); tx.afterCommit(() => { Account.clear(blockHeight); }); await storeService.setBlockHeader({ blockHeight, blockHash: `0x${blockHeight}`, parentHash: `0x${blockHeight - 1}`, timestamp: genBlockDate(blockHeight), }); await handle(blockHeight); await Account.runFlush(tx, blockHeight); await tx.commit(); } it('For data that already exists, if there is a delete-create-delete operation, the database should have two entries for the data.', async () => { const getAllAccounts = () => sequelize.query(`SELECT * FROM "${testSchemaName}"."accounts"`, { type: QueryTypes.SELECT, }); const accountEntity1 = {id: 'accountEntity-001', balance: 100}; await cacheFlush(1, async (blockHeight) => { await Account.set(accountEntity1.id, accountEntity1, blockHeight); }); // database check let allDatas = await getAllAccounts(); expect(allDatas).toHaveLength(1); // next block 999 const accountEntity2 = {id: 'accountEntity-002', balance: 9999}; await cacheFlush(999, async (blockHeight) => { await Account.remove(accountEntity1.id, blockHeight); const oldAccunt = await Account.get(accountEntity1.id); expect(oldAccunt).toBeUndefined(); await Account.set(accountEntity2.id, accountEntity2, blockHeight); }); allDatas = await getAllAccounts(); expect(allDatas).toHaveLength(2); // next block 99999 await cacheFlush(99999, async (blockHeight) => { // last block, accountEntity1 should be deleted. const oldAccunt1 = await Account.get(accountEntity1.id); expect(oldAccunt1).toBeUndefined(); let oldAccunt2 = await Account.get(accountEntity2.id); expect(oldAccunt2.balance).toEqual(accountEntity2.balance); await Account.remove(accountEntity2.id, blockHeight); oldAccunt2 = await Account.get(accountEntity2.id); expect(oldAccunt2).toBeUndefined(); await Account.set(accountEntity2.id, {id: 'accountEntity-002', balance: 999999} as any, blockHeight); oldAccunt2 = await Account.get(accountEntity2.id); expect(oldAccunt2.balance).toEqual(999999); }); allDatas = await getAllAccounts(); expect(allDatas).toHaveLength(3); }); it('Should correctly rewind to previous states', async () => { const getAllAccounts = () => sequelize.query(`SELECT * FROM "${testSchemaName}"."accounts"`, { type: QueryTypes.SELECT, }); // Set up initial data at block 5000 const accountEntity = {id: 'rewind-test-001', balance: 1000}; await cacheFlush(5000, async (blockHeight) => { await Account.set(accountEntity.id, accountEntity, blockHeight); }); // Modify data at block 6000 const updatedAccount = {id: 'rewind-test-001', balance: 2000}; await cacheFlush(6000, async (blockHeight) => { await Account.set(updatedAccount.id, updatedAccount, blockHeight); }); // Add new data at block 7000 const anotherAccount = {id: 'rewind-test-002', balance: 3000}; await cacheFlush(7000, async (blockHeight) => { await Account.set(anotherAccount.id, anotherAccount, blockHeight); }); // Verify current state before rewind const account1 = await Account.get(accountEntity.id); const account2 = await Account.get(anotherAccount.id); expect(account1.balance).toEqual(2000); expect(account2.balance).toEqual(3000); // Rewind to block 6000 const tx1 = await sequelize.transaction(); await storeService.rewind({blockHeight: 6000, timestamp: new Date()} as any, tx1); await tx1.commit(); let allDatas = await getAllAccounts(); expect(allDatas.length).toEqual(2); // Rewind further back to block 5000 const tx2 = await sequelize.transaction(); await storeService.rewind({blockHeight: 5000, timestamp: new Date()} as any, tx2); await tx2.commit(); allDatas = await getAllAccounts(); expect(allDatas.length).toEqual(1); // Check database records allDatas = await getAllAccounts(); const rewindTestDatas = allDatas.filter((data) => data.id.startsWith('rewind-test')); // We should only have one active record for rewind-test-001 with block range starting at 5000 const activeRecords = rewindTestDatas.filter((data) => data._block_range[1].value === null); expect(activeRecords.length).toEqual(1); expect(activeRecords[0].id).toEqual('rewind-test-001'); expect(activeRecords[0].balance).toEqual(1000); expect(activeRecords[0]._block_range[0].value).toEqual('5000'); }); }); ================================================ FILE: packages/node-core/src/indexer/store.service.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import assert from 'assert'; import {Inject, Injectable} from '@nestjs/common'; import {IProjectNetworkConfig} from '@subql/types-core'; import { GraphQLModelsRelationsEnums, hashName, METADATA_REGEX, MULTI_METADATA_REGEX, hexToU8a, GraphQLModelsType, } from '@subql/utils'; import { IndexesOptions, ModelAttributes, ModelStatic, Op, QueryTypes, Sequelize, Transaction, Deferrable, } from '@subql/x-sequelize'; import {camelCase, flatten, last, upperFirst} from 'lodash'; import {NodeConfig} from '../configure'; import { BTREE_GIST_EXTENSION_EXIST_QUERY, createSchemaTrigger, createSchemaTriggerFunction, getDbSizeAndUpdateMetadata, getTriggers, ModifiedDbModels, SchemaMigrationService, tableExistsQuery, } from '../db'; import {getLogger} from '../logger'; import {exitWithError} from '../process'; import {customCamelCaseGraphqlKey, getHistoricalUnit} from '../utils'; import { GlobalDataFactory, GlobalDataRepo, MetadataFactory, MetadataRepo, PoiFactory, PoiFactoryDeprecate, PoiRepo, } from './entities'; import {Store} from './store'; import {IMetadata, IStoreModelProvider, PlainStoreModelService} from './storeModelProvider'; import {StoreOperations} from './StoreOperations'; import {Header, HistoricalMode, ISubqueryProject} from './types'; const logger = getLogger('StoreService'); const NULL_MERKEL_ROOT = hexToU8a('0x00'); const DB_SIZE_CACHE_TIMEOUT = 10 * 60 * 1000; // 10 minutes class NoInitError extends Error { constructor() { super('StoreService has not been initialized'); } } @Injectable() export class StoreService { poiRepo?: PoiRepo; private _modelsRelations?: GraphQLModelsRelationsEnums; private _globalDataRepo?: GlobalDataRepo; private _metaDataRepo?: MetadataRepo; private _historical?: HistoricalMode; private _metadataModel?: IMetadata; private _schema?: string; private _isMultichain?: boolean; // Should be updated each block private _blockHeader?: Header; private _operationStack?: StoreOperations; private _lastTimeDbSizeChecked?: number; #transaction?: Transaction; constructor( private sequelize: Sequelize, private config: NodeConfig, @Inject('IStoreModelProvider') readonly modelProvider: IStoreModelProvider, @Inject('ISubqueryProject') private subqueryProject: ISubqueryProject ) {} private get modelsRelations(): GraphQLModelsRelationsEnums { assert(this._modelsRelations, new NoInitError()); return this._modelsRelations; } private get metaDataRepo(): MetadataRepo { assert(this._metaDataRepo, new NoInitError()); return this._metaDataRepo; } private set operationStack(os: StoreOperations | undefined) { this._operationStack = os; } get operationStack(): StoreOperations | undefined { return this._operationStack; } get globalDataRepo(): GlobalDataRepo { assert(this._globalDataRepo, new NoInitError()); return this._globalDataRepo; } get blockHeader(): Header { assert(this._blockHeader, new Error('StoreService.setBlockHeader has not been called')); return this._blockHeader; } get historical(): HistoricalMode { assert(this._historical !== undefined, new NoInitError()); return this._historical; } get transaction(): Transaction | undefined { return this.#transaction; } get isMultichain(): boolean { assert(this._isMultichain !== undefined, new NoInitError()); return this._isMultichain; } async syncDbSize(): Promise { if (!this._lastTimeDbSizeChecked || Date.now() - this._lastTimeDbSizeChecked > DB_SIZE_CACHE_TIMEOUT) { this._lastTimeDbSizeChecked = Date.now(); return getDbSizeAndUpdateMetadata(this.sequelize, this.schema); } else { return this.modelProvider.metadata.find('dbSize').then((cachedDbSize) => { if (cachedDbSize !== undefined) { return cachedDbSize; } else { this._lastTimeDbSizeChecked = Date.now(); return getDbSizeAndUpdateMetadata(this.sequelize, this.schema); } }); } } private get metadataModel(): IMetadata { assert(this._metadataModel, new NoInitError()); return this._metadataModel; } private get schema(): string { assert(this._schema, new NoInitError()); return this._schema; } // Initialize tables and data that isnt' specific to the users data async initCoreTables(schema: string): Promise { if (this.config.proofOfIndex) { const usePoiFactory = (await this.useDeprecatePoi(schema)) ? PoiFactoryDeprecate : PoiFactory; this.poiRepo = usePoiFactory(this.sequelize, schema); } this._schema = schema; await this.setMultiChainProject(); this._metaDataRepo = await MetadataFactory( this.sequelize, schema, this.isMultichain, this.subqueryProject.network.chainId ); if (this.isMultichain) { this._globalDataRepo = GlobalDataFactory(this.sequelize, schema); } await this.sequelize.sync(); this._historical = await this.getHistoricalStateEnabled(schema); logger.info(`Historical state is ${this.historical || 'disabled'}`); this.modelProvider.init(this.historical, this.metaDataRepo, this.poiRepo); this._metadataModel = this.modelProvider.metadata; await this.initHotSchemaReloadQueries(schema); await this.metadataModel.set('historicalStateEnabled', this.historical); } async init(schema: string, tx: Transaction): Promise { try { if (this.historical) { const [results] = await this.sequelize.query(BTREE_GIST_EXTENSION_EXIST_QUERY); if (results.length === 0) { throw new Error('Btree_gist extension is required to enable historical data, contact DB admin for support'); } } /* On SyncSchema, if no schema migration is introduced, it would consider current schema to be null, and go all db operations again every start up is a migration */ const schemaMigrationService = new SchemaMigrationService(this.sequelize, this, schema, this.config); await schemaMigrationService.run(null, this.subqueryProject.schema, tx); const deploymentsRaw = await this.metadataModel.find('deployments'); const deployments = deploymentsRaw ? JSON.parse(deploymentsRaw) : {}; // Check if the deployment change or a local project is running // WARNING:This assumes that the root is the same as the id for local project, there are no checks for this and it could change at any time if ( this.subqueryProject.id === this.subqueryProject.root || last(Object.values(deployments)) !== this.subqueryProject.id ) { await this.metadataModel.setIncrement('schemaMigrationCount', undefined, tx); } } catch (e: any) { exitWithError(new Error(`Having a problem when syncing schema`, {cause: e}), logger); } } private async initHotSchemaReloadQueries(schema: string): Promise { /* These SQL queries are to allow hot-schema reload on query service */ const schemaTriggerName = hashName(schema, 'schema_trigger', this.metaDataRepo.tableName); const schemaTriggers = await getTriggers(this.sequelize, schemaTriggerName); try { // TODO // For now, due to existing channel name over long issue, we will force replace function first // We will change this to check with function length in future // const schemaFunctions = await getFunctions(this.sequelize,schema,'schema_notification'); await this.sequelize.query(`${createSchemaTriggerFunction(schema)}`); if (schemaTriggers.length === 0) { await this.sequelize.query(createSchemaTrigger(schema, this.metaDataRepo.tableName)); } } catch (e) { logger.error(`Failed to init Hot schema reload`); } } // Updates the state of the store and model provider after migrations occurr updateModels(modelChanges: ModifiedDbModels, modelsRelations: GraphQLModelsRelationsEnums): undefined { this.modelProvider.updateModels(modelChanges); this._modelsRelations = modelsRelations; } defineModel( model: GraphQLModelsType, attributes: ModelAttributes, indexes: IndexesOptions[], schema: string ): ModelStatic { const sequelizeModel = this.sequelize.define(model.name, attributes, { underscored: true, comment: model.description, freezeTableName: false, timestamps: false, schema, indexes, }); if (this.historical) { // WARNING these hooks depend on `this.blockHeight` which is a changing value. DO NOT move this into a function outside of this class sequelizeModel.addScope('defaultScope', { attributes: { exclude: ['__id', '__block_range'], }, }); sequelizeModel.addHook('beforeFind', (options) => { (options.where as any).__block_range = { [Op.contains]: this.getHistoricalUnit(), }; }); sequelizeModel.addHook('beforeValidate', (attributes, options) => { attributes.__block_range = [this.getHistoricalUnit(), null]; }); if (!this.config.enableCache) { sequelizeModel.addHook('beforeBulkCreate', (instances, options) => { instances.forEach((item) => { item.__block_range = [this.getHistoricalUnit(), null]; }); }); } // TODO, remove id and block_range constraint, check id manually // see https://github.com/subquery/subql/issues/1542 } return sequelizeModel; } private async useDeprecatePoi(schema: string): Promise { const sql = `SELECT * FROM information_schema.columns WHERE table_schema = ? AND table_name = '_poi' AND column_name = 'projectId'`; const [result] = await this.sequelize.query(sql, {replacements: [schema]}); return !!result.length; } async getHistoricalStateEnabled(schema: string): Promise { const {historical, multiChain} = this.config; try { const tableRes = await this.sequelize.query>(tableExistsQuery(schema), {type: QueryTypes.SELECT}); const metadataTableNames = flatten(tableRes).filter( (value: string) => METADATA_REGEX.test(value) || MULTI_METADATA_REGEX.test(value) ); if (metadataTableNames.length <= 0) { throw new Error('Metadata table does not exist'); } const res = await this.sequelize.query<{key: string; value: boolean | string}>( `SELECT key, value FROM "${schema}"."${metadataTableNames[0]}" WHERE (key = 'historicalStateEnabled')`, {type: QueryTypes.SELECT} ); if (res[0]?.key !== 'historicalStateEnabled') { throw new Error('Metadata table does not have historicalStateEnabled key'); } const value = res[0].value; if (typeof value === 'string') { if (value === 'height' || value === 'timestamp') { return value; } throw new Error(`Invalid value for historicalStateEnabled. Received "${value}"`); } if ((value === true || value.toString() === 'height') && multiChain) { throw new Error( 'Historical indexing by height is enabled and not compatible with multi-chain, to multi-chain index clear postgres schema and re-index project using --multichain' ); } // TODO parse through CLI/Project option and consider multichain return value ? 'height' : false; } catch (e) { if (multiChain && historical === 'height') { logger.warn('Historical state by height is not compatible with multi chain indexing, using timestamp instead.'); return 'timestamp'; } // Will trigger on first startup as metadata table doesn't exist // Default fallback to "height" for backwards compatible return historical; } } async setBlockHeader(header: Header): Promise { this._blockHeader = header; if (this.modelProvider instanceof PlainStoreModelService) { assert(!this.#transaction, new Error(`Transaction already exists for height: ${header.blockHeight}`)); this.#transaction = await this.sequelize.transaction({ deferrable: this._historical ? undefined : Deferrable.SET_DEFERRED(), }); this.#transaction.afterCommit(() => (this.#transaction = undefined)); } if (this.config.proofOfIndex) { this.operationStack = new StoreOperations(this.modelsRelations.models); } } getOperationMerkleRoot(): Uint8Array { if (this.config.proofOfIndex) { assert(this.operationStack, new Error('OperationStack is not set, make sure `setBlockHeight` has been called')); this.operationStack.makeOperationMerkleTree(); const merkelRoot = this.operationStack.getOperationMerkleRoot(); if (merkelRoot === null) { return NULL_MERKEL_ROOT; } return merkelRoot; } return NULL_MERKEL_ROOT; } /** * rollback db that is newer than ${targetBlockHeight} (exclusive) * set metadata * since transaction is handled outside, metadata cache flushing and tx is done there. * @param targetBlockHeight * @param transaction */ async rewind(targetBlockHeader: Header, transaction: Transaction): Promise { if (!this.historical) { throw new Error('Unable to reindex, historical state not enabled'); } // This should only been called from CLI, blockHeight in storeService never been set and is required for`beforeFind` hook // Height no need to change for rewind during indexing if (this._blockHeader === undefined) { await this.setBlockHeader(targetBlockHeader); } for (const model of Object.values(this.sequelize.models)) { if ('__block_range' in model.getAttributes()) { await batchDeleteAndThenUpdate( this.sequelize, model, transaction, getHistoricalUnit(this.historical, targetBlockHeader) ); } } await this.metadataModel.set('lastProcessedHeight', targetBlockHeader.blockHeight, transaction); if (targetBlockHeader.timestamp) { await this.metadataModel.set('lastProcessedBlockTimestamp', targetBlockHeader.timestamp.getTime(), transaction); } // metadataModel will be flushed in reindex.ts#reindex() } isIndexed(entity: string, field: string): boolean { const indexes = this.modelProvider.getModel(entity).model.options.indexes ?? []; return ( indexes.findIndex((idx) => { const matchingField = idx.fields?.find((f) => { const fieldName = (f as any).name ?? f; return camelCase(fieldName) === customCamelCaseGraphqlKey(field); }); return !!matchingField; }) > -1 ); } isIndexedHistorical(entity: string, field: string): boolean { const indexes = this.modelProvider.getModel(entity).model.options.indexes ?? []; return ( indexes.findIndex((idx) => { const matchingField = idx.fields?.find((f) => { const fieldName = (f as any).name ?? f; return camelCase(fieldName) === customCamelCaseGraphqlKey(field); }); // With historical indexes are not unique return !!matchingField && (this.historical || idx.unique); }) > -1 ); } getStore(): Store { return new Store(this.config, this.modelProvider, this); } // Get the right unit depending on the historical mode getHistoricalUnit(): number { // Cant throw here because even with historical disabled the current height is used by the store return getHistoricalUnit(this.historical, this.blockHeader); } async getLastProcessedBlock(): Promise<{height: number; timestamp?: number}> { const {lastProcessedBlockTimestamp: timestamp, lastProcessedHeight: height} = await this.metadataModel.findMany([ 'lastProcessedHeight', 'lastProcessedBlockTimestamp', ]); return {height: height || 0, timestamp}; } private async setMultiChainProject() { if (this.config.multiChain) { this._isMultichain = true; return; } const tableRes = await this.sequelize.query>(tableExistsQuery(this.schema), { type: QueryTypes.SELECT, }); this._isMultichain = !!flatten(tableRes).find((value: string) => MULTI_METADATA_REGEX.test(value)); } } // REMOVE 10,000 record per batch async function batchDeleteAndThenUpdate( sequelize: Sequelize, model: ModelStatic, transaction: Transaction, targetBlockUnit: number, // Height or timestamp batchSize = 10000 ): Promise { let destroyCompleted = false; let updateCompleted = false; while (!destroyCompleted || !updateCompleted) { try { const [numDestroyRows, [numUpdatedRows]] = await Promise.all([ destroyCompleted ? 0 : model.destroy({ transaction, hooks: false, limit: batchSize, where: sequelize.where(sequelize.fn('lower', sequelize.col('_block_range')), Op.gt, targetBlockUnit), }), updateCompleted ? [0] : model.update( { __block_range: sequelize.fn('int8range', sequelize.fn('lower', sequelize.col('_block_range')), null), }, { transaction, limit: batchSize, hooks: false, where: { [Op.and]: [ { __block_range: { [Op.contains]: targetBlockUnit, }, }, sequelize.where(sequelize.fn('upper', sequelize.col('_block_range')), Op.not, null), ], }, } ), ]); logger.debug(`${model.name} deleted ${numDestroyRows} records, updated ${numUpdatedRows} records`); if (numDestroyRows === 0) { destroyCompleted = true; } if (numUpdatedRows === 0) { updateCompleted = true; } } catch (e) { throw new Error(`Reindex update model ${model.name} failed, please try to reindex again: ${e}`); } } } ================================================ FILE: packages/node-core/src/indexer/storeModelProvider/baseCache.service.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import {BeforeApplicationShutdown, Injectable} from '@nestjs/common'; import Pino from 'pino'; import {getLogger} from '../../logger'; import {profiler} from '../../profiler'; import {timeout} from '../../utils/promise'; import {BaseStoreModelService} from './baseStoreModel.service'; import {ICachedModelControl} from './types'; @Injectable() export abstract class BaseCacheService extends BaseStoreModelService implements BeforeApplicationShutdown { private pendingFlush?: Promise; private queuedFlush?: Promise; protected logger: Pino.Logger; abstract _flushCache(): Promise; abstract _resetCache(): Promise | void; abstract isFlushable(): boolean; abstract get flushableRecords(): number; protected constructor(loggerName: string) { super(); this.logger = getLogger(loggerName); } @profiler() async flushData(forceFlush?: boolean): Promise { const flushCacheGuarded = async (forceFlush?: boolean): Promise => { // When we force flush, this will ensure not interrupt current block flushing, // Force flush will continue after last block flush tx committed. if (this.pendingFlush !== undefined) { await this.pendingFlush; } if ((this.isFlushable() || forceFlush) && this.flushableRecords > 0) { this.pendingFlush = this._flushCache(); // Remove reference to pending flush once it completes this.pendingFlush .catch((e) => { /* Do nothing, avoids uncaught exception */ }) .finally(() => (this.pendingFlush = undefined)); await this.pendingFlush; } }; // Queued flush ensures that we only prepare one more task to flush, successive calls will return the same promise if (this.queuedFlush === undefined) { this.queuedFlush = flushCacheGuarded(forceFlush); this.queuedFlush .catch((e) => { /* Do nothing, avoids uncaught exception */ }) .finally(() => (this.queuedFlush = undefined)); } return this.queuedFlush; } async resetData(): Promise { await this._resetCache(); } async beforeApplicationShutdown(): Promise { await timeout(this.flushData(true), 60, 'Before shutdown flush cache timeout'); this.logger.info(`Force flush cache successful!`); await super.beforeApplicationShutdown(); } } ================================================ FILE: packages/node-core/src/indexer/storeModelProvider/baseStoreModel.service.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import {BeforeApplicationShutdown} from '@nestjs/common'; import {ModelStatic} from '@subql/x-sequelize'; import {getLogger} from '../../logger'; import {MetadataRepo, PoiRepo} from '../entities'; import {HistoricalMode} from '../types'; import {Exporter} from './exporters'; import {METADATA_ENTITY_NAME} from './metadata/utils'; import {BaseEntity, IModel} from './model'; import {POI_ENTITY_NAME} from './poi'; const logger = getLogger('BaseStoreModelService'); export abstract class BaseStoreModelService> implements BeforeApplicationShutdown { protected historical: HistoricalMode = 'height'; protected poiRepo?: PoiRepo; protected metadataRepo?: MetadataRepo; protected cachedModels: Record = {}; protected abstract createModel(entity: string): M; init(historical: HistoricalMode, meta: MetadataRepo, poi?: PoiRepo): void { this.historical = historical; this.metadataRepo = meta; this.poiRepo = poi; } getModel(entity: string): IModel { if (entity === METADATA_ENTITY_NAME) { throw new Error('Please use getMetadataModel instead'); } if (entity === POI_ENTITY_NAME) { throw new Error('Please use getPoiModel instead'); } if (!this.cachedModels[entity]) { this.cachedModels[entity] = this.createModel(entity); } return this.cachedModels[entity] as IModel; } updateModels({modifiedModels, removedModels}: {modifiedModels: ModelStatic[]; removedModels: string[]}): void { modifiedModels.forEach((m) => { this.cachedModels[m.name] = this.createModel(m.name); }); removedModels.forEach((r) => delete this.cachedModels[r]); } async beforeApplicationShutdown(): Promise { await Promise.all(this.getAllExporters().map((e) => e.shutdown())); logger.info(`Force flush exports successful!`); } getAllExporters(): Exporter[] { return Object.values(this.cachedModels) .map((m) => (m as any).exporters ?? []) .flat(); } } ================================================ FILE: packages/node-core/src/indexer/storeModelProvider/cacheable.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import {Transaction} from '@subql/x-sequelize'; import {Mutex} from 'async-mutex'; export abstract class Cacheable { protected mutex = new Mutex(); abstract clear(historicalUnit?: number): void; protected abstract runFlush(tx: Transaction, historicalUnit: number): Promise; async flush(tx: Transaction, historicalUnit: number): Promise { const release = await this.mutex.acquire(); try { tx.afterCommit(() => { this.clear(historicalUnit); release(); }); await this.runFlush(tx, historicalUnit); } catch (e) { release(); throw e; } } } ================================================ FILE: packages/node-core/src/indexer/storeModelProvider/exporters/csvStore.spec.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import fs from 'fs'; import path from 'path'; import type {Fn} from '@subql/x-sequelize/types/utils'; import {rimraf} from 'rimraf'; import {CsvExporter} from './csvStore'; describe('CSV Exporter', () => { const csvDirPath = path.join(__dirname, '../../../../test/csv-test'); beforeAll(async () => { await fs.promises.mkdir(csvDirPath); }); afterAll(async () => { await rimraf(csvDirPath); }); it('Able to export to csv with correct output, No duplicated headers', async () => { const csvFilePath1 = path.join(csvDirPath, 'Test.csv'); const data = { id: '1463-6', amount: 98746560n, blockNumber: 1463, date: new Date('2020-05-26T18:03:24.000Z'), fromId: '13gkdcmf2pxlw1mdctksezqf541ksy6mszfaehw5vftdpsxe', toId: '15zf7zvduiy2eycgn6kwbv2sjpdbsp6vdhs1ytzdgjrcsmhn', __block_range: {fn: 'int8range', args: [1463, null]} as unknown as Fn, }; const csvStore = new CsvExporter('Test', csvDirPath); await csvStore.export([data]); await csvStore.export([data]); await csvStore.shutdown(); // Read the file after the export operation is complete const csv = await fs.promises.readFile(csvFilePath1, 'utf-8'); expect(csv).toEqual( `id,amount,blockNumber,date,fromId,toId,__block_number 1463-6,98746560,1463,1590516204000,13gkdcmf2pxlw1mdctksezqf541ksy6mszfaehw5vftdpsxe,15zf7zvduiy2eycgn6kwbv2sjpdbsp6vdhs1ytzdgjrcsmhn,1463 1463-6,98746560,1463,1590516204000,13gkdcmf2pxlw1mdctksezqf541ksy6mszfaehw5vftdpsxe,15zf7zvduiy2eycgn6kwbv2sjpdbsp6vdhs1ytzdgjrcsmhn,1463 ` ); }); it('JSON serialisation', async () => { const csvFilePath2 = path.join(csvDirPath, 'JsonTest.csv'); const data = { id: '1463-6', amount: 98746560n, blockNumber: 1463, jsonField: {field1: 'string', field2: 2, nestedJson: {foo: 'bar'}}, }; const csvStore = new CsvExporter('JsonTest', csvDirPath); await csvStore.export([data]); await csvStore.shutdown(); const csv = await fs.promises.readFile(csvFilePath2, 'utf-8'); expect(csv).toEqual( `id,amount,blockNumber,jsonField 1463-6,98746560,1463,"{""field1"":""string"",""field2"":2,""nestedJson"":{""foo"":""bar""}}" ` ); }); }); ================================================ FILE: packages/node-core/src/indexer/storeModelProvider/exporters/csvStore.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import fs from 'fs'; import path from 'path'; import {Stringifier, stringify} from 'csv-stringify'; import {getLogger} from '../../../logger'; import {exitWithError} from '../../../process'; import {BaseEntity} from '../model'; import {Exporter} from './exporter'; const logger = getLogger('CsvStore'); export class CsvExporter implements Exporter { private fileExist?: boolean; private stringifyStream: Stringifier; private readonly writeStream: fs.WriteStream; constructor( private modelName: string, private outputPath: string ) { this.writeStream = fs.createWriteStream(this.getCsvFilePath(), {flags: 'a'}); this.stringifyStream = stringify({header: !this.fileExist}).on('error', (err) => { exitWithError(new Error(`Failed to write to CSV`, err), logger); }); this.stringifyStream.pipe(this.writeStream); } private getCsvFilePath(): string { const resolvedDir = path.resolve(this.outputPath); if (!fs.existsSync(resolvedDir)) { throw new Error(`${this.outputPath} does not exist`); } if (!fs.lstatSync(resolvedDir).isDirectory()) { throw new Error(`${this.outputPath} is not a directory`); } const filePath = path.join(resolvedDir, `${this.modelName}.csv`); this.fileExist = fs.existsSync(filePath); return filePath; } private async write(r: Omit & {blockNumber?: number}): Promise { return new Promise((resolve, reject) => { this.stringifyStream.write(r, (error) => { if (error) { reject(error); } else { resolve(undefined); } }); }); } private blockRangeToBlockNumber(input: T['__block_range']): number | undefined { if (!input) return undefined; if (Array.isArray(input)) { return input[0] ?? undefined; } if ((input as any).fn === 'int8range') { return (input as any).args[0]; } } async export(records: T[]): Promise { await Promise.all( records .map((r) => { const {__block_range, ...orgRecord} = r; if (__block_range !== undefined) { return { ...orgRecord, __block_number: this.blockRangeToBlockNumber(__block_range), }; } return orgRecord; }) .map((r) => this.write(r)) ); } async shutdown(): Promise { return new Promise((resolve) => { this.writeStream.once('finish', () => { logger.info(`Ending CSV write stream, ${this.modelName}`); resolve(); }); this.stringifyStream.end(); logger.info(`${this.modelName} CSV Stream ended`); }); } } ================================================ FILE: packages/node-core/src/indexer/storeModelProvider/exporters/exporter.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import {BaseEntity} from '../model'; export interface Exporter { /** * Exports an array of records. * This method should handle the processing of the provided records. * * @param records An array of records to be exported. * These records are of the same type as the database entries */ export: (record: T[]) => Promise; /** * Shuts down the export operation. * This method should ensure that all ongoing export operations are * completed and any resources used are properly released or closed. * * @returns A promise that resolves when the shutdown process is complete. */ shutdown: () => Promise; } export type TransactionedExporter = Exporter & {commit: () => Promise}; export function isTxExporter( exporter: Exporter ): exporter is TransactionedExporter { return typeof (exporter as TransactionedExporter).commit === 'function'; } export function asTxExporter(exporter: Exporter): TransactionedExporter { if (isTxExporter(exporter)) return exporter; return new TxExporter(exporter); } export class TxExporter implements TransactionedExporter { #pendingData: T[] = []; #exporter: Exporter; constructor(exporter: Exporter) { this.#exporter = exporter; } // eslint-disable-next-line @typescript-eslint/require-await async export(data: T[]): Promise { this.#pendingData.push(...data); } async shutdown(): Promise { await this.commit(); await this.#exporter.shutdown(); } async commit(): Promise { await this.#exporter.export(this.#pendingData); this.#pendingData = []; } } ================================================ FILE: packages/node-core/src/indexer/storeModelProvider/exporters/index.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 export * from './exporter'; export * from './csvStore'; ================================================ FILE: packages/node-core/src/indexer/storeModelProvider/global/global.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import assert from 'assert'; import {getLogger} from '@subql/node-core/logger'; import {MULTI_METADATA_REGEX} from '@subql/utils'; import {Op, QueryTypes, Sequelize, Transaction} from '@subql/x-sequelize'; import {flatten} from 'lodash'; import {tableExistsQuery} from '../../../db'; import {GlobalData, GlobalDataRepo, MultiChainRewindStatus} from '../../entities'; export interface IGlobalData { getChainRewindInfo(): Promise; acquireGlobalRewindLock(rewindTimestamp: Date): Promise<{lockTimestamp: Date}>; /** * Check if the height is consistent before unlocking. * @param tx * @param rewindTimestamp The timestamp to roll back to, in milliseconds. * @param allowRewindTimestamp Set a rewind-allowed height; only heights greater than or equal this can be released. * @returns the number of remaining rewind chains */ releaseChainRewindLock(tx: Transaction, rewindTimestamp: Date, allowRewindTimestamp?: Date): Promise; } const logger = getLogger('PlainGlobalModel'); export class PlainGlobalModel implements IGlobalData { constructor( private readonly dbSchema: string, private readonly chainId: string, private readonly model: GlobalDataRepo ) {} private get sequelize(): Sequelize { const sequelize = this.model.sequelize; if (!sequelize) { throw new Error(`Sequelize is not available on ${this.model.name}`); } return sequelize; } async getChainRewindInfo(): Promise { const rewindTimestampInfo = await this.model.findOne({ where: {chainId: this.chainId}, }); return rewindTimestampInfo; } /** * If the set rewindTimestamp is greater than or equal to the current blockHeight, we do nothing because we will roll back to an earlier time. * If the set rewindTimestamp is less than the current blockHeight, we should roll back to the earlier rewindTimestamp. * The reason for not using the external tx variable here is to complete the locking task as soon as possible and promptly send a notification to allow other chains to rewind. * @param rewindTimestamp * @param tx * @returns */ async acquireGlobalRewindLock(rewindTimestamp: Date): Promise<{lockTimestamp: Date}> { const tx = await this.sequelize.transaction(); const {chainsCount, currentChain} = await this.getChainsInfo(tx); try { if (chainsCount) { assert(currentChain, `Not found chainId: ${this.chainId} in global data`); // Exist rewind task let lockTimestamp = currentChain.rewindTimestamp; const [affectedCount] = await this.model.update( { status: MultiChainRewindStatus.Incomplete, rewindTimestamp, initiator: false, }, { where: { rewindTimestamp: {[Op.gt]: rewindTimestamp}, }, transaction: tx, } ); assert( affectedCount === 0 || affectedCount === chainsCount, `Set global rewind lock failed, chainId: ${this.chainId}, rewindTimestamp: ${rewindTimestamp}` ); if (affectedCount === chainsCount) { lockTimestamp = rewindTimestamp; await this.model.update({initiator: true}, {where: {chainId: this.chainId}, transaction: tx}); } await tx.commit(); return {lockTimestamp}; } else { const chainIds = await this.getChainIdsFromMetadata(tx); // No rewind task, set the current chain as the initiator await this.model.bulkCreate( chainIds.map((chainId) => ({ chainId, status: MultiChainRewindStatus.Incomplete, rewindTimestamp, initiator: chainId === this.chainId, })), {transaction: tx} ); await tx.commit(); return {lockTimestamp: rewindTimestamp}; } } catch (e: any) { logger.error( `setGlobalRewindLock failed chainId: ${this.chainId}, rewindTimestamp: ${rewindTimestamp}, errorMsg: ${e.message}` ); await tx.rollback(); throw e; } } /** * The following special cases may exist: * 1. A table lock needs to be added before release to prevent multiple chains from releasing simultaneously, causing a deadlock. If one chain is setting setGlobalRewindLock, others need to queue (so it’s necessary to check if it’s the lock for the current timestamp; if not, the release fails, and the rollback fails). * 2. There may be a case where lastProcessBlock < rewindTime, in which case the lock should be released directly (force = true). * @param rewindTimestamp * * @returns */ async releaseChainRewindLock(tx: Transaction, rewindTimestamp: Date, allowRewindTimestamp?: Date): Promise { // A table lock should be used here to prevent multiple chains from releasing simultaneously, causing a deadlock. const {currentChain, waitChainCount} = await this.getChainsInfo(tx); assert(currentChain, `Not registered rewind timestamp key in global data, chainId: ${this.chainId}`); if (currentChain.status === MultiChainRewindStatus.Complete) { // Already completed, no need to release return waitChainCount; } if (allowRewindTimestamp && allowRewindTimestamp > currentChain.rewindTimestamp) { throw new Error( 'Rewind lock timestamp is less than the allowed rewind timestamp; releasing the lock is not permitted.' ); } assert( currentChain.rewindTimestamp.getTime() === rewindTimestamp.getTime(), `Chain rewind lock mismatch: chainId: ${this.chainId}, rewindTimestamp: ${rewindTimestamp}, status: ${currentChain.status}` ); const [affectedCount] = await this.model.update( {status: MultiChainRewindStatus.Complete}, { where: { chainId: this.chainId, status: MultiChainRewindStatus.Incomplete, rewindTimestamp, }, transaction: tx, } ); assert(affectedCount === 1, `Release chain rewind lock failed, chainId: ${this.chainId}`); if (waitChainCount - 1 === 0) { // Everything is complete, release the lock. await this.model.destroy({where: {status: MultiChainRewindStatus.Complete}, transaction: tx}); } return waitChainCount - 1; } private async getChainsInfo(tx: Transaction) { const chainList = await this.model.findAll({transaction: tx, lock: tx.LOCK.UPDATE}); const currentChain = chainList.find((chain) => chain.chainId === this.chainId); const waitChainCount = chainList.filter((chain) => chain.status === MultiChainRewindStatus.Incomplete).length; return {currentChain, chainsCount: chainList.length, waitChainCount}; } async getChainIdsFromMetadata(tx: Transaction): Promise { const tableRes = await this.sequelize.query>(tableExistsQuery(this.dbSchema), { type: QueryTypes.SELECT, }); const multiMetadataTables: string[] = flatten(tableRes).filter((value: string) => MULTI_METADATA_REGEX.test(value)); assert( multiMetadataTables.length > 0, `No multi metadata tables found in the database. Please check your schema or configuration.` ); const metadataRes = await Promise.all( multiMetadataTables.map((table) => this.sequelize.query<{value: string}>( `SELECT "value" FROM "${this.dbSchema}"."${table}" WHERE "key" = 'chain'`, { type: QueryTypes.SELECT, transaction: tx, } ) ) ); return metadataRes.map((metadata) => metadata[0].value); } } ================================================ FILE: packages/node-core/src/indexer/storeModelProvider/global/index.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 export {IGlobalData} from './global'; ================================================ FILE: packages/node-core/src/indexer/storeModelProvider/index.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 export * from './storeCache.service'; export * from './types'; export * from './model'; export * from './metadata'; export * from './storeModel.service'; export * from './utils'; ================================================ FILE: packages/node-core/src/indexer/storeModelProvider/metadata/cacheMetadata.spec.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import {CacheMetadataModel} from './cacheMetadata'; const incrementKey = 'processedBlockCount'; describe('CacheMetadata', () => { let cacheMetadata: CacheMetadataModel; beforeEach(() => { cacheMetadata = new CacheMetadataModel(null as any, false); }); // Clearing the cache used to set the setCache and getCache to the same empty object // The set cache has increment amounts while the get cache has the actual value it('clears the caches properly', async () => { cacheMetadata.clear(); (cacheMetadata as any).getCache[incrementKey] = 100; await cacheMetadata.setIncrement(incrementKey); expect((cacheMetadata as any).setCache[incrementKey]).toBe(1); }); // This tested a very specific use case where `cacheModel.getByFields`` was called on the start block which could trigger a flush and "lastProcessedHeight" was not yet set it('clears the caches properly with blockHeight', async () => { cacheMetadata.clear(1); (cacheMetadata as any).getCache[incrementKey] = 100; await cacheMetadata.setIncrement(incrementKey); expect(Object.keys((cacheMetadata as any).setCache)).not.toContain('lastProcessedHeight'); }); it('builds the correct dynamicDatasources query', () => { const queryFn = jest.fn(); const cacheMetadata = new CacheMetadataModel( { getTableName: () => '"Schema"."_metadata"', sequelize: { query: queryFn, }, } as any, false ); (cacheMetadata as any).appendDynamicDatasources([{foo: 'bar'}]); expect(queryFn).toHaveBeenCalledWith( ` UPDATE "Schema"."_metadata" SET "value" = jsonb_set("value", array[(jsonb_array_length("value") + 1)::text], '{"foo":"bar"}'::jsonb, true), "updatedAt" = CURRENT_TIMESTAMP WHERE "Schema"."_metadata".key = 'dynamicDatasources'; `, undefined ); (cacheMetadata as any).appendDynamicDatasources([{foo: 'bar'}, {baz: 'buzz'}]); expect(queryFn).toHaveBeenCalledWith( ` UPDATE "Schema"."_metadata" SET "value" = jsonb_set(jsonb_set("value", array[(jsonb_array_length("value") + 1)::text], '{"foo":"bar"}'::jsonb, true), array[(jsonb_array_length("value") + 2)::text], '{"baz":"buzz"}'::jsonb, true), "updatedAt" = CURRENT_TIMESTAMP WHERE "Schema"."_metadata".key = 'dynamicDatasources'; `, undefined ); }); }); ================================================ FILE: packages/node-core/src/indexer/storeModelProvider/metadata/cacheMetadata.test.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import {Sequelize} from '@subql/x-sequelize'; import {MetadataFactory, MetadataKeys, MetadataRepo} from '../..'; import {DbOption} from '../../..'; import {CacheMetadataModel} from './cacheMetadata'; const option: DbOption = { host: process.env.DB_HOST ?? '127.0.0.1', port: process.env.DB_PORT ? Number(process.env.DB_PORT) : 5432, username: process.env.DB_USER ?? 'postgres', password: process.env.DB_PASS ?? 'postgres', database: process.env.DB_DATABASE ?? 'postgres', timezone: 'utc', }; describe('cacheMetadata integration', () => { let sequelize: Sequelize; let schema: string; let metaDataRepo: MetadataRepo; let cacheMetadataModel: CacheMetadataModel; beforeAll(async () => { sequelize = new Sequelize( `postgresql://${option.username}:${option.password}@${option.host}:${option.port}/${option.database}`, option ); await sequelize.authenticate(); schema = '"metadata-test-1"'; await sequelize.createSchema(schema, {}); metaDataRepo = await MetadataFactory(sequelize, schema, false, '1'); await metaDataRepo.sync(); cacheMetadataModel = new CacheMetadataModel(metaDataRepo, false); }); const queryMeta = async (key: K): Promise => { const res = await metaDataRepo.findByPk(key); return res?.toJSON()?.value as any; }; const flush = async (height: number) => { const tx = await sequelize.transaction(); await cacheMetadataModel.flush(tx, height); await tx.commit(); }; afterAll(async () => { await sequelize.dropSchema(schema, {logging: false}); await sequelize.close(); }); it('Ensure increment keys are created on _metadata table', async () => { // create key at 0 await (cacheMetadataModel as any).incrementJsonbCount('schemaMigrationCount'); // increment by 1 await (cacheMetadataModel as any).incrementJsonbCount('schemaMigrationCount'); // increase by 100 await (cacheMetadataModel as any).incrementJsonbCount('schemaMigrationCount', 100); const v = await queryMeta('schemaMigrationCount'); expect(v).toBe(101); }); describe('dynamicDatasources', () => { beforeEach(async () => { // Ensure value exits so we can update it await metaDataRepo.bulkCreate([{key: 'dynamicDatasources', value: []}], {updateOnDuplicate: ['key', 'value']}); }); it('Appends dynamicDatasources correctly', async () => { cacheMetadataModel.setNewDynamicDatasource({templateName: 'foo', startBlock: 1}); cacheMetadataModel.setNewDynamicDatasource({templateName: 'bar', startBlock: 2}); cacheMetadataModel.setNewDynamicDatasource({templateName: 'baz', startBlock: 3}); const expected = [ {templateName: 'foo', startBlock: 1}, {templateName: 'bar', startBlock: 2}, {templateName: 'baz', startBlock: 3}, ]; await flush(1); expect((cacheMetadataModel as any).datasourceUpdates).toEqual([expected[1], expected[2]]); const v = await queryMeta('dynamicDatasources'); expect(v).toEqual([expected[0]]); const cacheV = await cacheMetadataModel.find('dynamicDatasources'); expect(cacheV).toEqual(expected); await flush(3); // The data retrieved from memory is complete. const cacheData2 = await cacheMetadataModel.find('dynamicDatasources'); expect(cacheData2).toEqual(expected); const dbData2 = await queryMeta('dynamicDatasources'); expect(dbData2).toEqual(expected); }); it('Allows overriding all dynamicDatasources', async () => { cacheMetadataModel.setNewDynamicDatasource({templateName: 'foo', startBlock: 1}); cacheMetadataModel.set('dynamicDatasources', [{templateName: 'bar', startBlock: 2}]); await flush(1); const v = await queryMeta('dynamicDatasources'); expect(v).toEqual([{templateName: 'bar', startBlock: 2}]); }); it('Caches the dynamicDatasources correctly after using set', async () => { cacheMetadataModel.setNewDynamicDatasource({templateName: 'foo', startBlock: 1}); await flush(1); const cacheV = await cacheMetadataModel.find('dynamicDatasources'); expect(cacheV).toEqual([{templateName: 'foo', startBlock: 1}]); cacheMetadataModel.setNewDynamicDatasource({templateName: 'bar', startBlock: 2}); // await flush(); const cacheV2 = await cacheMetadataModel.find('dynamicDatasources'); expect(cacheV2).toEqual([ {templateName: 'foo', startBlock: 1}, {templateName: 'bar', startBlock: 2}, ]); }); it('Uses the correct cache values when using new and set', async () => { cacheMetadataModel.setNewDynamicDatasource({templateName: 'foo', startBlock: 1}); cacheMetadataModel.set('dynamicDatasources', [{templateName: 'bar', startBlock: 2}]); const cacheV = await cacheMetadataModel.find('dynamicDatasources'); expect(cacheV).toEqual([{templateName: 'bar', startBlock: 2}]); }); }); }); ================================================ FILE: packages/node-core/src/indexer/storeModelProvider/metadata/cacheMetadata.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import assert from 'assert'; import {Transaction} from '@subql/x-sequelize'; import {hasValue} from '../../../utils'; import {DatasourceParams} from '../../dynamic-ds.service'; import {Metadata, MetadataKeys, MetadataRepo} from '../../entities'; import {HistoricalMode} from '../../types'; import {Cacheable} from '../cacheable'; import {ICachedModelControl} from '../types'; import {IMetadata} from './metadata'; import {MetadataKey, incrementKeys, IncrementalMetadataKey, INCREMENT_QUERY, APPEND_DS_QUERY} from './utils'; // type MetadataKey = keyof MetadataKeys; // const incrementKeys: MetadataKey[] = ['processedBlockCount', 'schemaMigrationCount']; // type IncrementalMetadataKey = 'processedBlockCount' | 'schemaMigrationCount'; const specialKeys: MetadataKey[] = [...incrementKeys, 'dynamicDatasources']; export class CacheMetadataModel extends Cacheable implements IMetadata, ICachedModelControl { private setCache: Partial = {}; // Needed for dynamic datasources private getCache: Partial = {}; private removeCache: string[] = []; // This is used for a more efficient appending, as opposed to rewriting which is used through setCache private datasourceUpdates: DatasourceParams[] = []; flushableRecordCounter = 0; constructor( readonly model: MetadataRepo, readonly historical: HistoricalMode = 'height' ) { super(); } async find(key: K, fallback?: MetadataKeys[K]): Promise { if (!this.getCache[key]) { const record = await this.model.findByPk(key); if (hasValue(record)) { this.getCache[key] = record.toJSON().value as any; } else if (hasValue(fallback)) { this.getCache[key] = fallback; } } if (key === 'dynamicDatasources') { // For migration purposes this used to be a string, we need to return that for project.service to migrate it correctly if (typeof this.getCache[key] === 'string') { return this.getCache[key] as MetadataKeys[K]; } // Include any unflushed datasource updates in this return [ ...((this.getCache[key] as MetadataKeys['dynamicDatasources']) ?? []), ...this.datasourceUpdates, ] as MetadataKeys[K]; } return this.getCache[key] as MetadataKeys[K] | undefined; } async findMany(keys: readonly K[]): Promise> { const entries = await this.model.findAll({ where: { key: keys, }, }); const keyValue = entries.reduce((arr, curr) => { arr[curr.key as K] = curr.value as MetadataKeys[K]; return arr; }, {} as Partial); // Get any unsaved changes const result = { ...keyValue, ...this.setCache, }; // Update cache this.getCache = { ...this.getCache, ...result, }; return result; } // eslint-disable-next-line @typescript-eslint/require-await async set(key: K, value: MetadataKeys[K], tx?: Transaction): Promise { if (this.setCache[key] === undefined) { this.flushableRecordCounter += 1; } this.setCache[key] = value; this.getCache[key] = value; if (key === 'dynamicDatasources') { this.datasourceUpdates = []; } } // eslint-disable-next-line @typescript-eslint/require-await async setBulk(metadata: Metadata[]): Promise { metadata.map((m) => this.set(m.key, m.value)); } // eslint-disable-next-line @typescript-eslint/require-await async setIncrement(key: IncrementalMetadataKey, amount = 1): Promise { this.setCache[key] = (this.setCache[key] ?? 0) + amount; } // eslint-disable-next-line @typescript-eslint/require-await async setNewDynamicDatasource(item: DatasourceParams): Promise { this.datasourceUpdates.push(item); } private async incrementJsonbCount(key: IncrementalMetadataKey, amount = 1, tx?: Transaction): Promise { const schemaTable = this.model.getTableName(); assert(this.model.sequelize, `Sequelize is not available on ${this.model.name}`); await this.model.sequelize.query(INCREMENT_QUERY(schemaTable, key, amount), tx && {transaction: tx}); } private async appendDynamicDatasources(items: DatasourceParams[], tx?: Transaction): Promise { const schemaTable = this.model.getTableName(); assert(this.model.sequelize, `Sequelize is not available on ${this.model.name}`); await this.model.sequelize.query(APPEND_DS_QUERY(schemaTable, items), tx && {transaction: tx}); } private async handleSpecialKeys(tx?: Transaction, blockHeight?: number): Promise { await Promise.all( specialKeys.map(async (key) => { switch (key) { case 'dynamicDatasources': { /** * DynamicDatasources can be rewriten through set, or appended through setNewDynamicDatasource. * rewriting takes priority over appending * rewritten is used when rewinds happen **/ const val = this.setCache[key]; if (val !== undefined) { await this.model.bulkCreate([{key, value: val}], {transaction: tx, updateOnDuplicate: ['key', 'value']}); } else if (this.datasourceUpdates.length) { await this.appendDynamicDatasources( this.datasourceUpdates.filter((ds) => blockHeight && ds.startBlock <= blockHeight), tx ); } break; } case 'processedBlockCount': case 'schemaMigrationCount': { const val = this.setCache[key]; if (val === undefined) break; await this.incrementJsonbCount(key as IncrementalMetadataKey, this.setCache[key] as number, tx); break; } default: throw new Error(`No special case for ${key}`); } }) ); } get isFlushable(): boolean { return !!Object.keys(this.setCache).length; } async runFlush(tx: Transaction, blockHeight?: number): Promise { const ops = Object.entries(this.setCache) .filter(([key]) => !specialKeys.includes(key as MetadataKey)) .map(([key, value]) => ({key, value}) as Metadata); const key = this.historical === 'timestamp' ? 'lastProcessedBlockTimestamp' : 'lastProcessedHeight'; const lastProcessedHeightIdx = ops.findIndex((k) => k.key === key); if (blockHeight !== undefined && lastProcessedHeightIdx >= 0) { const lastProcessedHeight = Number(ops[lastProcessedHeightIdx].value); // Before flush, lastProcessedHeight was obtained from metadata // During the flush, we are expecting metadata not being updated. Therefore, we exit here to ensure data accuracy and integrity. // This is unlikely happened. However, we need to observe how often this occurs, we need to adjust this logic if frequently. // Also, we can remove `lastCreatedPoiHeight` from metadata, as it will recreate again with indexing . assert( blockHeight === lastProcessedHeight, `metadata was updated before getting flushed. BlockHeight="${blockHeight}", LastProcessed="${lastProcessedHeight}"` ); } await Promise.all([ this.model.bulkCreate(ops, { transaction: tx, updateOnDuplicate: ['key', 'value'], }), this.handleSpecialKeys(tx, blockHeight), this.model.destroy({where: {key: this.removeCache}}), ]); } // This is current only use for migrate Poi // If concurrent change to cache, please add mutex if needed // eslint-disable-next-line @typescript-eslint/require-await async bulkRemove(keys: K[], tx?: Transaction): Promise { this.removeCache.push(...keys); for (const key of keys) { delete this.setCache[key]; delete this.getCache[key]; } } clear(blockHeight?: number): void { const newSetCache: Partial = {}; this.flushableRecordCounter = 0; if ( blockHeight !== undefined && this.setCache.lastProcessedHeight !== undefined && blockHeight !== this.setCache.lastProcessedHeight ) { newSetCache.lastProcessedHeight = this.setCache.lastProcessedHeight; this.flushableRecordCounter = 1; } this.setCache = {...newSetCache}; this.getCache = {...newSetCache}; this.datasourceUpdates = blockHeight ? this.datasourceUpdates.filter((ds) => ds.startBlock > blockHeight) : []; } } ================================================ FILE: packages/node-core/src/indexer/storeModelProvider/metadata/index.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 export * from './cacheMetadata'; export {IMetadata} from './metadata'; ================================================ FILE: packages/node-core/src/indexer/storeModelProvider/metadata/metadata.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import assert from 'assert'; import {Op, Transaction} from '@subql/x-sequelize'; import {hasValue} from '../../../utils'; import {DatasourceParams} from '../../dynamic-ds.service'; import {Metadata, MetadataKeys, MetadataRepo} from '../../entities'; import {APPEND_DS_QUERY, INCREMENT_QUERY} from './utils'; export type MetadataKey = keyof MetadataKeys; export const incrementKeys: MetadataKey[] = ['processedBlockCount', 'schemaMigrationCount']; export type IncrementalMetadataKey = 'processedBlockCount' | 'schemaMigrationCount'; export interface IMetadata { readonly model: MetadataRepo; find(key: K, fallback?: MetadataKeys[K]): Promise; findMany(keys: readonly K[]): Promise>; set(key: K, value: MetadataKeys[K], tx?: Transaction): Promise; setBulk(metadata: Metadata[], tx?: Transaction): Promise; setIncrement(key: IncrementalMetadataKey, amount?: number, tx?: Transaction): Promise; setNewDynamicDatasource(item: DatasourceParams, tx?: Transaction): Promise; bulkRemove(keys: K[], tx?: Transaction): Promise; flush?(tx: Transaction, blockHeight: number): Promise; } export class MetadataModel implements IMetadata { constructor(readonly model: MetadataRepo) {} async find(key: K, fallback?: MetadataKeys[K]): Promise { const record = await this.model.findByPk(key); return hasValue(record) ? (record.toJSON().value as MetadataKeys[K]) : fallback; } async findMany(keys: readonly K[]): Promise> { const entries = await this.model.findAll({ where: { key: keys, }, }); return entries.reduce((arr, curr) => { arr[curr.key as K] = curr.value as MetadataKeys[K]; return arr; }, {} as Partial); } async set(key: K, value: MetadataKeys[K], tx?: Transaction): Promise { return this.setBulk([{key, value}], tx); } async setBulk(metadata: Metadata[], tx?: Transaction): Promise { await this.model.bulkCreate(metadata, {transaction: tx, updateOnDuplicate: ['key', 'value']}); } async setIncrement(key: IncrementalMetadataKey, amount = 1, tx?: Transaction): Promise { const schemaTable = this.model.getTableName(); assert(this.model.sequelize, `Sequelize is not available on ${this.model.name}`); assert(incrementKeys.includes(key), `Key ${key} is not incrementable`); await this.model.sequelize.query(INCREMENT_QUERY(schemaTable, key, amount), tx && {transaction: tx}); } async setNewDynamicDatasource(item: DatasourceParams, tx?: Transaction): Promise { const schemaTable = this.model.getTableName(); assert(this.model.sequelize, `Sequelize is not available on ${this.model.name}`); await this.model.sequelize.query(APPEND_DS_QUERY(schemaTable, [item]), tx && {transaction: tx}); } async bulkRemove(keys: K[], tx: Transaction): Promise { await this.model.destroy({ where: {key: {[Op.in]: keys}}, transaction: tx, }); } } ================================================ FILE: packages/node-core/src/indexer/storeModelProvider/metadata/utils.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import {DatasourceParams} from '../../dynamic-ds.service'; import {MetadataKeys} from '../../entities'; export type MetadataKey = keyof MetadataKeys; export const incrementKeys: MetadataKey[] = ['processedBlockCount', 'schemaMigrationCount']; export type IncrementalMetadataKey = 'processedBlockCount' | 'schemaMigrationCount'; export const METADATA_ENTITY_NAME = '_metadata'; type SchemaTable = string | {tableName: string; schema: string; delimiter: string}; export function INCREMENT_QUERY(schemaTable: SchemaTable, key: MetadataKey, amount = 1): string { return `INSERT INTO ${schemaTable} (key, value, "createdAt", "updatedAt") VALUES ('${key}', '0'::jsonb, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP) ON CONFLICT (key) DO UPDATE SET value = (COALESCE(${schemaTable}.value->>0)::int + '${amount}')::text::jsonb, "updatedAt" = CURRENT_TIMESTAMP WHERE ${schemaTable}.key = '${key}';`; } export function APPEND_DS_QUERY(schemaTable: SchemaTable, items: DatasourceParams[]): string { const VALUE = '"value"'; const makeSet = (item: DatasourceParams, value: string, index = 1): string => `jsonb_set(${value}, array[(jsonb_array_length(${VALUE}) + ${index})::text], '${JSON.stringify( item )}'::jsonb, true)`; return ` UPDATE ${schemaTable} SET ${VALUE} = ${items.reduce((acc, item, index) => makeSet(item, acc, index + 1), VALUE)}, "updatedAt" = CURRENT_TIMESTAMP WHERE ${schemaTable}.key = 'dynamicDatasources'; `; } ================================================ FILE: packages/node-core/src/indexer/storeModelProvider/model/cacheModel.spec.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import {delay} from '@subql/common'; import {Sequelize} from '@subql/x-sequelize'; import {NodeConfig} from '../../../configure'; import {CachedModel} from './cacheModel'; jest.mock('@subql/x-sequelize', () => { let data: Record = {}; let pendingData: typeof data = {}; let pendingDeletes: (keyof typeof data)[] = []; let afterCommitHooks: Array<() => void> = []; const transaction = () => ({ commit: jest.fn(async () => { await delay(1); data = {...data, ...pendingData}; for (const pendingDelete of pendingDeletes) { delete data[pendingDelete as string]; } pendingData = {}; pendingDeletes = []; afterCommitHooks.map((fn) => fn()); afterCommitHooks = []; }), // Delay of 1s is used to test whether we wait for cache to flush rollback: jest.fn(), afterCommit: jest.fn((fn) => afterCommitHooks.push(fn)), }); const mSequelize = { authenticate: jest.fn(), define: () => ({ findOne: jest.fn(), create: (input: any) => input, }), query: () => [{nextval: 1}], showAllSchemas: () => ['subquery_1'], model: (entity: string) => ({ getTableName: () => 'table1', sequelize: { escape: (key: any) => key, query: (sql: string, option?: any) => jest.fn(), fn: jest.fn().mockImplementation((_fn, ...args: unknown[]) => { if (_fn === 'int8range') { return {fn: _fn, args: [args[0], args[1] ?? null]}; } }), transaction, }, upsert: jest.fn(), associations: [{}, {}], count: 5, findAll: jest.fn(() => Object.values(data).map(({__block_range, ...d}) => ({toJSON: () => d}))), findOne: jest.fn(({transaction, where: {id}}) => ({ toJSON: () => (transaction ? (pendingData[id] ?? data[id]) : data[id]), })), bulkCreate: jest.fn((records: {id: string}[]) => { records.map((r) => (pendingData[r.id] = r)); }), getAttributes: jest.fn(() => ({})), destroy: jest.fn(({where: {id}}) => pendingDeletes.push(id)), }), sync: jest.fn(), transaction, // createSchema: jest.fn(), }; const actualSequelize = jest.requireActual('@subql/x-sequelize'); return { ...actualSequelize, Sequelize: jest.fn(() => { // Reset all the data when creating new instances data = {}; pendingData = {}; pendingDeletes = []; afterCommitHooks = []; return mSequelize; }), }; }); describe('cacheModel', () => { let testModel: CachedModel<{id: string; field1: number}>; let sequelize: Sequelize; let blockHeight: number; const flush = async (height?: number) => { const tx = await sequelize.transaction(); await testModel.flush( tx, height ?? blockHeight - 1 // Equivalent of last processed height ); return tx.commit(); }; describe('without historical', () => { beforeEach(async () => { jest.clearAllMocks(); blockHeight = 0; let i = 0; sequelize = new Sequelize(); testModel = new CachedModel(sequelize.model('entity1'), false, {} as NodeConfig, () => i++); // Set an initial model and flush it blockHeight = 1; await testModel.set( 'entity1_id_0x01', { id: 'entity1_id_0x01', field1: 1, }, blockHeight ); await flush(); }); it('can avoid race conditions', async () => { // Get the entity and update again so we can have a difference between db and cache const entity1 = await testModel.get('entity1_id_0x01'); if (!entity1) { throw new Error('Entity should exist'); } // updated height to 2 blockHeight = 2; await testModel.set( 'entity1_id_0x01', { ...entity1, field1: entity1.field1 + 1, }, 2 ); // Clear the get cache to simulate many other operations happening (testModel as any).getCache.clear(); // Flush and update the entity at the same time const pendingFlush = flush(); await delay(0.2); const entity2 = await testModel.get('entity1_id_0x01'); await testModel.set( 'entity1_id_0x01', { id: 'entity1_id_0x01', field1: (entity2?.field1 ?? 0) + 1, }, 3 ); await pendingFlush; const finalEntity = await testModel.get('entity1_id_0x01'); expect(finalEntity?.field1).toEqual(3); }); it('can call getByFields, with entities updated in the same block', async () => { blockHeight = 2; await testModel.set( 'entity1_id_0x01', { id: 'entity1_id_0x01', field1: 2, }, blockHeight ); const result = await testModel.getByFields( [ ['id', '=', 'entity1_id_0x01'], ['field1', '=', 2], ], {offset: 0, limit: 100} ); expect(result).toEqual([ { id: 'entity1_id_0x01', field1: 2, }, ]); }); it('cannot mutate data in the cache without calling methods', async () => { await testModel.set( 'entity1_id_0x01', { id: 'entity1_id_0x01', field1: 2, }, 2 ); /* get usese the get cache */ const entity = (await testModel.get('entity1_id_0x01'))!; expect(entity).toBeDefined(); // Mutate field directly entity.field1 = -1; const entity2 = await testModel.get('entity1_id_0x01'); expect(entity2?.field1).toEqual(2); /* getBy methods use set cache */ const [entity3] = (await testModel.getByFields([['field1', '=', 2]], {limit: 1}))!; expect(entity3?.field1).toEqual(2); // Mutate field directly entity3.field1 = -2; const [entity4] = await testModel.getByFields([['field1', '=', 2]], {limit: 1}); expect(entity4?.field1).toEqual(2); }); }); describe('historical', () => { beforeEach(() => { jest.clearAllMocks(); let i = 0; sequelize = new Sequelize(); testModel = new CachedModel(sequelize.model('entity1'), 'height', {} as NodeConfig, () => i++); }); it('throws when trying to set undefined', async () => { await expect(() => testModel.set('0x01', undefined as any, 1)).rejects.toThrow(); await expect(() => testModel.set('0x01', null as any, 1)).rejects.toThrow(); }); // it should keep same behavior as hook we used it('when get data after flushed, it should exclude block range', async () => { const spyDbGet = jest.spyOn(testModel.model, 'findOne'); const sypOnApplyBlockRange = jest.spyOn(testModel as any, 'applyBlockRange'); await testModel.set( 'entity1_id_0x01', { id: 'entity1_id_0x01', field1: 1, }, 1 ); await flush(1); // the block range has been set expect(sypOnApplyBlockRange).toHaveBeenCalledTimes(1); const entity = await testModel.get('entity1_id_0x01'); if (!entity) { throw new Error('Entity should exist'); } // should read from get cache, and entity should exclude __block_range expect(spyDbGet).not.toHaveBeenCalled(); expect(JSON.stringify(entity)).not.toContain('__block_range'); }); // TODO, getByFields still works // Some edge cases for set get and remove describe('set, remove and get', () => { it('In different block, remove and set, should able to get', async () => { await testModel.remove('entity1_id_0x01', 4); await testModel.set( 'entity1_id_0x01', { id: 'entity1_id_0x01', field1: 5, }, 6 ); const result = await testModel.get('entity1_id_0x01'); expect(result?.field1).toBe(5); }); it('In same block, remove then set, should able to get', async () => { await testModel.remove('entity1_id_0x01', 1); await testModel.set( 'entity1_id_0x01', { id: 'entity1_id_0x01', field1: 1, }, 1 ); const result = await testModel.get('entity1_id_0x01'); // data should be erased from removeCache expect((testModel as any).removeCache.entity1_id_0x01).toBeUndefined(); expect(result).toBeDefined(); }); it('In different block, remove and set, then remove again, should get nothing', async () => { await testModel.remove('entity1_id_0x01', 4); await testModel.set( 'entity1_id_0x01', { id: 'entity1_id_0x01', field1: 5, }, 6 ); await testModel.remove('entity1_id_0x01', 8); const result = await testModel.get('entity1_id_0x01'); expect((testModel as any).removeCache.entity1_id_0x01).toBeDefined(); // should match with last removed expect((testModel as any).removeCache.entity1_id_0x01.removedAtBlock).toBe(8); // check set cache, mark as removed const latestSetRecord = (testModel as any).setCache.entity1_id_0x01.historicalValues[0]; expect(latestSetRecord.removed).toBeTruthy(); expect(latestSetRecord.endHeight).toBe(8); expect(result).toBeUndefined(); }); it('In same block, remove and set, then remove again, should get nothing', async () => { await testModel.remove('entity1_id_0x01', 1); await testModel.set( 'entity1_id_0x01', { id: 'entity1_id_0x01', field1: 1, }, 1 ); await testModel.remove('entity1_id_0x01', 1); const result = await testModel.get('entity1_id_0x01'); expect((testModel as any).removeCache.entity1_id_0x01).toBeDefined(); const latestSetRecord = (testModel as any).setCache.entity1_id_0x01.historicalValues[0]; // marked set record as removed expect(latestSetRecord.removed).toBeTruthy(); expect(latestSetRecord.endHeight).toBe(1); expect(result).toBeUndefined(); }); it('clean flushable records when applyBlockRange, if found set and removed happened in the same height', async () => { await testModel.set( 'entity1_id_0x01', { id: 'entity1_id_0x01', field1: 1, }, 1 ); await testModel.remove('entity1_id_0x01', 1); await testModel.set( 'entity1_id_0x02', { id: 'entity1_id_0x02', field1: 2, }, 2 ); expect((testModel as any).removeCache.entity1_id_0x01).toBeDefined(); const latestSetRecord = (testModel as any).setCache.entity1_id_0x01.historicalValues[0]; // marked set record as removed expect(latestSetRecord.removed).toBeTruthy(); expect(latestSetRecord.startHeight).toBe(1); expect(latestSetRecord.endHeight).toBe(1); const records = (testModel as any).applyBlockRange((testModel as any).setCache); // should filter out id 1 expect(records.length).toBe(1); expect(records[0].id).toBe('entity1_id_0x02'); }); it('clean flushable records when applyBlockRange, pass if set and remove in the different height', async () => { await testModel.set( 'entity1_id_0x01', { id: 'entity1_id_0x01', field1: 1, }, 1 ); await testModel.remove('entity1_id_0x01', 2); await testModel.set( 'entity1_id_0x02', { id: 'entity1_id_0x02', field1: 2, }, 2 ); expect((testModel as any).removeCache.entity1_id_0x01).toBeDefined(); const records = (testModel as any).applyBlockRange((testModel as any).setCache); expect(records.length).toBe(2); expect(records[0].id).toBe('entity1_id_0x01'); expect(records[0].__block_range).toStrictEqual({args: [1, 2], fn: 'int8range'}); expect(records[1].id).toBe('entity1_id_0x02'); expect(records[1].__block_range).toStrictEqual({args: [2, null], fn: 'int8range'}); }); it('getFromCache could filter out removed data', async () => { await testModel.set( 'entity1_id_0x01', { id: 'entity1_id_0x01', field1: 1, }, 1 ); await testModel.remove('entity1_id_0x01', 1); await testModel.set( 'entity1_id_0x02', { id: 'entity1_id_0x02', field1: 1, }, 2 ); const spyFindAll = jest.spyOn(testModel.model, 'findAll'); const result = await testModel.getByFields([['field1', '=', 1]], {offset: 0, limit: 50}); expect(spyFindAll).toHaveBeenCalledTimes(1); expect(result).toStrictEqual([ {id: 'entity1_id_0x02', field1: 1}, //Filtered out removed record ]); }); it('getFromCache with removed and set again data', async () => { await testModel.set( 'entity1_id_0x01', { id: 'entity1_id_0x01', field1: 3, }, 1 ); await testModel.remove('entity1_id_0x01', 1); await testModel.set( 'entity1_id_0x01', { id: 'entity1_id_0x01', field1: 1, }, 1 ); const spyFindAll = jest.spyOn(testModel.model, 'findAll'); const result = await testModel.getByFields([['field1', '=', 1]], {offset: 0, limit: 50}); expect(spyFindAll).toHaveBeenCalledTimes(1); expect(result).toStrictEqual([{id: 'entity1_id_0x01', field1: 1}]); // Should not include any previous recorded value const result3 = await testModel.getByFields([['field1', '=', 3]], {offset: 0, limit: 50}); // Expect only mocked expect(result3).toStrictEqual([]); }); }); describe('getByFields', () => { it('allows empty filter', async () => { await expect( testModel.getByFields( // Any needed to get past type check [], {offset: 0, limit: 1} ) ).resolves.not.toThrow(); }); it('throws for unsupported operators', async () => { await expect( testModel.getByFields( // Any needed to get past type check [['field1', 'badOperator' as any, 1]], {offset: 0, limit: 1} ) ).rejects.toThrow(`Operator ('badOperator') for field field1 is not valid. Options are =, !=, in, !in`); }); }); }); }); ================================================ FILE: packages/node-core/src/indexer/storeModelProvider/model/cacheModel.test.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import {GraphQLModelsType} from '@subql/utils'; import {Sequelize, DataTypes, QueryTypes} from '@subql/x-sequelize'; import {cloneDeep, padStart} from 'lodash'; import {DbOption, modelsTypeToModelAttributes, NodeConfig} from '../../..'; import {CachedModel} from './cacheModel'; const option: DbOption = { host: process.env.DB_HOST ?? '127.0.0.1', port: process.env.DB_PORT ? Number(process.env.DB_PORT) : 5432, username: process.env.DB_USER ?? 'postgres', password: process.env.DB_PASS ?? 'postgres', database: process.env.DB_DATABASE ?? 'postgres', timezone: 'utc', }; jest.setTimeout(50_000); describe('cacheMetadata integration', () => { let sequelize: Sequelize; let schema: string; let model: any; let cacheModel: CachedModel<{id: string; field1: number}>; const flush = async (blockHeight: number) => { const tx = await sequelize.transaction(); await cacheModel.flush(tx, blockHeight); await tx.commit(); }; beforeAll(async () => { sequelize = new Sequelize( `postgresql://${option.username}:${option.password}@${option.host}:${option.port}/${option.database}`, option ); await sequelize.authenticate(); schema = '"model-test-1"'; await sequelize.createSchema(schema, {}); // TODO create model const modelFactory = sequelize.define( 'testModel', { id: { type: DataTypes.STRING, primaryKey: true, }, field1: DataTypes.INTEGER, }, {timestamps: false, schema: schema} ); model = await modelFactory.sync().catch((e) => { console.log('error', e); throw e; }); let i = 0; cacheModel = new CachedModel(model, false, new NodeConfig({} as any), () => i++); }); afterAll(async () => { await sequelize.dropSchema(schema, {logging: false}); await sequelize.close(); }); describe('getByFields', () => { const formatIdNumber = (n: number): string => padStart(`${n}`, 3, '0'); beforeAll(async () => { // Pre-populate some data and flush it do the db let n = 0; while (n < 100) { await cacheModel.set( `entity1_id_0x${formatIdNumber(n)}`, { id: `entity1_id_0x${formatIdNumber(n)}`, field1: 1, }, 1 ); n++; } await flush(2); // Updates to existing data let m = 20; while (m < 30) { await cacheModel.set( `entity1_id_0x${formatIdNumber(m)}`, { id: `entity1_id_0x${formatIdNumber(m)}`, field1: m % 2, }, 3 ); m++; } // New data let o = 100; while (o < 130) { await cacheModel.set( `entity1_id_0x${formatIdNumber(o)}`, { id: `entity1_id_0x${formatIdNumber(o)}`, field1: 2, }, 3 ); o++; } }); it('gets one item correctly', async () => { const getOneBy = (field: 'id', value: string) => cacheModel.getByFields([[field, '=', value]], {limit: 1}); // Db value const [res0] = await getOneBy('id', 'entity1_id_0x001'); expect(res0).toEqual({id: 'entity1_id_0x001', field1: 1}); // Cache value const [res1] = await getOneBy('id', 'entity1_id_0x020'); expect(res1).toEqual({id: 'entity1_id_0x020', field1: 0}); // Cache value const [res2] = await getOneBy('id', 'entity1_id_0x021'); expect(res2).toEqual({id: 'entity1_id_0x021', field1: 1}); }); it('corretly merges data from the setCache', async () => { const results = await cacheModel.getByFields( // Any needed to get past type check [['field1', '=', 1]], {offset: 0, limit: 30} ); expect(results.length).toEqual(30); // This should exclude all the cache values where field1 = 0 // The database would still have those values as 1 expect(results.map((res) => res.id)).toEqual([ // Cache Data 'entity1_id_0x021', 'entity1_id_0x023', 'entity1_id_0x025', 'entity1_id_0x027', 'entity1_id_0x029', // DB data 'entity1_id_0x000', 'entity1_id_0x001', 'entity1_id_0x002', 'entity1_id_0x003', 'entity1_id_0x004', 'entity1_id_0x005', 'entity1_id_0x006', 'entity1_id_0x007', 'entity1_id_0x008', 'entity1_id_0x009', 'entity1_id_0x010', 'entity1_id_0x011', 'entity1_id_0x012', 'entity1_id_0x013', 'entity1_id_0x014', 'entity1_id_0x015', 'entity1_id_0x016', 'entity1_id_0x017', 'entity1_id_0x018', 'entity1_id_0x019', 'entity1_id_0x030', 'entity1_id_0x031', 'entity1_id_0x032', 'entity1_id_0x033', 'entity1_id_0x034', ]); }); it('corretly orders and offsets data with setCache', async () => { const results = await cacheModel.getByFields([['field1', 'in', [0, 1]]], { offset: 15, limit: 10, orderBy: 'field1', orderDirection: 'DESC', }); expect(results.length).toEqual(10); expect(results.map((r) => r.field1)).toEqual([1, 1, 1, 1, 1, 1, 1, 1, 1, 1]); }); it('gets correct results with no filter', async () => { // Cache data first const ids: string[] = []; let n = 20; while (n < 30) { ids.push(`entity1_id_0x${formatIdNumber(n)}`); n++; } n = 100; while (n < 130) { ids.push(`entity1_id_0x${formatIdNumber(n)}`); n++; } // TODO make limit bigger to get DB data as well const results = await cacheModel.getByFields([], {offset: 0, limit: 30}); expect(results.map((r) => r.id)).toEqual(ids.slice(0, 30)); }); describe('offsets with cache data', () => { let fullResults: {id: string; field1: number}[]; beforeAll(async () => { fullResults = await cacheModel.getByFields([], {offset: 0, limit: 50}); }); it('gets data before cache', async () => { const results = await cacheModel.getByFields([], {offset: 5, limit: 15}); expect(results).toEqual(fullResults.slice(5).slice(0, 15)); }); it('gets data before and in cache', async () => { const results = await cacheModel.getByFields([], {offset: 15, limit: 20}); expect(results).toEqual(fullResults.slice(15).slice(0, 20)); }); it('gets data within cache', async () => { const results = await cacheModel.getByFields([], {offset: 20, limit: 5}); expect(results).toEqual(fullResults.slice(20).slice(0, 5)); }); it('gets data after cache', async () => { const results = await cacheModel.getByFields([], {offset: 30, limit: 20}); expect(results).toEqual(fullResults.slice(30).slice(0, 20)); }); }); describe('data only in cache', () => { it('selects data in the cache', async () => { const result = await cacheModel.getByFields([['field1', '=', 2]]); expect(result.length).toEqual(30); }); it('selects data from the cache and db in the right order', async () => { const result = await cacheModel.getByFields([], {limit: 50, orderDirection: 'DESC'}); expect(result[0].id).toEqual('entity1_id_0x129'); // Failing because we cant offset cache data correctly expect(result[result.length - 1].id).toEqual('entity1_id_0x090'); }); }); }); }); describe('cacheModel integration', () => { let sequelize: Sequelize; let schema: string; let model: any; let cacheModel: CachedModel<{ id: string; selfStake: bigint; oneEntity: TestJson; delegators: DelegationFrom[]; randomNArray?: number[]; }>; const flush = async (blockHeight: number) => { const tx = await sequelize.transaction(); await cacheModel.flush(tx, blockHeight); await tx.commit(); }; interface TestJson { testItem: string; amount?: bigint; } interface DelegationFrom { delegator: string; amount?: bigint; nested?: TestJson; } beforeAll(async () => { sequelize = new Sequelize( `postgresql://${option.username}:${option.password}@${option.host}:${option.port}/${option.database}`, option ); await sequelize.authenticate(); schema = '"model-test-2"'; await sequelize.createSchema(schema, {}); const modelType: GraphQLModelsType = { name: 'testModel', fields: [ { name: 'id', type: 'ID', isArray: false, nullable: false, isEnum: false, }, { name: 'selfStake', type: 'BigInt', nullable: false, isEnum: false, isArray: false, }, { name: 'oneEntity', type: 'Json', nullable: false, isEnum: false, isArray: false, jsonInterface: { name: 'TestJson', fields: [ {name: 'testItem', type: 'String', isArray: false, nullable: false}, {name: 'amount', type: 'BigInt', isArray: false, nullable: false}, ], }, }, { name: 'delegators', type: 'Json', nullable: false, jsonInterface: { name: 'DelegationFrom', fields: [ {name: 'delegator', type: 'String', isArray: false, nullable: false}, {name: 'amount', type: 'BigInt', isArray: false, nullable: true}, { name: 'nested', type: 'Json', isArray: false, nullable: false, jsonInterface: { name: 'TestJson', fields: [ {name: 'testItem', type: 'String', isArray: false, nullable: false}, {name: 'amount', type: 'BigInt', isArray: false, nullable: true}, ], }, }, ], }, isEnum: false, isArray: true, }, { name: 'randomNArray', type: 'Int', nullable: true, isEnum: false, isArray: true, }, ], indexes: [], }; const modelAttributes = modelsTypeToModelAttributes(modelType, new Map(), schema); const modelFactory = sequelize.define('testModel', modelAttributes, {timestamps: false, schema: schema}); model = await modelFactory.sync().catch((e) => { console.log('error', e); throw e; }); let i = 0; cacheModel = new CachedModel(model, false, new NodeConfig({} as any), () => i++); }); it('behaves as expected with removals', async () => { // Create data but dont flush, this puts it in the cache await setDefaultData('0x01', 1, undefined, false); // Remove the data, this could happen at any block > 1 but before flushing. cacheModel.remove('0x01', 1); // The result should be undefined as it will be marked as removed const res0 = await cacheModel.get('0x01'); expect(res0).toBeUndefined(); // The data will still be in the set cache but it should not be included in the result const res = await cacheModel.getByFields([], {offset: 0, limit: 10, orderBy: 'selfStake', orderDirection: 'ASC'}); expect(res).toEqual([]); }); afterAll(async () => { await sequelize.dropSchema(schema, {logging: false}); await sequelize.close(); }); async function setDefaultData(id: string, height: number, data?: any, flushData = true): Promise { cacheModel.set( id, data ?? { id, selfStake: BigInt(1000000000000000000000n), oneEntity: {testItem: 'test', amount: BigInt(8000000000000000000000n)}, delegators: [{delegator: '0x02', amount: BigInt(1000000000000000000000n)}], randomNArray: [1, 2, 3, 4, 5], }, height ); if (flushData) { await flush(height + 1); } } describe('cached data and db data compare', () => { it('bigint value in jsonb', async () => { await setDefaultData('0x01', 1); // force clear get cache (cacheModel as any).getCache.clear(); // Db value const res0 = await cacheModel.get('0x01'); console.log(JSON.stringify(res0)); expect(res0).toEqual({ delegators: [ { amount: BigInt(1000000000000000000000n), delegator: '0x02', }, ], oneEntity: {testItem: 'test', amount: BigInt(8000000000000000000000n)}, id: '0x01', selfStake: BigInt(1000000000000000000000n), randomNArray: [1, 2, 3, 4, 5], }); // Cache value const res1 = await cacheModel.get('0x01'); console.log(JSON.stringify(res1)); expect(res1).toEqual({ delegators: [ { amount: BigInt(1000000000000000000000n), delegator: '0x02', }, ], id: '0x01', oneEntity: {testItem: 'test', amount: BigInt(8000000000000000000000n)}, selfStake: BigInt(1000000000000000000000n), randomNArray: [1, 2, 3, 4, 5], }); // Update the value res1?.delegators.push({delegator: '0x03', amount: BigInt(9000000000000000000000n)}); await cacheModel.set(`0x01`, res1!, 2); await flush(3); const res2 = await cacheModel.get('0x01'); console.log(JSON.stringify(res2)); expect(res2).toEqual({ id: '0x01', selfStake: BigInt(1000000000000000000000n), oneEntity: {testItem: 'test', amount: BigInt(8000000000000000000000n)}, delegators: [ {delegator: '0x02', amount: BigInt(1000000000000000000000n)}, {delegator: '0x03', amount: BigInt(9000000000000000000000n)}, ], randomNArray: [1, 2, 3, 4, 5], }); // check actually stored bigint in json in the db const [oneEntityRow] = await sequelize.query(`SELECT "oneEntity" FROM ${schema}."testModels" LIMIT 1;`, { type: QueryTypes.SELECT, }); expect(oneEntityRow).toStrictEqual({ oneEntity: { amount: '8000000000000000000000n', testItem: 'test', }, }); // check actually stored bigint in json Array in the db const [rows] = await sequelize.query(`SELECT "delegators" FROM ${schema}."testModels" LIMIT 1;`, { type: QueryTypes.SELECT, }); expect(rows).toStrictEqual({ delegators: [ { amount: '1000000000000000000000n', delegator: '0x02', }, { amount: '9000000000000000000000n', delegator: '0x03', }, ], }); // check nest jsonb value res1?.delegators.push({ delegator: '0x04', amount: BigInt(6000000000000000000000n), nested: {testItem: 'test', amount: BigInt(6000000000000000000000n)}, }); await cacheModel.set(`0x01`, res1!, 4); await flush(5); const [rows2] = await sequelize.query(`SELECT delegators FROM ${schema}."testModels" LIMIT 1;`, { type: QueryTypes.SELECT, }); expect(rows2).toStrictEqual({ delegators: [ { amount: '1000000000000000000000n', delegator: '0x02', }, { amount: '9000000000000000000000n', delegator: '0x03', }, { amount: '6000000000000000000000n', delegator: '0x04', nested: { testItem: 'test', amount: '6000000000000000000000n', // We are expected nest json bigint also been handled }, }, ], }); // it should ignore the bigint value if it is undefined or null const data0x02 = { id: `0x02`, selfStake: BigInt(1000000000000000000000n), oneEntity: {testItem: 'test', amount: BigInt(8000000000000000000000n)}, delegators: [ { delegator: '0x05', amount: undefined, nested: {testItem: 'test', amount: undefined}, }, ], randomNArray: undefined, }; await cacheModel.set(`0x02`, data0x02, 6); await flush(7); const res5 = ( await cacheModel.model.findOne({ where: {id: '0x02'} as any, }) )?.toJSON(); expect(res5?.delegators).toEqual(data0x02.delegators); }); it('empty array test, compare db result with cache data', async () => { await setDefaultData('0x09', 1, { id: '0x09', selfStake: BigInt(1000000000000000000000n), oneEntity: {testItem: 'test', amount: BigInt(8000000000000000000000n)}, delegators: [{delegator: '0x02', amount: BigInt(1000000000000000000000n)}], randomNArray: undefined, }); // Cache value 1, before cache is cleared const resCache1 = await cacheModel.get('0x09'); expect(resCache1?.randomNArray).toBeUndefined(); // force clear get cache (cacheModel as any).getCache.clear(); // Db value const res0 = await cacheModel.get('0x09'); expect(res0?.randomNArray).toBe(null); // Cache value 2, after cache is set from db value const resCache2 = await cacheModel.get('0x09'); expect(resCache2?.randomNArray).toBe(null); // We are expecting DB value and get cache value to be the same expect(res0).toEqual(resCache2); // We are expecting DB value and set cache value can be difference, field value can be undefined and null expect(res0).not.toEqual(resCache1); }); it('get and update, without save, get again should not be updated value', async () => { await setDefaultData(`0x10`, 1); // Db value const res0 = await cacheModel.get('0x10'); const copiedRes0 = cloneDeep(res0); // Update the value res0?.delegators.push({delegator: '0x11', amount: BigInt(9000000000000000000000n)}); // Get it again const res1 = await cacheModel.get('0x10'); // should be same before updated expect(res1).toEqual(copiedRes0); }); }); }); ================================================ FILE: packages/node-core/src/indexer/storeModelProvider/model/cacheModel.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import assert from 'assert'; import {FieldsExpression, GetOptions} from '@subql/types-core'; import {CreationAttributes, Model, ModelStatic, Op, Sequelize, Transaction} from '@subql/x-sequelize'; import {flatten, uniq, cloneDeep, orderBy, unionBy} from 'lodash'; import {NodeConfig} from '../../../configure'; import {HistoricalMode} from '../../types'; import {Cacheable} from '../cacheable'; import {Exporter} from '../exporters'; import {SetValueModel} from '../setValueModel'; import {ICachedModelControl, RemoveValue, SetData, GetData, FilteredHeightRecords, SetValue} from '../types'; import {BaseEntity, IModel} from './model'; import {getFullOptions, operatorsMap} from './utils'; const getCacheOptions = { max: 500, // default value ttl: 1000 * 60 * 60, // in ms updateAgeOnGet: true, // we want to keep most used record in cache longer }; export class CachedModel extends Cacheable implements IModel, ICachedModelControl { // Null value indicates its not defined in the db private getCache: GetData; private setCache: SetData = {}; private removeCache: Record = {}; readonly hasAssociations: boolean = false; exporters: Exporter[] = []; flushableRecordCounter = 0; constructor( readonly model: ModelStatic>, private readonly historical: HistoricalMode = 'height', config: NodeConfig, private getNextStoreOperationIndex: () => number ) { super(); // In case, this might be want to be 0 if (config.storeGetCacheSize !== undefined) { getCacheOptions.max = config.storeGetCacheSize; } this.getCache = new GetData(getCacheOptions); if (Object.keys(this.model.associations).length > 0) { this.hasAssociations = true; } } allCachedIds(): string[] { // unified ids // We need to look from setCache too, as setCache is LFU cache, it might have more/fewer entities with setCache return uniq(flatten([Object.keys(this.setCache), Object.keys(this.removeCache)])); } async get(id: string): Promise { // If this already been removed const latestSetRecord = this.setCache[id]?.getLatest(); if (this.removeCache[id]) { // Entity has been set again after being removed if ( latestSetRecord && !latestSetRecord.removed && this.removeCache[id].removedAtBlock <= latestSetRecord.startHeight ) { return cloneDeep(latestSetRecord.data); } return; } if (!this.getCache.has(id)) { // LFU getCache could remove record from due to it is least frequently used // Then we try look from setCache let record = latestSetRecord?.data; if (latestSetRecord?.removed) { return undefined; } if (!record) { await this.mutex.waitForUnlock(); record = ( await this.model.findOne({ // https://github.com/sequelize/sequelize/issues/15179 where: {id} as any, }) )?.toJSON(); if (record) { // getCache only keep records from db this.getCache.set(id, record); } } return cloneDeep(record); } return cloneDeep(this.getCache.get(id)); } addExporter(cacheState: Exporter): void { this.exporters.push(cacheState); } /** * getByFields allows ordering and filtering of data from the setCache and DB. * * When ordering, cache data is provided first followed by DB data, this is to ensure offsets work * * It does not use the get cache because there is no way to guarantee order, * and we have no way to tell where setCache data fits in the order. * * There is also no way to flush data here, * flushing will only flush data before the current block so its still required to consider the setCache * */ async getByFields(filters: FieldsExpression[], options?: GetOptions): Promise { filters.forEach(([field, operator]) => { assert( operatorsMap[operator], `Operator ('${operator}') for field ${String(field)} is not valid. Options are ${Object.keys(operatorsMap).join( ', ' )}` ); }); // Dont do anything to return early like checking for a single ID filter. // If projects use inefficient store methods, thats on them. // Ensure we have all the options const fullOptions = getFullOptions(options); await this.mutex.waitForUnlock(); // Query cache with all params // Apply the operations in the same order as the DB would, order -> filter -> offset const cacheData = orderBy( Object.values(this.setCache), [(value: SetValueModel) => value.getLatest()?.data?.[fullOptions.orderBy]], [fullOptions.orderDirection.toLowerCase() as 'asc' | 'desc'] ) .filter((value) => !value.getLatest()?.removed) // Ensure the data has not been marked for removal .filter((value) => value.matchesFields(filters)) // This filters out any removed/undefined .map((value) => value.getLatest()?.data) .map((value) => cloneDeep(value)) as T[]; const offsetCacheData = cacheData.slice(fullOptions.offset); // Return early if cache covers all the data if (offsetCacheData.length > fullOptions.limit) { return offsetCacheData.slice(0, fullOptions.limit); } // Query DB with all params const records = await this.model.findAll({ where: { [Op.and]: [ ...filters.map(([field, operator, value]) => ({[field]: {[operatorsMap[operator]]: value}})), {id: {[Op.notIn]: this.allCachedIds()}}, ] as any, // Types not working properly }, limit: fullOptions.limit - offsetCacheData.length, // Only get enough to fill the limit offset: fullOptions.offset - (cacheData.length - offsetCacheData.length), // Remove the offset items from the cache order: [[fullOptions.orderBy as string, fullOptions.orderDirection]], }); const dbData = records.map((r) => r.toJSON()); // Combine data from cache and db const combined = unionBy(offsetCacheData, dbData, (v) => v.id).slice(0, fullOptions.limit); // Re-apply limit return combined; } // eslint-disable-next-line @typescript-eslint/require-await async set(id: string, data: T, blockHeight: number): Promise { if (data === undefined || data === null) { throw new Error('Cannot set undefined or null data. If you wish to remove data, use remove()'); } this.setCache[id] ??= new SetValueModel(); const copiedData = cloneDeep(data); this.setCache[id].set(copiedData, blockHeight, this.getNextStoreOperationIndex()); // Experimental, this means getCache keeps duplicate data from setCache, // we can remove this once memory is too full. this.getCache.set(id, copiedData); // Handle remove cache, when removed data been created again if (this.removeCache[id] && this.removeCache[id].removedAtBlock === blockHeight) { delete this.removeCache[id]; } this.flushableRecordCounter += 1; } async bulkCreate(data: T[], blockHeight: number): Promise { for (const entity of data) { await this.set(entity.id, entity, blockHeight); } } async bulkUpdate(data: T[], blockHeight: number, fields?: string[]): Promise { //TODO, remove fields if (fields) { throw new Error(`Currently not supported: update by fields`); } for (const entity of data) { await this.set(entity.id, entity, blockHeight); } } // eslint-disable-next-line @typescript-eslint/require-await async remove(id: string, blockHeight: number): Promise { // we don't need to check whether id is already removed, // because it could be removed->create-> removed again, // the operationIndex should always be the latest operation this.removeCache[id] = { removedAtBlock: blockHeight, operationIndex: this.getNextStoreOperationIndex(), }; this.flushableRecordCounter += 1; if (this.getCache.has(id)) { this.getCache.delete(id); // Also when .get, check removeCache first, should return undefined if removed } if (this.setCache[id]) { // close last record this.setCache[id].markAsRemoved(blockHeight); } } async bulkRemove(ids: string[], blockHeight: number): Promise { await Promise.all(ids.map((id) => this.remove(id, blockHeight))); } get isFlushable(): boolean { return !!Object.keys(this.setCache).length || !!Object.keys(this.removeCache).length; } async runFlush(tx: Transaction, blockHeight: number): Promise { // Get records relevant to the block height const {removeRecords, setRecords} = this.filterRecordsWithHeight(blockHeight); // Filter non-historical could return undefined due to it been removed let records = this.applyBlockRange(setRecords).filter((r) => !!r); let dbOperation: Promise; if (this.historical) { dbOperation = Promise.all([ // set, bulkCreate, bulkUpdate & remove close previous records this.historicalMarkPreviousHeightRecordsBatch(tx, setRecords, removeRecords), // bulkCreate all new records for this entity, // include(set, bulkCreate, bulkUpdate) this.model.bulkCreate(records, { transaction: tx, }), ]); } else { // We need to check within the same model if there is multiple operations (set/remove) to the same id // we don't have to consider the order in setCache, as we are using getLatest()?.data; // also in removeCache only store last remove operation too. // If same Id exist in both set and remove records, we only need to pick the last operation for this ID, // As both cache in final status, so we can compare their operation index for (const v of Object.values(setRecords)) { const latestSet = v.getLatest(); if (latestSet !== undefined && removeRecords[latestSet.data.id]) { if (removeRecords[latestSet.data.id].operationIndex > latestSet.operationIndex) { records = records.filter((r) => r.id !== latestSet.data.id); } else if (removeRecords[latestSet.data.id].operationIndex < latestSet.operationIndex) { delete removeRecords[latestSet.data.id]; } else { throw new Error( `Cache entity ${this.model.name} Id ${latestSet.data.id} has same Operation Indexes in remove and set cache ` ); } } } const allKeys = Object.keys(this.model.getAttributes()) as (keyof T)[]; dbOperation = Promise.all([ records.length && this.model.bulkCreate(records, { transaction: tx, updateOnDuplicate: allKeys, }), Object.keys(removeRecords).length && this.model.destroy({where: {id: Object.keys(removeRecords)} as any, transaction: tx}), ]); } await dbOperation; // If this throws the transaction should be aborted for (const exporter of this.exporters) { await exporter.export(records); } } // Flush relation model in operationIndex order with non-historical db async flushOperation(operationIndex: number, tx: Transaction): Promise { const removeRecordKey = Object.keys(this.removeCache).find( (key) => this.removeCache[key].operationIndex === operationIndex ); if (removeRecordKey !== undefined) { await this.model.destroy({where: {id: removeRecordKey} as any, transaction: tx}); delete this.removeCache[removeRecordKey]; } else { let setRecord: SetValue | undefined; for (const r of Object.values(this.setCache)) { setRecord = r.popRecordWithOpIndex(operationIndex); if (setRecord) break; } if (setRecord) { await this.model.upsert(setRecord.data as unknown as CreationAttributes>, {transaction: tx}); } return; } } private filterRemoveRecordByHeight(blockHeight: number, lessEqt: boolean): Record { return Object.entries(this.removeCache).reduce( (acc, [key, value]) => { if (lessEqt ? value.removedAtBlock <= blockHeight : value.removedAtBlock > blockHeight) { acc[key] = value; } return acc; }, {} as Record ); } private filterRecordsWithHeight(blockHeight: number): FilteredHeightRecords { return { removeRecords: this.filterRemoveRecordByHeight(blockHeight, true), setRecords: Object.entries(this.setCache).reduce((acc, [key, value]) => { const newValue = value.fromBelowHeight(blockHeight + 1); if (newValue.getValues().length) { acc[key] = newValue; } return acc; }, {} as SetData), }; } // Add blockRange to historical record private applyBlockRange(_setRecords: SetData) { const setRecords = cloneDeep(_setRecords); return flatten( Object.values(setRecords).map((v) => { if (!this.historical) { return v.getLatest()?.data; } // Historical // Alternative: historicalValue.data.__block_range = [historicalValue.startHeight, historicalValue.endHeight]; return v .getValues() .map((historicalValue) => { // prevent flush this record, // this is happened when set and remove in same block if (historicalValue.removed && historicalValue.startHeight === historicalValue.endHeight) { return; } historicalValue.data.__block_range = this.sequelize.fn( 'int8range', historicalValue.startHeight, historicalValue.endHeight ); return historicalValue.data; }) .filter((r) => !!r); }) ) as unknown as CreationAttributes>[]; } clear(blockHeight?: number): void { if (blockHeight === undefined) { this.setCache = {}; // avoid fetch old data after rewind/reindex this.getCache = new GetData(getCacheOptions); this.removeCache = {}; this.flushableRecordCounter = 0; return; } let newCounter = 0; // Clear everything below the block height this.setCache = Object.entries(this.setCache).reduce((acc, [key, value]) => { const newValue = value.fromAboveHeight(blockHeight); const numValues = newValue.getValues().length; if (numValues) { newCounter += numValues; acc[key] = newValue; } return acc; }, {} as SetData); this.removeCache = this.filterRemoveRecordByHeight(blockHeight, false); this.flushableRecordCounter = newCounter; } // Different with markAsDeleted, we only mark/close all the records less than current block height // thus, and new record with current block height will not be impacted, // advantage is this sql is safe to concurrency resolve with any insert sql private async historicalMarkPreviousHeightRecordsBatch( tx: Transaction, setRecords: SetData, removeRecords: Record ): Promise { const closeSetRecords: {id: string; blockHeight: number}[] = []; for (const [id, value] of Object.entries(setRecords)) { const firstValue = value.getFirst(); if (firstValue !== undefined) { closeSetRecords.push({id, blockHeight: firstValue.startHeight}); } } const closeRemoveRecords = Object.entries(removeRecords).map(([id, value]) => { return {id, blockHeight: value.removedAtBlock}; }); const mergedRecords = closeSetRecords.concat(closeRemoveRecords); if (!mergedRecords.length) { return; } await this.sequelize.query( `UPDATE ${this.model.getTableName()} table1 SET _block_range = int8range(lower("_block_range"), table2._block_end) from (SELECT UNNEST(array[${mergedRecords.map((r) => this.sequelize.escape(r.id) )}]) AS id, UNNEST(array[${mergedRecords.map((r) => r.blockHeight)}]) AS _block_end) AS table2 WHERE table1.id = table2.id and "_block_range" @> _block_end-1::int8;`, {transaction: tx} ); } private get sequelize(): Sequelize { const sequelize = this.model.sequelize; if (!sequelize) { throw new Error(`Sequelize is not available on ${this.model.name}`); } return sequelize; } } ================================================ FILE: packages/node-core/src/indexer/storeModelProvider/model/index.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 export * from './cacheModel'; export {IModel, BaseEntity} from './model'; ================================================ FILE: packages/node-core/src/indexer/storeModelProvider/model/model.test.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import {Entity} from '@subql/types-core'; import {DataTypes, Sequelize} from '@subql/x-sequelize'; import _ from 'lodash'; import {NodeConfig} from '../../../configure'; import {DbOption} from '../../../db'; import {CachedModel} from './cacheModel'; import {PlainModel} from './model'; const option: DbOption = { host: process.env.DB_HOST ?? '127.0.0.1', port: process.env.DB_PORT ? Number(process.env.DB_PORT) : 5432, username: process.env.DB_USER ?? 'postgres', password: process.env.DB_PASS ?? 'postgres', database: process.env.DB_DATABASE ?? 'postgres', timezone: 'utc', }; jest.setTimeout(50_000); describe('Model provider consistency test', () => { let sequelize: Sequelize; let schema: string; let model: any; beforeAll(async () => { sequelize = new Sequelize( `postgresql://${option.username}:${option.password}@${option.host}:${option.port}/${option.database}`, option ); await sequelize.authenticate(); schema = '"model-test-1"'; await sequelize.createSchema(schema, {}); const modelFactory = sequelize.define( 'testModel', { id: { type: DataTypes.STRING, primaryKey: true, }, field1: DataTypes.INTEGER, }, {timestamps: false, schema: schema} ); model = await modelFactory.sync(); }); afterAll(async () => { await sequelize.dropSchema(schema, {logging: false}); await sequelize.close(); }); describe('disable historical', () => { let plainModel: PlainModel<{id: string; field1?: number}>; let cacheModel: CachedModel<{id: string; field1?: number}>; let i = 0; beforeAll(() => { plainModel = new PlainModel(model, false); cacheModel = new CachedModel(model, false, new NodeConfig({} as any), () => i++); }); it('insert data', async () => { const id = '1'; const data = {id, field1: 1}; await plainModel.set(id, data, 1); await cacheModel.set(id, data, 1); const result = await plainModel.get(id, undefined as any); const cacheResult = await cacheModel.get(id); expect(result).toEqual(data); expect(cacheResult).toEqual(result); }); it('select data', async () => { const id2 = '2'; const data2 = {id: id2, field1: 2}; await plainModel.set(id2, data2, 1); await cacheModel.set(id2, data2, 1); const result2 = await plainModel.getByFields([['id', '=', id2]], {limit: 1}, undefined as any); const cacheResult2 = await cacheModel.getByFields([['id', '=', id2]], {limit: 1}); expect(result2.length).toEqual(1); expect(cacheResult2).toEqual(result2); const result3 = await plainModel.getByFields([], {limit: 2}, undefined as any); const cacheResult3 = await cacheModel.getByFields([], {limit: 2}); expect(result3.length).toEqual(2); expect(cacheResult3).toEqual(result3); }); it('update data', async () => { const datas = [ {id: '1', field1: 1}, {id: '2', field1: 2}, {id: '3', field1: 3}, ]; await plainModel.bulkUpdate(datas, 1); await cacheModel.bulkUpdate(datas, 1); const result3 = await plainModel.getByFields([], {limit: 10}, undefined as any); const cacheResult3 = await cacheModel.getByFields([], {limit: 10}); expect(result3.length).toEqual(3); expect(cacheResult3).toEqual(result3); }); it('delete data', async () => { await plainModel.bulkRemove(['1'], 1); await cacheModel.bulkRemove(['1'], 1); const result3 = await plainModel.getByFields([], {limit: 10}, undefined as any); const cacheResult3 = await cacheModel.getByFields([], {limit: 10}); expect(result3.length).toEqual(2); expect(cacheResult3).toEqual(result3); }); it('update with optional fields', async () => { // This test checks that `updateOnDuplicate` is correct, previously it would use Object.keys(data[0]) which would cause issues when later data has more keys, const data = [ {id: '1', field1: 1}, {id: '2', field1: 2}, ]; // Set some initial data await plainModel.bulkUpdate(data, 1); const initial2 = await plainModel.get('2'); expect(initial2).toEqual({id: '2', field1: 2}); // Set new data + update previous data const data2 = [ {id: '3'}, // Omit field1 because its optional {id: '2', field1: 3}, ]; await plainModel.bulkUpdate(data2, 2); const updated2 = await plainModel.get('2'); expect(updated2).toEqual({id: '2', field1: 3}); }); }); describe('alternative id types', () => { it('can store an entity with a numeric ID type', async () => { const modelFactory = sequelize.define( 'testModel2', { id: { type: DataTypes.INTEGER, primaryKey: true, }, field1: DataTypes.INTEGER, }, {timestamps: false, schema: schema} ); const model2 = await modelFactory.sync(); let i = 0; const plainModel = new PlainModel(model2 as any, false); const cacheModel = new CachedModel(model2 as any, false, new NodeConfig({} as any), () => i++); const numericData = { id: 1, field1: 1, } as unknown as Entity; await plainModel.set(numericData.id.toString(), numericData, 1); await cacheModel.set(numericData.id.toString(), numericData, 1); const result = await plainModel.get(numericData.id, undefined as any); expect(result).toEqual(numericData); const cacheResult = await cacheModel.get(numericData.id); expect(cacheResult).toEqual(numericData); const [getByResult] = await plainModel.getByFields([['field1', '=', 1] as any], {limit: 1}, undefined as any); expect(getByResult).toEqual(numericData); const [getByCachedResult] = await cacheModel.getByFields([['field1', '=', 1] as any], {limit: 1}); expect(getByCachedResult).toEqual(numericData); }); }); }); ================================================ FILE: packages/node-core/src/indexer/storeModelProvider/model/model.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import {FieldsExpression, GetOptions} from '@subql/types-core'; import {Op, Model, ModelStatic, Transaction, CreationAttributes, Sequelize} from '@subql/x-sequelize'; import {Fn} from '@subql/x-sequelize/types/utils'; import {HistoricalMode} from '../../types'; import {asTxExporter, Exporter, TransactionedExporter} from '../exporters'; import {getFullOptions, operatorsMap} from './utils'; export type BaseEntity = {id: string; __block_range?: (number | null)[] | Fn}; export interface IModel { model: Readonly>>; get(id: string, tx?: Transaction): Promise; getByFields(filters: FieldsExpression[], options: GetOptions, tx?: Transaction): Promise; set: (id: string, data: T, blockHeight: number, tx?: Transaction) => Promise; bulkCreate(data: T[], blockHeight: number, tx?: Transaction): Promise; bulkUpdate(data: T[], blockHeight: number, fields?: string[], tx?: Transaction): Promise; bulkRemove(ids: string[], blockHeight: number, tx?: Transaction): Promise; exporters: Exporter[]; } // All operations must be carried out within a transaction. export class PlainModel implements IModel { exporters: TransactionedExporter[] = []; constructor( readonly model: ModelStatic>, private readonly historical: HistoricalMode = 'height' ) {} async get(id: string, tx?: Transaction): Promise { const record = await this.model.findOne({ // https://github.com/sequelize/sequelize/issues/15179 where: {id} as any, transaction: tx, }); return record?.toJSON(); } async getByFields(filters: FieldsExpression[], options: GetOptions, tx?: Transaction): Promise { const fullOptions = getFullOptions(options); // Query DB with all params const records = await this.model.findAll({ where: { [Op.and]: [...filters.map(([field, operator, value]) => ({[field]: {[operatorsMap[operator]]: value}}))] as any, // Types not working properly }, limit: fullOptions.limit, offset: fullOptions.offset, order: [[fullOptions.orderBy as string, fullOptions.orderDirection]], transaction: tx, }); return records.map((r) => r.toJSON()); } async set(id: string, data: T, blockHeight: number, tx?: Transaction): Promise { await this.bulkUpdate([data], blockHeight, undefined, tx); } async bulkCreate(data: T[], blockHeight: number, tx?: Transaction): Promise { await this.bulkUpdate(data, blockHeight, undefined, tx); } async bulkUpdate(data: T[], blockHeight: number, fields?: string[], tx?: Transaction): Promise { if (!data.length) return; // TODO, understand why this happens, its also on the store cache if (fields) { throw new Error(`Currently not supported: update by fields`); } if (this.historical) { // To prevent the scenario of repeated created-deleted-created, which may result in multiple entries. await this.model.destroy({ where: { id: data.map((v) => v.id), [Op.and]: this.sequelize.where( this.sequelize.fn('lower', this.sequelize.col('_block_range')), Op.eq, blockHeight ), } as any, transaction: tx, }); await this.markAsDeleted( data.map((v) => v.id), blockHeight, tx ); } const allKeys = Object.keys(this.model.getAttributes()) as (keyof T)[]; await this.model.bulkCreate(data as CreationAttributes>[], { transaction: tx, updateOnDuplicate: allKeys, }); if (this.exporters.length) { // Include historical information const exportData = this.historical ? data.map((d) => ({...d, __block_range: [blockHeight]})) : data; await Promise.all(this.exporters.map((exporter) => exporter.export(exportData))); // Without a transaction, commit that data instantly if (!tx) { await Promise.all(this.exporters.map((exporter) => exporter.commit())); } } } async bulkRemove(ids: string[], blockHeight: number, tx?: Transaction): Promise { if (!ids.length) return; if (!this.historical) { await this.model.destroy({where: {id: ids} as any, transaction: tx}); } else { await this.markAsDeleted(ids, blockHeight, tx); } } private get sequelize(): Sequelize { const sequelize = this.model.sequelize; if (!sequelize) { throw new Error(`Sequelize is not available on ${this.model.name}`); } return sequelize; } private async markAsDeleted(ids: string[], blockHeight: number, tx?: Transaction): Promise { await this.model.update( { __block_range: this.sequelize.fn( 'int8range', this.sequelize.fn('lower', this.sequelize.col('_block_range')), blockHeight ), } as any, { hooks: false, where: { id: ids, __block_range: {[Op.contains]: blockHeight}, } as any, transaction: tx, } ); } addExporter(exporter: Exporter): void { this.exporters.push(asTxExporter(exporter)); } } ================================================ FILE: packages/node-core/src/indexer/storeModelProvider/model/utils.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import {FieldOperators, GetOptions} from '@subql/types-core'; import {Op} from '@subql/x-sequelize'; export const operatorsMap: Record = { '=': Op.eq, '!=': Op.ne, in: Op.in, '!in': Op.notIn, }; const defaultOptions: Required> = { offset: 0, limit: 100, orderBy: 'id', orderDirection: 'ASC', }; // Ensure we have all the options export const getFullOptions = (options?: GetOptions): Required> => ({ ...(defaultOptions as GetOptions), ...options, }) as Required>; ================================================ FILE: packages/node-core/src/indexer/storeModelProvider/poi/cachePoi.spec.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import {delay} from '@subql/common'; import {Op, Sequelize} from '@subql/x-sequelize'; import {PoiRepo} from '../../entities'; import {CachePoiModel} from './cachePoi'; const mockPoiRepo = (): PoiRepo => { const data: Record = {}; const ascKeys = () => (Object.keys(data) as any[] as number[]).sort((a: number, b: number) => a - b); const descKeys = () => [...ascKeys()].reverse(); return { findByPk: (key: number) => ({toJSON: () => data[key]}), findAll: ({limit, order, where}: any) => { const orderedKeys = order[0][1] === 'DESC' ? descKeys() : ascKeys(); const startHeight = where.id[Op.gte]; let filteredKeys: number[] = orderedKeys; if (startHeight !== undefined) { filteredKeys = orderedKeys.filter((key) => key >= startHeight); } else { const startHeight = where.id[Op.lte]; if (startHeight !== undefined) { filteredKeys = orderedKeys.filter((key) => key <= startHeight); } } return filteredKeys.slice(0, limit).map((key) => ({toJSON: () => data[key]})); }, findOne: ({order, where}: any) => { const orderedKeys = descKeys(); if (!orderedKeys.length) { return null; } if (!where) { return {toJSON: () => data[orderedKeys[0]]}; } // Only support null mmrRoot for (const key of orderedKeys) { if (data[key].mmrRoot !== null && data[key].mmrRoot !== undefined) { return {toJSON: () => data[key]}; } } return null; }, bulkCreate: (input: {id: number}[], opts: any) => input.map((d) => (data[d.id] = d)), destroy: (key: number) => { delete data[key]; }, } as any as PoiRepo; }; jest.mock('@subql/x-sequelize', () => { let data: Record = {}; let pendingData: typeof data = {}; let afterCommitHooks: Array<() => void> = []; const mSequelize = { authenticate: jest.fn(), define: () => ({ findOne: jest.fn(), create: (input: any) => input, }), query: () => [{nextval: 1}], sync: jest.fn(), transaction: () => ({ commit: jest.fn(async () => { await delay(1); data = {...data, ...pendingData}; pendingData = {}; afterCommitHooks.map((fn) => fn()); afterCommitHooks = []; }), // Delay of 1s is used to test whether we wait for cache to flush rollback: jest.fn(), afterCommit: jest.fn((fn) => afterCommitHooks.push(fn)), }), // createSchema: jest.fn(), }; const actualSequelize = jest.requireActual('@subql/x-sequelize'); return { ...actualSequelize, Sequelize: jest.fn(() => mSequelize), }; }); describe('CachePoi', () => { let poiRepo: PoiRepo; let cachePoi: CachePoiModel; let sequelize: Sequelize; beforeEach(() => { poiRepo = mockPoiRepo(); sequelize = new Sequelize(); cachePoi = new CachePoiModel(poiRepo); }); describe('clear poi', () => { it('should clear all if blockHeight not provided', () => { cachePoi.bulkUpsert([ {id: 5, chainBlockHash: '0x1234'}, {id: 30, chainBlockHash: '0x5678'}, {id: 120, chainBlockHash: '0x91011'}, ] as any); cachePoi.clear(); expect(cachePoi.flushableRecordCounter).toBe(0); expect((cachePoi as any).setCache).toStrictEqual({}); }); it('should clear with blockHeight', () => { cachePoi.bulkUpsert([ {id: 5, chainBlockHash: '0x1234'}, {id: 30, chainBlockHash: '0x5678'}, {id: 120, chainBlockHash: '0x91011'}, ] as any); cachePoi.clear(30); expect(cachePoi.flushableRecordCounter).toBe(1); // expect(cachePoi.getPoiById(120)).toBeDefined(); }); describe('getPoiBlocksBefore', () => { beforeEach(async () => { // Store data cachePoi.bulkUpsert([ {id: 1, chainBlockHash: '0x1111'}, {id: 2, chainBlockHash: '0x2222'}, {id: 3, chainBlockHash: '0x3333'}, {id: 4, chainBlockHash: '0x4444'}, ] as any); const tx = await sequelize.transaction(); await cachePoi.flush(tx, Number.MAX_SAFE_INTEGER /* Poi Doesn't use historical */); await tx.commit(); // Cache data cachePoi.bulkUpsert([ {id: 5, chainBlockHash: '0x1234'}, {id: 30, chainBlockHash: '0x5678'}, {id: 120, chainBlockHash: '0x91011'}, ] as any); }); it('should hit the cache first', async () => { const results = await cachePoi.getPoiBlocksBefore(50, {limit: 2}); expect(results.map((r) => r.id)).toEqual([30, 5]); }); it('should be able to get data from just the store', async () => { const results = await cachePoi.getPoiBlocksBefore(4); expect(results.map((r) => r.id)).toEqual([4, 3, 2, 1]); }); it('should be able to combine cache and store data', async () => { const results = await cachePoi.getPoiBlocksBefore(30); expect(results.map((r) => r.id)).toEqual([30, 5, 4, 3, 2, 1]); }); }); }); }); ================================================ FILE: packages/node-core/src/indexer/storeModelProvider/poi/cachePoi.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import {DEFAULT_FETCH_RANGE} from '@subql/common'; import {u8aToBuffer} from '@subql/utils'; import {Transaction} from '@subql/x-sequelize'; import {getLogger} from '../../../logger'; import {PoiRepo, ProofOfIndex} from '../../entities'; import {Cacheable} from '../cacheable'; import {ICachedModelControl} from '../types'; import {IPoi, PlainPoiModel} from './poi'; const logger = getLogger('PoiCache'); export class CachePoiModel extends Cacheable implements IPoi, ICachedModelControl { private setCache: Record = {}; flushableRecordCounter = 0; plainPoiModel: PlainPoiModel; constructor(readonly model: PoiRepo) { super(); this.plainPoiModel = new PlainPoiModel(model); } // eslint-disable-next-line @typescript-eslint/require-await async bulkUpsert(proofs: ProofOfIndex[]): Promise { for (const proof of proofs) { if (proof.chainBlockHash !== null) { proof.chainBlockHash = u8aToBuffer(proof.chainBlockHash); } if (proof.hash !== undefined) { proof.hash = u8aToBuffer(proof.hash); } if (proof.parentHash !== undefined) { proof.parentHash = u8aToBuffer(proof.parentHash); } this.setCache[proof.id] = proof; } } get isFlushable(): boolean { return !!Object.entries(this.setCache).length; } protected async runFlush(tx: Transaction, blockHeight?: number): Promise { logger.debug(`Flushing ${this.flushableRecordCounter} items from cache`); await Promise.all([ this.model.bulkCreate(Object.values(this.setCache), { transaction: tx, updateOnDuplicate: ['hash', 'parentHash'], }), ]); } clear(blockHeight?: number): void { if (!blockHeight) { this.setCache = {}; this.flushableRecordCounter = 0; return; } // Clear everything below the block height const cloneSetCache: Record = {}; for (const [n, p] of Object.entries(this.setCache)) { if (Number(n) > blockHeight) { cloneSetCache[Number(n)] = p; } } this.setCache = cloneSetCache; this.flushableRecordCounter = Object.entries(this.setCache).length; } async getPoiBlocksBefore( startHeight: number, options: {limit: number} = {limit: DEFAULT_FETCH_RANGE} ): Promise { await this.mutex.waitForUnlock(); // Use cached values and apply the same filter as store method const cachedValues = Object.values(this.setCache) .sort((a, b) => b.id - a.id) .filter((poi) => poi.id <= startHeight && poi.operationHashRoot !== null) .slice(0, options.limit); // Fill remaining values from the store const newOptions = {limit: options.limit - cachedValues.length}; // If we've already filled the limit, return just cached values if (newOptions.limit <= 0) { return cachedValues; } const storeValues = await this.plainPoiModel.getPoiBlocksBefore(startHeight, newOptions); return [...cachedValues, ...storeValues]; } } ================================================ FILE: packages/node-core/src/indexer/storeModelProvider/poi/index.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 export * from './cachePoi'; export * from './poi'; ================================================ FILE: packages/node-core/src/indexer/storeModelProvider/poi/poi.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import {DEFAULT_FETCH_RANGE} from '@subql/common'; import {u8aToBuffer} from '@subql/utils'; import {Op, Transaction} from '@subql/x-sequelize'; import {BlockRangeDtoInterface} from '../../../admin'; import {PoiRepo, ProofOfIndex} from '../../entities'; export const POI_ENTITY_NAME = '_poi'; export interface IPoi { model: PoiRepo; // TODO remove bulkUpsert(proofs: ProofOfIndex[], tx?: Transaction): Promise; /** * Gets the 100 blocks <= to the start height where there is an operation. * This can be used to determine the last blocks that had data to index. * */ getPoiBlocksBefore(startHeight: number): Promise; } // When using cockroach db, poi id is store in bigint format, and sequelize toJSON() can not convert id correctly (to string) // This will ensure after toJSON Poi id converted to number export function ensureProofOfIndexId(poi: ProofOfIndex): ProofOfIndex { if (typeof poi?.id === 'string') { poi.id = Number(poi.id); } return poi; } export class PlainPoiModel implements IPoi { constructor(readonly model: PoiRepo) {} async getFirst(): Promise { const result = await this.model.findOne({ order: [['id', 'ASC']], }); return result?.toJSON(); } async getPoiById(id: number): Promise { const result = await this.model.findByPk(id); if (result) { return ensureProofOfIndexId(result?.toJSON()); } return; } async getStartAndEndBlock(): Promise { const [startRecord, endRecord] = await Promise.all([ this.model.findOne({order: [['id', 'ASC']]}), this.model.findOne({order: [['id', 'DESC']]}), ]); if (startRecord === null || startRecord?.id === undefined || endRecord === null) { return undefined; } else { return { startBlock: startRecord.id, endBlock: endRecord.id, }; } } async getPoiBlocksByRange(startHeight: number, endHeight?: number): Promise { const result = await this.model.findAll({ limit: DEFAULT_FETCH_RANGE, where: endHeight !== undefined ? { id: {[Op.gte]: startHeight, [Op.lte]: endHeight}, } : {id: {[Op.gte]: startHeight}}, order: [['id', 'ASC']], }); return result.map((r) => ensureProofOfIndexId(r?.toJSON())); } async bulkUpsert(proofs: ProofOfIndex[], tx: Transaction): Promise { for (const proof of proofs) { if (proof.chainBlockHash !== null) { proof.chainBlockHash = u8aToBuffer(proof.chainBlockHash); } if (proof.hash !== undefined) { proof.hash = u8aToBuffer(proof.hash); } if (proof.parentHash !== undefined) { proof.parentHash = u8aToBuffer(proof.parentHash); } } // Only update hash/parentHash if the proof has synced values (not null) // This prevents overwriting existing synced POI with created-only POI const hasSyncedValues = proofs.some((p) => p.hash !== undefined && p.parentHash !== undefined); await this.model.bulkCreate(proofs, { transaction: tx, conflictAttributes: ['id'], updateOnDuplicate: hasSyncedValues ? ['hash', 'parentHash'] : [], }); } async getPoiBlocksBefore( startHeight: number, options: {limit: number} = {limit: DEFAULT_FETCH_RANGE} ): Promise { const result = await this.model.findAll({ limit: options.limit, where: { id: {[Op.lte]: startHeight}, operationHashRoot: {[Op.ne]: null}, }, order: [['id', 'DESC']], }); return result.map((r) => ensureProofOfIndexId(r?.toJSON())); } } ================================================ FILE: packages/node-core/src/indexer/storeModelProvider/setValueModel.spec.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import {SetValueModel} from './setValueModel'; describe('SetValueModel', () => { let model: SetValueModel; beforeEach(() => { model = new SetValueModel(); let n = 0; while (n < 5) { model.set(n.toString(), n, n); n++; } }); it('fromBelowHeight works', () => { expect(model.fromBelowHeight(5).getValues()).toEqual(model.getValues()); expect(model.fromBelowHeight(2).getValues()).toEqual([ {data: '0', startHeight: 0, endHeight: 1, operationIndex: 0, removed: false}, {data: '1', startHeight: 1, endHeight: null, operationIndex: 1, removed: false}, ]); }); it('fromAboveHeight works', () => { expect(model.fromAboveHeight(6).getValues()).toEqual([]); expect(model.fromAboveHeight(3).getValues()).toEqual([ {data: '4', startHeight: 4, endHeight: null, operationIndex: 4, removed: false}, ]); }); it('ignores removed data in matchesField', () => { expect(model.matchesField(['length', '=', 1])).toBeTruthy(); model.markAsRemoved(4); expect(model.matchesField(['length', '=', 1])).toBeFalsy(); }); it('matches with matchesField and arrays', () => { expect(model.matchesField(['length', 'in', [1, 2]])).toBeTruthy(); }); // it('matches with matchesField and undefined', () => { // expect(model.matchesField(['length', '=', undefined])).toBeFalsy(); // }); it('matches with matchesFields', () => { expect(model.matchesFields([['length', '=', 5]])).toBeFalsy(); const objectModel = new SetValueModel<{key: string; value: number}>(); let n = 0; while (n < 5) { objectModel.set({key: 'foo', value: n}, n, n); n++; } expect( objectModel.matchesFields([ ['key', '=', 'foo'], ['value', '=', 4], ]) ).toBeTruthy(); }); }); ================================================ FILE: packages/node-core/src/indexer/storeModelProvider/setValueModel.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import {FieldsExpression} from '@subql/types-core'; import {isEqual} from 'lodash'; import {SetValue} from './types'; export class SetValueModel { private historicalValues: SetValue[] = []; private _latestIndex = -1; popRecordWithOpIndex(operationIndex: number): SetValue | undefined { const opIndexInSetRecord = this.historicalValues.findIndex((v) => { return v.operationIndex === operationIndex; }); if (opIndexInSetRecord >= 0) { const setRecord = this.historicalValues[opIndexInSetRecord]; this.deleteFromHistorical(opIndexInSetRecord); return setRecord; } } set(data: T, blockHeight: number, operationIndex: number): void { const latestIndex = this.latestIndex(); if (latestIndex >= 0) { // Set multiple time within same block, replace with input data only if (this.historicalValues[latestIndex].startHeight === blockHeight) { this.historicalValues[latestIndex].data = data; this.historicalValues[latestIndex].endHeight = null; this.historicalValues[latestIndex].removed = false; } else if (this.historicalValues[latestIndex].startHeight > blockHeight) { throw new Error( `Can not set record with block height ${blockHeight} as data for future block heights has been set` ); } else { // close previous historicalValues record endHeight this.historicalValues[latestIndex].endHeight = blockHeight; this.create(data, blockHeight, operationIndex); } } else { this.create(data, blockHeight, operationIndex); } } latestIndex(): number { if (this.historicalValues.length === 0) { return -1; } else { // Expect latestIndex should always sync with array growth if (this.historicalValues.length - 1 !== this._latestIndex) { this._latestIndex = this.historicalValues.findIndex((value) => value.endHeight === null); } return this._latestIndex; } } // the latest record could be mark as removed // we need to handle return value in where this method called accordingly , rather than return undefined here. getLatest(): SetValue | undefined { const latestIndex = this.latestIndex(); if (latestIndex === -1) { return; } return this.historicalValues[latestIndex]; } getFirst(): SetValue | undefined { return this.historicalValues[0]; } getValues(): SetValue[] { return this.historicalValues; } fromBelowHeight(height: number): SetValueModel { const newModel = new SetValueModel(); newModel.historicalValues = this.historicalValues .filter((v) => v.startHeight < height) .map((v) => { if (v.endHeight && v.endHeight < height) { return v; } return { ...v, endHeight: null, }; }); return newModel; } fromAboveHeight(height: number): SetValueModel { const newModel = new SetValueModel(); newModel.historicalValues = this.historicalValues.filter((v) => v.startHeight > height); return newModel; } markAsRemoved(removeAtBlock: number): void { const latestIndex = this.latestIndex(); if (latestIndex === -1) { return; } this.historicalValues[latestIndex].endHeight = removeAtBlock; this.historicalValues[latestIndex].removed = true; } /** * If value is an array then it will do an OR operation * */ matchesField([field, matcher, value]: FieldsExpression): boolean { if (this.getLatest()?.removed) return false; const latestValue = this.getLatest()?.data?.[field]; switch (matcher) { case '=': return isEqual(latestValue, value); case '!=': return !isEqual(latestValue, value); case 'in': return latestValue !== undefined && value.includes(latestValue); case '!in': return latestValue !== undefined && !value.includes(latestValue); default: throw new Error(`Unsupported matcher "${matcher}"`); } } /** * Runs an AND operation over all the matchers * */ matchesFields(filters: FieldsExpression[]): boolean { return filters.every((filter) => this.matchesField(filter)); } private create(data: T, blockHeight: number, operationIndex: number): void { this.historicalValues.push({ data, startHeight: blockHeight, endHeight: null, operationIndex: operationIndex, removed: false, }); this._latestIndex += 1; } private deleteFromHistorical(index: number) { this.historicalValues.splice(index, 1); // remove a record, also means _latestIndex position need to -1 this._latestIndex -= 1; } } ================================================ FILE: packages/node-core/src/indexer/storeModelProvider/storeCache.service.spec.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import {EventEmitter2} from '@nestjs/event-emitter'; import {Sequelize} from '@subql/x-sequelize'; import {NodeConfig} from '../../configure'; import {delay} from '../../utils'; import {Exporter} from './exporters'; import {METADATA_ENTITY_NAME} from './metadata/utils'; import {BaseEntity, CachedModel} from './model'; import {StoreCacheService} from './storeCache.service'; const eventEmitter = new EventEmitter2(); type TestEntity = BaseEntity & {field1: string}; jest.mock('@subql/x-sequelize', () => { const mSequelize = { authenticate: jest.fn(), Op: { in: jest.fn(), notIn: jest.fn(), }, define: () => ({ findOne: jest.fn(), create: (input: any) => input, }), query: () => [{nextval: 1}], showAllSchemas: () => ['subquery_1'], model: (entity: string) => ({ upsert: jest.fn(), associations: [{}, {}], count: 5, findAll: jest.fn(() => [ { toJSON: () => ({ id: 'apple-05-sequelize', field1: 'set apple at block 5 with sequelize', }), }, ]), bulkCreate: jest.fn(), destroy: jest.fn(), getAttributes: jest.fn(() => ({id: null, field1: null})), }), sync: jest.fn(), transaction: () => { let afterCommits: Array<() => void> = []; return { commit: jest.fn(() => { afterCommits.forEach((fn) => fn()); afterCommits = []; return delay(1); }), // Delay of 1s is used to test whether we wait for cache to flush rollback: jest.fn(), afterCommit: (fn: () => void) => afterCommits.push(fn), }; }, // createSchema: jest.fn(), }; const actualSequelize = jest.requireActual('@subql/x-sequelize'); return { ...actualSequelize, Sequelize: jest.fn(() => mSequelize), }; }); jest.setTimeout(200000); describe('Store Cache Service historical', () => { let storeCacheService: StoreCacheService; const sequelize = new Sequelize(); const nodeConfig: NodeConfig = {} as any; beforeEach(() => { storeCacheService = new StoreCacheService(sequelize, nodeConfig, eventEmitter); }); it('could init store cache service and init cache for models', () => { storeCacheService.getModel('entity1'); expect((storeCacheService as any).cachedModels.entity1).toBeDefined(); expect((storeCacheService as any).cachedModels.entity2).toBeUndefined(); }); it('could set cache for multiple entities, also get from it', async () => { const entity1Model = storeCacheService.getModel('entity1'); const entity2Model = storeCacheService.getModel('entity2'); await entity1Model.set( 'entity1_id_0x01', { id: 'entity1_id_0x01', field1: 'set at block 1', }, 1 ); await entity2Model.set( 'entity2_id_0x02', { id: 'entity2_id_0x02', field1: 'set at block 2', }, 2 ); // check from cache expect((storeCacheService as any).cachedModels.entity1.setCache.entity1_id_0x01).toBeDefined(); const entity1Block1 = (await entity1Model.get('entity1_id_0x01')) as any; const entity2Block2 = (await entity2Model.get('entity2_id_0x02')) as any; expect(entity1Block1.field1).toBe('set at block 1'); expect(entity2Block2.field1).toBe('set at block 2'); }); // TODO move this test to cacheModel it('set at different block height, will create historical records', async () => { const appleModel = storeCacheService.getModel('apple'); await appleModel.set( 'apple-01', { id: 'apple-01', field1: 'set apple at block 1', }, 1 ); const appleEntity_b1 = await appleModel.get('apple-01'); expect(appleEntity_b1!.field1).toBe('set apple at block 1'); // Add new record, should create historical records for same id entity await appleModel.set( 'apple-01', { id: 'apple-01', field1: 'updated apple at block 5', }, 5 ); const appleEntity_b5 = (await appleModel.get('apple-01')) as any; expect(appleEntity_b5.field1).toBe('updated apple at block 5'); // Been pushed two records, the latest index should point to 1 expect((storeCacheService as any).cachedModels.apple.setCache['apple-01']._latestIndex).toBe(1); // Historical values const historicalValue = (storeCacheService as any).cachedModels.apple.setCache['apple-01'].historicalValues; // should close the range index 0 historical record expect(historicalValue[0].startHeight).toBe(1); expect(historicalValue[0].endHeight).toBe(5); // latest historical record endHeight should be null expect(historicalValue[1].startHeight).toBe(5); expect(historicalValue[1].endHeight).toBe(null); }); }); describe('Store Cache flush with order', () => { let storeCacheService: StoreCacheService; const sequelize = new Sequelize(); const nodeConfig: NodeConfig = {} as any; beforeEach(() => { storeCacheService = new StoreCacheService(sequelize, nodeConfig, eventEmitter); storeCacheService.init(false, {} as any, undefined); }); it('when set/remove multiple model entities, operation index should added to record in sequential order', async () => { const entity1Model = storeCacheService.getModel('entity1'); const entity2Model = storeCacheService.getModel('entity2'); await entity1Model.set( 'entity1_id_0x01', { id: 'entity1_id_0x01', field1: 'set at block 1', }, 1 ); await entity2Model.set( 'entity2_id_0x02', { id: 'entity2_id_0x02', field1: 'set at block 2', }, 2 ); await entity1Model.bulkRemove(['entity1_id_0x01'], 3); const entity1 = (storeCacheService as any).cachedModels.entity1; expect(entity1.removeCache.entity1_id_0x01.operationIndex).toBe(3); }); }); describe('Store Cache flush with non-historical', () => { let storeCacheService: StoreCacheService; const sequelize = new Sequelize(); const nodeConfig: NodeConfig = {disableHistorical: true} as any; beforeEach(() => { storeCacheService = new StoreCacheService(sequelize, nodeConfig, eventEmitter); storeCacheService.init(false, {} as any, undefined); }); it('Same Id with multiple operations, when flush it should always pick up the latest operation', async () => { const entity1Model = storeCacheService.getModel('entity1'); //create Id 1 await entity1Model.set( 'entity1_id_0x01', { id: 'entity1_id_0x01', field1: 'set at block 1', }, 1 ); // remove Id 1 and 2 await entity1Model.bulkRemove(['entity1_id_0x02'], 2); await entity1Model.bulkRemove(['entity1_id_0x01'], 3); // recreate id 1 again await entity1Model.set( 'entity1_id_0x01', { id: 'entity1_id_0x01', field1: 'set at block 5', }, 5 ); //simulate flush here const tx = await sequelize.transaction(); await (entity1Model as any).flush(tx, 5); const sequelizeModel1 = (entity1Model as any).model; const spyModel1Create = jest.spyOn(sequelizeModel1, 'bulkCreate'); const spyModel1Destroy = jest.spyOn(sequelizeModel1, 'destroy'); // Only last set record with block 5 is created expect(spyModel1Create).toHaveBeenCalledWith([{field1: 'set at block 5', id: 'entity1_id_0x01'}], { transaction: tx, updateOnDuplicate: ['id', 'field1'], }); // remove id 2 only expect(spyModel1Destroy).toHaveBeenCalledWith({transaction: tx, where: {id: ['entity1_id_0x02']}}); }); }); describe('Store cache upper threshold', () => { let storeCacheService: StoreCacheService; const sequelize = new Sequelize(); const nodeConfig = { storeCacheThreshold: 2, storeCacheUpperLimit: 10, } as NodeConfig; beforeEach(() => { storeCacheService = new StoreCacheService(sequelize, nodeConfig, eventEmitter); storeCacheService.init(false, {findByPk: () => Promise.resolve({toJSON: () => 1})} as any, undefined); }); it('doesnt wait for flushing cache when threshold not met', async () => { const entity1Model = storeCacheService.getModel('entity1'); for (let i = 0; i < 5; i++) { await entity1Model.set( `entity1_id_0x0${i}`, { id: `entity1_id_0x0${i}`, field1: 'set at block 1', }, 1 ); } const start = new Date().getTime(); await storeCacheService.flushAndWaitForCapacity(true); const end = new Date().getTime(); // Should be less than 1s, we're not waiting expect(end - start).toBeLessThan(1000); }); it('waits for flushing when threshold is met', async () => { const entity1Model = storeCacheService.getModel('entity1'); for (let i = 0; i < 15; i++) { await entity1Model.set( `entity1_id_0x0${i}`, { id: `entity1_id_0x0${i}`, field1: 'set at block 1', }, 1 ); } const start = new Date().getTime(); await storeCacheService.flushAndWaitForCapacity(true); const end = new Date().getTime(); // Should be more than 1s, we set the db tx.commit to take 1s expect(end - start).toBeGreaterThanOrEqual(1000); }); }); describe('Store cache', () => { let storeCacheService: StoreCacheService; const sequelize = new Sequelize(); const nodeConfig = {storeCacheTarget: 5, storeFlushInterval: 2} as NodeConfig; let targetHeight: number | undefined; beforeEach(() => { targetHeight = 103; storeCacheService = new StoreCacheService(sequelize, nodeConfig, eventEmitter); storeCacheService.init(false, {findByPk: () => Promise.resolve({toJSON: () => 1})} as any, undefined); (storeCacheService as any).cachedModels[METADATA_ENTITY_NAME] = { find(key: string) { switch (key) { case 'lastProcessedHeight': return 0; case 'targetHeight': return targetHeight; default: throw new Error(`Not supported by test: ${key}`); } }, }; }); describe('exporters', () => { // This makes sure exporting + flushing is atomic it('aborts the transaction if an exporter throws', async () => { const entity1Model = storeCacheService.getModel('entity1'); const errorExporter = { export: () => { return Promise.reject(new Error('Cant export')); }, shutdown: () => Promise.resolve(), } satisfies Exporter; for (let i = 0; i < 5; i++) { await entity1Model.set( `entity1_id_0x0${i}`, { id: `entity1_id_0x0${i}`, field1: 'set at block 1', }, 1 ); } (entity1Model as unknown as CachedModel).addExporter(errorExporter); await expect(() => storeCacheService.flushData(true)).rejects.toThrow('Cant export'); }); }); describe('flush interval', () => { let flushSpy: jest.SpyInstance, [forceFlush?: boolean | undefined]>; beforeEach(async () => { // Setup initial data that is flushed so we have a last flushed time const entity1Model = storeCacheService.getModel('entity1'); await entity1Model.set( 'entity1_id_0x01', { id: 'entity1_id_0x01', field1: 'set at block 1', }, 1 ); await storeCacheService.flushData(true); flushSpy = jest.spyOn(storeCacheService, 'flushData'); }); it('force flushes at an interval', async () => { let x = 0; while (x <= 12) { await storeCacheService.applyPendingChanges(x, false); await delay(0.1); x++; } expect(flushSpy).toHaveBeenCalledWith(true); }); it('always force flushes when near targetHeight', async () => { let x = 100; while (x < 105) { await storeCacheService.applyPendingChanges(x, false); await delay(0.1); x++; } expect(flushSpy).toHaveBeenCalledTimes(5); expect(flushSpy).toHaveBeenCalledWith(true); }); it('applies pending changes without a targetHeight set', async () => { targetHeight = undefined; let x = 100; while (x < 105) { await storeCacheService.applyPendingChanges(x, false); await delay(0.1); x++; } expect(flushSpy).toHaveBeenCalled(); }); it('can force flush above the target height', async () => { let x = 100; while (x < 105) { await storeCacheService.applyPendingChanges(x, false); await delay(0.1); x++; } expect(flushSpy).toHaveBeenCalledTimes(5); expect(flushSpy).toHaveBeenCalledWith(true); }); }); }); ================================================ FILE: packages/node-core/src/indexer/storeModelProvider/storeCache.service.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import assert from 'assert'; import {Injectable} from '@nestjs/common'; import {EventEmitter2} from '@nestjs/event-emitter'; import {DatabaseError, Deferrable, Sequelize} from '@subql/x-sequelize'; import {sum} from 'lodash'; import {NodeConfig} from '../../configure'; import {IndexerEvent} from '../../events'; import {getLogger} from '../../logger'; import {exitWithError} from '../../process'; import {profiler} from '../../profiler'; import {BaseCacheService} from './baseCache.service'; import {CsvExporter, Exporter} from './exporters'; import {CacheMetadataModel} from './metadata'; import {METADATA_ENTITY_NAME} from './metadata/utils'; import {CachedModel} from './model'; import {CachePoiModel, POI_ENTITY_NAME} from './poi'; import {IStoreModelProvider} from './types'; const logger = getLogger('StoreCacheService'); @Injectable() export class StoreCacheService extends BaseCacheService implements IStoreModelProvider { private readonly storeCacheThreshold: number; private readonly cacheUpperLimit: number; private _storeOperationIndex = 0; #lastFlushed: Date | undefined; constructor( private sequelize: Sequelize, private config: NodeConfig, protected eventEmitter: EventEmitter2 ) { super('StoreCache'); this.storeCacheThreshold = config.storeCacheThreshold; this.cacheUpperLimit = config.storeCacheUpperLimit; if (this.storeCacheThreshold > this.cacheUpperLimit) { exitWithError('Store cache threshold must be less than the store cache upper limit', logger); } } getNextStoreOperationIndex(): number { this._storeOperationIndex += 1; return this._storeOperationIndex; } protected createModel(entityName: string): CachedModel { const model = this.sequelize.model(entityName); assert(model, `model ${entityName} not exists`); const cachedModel = new CachedModel( model, this.historical, this.config, this.getNextStoreOperationIndex.bind(this) ); if (this.config.csvOutDir) { const exporterStore = new CsvExporter(entityName, this.config.csvOutDir); this.addExporter(cachedModel, exporterStore); } return cachedModel; } private addExporter(cachedModel: CachedModel, exporter: Exporter): void { cachedModel.addExporter(exporter); } get metadata(): CacheMetadataModel { if (!this.cachedModels[METADATA_ENTITY_NAME]) { if (!this.metadataRepo) { throw new Error('Metadata entity has not been set on store cache'); } this.cachedModels[METADATA_ENTITY_NAME] = new CacheMetadataModel(this.metadataRepo, this.historical); } return this.cachedModels[METADATA_ENTITY_NAME] as unknown as CacheMetadataModel; } get poi(): CachePoiModel | null { if (!this.cachedModels[POI_ENTITY_NAME]) { if (!this.poiRepo) { return null; // throw new Error('Poi entity has not been set on store cache'); } this.cachedModels[POI_ENTITY_NAME] = new CachePoiModel(this.poiRepo); } return this.cachedModels[POI_ENTITY_NAME] as unknown as CachePoiModel; } @profiler() async _flushCache(): Promise { this.#lastFlushed = new Date(); this.logger.debug('Flushing cache'); // With historical disabled we defer the constraints check so that it doesn't matter what order entities are modified const tx = await this.sequelize.transaction({ deferrable: this.historical ? undefined : Deferrable.SET_DEFERRED(), }); try { // Get the unit for historical const historicalUnit = await this.metadata.find( this.historical === 'timestamp' ? 'lastProcessedBlockTimestamp' : 'lastProcessedHeight' ); // Get models that have data to flush const updatableModels = Object.values(this.cachedModels).filter((m) => m.isFlushable); await Promise.all(updatableModels.map((model) => model.flush(tx, historicalUnit))); await tx.commit(); } catch (e: any) { if (e instanceof DatabaseError) { this.logger.warn(`Error: ${e}, Name: ${e.name}, Parent: ${e.parent}, Original: ${e.original}`); } this.logger.error(e, 'Database transaction failed, rolling back'); await tx.rollback(); throw e; } } _resetCache(): void { for (const model of Object.values(this.cachedModels)) { model.clear(); } } async flushAndWaitForCapacity(forceFlush?: boolean): Promise { const flushableRecords = this.flushableRecords; const pendingFlush = this.flushData(forceFlush); if (flushableRecords >= this.cacheUpperLimit) { await pendingFlush; } } get flushableRecords(): number { const numberOfPoiRecords = this.poi?.flushableRecordCounter ?? 0; return sum(Object.values(this.cachedModels).map((m) => m.flushableRecordCounter)) + numberOfPoiRecords; } isFlushable(): boolean { const numOfRecords = this.flushableRecords; this.eventEmitter.emit(IndexerEvent.StoreCacheRecordsSize, { value: numOfRecords, }); return numOfRecords >= this.storeCacheThreshold; } async applyPendingChanges(height: number, dataSourcesCompleted: boolean): Promise { const targetHeight = await this.metadata.find('targetHeight'); const nearTarget = !!targetHeight && height >= targetHeight - this.config.storeCacheTarget; // Flush if interval conditions are met or near the targetHeight const force = (this.#lastFlushed && this.config.storeFlushInterval > 0 && Date.now() >= this.#lastFlushed.getTime() + this.config.storeFlushInterval * 1000) || nearTarget; if (this.config.storeCacheAsync && !nearTarget) { // Flush all completed block data and don't wait await this.flushAndWaitForCapacity(force)?.catch((e) => { exitWithError(new Error(`Flushing cache failed`, {cause: e}), logger); }); } else { // Flush all data from cache and wait await this.flushData(force); } if (dataSourcesCompleted) { const msg = `All data sources have been processed up to block number ${height}. Exiting gracefully...`; await this.flushData(force); exitWithError(msg, logger, 0); } } } ================================================ FILE: packages/node-core/src/indexer/storeModelProvider/storeModel.service.spec.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import {delay} from '@subql/common'; import {NodeConfig} from '@subql/node-core/configure'; import {Sequelize} from '@subql/x-sequelize'; import {Exporter} from './exporters'; import {BaseEntity} from './model'; import {PlainStoreModelService} from './storeModel.service'; type TestEntity = BaseEntity & {field1: string}; jest.mock('@subql/x-sequelize', () => { const mSequelize = { authenticate: jest.fn(), Op: { in: jest.fn(), notIn: jest.fn(), }, define: () => ({ findOne: jest.fn(), create: (input: any) => input, }), query: () => [{nextval: 1}], showAllSchemas: () => ['subquery_1'], model: (entity: string) => ({ upsert: jest.fn(), associations: [{}, {}], count: 5, findAll: jest.fn(() => [ { toJSON: () => ({ id: 'apple-05-sequelize', field1: 'set apple at block 5 with sequelize', }), }, ]), bulkCreate: jest.fn(), destroy: jest.fn(), getAttributes: jest.fn(() => ({})), }), sync: jest.fn(), transaction: () => ({ commit: jest.fn(() => delay(1)), // Delay of 1s is used to test whether we wait for cache to flush rollback: jest.fn(), afterCommit: jest.fn(), }), // createSchema: jest.fn(), }; const actualSequelize = jest.requireActual('@subql/x-sequelize'); return { ...actualSequelize, Sequelize: jest.fn(() => mSequelize), }; }); const errorExporter = { export: () => { return Promise.reject(new Error('Cant export')); }, shutdown: () => Promise.resolve(), } satisfies Exporter; describe('StoreModelService', () => { let modelService: PlainStoreModelService; const sequelize = new Sequelize(); const nodeConfig = {} as NodeConfig; beforeEach(() => { modelService = new PlainStoreModelService(sequelize, nodeConfig); modelService.init(false, {findByPk: () => Promise.resolve({toJSON: () => 1})} as any, undefined); }); it('aborts the transaction if an exporter fails', async () => { const entity1Model = modelService.getModel('entity1'); const tx = await sequelize.transaction(); (modelService as any).addExporter(entity1Model, errorExporter); for (let i = 0; i < 5; i++) { await entity1Model.set( `entity1_id_0x0${i}`, { id: `entity1_id_0x0${i}`, field1: 'set at block 1', }, 1, tx ); } await expect(() => modelService.applyPendingChanges(1, false, tx)).rejects.toThrow('Cant export'); }); }); ================================================ FILE: packages/node-core/src/indexer/storeModelProvider/storeModel.service.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import {Injectable} from '@nestjs/common'; import {Sequelize, Transaction} from '@subql/x-sequelize'; import {NodeConfig} from '../../configure'; import {getLogger} from '../../logger'; import {exitWithError} from '../../process'; import {BaseStoreModelService} from './baseStoreModel.service'; import {CsvExporter, Exporter, isTxExporter} from './exporters'; import {MetadataModel} from './metadata/metadata'; import {METADATA_ENTITY_NAME} from './metadata/utils'; import {IModel} from './model'; import {PlainModel} from './model/model'; import {PlainPoiModel, POI_ENTITY_NAME} from './poi'; import {IStoreModelProvider} from './types'; const logger = getLogger('PlainStoreModelService'); @Injectable() export class PlainStoreModelService extends BaseStoreModelService> implements IStoreModelProvider { constructor( private sequelize: Sequelize, private config: NodeConfig ) { super(); } get metadata(): MetadataModel { if (!this.cachedModels[METADATA_ENTITY_NAME]) { if (!this.metadataRepo) { throw new Error('Metadata entity has not been set'); } this.cachedModels[METADATA_ENTITY_NAME] = new MetadataModel(this.metadataRepo) as any; } return this.cachedModels[METADATA_ENTITY_NAME] as unknown as MetadataModel; } get poi(): PlainPoiModel | null { if (!this.cachedModels[POI_ENTITY_NAME]) { if (!this.poiRepo) { return null; // throw new Error('Poi entity has not been set on store cache'); } this.cachedModels[POI_ENTITY_NAME] = new PlainPoiModel(this.poiRepo) as any; } return this.cachedModels[POI_ENTITY_NAME] as unknown as PlainPoiModel; } protected createModel(entityName: string): IModel { const model = this.sequelize.model(entityName); const plainModel = new PlainModel(model, this.historical); if (this.config.csvOutDir) { const exporterStore = new CsvExporter(entityName, this.config.csvOutDir); this.addExporter(plainModel, exporterStore); } return plainModel; } private addExporter(model: PlainModel, exporter: Exporter): void { model.addExporter(exporter); } async applyPendingChanges(height: number, dataSourcesCompleted: boolean, tx: Transaction): Promise { try { if (!tx) { exitWithError(new Error('Transaction not found'), logger, 1); } // Commit all data from exporters here to make exporting and commiting atomic await Promise.all( this.getAllExporters().map((exporter) => (isTxExporter(exporter) ? exporter.commit() : Promise.resolve())) ); await tx.commit(); if (dataSourcesCompleted) { const msg = `All data sources have been processed up to block number ${height}. Exiting gracefully...`; exitWithError(msg, logger, 0); } } catch (e) { await tx.rollback(); throw e; } } } ================================================ FILE: packages/node-core/src/indexer/storeModelProvider/types.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import {Transaction} from '@subql/x-sequelize'; import {LRUCache} from 'lru-cache'; import {ModifiedDbModels} from '../../db/migration-service'; import {MetadataRepo, PoiRepo} from '../entities'; import {HistoricalMode} from '../types'; import {IMetadata} from './metadata'; import {BaseEntity, IModel} from './model'; import {IPoi} from './poi'; import {SetValueModel} from './setValueModel'; export type HistoricalModel = {__block_range: any}; export interface IStoreModelProvider { poi: IPoi | null; metadata: IMetadata; init(historical: HistoricalMode, meta: MetadataRepo, poi?: PoiRepo): void; getModel(entity: string): IModel; applyPendingChanges(height: number, dataSourcesCompleted: boolean, tx?: Transaction): Promise; updateModels(changes: ModifiedDbModels): void; } export interface ICachedModelControl { isFlushable: boolean; hasAssociations?: boolean; flushableRecordCounter: number; flush(tx: Transaction, blockHeight?: number): Promise; flushOperation?(i: number, tx: Transaction): Promise; /** * * @param blockHeight if present, clear data that <= ${blockHeight} */ clear: (blockHeight?: number) => void; } export type FilteredHeightRecords = { removeRecords: Record; setRecords: SetData; }; export type EntitySetData = Record>; export type GetValue = { // Null value indicates its not defined in the db data: T | null; // Future-proof to allow meta for clearing cache }; export type RemoveValue = { removedAtBlock: number; operationIndex: number; }; export type SetValue = { data: T; startHeight: number; endHeight: number | null; operationIndex: number; removed: boolean; }; export type SetData = Record>; export class GetData> extends LRUCache {} ================================================ FILE: packages/node-core/src/indexer/storeModelProvider/utils.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import {EventEmitter2} from '@nestjs/event-emitter'; import {Sequelize} from '@subql/x-sequelize'; import {NodeConfig} from '../../configure'; import {StoreCacheService} from './storeCache.service'; import {PlainStoreModelService} from './storeModel.service'; import {IStoreModelProvider} from './types'; export async function cacheProviderFlushData(modelProvider: IStoreModelProvider, forceFlush?: boolean): Promise { if (modelProvider instanceof StoreCacheService) { await modelProvider.flushData(forceFlush); } } export async function cacheProviderResetData(modelProvider: IStoreModelProvider): Promise { if (modelProvider instanceof StoreCacheService) { await modelProvider.resetData(); } } export function storeModelFactory( nodeConfig: NodeConfig, eventEmitter: EventEmitter2, sequelize: Sequelize ): IStoreModelProvider { return nodeConfig.enableCache ? new StoreCacheService(sequelize, nodeConfig, eventEmitter) : new PlainStoreModelService(sequelize, nodeConfig); } ================================================ FILE: packages/node-core/src/indexer/test.runner.spec.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import {Sequelize} from '@subql/x-sequelize'; import {TestRunner} from './test.runner'; jest.mock('@subql/x-sequelize'); const mockStoreCache = { flushCache: jest.fn().mockResolvedValue(undefined), metadata: {set: jest.fn()}, }; describe('TestRunner', () => { let testRunner: TestRunner; let sequelizeMock: jest.Mocked; let apiServiceMock: any; let storeServiceMock: any; let sandboxMock: any; beforeEach(() => { sequelizeMock = new Sequelize() as any; apiServiceMock = { fetchBlocks: jest.fn().mockResolvedValue([{getHeader: jest.fn()}]), }; storeServiceMock = { setBlockHeader: jest.fn(), getStore: jest.fn().mockReturnValue({}), modelProvider: mockStoreCache, }; sandboxMock = { freeze: jest.fn(), }; testRunner = new TestRunner( apiServiceMock, // apiService storeServiceMock, // storeService sequelizeMock, {} as any, // nodeConfig {} as any // indexerManager ); }); afterEach(() => { jest.clearAllMocks(); }); it('cleans the database after each test run', async () => { const testMock = { name: 'test1', blockHeight: 1, handler: 'handler1', expectedEntities: [], dependentEntities: [], }; const indexBlock = jest.fn().mockResolvedValue(undefined); await testRunner.runTest(testMock, sandboxMock, indexBlock); expect(sequelizeMock.dropSchema).toHaveBeenCalledTimes(1); expect(sequelizeMock.dropSchema).toHaveBeenCalledWith(expect.any(String), { logging: false, benchmark: false, }); }); it('increments passedTests when expected and actual entity attributes match', async () => { const expectedEntity = { _name: 'Entity1', id: '1', attr: 'value', }; const testMock = { name: 'test1', blockHeight: 1, handler: 'handler1', expectedEntities: [expectedEntity], dependentEntities: [], }; const indexBlock = jest.fn().mockResolvedValue(undefined); storeServiceMock.getStore = () => ({ get: jest.fn().mockResolvedValue(expectedEntity), }); const res = await testRunner.runTest(testMock, sandboxMock, indexBlock); expect(res.passedTests).toBe(1); }); it('increments failedTests when expected and actual entity attributes do not match', async () => { const expectedEntity = { _name: 'Entity1', id: '1', attr: 'expectedValue', }; const actualEntity = { _name: 'Entity1', id: '1', attr: 'actualValue', }; const testMock = { name: 'test1', blockHeight: 1, handler: 'handler1', expectedEntities: [expectedEntity], dependentEntities: [], }; const indexBlock = jest.fn().mockResolvedValue(undefined); storeServiceMock.getStore = () => ({ get: jest.fn().mockResolvedValue(actualEntity), }); const res = await testRunner.runTest(testMock, sandboxMock, indexBlock); expect(res.failedTests).toBe(1); }); it('increments failedTests when indexBlock throws an error', async () => { const testMock = { name: 'test1', blockHeight: 1, handler: 'handler1', expectedEntities: [], dependentEntities: [], }; const indexBlock = jest.fn().mockRejectedValue(new Error('Test error')); const res = await testRunner.runTest(testMock, sandboxMock, indexBlock); expect(res.failedTests).toBe(1); const summary = res.failedTestSummary; expect(summary?.testName).toEqual(testMock.name); expect(summary?.entityId).toBeUndefined(); expect(summary?.entityName).toBeUndefined(); expect(summary?.failedAttributes[0]).toEqual(expect.stringMatching(/^Runtime Error:\nError: Test error/)); }); it('gives a sufficient error for timestamps within MS of each other', async () => { const expectedEntity = { _name: 'Entity1', id: '1', timestamp: new Date(1000), }; const actualEntity = { _name: 'Entity1', id: '1', timestamp: new Date(1001), }; const testMock = { name: 'test1', blockHeight: 1, handler: 'handler1', expectedEntities: [expectedEntity], dependentEntities: [], }; const indexBlock = jest.fn().mockResolvedValue(undefined); storeServiceMock.getStore = () => ({ get: jest.fn().mockResolvedValue(actualEntity), }); const res = await testRunner.runTest(testMock, sandboxMock, indexBlock); expect(res.failedTests).toBe(1); const summary = res.failedTestSummary; expect(summary?.testName).toEqual(testMock.name); expect(summary?.entityId).toEqual(expectedEntity.id); expect(summary?.entityName).toEqual(expectedEntity._name); expect(summary?.failedAttributes[0]).toEqual( `\t\tattribute: "timestamp":\n\t\t\texpected: "1970-01-01T00:00:01.000Z"\n\t\t\tactual: "1970-01-01T00:00:01.001Z"\n` ); }); it('increments error if a block fails to be fetched', async () => { const expectedEntity = { _name: 'Entity1', id: '1', attr: 'value', }; const testMock = { name: 'test1', blockHeight: 1, handler: 'handler1', expectedEntities: [expectedEntity], dependentEntities: [], }; apiServiceMock.fetchBlocks = jest.fn().mockRejectedValue(new Error('Failed to fetch block')); const indexBlock = jest.fn().mockResolvedValue(undefined); const res = await testRunner.runTest(testMock, sandboxMock, indexBlock); expect(res.failedTests).toBe(2); expect(res.failedTestSummary?.failedAttributes[0]).toContain('Failed to fetch block'); }); }); ================================================ FILE: packages/node-core/src/indexer/test.runner.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import {Inject, Injectable} from '@nestjs/common'; import {SubqlTest} from '@subql/testing'; import {Sequelize} from '@subql/x-sequelize'; import chalk from 'chalk'; import {isEqual} from 'lodash'; import {IApi} from '../api.service'; import {NodeConfig} from '../configure/NodeConfig'; import {getLogger} from '../logger'; import {TestSandbox} from './sandbox'; import {StoreService} from './store.service'; import {cacheProviderFlushData} from './storeModelProvider'; import {IBlock, IIndexerManager} from './types'; const logger = getLogger('test-runner'); export interface FailedTestSummary { testName: string; entityId: string | undefined; entityName: string | undefined; failedAttributes: string[]; } @Injectable() export class TestRunner { private failedTestSummary: FailedTestSummary | undefined; private passedTests = 0; private failedTests = 0; constructor( @Inject('APIService') protected readonly apiService: IApi[]>, protected readonly storeService: StoreService, protected readonly sequelize: Sequelize, protected readonly nodeConfig: NodeConfig, @Inject('IIndexerManager') protected readonly indexerManager: IIndexerManager ) {} private async fetchBlock(height: number, test: SubqlTest): Promise> { try { const [block] = await this.apiService.fetchBlocks([height]); return block; } catch (e: any) { logger.warn(`Test: ${test.name} field due to fetch block error`, e); this.failedTestSummary = { testName: test.name, entityId: undefined, entityName: undefined, failedAttributes: [`Fetch Block Error:\n${e.message}`], }; this.failedTests++; throw e; } } async runTest( test: SubqlTest, sandbox: TestSandbox, indexBlock: ( block: IBlock, handler: string, indexerManager: IIndexerManager, apiService?: IApi[]> ) => Promise ): Promise<{ passedTests: number; failedTests: number; failedTestSummary: FailedTestSummary | undefined; }> { const schema = this.nodeConfig.dbSchema; try { // Fetch block logger.debug('Fetching block'); const block = await this.fetchBlock(test.blockHeight, test); await this.storeService.setBlockHeader(block.getHeader()); // Ensure a block height is set so that data is flushed correctly await this.storeService.modelProvider.metadata.set('lastProcessedHeight', test.blockHeight - 1); const store = this.storeService.getStore(); sandbox.freeze(store, 'store'); // Init entities logger.debug('Initializing entities'); await Promise.all(test.dependentEntities.map((entity) => entity.save?.() ?? Promise.resolve())); logger.debug('Running handler'); try { await indexBlock(block, test.handler, this.indexerManager, this.apiService); await cacheProviderFlushData(this.storeService.modelProvider, true); } catch (e: any) { logger.warn(`Test: ${test.name} field due to runtime error`, e); this.failedTestSummary = { testName: test.name, entityId: undefined, entityName: undefined, failedAttributes: [`Runtime Error:\n${e.stack}`], }; this.failedTests++; throw e; } // Check expected entities logger.debug('Checking expected entities'); for (let i = 0; i < test.expectedEntities.length; i++) { const expectedEntity = test.expectedEntities[i]; //eslint-disable-next-line @typescript-eslint/no-non-null-assertion const actualEntity = await store.get(expectedEntity._name!, expectedEntity.id); const failedAttributes: string[] = []; if (!actualEntity) { failedAttributes.push(`\t\tExpected entity was not found`); } else { Object.keys(actualEntity).forEach((attr) => { // EntityClass has private store on it, don't need to check it. if (attr === '#store') return; const expectedAttr = (expectedEntity as Record)[attr] ?? null; const actualAttr = (actualEntity as Record)[attr] ?? null; if (!isEqual(expectedAttr, actualAttr)) { // Converts dates into a format so that ms is visible const fmtValue = (value: any) => { if (value instanceof Date) { return value.toISOString(); } return value; }; failedAttributes.push( `\t\tattribute: "${attr}":\n\t\t\texpected: "${fmtValue(expectedAttr)}"\n\t\t\tactual: "${fmtValue( actualAttr )}"\n` ); } }); } if (!failedAttributes.length) { logger.info(`Entity check PASSED (Entity ID: ${expectedEntity.id})`); this.passedTests++; } else { logger.warn(`Entity check FAILED (Entity ID: ${expectedEntity.id})`); this.failedTestSummary = { testName: test.name, entityId: expectedEntity.id, entityName: expectedEntity._name, failedAttributes: failedAttributes, }; this.failedTests++; } } await cacheProviderFlushData(this.storeService.modelProvider, true); logger.info( `Test: ${test.name} completed with ${chalk.green(`${this.passedTests} passed`)} and ${chalk.red( `${this.failedTests} failed` )} checks` ); } catch (e: any) { this.failedTests += test.expectedEntities.length; logger.warn(e, `Test ${test.name} failed to run`); } finally { await this.sequelize.dropSchema(`"${schema}"`, { logging: false, benchmark: false, }); } return { passedTests: this.passedTests, failedTests: this.failedTests, failedTestSummary: this.failedTestSummary, }; } } ================================================ FILE: packages/node-core/src/indexer/testing.service.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import {existsSync, readdirSync, statSync} from 'fs'; import path from 'path'; import {Injectable} from '@nestjs/common'; import {SubqlTest} from '@subql/testing/interfaces'; import {BaseDataSource, IProjectNetworkConfig} from '@subql/types-core'; import chalk from 'chalk'; import {cloneDeep} from 'lodash'; import {NodeConfig} from '../configure'; import {getLogger} from '../logger'; import {SandboxOption, TestSandbox} from './sandbox'; import {TestRunner} from './test.runner'; import {ISubqueryProject, IIndexerManager, IBlock} from './types'; const logger = getLogger('subql-testing'); @Injectable() export abstract class TestingService { private tests: Record = {}; private testSandboxes: TestSandbox[]; private failedTestsSummary: { testName: string; entityId?: string; entityName?: string; failedAttributes: string[]; }[] = []; private totalTests = 0; private totalPassedTests = 0; private totalFailedTests = 0; constructor( protected nodeConfig: NodeConfig, protected project: ISubqueryProject ) { const projectPath = this.project.root; // find all paths to test files const testFiles = this.findAllTestFiles(path.join(projectPath, 'dist')); // import all test files this.testSandboxes = testFiles.map((file) => { const option: SandboxOption = { root: this.project.root, entry: file, chainId: this.project.network.chainId, }; return new TestSandbox(option, this.nodeConfig); }); logger.info(`Found ${this.testSandboxes.length} test files`); this.tests = this.testSandboxes.map((sandbox) => sandbox.getTests()); } abstract getTestRunner(): Promise<[close: () => Promise, runner: TestRunner]>; // TestRunner will be create with a new app instance async indexBlock(block: IBlock, handler: string, indexerManager: IIndexerManager): Promise { await indexerManager.indexBlock(block, this.getDsWithHandler(handler)); } async run(): Promise { if (Object.keys(this.tests).length !== 0) { for (const sandboxIndex in this.tests) { const tests = this.tests[sandboxIndex]; this.totalTests += tests.length; for (const test of tests) { await this.runTest(test, this.testSandboxes[sandboxIndex]); } } this.logFailedTestsSummary(); } else { const docsUrl = 'https://academy.subquery.network/build/testing.html#the-subquery-testing-framework'; logger.warn( `No tests found. Please refer to the documentation for guidance on creating and running tests: ${docsUrl}` ); } } private findAllTestFiles(dirPath: string): string[] { const files: string[] = []; if (!existsSync(dirPath)) { return []; } readdirSync(dirPath).forEach((file) => { const filePath = path.join(dirPath, file); const stat = statSync(filePath); if (stat.isDirectory()) { files.push(...this.findAllTestFiles(filePath)); } else if (filePath.endsWith('.test.js')) { files.push(filePath); } }); return files; } private async runTest(test: SubqlTest, sandbox: TestSandbox) { logger.info(`Starting test: ${test.name}`); const [close, testRunner] = await this.getTestRunner(); try { const {failedTestSummary, failedTests, passedTests} = await testRunner.runTest( test, sandbox, this.indexBlock.bind(this) ); if (failedTests > 0) { this.totalFailedTests++; } else { this.totalPassedTests++; } if (failedTestSummary) { this.failedTestsSummary.push(failedTestSummary); } } finally { await close(); } } protected getDsWithHandler(handler: string): DS[] { const dataSources: DS[] = []; for (const ds of this.project.dataSources) { // Create a deep copy of the ds object const dsCopy = cloneDeep(ds); const mapping = dsCopy.mapping; const handlers = mapping.handlers; for (let i = 0; i < handlers.length; i++) { if (handlers[i].handler === handler) { mapping.handlers = [handlers[i] as any]; dataSources.push(ds); } } } if (!dataSources.length) { throw new Error( `Unable to find any datasources that match handler "${handler}". Please check your project.yaml file.` ); } return dataSources; } private logFailedTestsSummary() { if (this.failedTestsSummary.length > 0) { logger.warn(chalk.bold.underline.yellow('Failed tests summary:')); for (const failedTest of this.failedTestsSummary) { let testDetails = failedTest.entityName && failedTest.entityId ? chalk.bold.red(`\n* ${failedTest.testName}\n\tEntity ${failedTest.entityName}: ${failedTest.entityId}\n`) : chalk.bold.red(`\n* ${failedTest.testName}\n`); for (const attr of failedTest.failedAttributes) { testDetails += chalk.red(attr); } logger.warn(testDetails); } } logger.info(chalk.bold.white(`Total tests: ${this.totalTests}`)); logger.info(chalk.bold.green(`Passing tests: ${this.totalPassedTests}`)); logger.info(chalk.bold.red(`Failing tests: ${this.totalFailedTests}`)); if (this.totalFailedTests > 0) { process.exit(1); } } } ================================================ FILE: packages/node-core/src/indexer/types.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import { BaseDataSource, BaseTemplateDataSource, CommonSubqueryProject, Entity, IProjectNetworkConfig, } from '@subql/types-core'; import {GraphQLSchema} from 'graphql'; import {BlockHeightMap} from '../utils/blockHeightMap'; import {ProcessBlockResponse} from './blockDispatcher'; /** * Indicates the mode of historical indexing * false: No historical indexing * height: Indexing is based on block height * timestamp: Indexing is based on the unix timestamp in MS of the block */ export type HistoricalMode = false | 'height' | 'timestamp'; export interface ISubqueryProject< N extends IProjectNetworkConfig = IProjectNetworkConfig, DS extends BaseDataSource = BaseDataSource, T extends BaseTemplateDataSource = BaseTemplateDataSource, C = unknown, > extends Omit, 'schema' | 'version' | 'name' | 'specVersion' | 'description'> { readonly schema: GraphQLSchema; applyCronTimestamps: (getBlockTimestamp: (height: number) => Promise) => Promise; readonly id: string; chainTypes?: C; // The chainTypes after loaded readonly root: string; } export enum OperationType { Set = 'Set', Remove = 'Remove', } export type OperationEntity = { operation: OperationType; entityType: string; data: Entity | string; }; export interface IIndexerManager { indexBlock(block: IBlock, datasources: DS[], ...args: any[]): Promise; } export interface IProjectService { blockOffset: number | undefined; startHeight: number; bypassBlocks: BypassBlocks; reindex(lastCorrectHeader: Header): Promise; /** * This is used everywhere but within indexing blocks, see comment on getDataSources for more info * */ getAllDataSources(): DS[]; /** * This gets used when indexing blocks, it needs to be async to ensure dynamicDs is updated within workers * * */ getDataSources(blockHeight?: number): Promise; getStartBlockFromDataSources(): number; getDataSourcesMap(): BlockHeightMap; hasDataSourcesAfterHeight(height: number): boolean; } export interface IBlock { getHeader(): Header; block: B; } export type Header = { blockHeight: number; blockHash: string; parentHash: string | undefined; timestamp: Date; }; export type BypassBlocks = (number | `${number}-${number}`)[]; ================================================ FILE: packages/node-core/src/indexer/unfinalizedBlocks.service.spec.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import {EventEmitter2} from '@nestjs/event-emitter'; import {IBlockchainService} from '../blockchain.service'; import {Header, IBlock} from '../indexer'; import {StoreCacheService, CacheMetadataModel} from './storeModelProvider'; import { METADATA_LAST_FINALIZED_PROCESSED_KEY, METADATA_UNFINALIZED_BLOCKS_KEY, UnfinalizedBlocksService, } from './unfinalizedBlocks.service'; /* Notes: * Block hashes all have the format '0xabc' + block number * If they are forked they will have an `f` at the end */ let mockBestHeight = 150; const BlockchainService = { async getFinalizedHeader(): Promise

{ return Promise.resolve({ blockHeight: 91, blockHash: `0xabc91f`, parentHash: `0xabc90f`, timestamp: new Date(), }); }, async getHeaderForHash(hash: string): Promise
{ const num = Number(hash.toString().replace('0xabc', '').replace('f', '')); return Promise.resolve({ blockHeight: num, blockHash: hash, parentHash: `0xabc${num - 1}f`, timestamp: new Date(), }); }, async getHeaderForHeight(height: number): Promise
{ return Promise.resolve({ blockHeight: height, blockHash: `0xabc${height}f`, parentHash: `0xabc${height - 1}f`, timestamp: new Date(), }); }, // eslint-disable-next-line @typescript-eslint/require-await async getBestHeight(): Promise { return mockBestHeight; }, } as IBlockchainService; function getMockMetadata(): any { const data: Record = {}; return { upsert: ({key, value}: any) => (data[key] = value), findOne: ({where: {key}}: any) => ({value: data[key]}), findByPk: (key: string) => data[key], find: (key: string) => data[key], } as any; } function mockStoreCache(): StoreCacheService { return { metadata: new CacheMetadataModel(getMockMetadata(), 'height'), } as StoreCacheService; } function mockBlock(height: number, hash: string, parentHash?: string): IBlock { return { getHeader: () => { return {blockHeight: height, parentHash: parentHash ?? '', blockHash: hash, timestamp: new Date()}; }, block: { header: { blockHeight: height, blockHash: hash, parentHash: parentHash ?? '', }, }, }; } describe('UnfinalizedBlocksService', () => { let unfinalizedBlocksService: UnfinalizedBlocksService; beforeEach(async () => { mockBestHeight = 150; unfinalizedBlocksService = new UnfinalizedBlocksService( {unfinalizedBlocks: true} as any, mockStoreCache(), BlockchainService ); await unfinalizedBlocksService.init(() => Promise.resolve()); }); afterEach(() => { (unfinalizedBlocksService as unknown as any)._unfinalizedBlocks = {}; }); it('can set finalized block', () => { unfinalizedBlocksService.registerFinalizedBlock(mockBlock(110, '0xabcd').block.header); expect((unfinalizedBlocksService as any).finalizedBlockNumber).toBe(110); }); it('cant set a lower finalized block', () => { unfinalizedBlocksService.registerFinalizedBlock(mockBlock(110, '0xabcd').block.header); unfinalizedBlocksService.registerFinalizedBlock(mockBlock(99, '0x1234').block.header); expect((unfinalizedBlocksService as any).finalizedBlockNumber).toBe(110); }); it('keeps track of unfinalized blocks', async () => { unfinalizedBlocksService.registerFinalizedBlock(mockBlock(110, '0xabcd').block.header); await unfinalizedBlocksService.processUnfinalizedBlocks(mockBlock(111, '0xabc111')); await unfinalizedBlocksService.processUnfinalizedBlocks(mockBlock(112, '0xabc112')); expect((unfinalizedBlocksService as any).unfinalizedBlocks).toMatchObject([ mockBlock(111, '0xabc111').block.header, mockBlock(112, '0xabc112').block.header, ]); }); it('doesnt keep track of finalized blocks', async () => { unfinalizedBlocksService.registerFinalizedBlock(mockBlock(120, '0xabc120').block.header); await unfinalizedBlocksService.processUnfinalizedBlocks(mockBlock(111, '0xabc111')); await unfinalizedBlocksService.processUnfinalizedBlocks(mockBlock(112, '0xabc112')); expect((unfinalizedBlocksService as any).unfinalizedBlocks).toEqual([]); }); it('can process unfinalized blocks', async () => { unfinalizedBlocksService.registerFinalizedBlock(mockBlock(110, '0xabcd').block.header); await unfinalizedBlocksService.processUnfinalizedBlocks(mockBlock(111, '0xabc111')); await unfinalizedBlocksService.processUnfinalizedBlocks(mockBlock(112, '0xabc112')); unfinalizedBlocksService.registerFinalizedBlock(mockBlock(112, '0xabc112', '0xabc111').block.header); await unfinalizedBlocksService.processUnfinalizedBlocks(mockBlock(113, '0xabc113')); expect((unfinalizedBlocksService as any).unfinalizedBlocks).toMatchObject([ mockBlock(113, '0xabc113').block.header, ]); }); it('can handle a fork and rewind to the last finalized height', async () => { unfinalizedBlocksService.registerFinalizedBlock(mockBlock(110, '0xabcd').block.header); await unfinalizedBlocksService.processUnfinalizedBlocks(mockBlock(111, '0xabc111')); await unfinalizedBlocksService.processUnfinalizedBlocks(mockBlock(112, '0xabc112')); // Forked block unfinalizedBlocksService.registerFinalizedBlock(mockBlock(112, '0xabc112f', '0xabc111').block.header); const res = await unfinalizedBlocksService.processUnfinalizedBlocks(mockBlock(113, '0xabc113')); // Last valid block expect(res).toMatchObject({blockHash: '0xabc111', blockHeight: 111, parentHash: ''}); // After this the call stack is something like: // indexerManager -> blockDispatcher -> project -> project -> reindex -> blockDispatcher.resetUnfinalizedBlocks await unfinalizedBlocksService.resetUnfinalizedBlocks(); expect((unfinalizedBlocksService as any).unfinalizedBlocks).toEqual([]); }); it('can handle a fork when some unfinalized blocks are invalid', async () => { unfinalizedBlocksService.registerFinalizedBlock(mockBlock(110, '0xabcd').block.header); await unfinalizedBlocksService.processUnfinalizedBlocks(mockBlock(111, '0xabc111')); await unfinalizedBlocksService.processUnfinalizedBlocks(mockBlock(112, '0xabc112')); await unfinalizedBlocksService.processUnfinalizedBlocks(mockBlock(113, '0xabc113')); await unfinalizedBlocksService.processUnfinalizedBlocks(mockBlock(114, '0xabc114')); await unfinalizedBlocksService.processUnfinalizedBlocks(mockBlock(115, '0xabc115')); await unfinalizedBlocksService.processUnfinalizedBlocks(mockBlock(116, '0xabc116')); // Forked block unfinalizedBlocksService.registerFinalizedBlock(mockBlock(113, '0xabc113f', '0xabc112').block.header); const res = await unfinalizedBlocksService.processUnfinalizedBlocks(mockBlock(117, '0xabc117')); // Last valid block expect(res).toMatchObject({blockHash: '0xabc112', blockHeight: 112, parentHash: ''}); }); it('can handle a fork when latest unfinalized block has different parent', async () => { unfinalizedBlocksService.registerFinalizedBlock(mockBlock(110, '0xabcd').block.header); await unfinalizedBlocksService.processUnfinalizedBlocks(mockBlock(111, '0xabc111', '0xabcd')); await unfinalizedBlocksService.processUnfinalizedBlocks(mockBlock(112, '0xabc112', '0xabc111')); await unfinalizedBlocksService.processUnfinalizedBlocks(mockBlock(113, '0xabc113', '0xabc112')); await unfinalizedBlocksService.processUnfinalizedBlocks(mockBlock(114, '0xabc114', '0xabc113')); await unfinalizedBlocksService.processUnfinalizedBlocks(mockBlock(115, '0xabc115', '0xabc114')); const res = await unfinalizedBlocksService.processUnfinalizedBlocks(mockBlock(116, '0xabc116', '0xabc115f')); // Last valid block expect(res).toMatchObject({blockHash: '0xabc110f', blockHeight: 110, parentHash: '0xabc109f'}); }); it('can handle a fork when all unfinalized blocks are invalid', async () => { unfinalizedBlocksService.registerFinalizedBlock(mockBlock(110, '0xabcd').block.header); await unfinalizedBlocksService.processUnfinalizedBlocks(mockBlock(111, '0xabc111')); await unfinalizedBlocksService.processUnfinalizedBlocks(mockBlock(112, '0xabc112')); // Forked block unfinalizedBlocksService.registerFinalizedBlock(mockBlock(111, '0xabc111f', '0xabc110').block.header); const res = await unfinalizedBlocksService.processUnfinalizedBlocks(mockBlock(113, '0xabc113')); // Last valid block expect(res).toMatchObject({blockHash: '0xabc110f', blockHeight: 110, parentHash: '0xabc109f'}); }); it('can handle a fork and when unfinalized blocks < finalized head', async () => { unfinalizedBlocksService.registerFinalizedBlock(mockBlock(110, '0xabcd').block.header); await unfinalizedBlocksService.processUnfinalizedBlocks(mockBlock(111, '0xabc111')); await unfinalizedBlocksService.processUnfinalizedBlocks(mockBlock(112, '0xabc112')); // Forked block unfinalizedBlocksService.registerFinalizedBlock(mockBlock(120, '0xabc120f', '0xabc119f').block.header); const res = await unfinalizedBlocksService.processUnfinalizedBlocks(mockBlock(113, '0xabc113')); // Last valid block expect(res).toMatchObject({blockHash: '0xabc110f', blockHeight: 110, parentHash: '0xabc109f'}); }); it('can handle a fork and when unfinalized blocks < finalized head 2', async () => { unfinalizedBlocksService.registerFinalizedBlock(mockBlock(110, '0xabcd').block); (unfinalizedBlocksService as any).lastCheckedBlockHeight = 110; await (unfinalizedBlocksService as any).registerUnfinalizedBlock( mockBlock(111, '0xabc111', null as any).block.header ); await (unfinalizedBlocksService as any).registerUnfinalizedBlock( mockBlock(112, '0xabc112', null as any).block.header ); // Forked block unfinalizedBlocksService.registerFinalizedBlock(mockBlock(120, '0xabc120f', '0xabc119f').block.header); const res = await unfinalizedBlocksService.processUnfinalizedBlocks(mockBlock(113, '0xabc113')); // Last valid block expect(res).toMatchObject({blockHash: '0xabc110f', blockHeight: 110, parentHash: '0xabc109f'}); }); it('can handle a fork and when unfinalized blocks < finalized head with a large difference', async () => { unfinalizedBlocksService.registerFinalizedBlock(mockBlock(110, '0xabcd').block.header); await unfinalizedBlocksService.processUnfinalizedBlocks(mockBlock(111, '0xabc111')); await unfinalizedBlocksService.processUnfinalizedBlocks(mockBlock(112, '0xabc112')); // Forked block unfinalizedBlocksService.registerFinalizedBlock(mockBlock(1200, '0xabc1200f', '0xabc1199f').block.header); const res = await unfinalizedBlocksService.processUnfinalizedBlocks(mockBlock(113, '0xabc113')); // Last valid block expect(res).toMatchObject({blockHash: '0xabc110f', blockHeight: 110, parentHash: '0xabc109f'}); }); it('discards unfinalized blocks older than best height window before backfill', async () => { unfinalizedBlocksService.registerFinalizedBlock(mockBlock(110, '0xabcd').block.header); await unfinalizedBlocksService.processUnfinalizedBlocks(mockBlock(201, '0xabc201')); await unfinalizedBlocksService.processUnfinalizedBlocks(mockBlock(202, '0xabc202')); expect((unfinalizedBlocksService as any).unfinalizedBlocks).toHaveLength(2); mockBestHeight = 800; await unfinalizedBlocksService.processUnfinalizedBlocks(mockBlock(650, '0xabc650')); expect((unfinalizedBlocksService as any).unfinalizedBlocks).toMatchObject([ mockBlock(650, '0xabc650').block.header, ]); }); it('can rewind any unfinalized blocks when restarted and unfinalized blocks is disabled', async () => { const storeCache = new StoreCacheService(null as any, {storeCacheThreshold: 300} as any, new EventEmitter2()); storeCache.init('height', {} as any, undefined); await storeCache.metadata.set( METADATA_UNFINALIZED_BLOCKS_KEY, JSON.stringify([ {blockHeight: 90, blockHash: '0xabcd'}, {blockHeight: 91, blockHash: '0xabc91'}, {blockHeight: 92, blockHash: '0xabc92'}, ]) ); await storeCache.metadata.set(METADATA_LAST_FINALIZED_PROCESSED_KEY, 90); const unfinalizedBlocksService2 = new UnfinalizedBlocksService( {unfinalizedBlocks: false} as any, storeCache, BlockchainService ); const reindex = jest.fn().mockReturnValue(Promise.resolve()); await unfinalizedBlocksService2.init(reindex); expect(reindex).toHaveBeenCalledWith( expect.objectContaining({blockHash: '0xabc90f', blockHeight: 90, parentHash: '0xabc89f'}) ); expect((unfinalizedBlocksService2 as any).lastCheckedBlockHeight).toBe(90); }); describe('backfill functionality', () => { it('backfills small gap when non-sequential block is registered', async () => { // Create a custom blockchain service that returns proper parentHash chain const customBlockchainService = { ...BlockchainService, async getHeaderForHeight(height: number): Promise
{ return Promise.resolve({ blockHeight: height, blockHash: `0xabc${height}`, parentHash: `0xabc${height - 1}`, timestamp: new Date(), }); }, } as IBlockchainService; const service = new UnfinalizedBlocksService( {unfinalizedBlocks: true} as any, mockStoreCache(), customBlockchainService ); await service.init(() => Promise.resolve()); service.registerFinalizedBlock(mockBlock(110, '0xabcd').block.header); // Register block 111 with correct parentHash await service.processUnfinalizedBlocks(mockBlock(111, '0xabc111', '0xabc110')); // Register block 115 (gap of 3 blocks: 112, 113, 114) await service.processUnfinalizedBlocks(mockBlock(115, '0xabc115', '0xabc114')); // Verify all blocks are present including backfilled ones const unfinalizedBlocks = (service as any).unfinalizedBlocks; expect(unfinalizedBlocks.length).toBe(5); expect(unfinalizedBlocks[0].blockHeight).toBe(111); expect(unfinalizedBlocks[1].blockHeight).toBe(112); expect(unfinalizedBlocks[2].blockHeight).toBe(113); expect(unfinalizedBlocks[3].blockHeight).toBe(114); expect(unfinalizedBlocks[4].blockHeight).toBe(115); }); it('resets chain when gap exceeds UNFINALIZED_THRESHOLD', async () => { // UNFINALIZED_THRESHOLD is 200 const service = new UnfinalizedBlocksService( {unfinalizedBlocks: true} as any, mockStoreCache(), BlockchainService ); await service.init(() => Promise.resolve()); service.registerFinalizedBlock(mockBlock(110, '0xabcd').block.header); // Register block 111 await service.processUnfinalizedBlocks(mockBlock(111, '0xabc111')); // Register block 500 (gap of 389 blocks, exceeds threshold of 200) // safeHeight = 500 - 200 = 300 // lastUnfinalizedHeight (111) < 300, so chain should be reset await service.processUnfinalizedBlocks(mockBlock(500, '0xabc500')); // Verify only block 500 is present (chain was reset) const unfinalizedBlocks = (service as any).unfinalizedBlocks; expect(unfinalizedBlocks.length).toBe(1); expect(unfinalizedBlocks[0].blockHeight).toBe(500); }); it('backfills when gap is within UNFINALIZED_THRESHOLD', async () => { const customBlockchainService = { ...BlockchainService, async getHeaderForHeight(height: number): Promise
{ return Promise.resolve({ blockHeight: height, blockHash: `0xabc${height}`, parentHash: `0xabc${height - 1}`, timestamp: new Date(), }); }, } as IBlockchainService; const service = new UnfinalizedBlocksService( {unfinalizedBlocks: true} as any, mockStoreCache(), customBlockchainService ); await service.init(() => Promise.resolve()); service.registerFinalizedBlock(mockBlock(110, '0xabcd').block.header); // Register block 111 await service.processUnfinalizedBlocks(mockBlock(111, '0xabc111', '0xabc110')); // Register block 250 (gap of 139 blocks, within threshold of 200) // safeHeight = 250 - 200 = 50 // lastUnfinalizedHeight (111) > 50, so backfill is needed await service.processUnfinalizedBlocks(mockBlock(250, '0xabc250', '0xabc249')); // Verify all blocks are present including backfilled ones const unfinalizedBlocks = (service as any).unfinalizedBlocks; expect(unfinalizedBlocks.length).toBe(140); // 111 + 138 backfilled + 250 expect(unfinalizedBlocks[0].blockHeight).toBe(111); expect(unfinalizedBlocks[139].blockHeight).toBe(250); }); it('detects fork during backfill when parentHash chain is broken', async () => { // Create a blockchain service that returns wrong parentHash for block 113 const customBlockchainService = { ...BlockchainService, async getHeaderForHeight(height: number): Promise
{ // Return broken parentHash for block 113 if (height === 113) { return Promise.resolve({ blockHeight: height, blockHash: `0xabc${height}`, parentHash: '0xwrong', timestamp: new Date(), }); } return Promise.resolve({ blockHeight: height, blockHash: `0xabc${height}`, parentHash: `0xabc${height - 1}`, timestamp: new Date(), }); }, } as IBlockchainService; const service = new UnfinalizedBlocksService( {unfinalizedBlocks: true} as any, mockStoreCache(), customBlockchainService ); await service.init(() => Promise.resolve()); service.registerFinalizedBlock(mockBlock(110, '0xabcd').block.header); // Register block 111 await service.processUnfinalizedBlocks(mockBlock(111, '0xabc111', '0xabc110')); // Register block 115 - should detect fork during backfill const result = await service.processUnfinalizedBlocks(mockBlock(115, '0xabc115', '0xabc114')); // Should return the finalized block (110) since all unfinalized blocks are > finalized height // and getLastCorrectFinalizedBlock falls back to finalizedHeader expect(result).toBeDefined(); expect(result?.blockHeight).toBe(110); }); it('detects fork after backfill when new block has wrong parentHash', async () => { // Create a blockchain service that returns proper chain for backfill const customBlockchainService = { ...BlockchainService, async getHeaderForHeight(height: number): Promise
{ return Promise.resolve({ blockHeight: height, blockHash: `0xabc${height}`, parentHash: `0xabc${height - 1}`, timestamp: new Date(), }); }, } as IBlockchainService; const service = new UnfinalizedBlocksService( {unfinalizedBlocks: true} as any, mockStoreCache(), customBlockchainService ); await service.init(() => Promise.resolve()); service.registerFinalizedBlock(mockBlock(110, '0xabcd').block.header); // Register block 111 await service.processUnfinalizedBlocks(mockBlock(111, '0xabc111', '0xabc110')); // Register block 115 with wrong parentHash (should connect to 0xabc114) const result = await service.processUnfinalizedBlocks(mockBlock(115, '0xabc115', '0xwrong')); // Should return the finalized block (110) since all unfinalized blocks are > finalized height // and getLastCorrectFinalizedBlock falls back to finalizedHeader expect(result).toBeDefined(); expect(result?.blockHeight).toBe(110); }); it('throws error when block fetch fails during backfill', async () => { // Create a blockchain service that fails to fetch block 113 const customBlockchainService = { ...BlockchainService, async getHeaderForHeight(height: number): Promise
{ if (height === 113) { throw new Error('Network error'); } return Promise.resolve({ blockHeight: height, blockHash: `0xabc${height}`, parentHash: `0xabc${height - 1}`, timestamp: new Date(), }); }, } as IBlockchainService; const service = new UnfinalizedBlocksService( {unfinalizedBlocks: true} as any, mockStoreCache(), customBlockchainService ); await service.init(() => Promise.resolve()); service.registerFinalizedBlock(mockBlock(110, '0xabcd').block.header); // Register block 111 await service.processUnfinalizedBlocks(mockBlock(111, '0xabc111', '0xabc110')); // Register block 115 - should throw during backfill await expect(service.processUnfinalizedBlocks(mockBlock(115, '0xabc115', '0xabc114'))).rejects.toThrow( 'Failed to backfill missing unfinalized block at height 113' ); }); it('continues chain correctly after successful backfill', async () => { const customBlockchainService = { ...BlockchainService, async getHeaderForHeight(height: number): Promise
{ return Promise.resolve({ blockHeight: height, blockHash: `0xabc${height}`, parentHash: `0xabc${height - 1}`, timestamp: new Date(), }); }, } as IBlockchainService; const service = new UnfinalizedBlocksService( {unfinalizedBlocks: true} as any, mockStoreCache(), customBlockchainService ); await service.init(() => Promise.resolve()); service.registerFinalizedBlock(mockBlock(110, '0xabcd').block.header); // Register blocks with gaps and then continue with sequential await service.processUnfinalizedBlocks(mockBlock(111, '0xabc111', '0xabc110')); await service.processUnfinalizedBlocks(mockBlock(115, '0xabc115', '0xabc114')); await service.processUnfinalizedBlocks(mockBlock(116, '0xabc116', '0xabc115')); await service.processUnfinalizedBlocks(mockBlock(117, '0xabc117', '0xabc116')); const unfinalizedBlocks = (service as any).unfinalizedBlocks; expect(unfinalizedBlocks.length).toBe(7); expect(unfinalizedBlocks[0].blockHeight).toBe(111); expect(unfinalizedBlocks[6].blockHeight).toBe(117); // Verify chain connectivity for (let i = 1; i < unfinalizedBlocks.length; i++) { expect(unfinalizedBlocks[i].parentHash).toBe(unfinalizedBlocks[i - 1].blockHash); } }); }); }); ================================================ FILE: packages/node-core/src/indexer/unfinalizedBlocks.service.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import assert from 'assert'; import {Inject, Injectable} from '@nestjs/common'; import {OnEvent} from '@nestjs/event-emitter'; import {Transaction} from '@subql/x-sequelize'; import {isEqual, last} from 'lodash'; import {IBlockchainService} from '../blockchain.service'; import {NodeConfig} from '../configure'; import {IndexerEvent} from '../events'; import {Header, IBlock} from '../indexer/types'; import {getLogger} from '../logger'; import {mainThreadOnly} from '../utils'; import {ProofOfIndex} from './entities'; import {PoiBlock} from './poi'; import {IStoreModelProvider} from './storeModelProvider'; import util from 'node:util'; const logger = getLogger('UnfinalizedBlocks'); export const METADATA_UNFINALIZED_BLOCKS_KEY = 'unfinalizedBlocks'; export const METADATA_LAST_FINALIZED_PROCESSED_KEY = 'lastFinalizedVerifiedHeight'; export const POI_NOT_ENABLED_ERROR_MESSAGE = 'Poi is not enabled, unable to check for last finalized block'; const UNFINALIZED_THRESHOLD = 200; type UnfinalizedBlocks = Header[]; export interface IUnfinalizedBlocksService extends IUnfinalizedBlocksServiceUtil { init(reindex: (targetHeader: Header) => Promise): Promise
; processUnfinalizedBlocks(block: IBlock | undefined): Promise
; processUnfinalizedBlockHeader(header: Header | undefined): Promise
; resetUnfinalizedBlocks(tx?: Transaction): Promise; resetLastFinalizedVerifiedHeight(tx?: Transaction): Promise; getMetadataUnfinalizedBlocks(): Promise; } export interface IUnfinalizedBlocksServiceUtil { registerFinalizedBlock(header: Header): void; } @Injectable() export class UnfinalizedBlocksService implements IUnfinalizedBlocksService { private _unfinalizedBlocks?: UnfinalizedBlocks; private _finalizedHeader?: Header; protected lastCheckedBlockHeight?: number; private _latestBestHeight?: number; @mainThreadOnly() private blockToHeader(block: IBlock): Header { return block.getHeader(); } protected get unfinalizedBlocks(): UnfinalizedBlocks { assert(this._unfinalizedBlocks !== undefined, new Error('Unfinalized blocks service has not been initialized')); return this._unfinalizedBlocks; } protected get finalizedHeader(): Header { assert(this._finalizedHeader !== undefined, new Error('Unfinalized blocks service has not been initialized')); return this._finalizedHeader; } constructor( protected readonly nodeConfig: NodeConfig, @Inject('IStoreModelProvider') protected readonly storeModelProvider: IStoreModelProvider, @Inject('IBlockchainService') protected blockchainService: IBlockchainService ) {} async init(reindex: (tagetHeader: Header) => Promise): Promise
{ logger.info(`Unfinalized blocks is ${this.nodeConfig.unfinalizedBlocks ? 'enabled' : 'disabled'}`); this._unfinalizedBlocks = await this.getMetadataUnfinalizedBlocks(); this.lastCheckedBlockHeight = await this.getLastFinalizedVerifiedHeight(); this._finalizedHeader = await this.blockchainService.getFinalizedHeader(); if (this.unfinalizedBlocks.length) { logger.info('Processing unfinalized blocks'); // Validate any previously unfinalized blocks const rewindHeight = await this.processUnfinalizedBlockHeader(); if (rewindHeight !== undefined) { logger.info( `Found un-finalized blocks from previous indexing but unverified, rolling back to last finalized block rewindHeight=${util.inspect( rewindHeight, {depth: 6, colors: false} )}` ); await reindex(rewindHeight); logger.info(`Successful rewind to block ${rewindHeight.blockHeight}!`); return rewindHeight; } else { await this.resetUnfinalizedBlocks(); await this.resetLastFinalizedVerifiedHeight(); } } } private get finalizedBlockNumber(): number { return this.finalizedHeader.blockHeight; } // If not for workers this could be private async processUnfinalizedBlockHeader(header?: Header): Promise
{ let forkedHeader; if (header) { forkedHeader = await this.registerUnfinalizedBlock(header); } if (!forkedHeader) { forkedHeader = await this.hasForked(); } if (!forkedHeader) { // Remove blocks that are now confirmed finalized await this.deleteFinalizedBlock(); } else { // Get the last unfinalized block that is now finalized return this.getLastCorrectFinalizedBlock(forkedHeader); } return; } async processUnfinalizedBlocks(block: IBlock): Promise
{ return this.processUnfinalizedBlockHeader(this.blockToHeader(block)); } registerFinalizedBlock(header: Header): void { if (this.finalizedHeader && this.finalizedBlockNumber >= header.blockHeight) { return; } this._finalizedHeader = header; } @OnEvent(IndexerEvent.BlockBest) updateBestHeight(payload: {height: number}): void { this._latestBestHeight = payload.height; } private async registerUnfinalizedBlock(header: Header): Promise
{ if (header.blockHeight <= this.finalizedBlockNumber) return; if (this._latestBestHeight === undefined) { this._latestBestHeight = await this.blockchainService.getBestHeight(); } const bestHeight = Math.max(this._latestBestHeight, header.blockHeight); const safeHeight = Math.max(bestHeight - UNFINALIZED_THRESHOLD, 0); const currentBlocks = this.unfinalizedBlocks; if (currentBlocks.length) { const filteredBlocks = currentBlocks.filter(({blockHeight}) => blockHeight >= safeHeight); if (filteredBlocks.length !== currentBlocks.length) { logger.info( `Dropping ${currentBlocks.length - filteredBlocks.length} unfinalized blocks below safe height ${safeHeight}` ); this._unfinalizedBlocks = filteredBlocks; } } const lastUnfinalized = last(this.unfinalizedBlocks); const lastUnfinalizedHeight = lastUnfinalized?.blockHeight; // If this is the first unfinalized block or it's sequential, just add it if (lastUnfinalizedHeight === undefined || lastUnfinalizedHeight + 1 === header.blockHeight) { this.unfinalizedBlocks.push(header); if (lastUnfinalized && header.parentHash && lastUnfinalized.blockHash !== header.parentHash) { return header; } await this.saveUnfinalizedBlocks(this.unfinalizedBlocks); return; } // Calculate gap start, only backfill from safeHeight onwards const gapStart = Math.max(lastUnfinalizedHeight + 1, safeHeight); const gapEnd = header.blockHeight - 1; // If there's still a gap to backfill if (gapStart <= gapEnd) { const gapSize = gapEnd - gapStart + 1; logger.info(`Backfilling missing unfinalized blocks from ${gapStart} to ${gapEnd} (${gapSize} blocks)`); // Backfill missing blocks const backfillResult = await this.backfillBlocks(gapStart, gapEnd, header); // Add the original header after successful backfill // Note: We push even if fork was detected. The in-memory state will be reset // when the caller processes the fork and triggers a reindex. this.unfinalizedBlocks.push(header); if (backfillResult.forkDetected) { return backfillResult.forkHeader; } } else { // No gap to backfill, just add the new header this.unfinalizedBlocks.push(header); } await this.saveUnfinalizedBlocks(this.unfinalizedBlocks); return; } /** * Backfills missing blocks between the last unfinalized block and a new block. * Validates parentHash chain during backfill to detect forks. * * @param startHeight - The first missing block height * @param endHeight - The last missing block height * @param nextHeader - The next header that triggered backfill (for validation) * @returns Object indicating if fork was detected and the fork header if so */ private async backfillBlocks( startHeight: number, endHeight: number, nextHeader: Header ): Promise<{forkDetected: boolean; forkHeader?: Header}> { // Fetch and validate each missing block for (let height = startHeight; height <= endHeight; height++) { try { const header = await this.blockchainService.getHeaderForHeight(height); // Validate parentHash chain const previousHeader = last(this.unfinalizedBlocks); if (previousHeader && header.parentHash !== previousHeader.blockHash) { logger.warn( `Fork detected during backfill at height ${height}. ` + `Expected parentHash: ${previousHeader.blockHash}, ` + `Got: ${header.parentHash}` ); // Return the previous header (last valid block before the fork) return {forkDetected: true, forkHeader: previousHeader}; } this.unfinalizedBlocks.push(header); } catch (e: any) { logger.error(`Failed to fetch block ${height} during backfill: ${e.message}`); throw new Error(`Failed to backfill missing unfinalized block at height ${height}: ${e.message}`); } } // Validate the next header connects properly to the last backfilled block const lastBackfilledHeader = last(this.unfinalizedBlocks); if (lastBackfilledHeader && nextHeader.parentHash !== lastBackfilledHeader.blockHash) { logger.warn( `Fork detected: new block ${nextHeader.blockHeight} doesn't connect to backfilled chain. ` + `Expected parentHash: ${lastBackfilledHeader.blockHash}, ` + `Got: ${nextHeader.parentHash}` ); // Return the last backfilled header as the fork point return {forkDetected: true, forkHeader: lastBackfilledHeader}; } logger.info(`Successfully backfilled ${endHeight - startHeight + 1} missing blocks`); return {forkDetected: false}; } private async deleteFinalizedBlock(): Promise { if (this.lastCheckedBlockHeight !== undefined && this.lastCheckedBlockHeight < this.finalizedBlockNumber) { this.removeFinalized(this.finalizedBlockNumber); await this.saveLastFinalizedVerifiedHeight(this.finalizedBlockNumber); await this.saveUnfinalizedBlocks(this.unfinalizedBlocks); } this.lastCheckedBlockHeight = this.finalizedBlockNumber; } // remove any records less and equal than input finalized blockHeight private removeFinalized(blockHeight: number): void { this._unfinalizedBlocks = this.unfinalizedBlocks.filter(({blockHeight: height}) => height > blockHeight); } // find closest record from block heights private getClosestRecord(blockHeight: number): Header | undefined { // Have the block in the best block, can be verified return [...this.unfinalizedBlocks] // Copy so we can reverse .reverse() // Reverse the list to find the largest block .find(({blockHeight: height}) => height <= blockHeight); } // check unfinalized blocks for a fork, returns the header where a fork happened protected async hasForked(): Promise
{ const lastVerifiableBlock = this.getClosestRecord(this.finalizedBlockNumber); // No unfinalized blocks if (!lastVerifiableBlock) { return; } // Unfinalized blocks beyond finalized block if (lastVerifiableBlock.blockHeight === this.finalizedBlockNumber) { if (lastVerifiableBlock.blockHash !== this.finalizedHeader.blockHash) { logger.warn( `Block fork found, enqueued un-finalized block at ${lastVerifiableBlock.blockHeight} with hash ${lastVerifiableBlock.blockHash}, actual hash is ${this.finalizedHeader.blockHash}.` ); return this.finalizedHeader; } } else { // Unfinalized blocks below finalized block let header = this.finalizedHeader; /* * Iterate back through parent hashes until we get the header with the matching height * We use headers here rather than getBlockHash because of potential caching issues on the rpc * If we're off by a large number of blocks we can optimise by getting the block hash directly */ if (header.blockHeight - lastVerifiableBlock.blockHeight > UNFINALIZED_THRESHOLD) { header = await this.blockchainService.getHeaderForHeight(lastVerifiableBlock.blockHeight); } else { while (lastVerifiableBlock.blockHeight !== header.blockHeight) { assert( header.parentHash, 'When iterate back parent hashes to find matching height, we expect parentHash to be exist' ); header = await this.blockchainService.getHeaderForHash(header.parentHash); } } if (header.blockHash !== lastVerifiableBlock.blockHash) { logger.warn( `Block fork found, enqueued un-finalized block at ${lastVerifiableBlock.blockHeight} with hash ${lastVerifiableBlock.blockHash}, actual hash is ${header.blockHash}` ); return header; } } return; } protected async getLastCorrectFinalizedBlock(forkedHeader: Header): Promise
{ const bestVerifiableBlocks = this.unfinalizedBlocks.filter( ({blockHeight}) => blockHeight <= this.finalizedBlockNumber ); let checkingHeader = forkedHeader; // Work backwards through the blocks until we find a matching hash for (const bestHeader of bestVerifiableBlocks.reverse()) { assert( bestHeader.blockHeight === checkingHeader.blockHeight, 'Expect best header and checking header to be at the same height' ); if (bestHeader.blockHash === checkingHeader.blockHash || bestHeader.blockHash === checkingHeader.parentHash) { return bestHeader; } // Get the new parent assert(checkingHeader.parentHash, 'Expect checking header parentHash to be exist'); checkingHeader = await this.blockchainService.getHeaderForHash(checkingHeader.parentHash); } if (!this.lastCheckedBlockHeight) { return undefined; } return this.blockchainService.getHeaderForHeight(this.lastCheckedBlockHeight); } // Finds the last POI that had a correct block hash, this is used with the Eth sdk protected async findFinalizedUsingPOI(header: Header): Promise
{ const poiModel = this.storeModelProvider.poi; if (!poiModel) { throw new Error(POI_NOT_ENABLED_ERROR_MESSAGE); } let lastHeight = header.blockHeight; while (true) { const indexedBlocks: ProofOfIndex[] = await poiModel.getPoiBlocksBefore(lastHeight); if (!indexedBlocks.length) { break; } // Work backwards to find a block on chain that matches POI for (const indexedBlock of indexedBlocks) { const chainHeader = await this.blockchainService.getHeaderForHeight(indexedBlock.id); // Need to convert to PoiBlock to encode block hash to Uint8Array properly const testPoiBlock = PoiBlock.create( chainHeader.blockHeight, chainHeader.blockHash, new Uint8Array(), indexedBlock.projectId ?? '' ); // Need isEqual because of Uint8Array type if (isEqual(testPoiBlock.chainBlockHash, indexedBlock.chainBlockHash)) { return chainHeader; } } // Next page of POI, use height rather than offset/limit as data could change in that time lastHeight = indexedBlocks[indexedBlocks.length - 1].id - 1; } throw new Error('Unable to find a POI block with matching block hash'); } private async saveUnfinalizedBlocks(unfinalizedBlocks: UnfinalizedBlocks): Promise { return this.storeModelProvider.metadata.set(METADATA_UNFINALIZED_BLOCKS_KEY, JSON.stringify(unfinalizedBlocks)); } private async saveLastFinalizedVerifiedHeight(height: number): Promise { return this.storeModelProvider.metadata.set(METADATA_LAST_FINALIZED_PROCESSED_KEY, height); } async resetUnfinalizedBlocks(tx?: Transaction): Promise { await this.storeModelProvider.metadata.set(METADATA_UNFINALIZED_BLOCKS_KEY, '[]', tx); this._unfinalizedBlocks = []; } async resetLastFinalizedVerifiedHeight(tx?: Transaction): Promise { return this.storeModelProvider.metadata.set(METADATA_LAST_FINALIZED_PROCESSED_KEY, null as any, tx); } //string should be jsonb object async getMetadataUnfinalizedBlocks(): Promise { const val = await this.storeModelProvider.metadata.find(METADATA_UNFINALIZED_BLOCKS_KEY); if (val) { const result: (Header & {timestamp: string})[] = JSON.parse(val); return result.map(({timestamp, ...header}) => ({ ...header, timestamp: new Date(timestamp), })); } return []; } async getLastFinalizedVerifiedHeight(): Promise { return this.storeModelProvider.metadata.find(METADATA_LAST_FINALIZED_PROCESSED_KEY); } } ================================================ FILE: packages/node-core/src/indexer/worker/index.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 export * from './worker.builder'; export * from './worker.store.service'; export * from './worker.cache.service'; export * from './worker.dynamic-ds.service'; export * from './worker.connectionPoolState.manager'; export * from './worker.unfinalizedBlocks.service'; export * from './worker.monitor.service'; export * from './worker.service'; export * from './worker'; export * from './utils'; export * from './worker.core.module'; ================================================ FILE: packages/node-core/src/indexer/worker/test.store.worker.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import {Store} from '@subql/types-core'; import {WorkerHost} from './worker.builder'; import {hostStoreKeys, hostStoreToStore} from './worker.store.service'; let store: Store | null = null; async function callStoreFunction(name: string, args: any[]) { if (store === null) { throw new Error('Store is null'); } const res = await (store as any)[name as any](...args); } const host = WorkerHost.create( hostStoreKeys, { callStoreFunction, }, null as any ); store = hostStoreToStore(host as any); ================================================ FILE: packages/node-core/src/indexer/worker/utils.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import * as util from 'util'; import {instanceToPlain} from 'class-transformer'; const BLOCK_UNAVAILBLE_ERROR_MSG = 'Block is unavailable in the chain'; /** * Proxy objects aren't serializable between worker threads. * VM2 Seems to have objects come out as proxy objects. * NOTE do not use this on return types, if used on an entity it would strip all functions and have a plain object * */ function unwrapProxy(input: T): T { // Arrays are not proxy objects but their contents might be. This applies to bulkCreate and bulkUpdate if (Array.isArray(input) && input.length && util.types.isProxy(input[0])) { return instanceToPlain(input) as T; } if (!util.types.isProxy(input)) { return input; } return instanceToPlain(input) as T; } /* Unwraps any arguments to a function that are proxy objects */ export function unwrapProxyArgs, R>(fn: (...args: T) => R): (...args: T) => R { return (...args: T) => fn(...(args.map(unwrapProxy) as T)); } /** * This is thrown by chains that don't produce blocks at every height. e.g Near, Solana. */ export class BlockUnavailableError extends Error { constructor(message = BLOCK_UNAVAILBLE_ERROR_MSG) { super(message); Object.setPrototypeOf(this, BlockUnavailableError.prototype); } } export function isBlockUnavailableError(e: any): e is BlockUnavailableError { // When parsing errors through workers, the error doesn't retain its original type // Hence, we are using message as a validation too return e instanceof BlockUnavailableError || e.message === BLOCK_UNAVAILBLE_ERROR_MSG; } ================================================ FILE: packages/node-core/src/indexer/worker/worker.builder.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import * as workers from 'worker_threads'; import {Logger} from 'pino'; import {getLogger} from '../../logger'; import '../../utils/bigint'; import {exitWithError} from '../../process'; export type SerializableError = { message: string; stack?: string; }; export type Request = { id: number | string; name: string; args: any[]; }; export type Response = { id: number | string; error?: SerializableError; result?: T; }; function isRequest(message: Request | Response): message is Request { return !!(message as Request).name; } function isResponse(message: Request | Response): message is Response { return !isRequest(message); } type ResponseListener = Record void>; export type AsyncFunc = (...args: any[]) => T | Promise | void; export type AsyncMethods = Record; abstract class WorkerIO { private responseListeners: ResponseListener = {}; protected port: workers.MessagePort | workers.Worker; protected abstract getReqId(): number; constructor( port: workers.MessagePort | workers.Worker | undefined | null, workerFns: string[], private hostFns: AsyncMethods, protected logger: Logger ) { if (!port) { throw new Error('Port not provided to worker. WorkerHost most likely not run from worker thread.'); } this.port = port; this.port.on('message', (message) => this.handleMessage(message)); // Add expected methods to class workerFns.map((fn) => { if ((this as any)[fn]) { throw new Error(`Method ${String(fn)} is already defined`); } Object.assign(this, {[fn]: (...args: any[]) => this.execute(fn, args)}); }); } private handleMessage(message: Request | Response): void { if (isResponse(message)) { if (this.responseListeners[message.id]) { this.responseListeners[message.id](message.result, message.error); delete this.responseListeners[message.id]; } else { this.logger.warn(`No handler found for request: "${message.id}"`); } } else if (isRequest(message)) { void this.handleRequest(message); } else { this.logger.warn(`Unsupported message: "${message}"`); } } private async handleRequest(req: Request): Promise { const fn = this.hostFns[req.name]; if (!fn) { this.port.postMessage({ id: req.id, error: { message: `handleRequest: Function "${req.name}" not found`, }, }); return; } try { const res = await fn(...req.args); this.port.postMessage({ id: req.id, result: res, }); } catch (e) { this.port.postMessage({ id: req.id, error: e, }); } } protected async execute(fnName: keyof T, args: any[]): Promise { const id = this.getReqId(); return new Promise((resolve, reject) => { try { this.responseListeners[id] = (data, error) => { if (error) { const e = new Error(error.message); e.stack = error.stack ?? e.stack; reject(e); } else { resolve(data); } }; this.port.postMessage({ id, name: fnName, args, }); } catch (e) { this.logger.error( e as any, `Failed to post message, function="${String(fnName)}", args="${JSON.stringify(args)}"` ); // eslint-disable-next-line @typescript-eslint/prefer-promise-reject-errors reject(e); } }); } } /* Worker side, used to initialise and interact with main thread */ export class WorkerHost extends WorkerIO { private _reqCounter = -1; private constructor(workerFns: (keyof T)[], hostFns: AsyncMethods, logger: Logger) { super(workers.parentPort, workerFns as string[], hostFns, logger); } static create( workerFns: (keyof T)[], hostFns: H, logger: Logger ): WorkerHost & T { const workerHost = new WorkerHost(workerFns, hostFns, logger); return workerHost as WorkerHost & T; } // Host requests are in decreasing ID while Worker is increasing IDs to not conflict protected getReqId(): number { return this._reqCounter--; } getWorkerData(): any { return workers.workerData; } } /* Host side, used to initialise and interact with worker */ export class Worker extends WorkerIO { private _reqCounter = 0; /** * @param worker - the nodejs worker * @param workerFns - functions that the worker exposes to be called from the main thread * @param hostFns - functions the host exposes to the worker * @param exitMain - if true, when a worker exits the host will also exit * */ private constructor( private worker: workers.Worker, workerFns: (keyof T)[], hostFns: AsyncMethods, exitMain = true ) { super(worker, workerFns as string[], hostFns, getLogger(`worker: ${worker.threadId}`)); this.worker.on('error', (error) => { this.logger.error(error, 'Worker error'); }); this.worker.on('messageerror', (error) => { this.logger.error(error, 'Worker message error'); }); this.worker.on('exit', (code) => { const errMsg = `Worker exited with code ${code}`; this.logger.error(errMsg); if (exitMain) { exitWithError(errMsg, undefined, code); } }); } static create( path: string, workerFns: (keyof T)[], hostFns: H, root: string, exitMain = true, workerData?: any ): Worker & T { const worker = new Worker( new workers.Worker(path, { argv: [...process.argv, '--root', root], workerData, }), workerFns, hostFns, exitMain ); return worker as Worker & T; } // Host requests are in decreasing ID while Worker is increasing IDs to not conflict protected getReqId(): number { return this._reqCounter++; } async terminate(): Promise { return this.worker.terminate(); } } ================================================ FILE: packages/node-core/src/indexer/worker/worker.cache.service.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import {isMainThread} from 'worker_threads'; import {Injectable} from '@nestjs/common'; import {Cache} from '@subql/types-core'; import {unwrapProxyArgs} from './utils'; export type HostCache = { cacheSet(key: string, value: any): Promise; cacheGet(key: string): Promise; }; export const hostCacheKeys: (keyof HostCache)[] = ['cacheGet', 'cacheSet']; export const hostCacheToCache = (host: HostCache): Cache => { return { get: unwrapProxyArgs(host.cacheGet), set: unwrapProxyArgs(host.cacheSet), }; }; export function cacheHostFunctions(cache: Cache): HostCache { return { cacheGet: cache.get.bind(cache), cacheSet: cache.set.bind(cache), }; } @Injectable() export class WorkerInMemoryCacheService { constructor(private host: HostCache) { if (isMainThread) { throw new Error('Expected to be worker thread'); } } getCache(): Cache { return hostCacheToCache(this.host); } } ================================================ FILE: packages/node-core/src/indexer/worker/worker.connectionPoolState.manager.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import {isMainThread} from 'node:worker_threads'; import {Injectable} from '@nestjs/common'; import {ApiErrorType} from '../../api.connection.error'; import {IApiConnectionSpecific} from '../../api.service'; import { ConnectionPoolStateManager, ConnectionPoolItem, IConnectionPoolStateManager, } from '../connectionPoolState.manager'; export type HostConnectionPoolState = { hostGetNextConnectedEndpoint: (connectedEndpoints?: string[]) => Promise; hostAddToConnections: (endpoint: string, primary: boolean) => Promise; hostGetFieldFromConnectionPoolItem: >( endpoint: string, field: K ) => Promise[K]>; hostSetFieldInConnectionPoolItem: >( endpoint: string, field: K, value: ConnectionPoolItem[K] ) => Promise; hostGetSuspendedEndpoints: () => Promise; hostRemoveFromConnections: (endpoint: string) => Promise; hostHandleBatchApiSuccess(successResults: Array<{endpoint: string; responseTime: number}>): Promise; hostHandleBatchApiError(errorResults: Array<{endpoint: string; errorType: ApiErrorType}>): Promise; hostGetDisconnectedEndpoints: () => Promise; }; export const hostConnectionPoolStateKeys: (keyof HostConnectionPoolState)[] = [ 'hostGetNextConnectedEndpoint', 'hostAddToConnections', 'hostGetFieldFromConnectionPoolItem', 'hostSetFieldInConnectionPoolItem', 'hostGetSuspendedEndpoints', 'hostRemoveFromConnections', 'hostHandleBatchApiError', 'hostHandleBatchApiSuccess', 'hostGetDisconnectedEndpoints', ]; export function connectionPoolStateHostFunctions( connectionPoolState: ConnectionPoolStateManager ): HostConnectionPoolState { return { hostAddToConnections: connectionPoolState.addToConnections.bind(connectionPoolState), hostGetNextConnectedEndpoint: connectionPoolState.getNextConnectedEndpoint.bind(connectionPoolState), hostGetFieldFromConnectionPoolItem: connectionPoolState.getFieldValue.bind(connectionPoolState), hostSetFieldInConnectionPoolItem: connectionPoolState.setFieldValue.bind(connectionPoolState), hostGetSuspendedEndpoints: connectionPoolState.getSuspendedEndpoints.bind(connectionPoolState), hostRemoveFromConnections: connectionPoolState.removeFromConnections.bind(connectionPoolState), hostHandleBatchApiError: connectionPoolState.handleBatchApiError.bind(connectionPoolState), hostHandleBatchApiSuccess: connectionPoolState.handleBatchApiSuccess.bind(connectionPoolState), hostGetDisconnectedEndpoints: connectionPoolState.getDisconnectedEndpoints.bind(connectionPoolState), }; } @Injectable() export class WorkerConnectionPoolStateManager implements IConnectionPoolStateManager { constructor(private host: HostConnectionPoolState) { if (isMainThread) { throw new Error('Expected to be worker thread'); } } async getNextConnectedEndpoint(connectedEndpoints?: string[]): Promise { return this.host.hostGetNextConnectedEndpoint(connectedEndpoints); } async addToConnections(endpoint: string, primary = false): Promise { return this.host.hostAddToConnections(endpoint, primary); } async getFieldValue>( endpoint: string, field: K ): Promise[K]> { return this.host.hostGetFieldFromConnectionPoolItem(endpoint, field); } async setFieldValue>( endpoint: string, field: K, value: ConnectionPoolItem[K] ): Promise { return this.host.hostSetFieldInConnectionPoolItem(endpoint, field, value); } async getSuspendedEndpoints(): Promise { return this.host.hostGetSuspendedEndpoints(); } async removeFromConnections(endpoint: string): Promise { return this.host.hostRemoveFromConnections(endpoint); } //eslint-disable-next-line @typescript-eslint/require-await async handleApiError(endpoint: string, errorType: ApiErrorType): Promise { throw new Error(`Not Implemented`); // workers use handleBatchApiError } //eslint-disable-next-line @typescript-eslint/require-await async handleApiSuccess(endpoint: string, responseTime: number): Promise { throw new Error(`Not Implemented`); // workers use handleBatchApiSuccess } async handleBatchApiSuccess(successResults: Array<{endpoint: string; responseTime: number}>): Promise { return this.host.hostHandleBatchApiSuccess(successResults); } async handleBatchApiError(errorResults: Array<{endpoint: string; errorType: ApiErrorType}>): Promise { return this.host.hostHandleBatchApiError(errorResults); } async getDisconnectedEndpoints(): Promise { return this.host.hostGetDisconnectedEndpoints(); } } ================================================ FILE: packages/node-core/src/indexer/worker/worker.core.module.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import {Module} from '@nestjs/common'; import {ConnectionPoolService} from '../connectionPool.service'; import {ConnectionPoolStateManager} from '../connectionPoolState.manager'; import {DynamicDsService} from '../dynamic-ds.service'; import {InMemoryCacheService} from '../inMemoryCache.service'; import {MonitorService} from '../monitor.service'; import {SandboxService} from '../sandbox.service'; import {UnfinalizedBlocksService} from '../unfinalizedBlocks.service'; import {WorkerInMemoryCacheService} from './worker.cache.service'; import {WorkerConnectionPoolStateManager} from './worker.connectionPoolState.manager'; import {WorkerDynamicDsService} from './worker.dynamic-ds.service'; import {WorkerMonitorService} from './worker.monitor.service'; import {WorkerUnfinalizedBlocksService} from './worker.unfinalizedBlocks.service'; @Module({ providers: [ ConnectionPoolService, SandboxService, { provide: ConnectionPoolStateManager, useFactory: () => new WorkerConnectionPoolStateManager((global as any).host), }, { provide: MonitorService, useFactory: () => new WorkerMonitorService((global as any).host), }, { provide: InMemoryCacheService, useFactory: () => new WorkerInMemoryCacheService((global as any).host), }, { provide: 'IUnfinalizedBlocksService', useFactory: () => new WorkerUnfinalizedBlocksService((global as any).host), }, { provide: DynamicDsService, useFactory: () => new WorkerDynamicDsService((global as any).host), }, ], exports: [ ConnectionPoolService, SandboxService, MonitorService, InMemoryCacheService, 'IUnfinalizedBlocksService', DynamicDsService, ], }) export class WorkerCoreModule {} ================================================ FILE: packages/node-core/src/indexer/worker/worker.dynamic-ds.service.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import {isMainThread} from 'node:worker_threads'; import {Injectable} from '@nestjs/common'; import {DatasourceParams, IDynamicDsService} from '../dynamic-ds.service'; export type HostDynamicDS = { dynamicDsCreateDynamicDatasource: (params: DatasourceParams) => Promise; dynamicDsGetDynamicDatasources: () => Promise; }; export const hostDynamicDsKeys: (keyof HostDynamicDS)[] = [ 'dynamicDsCreateDynamicDatasource', 'dynamicDsGetDynamicDatasources', ]; @Injectable() export class WorkerDynamicDsService implements IDynamicDsService { constructor(private host: HostDynamicDS) { if (isMainThread) { throw new Error('Expected to be worker thread'); } } get dynamicDatasources(): DS[] { throw new Error('Worker does not support this property. Use getDynamicDatasources instead'); } async createDynamicDatasource(params: DatasourceParams): Promise { // Make sure the params are serializable over the bridge by using JSON conversion return this.host.dynamicDsCreateDynamicDatasource(JSON.parse(JSON.stringify(params))); } async getDynamicDatasources(): Promise { return this.host.dynamicDsGetDynamicDatasources(); } } export function dynamicDsHostFunctions(dynamicDsService: IDynamicDsService): HostDynamicDS { return { dynamicDsCreateDynamicDatasource: dynamicDsService.createDynamicDatasource.bind(dynamicDsService), dynamicDsGetDynamicDatasources: dynamicDsService.getDynamicDatasources.bind(dynamicDsService), }; } ================================================ FILE: packages/node-core/src/indexer/worker/worker.monitor.service.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import {isMainThread} from 'worker_threads'; import {Injectable} from '@nestjs/common'; import {setMonitorService} from '../../process'; import {MonitorServiceInterface} from '../monitor.service'; type HostMonitorService = { hostMonitorServiceWrite?: (blockData: string) => void; }; export const hostMonitorKeys: (keyof HostMonitorService)[] = ['hostMonitorServiceWrite']; export function monitorHostFunctions(host?: MonitorServiceInterface): HostMonitorService { return { hostMonitorServiceWrite: host?.write.bind(host), }; } @Injectable() export class WorkerMonitorService implements MonitorServiceInterface { constructor(private host?: HostMonitorService) { if (isMainThread) { throw new Error('Expected to be worker thread'); } setMonitorService(this); } write(blockData: string | (() => string)): void { return this.host?.hostMonitorServiceWrite ? this.host.hostMonitorServiceWrite(typeof blockData === 'string' ? blockData : blockData()) : undefined; } createBlockFork(blockHeight: number): void { throw Error('Worker does not support this method. Use createBlockFork from main thread instead'); } createBlockStart(blockHeight: number): void { throw Error('Worker does not support this method. Use createBlockStart from main thread instead'); } } ================================================ FILE: packages/node-core/src/indexer/worker/worker.service.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import {BaseDataSource} from '@subql/types-core'; import {IProjectUpgradeService, NodeConfig} from '../../configure'; import {getLogger} from '../../logger'; import {monitorWrite} from '../../process'; import {AutoQueue, isTaskFlushedError, RampQueue} from '../../utils'; import {ProcessBlockResponse} from '../blockDispatcher'; import {Header, IBlock, IProjectService} from '../types'; import {isBlockUnavailableError} from './utils'; export type FetchBlockResponse = {specVersion: number; parentHash: string} | undefined; export type WorkerStatusResponse = { threadId: number; isIndexing: boolean; fetchedBlocks: number; toFetchBlocks: number; }; const logger = getLogger(`WorkerService`); export abstract class BaseWorkerService< B /* BlockContent */, R extends Header /* FetchBlockResponse */, DS extends BaseDataSource = BaseDataSource, E = any /* Extra params for fetching blocks. Substrate uses specVersion in here*/, > { private fetchedBlocks: Record> = {}; private _isIndexing = false; private queue: AutoQueue>; protected abstract fetchChainBlock(heights: number, extra: E): Promise>; protected abstract toBlockResponse(block: IBlock): R; protected abstract processFetchedBlock(block: IBlock, dataSources: DS[]): Promise; protected abstract getBlockSize(block: IBlock): number; constructor( private projectService: IProjectService, private projectUpgradeService: IProjectUpgradeService, nodeConfig: NodeConfig ) { this.queue = new RampQueue( this.getBlockSize.bind(this), nodeConfig.batchSize, undefined, nodeConfig.timeout, 'WorkerService' ); } async fetchBlock(height: number, extra: E): Promise { try { const block = await this.queue.put(async () => { // If a dynamic ds is created we might be asked to fetch blocks again, use existing result if (!this.fetchedBlocks[height]) { const block = await this.fetchChainBlock(height, extra); this.fetchedBlocks[height] = block; } return this.fetchedBlocks[height]; }); // Return info to get the runtime version, this lets the worker thread know return this.toBlockResponse(block); } catch (e: any) { if (!isTaskFlushedError(e)) { logger.error(e, `Failed to fetch block ${height}`); } throw e; } } async processBlock(height: number): Promise { try { this._isIndexing = true; const block = this.fetchedBlocks[height]; if (block === undefined) { throw new Error(`Block ${height} has not been fetched`); } delete this.fetchedBlocks[height]; // Makes sure the correct project is used for that height await this.projectUpgradeService.setCurrentHeight(height); return await this.processFetchedBlock(block, await this.projectService.getDataSources(height)); } catch (e: any) { if (!isBlockUnavailableError(e)) { logger.error(e, `Failed to index block ${height}: ${e.stack}`); monitorWrite(`Failed to index block ${height}: ${e.stack}`); } throw e; } finally { this._isIndexing = false; } } get numFetchedBlocks(): number { return Object.keys(this.fetchedBlocks).length; } get numFetchingBlocks(): number { return this.queue.size; } get isIndexing(): boolean { return this._isIndexing; } abortFetching(): void { return this.queue.abort(); } } ================================================ FILE: packages/node-core/src/indexer/worker/worker.store.service.test.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import assert from 'assert'; import path from 'path'; import {Store, Entity, FunctionPropertyNames} from '@subql/types-core'; import {Worker} from './worker.builder'; import {HostStore, storeHostFunctions} from './worker.store.service'; type EntityProps = Omit> | '_name'>; class EntityCls implements Entity { constructor( public id: string, public field: string ) {} get _name(): string { return 'EntityCls'; } async save(): Promise { return Promise.resolve(); } static async remove(id: string): Promise { assert(id !== null, 'Cannot remove Entity entity without an ID'); return Promise.resolve(); } static async get(id: string): Promise { assert(id !== null && id !== undefined, 'Cannot get Entity entity without an ID'); return Promise.resolve(undefined); } static create(record: EntityProps): EntityCls { assert(typeof record.id === 'string', 'id must be provided'); const entity = new this(record.id, record.field); Object.assign(entity, record); return entity; } } type TestWorker = {callStoreFunction: (name: string, args: any[]) => Promise}; describe('Worker Store Service', () => { let store: Store; let worker: Worker & TestWorker; beforeEach(() => { store = { get: jest.fn(), getByField: jest.fn(() => Promise.resolve([/*{ field: '1'} as any*/ new EntityCls('1', '1') as any])), getByFields: jest.fn(), getOneByField: jest.fn(), set: jest.fn(), bulkCreate: jest.fn(), bulkUpdate: jest.fn(), remove: jest.fn(), bulkRemove: jest.fn(), }; worker = Worker.create( path.resolve(__dirname, '../../../dist/indexer/worker/test.store.worker.js'), ['callStoreFunction'], storeHostFunctions(store), '', // ROOT not needed, false ); }); afterEach(async () => { await worker.terminate(); }); it('can make a request with an object', async () => { const spy = jest.spyOn(store, 'getByField'); await worker.callStoreFunction('getByField', ['Entity', 'field', '1', {offset: 0, limit: 1}]); expect(spy).toHaveBeenCalledWith('Entity', 'field', '1', {offset: 0, limit: 1}); }); it('can make a respone with an object', async () => { const spy = jest.spyOn(store, 'set'); const entity = new EntityCls('1', '1'); await worker.callStoreFunction('set', ['Entity', '1', entity]); expect(spy).toHaveBeenCalledWith('Entity', '1', entity); }); }); ================================================ FILE: packages/node-core/src/indexer/worker/worker.store.service.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import {Store, FieldsExpression, GetOptions, Entity} from '@subql/types-core'; import {unwrapProxyArgs} from './utils'; export type HostStore = { // This matches the store interface storeGet: (entity: string, id: string) => Promise; storeGetByField: ( entity: string, field: keyof T, value: any, options: GetOptions ) => Promise; storeGetByFields: ( entity: string, filter: FieldsExpression[], options: GetOptions ) => Promise; storeGetOneByField: (entity: string, field: string, value: any) => Promise; storeSet: (entity: string, id: string, data: any) => Promise; storeBulkCreate: (entity: string, data: any[]) => Promise; storeBulkUpdate: (entity: string, data: any[], fields?: string[]) => Promise; storeRemove: (entity: string, id: string) => Promise; storeBulkRemove: (entity: string, ids: string[]) => Promise; }; export const hostStoreKeys: (keyof HostStore)[] = [ 'storeGet', 'storeGetByField', 'storeGetByFields', 'storeGetOneByField', 'storeSet', 'storeBulkCreate', 'storeBulkUpdate', 'storeRemove', 'storeBulkRemove', ]; // Entities have to be converted to plain objects so they can be serialized. // We don't need the functions to be included export const hostStoreToStore = (host: HostStore): Store => { return { get: unwrapProxyArgs(host.storeGet), getByField: unwrapProxyArgs(host.storeGetByField), getByFields: unwrapProxyArgs(host.storeGetByFields), getOneByField: unwrapProxyArgs(host.storeGetOneByField), set: unwrapProxyArgs(host.storeSet), bulkCreate: unwrapProxyArgs(host.storeBulkCreate), bulkUpdate: unwrapProxyArgs(host.storeBulkUpdate), remove: unwrapProxyArgs(host.storeRemove), bulkRemove: unwrapProxyArgs(host.storeBulkRemove), }; }; export function storeHostFunctions(store: Store): HostStore { return { storeGet: store.get.bind(store), storeGetByField: store.getByField.bind(store), storeGetByFields: store.getByFields.bind(store), storeGetOneByField: store.getOneByField.bind(store), storeSet: store.set.bind(store), storeBulkCreate: store.bulkCreate.bind(store), storeBulkUpdate: store.bulkUpdate.bind(store), storeRemove: store.remove.bind(store), storeBulkRemove: store.bulkRemove.bind(store), }; } ================================================ FILE: packages/node-core/src/indexer/worker/worker.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import assert from 'node:assert'; import {getHeapStatistics} from 'node:v8'; import {threadId} from 'node:worker_threads'; import {INestApplication} from '@nestjs/common'; import {BaseDataSource, Store, Cache} from '@subql/types-core'; import {IApiConnectionSpecific} from '../../api.service'; import {getLogger} from '../../logger'; import {ProcessBlockResponse} from '../blockDispatcher'; import {ConnectionPoolStateManager} from '../connectionPoolState.manager'; import {IDynamicDsService} from '../dynamic-ds.service'; import {MonitorServiceInterface} from '../monitor.service'; import {Header} from '../types'; import {IUnfinalizedBlocksService} from '../unfinalizedBlocks.service'; import {hostMonitorKeys, monitorHostFunctions} from '../worker'; import {WorkerHost, Worker, AsyncMethods} from './worker.builder'; import {cacheHostFunctions, HostCache, hostCacheKeys} from './worker.cache.service'; import { connectionPoolStateHostFunctions, HostConnectionPoolState, hostConnectionPoolStateKeys, } from './worker.connectionPoolState.manager'; import {dynamicDsHostFunctions, HostDynamicDS, hostDynamicDsKeys} from './worker.dynamic-ds.service'; import {BaseWorkerService, WorkerStatusResponse} from './worker.service'; import {HostStore, hostStoreKeys, storeHostFunctions} from './worker.store.service'; import {HostUnfinalizedBlocks, hostUnfinalizedBlocksKeys} from './worker.unfinalizedBlocks.service'; export type DefaultWorkerFunctions< ApiConnection /* ApiPromiseConnection*/, DS extends BaseDataSource = BaseDataSource, > = HostCache & HostStore & HostDynamicDS & HostUnfinalizedBlocks & HostConnectionPoolState; let workerApp: INestApplication; let workerService: BaseWorkerService; const logger = getLogger(`worker #${threadId}`); export function initWorkerServices(worker: INestApplication, service: typeof workerService): void { if (workerApp) { logger.warn('Worker already initialised'); return; } workerApp = worker; workerService = service; } export function getWorkerApp(): INestApplication { assert(workerApp, 'Worker Not initialised'); return workerApp; } export function getWorkerService(): S { assert(workerService, 'Worker Not initialised'); return workerService as S; } // eslint-disable-next-line @typescript-eslint/require-await async function getMemoryLeft(): Promise { const totalHeap = getHeapStatistics().heap_size_limit; const heapUsed = process.memoryUsage().heapUsed; return totalHeap - heapUsed; } // eslint-disable-next-line @typescript-eslint/require-await async function getStatus(): Promise { assert(workerService, 'Worker Not initialised'); return { threadId, fetchedBlocks: workerService.numFetchedBlocks, toFetchBlocks: workerService.numFetchingBlocks, isIndexing: workerService.isIndexing, }; } async function fetchBlock(height: number, specVersion: number): ReturnType<(typeof workerService)['fetchBlock']> { assert(workerService, 'Worker Not initialised'); return workerService.fetchBlock(height, {specVersion}); } // eslint-disable-next-line @typescript-eslint/require-await async function processBlock(height: number): Promise { assert(workerService, 'Worker Not initialised'); return workerService.processBlock(height); } // eslint-disable-next-line @typescript-eslint/require-await async function numFetchedBlocks(): Promise { assert(workerService, 'Worker Not initialised'); return workerService.numFetchedBlocks; } // eslint-disable-next-line @typescript-eslint/require-await async function numFetchingBlocks(): Promise { assert(workerService, 'Worker Not initialised'); return workerService.numFetchingBlocks; } // eslint-disable-next-line @typescript-eslint/require-await async function abortFetching(): Promise { assert(workerService, 'Worker Not initialised'); return workerService.abortFetching(); } // Export types to be used on the parent type FetchBlock = typeof fetchBlock; type ProcessBlock = typeof processBlock; type NumFetchedBlocks = typeof numFetchedBlocks; type NumFetchingBlocks = typeof numFetchingBlocks; type GetWorkerStatus = typeof getStatus; type GetMemoryLeft = typeof getMemoryLeft; type AbortFetching = typeof abortFetching; export type IBaseIndexerWorker = { processBlock: ProcessBlock; fetchBlock: FetchBlock; numFetchedBlocks: NumFetchedBlocks; numFetchingBlocks: NumFetchingBlocks; getStatus: GetWorkerStatus; getMemoryLeft: GetMemoryLeft; abortFetching: AbortFetching; }; export const baseWorkerFunctions: (keyof IBaseIndexerWorker)[] = [ 'processBlock', 'fetchBlock', 'numFetchedBlocks', 'numFetchingBlocks', 'getStatus', 'getMemoryLeft', 'abortFetching', ]; export function createWorkerHost< T extends AsyncMethods, H extends AsyncMethods & {initWorker: (height?: number) => Promise}, ApiConnection /* ApiPromiseConnection*/, DS extends BaseDataSource = BaseDataSource, >(extraWorkerFns: (keyof T)[], extraHostFns: H): WorkerHost & T> { // Register these functions to be exposed to worker host return WorkerHost.create & T, IBaseIndexerWorker & H>( [ // Have this first to not override the default functions ...extraWorkerFns, ...hostStoreKeys, ...hostCacheKeys, ...hostDynamicDsKeys, ...hostUnfinalizedBlocksKeys, ...hostMonitorKeys, ...hostConnectionPoolStateKeys, ], { // Have this first to not override the default functions ...extraHostFns, fetchBlock, processBlock, numFetchedBlocks, numFetchingBlocks, getStatus, getMemoryLeft, abortFetching, }, logger ); } export type TerminateableWorker = T & {terminate: () => Promise}; export async function createIndexerWorker< T extends IBaseIndexerWorker, ApiConnection extends IApiConnectionSpecific /*ApiPromiseConnection*/ /*ApiPromiseConnection*/, B, DS extends BaseDataSource = BaseDataSource, >( workerPath: string, workerFns: (keyof Omit)[], store: Store, cache: Cache, dynamicDsService: IDynamicDsService, unfinalizedBlocksService: IUnfinalizedBlocksService, connectionPoolState: ConnectionPoolStateManager, root: string, startHeight: number, monitorService?: MonitorServiceInterface, workerData?: any ): Promise> { const indexerWorker = Worker.create< T & {initWorker: (startHeight: number) => Promise}, DefaultWorkerFunctions >( workerPath, [...baseWorkerFunctions, 'initWorker', ...workerFns], { ...cacheHostFunctions(cache), ...storeHostFunctions(store), ...(monitorService ? monitorHostFunctions(monitorService) : {}), ...dynamicDsHostFunctions(dynamicDsService), unfinalizedBlocksProcess: unfinalizedBlocksService.processUnfinalizedBlockHeader.bind(unfinalizedBlocksService), ...connectionPoolStateHostFunctions(connectionPoolState), }, root, true, workerData ); await indexerWorker.initWorker(startHeight); return indexerWorker; } process.on('uncaughtException', (e) => { logger.error(e, 'Uncaught Exception'); throw e; }); ================================================ FILE: packages/node-core/src/indexer/worker/worker.unfinalizedBlocks.service.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import {isMainThread} from 'node:worker_threads'; import {Injectable} from '@nestjs/common'; import {Header, IBlock, IUnfinalizedBlocksService} from '../../indexer'; export type HostUnfinalizedBlocks = { unfinalizedBlocksProcess: (header: Header | undefined) => Promise
; }; export const hostUnfinalizedBlocksKeys: (keyof HostUnfinalizedBlocks)[] = ['unfinalizedBlocksProcess']; @Injectable() export class WorkerUnfinalizedBlocksService implements IUnfinalizedBlocksService { constructor(private host: HostUnfinalizedBlocks) { if (isMainThread) { throw new Error('Expected to be worker thread'); } } async processUnfinalizedBlocks(block: IBlock): Promise
{ return this.host.unfinalizedBlocksProcess(block.getHeader()); } async processUnfinalizedBlockHeader(header: Header | undefined): Promise
{ return this.host.unfinalizedBlocksProcess(header); } // eslint-disable-next-line @typescript-eslint/promise-function-async init(reindex: (targetHeader: Header) => Promise): Promise
{ throw new Error('This method should not be called from a worker'); } // eslint-disable-next-line @typescript-eslint/promise-function-async resetUnfinalizedBlocks(): Promise { throw new Error('This method should not be called from a worker'); } // eslint-disable-next-line @typescript-eslint/promise-function-async resetLastFinalizedVerifiedHeight(): Promise { throw new Error('This method should not be called from a worker'); } // eslint-disable-next-line @typescript-eslint/promise-function-async getMetadataUnfinalizedBlocks(): Promise { throw new Error('This method should not be called from a worker'); } registerFinalizedBlock(header: Header): void { throw new Error('This method should not be called from a worker'); } // eslint-disable-next-line @typescript-eslint/promise-function-async getHeaderForHeight(height: number): Promise
{ throw new Error('This method should not be called from a worker'); } } ================================================ FILE: packages/node-core/src/logger.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import {isMainThread, threadId} from 'node:worker_threads'; import {LoggerService} from '@nestjs/common'; import {Logger} from '@subql/utils'; import Pino from 'pino'; let logger: Logger; export function initLogger( debug: string | undefined = undefined, outputFmt?: 'json' | 'colored', logLevel?: string ): void { logger = new Logger({ level: debug === '*' ? 'debug' : logLevel, outputFormat: outputFmt, nestedKey: 'payload', debugFilter: !debug || debug === '*' ? undefined : debug.split(','), }); } // Init logger for tests if ((global as any).__TEST__) { initLogger(); } export function getLogger(category: string): Pino.Logger { return logger.getLogger(`${category}${isMainThread ? '' : `-#${threadId}`}`); } export function setLevel(level: Pino.LevelWithSilent): void { logger.setLevel(level); } export function setDebugFilter(debug: string | undefined): void { if (debug === '*') { logger.setLevel('debug'); } logger.setDebugFilter(!debug || debug === '*' ? [] : debug.split(',')); } export class NestLogger implements LoggerService { private logger = getLogger(`nestjs`); constructor(private readonly debugLevel = false) {} error(message: any, trace?: string): void { if (trace) { this.logger.error({trace}, message); } else { this.logger.error(message); } } log(message: any): void { // if (!this.debugLevel) return; this.logger.info(message); } warn(message: any): void { // if (!this.debugLevel) return; this.logger.warn(message); } debug(message: any): void { if (!this.debugLevel) return; this.logger.debug(message); } } ================================================ FILE: packages/node-core/src/meta/event.listener.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import {OnEvent} from '@nestjs/event-emitter'; import {InjectMetric} from '@willsoto/nestjs-prometheus'; import {Gauge} from 'prom-client'; import { BestBlockPayload, EventPayload, IndexerEvent, ProcessBlockPayload, ProcessedBlockCountPayload, TargetBlockPayload, } from '../events'; export class MetricEventListener { private skipDictionaryCount = 0; constructor( @InjectMetric('subql_indexer_api_connected') private apiConnectedMetric: Gauge, @InjectMetric('subql_indexer_block_queue_size') private blockQueueSizeMetric: Gauge, @InjectMetric('subql_indexer_blocknumber_queue_size') private blocknumberQueueSizeMetric: Gauge, @InjectMetric('subql_indexer_processing_block_height') private processingBlockHeight: Gauge, @InjectMetric('subql_indexer_target_block_height') private targetHeightMetric: Gauge, @InjectMetric('subql_indexer_best_block_height') private bestHeightMetric: Gauge, @InjectMetric('subql_indexer_using_dictionary') private usingDictionaryMetric: Gauge, @InjectMetric('subql_indexer_skip_dictionary_count') private skipDictionaryCountMetric: Gauge, @InjectMetric('subql_indexer_processed_block_count') private processedBlockCountMetric: Gauge, @InjectMetric('subql_indexer_store_cache_threshold') private storeCacheThreshold: Gauge, @InjectMetric('subql_indexer_store_cache_records_size') private storeCacheRecordsSize: Gauge ) {} @OnEvent(IndexerEvent.ApiConnected) handleApiConnected({value}: EventPayload): void { this.apiConnectedMetric.set(value); } @OnEvent(IndexerEvent.BlockQueueSize) handleBlockQueueSizeMetric({value}: EventPayload): void { this.blockQueueSizeMetric.set(value); } @OnEvent(IndexerEvent.BlocknumberQueueSize) handleBlocknumberQueueSizeMetric({value}: EventPayload): void { this.blocknumberQueueSizeMetric.set(value); } @OnEvent(IndexerEvent.BlockProcessing) handleProcessingBlock(blockPayload: ProcessBlockPayload): void { this.processingBlockHeight.set(blockPayload.height); } @OnEvent(IndexerEvent.BlockProcessedCount) handleProcessedBlockCount(blockPayload: ProcessedBlockCountPayload): void { this.processedBlockCountMetric.set(blockPayload.processedBlockCount); } @OnEvent(IndexerEvent.BlockTarget) handleTargetBlock(blockPayload: TargetBlockPayload): void { this.targetHeightMetric.set(blockPayload.height); } @OnEvent(IndexerEvent.BlockBest) handleBestBlock(blockPayload: BestBlockPayload): void { this.bestHeightMetric.set(blockPayload.height); } @OnEvent(IndexerEvent.UsingDictionary) handleUsingDictionary({value}: EventPayload): void { this.usingDictionaryMetric.set(value); } @OnEvent(IndexerEvent.SkipDictionary) handleSkipDictionary(): void { this.skipDictionaryCount += 1; this.skipDictionaryCountMetric.set(this.skipDictionaryCount); } @OnEvent(IndexerEvent.StoreCacheThreshold) handleStoreCacheThreshold({value}: EventPayload): void { this.storeCacheThreshold.set(value); } @OnEvent(IndexerEvent.StoreCacheRecordsSize) handleStoreCacheRecordsSize({value}: EventPayload): void { this.storeCacheRecordsSize.set(value); } } ================================================ FILE: packages/node-core/src/meta/health.controller.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import {Controller, Get, HttpException, HttpStatus} from '@nestjs/common'; import {getLogger} from '../logger'; import {HealthService} from './health.service'; const logger = getLogger('health'); @Controller('health') export class HealthController { constructor(private healthService: HealthService) {} @Get() getHealth(): void { try { this.healthService.getHealth(); } catch (e: any) { logger.error(e); throw new HttpException( { status: HttpStatus.INTERNAL_SERVER_ERROR, error: e.message, }, HttpStatus.INTERNAL_SERVER_ERROR ); } } } ================================================ FILE: packages/node-core/src/meta/health.service.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import {Injectable} from '@nestjs/common'; import {OnEvent} from '@nestjs/event-emitter'; import {Interval} from '@nestjs/schedule'; import {NodeConfig} from '../configure'; import {IndexerEvent, ProcessBlockPayload, TargetBlockPayload} from '../events'; import {StoreService} from '../indexer'; const DEFAULT_TIMEOUT = 900000; const DEFAULT_BLOCK_TIME = 6000; const CHECK_HEALTH_INTERVAL = 60000; @Injectable() export class HealthService { private recordBlockHeight?: number; private recordBlockTimestamp?: number; private currentProcessingHeight?: number; private currentProcessingTimestamp?: number; private blockTime: number; private healthTimeout: number; private indexerHealthy?: boolean; constructor( protected nodeConfig: NodeConfig, private storeService: StoreService ) { this.healthTimeout = Math.max(DEFAULT_TIMEOUT, this.nodeConfig.timeout * 1000); this.blockTime = Math.max(DEFAULT_BLOCK_TIME, this.nodeConfig.blockTime); } @Interval(CHECK_HEALTH_INTERVAL) async checkHealthStatus(): Promise { let healthy: boolean; try { this.getHealth(); healthy = true; } catch (e) { healthy = false; } if (healthy !== this.indexerHealthy) { await this.storeService.modelProvider.metadata.model.upsert({key: 'indexerHealthy', value: healthy}); this.indexerHealthy = healthy; } } // Not all networks have a consistent interval for Finalized Blocks // Hence, the endpoint's health will be dictated by the best block (as it is a consistent interval) @OnEvent(IndexerEvent.BlockBest) handleTargetBlock(blockPayload: TargetBlockPayload): void { if (this.recordBlockHeight !== blockPayload.height) { this.recordBlockHeight = blockPayload.height; this.recordBlockTimestamp = Date.now(); } } @OnEvent(IndexerEvent.BlockProcessing) handleProcessingBlock(blockPayload: ProcessBlockPayload): void { if (this.currentProcessingHeight !== blockPayload.height) { this.currentProcessingHeight = blockPayload.height; this.currentProcessingTimestamp = blockPayload.timestamp; } } getHealth(): void { if (this.recordBlockTimestamp && Date.now() - this.recordBlockTimestamp > this.blockTime * 10) { throw new Error('Endpoint is not healthy'); } if (this.currentProcessingTimestamp && Date.now() - this.currentProcessingTimestamp > this.healthTimeout) { throw new Error('Indexer is not healthy'); } } } ================================================ FILE: packages/node-core/src/meta/index.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 export * from './meta.module'; ================================================ FILE: packages/node-core/src/meta/meta.controller.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import {Controller, Get} from '@nestjs/common'; import {MetaService} from './meta.service'; @Controller('meta') export class MetaController { constructor(private metaService: MetaService) {} @Get() getMeta() { return this.metaService.getMeta(); } } ================================================ FILE: packages/node-core/src/meta/meta.module.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import {DynamicModule, Module} from '@nestjs/common'; import {PrometheusModule} from '@willsoto/nestjs-prometheus'; // import { FetchModule } from '../indexer/fetch.module'; import {CoreModule} from '../indexer'; import {MetricEventListener} from './event.listener'; import {HealthController} from './health.controller'; import {HealthService} from './health.service'; import {gaugeProviders} from './meta'; import {MetaController} from './meta.controller'; import {MetaService, MetaServiceOptions} from './meta.service'; import {ReadyController} from './ready.controller'; import {ReadyService} from './ready.service'; @Module({ // imports: [PrometheusModule.register(), FetchModule], // controllers: [...metaControllers, MetaController], // providers: [...metaServices, MetaService], }) export class MetaModule { static forRoot(options: MetaServiceOptions): DynamicModule { return { module: MetaModule, imports: [PrometheusModule.register(), CoreModule], controllers: [HealthController, ReadyController, MetaController], providers: [ MetricEventListener, HealthService, ReadyService, ...gaugeProviders, { provide: MetaService, useFactory: () => new MetaService(options), }, ], }; } } ================================================ FILE: packages/node-core/src/meta/meta.service.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import {OnEvent} from '@nestjs/event-emitter'; import { BestBlockPayload, EventPayload, IndexerEvent, NetworkMetadataPayload, ProcessBlockPayload, ProcessedBlockCountPayload, TargetBlockPayload, } from '../events'; export type MetaServiceOptions = { /** * The version of the node from package.json * @example * "1.0.0 * */ version: string; sdkVersion: { /** * The name of the sdk * @example * "@polkadot/api" * */ name: string; /** * The semver of the skd package from package.json * @example * "1.0.0" * */ version: string; }; }; export class MetaService { private currentProcessingHeight?: number; private currentProcessingTimestamp?: number; private bestHeight?: number; private targetHeight?: number; private networkMeta?: NetworkMetadataPayload; private apiConnected?: boolean; private usingDictionary?: boolean; private lastProcessedHeight?: number; private lastProcessedTimestamp?: number; private processedBlockCount?: number; constructor(private opts: MetaServiceOptions) {} getMeta() { const {name: sdkName, version} = this.opts.sdkVersion; return { currentProcessingHeight: this.currentProcessingHeight, currentProcessingTimestamp: this.currentProcessingTimestamp, targetHeight: this.targetHeight, bestHeight: this.bestHeight, indexerNodeVersion: this.opts.version, lastProcessedHeight: this.lastProcessedHeight, lastProcessedTimestamp: this.lastProcessedTimestamp, uptime: process.uptime(), processedBlockCount: this.processedBlockCount, apiConnected: this.apiConnected, usingDictionary: this.usingDictionary, [sdkName]: version, ...this.networkMeta, }; } @OnEvent(IndexerEvent.BlockProcessing) handleProcessingBlock(blockPayload: ProcessBlockPayload): void { this.currentProcessingHeight = blockPayload.height; this.currentProcessingTimestamp = blockPayload.timestamp; } @OnEvent(IndexerEvent.BlockProcessedCount) handleProcessedBlock(blockPayload: ProcessedBlockCountPayload): void { this.processedBlockCount = blockPayload.processedBlockCount; this.currentProcessingTimestamp = blockPayload.timestamp; } @OnEvent(IndexerEvent.BlockTarget) handleTargetBlock(blockPayload: TargetBlockPayload): void { this.targetHeight = blockPayload.height; } @OnEvent(IndexerEvent.BlockBest) handleBestBlock(blockPayload: BestBlockPayload): void { this.bestHeight = blockPayload.height; } @OnEvent(IndexerEvent.NetworkMetadata) handleNetworkMetadata(networkMeta: NetworkMetadataPayload): void { this.networkMeta = networkMeta; } @OnEvent(IndexerEvent.ApiConnected) handleApiConnected({value}: EventPayload): void { this.apiConnected = !!value; } @OnEvent(IndexerEvent.UsingDictionary) handleUsingDictionary({value}: EventPayload): void { this.usingDictionary = !!value; } } ================================================ FILE: packages/node-core/src/meta/meta.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import {makeGaugeProvider} from '@willsoto/nestjs-prometheus'; export const gaugeProviders = [ makeGaugeProvider({ name: 'subql_indexer_api_connected', help: 'The indexer api connection status', }), makeGaugeProvider({ name: 'subql_indexer_processing_block_height', help: 'The current processing block height', }), makeGaugeProvider({ name: 'subql_indexer_target_block_height', help: 'The latest finalized block height', }), makeGaugeProvider({ name: 'subql_indexer_best_block_height', help: 'The latest best block height', }), makeGaugeProvider({ name: 'subql_indexer_block_queue_size', help: 'The size of fetched block queue', }), makeGaugeProvider({ name: 'subql_indexer_blocknumber_queue_size', help: 'The size of fetched block number queue', }), makeGaugeProvider({ name: 'subql_indexer_using_dictionary', help: 'The status of indexer is using the dictionary', }), makeGaugeProvider({ name: 'subql_indexer_skip_dictionary_count', help: 'The number of times indexer been skip use dictionary', }), makeGaugeProvider({ name: 'subql_indexer_processed_block_count', help: 'The number of processed block', }), makeGaugeProvider({ name: 'subql_indexer_store_cache_threshold', help: 'Store cache will flush once cache record size excess this threshold', }), makeGaugeProvider({ name: 'subql_indexer_store_cache_records_size', help: 'Number of records waiting to flush in store cache', }), ]; ================================================ FILE: packages/node-core/src/meta/ready.controller.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import {Controller, Get, HttpException, HttpStatus} from '@nestjs/common'; import {ReadyService} from './ready.service'; @Controller('ready') export class ReadyController { constructor(private readyService: ReadyService) {} @Get() getReady() { if (!this.readyService.ready) { throw new HttpException( { status: HttpStatus.SERVICE_UNAVAILABLE, error: 'Database schema is not created or ready', }, HttpStatus.SERVICE_UNAVAILABLE ); } } } ================================================ FILE: packages/node-core/src/meta/ready.service.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import {Injectable} from '@nestjs/common'; import {OnEvent} from '@nestjs/event-emitter'; import {EventPayload, IndexerEvent} from '../events'; @Injectable() export class ReadyService { private _ready: boolean; constructor() { this._ready = false; } @OnEvent(IndexerEvent.Ready) handleReady({value}: EventPayload): void { this._ready = value; } get ready(): boolean { return this._ready; } } ================================================ FILE: packages/node-core/src/process.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import Pino from 'pino'; import {MonitorServiceInterface} from './indexer'; let monitorService: MonitorServiceInterface; export function setMonitorService(service: MonitorServiceInterface): void { monitorService = service; } export function exitWithError(error: Error | string, logger?: Pino.Logger, code = 1): never { const errorMessage = typeof error === 'string' ? error : error.message; logger?.error(error as any); /* Bad types */ monitorService?.write(`[EXIT ${code}]: ${errorMessage}`); process.exit(code); } // Function argument is to allow for lazy evaluation only if monitor service is enabled export function monitorWrite(blockData: string | (() => string)): void { monitorService?.write(blockData); } export function monitorCreateBlockStart(blockNumber: number): void { monitorService?.createBlockStart(blockNumber); } export function monitorCreateBlockFork(blockNumber: number): void { monitorService?.createBlockFork(blockNumber); } ================================================ FILE: packages/node-core/src/profiler.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 /* class decorator */ import {performance} from 'perf_hooks'; import {getLogger} from './logger'; function isPromise(e: any): boolean { return !!e && typeof e.then === 'function'; } const logger = getLogger('profiler'); function printCost(start: number, end: number, target: string, method: string | symbol): void { logger.info(`${target}, ${method.toString()}, ${end - start} ms`); } let enableProfiler = false; export function setProfiler(enabled: boolean): void { enableProfiler = enabled; } export function profiler(): MethodDecorator { return (target, name: string | symbol, descriptor: PropertyDescriptor): void => { if (enableProfiler && !!descriptor && typeof descriptor.value === 'function') { const orig = descriptor.value; // tslint:disable no-function-expression no-invalid-this descriptor.value = function (...args: any[]): any { const start = performance.now(); const res = orig.bind(this)(...args); if (isPromise(res)) { res.then( (_: any) => { printCost(start, performance.now(), target.constructor.name, name); return _; }, (err: any) => { printCost(start, performance.now(), target.constructor.name, name); throw err; } ); } else { printCost(start, performance.now(), target.constructor.name, name); } return res; }; } }; } type AnyFn = (...args: any[]) => any; export const profilerWrap = (method: T, target: any, name: string) => (...args: Parameters): ReturnType => { const start = performance.now(); const res = method(...args); if (isPromise(res)) { res.then( (_: any) => { printCost(start, performance.now(), target, name); return _; }, (err: any) => { printCost(start, performance.now(), target, name); throw err; } ); } else { printCost(start, performance.now(), target, name); } return res; }; ================================================ FILE: packages/node-core/src/subcommands/forceClean.module.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import {Module} from '@nestjs/common'; import {SchedulerRegistry} from '@nestjs/schedule'; import {ForceCleanService} from './forceClean.service'; @Module({ providers: [ForceCleanService, SchedulerRegistry], controllers: [], }) export class ForceCleanFeatureModule {} ================================================ FILE: packages/node-core/src/subcommands/forceClean.service.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import {Inject, Injectable} from '@nestjs/common'; import {getAllEntitiesRelations} from '@subql/utils'; import {QueryTypes, Sequelize} from '@subql/x-sequelize'; import {NodeConfig} from '../configure'; import {MonitorService} from '../indexer'; import {ISubqueryProject} from '../indexer/types'; import {getLogger} from '../logger'; import {getEnumDeprecated, getExistingProjectSchema, enumNameToHash} from '../utils'; const logger = getLogger('Force-clean'); @Injectable() export class ForceCleanService { constructor( private readonly sequelize: Sequelize, private readonly nodeConfig: NodeConfig, @Inject('ISubqueryProject') protected project: ISubqueryProject ) {} async forceClean(): Promise { const schema = await getExistingProjectSchema(this.nodeConfig, this.sequelize); if (!schema) { logger.error('Unable to locate schema'); throw new Error('Schema does not exist.'); } const modelsRelation = getAllEntitiesRelations(this.project.schema); try { // drop existing project schema and metadata table await this.sequelize.dropSchema(`"${schema}"`, { logging: false, benchmark: false, }); // TODO, remove this soon, once original enum are cleaned // Deprecate, now enums are moved under schema, drop schema will remove project enums await Promise.all( modelsRelation.enums.map(async (e) => { const enumTypeNameDeprecated = `${schema}_enum_${enumNameToHash(e.name)}`; const resultsDeprecated = await getEnumDeprecated(this.sequelize, enumTypeNameDeprecated); if (resultsDeprecated.length !== 0) { await this.sequelize.query(` DROP TYPE "${enumTypeNameDeprecated}"; `); } }) ); // remove schema from subquery table (might not exist) const checker = await this.sequelize.query( ` SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'public' AND TABLE_NAME = 'subqueries'` ); if ((checker[1] as any).rowCount > 0) { await this.sequelize.query( ` DELETE FROM public.subqueries WHERE name = :name`, { replacements: {name: this.nodeConfig.subqueryName}, type: QueryTypes.DELETE, } ); } logger.info('force cleaned schema and tables'); MonitorService.forceClean(this.nodeConfig.monitorOutDir); } catch (err: any) { logger.error(err, 'failed to force clean'); throw err; } } } ================================================ FILE: packages/node-core/src/subcommands/foreceClean.init.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import {NestFactory} from '@nestjs/core'; import {getLogger} from '../logger'; import {exitWithError} from '../process'; import {ForceCleanService} from './forceClean.service'; const logger = getLogger('CLI'); export async function forceClean(forceCleanModule: any): Promise { try { const app = await NestFactory.create(forceCleanModule); await app.init(); const forceCleanService = app.get(ForceCleanService); await forceCleanService.forceClean(); } catch (e: any) { exitWithError(new Error(`Force-clean failed to execute`, {cause: e}), logger); } process.exit(0); } ================================================ FILE: packages/node-core/src/subcommands/index.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 export * from './forceClean.service'; export * from './forceClean.module'; export * from './foreceClean.init'; export * from './reindex.init'; export * from './reindex.service'; export * from './testing.core.module'; ================================================ FILE: packages/node-core/src/subcommands/reindex.init.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import {NestFactory} from '@nestjs/core'; import {getLogger} from '../logger'; import {exitWithError} from '../process'; import {ReindexService} from './reindex.service'; const logger = getLogger('CLI-Reindex'); export async function reindexInit(reindexModule: any, targetHeight: number): Promise { try { const app = await NestFactory.create(reindexModule); await app.init(); const reindexService = app.get(ReindexService); await reindexService.init(); const actualReindex = await reindexService.getTargetHeightWithUnfinalizedBlocks(targetHeight); if (actualReindex.blockHeight !== targetHeight) { logger.info( `Found index target height ${targetHeight} beyond indexed unfinalized block ${actualReindex.blockHeight}, will index to ${actualReindex.blockHeight}` ); } await reindexService.reindex(actualReindex); } catch (e: any) { exitWithError(new Error(`Reindex failed to execute`, {cause: e}), logger); } process.exit(0); } ================================================ FILE: packages/node-core/src/subcommands/reindex.service.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import assert from 'assert'; import {Inject, Injectable} from '@nestjs/common'; import {BaseDataSource} from '@subql/types-core'; import {Sequelize} from '@subql/x-sequelize'; import {IBlockchainService} from '../blockchain.service'; import {NodeConfig, ProjectUpgradeService} from '../configure'; import { IUnfinalizedBlocksService, StoreService, ISubqueryProject, PoiService, IMetadata, cacheProviderFlushData, Header, MultiChainRewindService, } from '../indexer'; import {DynamicDsService} from '../indexer/dynamic-ds.service'; import {getLogger} from '../logger'; import {exitWithError, monitorWrite} from '../process'; import {getExistingProjectSchema, reindex} from '../utils'; import {ForceCleanService} from './forceClean.service'; const logger = getLogger('Reindex'); @Injectable() export class ReindexService

{ private _metadataRepo?: IMetadata; private _lastProcessedHeader?: {height: number; timestamp?: number}; constructor( private readonly sequelize: Sequelize, private readonly nodeConfig: NodeConfig, private readonly storeService: StoreService, private readonly poiService: PoiService, @Inject('IProjectUpgradeService') private readonly projectUpgradeService: ProjectUpgradeService, @Inject('ISubqueryProject') private readonly project: P, private readonly forceCleanService: ForceCleanService, @Inject('UnfinalizedBlocksService') private readonly unfinalizedBlocksService: IUnfinalizedBlocksService, @Inject('DynamicDsService') private readonly dynamicDsService: DynamicDsService, @Inject('IBlockchainService') private readonly blockchainService: IBlockchainService, private readonly multiChainRewindService: MultiChainRewindService ) {} private get metadataRepo(): IMetadata { assert(this._metadataRepo, 'BaseReindexService has not been init'); return this._metadataRepo; } async init(): Promise { const schema = await this.getExistingProjectSchema(); if (!schema) { logger.error('Unable to locate schema'); throw new Error('Schema does not exist.'); } await this.storeService.initCoreTables(schema); if (this.nodeConfig.proofOfIndex) { await this.poiService.init(schema); } const tx = await this.sequelize.transaction(); await this.storeService.init(schema, tx); await tx.commit(); this._metadataRepo = this.storeService.modelProvider.metadata; await this.dynamicDsService.init(this.metadataRepo); const {height, timestamp} = await this.storeService.getLastProcessedBlock(); if (height === undefined) { throw new Error('lastProcessedHeight is not defined'); } this._lastProcessedHeader = { height, timestamp, }; const chain = await this.storeService.modelProvider.metadata.find('chain'); assert(chain, 'Chain not found in metadata'); await this.multiChainRewindService.init(chain); await this.projectUpgradeService.init( this.storeService, this.lastProcessedHeader.height, this.nodeConfig, this.sequelize, schema ); } async getTargetHeightWithUnfinalizedBlocks(inputHeight: number): Promise

{ const inputHeader = await this.blockchainService.getHeaderForHeight(inputHeight); const unfinalizedBlocks = await this.unfinalizedBlocksService.getMetadataUnfinalizedBlocks(); const bestBlocks = unfinalizedBlocks.filter(({blockHeight}) => blockHeight <= inputHeight); if (bestBlocks.length && inputHeight >= bestBlocks[0].blockHeight) { return bestBlocks[0]; } return inputHeader; } private async getExistingProjectSchema(): Promise { return getExistingProjectSchema(this.nodeConfig, this.sequelize); } get lastProcessedHeader(): {height: number; timestamp?: number} { assert(this._lastProcessedHeader !== undefined, 'Cannot reindex without lastProcessedHeight been initialized'); return this._lastProcessedHeader; } private getStartBlockFromDataSources(): number { const datasources = this.project.dataSources; const startBlocksList = datasources.map((item) => item.startBlock ?? 1); if (startBlocksList.length === 0) { exitWithError( `Failed to find a valid datasource, Please check your endpoint if specName filter is used.`, logger ); } else { return Math.min(...startBlocksList); } } async reindex(targetBlockHeader: Header): Promise { const startHeight = this.getStartBlockFromDataSources(); monitorWrite( `- Reindex when last processed is ${this.lastProcessedHeader.height}, to block ${targetBlockHeader.blockHeight}` ); await reindex( startHeight, targetBlockHeader, this.lastProcessedHeader, this.storeService, this.unfinalizedBlocksService, this.dynamicDsService, this.sequelize, this.projectUpgradeService, this.multiChainRewindService, this.nodeConfig.proofOfIndex ? this.poiService : undefined, this.forceCleanService ); await cacheProviderFlushData(this.storeService.modelProvider, true); monitorWrite(`- Reindex completed`); } } ================================================ FILE: packages/node-core/src/subcommands/testing.core.module.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import {Module} from '@nestjs/common'; import {EventEmitter2} from '@nestjs/event-emitter'; import {SchedulerRegistry} from '@nestjs/schedule'; import { ConnectionPoolService, ConnectionPoolStateManager, InMemoryCacheService, PoiService, PoiSyncService, StoreService, SandboxService, storeModelFactory, NodeConfig, } from '@subql/node-core'; import {Sequelize} from '@subql/x-sequelize'; @Module({ providers: [ SchedulerRegistry, InMemoryCacheService, StoreService, { provide: 'IStoreModelProvider', useFactory: storeModelFactory, inject: [NodeConfig, EventEmitter2, Sequelize], }, EventEmitter2, PoiService, PoiSyncService, SandboxService, ConnectionPoolStateManager, ConnectionPoolService, ], exports: ['IStoreModelProvider', PoiService, PoiSyncService, StoreService, SandboxService, ConnectionPoolService], }) export class TestingCoreModule {} ================================================ FILE: packages/node-core/src/utils/bigint.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 interface BigInt { toJSON(): string; } // Make BigInt json serializable, note this doesn't go from string -> BigInt when parsing BigInt.prototype.toJSON = function () { return `${this.toString()}n`; }; ================================================ FILE: packages/node-core/src/utils/blockHeightMap.spec.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import {BlockHeightMap} from './blockHeightMap'; describe('Ensure correct logic on blockHeightMap', () => { it('getWithinRange should return projects within specified height range', () => { const blockHeightMap = new Map([ [1, {projectName: 'Project A'}], [500, {projectName: 'Project B'}], [1000, {projectName: 'Project C'}], ]); const blockHeight = new BlockHeightMap(blockHeightMap as any); const projectsWithinRange = blockHeight.getWithinRange(499, 700); console.log(projectsWithinRange); expect(projectsWithinRange).toStrictEqual( new Map([ [1, {projectName: 'Project A'}], [500, {projectName: 'Project B'}], ]) ); }); }); ================================================ FILE: packages/node-core/src/utils/blockHeightMap.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 type GetRange = {value: T; startHeight: number; endHeight?: number}; export class EntryNotFoundError extends Error { constructor(height: number) { super(`Entry not found at height ${height}`); } } export class BlockHeightMap { #map: Map; constructor(initialValues: Map) { // Ensure the values are sorted by key this.#map = new Map([...initialValues.entries()].sort((a, b) => a[0] - b[0])); } getAll(): Map { return this.#map; } get(height: number): T { const details = this.getDetails(height); if (details === undefined) { throw new EntryNotFoundError(height); } return details.value; } // Same as get but wont throw when there is nothing in the block range getSafe(height: number): T | undefined { try { return this.get(height); } catch (e) { return undefined; } } getDetails(height: number): GetRange | undefined { let result: GetRange | undefined; const arr = [...this.#map.entries()]; for (let i = 0; i < arr.length; i++) { const [currentHeight, value] = arr[i]; const nextStart = arr[i + 1]?.[0]; const r = { value, startHeight: currentHeight, endHeight: nextStart ? nextStart - 1 : undefined, }; if (currentHeight === height) { result = r; break; } if (currentHeight <= height) { result = r; } if (currentHeight > height) { break; } } return result; } getAllWithRange(): GetRange[] { return [...this.#map.entries()].map(([key, value], index, entries) => { return { value, startHeight: key, endHeight: entries[index + 1]?.[0] - 1, // Start height of the nex item }; }); } getWithinRange(startHeight: number, endHeight: number): Map { const result = new Map(); let previousKey: number | null = null; for (const [key, value] of this.#map) { if (previousKey !== null && previousKey < startHeight && key >= startHeight) { const previousValue = this.#map.get(previousKey); if (previousValue !== undefined) { result.set(previousKey, previousValue); } } if (key >= startHeight && key <= endHeight) { result.set(key, value); } previousKey = key; } return result; } map(fn: (value: T) => T2): BlockHeightMap { const newMap = new Map(); for (const [key, value] of this.#map) { newMap.set(key, fn(value)); } return new BlockHeightMap(newMap); } } ================================================ FILE: packages/node-core/src/utils/blocks.spec.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import {range} from 'lodash'; import {BypassBlocks} from '../indexer'; import {filterBypassBlocks} from './blocks'; describe('bypass logic', () => { it('process bypassBlocks with ranges', () => { let bypassBlocks: BypassBlocks = [20, 40, '5-10', 20, 140]; let currentBlockBatch = [1, 5, 7, 8, 20, 40, 100, 120]; const case_1 = filterBypassBlocks(currentBlockBatch, bypassBlocks); expect(case_1).toEqual([1, 100, 120]); bypassBlocks = [' 5 - 10 ', 20, 140]; currentBlockBatch = [1, 5, 7, 8, 20, 40, 100, 120]; const case_2 = filterBypassBlocks(currentBlockBatch, bypassBlocks); expect(case_2).toEqual([1, 40, 100, 120]); }); it('cleanedBatchBlocks with large amount blocks should not throw error Maximum call stack size exceeded', () => { const bypassBlocks: BypassBlocks = ['50051722-54939220']; const currentBlockBatch = range(34312396, 34312495); const case_1 = filterBypassBlocks(currentBlockBatch, bypassBlocks); expect(case_1).toEqual(currentBlockBatch); }); }); ================================================ FILE: packages/node-core/src/utils/blocks.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import {Schedule} from 'cron-converter'; import {getBlockHeight} from '../indexer/dictionary'; import {BypassBlocks, Header, HistoricalMode, IBlock} from '../indexer/types'; import {getLogger} from '../logger'; const logger = getLogger('timestamp-filter'); export type CronFilter = { cronSchedule?: { schedule: Schedule; next: number; }; }; export function filterBlockTimestamp(blockTimestamp: number, filter: CronFilter): boolean { if (!filter?.cronSchedule) { return true; } if (blockTimestamp > filter.cronSchedule.next) { logger.info(`Block with timestamp ${new Date(blockTimestamp).toString()} is about to be indexed`); logger.info(`Next block will be indexed at ${new Date(filter.cronSchedule.next).toString()}`); filter.cronSchedule.schedule.prev(); return true; } else { filter.cronSchedule.schedule.prev(); return false; } } /** * Takes a list of blocks or block numbers to be enqueued and indexed and removes any based on the bypassBlocks * TODO this could further be optimised by returning the end of a block range to fast forward to. * */ export function filterBypassBlocks( enqueuedBlocks: (IBlock | number)[], bypassBlocks?: BypassBlocks ): (IBlock | number)[] { if (!bypassBlocks?.length) return enqueuedBlocks; return enqueuedBlocks.filter((b) => { if (typeof b === 'number') return !inBypassBlocks(bypassBlocks, b); return !inBypassBlocks(bypassBlocks, getBlockHeight(b)); }); } function inBypassBlocks(bypassBlocks: BypassBlocks, blockNum: number): boolean { return bypassBlocks.some((bypassEntry) => { if (typeof bypassEntry === 'number') return bypassEntry === blockNum; const [start, end] = bypassEntry.split('-').map((val) => parseInt(val.trim(), 10)); return blockNum >= start && blockNum <= end; }); } export function getHistoricalUnit(mode: HistoricalMode, header: Header): number { if (mode === 'timestamp') { if (!header.timestamp) { throw new Error('Timestamp missing on current block header'); } return header.timestamp.getTime(); } return header.blockHeight; } ================================================ FILE: packages/node-core/src/utils/configure.spec.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import path from 'path'; import {ReaderFactory} from '@subql/common'; import {rebaseArgsWithManifest} from '../utils/configure'; jest.setTimeout(30000); describe('configure utils', () => { it('could rebase node args with manifest file', async () => { const mockArgv = { ipfs: '', unsafe: false, batchSize: 500, } as any; const manifestPath = path.join(__dirname, '../../test/v1.0.0/projectOptions.yaml'); const reader = await ReaderFactory.create(manifestPath); const rawManifest = await reader.getProjectSchema(); rebaseArgsWithManifest(mockArgv, rawManifest); // Fill the missing args, in manifest runner historical is enabled expect(mockArgv.disableHistorical).toBeUndefined(); expect(mockArgv.historical).toBeTruthy(); // Keep the original value from argv expect(mockArgv.batchSize).toBe(500); // Args could override manifest options expect(mockArgv.unsafe).toBeFalsy(); }); it('should rebase historical manifest options', () => { const mock = { historical: 'height', } as any; rebaseArgsWithManifest(mock, {runner: {node: {options: {historical: true}}}}); expect(mock.historical).toBe('height'); rebaseArgsWithManifest(mock, {runner: {node: {options: {historical: false}}}}); expect(mock.historical).toBe(false); rebaseArgsWithManifest(mock, {runner: {node: {options: {historical: 'height'}}}}); expect(mock.historical).toBe('height'); rebaseArgsWithManifest(mock, {runner: {node: {options: {historical: 'timestamp'}}}}); expect(mock.historical).toBe('timestamp'); expect(mock.disableHistorical).toBeUndefined(); }); }); ================================================ FILE: packages/node-core/src/utils/configure.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import path from 'path'; import {getProjectRootAndManifest, IPFS_REGEX, RunnerNodeOptionsModel} from '@subql/common'; import {plainToClass} from 'class-transformer'; import {last} from 'lodash'; import {IConfig, MinConfig} from '../configure/NodeConfig'; import {HistoricalMode} from '../indexer'; // These are overridable types from node argv export interface ArgvOverrideOptions { unsafe?: boolean; historical?: HistoricalMode; disableHistorical?: boolean; unfinalizedBlocks?: boolean; skipTransactions?: boolean; } export function defaultSubqueryName(config: Partial): MinConfig { if (config.subquery === undefined) { throw new Error(`Must provide local path or IPFS cid of the subquery project`); } const ipfsMatch = config.subquery.match(IPFS_REGEX); return { ...config, subqueryName: config.subqueryName ?? (ipfsMatch ? config.subquery.replace(IPFS_REGEX, '') : last(getProjectRootAndManifest(config.subquery).root.split(path.sep))), } as MinConfig; } export function rebaseArgsWithManifest(argvs: ArgvOverrideOptions, rawManifest: unknown): void { const options = plainToClass(RunnerNodeOptionsModel, (rawManifest as any)?.runner?.node?.options); if (!options) { return; } // Do this with any options as other SDKs might want to implement custom options (Object.entries(options) as [keyof Omit | 'historical', any][]).map( ([key, value]) => { // we override them if they are not provided in args/flag if (key === 'historical') { if (value !== undefined) { // THIS IS OPPOSITE argvs.historical = value === true ? 'height' : value; } return; } if (value !== undefined && argvs[key] === undefined) { argvs[key] = value; } } ); } ================================================ FILE: packages/node-core/src/utils/decorators.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import {isMainThread} from 'worker_threads'; import {getLogger} from '../logger'; const logger = getLogger('main'); export function mainThreadOnly(): MethodDecorator { return (target, name: string | symbol, descriptor: PropertyDescriptor): void => { if (!!descriptor && typeof descriptor.value === 'function') { const orig = descriptor.value; // tslint:disable no-function-expression no-invalid-this descriptor.value = function (...args: any[]): any { if (!isMainThread) { logger.warn(`${name?.toString()} should only run in main thread`); } return orig.bind(this)(...args); }; } }; } ================================================ FILE: packages/node-core/src/utils/env.spec.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import {existsSync, writeFileSync, unlinkSync, mkdirSync, rmSync} from 'fs'; import {tmpdir} from 'os'; import {join} from 'path'; import {loadProjectEnvConfig, createSandboxProcessEnv} from './env'; describe('Node Core Environment Utils', () => { let testDir: string; let envPath: string; beforeEach(() => { // Create a temporary directory for testing testDir = join(tmpdir(), `subql-node-env-test-${Date.now()}`); mkdirSync(testDir, {recursive: true}); envPath = join(testDir, '.env'); }); afterEach(() => { // Clean up test directory if (existsSync(testDir)) { rmSync(testDir, {recursive: true, force: true}); } }); describe('loadProjectEnvConfig', () => { it('should return empty object when no .env file exists', () => { const config = loadProjectEnvConfig(testDir); expect(config).toEqual({}); }); it('should load environment variables from .env file', () => { const envContent = [ 'NODE_ENV=development', 'DATABASE_HOST=localhost', 'DATABASE_PORT=5432', 'INDEXER_WORKERS=4', 'LOG_LEVEL=debug', ].join('\n'); writeFileSync(envPath, envContent); const config = loadProjectEnvConfig(testDir); expect(config).toEqual({ NODE_ENV: 'development', DATABASE_HOST: 'localhost', DATABASE_PORT: '5432', INDEXER_WORKERS: '4', LOG_LEVEL: 'debug', }); }); it('should handle parsing errors gracefully', () => { const consoleSpy = jest.spyOn(console, 'warn').mockImplementation(); // Create an invalid .env file (binary content) writeFileSync(envPath, Buffer.from([0x00, 0x01, 0x02, 0x03])); const config = loadProjectEnvConfig(testDir); expect(config).toBeDefined(); consoleSpy.mockRestore(); }); }); describe('createSandboxProcessEnv', () => { it('should create process.env compatible object', () => { const envConfig = { NODE_ENV: 'development', DATABASE_HOST: 'localhost', DATABASE_PORT: '5432', INDEXER_WORKERS: '4', }; const processEnv = createSandboxProcessEnv(envConfig); expect(processEnv).toEqual({ NODE_ENV: 'development', DATABASE_HOST: 'localhost', DATABASE_PORT: '5432', INDEXER_WORKERS: '4', }); }); it('should filter out undefined values', () => { const envConfig = { DEFINED_VAR: 'value', UNDEFINED_VAR: undefined, ANOTHER_VAR: 'another-value', }; const processEnv = createSandboxProcessEnv(envConfig); expect(processEnv).toEqual({ DEFINED_VAR: 'value', ANOTHER_VAR: 'another-value', }); expect(processEnv.UNDEFINED_VAR).toBeUndefined(); }); it('should handle empty string values', () => { const envConfig = { EMPTY_VAR: '', ZERO_VAR: '0', }; const processEnv = createSandboxProcessEnv(envConfig); expect(processEnv).toEqual({ EMPTY_VAR: '', ZERO_VAR: '0', }); }); it('should handle empty config', () => { const envConfig = {}; const processEnv = createSandboxProcessEnv(envConfig); expect(processEnv).toEqual({}); }); }); describe('Integration test', () => { it('should work end-to-end from file to sandbox env', () => { const envContent = [ 'NODE_ENV=production', 'DATABASE_URL=postgresql://prod-server:5432/subql', 'REDIS_URL=redis://prod-redis:6379', 'MAX_CONNECTIONS=20', 'ENABLE_CACHE=true', ].join('\n'); writeFileSync(envPath, envContent); const config = loadProjectEnvConfig(testDir); const processEnv = createSandboxProcessEnv(config); expect(processEnv).toEqual({ NODE_ENV: 'production', DATABASE_URL: 'postgresql://prod-server:5432/subql', REDIS_URL: 'redis://prod-redis:6379', MAX_CONNECTIONS: '20', ENABLE_CACHE: 'true', }); }); }); }); ================================================ FILE: packages/node-core/src/utils/env.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import {existsSync} from 'fs'; import path from 'path'; import {config as dotenvConfig} from 'dotenv'; export interface EnvConfig { [key: string]: string | undefined; } /** * Load environment variables from .env file in the project directory * @param projectDir - The project directory path * @returns Object containing environment variables */ export function loadProjectEnvConfig(projectDir: string): EnvConfig { const envPath = path.join(projectDir, '.env'); if (!existsSync(envPath)) { return {}; } try { const envConfig = dotenvConfig({path: envPath}); return envConfig.parsed || {}; } catch (error) { console.warn(`Warning: Failed to load .env file at ${envPath}:`, error); return {}; } } /** * Create a process.env object for sandbox injection * @param envConfig - Environment configuration object * @returns Object with environment variables for sandbox */ export function createSandboxProcessEnv(envConfig: EnvConfig): Record { const processEnv: Record = {}; Object.keys(envConfig).forEach((key) => { const value = envConfig[key]; if (value !== undefined) { processEnv[key] = value; } }); return processEnv; } ================================================ FILE: packages/node-core/src/utils/fetchHelper.spec.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import {retryOnFailAxios} from './fetchHelpers'; jest.setTimeout(30000); describe('fetchHelpers', () => { it('retryOnFail', async () => { const axiosError = new Error(); (axiosError as any).response = {status: 429}; const mockAxiosRequest = jest.fn().mockImplementation(() => { throw axiosError; }); const mockNotAxiosRequest = jest.fn().mockImplementation(() => { throw new Error('Oh no it failed'); }); // If not Axios error, should only be called once await expect(retryOnFailAxios(mockNotAxiosRequest, [429])).rejects.toThrow(); expect(mockNotAxiosRequest).toHaveBeenCalledTimes(1); //If Axios error, should retry 5 times before throwing await expect(retryOnFailAxios(mockAxiosRequest, [429])).rejects.toThrow(); expect(mockAxiosRequest).toHaveBeenCalledTimes(5); }); }); ================================================ FILE: packages/node-core/src/utils/fetchHelpers.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import {getLogger} from '../logger'; import {delay} from './promise'; const logger = getLogger('fetch'); const RETRY_COUNT = 5; const RETRY_DELAY = 2; export async function retryOnFail( request: () => Promise, shouldRetry: (error: any) => boolean, retries = RETRY_COUNT ): Promise { try { return await request(); } catch (e: any) { if (!shouldRetry(e)) throw e; if (retries > 1) { await delay(RETRY_DELAY); return retryOnFail(request, shouldRetry, --retries); } else { logger.error(e, `Retries failed after ${RETRY_COUNT}`); throw e; } } } // When dealing with Axios errors use shouldRetry export async function retryOnFailAxios(request: () => Promise, statusCodes: number[]): Promise { return retryOnFail(request, (e) => !!statusCodes.find((t) => t === e?.response?.status)); } ================================================ FILE: packages/node-core/src/utils/graphql.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import { getTypeByScalarName, GraphQLModelsType, isHex, hexToU8a, u8aToBuffer, u8aToHex, bufferToU8a, isBuffer, isNull, GraphQLEntityField, GraphQLJsonFieldType, blake2AsHex, } from '@subql/utils'; import {ModelAttributes, ModelAttributeColumnOptions} from '@subql/x-sequelize'; import {isArray, isObject} from 'lodash'; export function enumNameToHash(enumName: string): string { return blake2AsHex(enumName).substr(2, 10); } export interface EnumType { enumValues: string[]; name?: string; type?: string; } export function modelsTypeToModelAttributes( modelType: GraphQLModelsType, enums: Map, schema: string ): ModelAttributes { const fields = modelType.fields; return Object.values(fields).reduce((acc, field) => { acc[field.name] = getColumnOption(field, enums, schema); return acc; }, {} as ModelAttributes); } export function getColumnOption( field: GraphQLEntityField, enums: Map, schema: string ): ModelAttributeColumnOptions { const allowNull = field.nullable; let enumType: string | null = null; if (field.isEnum) { const enumTypeName = enumNameToHash(field.type); const enumTypeNameDeprecated = `${schema}_enum_${enumNameToHash(field.type)}`; [enumTypeName, enumTypeNameDeprecated].forEach((t) => { if (enums.has(t)) { enumType = t === enumTypeNameDeprecated ? `"${t}"` : `"${schema}"."${enumTypeName}"`; } }); } if (field.isEnum && !enumType) throw new Error('Unable to get enum type'); const type = field.isEnum ? `${enumType}${field.isArray ? '[]' : ''}` : field.isArray || field.jsonInterface ? getTypeByScalarName('Json')?.sequelizeType : getTypeByScalarName(field.type)?.sequelizeType; if (type === undefined) { throw new Error('Unable to get model type'); } const columnOption: ModelAttributeColumnOptions = { type, comment: field.description, allowNull, primaryKey: field.type === 'ID', }; if (field.type === 'BigInt') { columnOption.get = function () { const dataValue = this.getDataValue(field.name); if (field.isArray) { return dataValue ? dataValue.map((v: any) => BigInt(v)) : null; } return dataValue ? BigInt(dataValue) : null; }; columnOption.set = function (val: any) { if (field.isArray) { this.setDataValue( field.name, (val as any[])?.map((v) => v.toString()) ); } else { this.setDataValue(field.name, val?.toString()); } }; } if (field.type === 'Bytes') { columnOption.get = function () { const dataValue = this.getDataValue(field.name); if (!dataValue) { return null; } if (!isBuffer(dataValue)) { throw new Error(`Bytes: store.get() returned type is not buffer type`); } return u8aToHex(bufferToU8a(dataValue)); }; columnOption.set = function (val: unknown) { if (val === undefined || isNull(val)) { this.setDataValue(field.name, null); } else if (isHex(val)) { const setValue = u8aToBuffer(hexToU8a(val)); this.setDataValue(field.name, setValue); } else { throw new Error(`input for Bytes type is only support unprefixed hex`); } }; } if (field.jsonInterface) { columnOption.get = function () { const dataValue = this.getDataValue(field.name); if (!dataValue || !field.jsonInterface) { return null; } return field.isArray ? dataValue.map((v: any) => processGetJson(field, v)) : processGetJson(field, dataValue); }; columnOption.set = function (val: unknown) { if (val === undefined || isNull(val)) { this.setDataValue(field.name, null); return; } if (isArray(val)) { const setValue = val.length === 0 ? [] : val.map((v) => processSetJson(v)); this.setDataValue(field.name, setValue); } else if (isObject(val)) { this.setDataValue(field.name, processSetJson(val)); } else { throw new Error(`input for Json type only supports object or array, received type ${typeof val}`); } }; } return columnOption; } /*** * Process nested json get, output is same as input value type * @param field * @param value */ function processGetJson(field: GraphQLEntityField | GraphQLJsonFieldType, value: any): any { // bigIntFields and nestJsonFields from this level in the entity/json const bigIntFields = field.jsonInterface?.fields.filter((f) => f.type === 'BigInt'); const nestJsonFields = field.jsonInterface?.fields.filter((f) => f.jsonInterface); const processBigIntFields = (value: any) => { if (bigIntFields) { for (const bigIntField of bigIntFields) { // If null is passed, we should not convert it to BigInt if (value[bigIntField.name] !== undefined && value[bigIntField.name] !== null) { value[bigIntField.name] = BigInt(value[bigIntField.name].slice(0, -1)); } } } return value; }; if (nestJsonFields) { for (const nestJsonField of nestJsonFields) { // have a nest field, and nest field is json type, also value is defined if (nestJsonField.jsonInterface && value[nestJsonField.name]) { value[nestJsonField.name] = processGetJson(nestJsonField, value[nestJsonField.name]); } } } return processBigIntFields(value); } function processSetJson(data: any): any { return JSON.parse( JSON.stringify(data, (key, value) => { if (typeof value === 'bigint') { return `${value}n`; } return value; }) ); } ================================================ FILE: packages/node-core/src/utils/index.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 export * from './decorators'; export * from './object'; export * from './promise'; export * from './graphql'; export * from './queues'; export * from './project'; export * from './fetchHelpers'; export * from './configure'; export * from './reindex'; export * from './blocks'; export * from './blockHeightMap'; export * from './string'; ================================================ FILE: packages/node-core/src/utils/object.spec.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import {camelCaseObjectKey} from './object'; it('Convert objects key to camelCase', () => { const object = { entity: 'someEntity', active_for_auction: 'someAuction', }; const result = camelCaseObjectKey(object); expect(result).toEqual({ entity: 'someEntity', activeForAuction: 'someAuction', }); }); ================================================ FILE: packages/node-core/src/utils/object.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import {assignWith, camelCase, isUndefined} from 'lodash'; export function assign( target: TObject, src: TSource1, src2?: TSource2 ): TObject & TSource1 & (TSource2 | undefined) { return assignWith(target, src, src2, (objValue, srcValue) => (isUndefined(srcValue) ? objValue : srcValue)); } export function camelCaseObjectKey(object: Record): object { return Object.keys(object).reduce( (result, key) => ({ ...result, [camelCase(key)]: object[key], }), {} ); } export function splitArrayByRatio(arr: number[], weights: number[]): number[][] { const result: number[][] = []; let start = 0; for (let i = 0; i < weights.length; i++) { const end = Math.floor(arr.length * weights[i]) + start; result.push(arr.slice(start, end)); start = end; } return result; } export function hasValue(obj: T | undefined | null): obj is T { return obj !== undefined && obj !== null; } export function customCamelCaseGraphqlKey(str: string) { return str .replace(/([a-z])([A-Z])/g, '$1_$2') .replace(/([A-Z]+)([A-Z][a-z])/g, '$1_$2') .toLowerCase() .replace(/_([a-z])/g, (_, letter) => letter.toUpperCase()); } ================================================ FILE: packages/node-core/src/utils/project.spec.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import {isCustomDs} from '@subql/common-substrate'; import { SubstrateBlockHandler, SubstrateCallHandler, SubstrateDatasource, SubstrateDatasourceKind, SubstrateEventHandler, SubstrateHandlerKind, SubstrateRuntimeHandler, } from '@subql/types'; import {BaseCustomDataSource} from '@subql/types-core'; import {getModulos} from './project'; const blockHandler: SubstrateBlockHandler = { kind: SubstrateHandlerKind.Block, handler: 'handleBlock', }; const callHandler: SubstrateCallHandler = { kind: SubstrateHandlerKind.Call, handler: 'handleCall', filter: {method: 'call', module: 'module'}, }; const eventHandler: SubstrateEventHandler = { kind: SubstrateHandlerKind.Event, handler: 'handleEvent', filter: {method: 'event', module: 'module'}, }; const makeDs = (handlers: SubstrateRuntimeHandler[]) => { return { name: '', kind: SubstrateDatasourceKind.Runtime, mapping: { file: '', handlers, }, }; }; describe('Project Utils', () => { it('gets the correct modulos', () => { const modulos = getModulos( [ makeDs([{...blockHandler, filter: {modulo: 5}}]), makeDs([callHandler]), makeDs([eventHandler, {...blockHandler, filter: {modulo: 2}}]), ], isCustomDs, SubstrateHandlerKind.Block ); expect(modulos).toEqual([5, 2]); }); }); ================================================ FILE: packages/node-core/src/utils/project.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import fs from 'fs'; import os from 'os'; import path from 'path'; import {DEFAULT_PORT, GithubReader, IPFSReader, LocalReader} from '@subql/common'; import { BaseAssetsDataSource, BaseCustomDataSource, BaseDataSource, BaseTemplateDataSource, Reader, } from '@subql/types-core'; import {findAvailablePort} from '@subql/utils'; import {QueryTypes, Sequelize} from '@subql/x-sequelize'; import {stringToArray, getSchedule, Schedule} from 'cron-converter'; import tar from 'tar'; import {NodeConfig} from '../configure/NodeConfig'; import {StoreService} from '../indexer'; import {getLogger} from '../logger'; import {exitWithError} from '../process'; import {CronFilter} from './blocks'; const logger = getLogger('Project-Utils'); export async function getValidPort(argvPort?: number): Promise { const validate = (x: any) => { const p = parseInt(x); return isNaN(p) ? null : p; }; const port = validate(argvPort) ?? (await findAvailablePort(DEFAULT_PORT)); if (!port) { const errMsg = `Unable to find available port (tried ports in range (${DEFAULT_PORT}..${ DEFAULT_PORT + 10 })). Try setting a free port manually by setting the --port flag`; exitWithError(errMsg, logger); } return port; } export async function prepareProjectDir(projectPath: string): Promise { const stats = fs.statSync(projectPath); if (stats.isFile()) { const sep = path.sep; const tmpDir = os.tmpdir(); const tempPath = fs.mkdtempSync(`${tmpDir}${sep}`); // Will promote errors if incorrect format/extension await tar.x({file: projectPath, cwd: tempPath}); return tempPath.concat('/package'); } else if (stats.isDirectory()) { return projectPath; } throw new Error(`Project path: ${projectPath} doesn't exist`); } export async function getExistingProjectSchema( nodeConfig: NodeConfig, sequelize: Sequelize ): Promise { const schema = nodeConfig.dbSchema; let schemas: string[]; try { const result = await sequelize.query(`SELECT schema_name FROM information_schema.schemata`, { type: QueryTypes.SELECT, }); schemas = result.map((x: any) => x.schema_name); } catch (err) { exitWithError(new Error(`Unable to fetch all schemas`, {cause: err}), logger); } if (!schemas.includes(schema)) { return undefined; } return schema; } export async function getEnumDeprecated(sequelize: Sequelize, enumTypeNameDeprecated: string): Promise { const [resultsDeprecated] = await sequelize.query( `select e.enumlabel as enum_value from pg_type t join pg_enum e on t.oid = e.enumtypid where t.typname = ? order by enumsortorder;`, {replacements: [enumTypeNameDeprecated]} ); return resultsDeprecated; } export type IsCustomDs = (x: DS | CDS) => x is CDS; // TODO remove this type, it would result in a breaking change though /** * @deprecated Please unwrap the datasource from this type * */ export type SubqlProjectDs = DS; export function getModulos( dataSources: DS[], isCustomDs: IsCustomDs, blockHandlerKind: string ): number[] { const modulos: number[] = []; for (const ds of dataSources) { if (isCustomDs(ds)) { continue; } for (const handler of ds.mapping.handlers) { if (handler.kind === blockHandlerKind && handler.filter && handler.filter.modulo) { modulos.push(handler.filter.modulo); } } } return modulos; } export function isAssetsDs(ds: unknown): ds is BaseAssetsDataSource { return !!(ds as any).assets; } export async function updateDataSourcesV1_0_0( _dataSources: (DS | CDS)[], reader: Reader, root: string, isCustomDs: IsCustomDs ): Promise<(DS | CDS)[]> { // force convert to updated ds return Promise.all( _dataSources.map(async (dataSource) => { dataSource.startBlock = dataSource.startBlock ?? 1; const entryScript = await loadDataSourceScript(reader, dataSource.mapping.file); if (isAssetsDs(dataSource) && dataSource.assets) { for (const [, asset] of dataSource.assets.entries()) { // Only need to resolve path for local file if (reader instanceof LocalReader) { asset.file = path.resolve(root, asset.file); } else { asset.file = await fetchAndSaveFile(reader, root, asset.file, ''); } } } const file = await updateDataSourcesEntry(reader, dataSource.mapping.file, root, entryScript); if (isCustomDs(dataSource)) { if (dataSource.processor) { dataSource.processor.file = await updateProcessor(reader, root, dataSource.processor.file); } return { ...dataSource, mapping: {...dataSource.mapping, file}, }; } else { return { ...dataSource, mapping: {...dataSource.mapping, file}, }; } }) ); } export async function updateDataSourcesEntry( reader: Reader, file: string, root: string, script: string ): Promise { if (reader instanceof LocalReader) return file; else if (reader instanceof IPFSReader || reader instanceof GithubReader) { return saveFile(reader, root, file, script); } throw new Error('Un-known reader type'); } export async function updateProcessor(reader: Reader, root: string, file: string): Promise { if (reader instanceof LocalReader) { return path.resolve(root, file); } else { return fetchAndSaveFile(reader, root, file); } } export async function fetchAndSaveFile(reader: Reader, root: string, file: string, ext = 'js'): Promise { if (!(reader instanceof IPFSReader || reader instanceof GithubReader)) { throw new Error('Only IPFS and Github readers can save remote files'); } const res = await reader.getFile(file); if (!res) { throw new Error(`Unable to read file ${file}`); } return saveFile(reader, root, file, res, ext); } export async function saveFile(reader: Reader, root: string, file: string, data: string, ext = 'js'): Promise { if (!(reader instanceof IPFSReader || reader instanceof GithubReader)) { throw new Error('Only IPFS and Github readers can save remote files'); } const resolved = path.resolve(root, file.replace('ipfs://', '')); const outputPath = ext ? `${resolved}.${ext}` : resolved; if (fs.existsSync(outputPath)) { return outputPath; } await fs.promises.writeFile(outputPath, data); return outputPath; } export async function loadDataSourceScript(reader: Reader, file?: string): Promise { let entry = file; //For RuntimeDataSourceV0_0_1 if (!entry) { const pkg = await reader.getPkg(); if (pkg === undefined) throw new Error('Project package.json is not found'); if (pkg.main) { entry = pkg.main.startsWith('./') ? pkg.main : `./${pkg.main}`; } else { entry = './dist'; } } //Else get file const entryScript = await reader.getFile(entry); if (entryScript === undefined) { throw new Error(`Entry file ${entry} for datasource not exist`); } return entryScript; } export type IsRuntimeDs = (ds: DS) => ds is DS; // eslint-disable-next-line @typescript-eslint/require-await export async function insertBlockFiltersCronSchedules( dataSources: DS[], getBlockTimestamp: (height: number) => Promise, isRuntimeDs: IsRuntimeDs, blockHandlerKind: string ): Promise { dataSources = await Promise.all( dataSources.map(async (ds) => { if (isRuntimeDs(ds)) { const startBlock = ds.startBlock ?? 1; let timestampReference: Date; ds.mapping.handlers = await Promise.all( ds.mapping.handlers.map(async (handler) => { if (handler.kind === blockHandlerKind) { if (handler.filter?.timestamp) { if (!timestampReference) { const blockTimestamp = await getBlockTimestamp(startBlock); timestampReference = blockTimestamp; } let cronArr: number[][]; try { cronArr = stringToArray(handler.filter.timestamp); } catch (e) { throw new Error(`Invalid Cron string: ${handler.filter.timestamp}`); } const schedule = getSchedule(cronArr, timestampReference, 'utc'); handler.filter.cronSchedule = { schedule: schedule, get next() { return (this.schedule as Schedule).next().toMillis(); }, } satisfies CronFilter['cronSchedule']; } } return handler; }) ); } return ds; }) ); return dataSources; } export async function loadProjectTemplates( templates: T[] | undefined, root: string, reader: Reader, isCustomDs: IsCustomDs ): Promise { if (!templates || !templates.length) { return []; } const templateIsCustomDs = (template: T): template is T & BaseCustomDataSource => isCustomDs(template) && 'name' in template; const dsTemplates = await updateDataSourcesV1_0_0(templates, reader, root, templateIsCustomDs); return dsTemplates.map((ds, index) => ({ ...ds, name: templates[index].name, })); } export function getStartHeight(dataSources: BaseDataSource[]): number { const startBlocksList = dataSources.map((item) => item.startBlock || 1); if (startBlocksList.length === 0) { throw new Error(`Failed to find a valid datasource, Please check your endpoint if specName filter is used.`); } else { return Math.min(...startBlocksList); } } ================================================ FILE: packages/node-core/src/utils/promise.spec.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import {BackoffError, backoffRetry, delay, timeout} from './promise'; describe('Promise Utils', () => { it('utils.promise delay()', async () => { const start = new Date(); await delay(1); const millsecDiff = new Date().getTime() - start.getTime(); expect(millsecDiff).toBeGreaterThanOrEqual(1000); expect(millsecDiff).toBeLessThan(1050); }); it('utils.promise timeout()', async () => { const firstPromise = (async () => { await delay(1); return true; })(); await expect(timeout(firstPromise, 2)).resolves.toEqual(true); const secondPromise = delay(3); await expect(timeout(secondPromise, 2)).rejects.toThrow(/timeout/); }); describe('BackoffRetry', () => { it(`doesn't retry with success`, async () => { const fn = jest.fn(() => Promise.resolve()); await backoffRetry(fn, 5); expect(fn).toHaveBeenCalledTimes(1); }); it(`retries multiple times`, async () => { let count = 0; const fn = jest.fn(() => { if (count < 1) { count++; return Promise.reject(new Error('Test')); } return Promise.resolve(); }); await backoffRetry(fn, 5); expect(fn).toHaveBeenCalledTimes(2); }); it(`throws when reaching the number of retries`, async () => { const e = new Error('Test'); const fn = jest.fn(() => Promise.reject(e)); await expect(() => backoffRetry(fn, 2)).rejects.toEqual(new BackoffError(e)); }); }); }); ================================================ FILE: packages/node-core/src/utils/promise.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 //deprecate method, use delay from @subql/common export async function delay(sec: number): Promise { return new Promise((resolve) => { setTimeout(resolve, sec * 1000); }); } export async function timeout(promise: Promise, sec: number, errMsg = 'timeout'): Promise { // so we can have a more comprehensive error stack const err = new Error(errMsg); let timeout: NodeJS.Timeout; return Promise.race([ promise.then( (r) => { clearTimeout(timeout); return r; }, (e) => { clearTimeout(timeout); throw e; } ), new Promise((resolve, reject) => { timeout = setTimeout(() => reject(err), sec * 1000); }), ]); } export class BackoffError extends Error { readonly lastError: any; constructor(lastError: any, options?: ErrorOptions) { super('Maximum number of retries reached', options); this.lastError = lastError; } } export function isBackoffError(error: any): error is BackoffError { return error instanceof BackoffError; } async function backoffRetryInternal(fn: () => Promise, maxAttempts: number, currentAttempt = 0): Promise { try { return await fn(); } catch (e) { if (maxAttempts - 1 === currentAttempt) { throw new BackoffError(e, {cause: e}); } await delay(Math.pow(2, currentAttempt)); return backoffRetryInternal(fn, maxAttempts, currentAttempt + 1); } } export async function backoffRetry(fn: () => Promise, attempts = 5): Promise { return backoffRetryInternal(fn, attempts); } ================================================ FILE: packages/node-core/src/utils/queues/autoQueue.spec.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import {AutoQueue} from './autoQueue'; describe('AutoQueue', () => { it('resolves promises in the order they are pushed', async () => { const autoQueue = new AutoQueue(10, 5); const results: number[] = []; const tasks = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10].map((v) => async () => { const randomTime = Math.floor(Math.random() * 1000); await new Promise((resolve) => setTimeout(resolve, randomTime)); return v; }); await Promise.all( tasks.map(async (t) => { const r = await autoQueue.put(t); results.push(r); }) ); expect(results).toEqual([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]); }); it('doesnt resolve tasks if flush is called', async () => { const autoQueue = new AutoQueue(10, 2); const results: number[] = []; let abortedCount = 0; const tasks = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10].map((v) => async () => { await new Promise((resolve) => setTimeout(resolve, 100)); return v; }); tasks.map((t) => { void autoQueue .put(t) .then((r) => { results.push(r); }) .catch((e) => { abortedCount++; }); }); // Wait for some tasks to complete await new Promise((resolve) => setTimeout(resolve, 110)); autoQueue.flush(); expect(autoQueue.size).toBe(0); // Wait for any other tasks to be completed await new Promise((resolve) => setTimeout(resolve, 1000)); expect(results).toEqual([1, 2]); // Match concurrency expect(abortedCount).toEqual(2); }); it('has a cap on the number of out of order tasks', async () => { const autoQueue = new AutoQueue(10, 2, 0.2); const results: number[] = []; const tasks = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10].map((v) => async () => { // Set a large timeout for the first task to simulate blocking const randomTime = v === 1 ? 400 : 100; await new Promise((resolve) => setTimeout(resolve, randomTime)); return v; }); await expect( Promise.all( tasks.map(async (t) => { const r = await autoQueue.put(t); results.push(r); }) ) ).rejects.toEqual(new Error('Auto Queue process task timeout in 0.2 seconds. Please increase --timeout')); }); it('can adjust the parallelism while running', async () => { const autoQueue = new AutoQueue(10, 2); const results: number[] = []; const tasks = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10].map((v) => async () => { await new Promise((resolve) => setTimeout(resolve, 100)); return v; }); const start1 = new Date(); await Promise.all( tasks.map(async (t) => { const r = await autoQueue.put(t); results.push(r); }) ); const end1 = new Date(); expect(end1.getTime() - start1.getTime()).toBeGreaterThanOrEqual(500); // Update the concurrency, the next batch should complete much quicker autoQueue.concurrency = 5; const tasks2 = [11, 12, 13, 14, 15, 16, 17, 18, 19, 20].map((v) => async () => { await new Promise((resolve) => setTimeout(resolve, 100)); return v; }); const start2 = new Date(); await Promise.all( tasks2.map(async (t) => { const r = await autoQueue.put(t); results.push(r); }) ); const end2 = new Date(); expect(end2.getTime() - start2.getTime()).toBeLessThanOrEqual(300); }); it('includes running tasks in the size and free space', /*async*/ () => { const autoQueue = new AutoQueue(10, 2); let resolveFn: () => void = () => { /* Nothing */ }; const pendingPromise = new Promise((resolve) => { resolveFn = resolve; }); const task = async () => { await pendingPromise; }; void autoQueue.put(task); expect(autoQueue.size).toEqual(1); expect(autoQueue.freeSpace).toEqual(9); expect(autoQueue.size + (autoQueue.freeSpace ?? 0)).toEqual(autoQueue.capacity); // Assertions done, complete the task resolveFn(); }); it('resumes after flushing', async () => { const autoQueue = new AutoQueue(10, 2, 1); const results: number[] = []; const tasks = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10].map((v) => async () => { await new Promise((resolve) => setTimeout(resolve, 100)); return v; }); tasks.map((t) => { void autoQueue .put(t) .then((r) => { results.push(r); }) .catch((e) => { // We expect some to throw as they get flushed }); }); // Wait for some tasks to complete await new Promise((resolve) => setTimeout(resolve, 200)); autoQueue.flush(); const tasks2 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10].map((v) => async () => { await new Promise((resolve) => setTimeout(resolve, 100)); return v; }); await Promise.all( tasks2.map((t) => { return autoQueue.put(t).then((r) => { results.push(r + 10); }); }) ); expect(results).toEqual([1, 2, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]); }); it('resolves the isIdle promise when the queue becomes idle', async () => { const autoQueue = new AutoQueue(10, 2, 1); const pendingIdle = autoQueue.onIdle(); const tasks = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10].map((v) => async () => { await new Promise((resolve) => setTimeout(resolve, 100)); return v; }); autoQueue.putMany(tasks); await expect(pendingIdle).resolves.toBeUndefined(); }); it('correctly processes out of order tasks', async () => { // This test fills up the queue with tasks, all but the first one completes then the rest should resolve let firstTask: (value: unknown) => void = () => { /* Nothing*/ }; let lastResolve: (value: unknown) => void; const lastDone = new Promise((resolve) => (lastResolve = resolve)); const numTasks = 1000; const tasks = new Array(numTasks).fill(0).map((_, i) => async () => { if (i === 0) { await new Promise((resolve) => { firstTask = resolve; }); return i; } else { if (i === numTasks - 1) { lastResolve(i); } return i; } }); const autoQueue = new AutoQueue(numTasks, numTasks); const pendingTasks = autoQueue.putMany(tasks); await lastDone; firstTask(undefined); await expect(Promise.all(pendingTasks)).resolves.not.toThrow(); }); }); ================================================ FILE: packages/node-core/src/utils/queues/autoQueue.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import {EventEmitter2} from '@nestjs/event-emitter'; import {timeout} from '../promise'; import {IQueue, Queue} from './queue'; export class TaskFlushedError extends Error { readonly name = 'TaskFlushedError'; constructor(queueName = 'Auto') { super(`This task was flushed from the ${queueName} queue before completing`); } } export function isTaskFlushedError(e: any): e is TaskFlushedError { return (e as TaskFlushedError)?.name === 'TaskFlushedError'; } export type Task = () => Promise | T; type Action = { index: number; task: Task; resolve: (value: T) => void; reject: (reason: any) => void; }; /* * AutoQueue processes asnyc functions in order with a level of concurrency * When concurrency is used it will be running many functions concurrently, * but the promisies for this will still resolve in order they were inserted in the queue */ export class AutoQueue implements IQueue { private pendingPromise = false; private queue: Queue>; private _abort = false; private _resolveIdle?: () => void; // private processingTasks = 0; private eventEmitter = new EventEmitter2(); private runningTasks: Promise[] = []; // Completed tasks that have completed before earlier tasks private outOfOrderTasks: Record; result?: T; error?: unknown}> = {}; // Next index assigned to a task when pushing to the queue private nextIndex = 0; // Next task to resolve, used to order the outOfOrderTasks private nextTask = 0; // Flag to ensure processOutOfOrderTasks is not re-entrant private isProcessingOutOfOrder = false; /** * @param {number} capacity - The size limit of the queue, if undefined there is no limit * @param {number} [concurrency=1] - The number of parallel tasks that can be processed at any one time. * @param {number} [taskTimeoutSec=900] - A timeout for tasks to complete in. Units are seconds. Align with nodeConfig process timeout. * @param {string} [name] - A name for the queue to help with debugging * */ constructor( capacity?: number, public concurrency = 1, private taskTimeoutSec = 900, protected name = 'Auto' ) { this.queue = new Queue>(capacity); } get size(): number { return this.queue.size + this.runningTasks.length + Object.keys(this.outOfOrderTasks).length; } get capacity(): number | undefined { return this.queue.capacity; } get freeSpace(): number | undefined { if (!this.capacity) return undefined; return this.capacity - this.size; } /* * We don't want this function to be async * If it is async it will return a promise that throws rather than throwing the function */ // eslint-disable-next-line @typescript-eslint/promise-function-async put(item: Task): Promise { return this.putMany([item])[0]; } // eslint-disable-next-line @typescript-eslint/promise-function-async putMany(tasks: Array>): Promise[] { if (this.freeSpace && tasks.length > this.freeSpace) { throw new Error(`${this.name} Queue exceeds max size of ${this.capacity}`); } if (this._abort) { throw new Error(`${this.name} Queue has been aborted`); } return tasks.map((task, index) => { return new Promise((resolve, reject) => { this.queue.put({task, resolve, reject, index: this.nextIndex++}); if (tasks.length - 1 === index) { void this.take(); } }); }); } private processOutOfOrderTasks() { // If already processing, let the existing call handle it. if (this.isProcessingOutOfOrder) return; this.isProcessingOutOfOrder = true; try { // Loop as long as the next task in sequence is present in the outOfOrderTasks map let record = this.outOfOrderTasks[this.nextTask]; while (record !== undefined) { if (record.error !== undefined) { record.action.reject(record.error); } else if (record.result !== undefined) { record.action.resolve(record.result); } delete this.outOfOrderTasks[this.nextTask]; this.nextTask++; // Check for the next record for the next iteration record = this.outOfOrderTasks[this.nextTask]; } } finally { this.isProcessingOutOfOrder = false; } } private async take(): Promise { if (this.pendingPromise) return; if (this._abort) { return; } while (!this._abort) { const action = this.queue.take(); // No more actions to start, take will be called again when new items are pushed if (!action) break; this.pendingPromise = true; const p = timeout( Promise.resolve(action.task()), this.taskTimeoutSec, `${this.name} Queue process task timeout in ${this.taskTimeoutSec} seconds. Please increase --timeout` ) .then((result) => { // Queue was flushed while task was running, we ned to discard now if (this.nextTask > action.index) { action.reject(new TaskFlushedError(this.name)); return; } this.outOfOrderTasks[action.index] = {action, result}; }) .catch((error) => { // Queue was flushed while task was running, we ned to discard now if (this.nextTask > action.index) { action.reject(new TaskFlushedError(this.name)); return; } this.outOfOrderTasks[action.index] = {action, error}; }) .finally(() => { const index = this.runningTasks.indexOf(p); // If the index is -1 then the queue will have been flushed if (index >= 0) { this.processOutOfOrderTasks(); this.runningTasks.splice(index, 1); } }); this.runningTasks.push(p); if (this.runningTasks.length >= this.concurrency) { // Load up more when any task completes await Promise.any(this.runningTasks); } } // Processed all items in the queue this._resolveIdle?.(); this._resolveIdle = undefined; this.pendingPromise = false; } flush(): void { // Empty the queue this.queue.takeAll(); // Remove reference to runing tasks, they will still continue running but the result wont be used this.runningTasks = []; // Set the next task to the index that would be used after flush this.nextTask = this.nextIndex; // Clean up out of order tasks Object.entries(this.outOfOrderTasks).map(([id, task]) => { // Is this desired behaviour? The other option would be resolving undefined task.action.reject(new TaskFlushedError(this.name)); }); this.outOfOrderTasks = {}; this.pendingPromise = false; } abort(): void { this._abort = true; } on(evt: 'size', callback: (size: number) => void | Promise): () => void { this.eventEmitter.on(evt, callback as (size: number) => void); return () => this.eventEmitter.off(evt, callback as (size: number) => void); } async onIdle(): Promise { if (this.size === 0) { return; } return new Promise((resolve) => { const currentResolve = this._resolveIdle; this._resolveIdle = () => { currentResolve?.(); resolve(); }; }); } } ================================================ FILE: packages/node-core/src/utils/queues/index.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 export * from './autoQueue'; export * from './queue'; export * from './rampQueue'; ================================================ FILE: packages/node-core/src/utils/queues/queue.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 export interface IQueue { size: number; capacity: number | undefined; freeSpace: number | undefined; flush(): void; } export class Queue implements IQueue { protected items: T[] = []; private _capacity?: number; constructor(capacity?: number) { this._capacity = capacity; } get size(): number { return this.items.length; } get capacity(): number | undefined { return this._capacity; } get freeSpace(): number | undefined { if (!this._capacity) return undefined; return this._capacity - this.size; } put(item: T): void { this.putMany([item]); } putMany(items: T[]): void { if (this.freeSpace && items.length > this.freeSpace) { throw new Error('Queue exceeds max size'); } this.items.push(...items); } peek(): T | undefined { return this.items[0]; } take(): T | undefined { return this.items.shift(); } takeMany(size: number): T[] { const sizeCapped = Math.min(this.size, size); const result = this.items.slice(0, sizeCapped); this.items = this.items.slice(sizeCapped); return result; } takeAll(): T[] { const result = this.items; this.items = []; return result; } flush(): void { this.takeAll(); } } ================================================ FILE: packages/node-core/src/utils/queues/rampQueue.spec.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import {Task} from './autoQueue'; import {RampQueue} from './rampQueue'; const testSizes = [ 4.448733415947499, 8.956082893010741, 1.0740251087438613, 7.874408027526685, 2.095588330681719, 9.877603058371257, 0.26588775084013694, 5.3688758024204075, 4.671317302459488, 4.936036470903067, 7.463695662357379, 0.0711211590650418, 4.841152155689485, 6.589399364540089, 5.33840341477309, 8.083555618831673, 0.9052566506797755, 5.9079018928373035, 4.846492987181811, 8.245959543695747, 5.460921697188357, 0.7043806224121507, 2.3857434319496518, 2.6918821593173825, 2.1284178622273875, 4.6586931023608, 5.541801214592789, 7.699660358512865, 1.7609267208636559, 7.374614871844476, 3.467359287274774, 1.9130382916923239, 4.299989967525457, 8.700538279205558, 9.565834125047408, 1.8466949701526802, 6.537691936703256, 1.768453891237669, 5.692631134946318, 8.628395051306788, 5.472044652806851, 9.927113870306119, 4.003094529277136, 0.552330717827545, 3.5144104884478566, 7.449595823096287, 2.8985520335505566, 5.947189837345519, 3.0711372037168583, 1.6113066655669672, 6.921119496961885, 4.719632718538214, 7.871754171657878, 7.955877161534463, 3.397497333755941, 9.496938503818358, 1.3986331511241934, 5.622688974863552, 2.8435658149293097, 3.866639909234073, 6.316575461599183, 3.141113012713883, 2.776692764764137, 5.831976543135431, 4.288044903146373, 6.048401548461621, 2.6875146658212157, 6.822941828005713, 8.10971754598745, 0.3413062242535725, 8.897781544073045, 6.865489802832028, 3.894256575593764, 5.862579766647702, 0.6062292779262113, 2.5020990968271106, 0.4564383819215645, 7.437457990684706, 5.378929658223783, 6.404423211376513, 3.4856467856434903, 1.78756098752324, 5.06180877528712, 5.971995837564927, 0.3329444767396139, 5.528156896524639, 2.6196190996965063, 6.971005783415343, 9.948474242499683, 3.011190899660412, 8.133780227538313, 2.4909706549660715, 5.603675099720298, 5.136555674514199, 3.5004619769181144, 6.445875763339708, 0.9132682345511878, 4.094728057715262, 8.94382906736585, 2.4066587617826785, ]; describe('RampQueue', () => { it('Ramps correctly', async () => { const queue = new RampQueue((v: number) => v, 10, 100); // Initial should always be 1 expect(queue.concurrency).toBe(1); await queue.put(() => Promise.resolve(10)); // A single item shouldn't change the concurrenct expect(queue.concurrency).toBe(1); // Fill up to initial capacity const tasks: Task[] = new Array(99).fill(0).map((_, i) => () => Promise.resolve(testSizes[i])); await Promise.all(queue.putMany(tasks)); // Concurrency should still be one since capacity has only just been reached, from now we should be adjusting capacity // expect(queue.concurrency).toBe(1); const tasks1: Task[] = new Array(100).fill(0).map((_, i) => () => Promise.resolve(testSizes[i])); await Promise.all(queue.putMany(tasks1)); expect(queue.concurrency).toBe(7); }); }); ================================================ FILE: packages/node-core/src/utils/queues/rampQueue.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import {getLogger} from '../../logger'; import {AutoQueue, Task} from './autoQueue'; const median = (arr: number[]): number => { if (!arr.length) return 0; const s = [...arr].sort((a, b) => a - b); const mid = Math.floor(s.length / 2); return s.length % 2 ? s[mid] : (s[mid - 1] + s[mid]) / 2; }; const MAX_SIZES = 1000; const MIN_SIZES = 5; const logger = getLogger('RampQueue'); /** * The ramp queue is an extension of the AutoQueue which dynamically adjusts the concurrency based on the getSize function. * It will start at concurrency 1 and ramp up to the max concurrency unless there is a large jump above the median size then it will decrease. * */ export class RampQueue extends AutoQueue { #maxConcurrency: number; #sizes: number[] = []; #totalItems = 0; constructor( private getSize: (data: T) => number, concurrency: number, capacity?: number, timeout?: number, name?: string ) { super(capacity, 1, timeout, name); this.#maxConcurrency = concurrency; } async put(item: Task): Promise { return this.putMany([item])[0]; } putMany(tasks: Task[]): Promise[] { return super.putMany(tasks).map((r) => r.then((d) => { this.adjustConcurrency(d); return d; }) ); } private setConcurrency(newConcurrency: number) { const clamped = Math.max(1, Math.min(Math.floor(newConcurrency), this.#maxConcurrency)); if (clamped > this.concurrency) { logger.debug(`${this.name} increased concurrency to ${clamped}`); } else if (clamped < this.concurrency) { logger.debug(`${this.name} decreased concurrency to ${clamped}`); } this.concurrency = clamped; } private adjustConcurrency(data: T): void { try { const m = median(this.#sizes); const size = this.getSize(data); this.addSize(size); // Not enough data to construct a median if (this.#sizes.length < MIN_SIZES) { return; } if (size > m * 2) { // Inverse of the size compared to the median. E.g if a block is 5x as big as the median then the batch size should be 1/5 of the max const multiplier = m / size; this.setConcurrency(this.#maxConcurrency * multiplier); } else if (this.#totalItems % MIN_SIZES === 0) { // Increase by 10% of max this.setConcurrency(this.concurrency + Math.floor(this.#maxConcurrency / 10)); } } catch (e) { console.log('Failed to adjust concurrency', e); } } private addSize(size: number): void { if (this.#sizes.length >= MAX_SIZES) { this.#sizes.shift(); } this.#totalItems++; this.#sizes.push(size); } } ================================================ FILE: packages/node-core/src/utils/reindex.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import {Sequelize} from '@subql/x-sequelize'; import {IProjectUpgradeService, NodeConfig} from '../configure'; import { DynamicDsService, IUnfinalizedBlocksService, StoreService, PoiService, ISubqueryProject, StoreCacheService, cacheProviderFlushData, cacheProviderResetData, Header, MultiChainRewindService, } from '../indexer'; import {getLogger} from '../logger'; import {exitWithError} from '../process'; import {ForceCleanService} from '../subcommands/forceClean.service'; import {getHistoricalUnit} from './blocks'; const logger = getLogger('Reindex'); /** * Reindex the project to ${targetBlockHeight} (continue indexing after this height) * reset project if ${targetBlockHeight} <= startHeight * - storeCache is handled first, flush cached content before the actual rewind starts * - rewind is usually triggered by signal from unfinalizedBlockService, so some state cleanup is required there. FIXME * - dynamicDsService will need to look after, clean all ds that added after the targetHeight * - poi need to cope with rewind as well. FIXME * - in the end, update metadata to targetHeight * @param startHeight * @param targetBlockHeight !IMPORTANT! this height is exclusive in the reindex operation * @param lastProcessedHeight * @param storeService * @param unfinalizedBlockService * @param dynamicDsService * @param sequelize * @param projectUpgradeService * @param multichainRewindService * @param poiService * @param forceCleanService */ export async function reindex( startHeight: number, targetBlockHeader: Header, lastProcessed: {height: number; timestamp?: number}, storeService: StoreService, unfinalizedBlockService: IUnfinalizedBlocksService, dynamicDsService: DynamicDsService, sequelize: Sequelize, projectUpgradeService: IProjectUpgradeService, multichainRewindService: MultiChainRewindService, poiService?: PoiService, forceCleanService?: ForceCleanService ): Promise { const lastUnit = storeService.historical === 'timestamp' ? lastProcessed.timestamp : lastProcessed.height; const targetUnit = getHistoricalUnit(storeService.historical, targetBlockHeader); if (!lastUnit || lastUnit < targetUnit) { logger.warn( `Skipping reindexing to ${storeService.historical} ${targetUnit}: current indexing height ${lastUnit} is behind requested ${storeService.historical}` ); if (storeService.isMultichain) { const tx = await sequelize.transaction(); await multichainRewindService.releaseChainRewindLock(tx, new Date(targetUnit), new Date(lastUnit || 0)); await tx.commit(); } return; } // if startHeight is greater than the targetHeight, just force clean // We prevent the entire data from being cleared due to multiple chains because the startblock is uncertain in multi-chain projects. if (targetBlockHeader.blockHeight < startHeight && !storeService.isMultichain) { logger.info( `targetHeight: ${targetBlockHeader.blockHeight} is less than startHeight: ${startHeight}. Hence executing force-clean` ); if (!forceCleanService) { exitWithError(`ForceCleanService not provided, cannot force clean`, logger); } // if DB need rollback? no, because forceCleanService will take care of it await cacheProviderResetData(storeService.modelProvider); await forceCleanService?.forceClean(); return; } logger.info(`Reindexing to ${storeService.historical}: ${targetUnit}`); if (storeService.isMultichain) { const needRewind = await multichainRewindService.acquireGlobalRewindLock(new Date(targetUnit)); if (!needRewind) { logger.warn(`Rewind to ${storeService.historical} ${targetUnit} is not needed`); return; } } await cacheProviderFlushData(storeService.modelProvider, true); await cacheProviderResetData(storeService.modelProvider); if (storeService.modelProvider instanceof StoreCacheService) { await storeService.modelProvider.flushData(true); await storeService.modelProvider.resetData(); } const transaction = await sequelize.transaction(); try { /* Must initialize storeService, to ensure all models are loaded, as storeService.init has not been called at this point 1. During runtime, model should be already been init 2.1 On start, projectUpgrade rewind will sync the sequelize models 2.2 On start, without projectUpgrade or upgradablePoint, sequelize will sync models through project.service */ await projectUpgradeService.rewind(targetBlockHeader.blockHeight, lastProcessed.height, transaction, storeService); await Promise.all([ storeService.rewind(targetBlockHeader, transaction), unfinalizedBlockService.resetUnfinalizedBlocks(), // TODO: may not needed for nonfinalized chains unfinalizedBlockService.resetLastFinalizedVerifiedHeight(), // TODO: may not needed for nonfinalized chains dynamicDsService.resetDynamicDatasource(targetBlockHeader.blockHeight, transaction), poiService?.rewind(targetBlockHeader.blockHeight, transaction), ]); // Flush metadata changes from above Promise.all await storeService.modelProvider.metadata.flush?.(transaction, targetUnit); // release rewind lock if (storeService.isMultichain) { await multichainRewindService.releaseChainRewindLock(transaction, new Date(targetUnit)); } await transaction.commit(); logger.info('Reindex Success'); } catch (err: any) { logger.error(err, 'Reindexing failed'); await transaction.rollback(); throw err; } } ================================================ FILE: packages/node-core/src/utils/string.spec.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import {handledStringify} from './string'; describe('handledStringify', () => { it('should stringify a normal object', () => { const obj = {key: 'value'}; expect(handledStringify(obj)).toBe(JSON.stringify(obj)); }); it('should handle a circular reference error', () => { const obj: any = {}; obj.circularRef = obj; const result = handledStringify(obj); expect(result).toMatch(/Converting circular structure to JSON/); }); it('should handle an object with toJSON throwing an error', () => { const obj = { toJSON() { throw new Error('toJSON error'); }, }; const result = handledStringify(obj); expect(result).toMatch(/Error: toJSON error/); }); it('should handle unknown errors gracefully', () => { const obj = { toJSON() { // eslint-disable-next-line @typescript-eslint/only-throw-error throw 'Unknown error'; // Simulate an unknown error }, }; const result = handledStringify(obj); expect(result).toBe('Unknown error when Stringify'); }); it('should return error stack if available', () => { const obj = { toJSON() { throw new Error('Error with stack'); }, }; const result = handledStringify(obj); expect(result).toMatch(/Error: Error with stack/); }); it('should return error message if stack is not available', () => { const obj = { toJSON() { const error: any = new Error('Error without stack'); delete error.stack; throw error; }, }; const result = handledStringify(obj); expect(result).toBe('Error without stack'); }); }); describe('handledStringify depth', () => { it('Different truncation situations at various depths', () => { const obj = { key: 'value', child: { key: 'value', child: { key: 'value', }, arr: [1, 2, 3], }, }; expect(handledStringify(obj, 0)).toEqual( '{"key":"value","child":{"key":"value","child":{"key":"value"},"arr":[1,2,3]}}' ); expect(handledStringify(obj, 2)).toEqual( '{"key":"value","child":{"key":"value","child":"[Object(1)]","arr":"[Array(3)]"}}' ); expect(handledStringify(obj, 1)).toEqual('{"key":"value","child":"[Object(3)]"}'); }); it('Undefined values', () => { expect(handledStringify(undefined, 3)).toBeUndefined(); }); it('Null values', () => { expect(handledStringify(null, 3)).toEqual('null'); expect(handledStringify({a: null}, 3)).toEqual('{"a":null}'); }); it('A circular reference', () => { const obj: any = {}; const obj2: any = {}; obj.reference = obj2; obj2.reference = obj; expect(handledStringify(obj, 0)).toMatch(/Converting circular structure to JSON/); expect(handledStringify(obj, 3)).toMatch(/Converting circular structure to JSON/); }); }); ================================================ FILE: packages/node-core/src/utils/string.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 function truncateObject(value: any, currentDepth: number, maxDepth: number, seen: Set = new Set()): any { if (currentDepth >= maxDepth) { if (Array.isArray(value)) return `[Array(${value.length})]`; if (value && typeof value === 'object') return `[Object(${Object.keys(value).length})]`; } if (value && typeof value === 'object') { if (seen.has(value)) { throw new Error('Converting circular structure to JSON'); } seen.add(value); const truncated: any = Array.isArray(value) ? [] : {}; for (const key in value) { if (Object.prototype.hasOwnProperty.call(value, key)) { truncated[key] = truncateObject(value[key], currentDepth + 1, maxDepth, seen); } } seen.delete(value); return truncated; } return value; } export function handledStringify(obj: any, depth = 0): string { try { if (depth > 0) { const limitedObj = truncateObject(obj, 0, depth); return JSON.stringify(limitedObj); } return JSON.stringify(obj); } catch (error) { if (error instanceof Error) { return error.stack || error.message; } return 'Unknown error when Stringify'; } } ================================================ FILE: packages/node-core/src/yargs.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import yargs, {demandOption} from 'yargs'; import {hideBin} from 'yargs/helpers'; import {initLogger} from './logger'; type YargsOptions, RunO extends Record> = { /** * Invoked with testing command * */ initTesting: () => void; /** * Invoked with force-clean command * */ initForceClean: () => void; /** * Invoked with reindex command * */ initReindex: (targetHeight: number) => void; /** * Extra options to be added to all commands * */ rootOptions?: RootO; /** * Extra options to be added to the main/default command * */ runOptions?: RunO; }; // Unable to properly type this, TS seems to resolve the correct type already // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types export function yargsBuilder< RootO extends Record = Record, RunO extends Record = Record, >(options: YargsOptions) { return ( yargs(hideBin(process.argv)) .env('SUBQL_NODE') .command({ command: 'test', describe: 'Run tests for a SubQuery application', builder: {}, handler: (argv) => { initLogger(argv.debug as string, argv.outputFmt as 'json' | 'colored', argv.logLevel as string | undefined); return options.initTesting(); }, }) .command({ command: 'force-clean', describe: 'Clean the database dropping project schemas and tables. Once the command is executed, the application would exit upon completion.', builder: {}, handler: (argv) => { initLogger(argv.debug as string, argv.outputFmt as 'json' | 'colored', argv.logLevel as string | undefined); return options.initForceClean(); }, }) .command({ command: 'reindex', describe: 'Reindex to specified block height. Historical must be enabled for the targeted project (--historical). The application will exit upon completion.', builder: (yargs) => yargs.options('targetHeight', { type: 'number', description: 'set targetHeight', require: true, }), handler: (argv) => { initLogger(argv.debug as string, argv.outputFmt as 'json' | 'colored', argv.logLevel as string | undefined); return options.initReindex(argv.targetHeight); }, }) // Note we must have default command $0 at last to avoid override .command({ command: '$0', //default command describe: 'Index a SubQuery application', builder: (yargs) => yargs .options({ ...options.runOptions, 'batch-size': { demandOption: false, describe: 'Batch size of blocks to fetch in one round', type: 'number', }, 'dictionary-timeout': { demandOption: false, describe: 'Max timeout for dictionary query', type: 'number', }, 'dictionary-query-size': { demandOption: false, describe: 'Dictionary query max block size, this specify the block height range of the dictionary query', type: 'number', }, 'dictionary-registry': { demandOption: false, describe: 'Url to a dictionary registry used to resolve dictionary if one is not provided', type: 'string', }, 'disable-historical': { demandOption: false, describe: 'Disable storing historical state entities, please use `historical` flag instead', type: 'boolean', deprecated: true, conflicts: 'historical', // NOTE: don't set a default for this. It will break apply args from manifest. The default should be set in NodeConfig }, historical: { describe: 'Enable historical state entities, ', type: 'string', choices: ['false', 'height', 'timestamp'], // NOTE: don't set a default for this. It will break apply args from manifest. The default should be set in NodeConfig conflicts: 'disable-historical', }, 'log-level': { demandOption: false, describe: 'Specify log level to print. Ignored when --debug is used', type: 'string', choices: ['fatal', 'error', 'warn', 'info', 'debug', 'trace', 'silent'], }, 'multi-chain': { alias: 'multichain', demandOption: false, default: false, describe: 'Enables indexing multiple subquery projects into the same database schema', type: 'boolean', }, 'network-dictionary': { alias: 'd', demandOption: false, describe: 'Specify the dictionary api for this network', type: 'string', }, 'primary-network-endpoint': { demandOption: false, type: 'string', describe: 'Primary blockchain endpoint, used as the first choice for connections.', }, 'network-endpoint-config': { demandOption: false, type: 'string', describe: 'A json encoded string of a network endpoint configuration', // example: JSON.stringify({ headers: { 'api-key': ''}}) }, 'primary-network-endpoint-config': { demandOption: false, type: 'string', describe: 'Same as the network-endpoint.config but for the primary network endpoint', // example: JSON.stringify({ headers: { 'api-key': ''}}) }, 'output-fmt': { demandOption: false, describe: 'Print log as json or plain text', type: 'string', choices: ['json', 'colored'], }, 'query-limit': { demandOption: false, describe: 'The limit of items a project can query with store.getByField at once', type: 'number', default: 100, }, 'store-cache-threshold': { demandOption: false, describe: 'Store cache will flush data to the database when number of records excess this threshold', type: 'number', }, 'store-cache-upper-limit': { demandOption: false, describe: 'Defines the upper limit to the store cache size. When this limit is reached indexing will wait for the cache to be flushed before continuing.', type: 'number', }, 'store-get-cache-size': { demandOption: false, describe: 'Store get cache size for each model', type: 'number', }, 'store-cache-async': { demandOption: false, describe: 'If enabled the store cache will flush data asynchronously relative to indexing data', type: 'boolean', }, 'store-flush-interval': { demandOption: false, describe: 'The interval, in seconds, at which data is flushed from the cache. ' + 'This ensures that data is persisted regularly when there is either not much data or the project is up to date.', type: 'number', default: 5, }, 'store-cache-target': { demandOption: false, describe: 'If indexing is happening within this many blocks of the target height, then cache data will be flushed every block. This makes sure a (nearly) fully synced node is flushing data to be available ASAP to query.', type: 'number', default: 10, }, 'subquery-name': { deprecated: true, demandOption: false, describe: 'Name of the subquery project', type: 'string', }, subscription: { demandOption: false, describe: 'Enable subscription by create notification triggers', type: 'boolean', default: false, }, skipTransactions: { demandOption: false, describe: 'If the project contains only event handlers and only accesses the events or block header then you can enable this option to reduce RPC requests and have a slight performance increase. This will be automatically disabled if handlers other than EventHandlers are detected.', type: 'boolean', // NOTE: don't set a default for this. It will break apply args from manifest. The default should be set in NodeConfig }, timeout: { demandOption: false, describe: 'Timeout for indexer sandbox to execute the mapping functions', type: 'number', }, 'unfinalized-blocks': { demandOption: false, describe: 'Enable to fetch and index unfinalized blocks', type: 'boolean', // NOTE: don't set a default for this. It will break apply args from manifest. The default should be set in NodeConfig }, unsafe: { type: 'boolean', demandOption: false, describe: 'Allows usage of any built-in module within the sandbox', // NOTE: don't set a default for this. It will break apply args from manifest. The default should be set in NodeConfig }, workers: { alias: 'w', demandOption: false, describe: 'Number of worker threads to use for fetching and processing blocks. Disabled by default.', type: 'number', }, 'allow-schema-migration': { demandOption: false, describe: 'Allow schema-migration to occur with project upgrades', type: 'boolean', }, root: { describe: 'This is a hidden flag only used from the main thread to workers. It provides a root directory for the project. This is a temp directory with IPFS and GitHub projects.', type: 'string', }, 'csv-out-dir': { describe: 'Path to a directory for CSV output. If this is not provided then data will not be output to CSV', type: 'string', }, 'monitor-out-dir': { describe: 'Path to a directory for monitor service output. If this is not provided then data will store to default folder', type: 'string', }, 'monitor-file-size': { describe: 'monitor file size limit in MB ', type: 'number', }, 'monitor-object-max-depth': { describe: 'The maximum depth of an object recorded by a monitor. Default is 5, 0 is no limit', type: 'number', }, 'enable-cache': { describe: 'cache enable or disable', type: 'boolean', default: true, }, }) .hide('root'), // root is hidden because its for internal use handler: () => { // bootstrap trigger in main.ts }, }) // Default options, shared with all command .options({ ...options.rootOptions, config: { alias: 'c', demandOption: false, describe: 'Specify configuration file', type: 'string', }, 'db-schema': { demandOption: false, describe: 'Db schema name of the project', type: 'string', }, debug: { demandOption: false, describe: `Enable debug logging for specific scopes, this will override log-level. "*" will enable debug everywhere, or comma separated strings for specific scopes. e.g. "SQL,dictionary". To disable specific scopes you can prefix them with '-'. e.g. "*,-SQL"`, type: 'string', }, ipfs: { demandOption: false, describe: 'IPFS gateway endpoint', type: 'string', }, port: { alias: 'p', demandOption: false, describe: 'The port the service will bind to', type: 'number', }, profiler: { demandOption: false, describe: 'Show profiler information to console output', type: 'boolean', default: false, }, 'proof-of-index': { demandOption: false, alias: 'poi', describe: 'Enable/disable proof of index', type: 'boolean', default: false, }, 'pg-ca': { demandOption: false, describe: 'Postgres ca certificate - to enable TLS/SSL connections to your PostgreSQL, path to the server certificate file are required, e.g /path/to/server-certificates/root.crt', type: 'string', }, 'pg-key': { demandOption: false, describe: 'Postgres client key - Path to key file e.g /path/to/client-key/postgresql.key', type: 'string', }, 'pg-cert': { demandOption: false, describe: 'Postgres client certificate - Path to client certificate e.g /path/to/client-certificates/postgresql.crt', type: 'string', }, 'pg-pool-min': { demandOption: false, type: 'number', describe: 'Postgres connection pool min number of connections', }, 'pg-pool-max': { demandOption: false, type: 'number', describe: 'Postgres connection pool max number of connections', }, 'pg-pool-acquire': { demandOption: false, type: 'number', describe: 'Postgres connection pool max time to acquire a connection, in milliseconds', }, 'pg-pool-idle': { demandOption: false, type: 'number', describe: 'Posgres connection pool maximum idle time before a connection is released, in milliseconds', }, 'pg-pool-evict': { demandOption: false, type: 'number', describe: 'Postgres connection pool interval after which idle connections are removed, in milliseconds', }, subquery: { alias: 'f', demandOption: true, default: process.cwd(), describe: 'Local path or IPFS cid of the subquery project', type: 'string', }, 'network-endpoint': { demandOption: false, type: 'string', describe: 'Blockchain network endpoint to connect', }, }) ); } ================================================ FILE: packages/node-core/test/config.json ================================================ { "subquery": "../../../../subql-example/extrinsics", "subqueryName": "extrinsics" } ================================================ FILE: packages/node-core/test/config.toml ================================================ { "subquery": "../../../../subql-example/extrinsics", "subqueryName": "extrinsics" } ================================================ FILE: packages/node-core/test/config.yml ================================================ subquery: ../../../../subql-example/extrinsics subqueryName: extrinsics ================================================ FILE: packages/node-core/test/jsonfy.js ================================================ 'use strict'; // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 Object.defineProperty(exports, '__esModule', {value: true}); exports.JsonfyDatasourcePlugin = void 0; exports.JsonfyDatasourcePlugin = { kind: 'substrate/Jsonfy', validate(ds) { return; }, dsFilterProcessor(ds, api) { return true; }, handlerProcessors: { 'substrate/JsonfyEvent': { specVersion: '1.0.0', baseFilter: [], baseHandlerKind: 'substrate/EventHandler', // eslint-disable-next-line @typescript-eslint/require-await async transformer({original, ds}) { return JSON.parse(JSON.stringify(original.toJSON())); }, filterProcessor({filter, input, ds}) { return ( filter.module && input.event.section === filter.module && filter.method && input.event.method === filter.method ); }, filterValidator(filter) { return; }, }, }, }; exports.default = exports.JsonfyDatasourcePlugin; //# sourceMappingURL=jsonfy.js.map ================================================ FILE: packages/node-core/test/migration-schemas/test_10_1.graphql ================================================ type Transfer @entity { """ id field is always required and must look like this """ id: ID! """ Amount that is transferred """ amount: BigInt! """ The block height of the transfer """ blockNumber: Int! """ The date of the transfer """ date: Date! """ The account that transfers are made from """ from: Account! """ The account that transfers are made to """ to: Account! } type Account @entity { """ id field is always required and must look like this """ id: ID! """ The public key of this account (same across all Polkadot parachains) """ publicKey: String! """ The first block on which we see a transfer involving this account """ firstTransferBlock: Int """ The most recent block on which we see a transfer involving this account """ lastTransferBlock: Int sentTransfers: [Transfer] @derivedFrom(field: "from") # These are virtual properties to help us navigate to the correct foreign key of Transfer recievedTransfers: [Transfer] @derivedFrom(field: "to") # These are virtual properties to help us navigate to the correct foreign key of Transfer } # type TestEntity @entity { id: ID! fieldOne: String fieldTwo: Int # fieldThree: BigInt! } ================================================ FILE: packages/node-core/test/migration-schemas/test_10_1000.graphql ================================================ type Transfer @entity { """ id field is always required and must look like this """ id: ID! """ Amount that is transferred """ amount: BigInt! """ The block height of the transfer """ blockNumber: Int! """ The date of the transfer """ date: Date! """ The account that transfers are made from """ from: Account! """ The account that transfers are made to """ to: Account! } type Account @entity { """ id field is always required and must look like this """ id: ID! """ The public key of this account (same across all Polkadot parachains) """ publicKey: String! """ The first block on which we see a transfer involving this account """ firstTransferBlock: Int """ The most recent block on which we see a transfer involving this account """ lastTransferBlock: Int sentTransfers: [Transfer] @derivedFrom(field: "from") # These are virtual properties to help us navigate to the correct foreign key of Transfer recievedTransfers: [Transfer] @derivedFrom(field: "to") # These are virtual properties to help us navigate to the correct foreign key of Transfer testField: String } type TestEntityTwo @entity { id: ID! exampleField: String } ================================================ FILE: packages/node-core/test/migration-schemas/test_11_1.graphql ================================================ type Transfer @entity { """ id field is always required and must look like this """ id: ID! """ Amount that is transferred """ amount: BigInt! """ The block height of the transfer """ blockNumber: BigInt! ## this should throw lmao """ The date of the transfer """ date: Date! """ The account that transfers are made from """ from: Account! """ The account that transfers are made to """ to: Account! } type Account @entity { """ id field is always required and must look like this """ id: ID! """ The public key of this account (same across all Polkadot parachains) """ publicKey: String! """ The first block on which we see a transfer involving this account """ firstTransferBlock: Int! """ The most recent block on which we see a transfer involving this account """ lastTransferBlock: Int sentTransfers: [Transfer] @derivedFrom(field: "from") # These are virtual properties to help us navigate to the correct foreign key of Transfer recievedTransfers: [Transfer] @derivedFrom(field: "to") # These are virtual properties to help us navigate to the correct foreign key of Transfer } ================================================ FILE: packages/node-core/test/migration-schemas/test_11_2000.graphql ================================================ type Transfer @entity { """ id field is always required and must look like this """ id: ID! """ Amount that is transferred """ amount: BigInt! """ The block height of the transfer """ blockNumber: BigInt! ## this should throw lmao """ The date of the transfer """ date: Date! """ The account that transfers are made from """ from: Account! """ The account that transfers are made to """ to: Account! } type Account @entity { """ id field is always required and must look like this """ id: ID! """ The public key of this account (same across all Polkadot parachains) """ publicKey: String! """ The first block on which we see a transfer involving this account """ firstTransferBlock: Int! """ The most recent block on which we see a transfer involving this account """ lastTransferBlock: Int sentTransfers: [Transfer] @derivedFrom(field: "from") # These are virtual properties to help us navigate to the correct foreign key of Transfer recievedTransfers: [Transfer] @derivedFrom(field: "to") # These are virtual properties to help us navigate to the correct foreign key of Transfer addedField1: Int addedField2: String! } type NewEntity @entity { id: ID! field: String } ================================================ FILE: packages/node-core/test/migration-schemas/test_12_1.graphql ================================================ type Transfer @entity { """ id field is always required and must look like this """ id: ID! """ Amount that is transferred """ amount: BigInt! """ The block height of the transfer """ blockNumber: Int! """ The date of the transfer """ date: Date! """ The account that transfers are made from """ from: Account! """ The account that transfers are made to """ to: Account! accountValue: Account } type Account @entity { """ id field is always required and must look like this """ id: ID! """ The public key of this account (same across all Polkadot parachains) """ publicKey: String! """ The first block on which we see a transfer involving this account """ firstTransferBlock: Int! """ The most recent block on which we see a transfer involving this account """ lastTransferBlock: Int sentTransfers: [Transfer] @derivedFrom(field: "from") # These are virtual properties to help us navigate to the correct foreign key of Transfer recievedTransfers: [Transfer] @derivedFrom(field: "to") # These are virtual properties to help us navigate to the correct foreign key of Transfer # oneToOneRelation: OneToOneTestEntity oneToManyRelation: [Transfer] @derivedFrom(field: "accountValue") } #type ManyToManyTestEntity @entity { # id: ID! # account: Account! # transfer: Transfer! #} # #type OneToOneTestEntity @entity { # id: ID! #} ================================================ FILE: packages/node-core/test/migration-schemas/test_12_2000.graphql ================================================ type Transfer @entity { """ id field is always required and must look like this """ id: ID! """ Amount that is transferred """ amount: BigInt! """ The block height of the transfer """ blockNumber: Int! """ The date of the transfer """ date: Date! """ The account that transfers are made from """ from: Account! """ The account that transfers are made to """ to: Account! accountValue: Account } type Account @entity { """ id field is always required and must look like this """ id: ID! """ The public key of this account (same across all Polkadot parachains) """ publicKey: String! """ The first block on which we see a transfer involving this account """ firstTransferBlock: Int! """ The most recent block on which we see a transfer involving this account """ lastTransferBlock: Int sentTransfers: [Transfer] @derivedFrom(field: "from") # These are virtual properties to help us navigate to the correct foreign key of Transfer recievedTransfers: [Transfer] @derivedFrom(field: "to") # These are virtual properties to help us navigate to the correct foreign key of Transfer oneToOneRelation: OneToOneTestEntity oneToManyRelation: [Transfer] @derivedFrom(field: "accountValue") } type ManyToManyTestEntity @entity { id: ID! account: Account! transfer: Transfer! } type OneToOneTestEntity @entity { id: ID! } ================================================ FILE: packages/node-core/test/migration-schemas/test_13_1.graphql ================================================ type Transfer @entity { """ id field is always required and must look like this """ id: ID! """ Amount that is transferred """ amount: BigInt! """ The block height of the transfer """ blockNumber: Int! """ The date of the transfer """ date: Date! """ The account that transfers are made from """ from: Account! """ The account that transfers are made to """ to: Account! accountValue: Account } type Account @entity { """ id field is always required and must look like this """ id: ID! """ The public key of this account (same across all Polkadot parachains) """ publicKey: String! """ The first block on which we see a transfer involving this account """ firstTransferBlock: Int! """ The most recent block on which we see a transfer involving this account """ lastTransferBlock: Int sentTransfers: [Transfer] @derivedFrom(field: "from") # These are virtual properties to help us navigate to the correct foreign key of Transfer recievedTransfers: [Transfer] @derivedFrom(field: "to") # These are virtual properties to help us navigate to the correct foreign key of Transfer # oneToOneRelation: OneToOneTestEntity oneToManyRelation: [Transfer] @derivedFrom(field: "accountValue") } #type ManyToManyTestEntity @entity { # id: ID! # account: Account! # transfer: Transfer! #} # #type OneToOneTestEntity @entity { # id: ID! #} ================================================ FILE: packages/node-core/test/migration-schemas/test_13_2000.graphql ================================================ type Transfer @entity { """ id field is always required and must look like this """ id: ID! """ Amount that is transferred """ amount: BigInt! """ The block height of the transfer """ blockNumber: Int! """ The date of the transfer """ date: Date! """ The account that transfers are made from """ from: Account! """ The account that transfers are made to """ to: Account! accountValue: Account } type Account @entity { """ id field is always required and must look like this """ id: ID! """ The public key of this account (same across all Polkadot parachains) """ publicKey: String! """ The first block on which we see a transfer involving this account """ firstTransferBlock: Int! """ The most recent block on which we see a transfer involving this account """ lastTransferBlock: Int sentTransfers: [Transfer] @derivedFrom(field: "from") # These are virtual properties to help us navigate to the correct foreign key of Transfer recievedTransfers: [Transfer] @derivedFrom(field: "to") # These are virtual properties to help us navigate to the correct foreign key of Transfer oneToOneRelation: OneToOneTestEntity oneToManyRelation: [Transfer] @derivedFrom(field: "accountValue") } type ManyToManyTestEntity @entity { id: ID! account: Account! transfer: Transfer! } type OneToOneTestEntity @entity { id: ID! } ================================================ FILE: packages/node-core/test/migration-schemas/test_14_1.graphql ================================================ type Transfer @entity { id: ID! amount: BigInt! blockNumber: Int! date: Date! from: Account! to: Account! } type Account @entity { id: ID! publicKey: String! firstTransferBlock: Int lastTransferBlock: Int sentTransfers: [Transfer] @derivedFrom(field: "from") # These are virtual properties to help us navigate to the correct foreign key of Transfer recievedTransfers: [Transfer] @derivedFrom(field: "to") # These are virtual properties to help us navigate to the correct foreign key of Transfer } ================================================ FILE: packages/node-core/test/migration-schemas/test_14_1000.graphql ================================================ type Transfer @entity { id: ID! amount: BigInt! blockNumber: Int! date: Date! # from: Account! # to: Account! } ================================================ FILE: packages/node-core/test/migration-schemas/test_15_1.graphql ================================================ type Transfer @entity { """ id field is always required and must look like this """ id: ID! """ Amount that is transferred """ amount: BigInt! """ The block height of the transfer """ blockNumber: Int! """ The date of the transfer """ date: Date! """ The account that transfers are made from """ from: Account! """ The account that transfers are made to """ to: Account! accountValue: Account } type Account @entity { """ id field is always required and must look like this """ id: ID! """ The public key of this account (same across all Polkadot parachains) """ publicKey: String! """ The first block on which we see a transfer involving this account """ firstTransferBlock: Int! """ The most recent block on which we see a transfer involving this account """ lastTransferBlock: Int sentTransfers: [Transfer] @derivedFrom(field: "from") # These are virtual properties to help us navigate to the correct foreign key of Transfer recievedTransfers: [Transfer] @derivedFrom(field: "to") # These are virtual properties to help us navigate to the correct foreign key of Transfer # oneToOneRelation: OneToOneTestEntity oneToManyRelation: [Transfer] @derivedFrom(field: "accountValue") } #type ManyToManyTestEntity @entity { # id: ID! # account: Account! # transfer: Transfer! #} # #type OneToOneTestEntity @entity { # id: ID! #} ================================================ FILE: packages/node-core/test/migration-schemas/test_15_2000.graphql ================================================ type Transfer @entity { """ id field is always required and must look like this """ id: ID! """ Amount that is transferred """ amount: BigInt! """ The block height of the transfer """ blockNumber: Int! """ The date of the transfer """ date: Date! """ The account that transfers are made from """ from: Account! """ The account that transfers are made to """ to: Account! accountValue: Account } type Account @entity { """ id field is always required and must look like this """ id: ID! """ The public key of this account (same across all Polkadot parachains) """ publicKey: String! """ The first block on which we see a transfer involving this account """ firstTransferBlock: Int! """ The most recent block on which we see a transfer involving this account """ lastTransferBlock: Int sentTransfers: [Transfer] @derivedFrom(field: "from") # These are virtual properties to help us navigate to the correct foreign key of Transfer recievedTransfers: [Transfer] @derivedFrom(field: "to") # These are virtual properties to help us navigate to the correct foreign key of Transfer oneToOneRelation: OneToOneTestEntity oneToManyRelation: [Transfer] @derivedFrom(field: "accountValue") } type ManyToManyTestEntity @entity { id: ID! account: Account! transfer: Transfer! } type OneToOneTestEntity @entity { id: ID! } ================================================ FILE: packages/node-core/test/migration-schemas/test_15_4000.graphql ================================================ type Transfer @entity { """ id field is always required and must look like this """ id: ID! """ Amount that is transferred """ amount: BigInt! """ The block height of the transfer """ blockNumber: Int! """ The date of the transfer """ date: Date! # """ # The account that transfers are made from # """ # from: Account! # """ # The account that transfers are made to # """ # to: Account! # accountValue: Account } #type Account @entity { # """ # id field is always required and must look like this # """ # id: ID! # """ # The public key of this account (same across all Polkadot parachains) # """ # publicKey: String! # """ # The first block on which we see a transfer involving this account # """ # firstTransferBlock: Int! # """ # The most recent block on which we see a transfer involving this account # """ # lastTransferBlock: Int # sentTransfers: [Transfer] @derivedFrom(field: "from") # These are virtual properties to help us navigate to the correct foreign key of Transfer # recievedTransfers: [Transfer] @derivedFrom(field: "to") # These are virtual properties to help us navigate to the correct foreign key of Transfer # # oneToOneRelation: OneToOneTestEntity # oneToManyRelation: [Transfer] @derivedFrom(field: "accountValue") #} type ManyToManyTestEntity @entity { id: ID! # account: Account! transfer: Transfer! } type OneToOneTestEntity @entity { id: ID! } ================================================ FILE: packages/node-core/test/migration-schemas/test_16_1.graphql ================================================ type Transfer @entity { """ id field is always required and must look like this """ id: ID! """ Amount that is transferred """ amount: BigInt! """ The block height of the transfer """ blockNumber: Int! """ The date of the transfer """ date: Date! """ The account that transfers are made from """ from: Account! """ The account that transfers are made to """ to: Account! accountValue: Account } type Account @entity { """ id field is always required and must look like this """ id: ID! """ The public key of this account (same across all Polkadot parachains) """ publicKey: String! """ The first block on which we see a transfer involving this account """ firstTransferBlock: Int! """ The most recent block on which we see a transfer involving this account """ lastTransferBlock: Int sentTransfers: [Transfer] @derivedFrom(field: "from") # These are virtual properties to help us navigate to the correct foreign key of Transfer recievedTransfers: [Transfer] @derivedFrom(field: "to") # These are virtual properties to help us navigate to the correct foreign key of Transfer # oneToOneRelation: OneToOneTestEntity # oneToManyRelation: [Transfer] @derivedFrom(field: "accountValue") } #type ManyToManyTestEntity @entity { # id: ID! ## account: Account! ## transfer: Transfer! #} #type OneToOneTestEntity @entity { # id: ID! #} ================================================ FILE: packages/node-core/test/migration-schemas/test_16_2000.graphql ================================================ type Transfer @entity { """ id field is always required and must look like this """ id: ID! """ Amount that is transferred """ amount: BigInt! """ The block height of the transfer """ blockNumber: Int! """ The date of the transfer """ date: Date! """ The account that transfers are made from """ # from: Account! from: String """ The account that transfers are made to """ # to: Account! to: String # accountValue: Account } #type Account @entity { # """ # id field is always required and must look like this # """ # id: ID! # """ # The public key of this account (same across all Polkadot parachains) # """ # publicKey: String! # """ # The first block on which we see a transfer involving this account # """ # firstTransferBlock: Int! # """ # The most recent block on which we see a transfer involving this account # """ # lastTransferBlock: Int # sentTransfers: [Transfer] @derivedFrom(field: "from") # These are virtual properties to help us navigate to the correct foreign key of Transfer # recievedTransfers: [Transfer] @derivedFrom(field: "to") # These are virtual properties to help us navigate to the correct foreign key of Transfer # ## oneToOneRelation: OneToOneTestEntity ## oneToManyRelation: [Transfer] @derivedFrom(field: "accountValue") #} type ManyToManyTestEntity @entity { id: ID! # account: Account! transfer: Transfer! } #type OneToOneTestEntity @entity { # id: ID! #} ================================================ FILE: packages/node-core/test/migration-schemas/test_17_1.graphql ================================================ type Transfer @entity { """ id field is always required and must look like this """ id: ID! """ Amount that is transferred """ amount: BigInt! """ The block height of the transfer """ blockNumber: Int! """ The date of the transfer """ date: Date! """ The account that transfers are made from """ # from: Account! from: String """ The account that transfers are made to """ # to: Account! to: String # accountValue: Account } #type Account @entity { # """ # id field is always required and must look like this # """ # id: ID! # """ # The public key of this account (same across all Polkadot parachains) # """ # publicKey: String! # """ # The first block on which we see a transfer involving this account # """ # firstTransferBlock: Int! # """ # The most recent block on which we see a transfer involving this account # """ # lastTransferBlock: Int # sentTransfers: [Transfer] @derivedFrom(field: "from") # These are virtual properties to help us navigate to the correct foreign key of Transfer # recievedTransfers: [Transfer] @derivedFrom(field: "to") # These are virtual properties to help us navigate to the correct foreign key of Transfer # ## oneToOneRelation: OneToOneTestEntity ## oneToManyRelation: [Transfer] @derivedFrom(field: "accountValue") #} type ManyToManyTestEntity @entity { id: ID! # account: Account! transfer: Transfer! exampleEnum: ModifyEnumType # createEnumField: CreatedEnumType dropEnumField: DropEnumType } #type CreationEnumEntity @entity { # id: ID! # #} # #enum CreatedEnumType { # CREATED #} # enum DropEnumType { DROP } enum ModifyEnumType { GOOD BAD NEUTRAL CHAOS } ================================================ FILE: packages/node-core/test/migration-schemas/test_17_2000.graphql ================================================ type Transfer @entity { """ id field is always required and must look like this """ id: ID! """ Amount that is transferred """ amount: BigInt! """ The block height of the transfer """ blockNumber: Int! """ The date of the transfer """ date: Date! """ The account that transfers are made from """ # from: Account! from: String """ The account that transfers are made to """ # to: Account! to: String # accountValue: Account } #type Account @entity { # """ # id field is always required and must look like this # """ # id: ID! # """ # The public key of this account (same across all Polkadot parachains) # """ # publicKey: String! # """ # The first block on which we see a transfer involving this account # """ # firstTransferBlock: Int! # """ # The most recent block on which we see a transfer involving this account # """ # lastTransferBlock: Int # sentTransfers: [Transfer] @derivedFrom(field: "from") # These are virtual properties to help us navigate to the correct foreign key of Transfer # recievedTransfers: [Transfer] @derivedFrom(field: "to") # These are virtual properties to help us navigate to the correct foreign key of Transfer # ## oneToOneRelation: OneToOneTestEntity ## oneToManyRelation: [Transfer] @derivedFrom(field: "accountValue") #} type ManyToManyTestEntity @entity { id: ID! # account: Account! transfer: Transfer! exampleEnum: ModifyEnumType createEnumField: CreatedEnumType # dropEnumField: DropEnumType } #type CreationEnumEntity @entity { # id: ID! # #} # enum CreatedEnumType { CREATED } #enum DropEnumType { # DROP #} enum ModifyEnumType { GOOD BAD NEUTRAL CHAOS } ================================================ FILE: packages/node-core/test/migration-schemas/test_18_1.graphql ================================================ type Transfer @entity { """ id field is always required and must look like this """ id: ID! """ Amount that is transferred """ amount: BigInt! """ The block height of the transfer """ blockNumber: Int! """ The date of the transfer """ date: Date! """ The account that transfers are made from """ # from: Account! from: String """ The account that transfers are made to """ # to: Account! to: String # accountValue: Account } type ManyToManyTestEntity @entity { id: ID! transfer: Transfer! exampleEnum: ModifyEnumType } enum ModifyEnumType { GOOD BAD # """ # Added in migration # """ # NEUTRAL # CHAOS } ================================================ FILE: packages/node-core/test/migration-schemas/test_18_2000.graphql ================================================ type Transfer @entity { """ id field is always required and must look like this """ id: ID! """ Amount that is transferred """ amount: BigInt! """ The block height of the transfer """ blockNumber: Int! """ The date of the transfer """ date: Date! """ The account that transfers are made from """ # from: Account! from: String """ The account that transfers are made to """ # to: Account! to: String # accountValue: Account } type ManyToManyTestEntity @entity { id: ID! transfer: Transfer! exampleEnum: ModifyEnumType } enum ModifyEnumType { GOOD BAD """ Added """ NEUTRAL CHAOS } ================================================ FILE: packages/node-core/test/migration-schemas/test_19_1.graphql ================================================ type Transfer @entity { """ id field is always required and must look like this """ id: ID! """ Amount that is transferred """ amount: BigInt! """ The block height of the transfer """ blockNumber: Int! """ The date of the transfer """ date: Date! """ The account that transfers are made from """ # from: Account! from: String """ The account that transfers are made to """ # to: Account! to: String # accountValue: Account } type ManyToManyTestEntity @entity { id: ID! transfer: Transfer! exampleEnum: ModifyEnumType } enum ModifyEnumType { GOOD BAD NEUTRAL CHAOS } ================================================ FILE: packages/node-core/test/migration-schemas/test_19_2000.graphql ================================================ type Transfer @entity { """ id field is always required and must look like this """ id: ID! """ Amount that is transferred """ amount: BigInt! """ The block height of the transfer """ blockNumber: Int! """ The date of the transfer """ date: Date! """ The account that transfers are made from """ # from: Account! from: String """ The account that transfers are made to """ # to: Account! to: String # accountValue: Account } type ManyToManyTestEntity @entity { id: ID! transfer: Transfer! exampleEnum: ModifyEnumType } enum ModifyEnumType { GOOD BAD # """ # Removed # """ # NEUTRAL # CHAOS } ================================================ FILE: packages/node-core/test/migration-schemas/test_1_1.graphql ================================================ type Transfer @entity { """ id field is always required and must look like this """ id: ID! """ Amount that is transferred """ amount: BigInt! """ The block height of the transfer """ blockNumber: Int! """ The date of the transfer """ date: Date! """ The account that transfers are made from """ from: Account! """ The account that transfers are made to """ to: Account! } type Account @entity { """ id field is always required and must look like this """ id: ID! """ The public key of this account (same across all Polkadot parachains) """ publicKey: String! """ The first block on which we see a transfer involving this account """ firstTransferBlock: Int """ The most recent block on which we see a transfer involving this account """ lastTransferBlock: Int sentTransfers: [Transfer] @derivedFrom(field: "from") # These are virtual properties to help us navigate to the correct foreign key of Transfer recievedTransfers: [Transfer] @derivedFrom(field: "to") # These are virtual properties to help us navigate to the correct foreign key of Transfer } # type TestEntity @entity { id: ID! fieldOne: String fieldTwo: Int # fieldThree: BigInt! } ================================================ FILE: packages/node-core/test/migration-schemas/test_1_1000.graphql ================================================ type Transfer @entity { """ id field is always required and must look like this """ id: ID! """ Amount that is transferred """ amount: BigInt! """ The block height of the transfer """ blockNumber: Int! """ The date of the transfer """ date: Date! """ The account that transfers are made from """ from: Account! """ The account that transfers are made to """ to: Account! } type Account @entity { """ id field is always required and must look like this """ id: ID! """ The public key of this account (same across all Polkadot parachains) """ publicKey: String! """ The first block on which we see a transfer involving this account """ firstTransferBlock: Int """ The most recent block on which we see a transfer involving this account """ lastTransferBlock: Int sentTransfers: [Transfer] @derivedFrom(field: "from") # These are virtual properties to help us navigate to the correct foreign key of Transfer recievedTransfers: [Transfer] @derivedFrom(field: "to") # These are virtual properties to help us navigate to the correct foreign key of Transfer testField: String } type TestEntityTwo @entity { id: ID! exampleField: String } ================================================ FILE: packages/node-core/test/migration-schemas/test_20_1.graphql ================================================ type Transfer @entity { """ id field is always required and must look like this """ id: ID! """ Amount that is transferred """ amount: BigInt! """ The block height of the transfer """ blockNumber: Int! """ The date of the transfer """ date: Date! """ The account that transfers are made from """ # from: Account! from: String """ The account that transfers are made to """ # to: Account! to: String # accountValue: Account } type ManyToManyTestEntity @entity { id: ID! transfer: Transfer! exampleEnum: ModifyEnumType } enum ModifyEnumType { GOOD BAD NEUTRAL CHAOS } ================================================ FILE: packages/node-core/test/migration-schemas/test_20_2000.graphql ================================================ type Transfer @entity { """ id field is always required and must look like this """ id: ID! """ Amount that is transferred """ amount: BigInt! """ The block height of the transfer """ blockNumber: Int! """ The date of the transfer """ date: Date! """ The account that transfers are made from """ # from: Account! from: String """ The account that transfers are made to """ # to: Account! to: String # accountValue: Account } type ManyToManyTestEntity @entity { id: ID! transfer: Transfer! exampleEnum: ModifyEnumType } # Order is reversed enum ModifyEnumType { CHAOS NEUTRAL BAD GOOD } ================================================ FILE: packages/node-core/test/migration-schemas/test_2_1.graphql ================================================ type Transfer @entity { """ id field is always required and must look like this """ id: ID! """ Amount that is transferred """ amount: BigInt! """ The block height of the transfer """ blockNumber: BigInt! ## this should throw lmao """ The date of the transfer """ date: Date! """ The account that transfers are made from """ from: Account! """ The account that transfers are made to """ to: Account! } type Account @entity { """ id field is always required and must look like this """ id: ID! """ The public key of this account (same across all Polkadot parachains) """ publicKey: String! """ The first block on which we see a transfer involving this account """ firstTransferBlock: Int! """ The most recent block on which we see a transfer involving this account """ lastTransferBlock: Int sentTransfers: [Transfer] @derivedFrom(field: "from") # These are virtual properties to help us navigate to the correct foreign key of Transfer recievedTransfers: [Transfer] @derivedFrom(field: "to") # These are virtual properties to help us navigate to the correct foreign key of Transfer } type TestEntity @entity { id: ID! exampleField: String } ================================================ FILE: packages/node-core/test/migration-schemas/test_2_1000.graphql ================================================ type Transfer @entity { """ id field is always required and must look like this """ id: ID! """ Amount that is transferred """ amount: BigInt! """ The block height of the transfer """ blockNumber: BigInt! ## this should throw lmao """ The date of the transfer """ date: Date! """ The account that transfers are made from """ from: Account! """ The account that transfers are made to """ to: Account! } type Account @entity { """ id field is always required and must look like this """ id: ID! """ The public key of this account (same across all Polkadot parachains) """ publicKey: String! """ The first block on which we see a transfer involving this account """ firstTransferBlock: Int! """ The most recent block on which we see a transfer involving this account """ lastTransferBlock: Int sentTransfers: [Transfer] @derivedFrom(field: "from") # These are virtual properties to help us navigate to the correct foreign key of Transfer recievedTransfers: [Transfer] @derivedFrom(field: "to") # These are virtual properties to help us navigate to the correct foreign key of Transfer } type TestJson @jsonField { one: String! two: Int! } type TestEntity @entity { id: ID! exampleField: [TestJson] } ================================================ FILE: packages/node-core/test/migration-schemas/test_5_1.graphql ================================================ type Transfer @entity { """ id field is always required and must look like this """ id: ID! """ Amount that is transferred """ amount: BigInt! """ The block height of the transfer """ blockNumber: BigInt! ## this should throw lmao """ The date of the transfer """ date: Date! """ The account that transfers are made from """ from: Account! """ The account that transfers are made to """ to: Account! } type Account @entity { """ id field is always required and must look like this """ id: ID! """ The public key of this account (same across all Polkadot parachains) """ publicKey: String! """ The first block on which we see a transfer involving this account """ firstTransferBlock: Int! """ The most recent block on which we see a transfer involving this account """ lastTransferBlock: Int sentTransfers: [Transfer] @derivedFrom(field: "from") # These are virtual properties to help us navigate to the correct foreign key of Transfer recievedTransfers: [Transfer] @derivedFrom(field: "to") # These are virtual properties to help us navigate to the correct foreign key of Transfer } #type TestIndexOne @entity { # id: ID! # name: String! @index(unique: true) #} # #type TestIndexTwo @entity { # id: ID! # name: String! @index(unique: false) #} # #type TestIndexComposite @entity @compositeIndexes(fields: [["block", "blockTwo"]]){ # id: ID! # block: String # blockTwo: String #} type DropSingleIndex @entity { id: ID! exampleField: String! @index(unique: true) } type DropCompositeIndex @entity @compositeIndexes(fields: [["block", "blockTwo"]]) { id: ID! block: String blockTwo: String } ================================================ FILE: packages/node-core/test/migration-schemas/test_5_1000.graphql ================================================ type Transfer @entity { """ id field is always required and must look like this """ id: ID! """ Amount that is transferred """ amount: BigInt! """ The block height of the transfer """ blockNumber: BigInt! ## this should throw lmao """ The date of the transfer """ date: Date! """ The account that transfers are made from """ from: Account! """ The account that transfers are made to """ to: Account! } type Account @entity { """ id field is always required and must look like this """ id: ID! """ The public key of this account (same across all Polkadot parachains) """ publicKey: String! """ The first block on which we see a transfer involving this account """ firstTransferBlock: Int! """ The most recent block on which we see a transfer involving this account """ lastTransferBlock: Int sentTransfers: [Transfer] @derivedFrom(field: "from") # These are virtual properties to help us navigate to the correct foreign key of Transfer recievedTransfers: [Transfer] @derivedFrom(field: "to") # These are virtual properties to help us navigate to the correct foreign key of Transfer } type NewIndexOne @entity { id: ID! name: String! @index(unique: true) } type NewIndexTwo @entity { id: ID! name: String! @index(unique: false) } type NewIndexComposite @entity @compositeIndexes(fields: [["block", "blockTwo"]]) { id: ID! block: String blockTwo: String } #type DropSingleIndex @entity { # id: ID! # exampleField: String! @index(unique: true) #} # #type DropCompositeIndex @entity @compositeIndexes(fields: [["block", "blockTwo"]]){ # id: ID! # block: String # blockTwo: String #} # ================================================ FILE: packages/node-core/test/migration-schemas/test_6_1.graphql ================================================ type Transfer @entity { """ id field is always required and must look like this """ id: ID! """ Amount that is transferred """ amount: BigInt! """ The block height of the transfer """ blockNumber: BigInt! ## this should throw lmao """ The date of the transfer """ date: Date! """ The account that transfers are made from """ from: Account! """ The account that transfers are made to """ to: Account! } type Account @entity { """ id field is always required and must look like this """ id: ID! """ The public key of this account (same across all Polkadot parachains) """ publicKey: String! """ The first block on which we see a transfer involving this account """ firstTransferBlock: Int! """ The most recent block on which we see a transfer involving this account """ lastTransferBlock: Int sentTransfers: [Transfer] @derivedFrom(field: "from") # These are virtual properties to help us navigate to the correct foreign key of Transfer recievedTransfers: [Transfer] @derivedFrom(field: "to") # These are virtual properties to help us navigate to the correct foreign key of Transfer testField: String } type TestIndexOne @entity { id: ID! name: String! @index(unique: false) } ================================================ FILE: packages/node-core/test/migration-schemas/test_6_2000.graphql ================================================ type Transfer @entity { """ id field is always required and must look like this """ id: ID! """ Amount that is transferred """ amount: BigInt! """ The block height of the transfer """ blockNumber: BigInt! ## this should throw lmao """ The date of the transfer """ date: Date! """ The account that transfers are made from """ from: Account! """ The account that transfers are made to """ to: Account! } type Account @entity { """ id field is always required and must look like this """ id: ID! """ The public key of this account (same across all Polkadot parachains) """ publicKey: String! """ The first block on which we see a transfer involving this account """ firstTransferBlock: Int! """ The most recent block on which we see a transfer involving this account """ lastTransferBlock: Int sentTransfers: [Transfer] @derivedFrom(field: "from") # These are virtual properties to help us navigate to the correct foreign key of Transfer recievedTransfers: [Transfer] @derivedFrom(field: "to") # These are virtual properties to help us navigate to the correct foreign key of Transfer testField: String } # #type TestIndexOne @entity { # id: ID! # name: String! @index(unique: false) #} ================================================ FILE: packages/node-core/test/sandbox/atob-test.js ================================================ 'use strict'; // SPDX-License-Identifier: GPL-3.0 Object.defineProperty(exports, '__esModule', {value: true}); exports.testSandbox = void 0; async function testSandbox() { try { const base64String = 'SGVsbG8sIFdvcmxkIQ=='; console.log(atob(base64String)); //expect to be `Hello, World!` } catch (e) { throw new Error(`atob in sandbox failed, ${e}`); } } exports.testSandbox = testSandbox; //# sourceMappingURL=atob-test.js.map ================================================ FILE: packages/node-core/test/sandbox/atob-test.ts ================================================ // SPDX-License-Identifier: GPL-3.0 export async function testSandbox(): Promise { try { const base64String = 'SGVsbG8sIFdvcmxkIQ=='; console.log(atob(base64String)); //expect to be `Hello, World!` } catch (e) { throw new Error(`atob in sandbox failed, ${e}`); } } ================================================ FILE: packages/node-core/test/sandbox/buffer-test.js ================================================ 'use strict'; // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 Object.defineProperty(exports, '__esModule', {value: true}); exports.testUin8Array = exports.testSandbox = void 0; async function testSandbox() { const str = 'Hello, Buffer!'; const strBuffer = Buffer.from(str); const uin8Array = new Uint8Array(2); uin8Array[0] = 72; //'H' uin8Array[1] = 101; //'e' try { const output = Buffer.concat([strBuffer, uin8Array]); console.log(output.toString()); //expect to be `Hello, Buffer!He` } catch (e) { throw new Error(`Buffer concat failed, ${e}`); } } exports.testSandbox = testSandbox; async function testUin8Array() { const uin8Array = new Uint8Array(2); const uin8Array2 = new Uint8Array(2); uin8Array[0] = 72; //'H' uin8Array[1] = 101; //'e' uin8Array2[0] = 72; uin8Array2[1] = 101; try { const output = Buffer.concat([uin8Array, uin8Array2]); console.log(output.toString()); //expect to be `HeHe` } catch (e) { throw new Error(`Uin8Array concat failed, ${e}`); } } exports.testUin8Array = testUin8Array; //# sourceMappingURL=buffer-test.js.map ================================================ FILE: packages/node-core/test/sandbox/buffer-test.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 export async function testSandbox(): Promise { const str = 'Hello, Buffer!'; const strBuffer = Buffer.from(str); const uin8Array = new Uint8Array(2); uin8Array[0] = 72; //'H' uin8Array[1] = 101; //'e' try { const output = Buffer.concat([strBuffer, uin8Array]); console.log(output.toString()); //expect to be `Hello, Buffer!He` } catch (e) { throw new Error(`Buffer concat failed, ${e}`); } } export async function testUin8Array(): Promise { const uin8Array = new Uint8Array(2); const uin8Array2 = new Uint8Array(2); uin8Array[0] = 72; //'H' uin8Array[1] = 101; //'e' uin8Array2[0] = 72; uin8Array2[1] = 101; try { const output = Buffer.concat([uin8Array, uin8Array2]); console.log(output.toString()); //expect to be `HeHe` } catch (e) { throw new Error(`Uin8Array concat failed, ${e}`); } } ================================================ FILE: packages/node-core/test/sandbox/main.js ================================================ 'use strict'; // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 Object.defineProperty(exports, '__esModule', {value: true}); exports.testSandbox = void 0; async function testSandbox() { await new Promise((resolve) => setTimeout(resolve, 3000)); console.log('OK'); } exports.testSandbox = testSandbox; ================================================ FILE: packages/node-core/test/sandbox/main.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 export async function testSandbox(): Promise { await new Promise((resolve) => setTimeout(resolve, 3000)); console.log('OK'); } ================================================ FILE: packages/node-core/test/sandbox/package.json ================================================ { "name": "sandbox", "version": "1.0.0", "description": "", "main": "main.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "author": "", "license": "ISC" } ================================================ FILE: packages/node-core/test/sandbox/schema.graphql ================================================ type StarterEntity @entity { id: ID! #id is a required field field1: Int! field2: String #filed2 is an optional field field3: BigInt field4: Date field5: Boolean } ================================================ FILE: packages/node-core/test/sandbox/sourcemap-test-esbuild.js ================================================ "use strict";var i=Object.defineProperty;var n=Object.getOwnPropertyDescriptor;var h=Object.getOwnPropertyNames;var w=Object.prototype.hasOwnProperty;var a=(o,r)=>{for(var e in r)i(o,e,{get:r[e],enumerable:!0})},c=(o,r,e,s)=>{if(r&&typeof r=="object"||typeof r=="function")for(let t of h(r))!w.call(o,t)&&t!==e&&i(o,t,{get:()=>r[t],enumerable:!(s=n(r,t))||s.enumerable});return o};var f=o=>c(i({},"__esModule",{value:!0}),o);var p={};a(p,{throwError:()=>m});module.exports=f(p);async function m(){throw new Error("this is a test error")}0&&(module.exports={throwError}); //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL2luZGV4LnRzIiwgIi4uL3NyYy9tYXBwaW5ncy9tYXBwaW5nSGFuZGxlcnMudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8vRXhwb3J0cyBhbGwgaGFuZGxlciBmdW5jdGlvbnNcbmV4cG9ydCAqIGZyb20gXCIuL21hcHBpbmdzL21hcHBpbmdIYW5kbGVyc1wiO1xuIiwgIi8vIGltcG9ydCB7IFRyYW5zZmVyIH0gZnJvbSBcIi4uL3R5cGVzXCI7XG4vLyBpbXBvcnQgeyBDb3Ntb3NCbG9jaywgQ29zbW9zRXZlbnQgfSBmcm9tIFwiQHN1YnFsL3R5cGVzLWNvc21vc1wiO1xuLy8gaW1wb3J0IHsgc2hhMjU2IH0gZnJvbSBcIkBjb3NtanMvY3J5cHRvXCI7XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB0aHJvd0Vycm9yKCk6IFByb21pc2U8dm9pZD4ge1xuICB0aHJvdyBuZXcgRXJyb3IoXCJ0aGlzIGlzIGEgdGVzdCBlcnJvclwiKTtcbn1cblxuLy8gZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGhhbmRsZUJsb2NrKGJsb2NrOiBDb3Ntb3NCbG9jayk6IFByb21pc2U8dm9pZD4ge1xuLy8gICBsb2dnZXIuaW5mbyhcIkhBTkRMRSBCTE9DS1wiKTtcblxuLy8gICBsb2dnZXIuaW5mbyhgSGFzaGVkIGRhdGEgJHtzaGEyNTYoYmxvY2suYmxvY2suaGVhZGVyLmRhdGFIYXNoKX1gKTtcbi8vIH1cblxuLy8gZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGhhbmRsZUV2ZW50KGV2ZW50OiBDb3Ntb3NFdmVudCk6IFByb21pc2U8dm9pZD4ge1xuLy8gICBjb25zdCBldmVudFJlY29yZCA9IFRyYW5zZmVyLmNyZWF0ZSh7XG4vLyAgICAgaWQ6IGAke2V2ZW50LnR4Lmhhc2h9LSR7ZXZlbnQubXNnIS5pZHh9LSR7ZXZlbnQuaWR4fWAsXG4vLyAgICAgYmxvY2tIZWlnaHQ6IEJpZ0ludChldmVudC5ibG9jay5ibG9jay5oZWFkZXIuaGVpZ2h0KSxcbi8vICAgICB0eEhhc2g6IGV2ZW50LnR4Lmhhc2gsXG4vLyAgICAgdG9BZGRyZXNzOiBcIlwiLFxuLy8gICAgIGFtb3VudDogXCJcIixcbi8vICAgICBmcm9tQWRkcmVzczogXCJcIixcbi8vICAgfSk7XG4vLyAgIGZvciAoY29uc3QgYXR0ciBvZiBldmVudC5ldmVudC5hdHRyaWJ1dGVzKSB7XG4vLyAgICAgc3dpdGNoIChhdHRyLmtleSkge1xuLy8gICAgICAgY2FzZSBcInJlY2lwaWVudFwiOlxuLy8gICAgICAgICBldmVudFJlY29yZC50b0FkZHJlc3MgPSBhdHRyLnZhbHVlLnRvU3RyaW5nKCk7XG4vLyAgICAgICAgIGJyZWFrO1xuLy8gICAgICAgY2FzZSBcImFtb3VudFwiOlxuLy8gICAgICAgICBldmVudFJlY29yZC5hbW91bnQgPSBhdHRyLnZhbHVlLnRvU3RyaW5nKCk7XG4vLyAgICAgICAgIGJyZWFrO1xuLy8gICAgICAgY2FzZSBcInNlbmRlclwiOlxuLy8gICAgICAgICBldmVudFJlY29yZC5mcm9tQWRkcmVzcyA9IGF0dHIudmFsdWUudG9TdHJpbmcoKTtcbi8vICAgICAgICAgYnJlYWs7XG4vLyAgICAgICBkZWZhdWx0OlxuLy8gICAgICAgICBicmVhaztcbi8vICAgICB9XG4vLyAgIH1cbi8vICAgYXdhaXQgZXZlbnRSZWNvcmQuc2F2ZSgpO1xuLy8gfVxuIl0sCiAgIm1hcHBpbmdzIjogInlhQUFBLElBQUFBLEVBQUEsR0FBQUMsRUFBQUQsRUFBQSxnQkFBQUUsSUFBQSxlQUFBQyxFQUFBSCxHQ0lBLGVBQXNCSSxHQUE0QixDQUNoRCxNQUFNLElBQUksTUFBTSxzQkFBc0IsQ0FDeEMiLAogICJuYW1lcyI6IFsiaW5kZXhfZXhwb3J0cyIsICJfX2V4cG9ydCIsICJ0aHJvd0Vycm9yIiwgIl9fdG9Db21tb25KUyIsICJ0aHJvd0Vycm9yIl0KfQo= ================================================ FILE: packages/node-core/test/sandbox/sourcemap-test-webpack.js ================================================ (() => { "use strict"; var e = { 440: (e, t, r) => { Object.defineProperty(t, "__esModule", { value: !0 }); r(635).__exportStar(r(573), t); }, 573: (e, t) => { Object.defineProperty(t, "__esModule", { value: !0 }), t.throwError = async function() { throw new Error("this is a test error"); }; }, 635: (e, t, r) => { r.r(t), r.d(t, { __addDisposableResource: () => M, __assign: () => a, __asyncDelegator: () => S, __asyncGenerator: () => P, __asyncValues: () => x, __await: () => j, __awaiter: () => _, __classPrivateFieldGet: () => k, __classPrivateFieldIn: () => F, __classPrivateFieldSet: () => A, __createBinding: () => v, __decorate: () => c, __disposeResources: () => G, __esDecorate: () => u, __exportStar: () => h, __extends: () => o, __generator: () => d, __importDefault: () => R, __importStar: () => D, __makeTemplateObject: () => E, __metadata: () => y, __param: () => s, __propKey: () => l, __read: () => w, __rest: () => i, __rewriteRelativeImportExtension: () => z, __runInitializers: () => f, __setFunctionName: () => p, __spread: () => m, __spreadArray: () => O, __spreadArrays: () => g, __values: () => b, default: () => N }); var n = function(e, t) { return n = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(e, t) { e.__proto__ = t; } || function(e, t) { for (var r in t) Object.prototype.hasOwnProperty.call(t, r) && (e[r] = t[r]); }, n(e, t); }; function o(e, t) { if ("function" != typeof t && null !== t) throw new TypeError("Class extends value " + String(t) + " is not a constructor or null"); function r() { this.constructor = e; } n(e, t), e.prototype = null === t ? Object.create(t) : (r.prototype = t.prototype, new r); } var a = function() { return a = Object.assign || function(e) { for (var t, r = 1, n = arguments.length; r < n; r++) for (var o in t = arguments[r]) Object.prototype.hasOwnProperty.call(t, o) && (e[o] = t[o]); return e; }, a.apply(this, arguments); }; function i(e, t) { var r = {}; for (var n in e) Object.prototype.hasOwnProperty.call(e, n) && t.indexOf(n) < 0 && (r[n] = e[n]); if (null != e && "function" == typeof Object.getOwnPropertySymbols) { var o = 0; for (n = Object.getOwnPropertySymbols(e); o < n.length; o++) t.indexOf(n[o]) < 0 && Object.prototype.propertyIsEnumerable.call(e, n[o]) && (r[n[o]] = e[n[o]]); } return r; } function c(e, t, r, n) { var o, a = arguments.length, i = a < 3 ? t : null === n ? n = Object.getOwnPropertyDescriptor(t, r) : n; if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) i = Reflect.decorate(e, t, r, n); else for (var c = e.length - 1; c >= 0; c--) (o = e[c]) && (i = (a < 3 ? o(i) : a > 3 ? o(t, r, i) : o(t, r)) || i); return a > 3 && i && Object.defineProperty(t, r, i), i; } function s(e, t) { return function(r, n) { t(r, n, e); }; } function u(e, t, r, n, o, a) { function i(e) { if (void 0 !== e && "function" != typeof e) throw new TypeError("Function expected"); return e; } for (var c, s = n.kind, u = "getter" === s ? "get" : "setter" === s ? "set" : "value", f = !t && e ? n.static ? e : e.prototype : null, l = t || (f ? Object.getOwnPropertyDescriptor(f, n.name) : {}), p = !1, y = r.length - 1; y >= 0; y--) { var _ = {}; for (var d in n) _[d] = "access" === d ? {} : n[d]; for (var d in n.access) _.access[d] = n.access[d]; _.addInitializer = function(e) { if (p) throw new TypeError("Cannot add initializers after decoration has completed"); a.push(i(e || null)); }; var v = (0, r[y])("accessor" === s ? { get: l.get, set: l.set } : l[u], _); if ("accessor" === s) { if (void 0 === v) continue; if (null === v || "object" != typeof v) throw new TypeError("Object expected"); (c = i(v.get)) && (l.get = c), (c = i(v.set)) && (l.set = c), (c = i(v.init)) && o.unshift(c); } else (c = i(v)) && ("field" === s ? o.unshift(c) : l[u] = c); } f && Object.defineProperty(f, n.name, l), p = !0; } function f(e, t, r) { for (var n = arguments.length > 2, o = 0; o < t.length; o++) r = n ? t[o].call(e, r) : t[o].call(e); return n ? r : void 0; } function l(e) { return "symbol" == typeof e ? e : "".concat(e); } function p(e, t, r) { return "symbol" == typeof t && (t = t.description ? "[".concat(t.description, "]") : ""), Object.defineProperty(e, "name", { configurable: !0, value: r ? "".concat(r, " ", t) : t }); } function y(e, t) { if ("object" == typeof Reflect && "function" == typeof Reflect.metadata) return Reflect.metadata(e, t); } function _(e, t, r, n) { return new (r || (r = Promise))(function(o, a) { function i(e) { try { s(n.next(e)); } catch (e) { a(e); } } function c(e) { try { s(n.throw(e)); } catch (e) { a(e); } } function s(e) { var t; e.done ? o(e.value) : (t = e.value, t instanceof r ? t : new r(function(e) { e(t); })).then(i, c); } s((n = n.apply(e, t || [])).next()); }); } function d(e, t) { var r, n, o, a = { label: 0, sent: function() { if (1 & o[0]) throw o[1]; return o[1]; }, trys: [], ops: [] }, i = Object.create(("function" == typeof Iterator ? Iterator : Object).prototype); return i.next = c(0), i.throw = c(1), i.return = c(2), "function" == typeof Symbol && (i[Symbol.iterator] = function() { return this; }), i; function c(c) { return function(s) { return function(c) { if (r) throw new TypeError("Generator is already executing."); for (;i && (i = 0, c[0] && (a = 0)), a; ) try { if (r = 1, n && (o = 2 & c[0] ? n.return : c[0] ? n.throw || ((o = n.return) && o.call(n), 0) : n.next) && !(o = o.call(n, c[1])).done) return o; switch (n = 0, o && (c = [ 2 & c[0], o.value ]), c[0]) { case 0: case 1: o = c; break; case 4: return a.label++, { value: c[1], done: !1 }; case 5: a.label++, n = c[1], c = [ 0 ]; continue; case 7: c = a.ops.pop(), a.trys.pop(); continue; default: if (!(o = a.trys, (o = o.length > 0 && o[o.length - 1]) || 6 !== c[0] && 2 !== c[0])) { a = 0; continue; } if (3 === c[0] && (!o || c[1] > o[0] && c[1] < o[3])) { a.label = c[1]; break; } if (6 === c[0] && a.label < o[1]) { a.label = o[1], o = c; break; } if (o && a.label < o[2]) { a.label = o[2], a.ops.push(c); break; } o[2] && a.ops.pop(), a.trys.pop(); continue; } c = t.call(e, a); } catch (e) { c = [ 6, e ], n = 0; } finally { r = o = 0; } if (5 & c[0]) throw c[1]; return { value: c[0] ? c[1] : void 0, done: !0 }; }([ c, s ]); }; } } var v = Object.create ? function(e, t, r, n) { void 0 === n && (n = r); var o = Object.getOwnPropertyDescriptor(t, r); o && !("get" in o ? !t.__esModule : o.writable || o.configurable) || (o = { enumerable: !0, get: function() { return t[r]; } }), Object.defineProperty(e, n, o); } : function(e, t, r, n) { void 0 === n && (n = r), e[n] = t[r]; }; function h(e, t) { for (var r in e) "default" === r || Object.prototype.hasOwnProperty.call(t, r) || v(t, e, r); } function b(e) { var t = "function" == typeof Symbol && Symbol.iterator, r = t && e[t], n = 0; if (r) return r.call(e); if (e && "number" == typeof e.length) return { next: function() { return e && n >= e.length && (e = void 0), { value: e && e[n++], done: !e }; } }; throw new TypeError(t ? "Object is not iterable." : "Symbol.iterator is not defined."); } function w(e, t) { var r = "function" == typeof Symbol && e[Symbol.iterator]; if (!r) return e; var n, o, a = r.call(e), i = []; try { for (;(void 0 === t || t-- > 0) && !(n = a.next()).done; ) i.push(n.value); } catch (e) { o = { error: e }; } finally { try { n && !n.done && (r = a.return) && r.call(a); } finally { if (o) throw o.error; } } return i; } function m() { for (var e = [], t = 0; t < arguments.length; t++) e = e.concat(w(arguments[t])); return e; } function g() { for (var e = 0, t = 0, r = arguments.length; t < r; t++) e += arguments[t].length; var n = Array(e), o = 0; for (t = 0; t < r; t++) for (var a = arguments[t], i = 0, c = a.length; i < c; i++, o++) n[o] = a[i]; return n; } function O(e, t, r) { if (r || 2 === arguments.length) for (var n, o = 0, a = t.length; o < a; o++) !n && o in t || (n || (n = Array.prototype.slice.call(t, 0, o)), n[o] = t[o]); return e.concat(n || Array.prototype.slice.call(t)); } function j(e) { return this instanceof j ? (this.v = e, this) : new j(e); } function P(e, t, r) { if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined."); var n, o = r.apply(e, t || []), a = []; return n = Object.create(("function" == typeof AsyncIterator ? AsyncIterator : Object).prototype), i("next"), i("throw"), i("return", function(e) { return function(t) { return Promise.resolve(t).then(e, u); }; }), n[Symbol.asyncIterator] = function() { return this; }, n; function i(e, t) { o[e] && (n[e] = function(t) { return new Promise(function(r, n) { a.push([ e, t, r, n ]) > 1 || c(e, t); }); }, t && (n[e] = t(n[e]))); } function c(e, t) { try { (r = o[e](t)).value instanceof j ? Promise.resolve(r.value.v).then(s, u) : f(a[0][2], r); } catch (e) { f(a[0][3], e); } var r; } function s(e) { c("next", e); } function u(e) { c("throw", e); } function f(e, t) { e(t), a.shift(), a.length && c(a[0][0], a[0][1]); } } function S(e) { var t, r; return t = {}, n("next"), n("throw", function(e) { throw e; }), n("return"), t[Symbol.iterator] = function() { return this; }, t; function n(n, o) { t[n] = e[n] ? function(t) { return (r = !r) ? { value: j(e[n](t)), done: !1 } : o ? o(t) : t; } : o; } } function x(e) { if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined."); var t, r = e[Symbol.asyncIterator]; return r ? r.call(e) : (e = b(e), t = {}, n("next"), n("throw"), n("return"), t[Symbol.asyncIterator] = function() { return this; }, t); function n(r) { t[r] = e[r] && function(t) { return new Promise(function(n, o) { (function(e, t, r, n) { Promise.resolve(n).then(function(t) { e({ value: t, done: r }); }, t); })(n, o, (t = e[r](t)).done, t.value); }); }; } } function E(e, t) { return Object.defineProperty ? Object.defineProperty(e, "raw", { value: t }) : e.raw = t, e; } var T = Object.create ? function(e, t) { Object.defineProperty(e, "default", { enumerable: !0, value: t }); } : function(e, t) { e.default = t; }, I = function(e) { return I = Object.getOwnPropertyNames || function(e) { var t = []; for (var r in e) Object.prototype.hasOwnProperty.call(e, r) && (t[t.length] = r); return t; }, I(e); }; function D(e) { if (e && e.__esModule) return e; var t = {}; if (null != e) for (var r = I(e), n = 0; n < r.length; n++) "default" !== r[n] && v(t, e, r[n]); return T(t, e), t; } function R(e) { return e && e.__esModule ? e : { default: e }; } function k(e, t, r, n) { if ("a" === r && !n) throw new TypeError("Private accessor was defined without a getter"); if ("function" == typeof t ? e !== t || !n : !t.has(e)) throw new TypeError("Cannot read private member from an object whose class did not declare it"); return "m" === r ? n : "a" === r ? n.call(e) : n ? n.value : t.get(e); } function A(e, t, r, n, o) { if ("m" === n) throw new TypeError("Private method is not writable"); if ("a" === n && !o) throw new TypeError("Private accessor was defined without a setter"); if ("function" == typeof t ? e !== t || !o : !t.has(e)) throw new TypeError("Cannot write private member to an object whose class did not declare it"); return "a" === n ? o.call(e, r) : o ? o.value = r : t.set(e, r), r; } function F(e, t) { if (null === t || "object" != typeof t && "function" != typeof t) throw new TypeError("Cannot use 'in' operator on non-object"); return "function" == typeof e ? t === e : e.has(t); } function M(e, t, r) { if (null != t) { if ("object" != typeof t && "function" != typeof t) throw new TypeError("Object expected."); var n, o; if (r) { if (!Symbol.asyncDispose) throw new TypeError("Symbol.asyncDispose is not defined."); n = t[Symbol.asyncDispose]; } if (void 0 === n) { if (!Symbol.dispose) throw new TypeError("Symbol.dispose is not defined."); n = t[Symbol.dispose], r && (o = n); } if ("function" != typeof n) throw new TypeError("Object not disposable."); o && (n = function() { try { o.call(this); } catch (e) { return Promise.reject(e); } }), e.stack.push({ value: t, dispose: n, async: r }); } else r && e.stack.push({ async: !0 }); return t; } var C = "function" == typeof SuppressedError ? SuppressedError : function(e, t, r) { var n = new Error(r); return n.name = "SuppressedError", n.error = e, n.suppressed = t, n; }; function G(e) { function t(t) { e.error = e.hasError ? new C(t, e.error, "An error was suppressed during disposal.") : t, e.hasError = !0; } var r, n = 0; return function o() { for (;r = e.stack.pop(); ) try { if (!r.async && 1 === n) return n = 0, e.stack.push(r), Promise.resolve().then(o); if (r.dispose) { var a = r.dispose.call(r.value); if (r.async) return n |= 2, Promise.resolve(a).then(o, function(e) { return t(e), o(); }); } else n |= 1; } catch (e) { t(e); } if (1 === n) return e.hasError ? Promise.reject(e.error) : Promise.resolve(); if (e.hasError) throw e.error; }(); } function z(e, t) { return "string" == typeof e && /^\.\.?\//.test(e) ? e.replace(/\.(tsx)$|((?:\.d)?)((?:\.[^./]+?)?)\.([cm]?)ts$/i, function(e, r, n, o, a) { return r ? t ? ".jsx" : ".js" : !n || o && a ? n + o + "." + a.toLowerCase() + "js" : e; }) : e; } const N = { __extends: o, __assign: a, __rest: i, __decorate: c, __param: s, __esDecorate: u, __runInitializers: f, __propKey: l, __setFunctionName: p, __metadata: y, __awaiter: _, __generator: d, __createBinding: v, __exportStar: h, __values: b, __read: w, __spread: m, __spreadArrays: g, __spreadArray: O, __await: j, __asyncGenerator: P, __asyncDelegator: S, __asyncValues: x, __makeTemplateObject: E, __importStar: D, __importDefault: R, __classPrivateFieldGet: k, __classPrivateFieldSet: A, __classPrivateFieldIn: F, __addDisposableResource: M, __disposeResources: G, __rewriteRelativeImportExtension: z }; } }, t = {}; function r(n) { var o = t[n]; if (void 0 !== o) return o.exports; var a = t[n] = { exports: {} }; return e[n](a, a.exports, r), a.exports; } r.d = (e, t) => { for (var n in t) r.o(t, n) && !r.o(e, n) && Object.defineProperty(e, n, { enumerable: !0, get: t[n] }); }, r.o = (e, t) => Object.prototype.hasOwnProperty.call(e, t), r.r = e => { "undefined" != typeof Symbol && Symbol.toStringTag && Object.defineProperty(e, Symbol.toStringTag, { value: "Module" }), Object.defineProperty(e, "__esModule", { value: !0 }); }; var n = r(440), o = exports; for (var a in n) o[a] = n[a]; n.__esModule && Object.defineProperty(o, "__esModule", { value: !0 }); })(); //# sourceMappingURL=data:application/json;charset=utf-8;base64,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T0MsZUFBZUMsR0FBUyxjQUFjO1lBQUVDLFFBQU87OztJQ0Z2RCxJQUFJb00sSUFBc0JULEVBQW9CLE0iLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9keW1lbnNpb24vLi9zcmMvaW5kZXgudHMiLCJ3ZWJwYWNrOi8vZHltZW5zaW9uLy4vc3JjL21hcHBpbmdzL21hcHBpbmdIYW5kbGVycy50cyIsIndlYnBhY2s6Ly9keW1lbnNpb24vLi9ub2RlX21vZHVsZXMvdHNsaWIvdHNsaWIuZXM2Lm1qcyIsIndlYnBhY2s6Ly9keW1lbnNpb24vd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vZHltZW5zaW9uL3dlYnBhY2svcnVudGltZS9kZWZpbmUgcHJvcGVydHkgZ2V0dGVycyIsIndlYnBhY2s6Ly9keW1lbnNpb24vd2VicGFjay9ydW50aW1lL2hhc093blByb3BlcnR5IHNob3J0aGFuZCIsIndlYnBhY2s6Ly9keW1lbnNpb24vd2VicGFjay9ydW50aW1lL21ha2UgbmFtZXNwYWNlIG9iamVjdCIsIndlYnBhY2s6Ly9keW1lbnNpb24vd2VicGFjay9zdGFydHVwIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuY29uc3QgdHNsaWJfMSA9IHJlcXVpcmUoXCJ0c2xpYlwiKTtcbi8vRXhwb3J0cyBhbGwgaGFuZGxlciBmdW5jdGlvbnNcbnRzbGliXzEuX19leHBvcnRTdGFyKHJlcXVpcmUoXCIuL21hcHBpbmdzL21hcHBpbmdIYW5kbGVyc1wiKSwgZXhwb3J0cyk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbi8vIGltcG9ydCB7IFRyYW5zZmVyIH0gZnJvbSBcIi4uL3R5cGVzXCI7XG4vLyBpbXBvcnQgeyBDb3Ntb3NCbG9jaywgQ29zbW9zRXZlbnQgfSBmcm9tIFwiQHN1YnFsL3R5cGVzLWNvc21vc1wiO1xuLy8gaW1wb3J0IHsgc2hhMjU2IH0gZnJvbSBcIkBjb3NtanMvY3J5cHRvXCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLnRocm93RXJyb3IgPSB0aHJvd0Vycm9yO1xuYXN5bmMgZnVuY3Rpb24gdGhyb3dFcnJvcigpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJ0aGlzIGlzIGEgdGVzdCBlcnJvclwiKTtcbn1cbi8vIGV4cG9ydCBhc3luYyBmdW5jdGlvbiBoYW5kbGVCbG9jayhibG9jazogQ29zbW9zQmxvY2spOiBQcm9taXNlPHZvaWQ+IHtcbi8vICAgbG9nZ2VyLmluZm8oXCJIQU5ETEUgQkxPQ0tcIik7XG4vLyAgIGxvZ2dlci5pbmZvKGBIYXNoZWQgZGF0YSAke3NoYTI1NihibG9jay5ibG9jay5oZWFkZXIuZGF0YUhhc2gpfWApO1xuLy8gfVxuLy8gZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGhhbmRsZUV2ZW50KGV2ZW50OiBDb3Ntb3NFdmVudCk6IFByb21pc2U8dm9pZD4ge1xuLy8gICBjb25zdCBldmVudFJlY29yZCA9IFRyYW5zZmVyLmNyZWF0ZSh7XG4vLyAgICAgaWQ6IGAke2V2ZW50LnR4Lmhhc2h9LSR7ZXZlbnQubXNnIS5pZHh9LSR7ZXZlbnQuaWR4fWAsXG4vLyAgICAgYmxvY2tIZWlnaHQ6IEJpZ0ludChldmVudC5ibG9jay5ibG9jay5oZWFkZXIuaGVpZ2h0KSxcbi8vICAgICB0eEhhc2g6IGV2ZW50LnR4Lmhhc2gsXG4vLyAgICAgdG9BZGRyZXNzOiBcIlwiLFxuLy8gICAgIGFtb3VudDogXCJcIixcbi8vICAgICBmcm9tQWRkcmVzczogXCJcIixcbi8vICAgfSk7XG4vLyAgIGZvciAoY29uc3QgYXR0ciBvZiBldmVudC5ldmVudC5hdHRyaWJ1dGVzKSB7XG4vLyAgICAgc3dpdGNoIChhdHRyLmtleSkge1xuLy8gICAgICAgY2FzZSBcInJlY2lwaWVudFwiOlxuLy8gICAgICAgICBldmVudFJlY29yZC50b0FkZHJlc3MgPSBhdHRyLnZhbHVlLnRvU3RyaW5nKCk7XG4vLyAgICAgICAgIGJyZWFrO1xuLy8gICAgICAgY2FzZSBcImFtb3VudFwiOlxuLy8gICAgICAgICBldmVudFJlY29yZC5hbW91bnQgPSBhdHRyLnZhbHVlLnRvU3RyaW5nKCk7XG4vLyAgICAgICAgIGJyZWFrO1xuLy8gICAgICAgY2FzZSBcInNlbmRlclwiOlxuLy8gICAgICAgICBldmVudFJlY29yZC5mcm9tQWRkcmVzcyA9IGF0dHIudmFsdWUudG9TdHJpbmcoKTtcbi8vICAgICAgICAgYnJlYWs7XG4vLyAgICAgICBkZWZhdWx0OlxuLy8gICAgICAgICBicmVhaztcbi8vICAgICB9XG4vLyAgIH1cbi8vICAgYXdhaXQgZXZlbnRSZWNvcmQuc2F2ZSgpO1xuLy8gfVxuIiwiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQgQ29ycG9yYXRpb24uXG5cblBlcm1pc3Npb24gdG8gdXNlLCBjb3B5LCBtb2RpZnksIGFuZC9vciBkaXN0cmlidXRlIHRoaXMgc29mdHdhcmUgZm9yIGFueVxucHVycG9zZSB3aXRoIG9yIHdpdGhvdXQgZmVlIGlzIGhlcmVieSBncmFudGVkLlxuXG5USEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiIEFORCBUSEUgQVVUSE9SIERJU0NMQUlNUyBBTEwgV0FSUkFOVElFUyBXSVRIXG5SRUdBUkQgVE8gVEhJUyBTT0ZUV0FSRSBJTkNMVURJTkcgQUxMIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFlcbkFORCBGSVRORVNTLiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIEJFIExJQUJMRSBGT1IgQU5ZIFNQRUNJQUwsIERJUkVDVCxcbklORElSRUNULCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgT1IgQU5ZIERBTUFHRVMgV0hBVFNPRVZFUiBSRVNVTFRJTkcgRlJPTVxuTE9TUyBPRiBVU0UsIERBVEEgT1IgUFJPRklUUywgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIE5FR0xJR0VOQ0UgT1Jcbk9USEVSIFRPUlRJT1VTIEFDVElPTiwgQVJJU0lORyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBVU0UgT1JcblBFUkZPUk1BTkNFIE9GIFRISVMgU09GVFdBUkUuXG4qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqL1xuLyogZ2xvYmFsIFJlZmxlY3QsIFByb21pc2UsIFN1cHByZXNzZWRFcnJvciwgU3ltYm9sLCBJdGVyYXRvciAqL1xuXG52YXIgZXh0ZW5kU3RhdGljcyA9IGZ1bmN0aW9uKGQsIGIpIHtcbiAgZXh0ZW5kU3RhdGljcyA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fFxuICAgICAgKHsgX19wcm90b19fOiBbXSB9IGluc3RhbmNlb2YgQXJyYXkgJiYgZnVuY3Rpb24gKGQsIGIpIHsgZC5fX3Byb3RvX18gPSBiOyB9KSB8fFxuICAgICAgZnVuY3Rpb24gKGQsIGIpIHsgZm9yICh2YXIgcCBpbiBiKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGIsIHApKSBkW3BdID0gYltwXTsgfTtcbiAgcmV0dXJuIGV4dGVuZFN0YXRpY3MoZCwgYik7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gX19leHRlbmRzKGQsIGIpIHtcbiAgaWYgKHR5cGVvZiBiICE9PSBcImZ1bmN0aW9uXCIgJiYgYiAhPT0gbnVsbClcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJDbGFzcyBleHRlbmRzIHZhbHVlIFwiICsgU3RyaW5nKGIpICsgXCIgaXMgbm90IGEgY29uc3RydWN0b3Igb3IgbnVsbFwiKTtcbiAgZXh0ZW5kU3RhdGljcyhkLCBiKTtcbiAgZnVuY3Rpb24gX18oKSB7IHRoaXMuY29uc3RydWN0b3IgPSBkOyB9XG4gIGQucHJvdG90eXBlID0gYiA9PT0gbnVsbCA/IE9iamVjdC5jcmVhdGUoYikgOiAoX18ucHJvdG90eXBlID0gYi5wcm90b3R5cGUsIG5ldyBfXygpKTtcbn1cblxuZXhwb3J0IHZhciBfX2Fzc2lnbiA9IGZ1bmN0aW9uKCkge1xuICBfX2Fzc2lnbiA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24gX19hc3NpZ24odCkge1xuICAgICAgZm9yICh2YXIgcywgaSA9IDEsIG4gPSBhcmd1bWVudHMubGVuZ3RoOyBpIDwgbjsgaSsrKSB7XG4gICAgICAgICAgcyA9IGFyZ3VtZW50c1tpXTtcbiAgICAgICAgICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkpIHRbcF0gPSBzW3BdO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHQ7XG4gIH1cbiAgcmV0dXJuIF9fYXNzaWduLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBfX3Jlc3QocywgZSkge1xuICB2YXIgdCA9IHt9O1xuICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkgJiYgZS5pbmRleE9mKHApIDwgMClcbiAgICAgIHRbcF0gPSBzW3BdO1xuICBpZiAocyAhPSBudWxsICYmIHR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzID09PSBcImZ1bmN0aW9uXCIpXG4gICAgICBmb3IgKHZhciBpID0gMCwgcCA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMocyk7IGkgPCBwLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgaWYgKGUuaW5kZXhPZihwW2ldKSA8IDAgJiYgT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKHMsIHBbaV0pKVxuICAgICAgICAgICAgICB0W3BbaV1dID0gc1twW2ldXTtcbiAgICAgIH1cbiAgcmV0dXJuIHQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBfX2RlY29yYXRlKGRlY29yYXRvcnMsIHRhcmdldCwga2V5LCBkZXNjKSB7XG4gIHZhciBjID0gYXJndW1lbnRzLmxlbmd0aCwgciA9IGMgPCAzID8gdGFyZ2V0IDogZGVzYyA9PT0gbnVsbCA/IGRlc2MgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRhcmdldCwga2V5KSA6IGRlc2MsIGQ7XG4gIGlmICh0eXBlb2YgUmVmbGVjdCA9PT0gXCJvYmplY3RcIiAmJiB0eXBlb2YgUmVmbGVjdC5kZWNvcmF0ZSA9PT0gXCJmdW5jdGlvblwiKSByID0gUmVmbGVjdC5kZWNvcmF0ZShkZWNvcmF0b3JzLCB0YXJnZXQsIGtleSwgZGVzYyk7XG4gIGVsc2UgZm9yICh2YXIgaSA9IGRlY29yYXRvcnMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIGlmIChkID0gZGVjb3JhdG9yc1tpXSkgciA9IChjIDwgMyA/IGQocikgOiBjID4gMyA/IGQodGFyZ2V0LCBrZXksIHIpIDogZCh0YXJnZXQsIGtleSkpIHx8IHI7XG4gIHJldHVybiBjID4gMyAmJiByICYmIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgciksIHI7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBfX3BhcmFtKHBhcmFtSW5kZXgsIGRlY29yYXRvcikge1xuICByZXR1cm4gZnVuY3Rpb24gKHRhcmdldCwga2V5KSB7IGRlY29yYXRvcih0YXJnZXQsIGtleSwgcGFyYW1JbmRleCk7IH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIF9fZXNEZWNvcmF0ZShjdG9yLCBkZXNjcmlwdG9ySW4sIGRlY29yYXRvcnMsIGNvbnRleHRJbiwgaW5pdGlhbGl6ZXJzLCBleHRyYUluaXRpYWxpemVycykge1xuICBmdW5jdGlvbiBhY2NlcHQoZikgeyBpZiAoZiAhPT0gdm9pZCAwICYmIHR5cGVvZiBmICE9PSBcImZ1bmN0aW9uXCIpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJGdW5jdGlvbiBleHBlY3RlZFwiKTsgcmV0dXJuIGY7IH1cbiAgdmFyIGtpbmQgPSBjb250ZXh0SW4ua2luZCwga2V5ID0ga2luZCA9PT0gXCJnZXR0ZXJcIiA/IFwiZ2V0XCIgOiBraW5kID09PSBcInNldHRlclwiID8gXCJzZXRcIiA6IFwidmFsdWVcIjtcbiAgdmFyIHRhcmdldCA9ICFkZXNjcmlwdG9ySW4gJiYgY3RvciA/IGNvbnRleHRJbltcInN0YXRpY1wiXSA/IGN0b3IgOiBjdG9yLnByb3RvdHlwZSA6IG51bGw7XG4gIHZhciBkZXNjcmlwdG9yID0gZGVzY3JpcHRvckluIHx8ICh0YXJnZXQgPyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRhcmdldCwgY29udGV4dEluLm5hbWUpIDoge30pO1xuICB2YXIgXywgZG9uZSA9IGZhbHNlO1xuICBmb3IgKHZhciBpID0gZGVjb3JhdG9ycy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgdmFyIGNvbnRleHQgPSB7fTtcbiAgICAgIGZvciAodmFyIHAgaW4gY29udGV4dEluKSBjb250ZXh0W3BdID0gcCA9PT0gXCJhY2Nlc3NcIiA/IHt9IDogY29udGV4dEluW3BdO1xuICAgICAgZm9yICh2YXIgcCBpbiBjb250ZXh0SW4uYWNjZXNzKSBjb250ZXh0LmFjY2Vzc1twXSA9IGNvbnRleHRJbi5hY2Nlc3NbcF07XG4gICAgICBjb250ZXh0LmFkZEluaXRpYWxpemVyID0gZnVuY3Rpb24gKGYpIHsgaWYgKGRvbmUpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgYWRkIGluaXRpYWxpemVycyBhZnRlciBkZWNvcmF0aW9uIGhhcyBjb21wbGV0ZWRcIik7IGV4dHJhSW5pdGlhbGl6ZXJzLnB1c2goYWNjZXB0KGYgfHwgbnVsbCkpOyB9O1xuICAgICAgdmFyIHJlc3VsdCA9ICgwLCBkZWNvcmF0b3JzW2ldKShraW5kID09PSBcImFjY2Vzc29yXCIgPyB7IGdldDogZGVzY3JpcHRvci5nZXQsIHNldDogZGVzY3JpcHRvci5zZXQgfSA6IGRlc2NyaXB0b3Jba2V5XSwgY29udGV4dCk7XG4gICAgICBpZiAoa2luZCA9PT0gXCJhY2Nlc3NvclwiKSB7XG4gICAgICAgICAgaWYgKHJlc3VsdCA9PT0gdm9pZCAwKSBjb250aW51ZTtcbiAgICAgICAgICBpZiAocmVzdWx0ID09PSBudWxsIHx8IHR5cGVvZiByZXN1bHQgIT09IFwib2JqZWN0XCIpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJPYmplY3QgZXhwZWN0ZWRcIik7XG4gICAgICAgICAgaWYgKF8gPSBhY2NlcHQocmVzdWx0LmdldCkpIGRlc2NyaXB0b3IuZ2V0ID0gXztcbiAgICAgICAgICBpZiAoXyA9IGFjY2VwdChyZXN1bHQuc2V0KSkgZGVzY3JpcHRvci5zZXQgPSBfO1xuICAgICAgICAgIGlmIChfID0gYWNjZXB0KHJlc3VsdC5pbml0KSkgaW5pdGlhbGl6ZXJzLnVuc2hpZnQoXyk7XG4gICAgICB9XG4gICAgICBlbHNlIGlmIChfID0gYWNjZXB0KHJlc3VsdCkpIHtcbiAgICAgICAgICBpZiAoa2luZCA9PT0gXCJmaWVsZFwiKSBpbml0aWFsaXplcnMudW5zaGlmdChfKTtcbiAgICAgICAgICBlbHNlIGRlc2NyaXB0b3Jba2V5XSA9IF87XG4gICAgICB9XG4gIH1cbiAgaWYgKHRhcmdldCkgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgY29udGV4dEluLm5hbWUsIGRlc2NyaXB0b3IpO1xuICBkb25lID0gdHJ1ZTtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBfX3J1bkluaXRpYWxpemVycyh0aGlzQXJnLCBpbml0aWFsaXplcnMsIHZhbHVlKSB7XG4gIHZhciB1c2VWYWx1ZSA9IGFyZ3VtZW50cy5sZW5ndGggPiAyO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGluaXRpYWxpemVycy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFsdWUgPSB1c2VWYWx1ZSA/IGluaXRpYWxpemVyc1tpXS5jYWxsKHRoaXNBcmcsIHZhbHVlKSA6IGluaXRpYWxpemVyc1tpXS5jYWxsKHRoaXNBcmcpO1xuICB9XG4gIHJldHVybiB1c2VWYWx1ZSA/IHZhbHVlIDogdm9pZCAwO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIF9fcHJvcEtleSh4KSB7XG4gIHJldHVybiB0eXBlb2YgeCA9PT0gXCJzeW1ib2xcIiA/IHggOiBcIlwiLmNvbmNhdCh4KTtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBfX3NldEZ1bmN0aW9uTmFtZShmLCBuYW1lLCBwcmVmaXgpIHtcbiAgaWYgKHR5cGVvZiBuYW1lID09PSBcInN5bWJvbFwiKSBuYW1lID0gbmFtZS5kZXNjcmlwdGlvbiA/IFwiW1wiLmNvbmNhdChuYW1lLmRlc2NyaXB0aW9uLCBcIl1cIikgOiBcIlwiO1xuICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KGYsIFwibmFtZVwiLCB7IGNvbmZpZ3VyYWJsZTogdHJ1ZSwgdmFsdWU6IHByZWZpeCA/IFwiXCIuY29uY2F0KHByZWZpeCwgXCIgXCIsIG5hbWUpIDogbmFtZSB9KTtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBfX21ldGFkYXRhKG1ldGFkYXRhS2V5LCBtZXRhZGF0YVZhbHVlKSB7XG4gIGlmICh0eXBlb2YgUmVmbGVjdCA9PT0gXCJvYmplY3RcIiAmJiB0eXBlb2YgUmVmbGVjdC5tZXRhZGF0YSA9PT0gXCJmdW5jdGlvblwiKSByZXR1cm4gUmVmbGVjdC5tZXRhZGF0YShtZXRhZGF0YUtleSwgbWV0YWRhdGFWYWx1ZSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBfX2F3YWl0ZXIodGhpc0FyZywgX2FyZ3VtZW50cywgUCwgZ2VuZXJhdG9yKSB7XG4gIGZ1bmN0aW9uIGFkb3B0KHZhbHVlKSB7IHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIFAgPyB2YWx1ZSA6IG5ldyBQKGZ1bmN0aW9uIChyZXNvbHZlKSB7IHJlc29sdmUodmFsdWUpOyB9KTsgfVxuICByZXR1cm4gbmV3IChQIHx8IChQID0gUHJvbWlzZSkpKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgIGZ1bmN0aW9uIGZ1bGZpbGxlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvci5uZXh0KHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgIGZ1bmN0aW9uIHJlamVjdGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yW1widGhyb3dcIl0odmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgZnVuY3Rpb24gc3RlcChyZXN1bHQpIHsgcmVzdWx0LmRvbmUgPyByZXNvbHZlKHJlc3VsdC52YWx1ZSkgOiBhZG9wdChyZXN1bHQudmFsdWUpLnRoZW4oZnVsZmlsbGVkLCByZWplY3RlZCk7IH1cbiAgICAgIHN0ZXAoKGdlbmVyYXRvciA9IGdlbmVyYXRvci5hcHBseSh0aGlzQXJnLCBfYXJndW1lbnRzIHx8IFtdKSkubmV4dCgpKTtcbiAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBfX2dlbmVyYXRvcih0aGlzQXJnLCBib2R5KSB7XG4gIHZhciBfID0geyBsYWJlbDogMCwgc2VudDogZnVuY3Rpb24oKSB7IGlmICh0WzBdICYgMSkgdGhyb3cgdFsxXTsgcmV0dXJuIHRbMV07IH0sIHRyeXM6IFtdLCBvcHM6IFtdIH0sIGYsIHksIHQsIGcgPSBPYmplY3QuY3JlYXRlKCh0eXBlb2YgSXRlcmF0b3IgPT09IFwiZnVuY3Rpb25cIiA/IEl0ZXJhdG9yIDogT2JqZWN0KS5wcm90b3R5cGUpO1xuICByZXR1cm4gZy5uZXh0ID0gdmVyYigwKSwgZ1tcInRocm93XCJdID0gdmVyYigxKSwgZ1tcInJldHVyblwiXSA9IHZlcmIoMiksIHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiAoZ1tTeW1ib2wuaXRlcmF0b3JdID0gZnVuY3Rpb24oKSB7IHJldHVybiB0aGlzOyB9KSwgZztcbiAgZnVuY3Rpb24gdmVyYihuKSB7IHJldHVybiBmdW5jdGlvbiAodikgeyByZXR1cm4gc3RlcChbbiwgdl0pOyB9OyB9XG4gIGZ1bmN0aW9uIHN0ZXAob3ApIHtcbiAgICAgIGlmIChmKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiR2VuZXJhdG9yIGlzIGFscmVhZHkgZXhlY3V0aW5nLlwiKTtcbiAgICAgIHdoaWxlIChnICYmIChnID0gMCwgb3BbMF0gJiYgKF8gPSAwKSksIF8pIHRyeSB7XG4gICAgICAgICAgaWYgKGYgPSAxLCB5ICYmICh0ID0gb3BbMF0gJiAyID8geVtcInJldHVyblwiXSA6IG9wWzBdID8geVtcInRocm93XCJdIHx8ICgodCA9IHlbXCJyZXR1cm5cIl0pICYmIHQuY2FsbCh5KSwgMCkgOiB5Lm5leHQpICYmICEodCA9IHQuY2FsbCh5LCBvcFsxXSkpLmRvbmUpIHJldHVybiB0O1xuICAgICAgICAgIGlmICh5ID0gMCwgdCkgb3AgPSBbb3BbMF0gJiAyLCB0LnZhbHVlXTtcbiAgICAgICAgICBzd2l0Y2ggKG9wWzBdKSB7XG4gICAgICAgICAgICAgIGNhc2UgMDogY2FzZSAxOiB0ID0gb3A7IGJyZWFrO1xuICAgICAgICAgICAgICBjYXNlIDQ6IF8ubGFiZWwrKzsgcmV0dXJuIHsgdmFsdWU6IG9wWzFdLCBkb25lOiBmYWxzZSB9O1xuICAgICAgICAgICAgICBjYXNlIDU6IF8ubGFiZWwrKzsgeSA9IG9wWzFdOyBvcCA9IFswXTsgY29udGludWU7XG4gICAgICAgICAgICAgIGNhc2UgNzogb3AgPSBfLm9wcy5wb3AoKTsgXy50cnlzLnBvcCgpOyBjb250aW51ZTtcbiAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgIGlmICghKHQgPSBfLnRyeXMsIHQgPSB0Lmxlbmd0aCA+IDAgJiYgdFt0Lmxlbmd0aCAtIDFdKSAmJiAob3BbMF0gPT09IDYgfHwgb3BbMF0gPT09IDIpKSB7IF8gPSAwOyBjb250aW51ZTsgfVxuICAgICAgICAgICAgICAgICAgaWYgKG9wWzBdID09PSAzICYmICghdCB8fCAob3BbMV0gPiB0WzBdICYmIG9wWzFdIDwgdFszXSkpKSB7IF8ubGFiZWwgPSBvcFsxXTsgYnJlYWs7IH1cbiAgICAgICAgICAgICAgICAgIGlmIChvcFswXSA9PT0gNiAmJiBfLmxhYmVsIDwgdFsxXSkgeyBfLmxhYmVsID0gdFsxXTsgdCA9IG9wOyBicmVhazsgfVxuICAgICAgICAgICAgICAgICAgaWYgKHQgJiYgXy5sYWJlbCA8IHRbMl0pIHsgXy5sYWJlbCA9IHRbMl07IF8ub3BzLnB1c2gob3ApOyBicmVhazsgfVxuICAgICAgICAgICAgICAgICAgaWYgKHRbMl0pIF8ub3BzLnBvcCgpO1xuICAgICAgICAgICAgICAgICAgXy50cnlzLnBvcCgpOyBjb250aW51ZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgb3AgPSBib2R5LmNhbGwodGhpc0FyZywgXyk7XG4gICAgICB9IGNhdGNoIChlKSB7IG9wID0gWzYsIGVdOyB5ID0gMDsgfSBmaW5hbGx5IHsgZiA9IHQgPSAwOyB9XG4gICAgICBpZiAob3BbMF0gJiA1KSB0aHJvdyBvcFsxXTsgcmV0dXJuIHsgdmFsdWU6IG9wWzBdID8gb3BbMV0gOiB2b2lkIDAsIGRvbmU6IHRydWUgfTtcbiAgfVxufVxuXG5leHBvcnQgdmFyIF9fY3JlYXRlQmluZGluZyA9IE9iamVjdC5jcmVhdGUgPyAoZnVuY3Rpb24obywgbSwgaywgazIpIHtcbiAgaWYgKGsyID09PSB1bmRlZmluZWQpIGsyID0gaztcbiAgdmFyIGRlc2MgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG0sIGspO1xuICBpZiAoIWRlc2MgfHwgKFwiZ2V0XCIgaW4gZGVzYyA/ICFtLl9fZXNNb2R1bGUgOiBkZXNjLndyaXRhYmxlIHx8IGRlc2MuY29uZmlndXJhYmxlKSkge1xuICAgICAgZGVzYyA9IHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbigpIHsgcmV0dXJuIG1ba107IH0gfTtcbiAgfVxuICBPYmplY3QuZGVmaW5lUHJvcGVydHkobywgazIsIGRlc2MpO1xufSkgOiAoZnVuY3Rpb24obywgbSwgaywgazIpIHtcbiAgaWYgKGsyID09PSB1bmRlZmluZWQpIGsyID0gaztcbiAgb1trMl0gPSBtW2tdO1xufSk7XG5cbmV4cG9ydCBmdW5jdGlvbiBfX2V4cG9ydFN0YXIobSwgbykge1xuICBmb3IgKHZhciBwIGluIG0pIGlmIChwICE9PSBcImRlZmF1bHRcIiAmJiAhT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG8sIHApKSBfX2NyZWF0ZUJpbmRpbmcobywgbSwgcCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBfX3ZhbHVlcyhvKSB7XG4gIHZhciBzID0gdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIFN5bWJvbC5pdGVyYXRvciwgbSA9IHMgJiYgb1tzXSwgaSA9IDA7XG4gIGlmIChtKSByZXR1cm4gbS5jYWxsKG8pO1xuICBpZiAobyAmJiB0eXBlb2Ygby5sZW5ndGggPT09IFwibnVtYmVyXCIpIHJldHVybiB7XG4gICAgICBuZXh0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgaWYgKG8gJiYgaSA+PSBvLmxlbmd0aCkgbyA9IHZvaWQgMDtcbiAgICAgICAgICByZXR1cm4geyB2YWx1ZTogbyAmJiBvW2krK10sIGRvbmU6ICFvIH07XG4gICAgICB9XG4gIH07XG4gIHRocm93IG5ldyBUeXBlRXJyb3IocyA/IFwiT2JqZWN0IGlzIG5vdCBpdGVyYWJsZS5cIiA6IFwiU3ltYm9sLml0ZXJhdG9yIGlzIG5vdCBkZWZpbmVkLlwiKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIF9fcmVhZChvLCBuKSB7XG4gIHZhciBtID0gdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIG9bU3ltYm9sLml0ZXJhdG9yXTtcbiAgaWYgKCFtKSByZXR1cm4gbztcbiAgdmFyIGkgPSBtLmNhbGwobyksIHIsIGFyID0gW10sIGU7XG4gIHRyeSB7XG4gICAgICB3aGlsZSAoKG4gPT09IHZvaWQgMCB8fCBuLS0gPiAwKSAmJiAhKHIgPSBpLm5leHQoKSkuZG9uZSkgYXIucHVzaChyLnZhbHVlKTtcbiAgfVxuICBjYXRjaCAoZXJyb3IpIHsgZSA9IHsgZXJyb3I6IGVycm9yIH07IH1cbiAgZmluYWxseSB7XG4gICAgICB0cnkge1xuICAgICAgICAgIGlmIChyICYmICFyLmRvbmUgJiYgKG0gPSBpW1wicmV0dXJuXCJdKSkgbS5jYWxsKGkpO1xuICAgICAgfVxuICAgICAgZmluYWxseSB7IGlmIChlKSB0aHJvdyBlLmVycm9yOyB9XG4gIH1cbiAgcmV0dXJuIGFyO1xufVxuXG4vKiogQGRlcHJlY2F0ZWQgKi9cbmV4cG9ydCBmdW5jdGlvbiBfX3NwcmVhZCgpIHtcbiAgZm9yICh2YXIgYXIgPSBbXSwgaSA9IDA7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspXG4gICAgICBhciA9IGFyLmNvbmNhdChfX3JlYWQoYXJndW1lbnRzW2ldKSk7XG4gIHJldHVybiBhcjtcbn1cblxuLyoqIEBkZXByZWNhdGVkICovXG5leHBvcnQgZnVuY3Rpb24gX19zcHJlYWRBcnJheXMoKSB7XG4gIGZvciAodmFyIHMgPSAwLCBpID0gMCwgaWwgPSBhcmd1bWVudHMubGVuZ3RoOyBpIDwgaWw7IGkrKykgcyArPSBhcmd1bWVudHNbaV0ubGVuZ3RoO1xuICBmb3IgKHZhciByID0gQXJyYXkocyksIGsgPSAwLCBpID0gMDsgaSA8IGlsOyBpKyspXG4gICAgICBmb3IgKHZhciBhID0gYXJndW1lbnRzW2ldLCBqID0gMCwgamwgPSBhLmxlbmd0aDsgaiA8IGpsOyBqKyssIGsrKylcbiAgICAgICAgICByW2tdID0gYVtqXTtcbiAgcmV0dXJuIHI7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBfX3NwcmVhZEFycmF5KHRvLCBmcm9tLCBwYWNrKSB7XG4gIGlmIChwYWNrIHx8IGFyZ3VtZW50cy5sZW5ndGggPT09IDIpIGZvciAodmFyIGkgPSAwLCBsID0gZnJvbS5sZW5ndGgsIGFyOyBpIDwgbDsgaSsrKSB7XG4gICAgICBpZiAoYXIgfHwgIShpIGluIGZyb20pKSB7XG4gICAgICAgICAgaWYgKCFhcikgYXIgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChmcm9tLCAwLCBpKTtcbiAgICAgICAgICBhcltpXSA9IGZyb21baV07XG4gICAgICB9XG4gIH1cbiAgcmV0dXJuIHRvLmNvbmNhdChhciB8fCBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChmcm9tKSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBfX2F3YWl0KHYpIHtcbiAgcmV0dXJuIHRoaXMgaW5zdGFuY2VvZiBfX2F3YWl0ID8gKHRoaXMudiA9IHYsIHRoaXMpIDogbmV3IF9fYXdhaXQodik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBfX2FzeW5jR2VuZXJhdG9yKHRoaXNBcmcsIF9hcmd1bWVudHMsIGdlbmVyYXRvcikge1xuICBpZiAoIVN5bWJvbC5hc3luY0l0ZXJhdG9yKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3ltYm9sLmFzeW5jSXRlcmF0b3IgaXMgbm90IGRlZmluZWQuXCIpO1xuICB2YXIgZyA9IGdlbmVyYXRvci5hcHBseSh0aGlzQXJnLCBfYXJndW1lbnRzIHx8IFtdKSwgaSwgcSA9IFtdO1xuICByZXR1cm4gaSA9IE9iamVjdC5jcmVhdGUoKHR5cGVvZiBBc3luY0l0ZXJhdG9yID09PSBcImZ1bmN0aW9uXCIgPyBBc3luY0l0ZXJhdG9yIDogT2JqZWN0KS5wcm90b3R5cGUpLCB2ZXJiKFwibmV4dFwiKSwgdmVyYihcInRocm93XCIpLCB2ZXJiKFwicmV0dXJuXCIsIGF3YWl0UmV0dXJuKSwgaVtTeW1ib2wuYXN5bmNJdGVyYXRvcl0gPSBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzOyB9LCBpO1xuICBmdW5jdGlvbiBhd2FpdFJldHVybihmKSB7IHJldHVybiBmdW5jdGlvbiAodikgeyByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHYpLnRoZW4oZiwgcmVqZWN0KTsgfTsgfVxuICBmdW5jdGlvbiB2ZXJiKG4sIGYpIHsgaWYgKGdbbl0pIHsgaVtuXSA9IGZ1bmN0aW9uICh2KSB7IHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAoYSwgYikgeyBxLnB1c2goW24sIHYsIGEsIGJdKSA+IDEgfHwgcmVzdW1lKG4sIHYpOyB9KTsgfTsgaWYgKGYpIGlbbl0gPSBmKGlbbl0pOyB9IH1cbiAgZnVuY3Rpb24gcmVzdW1lKG4sIHYpIHsgdHJ5IHsgc3RlcChnW25dKHYpKTsgfSBjYXRjaCAoZSkgeyBzZXR0bGUocVswXVszXSwgZSk7IH0gfVxuICBmdW5jdGlvbiBzdGVwKHIpIHsgci52YWx1ZSBpbnN0YW5jZW9mIF9fYXdhaXQgPyBQcm9taXNlLnJlc29sdmUoci52YWx1ZS52KS50aGVuKGZ1bGZpbGwsIHJlamVjdCkgOiBzZXR0bGUocVswXVsyXSwgcik7IH1cbiAgZnVuY3Rpb24gZnVsZmlsbCh2YWx1ZSkgeyByZXN1bWUoXCJuZXh0XCIsIHZhbHVlKTsgfVxuICBmdW5jdGlvbiByZWplY3QodmFsdWUpIHsgcmVzdW1lKFwidGhyb3dcIiwgdmFsdWUpOyB9XG4gIGZ1bmN0aW9uIHNldHRsZShmLCB2KSB7IGlmIChmKHYpLCBxLnNoaWZ0KCksIHEubGVuZ3RoKSByZXN1bWUocVswXVswXSwgcVswXVsxXSk7IH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIF9fYXN5bmNEZWxlZ2F0b3Iobykge1xuICB2YXIgaSwgcDtcbiAgcmV0dXJuIGkgPSB7fSwgdmVyYihcIm5leHRcIiksIHZlcmIoXCJ0aHJvd1wiLCBmdW5jdGlvbiAoZSkgeyB0aHJvdyBlOyB9KSwgdmVyYihcInJldHVyblwiKSwgaVtTeW1ib2wuaXRlcmF0b3JdID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfSwgaTtcbiAgZnVuY3Rpb24gdmVyYihuLCBmKSB7IGlbbl0gPSBvW25dID8gZnVuY3Rpb24gKHYpIHsgcmV0dXJuIChwID0gIXApID8geyB2YWx1ZTogX19hd2FpdChvW25dKHYpKSwgZG9uZTogZmFsc2UgfSA6IGYgPyBmKHYpIDogdjsgfSA6IGY7IH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIF9fYXN5bmNWYWx1ZXMobykge1xuICBpZiAoIVN5bWJvbC5hc3luY0l0ZXJhdG9yKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3ltYm9sLmFzeW5jSXRlcmF0b3IgaXMgbm90IGRlZmluZWQuXCIpO1xuICB2YXIgbSA9IG9bU3ltYm9sLmFzeW5jSXRlcmF0b3JdLCBpO1xuICByZXR1cm4gbSA/IG0uY2FsbChvKSA6IChvID0gdHlwZW9mIF9fdmFsdWVzID09PSBcImZ1bmN0aW9uXCIgPyBfX3ZhbHVlcyhvKSA6IG9bU3ltYm9sLml0ZXJhdG9yXSgpLCBpID0ge30sIHZlcmIoXCJuZXh0XCIpLCB2ZXJiKFwidGhyb3dcIiksIHZlcmIoXCJyZXR1cm5cIiksIGlbU3ltYm9sLmFzeW5jSXRlcmF0b3JdID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfSwgaSk7XG4gIGZ1bmN0aW9uIHZlcmIobikgeyBpW25dID0gb1tuXSAmJiBmdW5jdGlvbiAodikgeyByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkgeyB2ID0gb1tuXSh2KSwgc2V0dGxlKHJlc29sdmUsIHJlamVjdCwgdi5kb25lLCB2LnZhbHVlKTsgfSk7IH07IH1cbiAgZnVuY3Rpb24gc2V0dGxlKHJlc29sdmUsIHJlamVjdCwgZCwgdikgeyBQcm9taXNlLnJlc29sdmUodikudGhlbihmdW5jdGlvbih2KSB7IHJlc29sdmUoeyB2YWx1ZTogdiwgZG9uZTogZCB9KTsgfSwgcmVqZWN0KTsgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gX19tYWtlVGVtcGxhdGVPYmplY3QoY29va2VkLCByYXcpIHtcbiAgaWYgKE9iamVjdC5kZWZpbmVQcm9wZXJ0eSkgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkoY29va2VkLCBcInJhd1wiLCB7IHZhbHVlOiByYXcgfSk7IH0gZWxzZSB7IGNvb2tlZC5yYXcgPSByYXc7IH1cbiAgcmV0dXJuIGNvb2tlZDtcbn07XG5cbnZhciBfX3NldE1vZHVsZURlZmF1bHQgPSBPYmplY3QuY3JlYXRlID8gKGZ1bmN0aW9uKG8sIHYpIHtcbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG8sIFwiZGVmYXVsdFwiLCB7IGVudW1lcmFibGU6IHRydWUsIHZhbHVlOiB2IH0pO1xufSkgOiBmdW5jdGlvbihvLCB2KSB7XG4gIG9bXCJkZWZhdWx0XCJdID0gdjtcbn07XG5cbnZhciBvd25LZXlzID0gZnVuY3Rpb24obykge1xuICBvd25LZXlzID0gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMgfHwgZnVuY3Rpb24gKG8pIHtcbiAgICB2YXIgYXIgPSBbXTtcbiAgICBmb3IgKHZhciBrIGluIG8pIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobywgaykpIGFyW2FyLmxlbmd0aF0gPSBrO1xuICAgIHJldHVybiBhcjtcbiAgfTtcbiAgcmV0dXJuIG93bktleXMobyk7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gX19pbXBvcnRTdGFyKG1vZCkge1xuICBpZiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSByZXR1cm4gbW9kO1xuICB2YXIgcmVzdWx0ID0ge307XG4gIGlmIChtb2QgIT0gbnVsbCkgZm9yICh2YXIgayA9IG93bktleXMobW9kKSwgaSA9IDA7IGkgPCBrLmxlbmd0aDsgaSsrKSBpZiAoa1tpXSAhPT0gXCJkZWZhdWx0XCIpIF9fY3JlYXRlQmluZGluZyhyZXN1bHQsIG1vZCwga1tpXSk7XG4gIF9fc2V0TW9kdWxlRGVmYXVsdChyZXN1bHQsIG1vZCk7XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBfX2ltcG9ydERlZmF1bHQobW9kKSB7XG4gIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgZGVmYXVsdDogbW9kIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBfX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHJlY2VpdmVyLCBzdGF0ZSwga2luZCwgZikge1xuICBpZiAoa2luZCA9PT0gXCJhXCIgJiYgIWYpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJQcml2YXRlIGFjY2Vzc29yIHdhcyBkZWZpbmVkIHdpdGhvdXQgYSBnZXR0ZXJcIik7XG4gIGlmICh0eXBlb2Ygc3RhdGUgPT09IFwiZnVuY3Rpb25cIiA/IHJlY2VpdmVyICE9PSBzdGF0ZSB8fCAhZiA6ICFzdGF0ZS5oYXMocmVjZWl2ZXIpKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IHJlYWQgcHJpdmF0ZSBtZW1iZXIgZnJvbSBhbiBvYmplY3Qgd2hvc2UgY2xhc3MgZGlkIG5vdCBkZWNsYXJlIGl0XCIpO1xuICByZXR1cm4ga2luZCA9PT0gXCJtXCIgPyBmIDoga2luZCA9PT0gXCJhXCIgPyBmLmNhbGwocmVjZWl2ZXIpIDogZiA/IGYudmFsdWUgOiBzdGF0ZS5nZXQocmVjZWl2ZXIpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gX19jbGFzc1ByaXZhdGVGaWVsZFNldChyZWNlaXZlciwgc3RhdGUsIHZhbHVlLCBraW5kLCBmKSB7XG4gIGlmIChraW5kID09PSBcIm1cIikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlByaXZhdGUgbWV0aG9kIGlzIG5vdCB3cml0YWJsZVwiKTtcbiAgaWYgKGtpbmQgPT09IFwiYVwiICYmICFmKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiUHJpdmF0ZSBhY2Nlc3NvciB3YXMgZGVmaW5lZCB3aXRob3V0IGEgc2V0dGVyXCIpO1xuICBpZiAodHlwZW9mIHN0YXRlID09PSBcImZ1bmN0aW9uXCIgPyByZWNlaXZlciAhPT0gc3RhdGUgfHwgIWYgOiAhc3RhdGUuaGFzKHJlY2VpdmVyKSkgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCB3cml0ZSBwcml2YXRlIG1lbWJlciB0byBhbiBvYmplY3Qgd2hvc2UgY2xhc3MgZGlkIG5vdCBkZWNsYXJlIGl0XCIpO1xuICByZXR1cm4gKGtpbmQgPT09IFwiYVwiID8gZi5jYWxsKHJlY2VpdmVyLCB2YWx1ZSkgOiBmID8gZi52YWx1ZSA9IHZhbHVlIDogc3RhdGUuc2V0KHJlY2VpdmVyLCB2YWx1ZSkpLCB2YWx1ZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIF9fY2xhc3NQcml2YXRlRmllbGRJbihzdGF0ZSwgcmVjZWl2ZXIpIHtcbiAgaWYgKHJlY2VpdmVyID09PSBudWxsIHx8ICh0eXBlb2YgcmVjZWl2ZXIgIT09IFwib2JqZWN0XCIgJiYgdHlwZW9mIHJlY2VpdmVyICE9PSBcImZ1bmN0aW9uXCIpKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IHVzZSAnaW4nIG9wZXJhdG9yIG9uIG5vbi1vYmplY3RcIik7XG4gIHJldHVybiB0eXBlb2Ygc3RhdGUgPT09IFwiZnVuY3Rpb25cIiA/IHJlY2VpdmVyID09PSBzdGF0ZSA6IHN0YXRlLmhhcyhyZWNlaXZlcik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBfX2FkZERpc3Bvc2FibGVSZXNvdXJjZShlbnYsIHZhbHVlLCBhc3luYykge1xuICBpZiAodmFsdWUgIT09IG51bGwgJiYgdmFsdWUgIT09IHZvaWQgMCkge1xuICAgIGlmICh0eXBlb2YgdmFsdWUgIT09IFwib2JqZWN0XCIgJiYgdHlwZW9mIHZhbHVlICE9PSBcImZ1bmN0aW9uXCIpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJPYmplY3QgZXhwZWN0ZWQuXCIpO1xuICAgIHZhciBkaXNwb3NlLCBpbm5lcjtcbiAgICBpZiAoYXN5bmMpIHtcbiAgICAgIGlmICghU3ltYm9sLmFzeW5jRGlzcG9zZSkgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlN5bWJvbC5hc3luY0Rpc3Bvc2UgaXMgbm90IGRlZmluZWQuXCIpO1xuICAgICAgZGlzcG9zZSA9IHZhbHVlW1N5bWJvbC5hc3luY0Rpc3Bvc2VdO1xuICAgIH1cbiAgICBpZiAoZGlzcG9zZSA9PT0gdm9pZCAwKSB7XG4gICAgICBpZiAoIVN5bWJvbC5kaXNwb3NlKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3ltYm9sLmRpc3Bvc2UgaXMgbm90IGRlZmluZWQuXCIpO1xuICAgICAgZGlzcG9zZSA9IHZhbHVlW1N5bWJvbC5kaXNwb3NlXTtcbiAgICAgIGlmIChhc3luYykgaW5uZXIgPSBkaXNwb3NlO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIGRpc3Bvc2UgIT09IFwiZnVuY3Rpb25cIikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIk9iamVjdCBub3QgZGlzcG9zYWJsZS5cIik7XG4gICAgaWYgKGlubmVyKSBkaXNwb3NlID0gZnVuY3Rpb24oKSB7IHRyeSB7IGlubmVyLmNhbGwodGhpcyk7IH0gY2F0Y2ggKGUpIHsgcmV0dXJuIFByb21pc2UucmVqZWN0KGUpOyB9IH07XG4gICAgZW52LnN0YWNrLnB1c2goeyB2YWx1ZTogdmFsdWUsIGRpc3Bvc2U6IGRpc3Bvc2UsIGFzeW5jOiBhc3luYyB9KTtcbiAgfVxuICBlbHNlIGlmIChhc3luYykge1xuICAgIGVudi5zdGFjay5wdXNoKHsgYXN5bmM6IHRydWUgfSk7XG4gIH1cbiAgcmV0dXJuIHZhbHVlO1xufVxuXG52YXIgX1N1cHByZXNzZWRFcnJvciA9IHR5cGVvZiBTdXBwcmVzc2VkRXJyb3IgPT09IFwiZnVuY3Rpb25cIiA/IFN1cHByZXNzZWRFcnJvciA6IGZ1bmN0aW9uIChlcnJvciwgc3VwcHJlc3NlZCwgbWVzc2FnZSkge1xuICB2YXIgZSA9IG5ldyBFcnJvcihtZXNzYWdlKTtcbiAgcmV0dXJuIGUubmFtZSA9IFwiU3VwcHJlc3NlZEVycm9yXCIsIGUuZXJyb3IgPSBlcnJvciwgZS5zdXBwcmVzc2VkID0gc3VwcHJlc3NlZCwgZTtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBfX2Rpc3Bvc2VSZXNvdXJjZXMoZW52KSB7XG4gIGZ1bmN0aW9uIGZhaWwoZSkge1xuICAgIGVudi5lcnJvciA9IGVudi5oYXNFcnJvciA/IG5ldyBfU3VwcHJlc3NlZEVycm9yKGUsIGVudi5lcnJvciwgXCJBbiBlcnJvciB3YXMgc3VwcHJlc3NlZCBkdXJpbmcgZGlzcG9zYWwuXCIpIDogZTtcbiAgICBlbnYuaGFzRXJyb3IgPSB0cnVlO1xuICB9XG4gIHZhciByLCBzID0gMDtcbiAgZnVuY3Rpb24gbmV4dCgpIHtcbiAgICB3aGlsZSAociA9IGVudi5zdGFjay5wb3AoKSkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgaWYgKCFyLmFzeW5jICYmIHMgPT09IDEpIHJldHVybiBzID0gMCwgZW52LnN0YWNrLnB1c2gociksIFByb21pc2UucmVzb2x2ZSgpLnRoZW4obmV4dCk7XG4gICAgICAgIGlmIChyLmRpc3Bvc2UpIHtcbiAgICAgICAgICB2YXIgcmVzdWx0ID0gci5kaXNwb3NlLmNhbGwoci52YWx1ZSk7XG4gICAgICAgICAgaWYgKHIuYXN5bmMpIHJldHVybiBzIHw9IDIsIFByb21pc2UucmVzb2x2ZShyZXN1bHQpLnRoZW4obmV4dCwgZnVuY3Rpb24oZSkgeyBmYWlsKGUpOyByZXR1cm4gbmV4dCgpOyB9KTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHMgfD0gMTtcbiAgICAgIH1cbiAgICAgIGNhdGNoIChlKSB7XG4gICAgICAgIGZhaWwoZSk7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChzID09PSAxKSByZXR1cm4gZW52Lmhhc0Vycm9yID8gUHJvbWlzZS5yZWplY3QoZW52LmVycm9yKSA6IFByb21pc2UucmVzb2x2ZSgpO1xuICAgIGlmIChlbnYuaGFzRXJyb3IpIHRocm93IGVudi5lcnJvcjtcbiAgfVxuICByZXR1cm4gbmV4dCgpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gX19yZXdyaXRlUmVsYXRpdmVJbXBvcnRFeHRlbnNpb24ocGF0aCwgcHJlc2VydmVKc3gpIHtcbiAgaWYgKHR5cGVvZiBwYXRoID09PSBcInN0cmluZ1wiICYmIC9eXFwuXFwuP1xcLy8udGVzdChwYXRoKSkge1xuICAgICAgcmV0dXJuIHBhdGgucmVwbGFjZSgvXFwuKHRzeCkkfCgoPzpcXC5kKT8pKCg/OlxcLlteLi9dKz8pPylcXC4oW2NtXT8pdHMkL2ksIGZ1bmN0aW9uIChtLCB0c3gsIGQsIGV4dCwgY20pIHtcbiAgICAgICAgICByZXR1cm4gdHN4ID8gcHJlc2VydmVKc3ggPyBcIi5qc3hcIiA6IFwiLmpzXCIgOiBkICYmICghZXh0IHx8ICFjbSkgPyBtIDogKGQgKyBleHQgKyBcIi5cIiArIGNtLnRvTG93ZXJDYXNlKCkgKyBcImpzXCIpO1xuICAgICAgfSk7XG4gIH1cbiAgcmV0dXJuIHBhdGg7XG59XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgX19leHRlbmRzLFxuICBfX2Fzc2lnbixcbiAgX19yZXN0LFxuICBfX2RlY29yYXRlLFxuICBfX3BhcmFtLFxuICBfX2VzRGVjb3JhdGUsXG4gIF9fcnVuSW5pdGlhbGl6ZXJzLFxuICBfX3Byb3BLZXksXG4gIF9fc2V0RnVuY3Rpb25OYW1lLFxuICBfX21ldGFkYXRhLFxuICBfX2F3YWl0ZXIsXG4gIF9fZ2VuZXJhdG9yLFxuICBfX2NyZWF0ZUJpbmRpbmcsXG4gIF9fZXhwb3J0U3RhcixcbiAgX192YWx1ZXMsXG4gIF9fcmVhZCxcbiAgX19zcHJlYWQsXG4gIF9fc3ByZWFkQXJyYXlzLFxuICBfX3NwcmVhZEFycmF5LFxuICBfX2F3YWl0LFxuICBfX2FzeW5jR2VuZXJhdG9yLFxuICBfX2FzeW5jRGVsZWdhdG9yLFxuICBfX2FzeW5jVmFsdWVzLFxuICBfX21ha2VUZW1wbGF0ZU9iamVjdCxcbiAgX19pbXBvcnRTdGFyLFxuICBfX2ltcG9ydERlZmF1bHQsXG4gIF9fY2xhc3NQcml2YXRlRmllbGRHZXQsXG4gIF9fY2xhc3NQcml2YXRlRmllbGRTZXQsXG4gIF9fY2xhc3NQcml2YXRlRmllbGRJbixcbiAgX19hZGREaXNwb3NhYmxlUmVzb3VyY2UsXG4gIF9fZGlzcG9zZVJlc291cmNlcyxcbiAgX19yZXdyaXRlUmVsYXRpdmVJbXBvcnRFeHRlbnNpb24sXG59O1xuIiwiLy8gVGhlIG1vZHVsZSBjYWNoZVxudmFyIF9fd2VicGFja19tb2R1bGVfY2FjaGVfXyA9IHt9O1xuXG4vLyBUaGUgcmVxdWlyZSBmdW5jdGlvblxuZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhtb2R1bGVJZCkge1xuXHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcblx0dmFyIGNhY2hlZE1vZHVsZSA9IF9fd2VicGFja19tb2R1bGVfY2FjaGVfX1ttb2R1bGVJZF07XG5cdGlmIChjYWNoZWRNb2R1bGUgIT09IHVuZGVmaW5lZCkge1xuXHRcdHJldHVybiBjYWNoZWRNb2R1bGUuZXhwb3J0cztcblx0fVxuXHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuXHR2YXIgbW9kdWxlID0gX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fW21vZHVsZUlkXSA9IHtcblx0XHQvLyBubyBtb2R1bGUuaWQgbmVlZGVkXG5cdFx0Ly8gbm8gbW9kdWxlLmxvYWRlZCBuZWVkZWRcblx0XHRleHBvcnRzOiB7fVxuXHR9O1xuXG5cdC8vIEV4ZWN1dGUgdGhlIG1vZHVsZSBmdW5jdGlvblxuXHRfX3dlYnBhY2tfbW9kdWxlc19fW21vZHVsZUlkXShtb2R1bGUsIG1vZHVsZS5leHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKTtcblxuXHQvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVsZVxuXHRyZXR1cm4gbW9kdWxlLmV4cG9ydHM7XG59XG5cbiIsIi8vIGRlZmluZSBnZXR0ZXIgZnVuY3Rpb25zIGZvciBoYXJtb255IGV4cG9ydHNcbl9fd2VicGFja19yZXF1aXJlX18uZCA9IChleHBvcnRzLCBkZWZpbml0aW9uKSA9PiB7XG5cdGZvcih2YXIga2V5IGluIGRlZmluaXRpb24pIHtcblx0XHRpZihfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZGVmaW5pdGlvbiwga2V5KSAmJiAhX193ZWJwYWNrX3JlcXVpcmVfXy5vKGV4cG9ydHMsIGtleSkpIHtcblx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBrZXksIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBkZWZpbml0aW9uW2tleV0gfSk7XG5cdFx0fVxuXHR9XG59OyIsIl9fd2VicGFja19yZXF1aXJlX18ubyA9IChvYmosIHByb3ApID0+IChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBwcm9wKSkiLCIvLyBkZWZpbmUgX19lc01vZHVsZSBvbiBleHBvcnRzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLnIgPSAoZXhwb3J0cykgPT4ge1xuXHRpZih0eXBlb2YgU3ltYm9sICE9PSAndW5kZWZpbmVkJyAmJiBTeW1ib2wudG9TdHJpbmdUYWcpIHtcblx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgU3ltYm9sLnRvU3RyaW5nVGFnLCB7IHZhbHVlOiAnTW9kdWxlJyB9KTtcblx0fVxuXHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ19fZXNNb2R1bGUnLCB7IHZhbHVlOiB0cnVlIH0pO1xufTsiLCIvLyBzdGFydHVwXG4vLyBMb2FkIGVudHJ5IG1vZHVsZSBhbmQgcmV0dXJuIGV4cG9ydHNcbi8vIFRoaXMgZW50cnkgbW9kdWxlIGlzIHJlZmVyZW5jZWQgYnkgb3RoZXIgbW9kdWxlcyBzbyBpdCBjYW4ndCBiZSBpbmxpbmVkXG52YXIgX193ZWJwYWNrX2V4cG9ydHNfXyA9IF9fd2VicGFja19yZXF1aXJlX18oNDQwKTtcbiJdLCJuYW1lcyI6WyJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImV4cG9ydHMiLCJ2YWx1ZSIsIl9fZXhwb3J0U3RhciIsInRocm93RXJyb3IiLCJhc3luYyIsIkVycm9yIiwiZXh0ZW5kU3RhdGljcyIsImQiLCJiIiwic2V0UHJvdG90eXBlT2YiLCJfX3Byb3RvX18iLCJBcnJheSIsInAiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJfX2V4dGVuZHMiLCJUeXBlRXJyb3IiLCJTdHJpbmciLCJfXyIsInRoaXMiLCJjb25zdHJ1Y3RvciIsImNyZWF0ZSIsIl9fYXNzaWduIiwiYXNzaWduIiwidCIsInMiLCJpIiwibiIsImFyZ3VtZW50cyIsImxlbmd0aCIsImFwcGx5IiwiX19yZXN0IiwiZSIsImluZGV4T2YiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJwcm9wZXJ0eUlzRW51bWVyYWJsZSIsIl9fZGVjb3JhdGUiLCJkZWNvcmF0b3JzIiwidGFyZ2V0Iiwia2V5IiwiZGVzYyIsImMiLCJyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiUmVmbGVjdCIsImRlY29yYXRlIiwiX19wYXJhbSIsInBhcmFtSW5kZXgiLCJkZWNvcmF0b3IiLCJfX2VzRGVjb3JhdGUiLCJjdG9yIiwiZGVzY3JpcHRvckluIiwiY29udGV4dEluIiwiaW5pdGlhbGl6ZXJzIiwiZXh0cmFJbml0aWFsaXplcnMiLCJhY2NlcHQiLCJmIiwiXyIsImtpbmQiLCJkZXNjcmlwdG9yIiwibmFtZSIsImRvbmUiLCJjb250ZXh0IiwiYWNjZXNzIiwiYWRkSW5pdGlhbGl6ZXIiLCJwdXNoIiwicmVzdWx0IiwiZ2V0Iiwic2V0IiwiaW5pdCIsInVuc2hpZnQiLCJfX3J1bkluaXRpYWxpemVycyIsInRoaXNBcmciLCJ1c2VWYWx1ZSIsIl9fcHJvcEtleSIsIngiLCJjb25jYXQiLCJfX3NldEZ1bmN0aW9uTmFtZSIsInByZWZpeCIsImRlc2NyaXB0aW9uIiwiY29uZmlndXJhYmxlIiwiX19tZXRhZGF0YSIsIm1ldGFkYXRhS2V5IiwibWV0YWRhdGFWYWx1ZSIsIm1ldGFkYXRhIiwiX19hd2FpdGVyIiwiX2FyZ3VtZW50cyIsIlAiLCJnZW5lcmF0b3IiLCJQcm9taXNlIiwicmVzb2x2ZSIsInJlamVjdCIsImZ1bGZpbGxlZCIsInN0ZXAiLCJuZXh0IiwicmVqZWN0ZWQiLCJ0aGVuIiwiX19nZW5lcmF0b3IiLCJib2R5IiwieSIsImxhYmVsIiwic2VudCIsInRyeXMiLCJvcHMiLCJnIiwiSXRlcmF0b3IiLCJ2ZXJiIiwiU3ltYm9sIiwiaXRlcmF0b3IiLCJ2Iiwib3AiLCJwb3AiLCJfX2NyZWF0ZUJpbmRpbmciLCJvIiwibSIsImsiLCJrMiIsInVuZGVmaW5lZCIsIl9fZXNNb2R1bGUiLCJ3cml0YWJsZSIsImVudW1lcmFibGUiLCJfX3ZhbHVlcyIsIl9fcmVhZCIsImFyIiwiZXJyb3IiLCJfX3NwcmVhZCIsIl9fc3ByZWFkQXJyYXlzIiwiaWwiLCJhIiwiaiIsImpsIiwiX19zcHJlYWRBcnJheSIsInRvIiwiZnJvbSIsInBhY2siLCJsIiwic2xpY2UiLCJfX2F3YWl0IiwiX19hc3luY0dlbmVyYXRvciIsImFzeW5jSXRlcmF0b3IiLCJxIiwiQXN5bmNJdGVyYXRvciIsInJlc3VtZSIsImZ1bGZpbGwiLCJzZXR0bGUiLCJzaGlmdCIsIl9fYXN5bmNEZWxlZ2F0b3IiLCJfX2FzeW5jVmFsdWVzIiwiX19tYWtlVGVtcGxhdGVPYmplY3QiLCJjb29rZWQiLCJyYXciLCJfX3NldE1vZHVsZURlZmF1bHQiLCJvd25LZXlzIiwiZ2V0T3duUHJvcGVydHlOYW1lcyIsIl9faW1wb3J0U3RhciIsIm1vZCIsIl9faW1wb3J0RGVmYXVsdCIsImRlZmF1bHQiLCJfX2NsYXNzUHJpdmF0ZUZpZWxkR2V0IiwicmVjZWl2ZXIiLCJzdGF0ZSIsImhhcyIsIl9fY2xhc3NQcml2YXRlRmllbGRTZXQiLCJfX2NsYXNzUHJpdmF0ZUZpZWxkSW4iLCJfX2FkZERpc3Bvc2FibGVSZXNvdXJjZSIsImVudiIsImRpc3Bvc2UiLCJpbm5lciIsImFzeW5jRGlzcG9zZSIsInN0YWNrIiwiX1N1cHByZXNzZWRFcnJvciIsIlN1cHByZXNzZWRFcnJvciIsInN1cHByZXNzZWQiLCJtZXNzYWdlIiwiX19kaXNwb3NlUmVzb3VyY2VzIiwiZmFpbCIsImhhc0Vycm9yIiwiX19yZXdyaXRlUmVsYXRpdmVJbXBvcnRFeHRlbnNpb24iLCJwYXRoIiwicHJlc2VydmVKc3giLCJ0ZXN0IiwicmVwbGFjZSIsInRzeCIsImV4dCIsImNtIiwidG9Mb3dlckNhc2UiLCJfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX18iLCJfX3dlYnBhY2tfcmVxdWlyZV9fIiwibW9kdWxlSWQiLCJjYWNoZWRNb2R1bGUiLCJtb2R1bGUiLCJfX3dlYnBhY2tfbW9kdWxlc19fIiwiZGVmaW5pdGlvbiIsIm9iaiIsInByb3AiLCJ0b1N0cmluZ1RhZyIsIl9fd2VicGFja19leHBvcnRzX18iXSwic291cmNlUm9vdCI6IiJ9 ================================================ FILE: packages/node-core/test/sandbox/tsconfig.json ================================================ { "compilerOptions": { "module": "commonjs", "target": "es2017", "noImplicitAny": false, "moduleResolution": "node", "baseUrl": ".", "types": ["node", "jest"], "experimentalDecorators": true, "esModuleInterop": true, "allowSyntheticDefaultImports": true, "lib": ["ES2017"], "emitDecoratorMetadata": true, "sourceMap": false, "rootDir": ".", "outDir": "." }, "exclude": [], "include": ["./main.ts", "./project.ts"] } ================================================ FILE: packages/node-core/test/schemas/badSchema.graphql ================================================ type EntityOne @entity { id: ID! field1: Int! @index(unique: true) # added @index unique field2: String # from nullable to non-nullable field3: EntityTwo! # Updated from BigInt to EntityTwo ID } type EntityTwo @entity @compositeIndexes(fields: [["field2", "field3"]]) { id: ID! # field1: Int! # Dropped field1 field2: FieldTypeMod # Updated from nullable to non-nullable field3: Int # Updated from BigInt to Int field4: EntityFour! # Added new field } # Dropped Entity Three # Drop index on ID #type EntityThree @entity { # id: ID! # field1: Int! # field2: String # field3: BigInt #} type NewJsonOne @jsonField { one: String! two: Int! } type NewJsonTwo @jsonField { one: String! two: NewJsonOne # Nested Json } enum FieldTypeNew { VALUE1 VALUE2 } enum FieldTypeMod { VALUE1 VALUE2 VALUE3 } type EntityFour @entity { id: ID! field1: FieldTypeNew! field2: [NewJsonTwo] field3: [EntityTwo] @derivedFrom(field: "field4") } ================================================ FILE: packages/node-core/test/schemas/badschema-2.graphql ================================================ type EntityOne @entity { id: ID! #id is a required field field1: Int! field2: Int! # no nullability changes, but dataType change } type EntityTwo @entity { id: ID! field1: Int! field2: String field3: BigInt field5: FieldTypeOld! } enum FieldTypeOld { VALUE1 VALUE2 } enum FieldTypeMod { VALUE1 VALUE2 } ================================================ FILE: packages/node-core/test/schemas/newSchema.graphql ================================================ type EntityOne @entity { id: ID! field1: Int! @index(unique: true) # added @index unique field2: String! field3: EntityTwo! # Updated from BigInt to EntityTwo ID } type EntityTwo @entity @compositeIndexes(fields: [["field2", "field3"]]) { id: ID! # field1: Int! # Dropped field1 field2: FieldTypeMod # Updated from nullable to non-nullable field3: Int # Updated from BigInt to Int field4: EntityFour! # Added new field } # Dropped Entity Three # Drop index on ID #type EntityThree @entity { # id: ID! # field1: Int! # field2: String # field3: BigInt #} type NewJsonOne @jsonField { one: String! two: Int! } type NewJsonTwo @jsonField { one: String! two: NewJsonOne # Nested Json } enum FieldTypeNew { VALUE1 VALUE2 } enum FieldTypeMod { VALUE1 VALUE2 VALUE3 } type EntityFour @entity { id: ID! field1: FieldTypeNew! field2: [NewJsonTwo] field3: [EntityTwo] @derivedFrom(field: "field4") } ================================================ FILE: packages/node-core/test/schemas/oldSchema.graphql ================================================ type EntityOne @entity { id: ID! #id is a required field field1: Int! field2: String! field3: EntityThree! } type EntityTwo @entity { id: ID! #id is a required field field1: Int! field2: String #filed2 is an optional field field3: BigInt field5: FieldTypeOld! } type ExampleJsonOne @jsonField { one: String! two: Int! } type ExampleJsonTwo @jsonField { one: String! two: ExampleJsonOne! # Nested Json } type EntityThree @entity { id: ID! #id is a required field field1: [ExampleJsonTwo] } enum FieldTypeOld { VALUE1 VALUE2 } enum FieldTypeMod { VALUE1 VALUE2 } ================================================ FILE: packages/node-core/test/schemas/schemaDiff.json ================================================ { "addedEnums": [ { "name": "FieldTypeNew", "values": ["VALUE1", "VALUE2"] } ], "addedModels": [ { "fields": [ { "isArray": false, "isEnum": false, "name": "id", "nullable": false, "type": "ID" }, { "isArray": false, "isEnum": true, "name": "field1", "nullable": false, "type": "FieldTypeNew" }, { "isArray": true, "isEnum": false, "jsonInterface": { "fields": [ { "isArray": false, "name": "one", "nullable": false, "type": "String" }, { "isArray": false, "jsonInterface": { "fields": [ { "isArray": false, "name": "one", "nullable": false, "type": "String" }, { "isArray": false, "name": "two", "nullable": false, "type": "Int" } ], "name": "NewJsonOne" }, "name": "two", "nullable": true, "type": "Json" } ], "name": "NewJsonTwo" }, "name": "field2", "nullable": true, "type": "Json" } ], "indexes": [ { "fields": ["field2"], "unique": false, "using": "gin" } ], "name": "EntityFour" } ], "addedRelations": [ { "foreignKey": "field3Id", "from": "EntityOne", "to": "EntityTwo", "type": "belongsTo" }, { "foreignKey": "field4Id", "from": "EntityTwo", "to": "EntityFour", "type": "belongsTo" }, { "fieldName": "field3", "foreignKey": "field4Id", "from": "EntityFour", "to": "EntityTwo", "type": "hasMany" } ], "modifiedEnums": [ { "name": "FieldTypeMod", "values": ["VALUE1", "VALUE2", "VALUE3"] } ], "modifiedModels": { "EntityOne": { "addedFields": [], "addedIndexes": [ { "fields": ["field1"], "unique": true } ], "model": { "fields": [ { "isArray": false, "isEnum": false, "name": "id", "nullable": false, "type": "ID" }, { "isArray": false, "isEnum": false, "name": "field1", "nullable": false, "type": "Int" }, { "isArray": false, "isEnum": false, "name": "field2", "nullable": false, "type": "String" }, { "isArray": false, "isEnum": false, "name": "field3Id", "nullable": false, "type": "String" } ], "indexes": [ { "fields": ["field1"], "unique": true }, { "fields": ["field3Id"], "unique": false, "using": "hash" } ], "name": "EntityOne" }, "removedFields": [], "removedIndexes": [] }, "EntityTwo": { "addedFields": [ { "isArray": false, "isEnum": true, "name": "field2", "nullable": true, "type": "FieldTypeMod" }, { "isArray": false, "isEnum": false, "name": "field3", "nullable": true, "type": "Int" }, { "isArray": false, "isEnum": false, "name": "field4Id", "nullable": false, "type": "String" } ], "addedIndexes": [ { "fields": ["field4Id"], "unique": false, "using": "hash" }, { "fields": ["field2", "field3"] } ], "model": { "fields": [ { "isArray": false, "isEnum": false, "name": "id", "nullable": false, "type": "ID" }, { "isArray": false, "isEnum": true, "name": "field2", "nullable": true, "type": "FieldTypeMod" }, { "isArray": false, "isEnum": false, "name": "field3", "nullable": true, "type": "Int" }, { "isArray": false, "isEnum": false, "name": "field4Id", "nullable": false, "type": "String" } ], "indexes": [ { "fields": ["field4Id"], "unique": false, "using": "hash" }, { "fields": ["field2", "field3"] } ], "name": "EntityTwo" }, "removedFields": [ { "isArray": false, "isEnum": false, "name": "field1", "nullable": false, "type": "Int" }, { "isArray": false, "isEnum": false, "name": "field2", "nullable": true, "type": "String" }, { "isArray": false, "isEnum": false, "name": "field3", "nullable": true, "type": "BigInt" }, { "isArray": false, "isEnum": true, "name": "field5", "nullable": false, "type": "FieldTypeOld" } ], "removedIndexes": [] } }, "removedEnums": [ { "name": "FieldTypeOld", "values": ["VALUE1", "VALUE2"] } ], "removedModels": [ { "fields": [ { "isArray": false, "isEnum": false, "name": "id", "nullable": false, "type": "ID" }, { "isArray": true, "isEnum": false, "jsonInterface": { "fields": [ { "isArray": false, "name": "one", "nullable": false, "type": "String" }, { "isArray": false, "jsonInterface": { "fields": [ { "isArray": false, "name": "one", "nullable": false, "type": "String" }, { "isArray": false, "name": "two", "nullable": false, "type": "Int" } ], "name": "ExampleJsonOne" }, "name": "two", "nullable": false, "type": "Json" } ], "name": "ExampleJsonTwo" }, "name": "field1", "nullable": true, "type": "Json" } ], "indexes": [ { "fields": ["field1"], "unique": false, "using": "gin" } ], "name": "EntityThree" } ], "removedRelations": [ { "foreignKey": "field3Id", "from": "EntityOne", "to": "EntityThree", "type": "belongsTo" } ] } ================================================ FILE: packages/node-core/test/v1.0.0/distMock/chaintypes.js ================================================ 'use strict'; exports.default = {typesBundle: {}}; ================================================ FILE: packages/node-core/test/v1.0.0/distMock/index.js ================================================ 'use strict'; Object.defineProperty(exports, '__esModule', {value: true}); const tslib_1 = require('tslib'); //Exports all handler functions require('@polkadot/api-augment'); (0, tslib_1.__exportStar)(require('./mappings/mappingHandlers'), exports); ================================================ FILE: packages/node-core/test/v1.0.0/erc20.abi.json ================================================ [ { "constant": true, "inputs": [], "name": "name", "outputs": [ { "name": "", "type": "string" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": false, "inputs": [ { "name": "_spender", "type": "address" }, { "name": "_value", "type": "uint256" } ], "name": "approve", "outputs": [ { "name": "", "type": "bool" } ], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": true, "inputs": [], "name": "totalSupply", "outputs": [ { "name": "", "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": false, "inputs": [ { "name": "_from", "type": "address" }, { "name": "_to", "type": "address" }, { "name": "_value", "type": "uint256" } ], "name": "transferFrom", "outputs": [ { "name": "", "type": "bool" } ], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": true, "inputs": [], "name": "decimals", "outputs": [ { "name": "", "type": "uint8" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [ { "name": "_owner", "type": "address" } ], "name": "balanceOf", "outputs": [ { "name": "balance", "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "symbol", "outputs": [ { "name": "", "type": "string" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": false, "inputs": [ { "name": "_to", "type": "address" }, { "name": "_value", "type": "uint256" } ], "name": "transfer", "outputs": [ { "name": "", "type": "bool" } ], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": true, "inputs": [ { "name": "_owner", "type": "address" }, { "name": "_spender", "type": "address" } ], "name": "allowance", "outputs": [ { "name": "", "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "payable": true, "stateMutability": "payable", "type": "fallback" }, { "anonymous": false, "inputs": [ { "indexed": true, "name": "owner", "type": "address" }, { "indexed": true, "name": "spender", "type": "address" }, { "indexed": false, "name": "value", "type": "uint256" } ], "name": "Approval", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "name": "from", "type": "address" }, { "indexed": true, "name": "to", "type": "address" }, { "indexed": false, "name": "value", "type": "uint256" } ], "name": "Transfer", "type": "event" } ] ================================================ FILE: packages/node-core/test/v1.0.0/package.json ================================================ { "name": "subquery-starter", "version": "0.0.4", "description": "This project can be use as a starting point for developing your SubQuery project", "main": "dist/index.js", "scripts": { "build": "tsc -b", "prepack": "rm -rf dist && npm build", "test": "jest", "codegen": "./node_modules/.bin/subql codegen" }, "homepage": "https://github.com/subquery/subql-starter", "repository": "github:subquery/subql-starter", "files": [ "dist", "schema.graphql", "project.yaml" ], "author": "Ian He & Jay Ji", "license": "Apache-2.0", "devDependencies": { "@polkadot/api": "^16", "@subql/types": "latest", "typescript": "^4.9.5", "@subql/cli": "latest" }, "resolutions": { "ipfs-unixfs": "6.0.6" } } ================================================ FILE: packages/node-core/test/v1.0.0/project.yaml ================================================ specVersion: 1.0.0 name: moonriver version: 1.0.0 description: '' repository: '' runner: node: name: '@subql/node' version: '>=1.0.0' query: name: '@subql/query' version: '*' schema: file: ./schema.graphql network: chainId: '0x401a1f9dca3da46f5c4091016c8a2f26dcea05865116b286f60f668207d1474b' endpoint: wss://moonriver.api.onfinality.io/public-ws dictionary: 'https://api.subquery.network/sq/subquery/moonriver-dictionary' chaintypes: file: './distMock/chaintypes.js' dataSources: - kind: substrate/Runtime startBlock: 69219 mapping: file: './distMock/index.js' handlers: - handler: collatorJoined kind: substrate/EventHandler filter: module: parachainStaking method: JoinedCollatorCandidates - handler: collatorLeft kind: substrate/CallHandler filter: module: parachainStaking method: leaveCandidates - kind: substrate/Moonbeam startBlock: 562683 processor: file: './dist/moonbeam.js' # file: './node_modules/@subql/contract-processors/dist/moonbeam.js' options: # Must be a key of assets abi: erc20 address: '0x6bd193ee6d2104f14f94e2ca6efefae561a4334b' assets: erc20: file: './erc20.abi.json' mapping: file: ./distMock/index.js handlers: - handler: erc20Transfer kind: substrate/MoonbeamEvent filter: topics: - Transfer(address indexed from,address indexed to,uint256 value) ================================================ FILE: packages/node-core/test/v1.0.0/projectOptions.yaml ================================================ specVersion: 1.0.0 name: moonriver version: 1.0.0 description: '' repository: '' runner: node: name: '@subql/node' version: '>=1.0.0' options: historical: true unsafe: true unfinalizedBlocks: false query: name: '@subql/query' version: '*' schema: file: ./schema.graphql network: chainId: '0x401a1f9dca3da46f5c4091016c8a2f26dcea05865116b286f60f668207d1474b' endpoint: wss://moonriver.api.onfinality.io/public-ws dictionary: 'https://api.subquery.network/sq/subquery/moonriver-dictionary' chaintypes: file: './distMock/chaintypes.js' dataSources: - kind: substrate/Runtime startBlock: 69219 mapping: file: './distMock/index.js' handlers: - handler: collatorJoined kind: substrate/EventHandler filter: module: parachainStaking method: JoinedCollatorCandidates - handler: collatorLeft kind: substrate/CallHandler filter: module: parachainStaking method: leaveCandidates - kind: substrate/Moonbeam startBlock: 562683 processor: file: './dist/moonbeam.js' # file: './node_modules/@subql/contract-processors/dist/moonbeam.js' options: # Must be a key of assets abi: erc20 address: '0x6bd193ee6d2104f14f94e2ca6efefae561a4334b' assets: erc20: file: './erc20.abi.json' mapping: file: ./distMock/index.js handlers: - handler: erc20Transfer kind: substrate/MoonbeamEvent filter: topics: - Transfer(address indexed from,address indexed to,uint256 value) ================================================ FILE: packages/node-core/test/v1.0.0/schema.graphql ================================================ type StarterEntity @entity { id: ID! #id is a required field field1: Int! field2: String #filed2 is an optional field field3: BigInt field4: Date field5: Boolean } ================================================ FILE: packages/node-core/test/v1.0.0/types.yaml ================================================ types: TestType: u32 typesAlias: Alias: TestType2: test typesBundle: spec: '2312': types: - minmax: - 232 - 122 types: TestType3: test3 chain: mockchain: types: - minmax: - 232 - 122 types: TestType4: test4 typesChain: chain2: TestType5: test typesSpec: spec3: TestType6: test ================================================ FILE: packages/node-core/tsconfig.json ================================================ { "extends": "../../tsconfig.json", "compilerOptions": { "tsBuildInfoFile": "dist/.tsbuildinfo", "rootDir": "src", "outDir": "dist", "esModuleInterop": true, "importHelpers": true, "noImplicitAny": true }, "references": [{"path": "../common"}, {"path": "../utils"}, {"path": "../testing"}], "include": ["src/**/*"] } ================================================ FILE: packages/node-core/yargs.js ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 // A standalone entrypoint for logger so we can import `@subql/node-core/logger` const yargs = require('./dist/yargs'); module.exports = yargs; ================================================ FILE: packages/query/.gitignore ================================================ # compiled output /dist /node_modules # Logs logs *.log npm-debug.log* yarn-debug.log* yarn-error.log* lerna-debug.log* # OS .DS_Store # Tests /coverage /.nyc_output # IDEs and editors /.idea .project .classpath .c9/ *.launch .settings/ *.sublime-workspace # IDE - VSCode .vscode/* !.vscode/settings.json !.vscode/tasks.json !.vscode/launch.json !.vscode/extensions.json .env ================================================ FILE: packages/query/CHANGELOG.md ================================================ # Changelog All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). ## [Unreleased] ## [2.25.0] - 2025-11-05 ### Changed - Replace `express-pino-logger` with the underlying `pino-http` (#2957) ## [2.24.0] - 2025-10-15 ### Changed - Minor improvements and fixes from upgrading to eslint 9 with stricter settings (#2929) ## [2.23.6] - 2025-09-16 ### Changed - Address some linter related warnings (#2876) ## [2.23.5] - 2025-08-29 ### Fixed - Subscriptions with historical enabled (#2897) ## [2.23.4] - 2025-08-25 ### Fixed - Subscription error with undefined block height (#2889) ## [2.23.3] - 2025-07-24 ### Changed - Improved docker image size (#2866) ## [2.23.2] - 2025-07-17 ### Changed - Workspace dependencies now match to patch versions rather than exact (#2855) ## [2.23.1] - 2025-07-02 ### Fixed - Filtering out \_Global table (#2840) ## [2.23.0] - 2025-07-01 ### Removed - Test files and artifacts from published package (#2838) ## [2.22.2] - 2025-06-25 ### Fixed - Playgroung unable to load because of graphiql dependency (#2832) ## [2.22.1] - 2025-05-21 ### Changed - Hide \`\_global\` table from being queried (#2799) ## [2.22.0] - 2025-04-30 ### Removed - Usage of node-fetch and use fetch instead (#2772) ## [2.21.2] - 2025-04-24 ### Changed - Update graphlile utils (#2727) ## [2.21.1] - 2025-03-24 ### Changed - Update compression dependency (#2687) ## [2.21.0] - 2025-02-19 ### Changed - Update node version to LTS (#2655) ## [2.20.1] - 2025-02-04 ### Changed - Update copyright header to 2025 ## [2.20.0] - 2025-01-28 ### Fixed - Subscriptions `_entity` field now returns all properties (#2626) ## [2.19.0] - 2024-12-11 ### Added - Support for ordering with fulltext search (#2623) ## [2.18.0] - 2024-12-04 ### Fixed - High CPU usage caused by interval with 0ms (#2614) ### Added - Add PgOrderByRelatedPlugin to GraphQL query package ## [2.17.1] - 2024-11-28 ### Fixed - Crash with query service subscriptions on multichain projects (#2609) ## [2.17.0] - 2024-11-25 ### Changed - WS library with support for graphiql (#2600) - Subscription type from JSON to the correct entity type (#2600) ## [2.16.0] - 2024-11-22 ### Changed - Update the playground to the latest GraphiQL (#2588) ### Added - Support for historical indexing by timestamp as well as block height (#2584) ## [2.15.2] - 2024-09-25 ### Changed - Bump common, Added manifest support for query-subgraph. ## [2.15.1] - 2024-08-23 ### Fixed - Missing rxjs dependency ## [2.15.0] - 2024-08-23 ### Added - Support for null ordering (#2526) ## [2.14.1] - 2024-08-12 ### Fixed - Revert yargs version ### Changed - Update how idle psql pool connections are handled (#2520) ## [2.14.0] - 2024-08-05 ### Changed - Update dependencies (#2518) ### Added - add support for null ordering in 'order by' query (#2387) ## [2.13.3] - 2024-07-25 ### Changed - Bump version with `@subql/common` and `@subql/utils` (#2498) ## [2.13.2] - 2024-07-09 ### Changed - Enable TS strict setting ## [2.13.1] - 2024-06-26 ### Fixed - Fixed the aggregate query, type conversion causes precision loss. ## [2.13.0] - 2024-06-21 ### Fixed - Fixed query service unable to query dynamic datasource due to change from #2302 ### Added - enable ts strict mode ## [2.12.1] - 2024-06-12 ### Changed - Update `@subql/utils` ## [2.12.0] - 2024-06-12 ### Added - Add query `dbSize` under metadata (#2430) ## [2.11.1] - 2024-05-09 ### Fixed - Certain historical queries not appliying block height (#2398) ## [2.11.0] - 2024-05-08 ### Changed - Bump with @subql/utils, update polkadot dependencies to v11 ## [2.10.5] - 2024-05-03 ### Fixed - Block height missing from certain historical queries (#2384) ## [2.10.4] - 2024-05-02 ### Changed - Update `@subql/utils` ## [2.10.3] - 2024-04-29 ### Fixed - Aggregate queries with historical not filtering by block height (#2367) ## [2.10.1] - 2024-04-24 ### Changed - Executable path in docker (#2344) ## [2.10.0] - 2024-03-05 ### Added - Fulltext search plugin to sanitise search input (#2280) ## [2.9.1] - 2024-02-29 ### Fixed - Relation filters not taking into account block height when historical is enabled (#2276) ## [2.9.0] - 2024-01-25 ### Added - gzip compression to queries (#2195) ## [2.8.0] - 2023-11-22 ### Added - Allow restrictions on alias queries, with flag `--query-alias-limit` (#2174) - Allow restrictions on array based queries, with flag `--query-batch-limit` (#2172) ## [2.7.0] - 2023-11-15 ### Added - Allow restrictions on query depth, with flag `--query-depth-limit` (#2164) ## [2.6.0] - 2023-10-17 ### Added - Add `lastFinalizedVerifiedHeight`, `unfinalizedBlocks`, `lastCreatedPoiHeight` and `latestSyncedPoiHeight` to metadata ## [2.5.0] - 2023-08-10 ### Added - Support for update availability logs (#1930) ## [2.4.0] - 2023-07-31 ### Fixed - Avoid get `metadataTableName` call system table (#1893) - Update license (#1891) ### Added - Custom OrderBy plugin to improve dictionary query performance (#1907) ## [2.3.0] - 2023-07-04 ### Changed - Update x-graphile-build-pg to improve query service init speed (#1855) ## [2.2.0] - 2023-06-26 ### Changed - Update apollo server with security fixes (#1834) ### Added - Add the ability to get all metadata tables with multichain projects (#1839) ## [2.1.0] - 2023-05-24 ### Changed - Tidy up commands and their args (#1741) ## [2.0.1] - 2023-04-27 ### Fixed - Fix tests (#1640) ## [2.0.0] - 2023-04-20 ### Changed - Major release for 2.0.0, align with other package versions ## [1.11.2] - 2023-04-11 ### Added - `evmChainId` to metadata (#1607) ## [1.11.1] - 2023-03-30 ### Added - Support multiple endpoints (#1551) ### Fixed - Fix previous release 1.11.0 failed ## [1.11.0] - 2023-02-21 ### Added - Add flag `--query-limit`, moved from `--unsafe` (#1514) - Add `dictionary-optimisation` flag to improve dictionary query performance (#1519) - Add SSL connection option (#1513) - Support Cockroach database (#1521) ### Changed - Update postgraphile enable table partitions (#1520) ## [1.10.2] - 2023-01-23 ### Changed - Enable connection filters (#1484) ## [1.10.1] - 2022-12-22 ### Fixed - Updated subscription `triggerName` (#1469) ## [1.10.0] - 2022-12-06 ### Added - Add start height to \_metadata (#1456) ## [1.9.0] - 2022-11-30 ### Added - Add `--playground-settings` options for passing the settings to the playground (#1436) ## [1.8.0] - 2022-11-23 ### Fixed - Fix row estimate in \_metadata, only execute SQL when `rowEstimate` included in graphql query field (#1417) ### Changed - Query explain include graphql query (#1426) - Support for multi-chain indexing (#1375) ## [1.7.0] - 2022-11-15 ### Added - Added distinct query plugin. (#1401) ### Fixed - Fix permission restrictions when using hot-schema reload. (#1398) - Fix query distinct dependencies. (#1274) ## [1.6.1] - 2022-10-27 ### Changed - Disable hot schema reload by default. It can be enabled with `--disable-hot-schema=false`. (#1349) ## [1.6.0] - 2022-10-26 ### Changed - Change max connection to 10 ms and query timeout to 10000 ms. (#1322) ### Added - Added hot-schema reload, query-service no longer needs to restart to see schema changes. (#1321) ## [1.5.0] - 2022-08-11 ### Fixed - Fix db selection in configuration when subscription is enabled (#1241) - Fork OrderByAggregatesPlugin and modify to be compatible with historical feature (#1242) - Fix block height being applied to all queries (#1238) ### Changed - Move aggregation feature out from `unsafe` and apply it by default, can be control though `aggregate` flag. ## [1.4.0] - 2022-07-27 ### Added - Add `query-explain` flag, by enable this console will log actual SQL statement been queried. (#1192) ## [1.3.0] - 2022-07-05 ### Changed - Try to catch error if server creation failed, also give retry build schema (#1153) ### Fixed - Fix tests (#1160) ## [1.2.1] - 2022-06-27 ### Fixed - Fixed subql-query doesn't show all help docs issue (#1137) ## [1.2.0] - 2022-06-22 ### Added - added `max-connection` and `query-timeout` configuration for pg pool (#1108) ## [1.1.1] - 2022-06-02 ### Changed - Now query-complexity is indicated in the header (#1088) ## [1.1.0] - 2022-05-31 ### Added - Experimental feature: Support query by block number, require enable by indexing node (#992) ## [1.0.0] - 2022-05-11 ### Changed - Major release ## [0.16.1] - 2022-05-06 ### Changed - Bump with `@subql/utils` ## [0.16.0] - 2022-05-02 ### Added - Add utils package (#928) - Allow set query-complexity for query (#923) ## [0.15.0] - 2022-04-26 ### Added - Add support for querying historical state (#859) ## [0.14.1] - 2022-04-04 ### Changed - Bump with `subql/common` ## [0.14.0] - 2022-04-04 ### Changed - move subscription to dedicate flag (#867) ## [0.13.0] - 2022-03-22 ### Added - Add GraphQL subscription support (#846) ## [0.12.0] - 2022-02-09 ### Added - Add `dynamicDatasources` in metadata (#773) ## [0.11.0] - 2022-01-21 ### Added - Enable full aggregates support when `--unsafe`, and group-by only when `--unsafe=false` (#765) ## [0.10.0] - 2022-01-13 ### Added - Add rowCountEstimate to Metadata (#736) - Support allocate port automatically (#739) ## [0.9.0] - 2021-12-16 ### Changed - Limit query record size to 100, though by using `--unsafe` can remove this limit. (#644) - Update `getProjectSchema` to handle when subqueries table has been deprecated (#683) - Update `Dockerfile` to use `node:16-alpine` (#640) ### Added - Add query log to file (#667) ### Fixed - Fix fetch metadata (#700) ## [0.8.0] - 2021-11-19 ### Added - Support enum in postgraphile plugin (#551) ### Changed - Update `GetMetadataPlugin` to support fetch from both api and table (#555) ## [0.7.4] - 2021-11-03 ### Changed - Bump dependencies (#584) ## [0.7.3] - 2021-09-25 ### Fixed - Change `_metadata` back, and use `smartTagPlugin` to omit node `metadata` class. By doing this, previous project that rely on query `_metadata` won't be affected, such as Dictionaries. ## [0.7.2] - 2021-09-22 ### Changed - Changed query indexer `_metadata` to `_meta`, current `_metadata` is created from indexer service included `blockOffset` data (#489) ## [0.7.1] - 2021-08-27 ### Fixed - Deprecated warnings (#448) ## [0.7.0] - 2021-06-25 ### Changed - Update dependencies (#358) ## [0.6.0] - 2021-06-22 ### Added - Allow query service to query indexer metadata though add `--indexer ` (#327) - Add `_Metadata` in the query schema (#327) ### Changed - change `lastProcessedHeight` and `targetHeight` type to `Int`. (#347) ## [0.5.0] - 2021-04-20 ### Added - Remove `condition` in query schema, please use `filter` instead (#260) - annotation is now supported in - We'll automatically generate coresponding JSON interfaces when querying this data (#275) - Read more about how you can use this in our [updated docs](https://doc.subquery.network/create/graphql.html#json-type) ## [0.4.0] - 2021-03-25 ### Added - support filter for condition search (#240) ## [0.3.2] - 2021-03-11 ### Fixed - add dependency of @subql/common for @subql/query (#233) ## [0.3.1] - 2021-03-11 ### Fixed - fix wrong cross package imports (#231) ## [0.3.0] - 2021-03-11 ### Added - refactor logger: support --output-fmt and --log-level (#220) - use read db host (DB_HOST_READ from env) as priority (#221) ## [0.2.0] - 2021-02-05 ### Added - init query service project - customise first/last plugin to give max record to query (#114) - disable debug mode in production (#115) - overwrite plugin to fix one to one unique key check - update query publish and docker build process [Unreleased]: https://github.com/subquery/subql/compare/query/2.25.0...HEAD [2.25.0]: https://github.com/subquery/subql/compare/query/2.24.0...query/2.25.0 [2.24.0]: https://github.com/subquery/subql/compare/query/2.23.6...query/2.24.0 [2.23.6]: https://github.com/subquery/subql/compare/query/2.23.5...query/2.23.6 [2.23.5]: https://github.com/subquery/subql/compare/query/2.23.4...query/2.23.5 [2.23.4]: https://github.com/subquery/subql/compare/query/2.23.3...query/2.23.4 [2.23.3]: https://github.com/subquery/subql/compare/query/2.23.2...query/2.23.3 [2.23.2]: https://github.com/subquery/subql/compare/query/2.23.1...query/2.23.2 [2.23.1]: https://github.com/subquery/subql/compare/query/2.23.0...query/2.23.1 [2.23.0]: https://github.com/subquery/subql/compare/query/2.22.2...query/2.23.0 [2.22.2]: https://github.com/subquery/subql/compare/query/2.22.1...query/2.22.2 [2.22.1]: https://github.com/subquery/subql/compare/query/2.22.0...query/2.22.1 [2.22.0]: https://github.com/subquery/subql/compare/query/2.21.2...query/2.22.0 [2.21.2]: https://github.com/subquery/subql/compare/query/2.21.1...query/2.21.2 [2.21.1]: https://github.com/subquery/subql/compare/query/2.21.0...query/2.21.1 [2.21.0]: https://github.com/subquery/subql/compare/query/2.20.1...query/2.21.0 [2.20.1]: https://github.com/subquery/subql/compare/query/2.20.0...query/2.20.1 [2.20.0]: https://github.com/subquery/subql/compare/query/2.19.0...query/2.20.0 [2.19.0]: https://github.com/subquery/subql/compare/query/2.18.0...query/2.19.0 [2.18.0]: https://github.com/subquery/subql/compare/query/2.17.1...query/2.18.0 [2.17.1]: https://github.com/subquery/subql/compare/query/2.17.0...query/2.17.1 [2.17.0]: https://github.com/subquery/subql/compare/query/2.16.0...query/2.17.0 [2.16.0]: https://github.com/subquery/subql/compare/query/2.15.2...query/2.16.0 [2.15.2]: https://github.com/subquery/subql/compare/query/2.15.1...query/2.15.2 [2.15.1]: https://github.com/subquery/subql/compare/query/2.15.0...query/2.15.1 [2.15.0]: https://github.com/subquery/subql/compare/query/2.14.1...query/2.15.0 [2.14.1]: https://github.com/subquery/subql/compare/query/2.14.0...query/2.14.1 [2.14.0]: https://github.com/subquery/subql/compare/query/2.13.3...query/2.14.0 [2.13.3]: https://github.com/subquery/subql/compare/query/2.13.2...query/2.13.3 [2.13.2]: https://github.com/subquery/subql/compare/query/2.13.1...query/2.13.2 [2.13.1]: https://github.com/subquery/subql/compare/query/2.13.0...query/2.13.1 [2.13.0]: https://github.com/subquery/subql/compare/query/2.12.1...query/2.13.0 [2.12.1]: https://github.com/subquery/subql/compare/query/2.12.0...query/2.12.1 [2.12.0]: https://github.com/subquery/subql/compare/query/2.11.1...query/2.12.0 [2.11.1]: https://github.com/subquery/subql/compare/query/2.11.0...query/2.11.1 [2.11.0]: https://github.com/subquery/subql/compare/query/2.10.5...query/2.11.0 [2.10.5]: https://github.com/subquery/subql/compare/query/2.10.4...query/2.10.5 [2.10.4]: https://github.com/subquery/subql/compare/query/2.10.3...query/2.10.4 [2.10.3]: https://github.com/subquery/subql/compare/query/2.10.1...query/2.10.3 [2.10.1]: https://github.com/subquery/subql/compare/query/2.10.0...query/2.10.1 [2.10.0]: https://github.com/subquery/subql/compare/query/2.9.1...query/2.10.0 [2.9.1]: https://github.com/subquery/subql/compare/query/2.9.0...query/2.9.1 [2.9.0]: https://github.com/subquery/subql/compare/query/2.8.0...query/2.9.0 [2.8.0]: https://github.com/subquery/subql/compare/query/2.7.0...query/2.8.0 [2.7.0]: https://github.com/subquery/subql/compare/query/2.6.0...query/2.7.0 [2.6.0]: https://github.com/subquery/subql/compare/query/2.5.0...query/2.6.0 [2.5.0]: https://github.com/subquery/subql/compare/query/2.4.0...query/2.5.0 [2.4.0]: https://github.com/subquery/subql/compare/query/2.3.0...query/2.4.0 [2.3.0]: https://github.com/subquery/subql/compare/query/2.2.0...query/2.3.0 [2.2.0]: https://github.com/subquery/subql/compare/query/2.1.0...query/2.2.0 [2.1.0]: https://github.com/subquery/subql/compare/query/2.0.1..query/2.1.0 [2.0.1]: https://github.com/subquery/subql/compare/query/2.0.0...query/2.0.1 [2.0.0]: https://github.com/subquery/subql/compare/query/1.11.2..query/2.0.0 [1.11.2]: https://github.com/subquery/subql/compare/query/1.11.1...query/1.11.2 [1.11.1]: https://github.com/subquery/subql/compare/query/1.11.0...query/1.11.1 [1.11.0]: https://github.com/subquery/subql/compare/query/1.10.2...query/1.11.0 [1.10.2]: https://github.com/subquery/subql/compare/query/1.10.1...query/1.10.2 [1.10.1]: https://github.com/subquery/subql/compare/query/1.10.0...query/1.10.1 [1.10.0]: https://github.com/subquery/subql/compare/query/1.9.0...query/1.10.0 [1.9.0]: https://github.com/subquery/subql/compare/query/1.8.0...query/1.9.0 [1.8.0]: https://github.com/subquery/subql/compare/query/1.7.0...query/1.8.0 [1.7.0]: https://github.com/subquery/subql/compare/query/1.6.1...query/1.7.0 [1.6.1]: https://github.com/subquery/subql/compare/query/1.6.0...query/1.6.1 [1.6.0]: https://github.com/subquery/subql/compare/query/1.5.0...query/1.6.0 [1.5.0]: https://github.com/subquery/subql/compare/query/1.4.0...query/1.5.0 [1.4.0]: https://github.com/subquery/subql/compare/query/1.3.0...query/1.4.0 [1.3.0]: https://github.com/subquery/subql/compare/query/1.2.1...query/1.3.0 [1.2.1]: https://github.com/subquery/subql/compare/query/1.2.0...query/1.2.1 [1.2.0]: https://github.com/subquery/subql/compare/query/1.1.1...query/1.2.0 [1.1.1]: https://github.com/subquery/subql/compare/query/1.1.0...query/1.1.1 [1.1.0]: https://github.com/subquery/subql/compare/query/1.0.0...query/1.1.0 [1.0.0]: https://github.com/subquery/subql/compare/query/0.16.1...query/1.0.0 [0.16.1]: https://github.com/subquery/subql/compare/query/0.16.0...query/0.16.1 [0.16.0]: https://github.com/subquery/subql/compare/query/0.15.0...query/0.16.0 [0.15.0]: https://github.com/subquery/subql/compare/query/0.14.1...query/0.15.0 [0.14.1]: https://github.com/subquery/subql/compare/query/0.14.0...query/0.14.1 [0.14.0]: https://github.com/subquery/subql/compare/query/0.13.0...query/0.14.0 [0.13.0]: https://github.com/subquery/subql/compare/query/0.12.0...query/0.13.0 [0.12.0]: https://github.com/subquery/subql/compare/query/0.11.0...query/0.12.0 [0.11.0]: https://github.com/subquery/subql/compare/query/0.10.0...query/0.11.0 [0.10.0]: https://github.com/subquery/subql/compare/query/0.9.0...query/0.10.0 [0.9.0]: https://github.com/subquery/subql/compare/query/0.8.0...query/0.9.0 [0.8.0]: https://github.com/subquery/subql/compare/query/0.7.4...query/0.8.0 [0.7.4]: https://github.com/subquery/subql/compare/query/0.7.3...query/0.7.4 [0.7.3]: https://github.com/subquery/subql/compare/query/0.7.2...query/0.7.3 [0.7.2]: https://github.com/subquery/subql/compare/query/0.7.1...query/0.7.2 [0.7.1]: https://github.com/subquery/subql/compare/query/0.7.0...query/0.7.1 [0.7.0]: https://github.com/subquery/subql/compare/query/0.6.0...query/0.7.0 [0.6.0]: https://github.com/subquery/subql/compare/query/0.5.0...query/0.6.0 [0.5.0]: https://github.com/subquery/subql/compare/query/0.4.0...query/0.5.0 [0.4.0]: https://github.com/subquery/subql/compare/query/0.3.2...query/0.4.0 [0.3.2]: https://github.com/subquery/subql/compare/query/0.3.1...query/0.3.2 [0.3.1]: https://github.com/subquery/subql/compare/query/0.3.0...query/0.3.1 [0.3.0]: https://github.com/subquery/subql/compare/query/0.2.0...query/0.3.0 [0.2.0]: https://github.com/subquery/subql/tag/query/0.2.0 ================================================ FILE: packages/query/Dockerfile ================================================ # Build stage FROM node:lts-alpine as builder # Set working directory WORKDIR /app # Copy all packages COPY ./packages ./packages # Copy tsconfig.json COPY ./tsconfig.json ./tsconfig.json # Copy build script COPY ./scripts/build.sh ./scripts/build.sh # Install dependencies and build RUN ./scripts/build.sh packages/query # Production stage FROM node:lts-alpine # Copy .tgz file from builder COPY --from=builder /app/packages/query/app.tgz /app.tgz # Install production dependencies RUN apk add --no-cache tini curl git && \ tar -xzvf /app.tgz --strip 1 && \ rm /app.tgz && \ yarn install --production && \ yarn cache clean && \ rm -rf /root/.npm /root/.cache # Make the user not ROOT USER 1000 # Set Entry point and command ENTRYPOINT ["/sbin/tini", "--", "/bin/run"] CMD ["-f","/app"] ================================================ FILE: packages/query/LICENSE ================================================ GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 Copyright (C) 2007 Free Software Foundation, Inc. Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The GNU General Public License is a free, copyleft license for software and other kinds of works. The licenses for most software and other practical works are designed to take away your freedom to share and change the works. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change all versions of a program--to make sure it remains free software for all its users. We, the Free Software Foundation, use the GNU General Public License for most of our software; it applies also to any other work released this way by its authors. You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for them if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs, and that you know you can do these things. To protect your rights, we need to prevent others from denying you these rights or asking you to surrender the rights. Therefore, you have certain responsibilities if you distribute copies of the software, or if you modify it: responsibilities to respect the freedom of others. For example, if you distribute copies of such a program, whether gratis or for a fee, you must pass on to the recipients the same freedoms that you received. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. Developers that use the GNU GPL protect your rights with two steps: (1) assert copyright on the software, and (2) offer you this License giving you legal permission to copy, distribute and/or modify it. For the developers' and authors' protection, the GPL clearly explains that there is no warranty for this free software. For both users' and authors' sake, the GPL requires that modified versions be marked as changed, so that their problems will not be attributed erroneously to authors of previous versions. Some devices are designed to deny users access to install or run modified versions of the software inside them, although the manufacturer can do so. This is fundamentally incompatible with the aim of protecting users' freedom to change the software. The systematic pattern of such abuse occurs in the area of products for individuals to use, which is precisely where it is most unacceptable. Therefore, we have designed this version of the GPL to prohibit the practice for those products. If such problems arise substantially in other domains, we stand ready to extend this provision to those domains in future versions of the GPL, as needed to protect the freedom of users. Finally, every program is threatened constantly by software patents. States should not allow patents to restrict development and use of software on general-purpose computers, but in those that do, we wish to avoid the special danger that patents applied to a free program could make it effectively proprietary. To prevent this, the GPL assures that patents cannot be used to render the program non-free. The precise terms and conditions for copying, distribution and modification follow. TERMS AND CONDITIONS 0. Definitions. "This License" refers to version 3 of the GNU General Public License. "Copyright" also means copyright-like laws that apply to other kinds of works, such as semiconductor masks. "The Program" refers to any copyrightable work licensed under this License. Each licensee is addressed as "you". "Licensees" and "recipients" may be individuals or organizations. To "modify" a work means to copy from or adapt all or part of the work in a fashion requiring copyright permission, other than the making of an exact copy. The resulting work is called a "modified version" of the earlier work or a work "based on" the earlier work. A "covered work" means either the unmodified Program or a work based on the Program. To "propagate" a work means to do anything with it that, without permission, would make you directly or secondarily liable for infringement under applicable copyright law, except executing it on a computer or modifying a private copy. Propagation includes copying, distribution (with or without modification), making available to the public, and in some countries other activities as well. To "convey" a work means any kind of propagation that enables other parties to make or receive copies. Mere interaction with a user through a computer network, with no transfer of a copy, is not conveying. An interactive user interface displays "Appropriate Legal Notices" to the extent that it includes a convenient and prominently visible feature that (1) displays an appropriate copyright notice, and (2) tells the user that there is no warranty for the work (except to the extent that warranties are provided), that licensees may convey the work under this License, and how to view a copy of this License. If the interface presents a list of user commands or options, such as a menu, a prominent item in the list meets this criterion. 1. Source Code. The "source code" for a work means the preferred form of the work for making modifications to it. "Object code" means any non-source form of a work. A "Standard Interface" means an interface that either is an official standard defined by a recognized standards body, or, in the case of interfaces specified for a particular programming language, one that is widely used among developers working in that language. The "System Libraries" of an executable work include anything, other than the work as a whole, that (a) is included in the normal form of packaging a Major Component, but which is not part of that Major Component, and (b) serves only to enable use of the work with that Major Component, or to implement a Standard Interface for which an implementation is available to the public in source code form. A "Major Component", in this context, means a major essential component (kernel, window system, and so on) of the specific operating system (if any) on which the executable work runs, or a compiler used to produce the work, or an object code interpreter used to run it. The "Corresponding Source" for a work in object code form means all the source code needed to generate, install, and (for an executable work) run the object code and to modify the work, including scripts to control those activities. However, it does not include the work's System Libraries, or general-purpose tools or generally available free programs which are used unmodified in performing those activities but which are not part of the work. For example, Corresponding Source includes interface definition files associated with source files for the work, and the source code for shared libraries and dynamically linked subprograms that the work is specifically designed to require, such as by intimate data communication or control flow between those subprograms and other parts of the work. The Corresponding Source need not include anything that users can regenerate automatically from other parts of the Corresponding Source. The Corresponding Source for a work in source code form is that same work. 2. Basic Permissions. All rights granted under this License are granted for the term of copyright on the Program, and are irrevocable provided the stated conditions are met. This License explicitly affirms your unlimited permission to run the unmodified Program. The output from running a covered work is covered by this License only if the output, given its content, constitutes a covered work. This License acknowledges your rights of fair use or other equivalent, as provided by copyright law. You may make, run and propagate covered works that you do not convey, without conditions so long as your license otherwise remains in force. You may convey covered works to others for the sole purpose of having them make modifications exclusively for you, or provide you with facilities for running those works, provided that you comply with the terms of this License in conveying all material for which you do not control copyright. Those thus making or running the covered works for you must do so exclusively on your behalf, under your direction and control, on terms that prohibit them from making any copies of your copyrighted material outside their relationship with you. Conveying under any other circumstances is permitted solely under the conditions stated below. Sublicensing is not allowed; section 10 makes it unnecessary. 3. Protecting Users' Legal Rights From Anti-Circumvention Law. No covered work shall be deemed part of an effective technological measure under any applicable law fulfilling obligations under article 11 of the WIPO copyright treaty adopted on 20 December 1996, or similar laws prohibiting or restricting circumvention of such measures. When you convey a covered work, you waive any legal power to forbid circumvention of technological measures to the extent such circumvention is effected by exercising rights under this License with respect to the covered work, and you disclaim any intention to limit operation or modification of the work as a means of enforcing, against the work's users, your or third parties' legal rights to forbid circumvention of technological measures. 4. Conveying Verbatim Copies. You may convey verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice; keep intact all notices stating that this License and any non-permissive terms added in accord with section 7 apply to the code; keep intact all notices of the absence of any warranty; and give all recipients a copy of this License along with the Program. You may charge any price or no price for each copy that you convey, and you may offer support or warranty protection for a fee. 5. Conveying Modified Source Versions. You may convey a work based on the Program, or the modifications to produce it from the Program, in the form of source code under the terms of section 4, provided that you also meet all of these conditions: a) The work must carry prominent notices stating that you modified it, and giving a relevant date. b) The work must carry prominent notices stating that it is released under this License and any conditions added under section 7. This requirement modifies the requirement in section 4 to "keep intact all notices". c) You must license the entire work, as a whole, under this License to anyone who comes into possession of a copy. This License will therefore apply, along with any applicable section 7 additional terms, to the whole of the work, and all its parts, regardless of how they are packaged. This License gives no permission to license the work in any other way, but it does not invalidate such permission if you have separately received it. d) If the work has interactive user interfaces, each must display Appropriate Legal Notices; however, if the Program has interactive interfaces that do not display Appropriate Legal Notices, your work need not make them do so. A compilation of a covered work with other separate and independent works, which are not by their nature extensions of the covered work, and which are not combined with it such as to form a larger program, in or on a volume of a storage or distribution medium, is called an "aggregate" if the compilation and its resulting copyright are not used to limit the access or legal rights of the compilation's users beyond what the individual works permit. Inclusion of a covered work in an aggregate does not cause this License to apply to the other parts of the aggregate. 6. Conveying Non-Source Forms. You may convey a covered work in object code form under the terms of sections 4 and 5, provided that you also convey the machine-readable Corresponding Source under the terms of this License, in one of these ways: a) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by the Corresponding Source fixed on a durable physical medium customarily used for software interchange. b) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by a written offer, valid for at least three years and valid for as long as you offer spare parts or customer support for that product model, to give anyone who possesses the object code either (1) a copy of the Corresponding Source for all the software in the product that is covered by this License, on a durable physical medium customarily used for software interchange, for a price no more than your reasonable cost of physically performing this conveying of source, or (2) access to copy the Corresponding Source from a network server at no charge. c) Convey individual copies of the object code with a copy of the written offer to provide the Corresponding Source. This alternative is allowed only occasionally and noncommercially, and only if you received the object code with such an offer, in accord with subsection 6b. d) Convey the object code by offering access from a designated place (gratis or for a charge), and offer equivalent access to the Corresponding Source in the same way through the same place at no further charge. You need not require recipients to copy the Corresponding Source along with the object code. If the place to copy the object code is a network server, the Corresponding Source may be on a different server (operated by you or a third party) that supports equivalent copying facilities, provided you maintain clear directions next to the object code saying where to find the Corresponding Source. Regardless of what server hosts the Corresponding Source, you remain obligated to ensure that it is available for as long as needed to satisfy these requirements. e) Convey the object code using peer-to-peer transmission, provided you inform other peers where the object code and Corresponding Source of the work are being offered to the general public at no charge under subsection 6d. A separable portion of the object code, whose source code is excluded from the Corresponding Source as a System Library, need not be included in conveying the object code work. A "User Product" is either (1) a "consumer product", which means any tangible personal property which is normally used for personal, family, or household purposes, or (2) anything designed or sold for incorporation into a dwelling. In determining whether a product is a consumer product, doubtful cases shall be resolved in favor of coverage. For a particular product received by a particular user, "normally used" refers to a typical or common use of that class of product, regardless of the status of the particular user or of the way in which the particular user actually uses, or expects or is expected to use, the product. A product is a consumer product regardless of whether the product has substantial commercial, industrial or non-consumer uses, unless such uses represent the only significant mode of use of the product. "Installation Information" for a User Product means any methods, procedures, authorization keys, or other information required to install and execute modified versions of a covered work in that User Product from a modified version of its Corresponding Source. The information must suffice to ensure that the continued functioning of the modified object code is in no case prevented or interfered with solely because modification has been made. If you convey an object code work under this section in, or with, or specifically for use in, a User Product, and the conveying occurs as part of a transaction in which the right of possession and use of the User Product is transferred to the recipient in perpetuity or for a fixed term (regardless of how the transaction is characterized), the Corresponding Source conveyed under this section must be accompanied by the Installation Information. But this requirement does not apply if neither you nor any third party retains the ability to install modified object code on the User Product (for example, the work has been installed in ROM). The requirement to provide Installation Information does not include a requirement to continue to provide support service, warranty, or updates for a work that has been modified or installed by the recipient, or for the User Product in which it has been modified or installed. Access to a network may be denied when the modification itself materially and adversely affects the operation of the network or violates the rules and protocols for communication across the network. Corresponding Source conveyed, and Installation Information provided, in accord with this section must be in a format that is publicly documented (and with an implementation available to the public in source code form), and must require no special password or key for unpacking, reading or copying. 7. Additional Terms. "Additional permissions" are terms that supplement the terms of this License by making exceptions from one or more of its conditions. Additional permissions that are applicable to the entire Program shall be treated as though they were included in this License, to the extent that they are valid under applicable law. If additional permissions apply only to part of the Program, that part may be used separately under those permissions, but the entire Program remains governed by this License without regard to the additional permissions. When you convey a copy of a covered work, you may at your option remove any additional permissions from that copy, or from any part of it. (Additional permissions may be written to require their own removal in certain cases when you modify the work.) You may place additional permissions on material, added by you to a covered work, for which you have or can give appropriate copyright permission. Notwithstanding any other provision of this License, for material you add to a covered work, you may (if authorized by the copyright holders of that material) supplement the terms of this License with terms: a) Disclaiming warranty or limiting liability differently from the terms of sections 15 and 16 of this License; or b) Requiring preservation of specified reasonable legal notices or author attributions in that material or in the Appropriate Legal Notices displayed by works containing it; or c) Prohibiting misrepresentation of the origin of that material, or requiring that modified versions of such material be marked in reasonable ways as different from the original version; or d) Limiting the use for publicity purposes of names of licensors or authors of the material; or e) Declining to grant rights under trademark law for use of some trade names, trademarks, or service marks; or f) Requiring indemnification of licensors and authors of that material by anyone who conveys the material (or modified versions of it) with contractual assumptions of liability to the recipient, for any liability that these contractual assumptions directly impose on those licensors and authors. All other non-permissive additional terms are considered "further restrictions" within the meaning of section 10. If the Program as you received it, or any part of it, contains a notice stating that it is governed by this License along with a term that is a further restriction, you may remove that term. If a license document contains a further restriction but permits relicensing or conveying under this License, you may add to a covered work material governed by the terms of that license document, provided that the further restriction does not survive such relicensing or conveying. If you add terms to a covered work in accord with this section, you must place, in the relevant source files, a statement of the additional terms that apply to those files, or a notice indicating where to find the applicable terms. Additional terms, permissive or non-permissive, may be stated in the form of a separately written license, or stated as exceptions; the above requirements apply either way. 8. Termination. You may not propagate or modify a covered work except as expressly provided under this License. Any attempt otherwise to propagate or modify it is void, and will automatically terminate your rights under this License (including any patent licenses granted under the third paragraph of section 11). However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation. Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means, this is the first time you have received notice of violation of this License (for any work) from that copyright holder, and you cure the violation prior to 30 days after your receipt of the notice. Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under this License. If your rights have been terminated and not permanently reinstated, you do not qualify to receive new licenses for the same material under section 10. 9. Acceptance Not Required for Having Copies. You are not required to accept this License in order to receive or run a copy of the Program. Ancillary propagation of a covered work occurring solely as a consequence of using peer-to-peer transmission to receive a copy likewise does not require acceptance. However, nothing other than this License grants you permission to propagate or modify any covered work. These actions infringe copyright if you do not accept this License. Therefore, by modifying or propagating a covered work, you indicate your acceptance of this License to do so. 10. Automatic Licensing of Downstream Recipients. Each time you convey a covered work, the recipient automatically receives a license from the original licensors, to run, modify and propagate that work, subject to this License. You are not responsible for enforcing compliance by third parties with this License. An "entity transaction" is a transaction transferring control of an organization, or substantially all assets of one, or subdividing an organization, or merging organizations. If propagation of a covered work results from an entity transaction, each party to that transaction who receives a copy of the work also receives whatever licenses to the work the party's predecessor in interest had or could give under the previous paragraph, plus a right to possession of the Corresponding Source of the work from the predecessor in interest, if the predecessor has it or can get it with reasonable efforts. You may not impose any further restrictions on the exercise of the rights granted or affirmed under this License. For example, you may not impose a license fee, royalty, or other charge for exercise of rights granted under this License, and you may not initiate litigation (including a cross-claim or counterclaim in a lawsuit) alleging that any patent claim is infringed by making, using, selling, offering for sale, or importing the Program or any portion of it. 11. Patents. A "contributor" is a copyright holder who authorizes use under this License of the Program or a work on which the Program is based. The work thus licensed is called the contributor's "contributor version". A contributor's "essential patent claims" are all patent claims owned or controlled by the contributor, whether already acquired or hereafter acquired, that would be infringed by some manner, permitted by this License, of making, using, or selling its contributor version, but do not include claims that would be infringed only as a consequence of further modification of the contributor version. For purposes of this definition, "control" includes the right to grant patent sublicenses in a manner consistent with the requirements of this License. Each contributor grants you a non-exclusive, worldwide, royalty-free patent license under the contributor's essential patent claims, to make, use, sell, offer for sale, import and otherwise run, modify and propagate the contents of its contributor version. In the following three paragraphs, a "patent license" is any express agreement or commitment, however denominated, not to enforce a patent (such as an express permission to practice a patent or covenant not to sue for patent infringement). To "grant" such a patent license to a party means to make such an agreement or commitment not to enforce a patent against the party. If you convey a covered work, knowingly relying on a patent license, and the Corresponding Source of the work is not available for anyone to copy, free of charge and under the terms of this License, through a publicly available network server or other readily accessible means, then you must either (1) cause the Corresponding Source to be so available, or (2) arrange to deprive yourself of the benefit of the patent license for this particular work, or (3) arrange, in a manner consistent with the requirements of this License, to extend the patent license to downstream recipients. "Knowingly relying" means you have actual knowledge that, but for the patent license, your conveying the covered work in a country, or your recipient's use of the covered work in a country, would infringe one or more identifiable patents in that country that you have reason to believe are valid. If, pursuant to or in connection with a single transaction or arrangement, you convey, or propagate by procuring conveyance of, a covered work, and grant a patent license to some of the parties receiving the covered work authorizing them to use, propagate, modify or convey a specific copy of the covered work, then the patent license you grant is automatically extended to all recipients of the covered work and works based on it. A patent license is "discriminatory" if it does not include within the scope of its coverage, prohibits the exercise of, or is conditioned on the non-exercise of one or more of the rights that are specifically granted under this License. You may not convey a covered work if you are a party to an arrangement with a third party that is in the business of distributing software, under which you make payment to the third party based on the extent of your activity of conveying the work, and under which the third party grants, to any of the parties who would receive the covered work from you, a discriminatory patent license (a) in connection with copies of the covered work conveyed by you (or copies made from those copies), or (b) primarily for and in connection with specific products or compilations that contain the covered work, unless you entered into that arrangement, or that patent license was granted, prior to 28 March 2007. Nothing in this License shall be construed as excluding or limiting any implied license or other defenses to infringement that may otherwise be available to you under applicable patent law. 12. No Surrender of Others' Freedom. If conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot convey a covered work so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not convey it at all. For example, if you agree to terms that obligate you to collect a royalty for further conveying from those to whom you convey the Program, the only way you could satisfy both those terms and this License would be to refrain entirely from conveying the Program. 13. Use with the GNU Affero General Public License. Notwithstanding any other provision of this License, you have permission to link or combine any covered work with a work licensed under version 3 of the GNU Affero General Public License into a single combined work, and to convey the resulting work. The terms of this License will continue to apply to the part which is the covered work, but the special requirements of the GNU Affero General Public License, section 13, concerning interaction through a network will apply to the combination as such. 14. Revised Versions of this License. The Free Software Foundation may publish revised and/or new versions of the GNU General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies that a certain numbered version of the GNU General Public License "or any later version" applies to it, you have the option of following the terms and conditions either of that numbered version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of the GNU General Public License, you may choose any version ever published by the Free Software Foundation. If the Program specifies that a proxy can decide which future versions of the GNU General Public License can be used, that proxy's public statement of acceptance of a version permanently authorizes you to choose that version for the Program. Later license versions may give you additional or different permissions. However, no additional obligations are imposed on any author or copyright holder as a result of your choosing to follow a later version. 15. Disclaimer of Warranty. THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 16. Limitation of Liability. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. 17. Interpretation of Sections 15 and 16. If the disclaimer of warranty and limitation of liability provided above cannot be given local legal effect according to their terms, reviewing courts shall apply local law that most closely approximates an absolute waiver of all civil liability in connection with the Program, unless a warranty or assumption of liability accompanies a copy of the Program in return for a fee. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively state the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . Also add information on how to contact you by electronic and paper mail. If the program does terminal interaction, make it output a short notice like this when it starts in an interactive mode: Copyright (C) This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, your program's commands might be different; for a GUI interface, you would use an "about box". You should also get your employer (if you work as a programmer) or school, if any, to sign a "copyright disclaimer" for the program, if necessary. For more information on this, and how to apply and follow the GNU GPL, see . The GNU General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. But first, please read . ================================================ FILE: packages/query/README.md ================================================ # @subql/query ## Run this package To quickly setup the project, add a `.env` file in the `subql/packages/query` folder with the following content: ```env DB_HOST=localhost DB_PORT=5432 DB_USER=postgres DB_PASS=postgres DB_DATABASE=postgres ``` then run the following command ```sh NODE_OPTIONS="-r dotenv/config" yarn start:dev -- --name --playground ``` ================================================ FILE: packages/query/bin/run ================================================ #!/usr/bin/env node require('../dist/main.js') ================================================ FILE: packages/query/bin/run.cmd ================================================ @echo off node "%~dp0\run" %* ================================================ FILE: packages/query/nest-cli.json ================================================ { "collection": "@nestjs/schematics", "sourceRoot": "src" } ================================================ FILE: packages/query/nodemon.json ================================================ { "watch": ["src"], "ext": "ts", "ignore": ["src/**/*.spec.ts"], "exec": "node -r dotenv/config -r tsconfig-paths/register -r ts-node/register src/main.ts" } ================================================ FILE: packages/query/package.json ================================================ { "name": "@subql/query", "version": "2.25.0", "description": "", "bin": { "subql-query": "./bin/run" }, "homepage": "https://github.com/subquery/subql", "repository": "github:subquery/subql", "scripts": { "prebuild": "rimraf dist", "build": "rm -rf dist && tsc -b", "format": "prettier --write \"src/**/*.ts\" \"test/**/*.ts\"", "start": "nest start", "start:dev": "nodemon", "start:prod": "node dist/main", "lint": "eslint \"{src,apps,libs,test}/**/*.ts\" --fix", "test": "jest", "test:watch": "jest --watch", "test:cov": "jest --coverage", "test:debug": "node --inspect-brk -r tsconfig-paths/register -r ts-node/register node_modules/.bin/jest --runInBand", "test:e2e": "jest --config ./test/jest-e2e.json", "changelog:release": "echo \"Updating changelog $npm_package_version\" && npx chan release $npm_package_version --git-url \"https://github.com/subquery/subql\" --release-prefix=\"query/\"" }, "author": "ZheX", "main": "dist/index.js", "license": "GPL-3.0", "files": [ "/dist", "!/dist/**/*.spec.js", "!/dist/**/*.spec.d.ts", "!/dist/**/*.spec.js.map", "!/dist/**/*.test.js", "!/dist/**/*.test.d.ts", "!/dist/**/*.test.js.map", "/bin", "CHANGELOG.md", "LICENSE", "README.md" ], "dependencies": { "@graphile-contrib/pg-many-to-many": "^1.0.2", "@graphile-contrib/pg-order-by-related": "^1.0.0", "@graphile-contrib/pg-simplify-inflector": "^6.1.0", "@graphile/pg-aggregates": "^0.1.1", "@graphile/pg-pubsub": "^4.13.0", "@nestjs/common": "^9.4.0", "@nestjs/core": "^9.4.0", "@nestjs/platform-express": "^9.4.0", "@subql/common": "workspace:~", "@subql/utils": "workspace:~", "@subql/x-graphile-build-pg": "4.13.0-0.2.5", "@subql/x-postgraphile-core": "4.13.0-0.2.0", "apollo-server-express": "^3.12.0", "compression": "^1.8.0", "graphile-build": "^4.12.2", "graphile-utils": "^4.13.0", "graphql": "^15.8.0", "graphql-query-complexity": "^0.11.0", "graphql-ws": "^5.16.0", "lodash": "^4.17.21", "pg": "^8.12.0", "pg-tsquery": "^8.4.2", "pino-http": "^5.8.0", "postgraphile": "^4.13.0", "postgraphile-plugin-connection-filter": "^2.2.2", "rxjs": "^7.1.0", "ws": "^8.18.0", "yargs": "^16.2.0" }, "devDependencies": { "@nestjs/schematics": "^9.2.0", "@nestjs/testing": "^9.4.0", "@types/compression": "^1.7.5", "@types/express": "^4.17.21", "@types/jest": "^27.5.2", "@types/lodash": "^4.17.20", "@types/ws": "^8", "@types/yargs": "^16.0.9", "nodemon": "^3.1.4" } } ================================================ FILE: packages/query/src/app.module.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import {Module} from '@nestjs/common'; import {ConfigureModule} from './configure/configure.module'; import {GraphqlModule} from './graphql/graphql.module'; @Module({ imports: [ConfigureModule.register(), GraphqlModule], controllers: [], }) export class AppModule {} ================================================ FILE: packages/query/src/configure/config.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import {get} from 'lodash'; export class Config { constructor(private readonly store: Record) {} get(key: string, defaultValue?: T): T | undefined { return (process.env[key.toUpperCase()] as unknown as T) ?? get(this.store, key, defaultValue); } } ================================================ FILE: packages/query/src/configure/configure.module.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import {ConnectionOptions} from 'tls'; import {DynamicModule, Global, Module} from '@nestjs/common'; import {getFileContent, CONNECTION_SSL_ERROR_REGEX} from '@subql/common'; import {Pool, PoolConfig} from 'pg'; import {getLogger} from '../utils/logger'; import {getYargsOption} from '../yargs'; import {Config} from './config'; import {debugPgClient} from './x-postgraphile/debugClient'; async function ensurePool(poolConfig: PoolConfig): Promise { const pgPool = new Pool(poolConfig); try { const pgClient = await pgPool.connect(); // Release the client back to the pool as it's no longer needed pgClient.release(); } catch (e: any) { if (JSON.stringify(e.message).includes(CONNECTION_SSL_ERROR_REGEX)) { poolConfig.ssl = undefined; // end the pool and recreate it without ssl await pgPool.end(); return ensurePool(poolConfig); } } return pgPool; } @Global() @Module({}) export class ConfigureModule { static async register(): Promise { const {argv: opts} = getYargsOption(); const config = new Config({ name: opts.name, playground: opts.playground ?? false, unsafe: opts.unsafe ?? false, }); const dbSslOption = () => { const sslConfig: ConnectionOptions = {rejectUnauthorized: false}; if (opts['pg-ca']) { try { sslConfig.ca = getFileContent(opts['pg-ca'], 'postgres ca cert'); if (opts['pg-key']) { sslConfig.key = getFileContent(opts['pg-key'], 'postgres client key'); } if (opts['pg-cert']) { sslConfig.cert = getFileContent(opts['pg-cert'], 'postgres client cert'); } return sslConfig; } catch (e: any) { getLogger('db config').error(e); throw e; } } return sslConfig; }; const poolConfig: PoolConfig = { user: config.get('DB_USER'), password: config.get('DB_PASS'), host: config.get('DB_HOST_READ') && !opts.subscription ? config.get('DB_HOST_READ') : config.get('DB_HOST'), port: config.get('DB_PORT'), database: config.get('DB_DATABASE'), max: opts['max-connection'], statement_timeout: opts['query-timeout'], ssl: dbSslOption(), }; const pgPool = await ensurePool(poolConfig); pgPool.on('error', (err) => { // tslint:disable-next-line no-console getLogger('db').error('PostgreSQL client generated error: ', err.message); }); if (opts['query-explain']) { pgPool.on('connect', (pgClient) => { // Enhance our Postgres client with debugging stuffs. debugPgClient(pgClient, getLogger('explain')); pgClient._explainResults = []; }); } return { module: ConfigureModule, providers: [ { provide: Config, useValue: config, }, { provide: Pool, useValue: pgPool, }, ], exports: [Config, Pool], }; } } ================================================ FILE: packages/query/src/configure/index.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 export * from './config'; ================================================ FILE: packages/query/src/configure/x-postgraphile/debugClient.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 // overwrite the method plugin: https://github.com/graphile/postgraphile/blob/263ba7477bc2133eebdf89d29acd0460e58501ec/src/postgraphile/withPostGraphileContext.ts#L473 // Allow log SQL queries without resolve result import {ApolloServerPlugin} from 'apollo-server-plugin-base'; import {PoolClient} from 'pg'; import Pino from 'pino'; const $$pgClientOrigQuery = Symbol(); declare module 'pg' { interface ClientBase { _explainResults: Array | null; startExplain: () => void; stopExplain: () => Promise>; } } interface RawExplainResult { query: string; values: any[]; result: any; } type ExplainResult = Omit & { plan: string; }; // print original Graphql Query export function queryExplainPlugin(logger: Pino.Logger): ApolloServerPlugin { return { requestDidStart: ({request}) => { if (request.operationName !== 'IntrospectionQuery' && request.query !== undefined) { logger.info(` \n GraphQL query: ${request.query}`); } }, } as unknown as ApolloServerPlugin; } // print SQL query export function debugPgClient(pgClient: PoolClient, logger: Pino.Logger): PoolClient { // If Postgres debugging is enabled, enhance our query function by adding // a debug statement. if (!pgClient[$$pgClientOrigQuery]) { // Set the original query method to a key on our client. If that key is // already set, use that. pgClient[$$pgClientOrigQuery] = pgClient.query; pgClient.startExplain = () => { pgClient._explainResults = []; }; pgClient.stopExplain = async () => { const results = pgClient._explainResults; pgClient._explainResults = null; if (!results) { return Promise.resolve([]); } return ( await Promise.all( results.map(async (r) => { const {result: resultPromise, ...rest} = r; const result = await resultPromise; const firstKey = result && result[0] && Object.keys(result[0])[0]; if (!firstKey) { return null; } const plan = result.map((r: any) => r[firstKey]).join('\n'); return { ...rest, plan, }; }) ) ).filter((entry: unknown): entry is ExplainResult => !!entry); }; pgClient.query = function (...args: Array): any { const [a, b, c] = args; const variables: string[] = []; // If we understand it (and it uses the promises API) if ( (typeof a === 'string' && (!c || typeof c === 'function') && (!b || Array.isArray(b))) || (typeof a === 'object' && !b && !c) ) { if (pgClient._explainResults) { const query = a && a.text ? a.text : a; const values = a && a.text ? a.values : b; if (query.match(/^\s*(select|insert|update|delete|with)\s/i) && !query.includes(';')) { // Explain it const explain = `explain ${query}`; pgClient._explainResults.push({ query, values, result: pgClient[$$pgClientOrigQuery] .call(this, explain, values) .then((data: any) => data.rows) // swallow errors during explain .catch(() => null), }); } } pgClient._explainResults?.forEach(({query, values}: {query: string; values?: any[]}) => { let res: string; res = `\n SQL query: ${query} `; if (values && values.length !== 0) { res = res.concat(` \n Values: ${JSON.stringify(values)}`); } logger.info(res); }); pgClient._explainResults = []; return pgClient[$$pgClientOrigQuery].apply(this, args); } else { // We don't understand it (e.g. `pgPool.query`), just let it happen. logger.info(`Having trouble to understand query args`); args.forEach((arg) => { logger.info(`arg: ${arg}`); }); return pgClient[$$pgClientOrigQuery].apply(this, args); } }; } return pgClient; } ================================================ FILE: packages/query/src/graphql/__snapshots__/graphql.historical.test.ts.snap ================================================ // Jest Snapshot v1, https://goo.gl/fbAQLP exports[`GraphqlHistorical to filter historical items when ordering 1`] = ` "with __local_0__ as (select to_json((json_build_object('__identifiers'::text, json_build_array(__local_1__."_id"), '@listings'::text, (with __local_2__ as (select to_json((json_build_object('__identifiers'::text, json_build_array(__local_3__."_id"), 'priceAmount'::text, ((__local_3__."price_amount"))::text))) as "@nodes" from (select __local_3__.* from "subquery_2"."listings" as __local_3__ where (__local_3__."item_id" = __local_1__."id") and (__local_3__._block_range @> $1::bigint) and (__local_3__._block_range @> $1::bigint) and (TRUE) and (TRUE) order by __local_3__."_id" ASC ) __local_3__), __local_4__ as (select json_agg(to_json(__local_2__)) as data from __local_2__) select json_build_object('data'::text, coalesce((select __local_4__.data from __local_4__), '[]'::json)) )))) as "@nodes" from (select __local_1__.* from "subquery_2"."items" as __local_1__ where (__local_1__._block_range @> $1::bigint) and (TRUE) and (TRUE) order by __local_1__."last_traded_price_amount" ASC,__local_1__."_id" ASC ) __local_1__), __local_5__ as (select json_agg(to_json(__local_0__)) as data from __local_0__) select coalesce((select __local_5__.data from __local_5__), '[]'::json) as "data" " `; exports[`GraphqlHistorical to filter historical nested (backward) 1`] = ` "with __local_0__ as (select to_json((json_build_object('__identifiers'::text, json_build_array(__local_1__."_id"), 'id'::text, (__local_1__."id")))) as "@nodes" from (select __local_1__.* from "subquery_2"."items" as __local_1__ where (__local_1__._block_range @> $1::bigint) and (((exists(select 1 from "subquery_2"."listings" as __local_2__ where (__local_2__."item_id" = __local_1__."id") and (__local_2__._block_range @> $1::bigint) and (((__local_2__."price_token" = $2))) and (__local_2__._block_range @> $1::bigint))))) and (TRUE) and (TRUE) order by __local_1__."_id" ASC ) __local_1__), __local_3__ as (select json_agg(to_json(__local_0__)) as data from __local_0__) select coalesce((select __local_3__.data from __local_3__), '[]'::json) as "data" " `; exports[`GraphqlHistorical to filter historical nested (forward) 1`] = ` "with __local_0__ as (select to_json((json_build_object('__identifiers'::text, json_build_array(__local_1__."_id"), 'id'::text, (__local_1__."id")))) as "@nodes" from (select __local_1__.* from "subquery_2"."listings" as __local_1__ where (__local_1__._block_range @> $1::bigint) and (( exists( select 1 from "subquery_2"."items" as __local_2__ where (__local_1__."item_id" = __local_2__."id") and (__local_1__._block_range @> $1::bigint) and (((__local_2__."approved" = $2))) and (__local_2__._block_range @> $1::bigint) ))) and (TRUE) and (TRUE) order by __local_1__."_id" ASC ) __local_1__), __local_3__ as (select json_agg(to_json(__local_0__)) as data from __local_0__) select coalesce((select __local_3__.data from __local_3__), '[]'::json) as "data" " `; exports[`GraphqlHistorical to filter historical top level 1`] = ` "with __local_0__ as (select to_json((json_build_object('__identifiers'::text, json_build_array(__local_1__."_id"), 'id'::text, (__local_1__."id"), '@listings'::text, (with __local_2__ as (select to_json((json_build_object('__identifiers'::text, json_build_array(__local_3__."_id"), 'id'::text, (__local_3__."id")))) as "@nodes" from (select __local_3__.* from "subquery_2"."listings" as __local_3__ where (__local_3__."item_id" = __local_1__."id") and (__local_3__._block_range @> $1::bigint) and (__local_3__._block_range @> $1::bigint) and (TRUE) and (TRUE) order by __local_3__."_id" ASC ) __local_3__), __local_4__ as (select json_agg(to_json(__local_2__)) as data from __local_2__) select json_build_object('data'::text, coalesce((select __local_4__.data from __local_4__), '[]'::json)) )))) as "@nodes" from (select __local_1__.* from "subquery_2"."items" as __local_1__ where (__local_1__._block_range @> $1::bigint) and ((exists(select 1 from "subquery_2"."listings" as __local_5__ where (__local_5__."item_id" = __local_1__."id") and (__local_5__._block_range @> $1::bigint)))) and (TRUE) and (TRUE) order by __local_1__."_id" ASC ) __local_1__), __local_6__ as (select json_agg(to_json(__local_0__)) as data from __local_0__) select coalesce((select __local_6__.data from __local_6__), '[]'::json) as "data", ( select json_build_object('totalCount'::text, count(1)) from "subquery_2"."items" as __local_1__ where (__local_1__._block_range @> $1::bigint) and ((exists(select 1 from "subquery_2"."listings" as __local_5__ where (__local_5__."item_id" = __local_1__."id") and (__local_5__._block_range @> $1::bigint)))) ) as "aggregates" " `; ================================================ FILE: packages/query/src/graphql/graphql.historical.test.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import {getPostGraphileBuilder} from '@subql/x-postgraphile-core'; import {ApolloServer, ExpressContext, gql} from 'apollo-server-express'; import {Pool} from 'pg'; import {Config} from '../configure'; import {getYargsOption} from '../yargs'; import {plugins} from './plugins'; jest.mock('../yargs', () => jest.createMockFromModule('../yargs')); (getYargsOption as jest.Mock).mockImplementation(() => { return {argv: {name: 'test', aggregate: true}}; }); describe('GraphqlHistorical', () => { const dbSchema = 'subquery_2'; const config = new Config({}); const pool: Pool = new Pool({ user: config.get('DB_USER'), password: config.get('DB_PASS'), host: config.get('DB_HOST_READ') ?? config.get('DB_HOST'), port: config.get('DB_PORT'), database: config.get('DB_DATABASE'), }); pool.on('error', (err) => { console.error('PostgreSQL client generated error: ', err.message); }); let server: ApolloServer; let sqlSpy: jest.SpyInstance; async function createApolloServer() { const builder = await getPostGraphileBuilder(pool, [dbSchema], { replaceAllPlugins: plugins, subscriptions: true, dynamicJson: true, }); const schema = builder.buildSchema(); const server = new ApolloServer({ schema, context: { pgClient: pool, }, }); return server; } beforeAll(async () => { await pool.query(`CREATE SCHEMA IF NOT EXISTS ${dbSchema}`); await pool.query(`CREATE TABLE IF NOT EXISTS "${dbSchema}".listings ( id text NOT NULL, item_id text NOT NULL, collection_id text NOT NULL, price_amount numeric NOT NULL, price_token text NULL, expires_at jsonb NULL, created_at_block_height numeric NOT NULL, created_at_block_time timestamp NOT NULL, created_at_tx_hash text NOT NULL, updated_at_block_height numeric NULL, updated_at_block_time timestamp NULL, updated_at_tx_hash text NULL, "_id" uuid NOT NULL, "_block_range" int8range NOT NULL, CONSTRAINT listings_pkey PRIMARY KEY (_id) );`); await pool.query(`CREATE TABLE IF NOT EXISTS "${dbSchema}".items ( id text NOT NULL, collection_id text NOT NULL, token_id text NOT NULL, owner_id text NOT NULL, token_uri text NULL, "extension" text NULL, metadata jsonb NULL, last_traded_price_amount numeric NULL, approved bool NOT NULL, created_at_block_height numeric NOT NULL, created_at_block_time timestamp NOT NULL, created_at_tx_hash text NOT NULL, updated_at_block_height numeric NULL, updated_at_block_time timestamp NULL, updated_at_tx_hash text NULL, "_id" uuid NOT NULL, "_block_range" int8range NOT NULL, CONSTRAINT items_pkey PRIMARY KEY (_id) );`); await pool.query(`COMMENT ON TABLE "${dbSchema}".listings IS '@foreignFieldName listings @foreignKey (item_id) REFERENCES items (id)|@singleForeignFieldName listing';`); await pool.query(`COMMENT ON TABLE "${dbSchema}".items IS '@foreignFieldName items';`); server = await createApolloServer(); sqlSpy = jest.spyOn(pool, 'query'); }); beforeEach(() => { sqlSpy.mockClear(); }); afterAll(async () => { await pool.query(`DROP TABLE ${dbSchema}.listings;`); await pool.query(`DROP TABLE ${dbSchema}.items;`); await pool.query(`DROP SCHEMA ${dbSchema};`); await pool.end(); }); it('to filter historical items when ordering', async () => { const GQL_QUERY = gql` query nfts { items(orderBy: LAST_TRADED_PRICE_AMOUNT_ASC) { nodes { listings { nodes { priceAmount } } } } } `; const res = await server.executeOperation({query: GQL_QUERY}); expect(res.errors).toBeUndefined(); expect(sqlSpy.mock.calls[0][0]).toMatchSnapshot(); }); it('to filter historical top level', async () => { const GQL_QUERY = gql` query NFTsOnSale { items(filter: {listingsExist: true}) { nodes { id listings { nodes { id } } } totalCount } } `; const res = await server.executeOperation({query: GQL_QUERY}); expect(res.errors).toBeUndefined(); expect(sqlSpy.mock.calls[0][0]).toMatchSnapshot(); }); it('to filter historical nested (forward)', async () => { const GQL_QUERY = gql` query { listings(filter: {item: {approved: {equalTo: true}}}) { nodes { id } } } `; const res = await server.executeOperation({query: GQL_QUERY}); expect(res.errors).toBeUndefined(); expect(sqlSpy.mock.calls[0][0]).toMatchSnapshot(); }); it('to filter historical nested (backward)', async () => { const GQL_QUERY = gql` query { items(filter: {listings: {some: {priceToken: {equalTo: "foo"}}}}) { nodes { id } } } `; const res = await server.executeOperation({query: GQL_QUERY}); expect(res.errors).toBeUndefined(); expect(sqlSpy.mock.calls[0][0]).toMatchSnapshot(); }); }); ================================================ FILE: packages/query/src/graphql/graphql.module.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import assert from 'assert'; import {setInterval} from 'timers'; import PgPubSub from '@graphile/pg-pubsub'; import {Module, OnModuleDestroy, OnModuleInit} from '@nestjs/common'; import {HttpAdapterHost} from '@nestjs/core'; import {delay} from '@subql/common'; import {hashName} from '@subql/utils'; import {getPostGraphileBuilder, Plugin, PostGraphileCoreOptions} from '@subql/x-postgraphile-core'; import {ApolloServerPluginCacheControl, ApolloServerPluginLandingPageDisabled} from 'apollo-server-core'; import {ApolloServer, UserInputError} from 'apollo-server-express'; import compression from 'compression'; import {NextFunction, Request, Response} from 'express'; import {GraphQLSchema} from 'graphql'; import {useServer} from 'graphql-ws/lib/use/ws'; import {set} from 'lodash'; import {Pool, PoolClient} from 'pg'; import pinoLogger from 'pino-http'; import {makePluginHook} from 'postgraphile'; import {WebSocketServer} from 'ws'; import {Config} from '../configure'; import {queryExplainPlugin} from '../configure/x-postgraphile/debugClient'; import {getLogger, PinoConfig} from '../utils/logger'; import {getYargsOption} from '../yargs'; import {plugins} from './plugins'; import {PgSubscriptionPlugin} from './plugins/PgSubscriptionPlugin'; import {playgroundPlugin} from './plugins/PlaygroundPlugin'; import {queryAliasLimit} from './plugins/QueryAliasLimitPlugin'; import {queryComplexityPlugin} from './plugins/QueryComplexityPlugin'; import {queryDepthLimitPlugin} from './plugins/QueryDepthLimitPlugin'; import {ProjectService} from './project.service'; const {argv} = getYargsOption(); const logger = getLogger('graphql-module'); const SCHEMA_RETRY_INTERVAL = 10; //seconds const SCHEMA_RETRY_NUMBER = 5; const WS_ROUTE = '/'; class NoInitError extends Error { constructor() { super('GraphqlModule has not been initialized'); } } @Module({ providers: [ProjectService], }) export class GraphqlModule implements OnModuleInit, OnModuleDestroy { private _apolloServer?: ApolloServer; private wsCleanup?: ReturnType; constructor( private readonly httpAdapterHost: HttpAdapterHost, private readonly config: Config, private readonly pgPool: Pool, private readonly projectService: ProjectService ) {} private get apolloServer(): ApolloServer { assert(this._apolloServer, new NoInitError()); return this._apolloServer; } async onModuleInit(): Promise { if (!this.httpAdapterHost) { return; } try { this._apolloServer = await this.createServer(); } catch (e: any) { throw new Error(`create apollo server failed, ${e.message}`); } } async schemaListener(dbSchema: string, options: PostGraphileCoreOptions): Promise { // In order to apply hotSchema Reload without using apollo Gateway, must access the private method, hence the need to use set() try { const schema = await this.buildSchema(dbSchema, options); if (schema && !!(this.apolloServer as any)?.generateSchemaDerivedData) { const schemaDerivedData = await (this.apolloServer as any).generateSchemaDerivedData(schema); set(this.apolloServer, 'schema', schema); set(this.apolloServer, 'state.schemaManager.schemaDerivedData', schemaDerivedData); logger.info('Schema updated'); } } catch (e: any) { logger.error(e, `Failed to hot reload Schema`); process.exit(1); } } async onModuleDestroy(): Promise { await Promise.all([this.apolloServer?.stop(), this.wsCleanup?.dispose()]); } private async buildSchema( dbSchema: string, options: PostGraphileCoreOptions, retries = SCHEMA_RETRY_NUMBER ): Promise { if (retries > 0) { try { const builder = await getPostGraphileBuilder(this.pgPool, [dbSchema], options); const graphqlSchema = builder.buildSchema(); return graphqlSchema; } catch (e: any) { await delay(SCHEMA_RETRY_INTERVAL); if (retries === 1) { logger.error(e); } return this.buildSchema(dbSchema, options, --retries); } } else { throw new Error(`Failed to build schema ${dbSchema} ${SCHEMA_RETRY_NUMBER} times`); } } private setupKeepAlive(pgClient: PoolClient) { const interval = argv['sl-keep-alive-interval'] || 180000; logger.info(`Setup PG Pool keep alive. interval ${interval} ms`); setInterval(() => { void (async () => { try { await pgClient.query('SELECT 1'); } catch (err) { getLogger('db').error('Schema listener client keep-alive query failed: ', err); } })(); }, interval); } private async createServer() { const app = this.httpAdapterHost.httpAdapter.getInstance(); const httpServer = this.httpAdapterHost.httpAdapter.getHttpServer(); const schemaName = this.config.get('name'); if (!schemaName) throw new Error('Unable to get schema name from config'); const dbSchema = await this.projectService.getProjectSchema(schemaName); let options: PostGraphileCoreOptions = { replaceAllPlugins: plugins, subscriptions: true, dynamicJson: true, graphileBuildOptions: { connectionFilterRelations: false, // We use our own forked version with historical support // cockroach db does not support pgPartition pgUsePartitionedParent: true, }, }; if (argv.subscription) { const pluginHook = makePluginHook([PgPubSub]); // Must be called manually to init PgPubSub since we're using Apollo Server and not postgraphile options = pluginHook('postgraphile:options', options, {pgPool: this.pgPool}); options.replaceAllPlugins ??= []; options.appendPlugins ??= []; options.replaceAllPlugins.push(PgSubscriptionPlugin as Plugin); while (options.appendPlugins.length) { const replaceAllPlugin = options.appendPlugins.pop(); if (replaceAllPlugin) options.replaceAllPlugins.push(replaceAllPlugin); } } if (!argv['disable-hot-schema']) { try { const pgClient = await this.pgPool.connect(); await pgClient.query(`LISTEN "${hashName(dbSchema, 'schema_channel', '_metadata')}"`); // Set up a keep-alive interval to prevent the connection from being killed this.setupKeepAlive(pgClient); pgClient.on('error', (err: Error) => { getLogger('db').error('PostgreSQL schema listener client error: ', err); process.exit(1); }); pgClient.on('notification', (msg) => { if (msg.payload === 'schema_updated') { void this.schemaListener(dbSchema, options); } }); } catch (e) { logger.warn('Failed to init hot-schema reload', e); } } const schema = await this.buildSchema(dbSchema, options); const apolloServerPlugins = [ ApolloServerPluginCacheControl({ defaultMaxAge: 5, calculateHttpHeaders: true, }), this.config.get('playground') ? playgroundPlugin({url: '/', subscriptionUrl: argv.subscription ? WS_ROUTE : undefined}) : ApolloServerPluginLandingPageDisabled(), queryComplexityPlugin({schema, maxComplexity: argv['query-complexity']}), queryDepthLimitPlugin({schema, maxDepth: argv['query-depth-limit']}), queryAliasLimit({schema, limit: argv['query-alias-limit']}), ]; if (argv['query-explain']) { apolloServerPlugins.push(queryExplainPlugin(getLogger('explain'))); } const server = new ApolloServer({ schema, context: { pgClient: this.pgPool, }, plugins: apolloServerPlugins, debug: this.config.get('NODE_ENV') !== 'production', }); if (argv.subscription) { const wsServer = new WebSocketServer({ server: httpServer, path: WS_ROUTE, }); this.wsCleanup = useServer({schema, context: {pgClient: this.pgPool}}, wsServer); } app.use(pinoLogger(PinoConfig)); app.use(limitBatchedQueries); app.use(compression()); await server.start(); server.applyMiddleware({ app, path: '/', cors: true, }); return server; } } function limitBatchedQueries(req: Request, res: Response, next: NextFunction): void { const errors: UserInputError[] = []; if (argv['query-batch-limit'] && argv['query-batch-limit'] > 0) { if (req.method === 'POST') { try { const queries = req.body; if (Array.isArray(queries) && queries.length > argv['query-batch-limit']) { errors.push(new UserInputError('Batch query limit exceeded')); // eslint-disable-next-line @typescript-eslint/only-throw-error throw errors; } } catch (error: any) { res.status(500).json({errors: [...error]}); return next(error); } } } next(); } ================================================ FILE: packages/query/src/graphql/graphql.test.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import {getPostGraphileBuilder} from '@subql/x-postgraphile-core'; import {ApolloServer, gql} from 'apollo-server-express'; import {Pool} from 'pg'; import {Config} from '../configure'; import {plugins} from './plugins'; jest.mock('../yargs', () => { const actualModule = jest.requireActual('../yargs'); const getYargsOption = jest.fn(() => ({argv: {name: 'test', aggregate: true}})); const argv = (arg: string) => getYargsOption().argv[arg]; return { ...actualModule, getYargsOption, argv, }; }); describe('GraphqlModule', () => { const dbSchema = 'subquery_1'; const config = new Config({}); const pool: Pool = new Pool({ user: config.get('DB_USER'), password: config.get('DB_PASS'), host: config.get('DB_HOST_READ') ?? config.get('DB_HOST'), port: config.get('DB_PORT'), database: config.get('DB_DATABASE'), }); pool.on('error', (err) => { console.error('PostgreSQL client generated error: ', err.message); }); async function insertMetadata(key: string, value: string) { await pool.query(`INSERT INTO subquery_1._metadata( key, value, "createdAt", "updatedAt") VALUES ('${key}', '${value}', '2021-11-07 07:02:31.768+00', '2021-11-07 07:02:31.768+00');`); } async function createApolloServer() { const builder = await getPostGraphileBuilder(pool, [dbSchema], { replaceAllPlugins: plugins, subscriptions: true, dynamicJson: true, }); const schema = builder.buildSchema(); const server = new ApolloServer({ schema, context: { pgClient: pool, }, }); return server; } beforeEach(async () => { await pool.query(`CREATE SCHEMA IF NOT EXISTS ${dbSchema}`); await pool.query(`CREATE TABLE IF NOT EXISTS subquery_1._metadata ( key character varying(255) COLLATE pg_catalog."default" NOT NULL, value jsonb, "createdAt" timestamp with time zone NOT NULL, "updatedAt" timestamp with time zone NOT NULL, CONSTRAINT _metadata_pkey PRIMARY KEY (key) )`); await pool.query(`CREATE TABLE "${dbSchema}"."pool_snapshots" ( "id" text COLLATE "pg_catalog"."default" NOT NULL, "pool_id" text COLLATE "pg_catalog"."default" NOT NULL, "block_number" int4 NOT NULL, "total_reserve" numeric, CONSTRAINT "pool_snapshots_pkey" PRIMARY KEY ("id") )`); }); afterEach(async () => { await pool.query(`DROP TABLE "${dbSchema}"."pool_snapshots"`); await pool.query(`DROP TABLE subquery_1._metadata`); }); afterAll(async () => { await pool.end(); }); it('can query all metadata fields from database', async () => { await Promise.all([ insertMetadata('lastProcessedHeight', '398'), insertMetadata('lastProcessedTimestamp', '110101'), insertMetadata('targetHeight', '7595931'), insertMetadata('chain', `"Polkadot"`), insertMetadata('specName', `"polkadot"`), insertMetadata('genesisHash', `"0x91b171bb158e2d3848fa23a9f1c25182fb8e20313b2c1eb49219da7a70ce90c3"`), insertMetadata('indexerHealthy', 'true'), insertMetadata('indexerNodeVersion', `"0.21-0"`), ]); const server = await createApolloServer(); const GET_META = gql` query { _metadata { lastProcessedHeight lastProcessedTimestamp targetHeight chain specName genesisHash indexerHealthy indexerNodeVersion } } `; const mock = { lastProcessedHeight: 398, lastProcessedTimestamp: '110101', targetHeight: 7595931, chain: 'Polkadot', specName: 'polkadot', genesisHash: '0x91b171bb158e2d3848fa23a9f1c25182fb8e20313b2c1eb49219da7a70ce90c3', indexerHealthy: true, indexerNodeVersion: '0.21-0', }; const results = await server.executeOperation({query: GET_META}); const fetchedMeta = results.data?._metadata; expect(fetchedMeta).toMatchObject(mock); }); it('wont resolve fields that arent allowed metadata', async () => { await Promise.all([ insertMetadata('lastProcessedHeight', '398'), insertMetadata('chain', `"Polkadot"`), insertMetadata('indexerHealthy', 'true'), insertMetadata('fakeMetadata', 'true'), ]); const server = await createApolloServer(); const GET_META = gql` query { _metadata { lastProcessedHeight chain indexerHealthy fakeMetadata } } `; const results = await server.executeOperation({query: GET_META}); expect(`${results.errors}`).toEqual(`Cannot query field "fakeMetadata" on type "_Metadata".`); }); it('resolve incorrect fields in db to null when queried from graphql', async () => { await Promise.all([ insertMetadata('lastProcessedHeight', `"Polkadot"`), insertMetadata('chain', 'true'), insertMetadata('indexerHealthy', '20'), ]); const server = await createApolloServer(); const GET_META = gql` query { _metadata { lastProcessedHeight chain indexerHealthy } } `; const mock = { lastProcessedHeight: null, chain: null, indexerHealthy: null, }; const results = await server.executeOperation({query: GET_META}); const fetchedMeta = results.data?._metadata; expect(fetchedMeta).toMatchObject(mock); }); // sum(price_amount) it('AggregateSpecsPlugin support big number', async () => { await pool.query( `INSERT INTO "${dbSchema}"."pool_snapshots" ("id", "pool_id", "block_number", "total_reserve") VALUES ('1', '1', 1, '1')` ); await pool.query( `INSERT INTO "${dbSchema}"."pool_snapshots" ("id", "pool_id", "block_number", "total_reserve") VALUES ('2', '1', 1, '20000000000000000000000')` ); const server = await createApolloServer(); const GET_META = gql` query { poolSnapshots(first: 25) { nodes { totalReserve blockNumber } groupedAggregates(groupBy: []) { sum { totalReserve blockNumber } max { totalReserve blockNumber } min { totalReserve blockNumber } average { totalReserve blockNumber } } } } `; const results = await server.executeOperation({query: GET_META}); expect(results.data).toBeDefined(); const nodes = (results.data as any).poolSnapshots.nodes[0]; expect(nodes.blockNumber).toEqual(1); expect(nodes.totalReserve).toEqual('1'); const aggregate = (results.data as any).poolSnapshots.groupedAggregates[0]; expect(aggregate.average.totalReserve).toEqual('10000000000000000000001'); expect(aggregate.sum.totalReserve).toEqual('20000000000000000000001'); expect(aggregate.min.totalReserve).toEqual('1'); expect(aggregate.max.totalReserve).toEqual('20000000000000000000000'); }); // github issue #2387 : orderBy with orderByNull it('PgOrderByUnique plugin correctly orders NULL values using orderByNull param', async () => { await pool.query(` INSERT INTO "${dbSchema}"."pool_snapshots" ("id", "pool_id", "block_number", "total_reserve") VALUES ('1', '1', 15921, NULL), ('2', '2', 8743, NULL), ('3', '3', 87, '100'), ('4', '4', 13288, '200') `); const server = await createApolloServer(); // Query with orderBy desc and orderByNull (NULLS_LAST) const GET_SNAPSHOTS_NULLS_LAST = gql` query { poolSnapshots(orderBy: TOTAL_RESERVE_DESC, orderByNull: NULLS_LAST) { nodes { id totalReserve } } } `; const resultsOrderByNullsLast = await server.executeOperation({query: GET_SNAPSHOTS_NULLS_LAST}); expect(resultsOrderByNullsLast.errors).toBeUndefined(); const snapshotsNullsLast = resultsOrderByNullsLast.data?.poolSnapshots.nodes; // Verify that NULL values appear last expect(snapshotsNullsLast).toEqual([ {id: '4', totalReserve: '200'}, {id: '3', totalReserve: '100'}, {id: '1', totalReserve: null}, {id: '2', totalReserve: null}, ]); // Query with orderBy desc and orderByNull (NULLS_FIRST) const GET_SNAPSHOTS_NULLS_FIRST = gql` query { poolSnapshots(orderBy: TOTAL_RESERVE_DESC, orderByNull: NULLS_FIRST) { nodes { id totalReserve } } } `; const resultsOrderByNullsFirst = await server.executeOperation({query: GET_SNAPSHOTS_NULLS_FIRST}); expect(resultsOrderByNullsFirst.errors).toBeUndefined(); const snapshotsNullsFirst = resultsOrderByNullsFirst.data?.poolSnapshots.nodes; // Verify that NULL values appear first expect(snapshotsNullsFirst).toEqual([ {id: '1', totalReserve: null}, {id: '2', totalReserve: null}, {id: '4', totalReserve: '200'}, {id: '3', totalReserve: '100'}, ]); }); }); ================================================ FILE: packages/query/src/graphql/limit.test.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import {getPostGraphileBuilder} from '@subql/x-postgraphile-core'; import {ApolloServer, gql} from 'apollo-server-express'; import {Pool} from 'pg'; import {Config} from '../configure'; import {plugins} from './plugins'; jest.mock('../yargs', () => { return { argv: jest.fn((x) => { if (x === 'name') return 'test'; if (x === 'query-limit') return 100; }), }; }); describe('query limits', () => { const dbSchema = 'subquery_1'; const config = new Config({}); const pool = new Pool({ user: config.get('DB_USER'), password: config.get('DB_PASS'), host: config.get('DB_HOST_READ') ?? config.get('DB_HOST'), port: config.get('DB_PORT'), database: config.get('DB_DATABASE'), }); pool.on('error', (err) => { console.error('PostgreSQL client generated error: ', err.message); }); async function createApolloServer() { const builder = await getPostGraphileBuilder(pool, [dbSchema], { replaceAllPlugins: plugins, subscriptions: true, dynamicJson: true, }); const schema = builder.buildSchema(); return new ApolloServer({ schema, context: { pgClient: pool, }, }); } afterAll(async () => { await pool.end(); }); describe('entity limits', () => { async function insertPair(key: number, value: number) { await pool.query(`INSERT INTO subquery_1.table( key, value) VALUES ('${key}', '${value}');`); } beforeEach(async () => { await pool.query(`CREATE SCHEMA IF NOT EXISTS ${dbSchema}`); await pool.query(`CREATE TABLE IF NOT EXISTS subquery_1.table ( key INT, value INT )`); for (let i = 0; i < 200; i++) { await insertPair(i, i); } }); afterEach(async () => { await pool.query(`DROP TABLE subquery_1.table`); }); it('unbounded query clamped to safe bound', async () => { const LARGE_UNBOUND_QUERY = gql` query { tables { nodes { key value } } } `; const server = await createApolloServer(); const results = await server.executeOperation({query: LARGE_UNBOUND_QUERY}); expect(results.data?.tables.nodes.length).toEqual(100); }, 5000000); it('bounded unsafe query clamped to safe bound', async () => { const LARGE_BOUNDED_QUERY = gql` query { tables(first: 200) { nodes { key value } } } `; const server = await createApolloServer(); const results = await server.executeOperation({query: LARGE_BOUNDED_QUERY}); expect(results.data?.tables.nodes.length).toEqual(100); }); it('bounded safe query remains unchanged', async () => { const LARGE_BOUNDED_QUERY = gql` query { tables(first: 50) { nodes { key value } } } `; const server = await createApolloServer(); const results = await server.executeOperation({query: LARGE_BOUNDED_QUERY}); expect(results.data?.tables.nodes.length).toEqual(50); }); }); }); ================================================ FILE: packages/query/src/graphql/plugins/GetMetadataPlugin.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import {getMetadataTableName, MetaData, METADATA_REGEX, MULTI_METADATA_REGEX, TableEstimate} from '@subql/utils'; import {PgIntrospectionResultsByKind} from '@subql/x-graphile-build-pg'; import {Build} from '@subql/x-postgraphile-core'; import {makeExtendSchemaPlugin, gql} from 'graphile-utils'; import {FieldNode, SelectionNode} from 'graphql'; import {uniq} from 'lodash'; import {Client} from 'pg'; import {setAsyncInterval} from '../../utils/asyncInterval'; import {argv} from '../../yargs'; const {version: packageVersion} = require('../../../package.json'); const META_JSON_FIELDS = ['deployments']; const METADATA_TYPES = { lastProcessedHeight: 'number', lastProcessedBlockTimestamp: 'number', lastProcessedTimestamp: 'number', targetHeight: 'number', lastFinalizedVerifiedHeight: 'number', unfinalizedBlocks: 'string', chain: 'string', specName: 'string', genesisHash: 'string', indexerHealthy: 'boolean', indexerNodeVersion: 'string', queryNodeVersion: 'string', dynamicDatasources: 'object', startHeight: 'number', evmChainId: 'string', deployments: 'string', lastCreatedPoiHeight: 'number', latestSyncedPoiHeight: 'number', dbSize: 'string', historicalStateEnabled: 'string', }; const METADATA_KEYS = Object.keys(METADATA_TYPES); type MetaType = number | string | boolean; type MetaEntry = {key: string; value: MetaType}; type MetadatasConnection = { totalCount?: number; nodes?: MetaData[]; // edges?: any; // TODO }; const metaCache = { queryNodeVersion: packageVersion, } as MetaData; async function fetchFromApi(): Promise { let health: Response; let meta: Response; const indexerUrl = argv('indexer') as string | undefined; try { meta = await fetch(new URL(`meta`, indexerUrl)); const result = await meta.json(); Object.assign(metaCache, result); } catch (e: any) { metaCache.indexerHealthy = false; console.warn(`Failed to fetch indexer meta, `, e.message); } try { health = await fetch(new URL(`health`, indexerUrl)); metaCache.indexerHealthy = !!health.ok; } catch (e: any) { metaCache.indexerHealthy = false; console.warn(`Failed to fetch indexer health, `, e.message); } } function matchMetadataTableName(name: string): boolean { return METADATA_REGEX.test(name) || MULTI_METADATA_REGEX.test(name); } async function fetchMetadataFromTable( pgClient: Client, schemaName: string, tableName: string, useRowEst: boolean ): Promise { const {rows} = await pgClient.query(`select * from "${schemaName}".${tableName} WHERE key = ANY ($1)`, [ METADATA_KEYS, ]); const dbKeyValue = rows.reduce((array: MetaEntry[], curr: MetaEntry) => { array[curr.key] = curr.value; return array; }, {}) as {[key: string]: MetaType}; const metadata = {} as MetaData; for (const key in METADATA_TYPES) { if (typeof dbKeyValue[key] === METADATA_TYPES[key]) { //JSON object are stored in string type, filter here and parse if (META_JSON_FIELDS.includes(key)) { metadata[key] = JSON.parse(dbKeyValue[key].toString()); } else { metadata[key] = dbKeyValue[key]; } } } metadata.queryNodeVersion = packageVersion; if (useRowEst) { const tableEstimates = await pgClient .query( `select relname as table , reltuples::bigint as estimate from pg_class where relnamespace in (select oid from pg_namespace where nspname = $1) and relname in (select table_name from information_schema.tables where table_schema = $1)`, [schemaName] ) .catch((e) => { throw new Error(`Unable to estimate table row count: ${e}`); }); metadata.rowCountEstimate = tableEstimates.rows; } return metadata; } // Store default metadata name in table avoid query system table let defaultMetadataName: string; export async function fetchFromTable( pgClient: Client, schemaName: string, chainId: string | undefined, useRowEst: boolean ): Promise { let metadataTableName: string; if (!chainId) { // return first metadata entry you find. if (defaultMetadataName === undefined) { const {rows} = await pgClient.query( `SELECT table_name FROM information_schema.tables where table_schema='${schemaName}'` ); const {table_name} = rows.find((obj: {table_name: string}) => matchMetadataTableName(obj.table_name)); defaultMetadataName = table_name; } metadataTableName = defaultMetadataName; } else { metadataTableName = getMetadataTableName(chainId); } return fetchMetadataFromTable(pgClient, schemaName, metadataTableName, useRowEst); } function metadataTableSearch(build: Build): boolean { return !!(build.pgIntrospectionResultsByKind as PgIntrospectionResultsByKind).attribute.find((attr) => matchMetadataTableName(attr.class.name) ); } function isFieldNode(node: SelectionNode): node is FieldNode { return node.kind === 'Field'; } /* Recursively work down the AST to find a node with a matching path */ function findNodePath(nodes: readonly SelectionNode[], path: string[]): FieldNode | undefined { if (!path.length) { throw new Error('Path must have a length'); } const currentPath = path[0]; const found = nodes.find((node) => isFieldNode(node) && node.name.value === currentPath); if (found && isFieldNode(found)) { const newPath = path.slice(1); if (!newPath.length) return found; if (!found.selectionSet) return; return findNodePath(found.selectionSet.selections, newPath); } } export const GetMetadataPlugin = makeExtendSchemaPlugin((build: Build, options) => { const [schemaName] = options.pgSchemas; if (argv(`indexer`)) { setAsyncInterval(fetchFromApi, 10000); } return { typeDefs: gql` type TableEstimate { table: String estimate: Int } type _Metadata { lastProcessedHeight: Int lastProcessedTimestamp: Date targetHeight: Int chain: String specName: String genesisHash: String startHeight: Int indexerHealthy: Boolean indexerNodeVersion: String queryNodeVersion: String rowCountEstimate: [TableEstimate] dynamicDatasources: [JSON] evmChainId: String deployments: JSON lastFinalizedVerifiedHeight: Int unfinalizedBlocks: String lastCreatedPoiHeight: Int latestSyncedPoiHeight: Int dbSize: BigInt } type _MetadatasEdge { cursor: Cursor node: _Metadata } type _Metadatas { totalCount: Int! nodes: [_Metadata]! # edges: [_MetadatasEdge] } extend type Query { _metadata(chainId: String): _Metadata _metadatas( after: Cursor before: Cursor # distinct: [_mmr_distinct_enum] = null # filter: _MetadataFilter # first: Int # offset: Int # last: Int ): # orderBy: [_MetadatasOrderBy!] = [PRIMARY_KEY_ASC] _Metadatas } `, resolvers: { Query: { _metadata: async (_parentObject, args, context, info): Promise => { const tableExists = metadataTableSearch(build); if (tableExists) { let rowCountFound = false; if (info.fieldName === '_metadata') { rowCountFound = !!findNodePath(info.fieldNodes, ['_metadata', 'rowCountEstimate']); } const metadata = await fetchFromTable(context.pgClient, schemaName, args.chainId, rowCountFound); if (Object.keys(metadata).length > 0) { return metadata; } } if (argv(`indexer`)) { return metaCache; } return; }, _metadatas: async (_parentObject, args, context, info): Promise => { const tableNames = uniq( (build.pgIntrospectionResultsByKind as PgIntrospectionResultsByKind).attribute .filter((attr) => attr.class.namespaceName === schemaName && matchMetadataTableName(attr.class.name)) .map((attr) => attr.class.name) ); let totalCount = false; let rowCountEstimate = false; if (info.fieldName === '_metadatas') { totalCount = !!findNodePath(info.fieldNodes, ['_metadatas', 'totalCount']); rowCountEstimate = !!findNodePath(info.fieldNodes, ['_metadatas', 'nodes', 'rowCountEstimate']); } const metadatas = await Promise.all( tableNames.map((name) => fetchMetadataFromTable(context.pgClient, schemaName, name, rowCountEstimate)) ); return { totalCount: totalCount ? tableNames.length : undefined, nodes: metadatas, }; }, }, }, }; }); ================================================ FILE: packages/query/src/graphql/plugins/PgAggregateSpecsPlugin.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 // overwrite the official plugin: https://github.com/graphile/pg-aggregates/blob/main/src/AggregateSpecsPlugin.ts // Fixed the aggregate query, type conversion causes precision loss. const TIMESTAMP_OID = '1114'; const TIMESTAMPTZ_OID = '1184'; const SMALLINT_OID = '21'; const BIGINT_OID = '20'; const INTEGER_OID = '23'; const NUMERIC_OID = '1700'; const REAL_OID = '700'; const DOUBLE_PRECISION_OID = '701'; const INTERVAL_OID = '1186'; const MONEY_OID = '790'; const AggregateSpecsPlugin = (builder) => { builder.hook('build', (build) => { const {pgSql: sql} = build; const isNumberLike = (pgType) => pgType.category === 'N'; /** Maps from the data type of the column to the data type of the sum aggregate */ /** BigFloat is our fallback type; it should be valid for almost all numeric types */ const convertWithMapAndFallback = (dataTypeToAggregateTypeMap, fallback) => { return (pgType, _pgTypeModifier) => { const targetTypeId = dataTypeToAggregateTypeMap[pgType.id] || fallback; const targetType = build.pgIntrospectionResultsByKind.type.find((t) => t.id === targetTypeId); if (!targetType) { throw new Error(`Could not find PostgreSQL type with oid '${targetTypeId}' whilst processing aggregate.`); } return [targetType, null]; }; }; const pgAggregateSpecs = [ { id: 'sum', humanLabel: 'sum', HumanLabel: 'Sum', isSuitableType: isNumberLike, // I've wrapped it in `coalesce` so that it cannot be null // Subql fix: The ::text cast is to ensure that the result is a string, which is sqlAggregateWrap: (sqlFrag) => sql.fragment`coalesce(sum(${sqlFrag}), 0)::text`, isNonNull: true, // A SUM(...) often ends up significantly larger than any individual // value; see // https://www.postgresql.org/docs/current/functions-aggregate.html for // how the sum aggregate changes result type. pgTypeAndModifierModifier: convertWithMapAndFallback( { [SMALLINT_OID]: BIGINT_OID, [INTEGER_OID]: BIGINT_OID, [BIGINT_OID]: NUMERIC_OID, [REAL_OID]: REAL_OID, [DOUBLE_PRECISION_OID]: DOUBLE_PRECISION_OID, [INTERVAL_OID]: INTERVAL_OID, [MONEY_OID]: MONEY_OID, }, NUMERIC_OID /* numeric */ ), }, { id: 'distinctCount', humanLabel: 'distinct count', HumanLabel: 'Distinct count', isSuitableType: () => true, sqlAggregateWrap: (sqlFrag) => sql.fragment`count(distinct ${sqlFrag})`, pgTypeAndModifierModifier: convertWithMapAndFallback({}, BIGINT_OID /* always use bigint */), }, { id: 'min', humanLabel: 'minimum', HumanLabel: 'Minimum', isSuitableType: isNumberLike, // Subql fix: The ::text cast is to ensure that the result is a string, which is sqlAggregateWrap: (sqlFrag) => sql.fragment`min(${sqlFrag})::text`, }, { id: 'max', humanLabel: 'maximum', HumanLabel: 'Maximum', isSuitableType: isNumberLike, // Subql fix: The ::text cast is to ensure that the result is a string, which is sqlAggregateWrap: (sqlFrag) => sql.fragment`max(${sqlFrag})::text`, }, { id: 'average', humanLabel: 'mean average', HumanLabel: 'Mean average', isSuitableType: isNumberLike, // Subql fix: The ::text cast is to ensure that the result is a string, which is sqlAggregateWrap: (sqlFrag) => sql.fragment`avg(${sqlFrag})::text`, // An AVG(...) ends up more precise than any individual value; see // https://www.postgresql.org/docs/current/functions-aggregate.html for // how the avg aggregate changes result type. pgTypeAndModifierModifier: convertWithMapAndFallback( { [SMALLINT_OID]: NUMERIC_OID, [INTEGER_OID]: NUMERIC_OID, [BIGINT_OID]: NUMERIC_OID, [NUMERIC_OID]: NUMERIC_OID, [REAL_OID]: DOUBLE_PRECISION_OID, [DOUBLE_PRECISION_OID]: DOUBLE_PRECISION_OID, [INTERVAL_OID]: INTERVAL_OID, }, '1700' /* numeric */ ), }, { id: 'stddevSample', humanLabel: 'sample standard deviation', HumanLabel: 'Sample standard deviation', isSuitableType: isNumberLike, sqlAggregateWrap: (sqlFrag) => sql.fragment`stddev_samp(${sqlFrag})`, // See https://www.postgresql.org/docs/current/functions-aggregate.html // for how this aggregate changes result type. pgTypeAndModifierModifier: convertWithMapAndFallback( { [REAL_OID]: DOUBLE_PRECISION_OID, [DOUBLE_PRECISION_OID]: DOUBLE_PRECISION_OID, }, NUMERIC_OID /* numeric */ ), }, { id: 'stddevPopulation', humanLabel: 'population standard deviation', HumanLabel: 'Population standard deviation', isSuitableType: isNumberLike, sqlAggregateWrap: (sqlFrag) => sql.fragment`stddev_pop(${sqlFrag})`, // See https://www.postgresql.org/docs/current/functions-aggregate.html // for how this aggregate changes result type. pgTypeAndModifierModifier: convertWithMapAndFallback( { [REAL_OID]: DOUBLE_PRECISION_OID, [DOUBLE_PRECISION_OID]: DOUBLE_PRECISION_OID, }, NUMERIC_OID /* numeric */ ), }, { id: 'varianceSample', humanLabel: 'sample variance', HumanLabel: 'Sample variance', isSuitableType: isNumberLike, sqlAggregateWrap: (sqlFrag) => sql.fragment`var_samp(${sqlFrag})`, // See https://www.postgresql.org/docs/current/functions-aggregate.html // for how this aggregate changes result type. pgTypeAndModifierModifier: convertWithMapAndFallback( { [REAL_OID]: DOUBLE_PRECISION_OID, [DOUBLE_PRECISION_OID]: DOUBLE_PRECISION_OID, }, NUMERIC_OID /* numeric */ ), }, { id: 'variancePopulation', humanLabel: 'population variance', HumanLabel: 'Population variance', isSuitableType: isNumberLike, sqlAggregateWrap: (sqlFrag) => sql.fragment`var_pop(${sqlFrag})`, // See https://www.postgresql.org/docs/current/functions-aggregate.html // for how this aggregate changes result type. pgTypeAndModifierModifier: convertWithMapAndFallback( { [REAL_OID]: DOUBLE_PRECISION_OID, [DOUBLE_PRECISION_OID]: DOUBLE_PRECISION_OID, }, NUMERIC_OID /* numeric */ ), }, ]; const pgAggregateGroupBySpecs = [ { id: 'truncated-to-hour', isSuitableType: (pgType) => /* timestamp or timestamptz */ pgType.id === TIMESTAMP_OID || pgType.id === TIMESTAMPTZ_OID, sqlWrap: (sqlFrag) => sql.fragment`date_trunc('hour', ${sqlFrag})`, }, { id: 'truncated-to-day', isSuitableType: (pgType) => /* timestamp or timestamptz */ pgType.id === TIMESTAMP_OID || pgType.id === TIMESTAMPTZ_OID, sqlWrap: (sqlFrag) => sql.fragment`date_trunc('day', ${sqlFrag})`, }, ]; return build.extend(build, { pgAggregateSpecs, pgAggregateGroupBySpecs, }); }); }; export default AggregateSpecsPlugin; //# sourceMappingURL=AggregateSpecsPlugin.js.map ================================================ FILE: packages/query/src/graphql/plugins/PgAggregationPlugin.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import AddAggregateTypesPlugin from '@graphile/pg-aggregates/dist/AddAggregateTypesPlugin'; import AddConnectionAggregatesPlugin from '@graphile/pg-aggregates/dist/AddConnectionAggregatesPlugin'; import AddConnectionGroupedAggregatesPlugin from '@graphile/pg-aggregates/dist/AddConnectionGroupedAggregatesPlugin'; import AddGroupByAggregateEnumsPlugin from '@graphile/pg-aggregates/dist/AddGroupByAggregateEnumsPlugin'; import AddGroupByAggregateEnumValuesForColumnsPlugin from '@graphile/pg-aggregates/dist/AddGroupByAggregateEnumValuesForColumnsPlugin'; import AddHavingAggregateTypesPlugin from '@graphile/pg-aggregates/dist/AddHavingAggregateTypesPlugin'; import FilterRelationalAggregatesPlugin from '@graphile/pg-aggregates/dist/FilterRelationalAggregatesPlugin'; import InflectionPlugin from '@graphile/pg-aggregates/dist/InflectionPlugin'; import {AggregateSpec, AggregateGroupBySpec} from '@graphile/pg-aggregates/dist/interfaces'; import type {Plugin} from 'graphile-build'; import {makePluginByCombiningPlugins} from 'graphile-utils'; import {argv} from '../../yargs'; import AggregateSpecsPlugin from './PgAggregateSpecsPlugin'; import OrderByAggregatesPlugin from './PgOrderByAggregatesPlugin'; const aggregate = argv('aggregate') as boolean; // overwrite the official plugin: https://github.com/graphile/pg-aggregates/blob/main/src/AggregateSpecsPlugin.ts // Removes all aggregation functions when not using --aggregate flag. const AggregateSpecsPluginSafe: Plugin = (builder) => { builder.hook('build', (build) => { const pgAggregateSpecs: AggregateSpec[] = []; const pgAggregateGroupBySpecs: AggregateGroupBySpec[] = []; return build.extend(build, { pgAggregateSpecs, pgAggregateGroupBySpecs, }); }); }; const plugins = [ InflectionPlugin, AddGroupByAggregateEnumsPlugin, AddGroupByAggregateEnumValuesForColumnsPlugin, AddHavingAggregateTypesPlugin, AddAggregateTypesPlugin, AddConnectionAggregatesPlugin, AddConnectionGroupedAggregatesPlugin, OrderByAggregatesPlugin, FilterRelationalAggregatesPlugin, ]; let PgAggregationPlugin: Plugin; if (aggregate) { PgAggregationPlugin = makePluginByCombiningPlugins(...plugins, AggregateSpecsPlugin); } else { PgAggregationPlugin = makePluginByCombiningPlugins(...plugins, AggregateSpecsPluginSafe); } export default PgAggregationPlugin; ================================================ FILE: packages/query/src/graphql/plugins/PgBackwardRelationPlugin.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 // overwrite the official plugin: https://github.com/graphile/graphile-engine/blob/v4/packages/graphile-build-pg/src/plugins/PgBackwardRelationPlugin.js // fix the one to one relationship unique key check import debugFactory from 'debug'; const debug = debugFactory('@subql/x-graphile-build-pg'); const OMIT = 0; const DEPRECATED = 1; const ONLY = 2; export default function (builder, {pgLegacyRelations, pgSimpleCollections, subscriptions}) { const legacyRelationMode = { only: ONLY, deprecated: DEPRECATED, }[pgLegacyRelations] || OMIT; builder.hook( 'GraphQLObjectType:fields', (fields, build, context) => { const { describePgEntity, extend, getSafeAliasFromAlias, getSafeAliasFromResolveInfo, getTypeByName, graphql: {GraphQLList, GraphQLNonNull}, inflection, pgAddStartEndCursor: addStartEndCursor, pgGetGqlTypeByTypeIdAndModifier, pgIntrospectionResultsByKind: introspectionResultsByKind, pgOmit: omit, pgQueryFromResolveData: queryFromResolveData, pgSql: sql, sqlCommentByAddingTags, } = build; const { Self, fieldWithHooks, scope: {isPgRowType, pgIntrospection: foreignTable}, } = context; if (!isPgRowType || !foreignTable || foreignTable.kind !== 'class') { return fields; } // This is a relation in which WE are foreign const foreignKeyConstraints = foreignTable.foreignConstraints.filter((con) => con.type === 'f'); const foreignTableTypeName = inflection.tableType(foreignTable); const gqlForeignTableType = pgGetGqlTypeByTypeIdAndModifier(foreignTable.type.id, null); if (!gqlForeignTableType) { debug(`Could not determine type for foreign table with id ${foreignTable.type.id}`); return fields; } return extend( fields, // eslint-disable-next-line complexity foreignKeyConstraints.reduce((memo, constraint) => { if (omit(constraint, 'read')) { return memo; } const table = introspectionResultsByKind.classById[constraint.classId]; if (!table) { throw new Error(`Could not find the table that referenced us (constraint: ${constraint.name})`); } if (!table.isSelectable) { // Could be a composite type return memo; } const tableTypeName = inflection.tableType(table); const gqlTableType = pgGetGqlTypeByTypeIdAndModifier(table.type.id, null); if (!gqlTableType) { debug(`Could not determine type for table with id ${constraint.classId}`); return memo; } const schema = table.namespace; const keys = constraint.keyAttributes; const foreignKeys = constraint.foreignKeyAttributes; if (!keys.every((_) => _) || !foreignKeys.every((_) => _)) { throw new Error('Could not find key columns!'); } if (keys.some((key) => omit(key, 'read'))) { return memo; } if (foreignKeys.some((key) => omit(key, 'read'))) { return memo; } const isUnique = !!table.constraints.find( (c) => (c.type === 'p' || c.type === 'f') && c.keyAttributeNums.length === keys.length && c.keyAttributeNums.every((n, i) => keys[i].num === n && keys[i].isUnique) ); const isDeprecated = isUnique && legacyRelationMode === DEPRECATED; const singleRelationFieldName = isUnique ? inflection.singleRelationByKeysBackwards(keys, table, foreignTable, constraint) : null; const primaryKeyConstraint = table.primaryKeyConstraint; const primaryKeys = primaryKeyConstraint && primaryKeyConstraint.keyAttributes; const shouldAddSingleRelation = isUnique && legacyRelationMode !== ONLY; const shouldAddManyRelation = !isUnique || legacyRelationMode === DEPRECATED || legacyRelationMode === ONLY; if (shouldAddSingleRelation && !omit(table, 'read') && singleRelationFieldName) { memo = extend( memo, { [singleRelationFieldName]: fieldWithHooks( singleRelationFieldName, ({addDataGenerator, getDataFromParsedResolveInfoFragment}) => { const sqlFrom = sql.identifier(schema.name, table.name); addDataGenerator((parsedResolveInfoFragment) => { return { pgQuery: (queryBuilder) => { queryBuilder.select(() => { const resolveData = getDataFromParsedResolveInfoFragment( parsedResolveInfoFragment, gqlTableType ); const tableAlias = sql.identifier(Symbol()); const foreignTableAlias = queryBuilder.getTableAlias(); const query = queryFromResolveData( sqlFrom, tableAlias, resolveData, { useAsterisk: false, // Because it's only a single relation, no need asJson: true, addNullCase: true, withPagination: false, }, (innerQueryBuilder) => { innerQueryBuilder.parentQueryBuilder = queryBuilder; if (subscriptions && table.primaryKeyConstraint) { innerQueryBuilder.selectIdentifiers(table); innerQueryBuilder.makeLiveCollection(table); innerQueryBuilder.addLiveCondition( (data) => (record) => { return keys.every((key) => record[key.name] === data[key.name]); }, keys.reduce((memo, key, i) => { memo[key.name] = sql.fragment`${foreignTableAlias}.${sql.identifier( foreignKeys[i].name )}`; return memo; }, {}) ); } keys.forEach((key, i) => { innerQueryBuilder.where( sql.fragment`${tableAlias}.${sql.identifier( key.name )} = ${foreignTableAlias}.${sql.identifier(foreignKeys[i].name)}` ); }); }, queryBuilder.context, queryBuilder.rootValue ); return sql.fragment`(${query})`; }, getSafeAliasFromAlias(parsedResolveInfoFragment.alias)); }, }; }); return { description: constraint.tags.backwardDescription || build.wrapDescription( `Reads a single \`${tableTypeName}\` that is related to this \`${foreignTableTypeName}\`.`, 'field' ), type: gqlTableType, args: {}, resolve: (data, _args, resolveContext, resolveInfo) => { const safeAlias = getSafeAliasFromResolveInfo(resolveInfo); const record = data[safeAlias]; const liveRecord = resolveInfo.rootValue && resolveInfo.rootValue.liveRecord; const liveCollection = resolveInfo.rootValue && resolveInfo.rootValue.liveCollection; const liveConditions = resolveInfo.rootValue && resolveInfo.rootValue.liveConditions; if (subscriptions && liveCollection && liveConditions && data.__live) { const {__id, ...rest} = data.__live; const condition = liveConditions[__id]; const checker = condition(rest); liveCollection('pg', table, checker); } if (record && liveRecord) { liveRecord('pg', table, record.__identifiers); } return record; }, }; }, { pgFieldIntrospection: table, isPgBackwardSingleRelationField: true, } ), }, `Backward relation (single) for ${describePgEntity( constraint )}. To rename this relation with a 'Smart Comment':\n\n ${sqlCommentByAddingTags(constraint, { foreignSingleFieldName: 'newNameHere', })}` ); } function makeFields(isConnection) { const manyRelationFieldName = isConnection ? inflection.manyRelationByKeys(keys, table, foreignTable, constraint) : inflection.manyRelationByKeysSimple(keys, table, foreignTable, constraint); memo = extend( memo, { [manyRelationFieldName]: fieldWithHooks( manyRelationFieldName, ({addDataGenerator, getDataFromParsedResolveInfoFragment}) => { const sqlFrom = sql.identifier(schema.name, table.name); const queryOptions = { useAsterisk: table.canUseAsterisk, withPagination: isConnection, withPaginationAsFields: false, asJsonAggregate: !isConnection, }; addDataGenerator((parsedResolveInfoFragment) => { return { pgQuery: (queryBuilder) => { queryBuilder.select(() => { const resolveData = getDataFromParsedResolveInfoFragment( parsedResolveInfoFragment, isConnection ? ConnectionType : TableType ); const tableAlias = sql.identifier(Symbol()); const foreignTableAlias = queryBuilder.getTableAlias(); const query = queryFromResolveData( sqlFrom, tableAlias, resolveData, queryOptions, (innerQueryBuilder) => { innerQueryBuilder.parentQueryBuilder = queryBuilder; if (subscriptions) { innerQueryBuilder.makeLiveCollection(table); innerQueryBuilder.addLiveCondition( (data) => (record) => { return keys.every((key) => record[key.name] === data[key.name]); }, keys.reduce((memo, key, i) => { memo[key.name] = sql.fragment`${foreignTableAlias}.${sql.identifier( foreignKeys[i].name )}`; return memo; }, {}) ); } if (primaryKeys) { if (subscriptions && !isConnection && table.primaryKeyConstraint) { innerQueryBuilder.selectIdentifiers(table); } innerQueryBuilder.beforeLock('orderBy', () => { // append order by primary key to the list of orders if (!innerQueryBuilder.isOrderUnique(false)) { innerQueryBuilder.data.cursorPrefix = ['primary_key_asc']; primaryKeys.forEach((key) => { innerQueryBuilder.orderBy( sql.fragment`${innerQueryBuilder.getTableAlias()}.${sql.identifier( key.name )}`, true ); }); innerQueryBuilder.setOrderIsUnique(); } }); } keys.forEach((key, i) => { innerQueryBuilder.where( sql.fragment`${tableAlias}.${sql.identifier( key.name )} = ${foreignTableAlias}.${sql.identifier(foreignKeys[i].name)}` ); }); }, queryBuilder.context, queryBuilder.rootValue ); return sql.fragment`(${query})`; }, getSafeAliasFromAlias(parsedResolveInfoFragment.alias)); }, }; }); const ConnectionType = getTypeByName(inflection.connection(gqlTableType.name)); const TableType = pgGetGqlTypeByTypeIdAndModifier(table.type.id, null); return { description: constraint.tags.backwardDescription || build.wrapDescription( `Reads and enables pagination through a set of \`${tableTypeName}\`.`, 'field' ), type: isConnection ? new GraphQLNonNull(ConnectionType) : new GraphQLNonNull(new GraphQLList(new GraphQLNonNull(TableType))), args: {}, resolve: (data, _args, resolveContext, resolveInfo) => { const safeAlias = getSafeAliasFromResolveInfo(resolveInfo); const liveCollection = resolveInfo.rootValue && resolveInfo.rootValue.liveCollection; const liveConditions = resolveInfo.rootValue && resolveInfo.rootValue.liveConditions; if (subscriptions && liveCollection && liveConditions && data.__live) { const {__id, ...rest} = data.__live; const condition = liveConditions[__id]; const checker = condition(rest); liveCollection('pg', table, checker); } if (isConnection) { return addStartEndCursor(data[safeAlias]); } else { const records = data[safeAlias]; const liveRecord = resolveInfo.rootValue && resolveInfo.rootValue.liveRecord; if (primaryKeys && subscriptions && liveRecord) { records.forEach((r) => r && r.__identifiers && liveRecord('pg', table, r.__identifiers)); } return records; } }, ...(isDeprecated ? { deprecationReason: singleRelationFieldName ? `Please use ${singleRelationFieldName} instead` : `Please use singular instead`, // This should never happen } : null), }; }, { isPgFieldConnection: isConnection, isPgFieldSimpleCollection: !isConnection, isPgBackwardRelationField: true, pgFieldIntrospection: table, } ), }, `Backward relation (${isConnection ? 'connection' : 'simple collection'}) for ${describePgEntity( constraint )}. To rename this relation with a 'Smart Comment':\n\n ${sqlCommentByAddingTags(constraint, { [isConnection ? 'foreignFieldName' : 'foreignSimpleFieldName']: 'newNameHere', })}` ); } if (shouldAddManyRelation && !omit(table, 'many') && !omit(constraint, 'many')) { const simpleCollections = constraint.tags.simpleCollections || table.tags.simpleCollections || pgSimpleCollections; const hasConnections = simpleCollections !== 'only'; const hasSimpleCollections = simpleCollections === 'only' || simpleCollections === 'both'; if (hasConnections) { makeFields(true); } if ( hasSimpleCollections && !isUnique // if unique, use the singular instead ) { makeFields(false); } } return memo; }, {}), `Adding backward relations for ${Self.name}` ); }, ['PgBackwardRelation'] ); } ================================================ FILE: packages/query/src/graphql/plugins/PgConnectionArgFirstLastBeforeAfter.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 // overwrite the official plugin: https://github.com/graphile/graphile-engine/blob/v4/packages/graphile-build-pg/src/plugins/PgConnectionArgFirstLastBeforeAfter.js // to support max record rewrite, which to prevent the db performance issue. import {QueryBuilder} from '@subql/x-graphile-build-pg'; import {argv} from '../../yargs'; const base64Decode = (str) => Buffer.from(String(str), 'base64').toString('utf8'); export default (builder) => { builder.hook( 'GraphQLObjectType:fields:field:args', (args, build, context) => { const { extend, getTypeByName, graphql: {GraphQLInt}, } = build; const { Self, addArgDataGenerator, scope: {fieldName, isPgFieldConnection, isPgFieldSimpleCollection, pgFieldIntrospection: source}, } = context; const unsafe = argv('unsafe') as boolean; const safeClamp = (x: number) => Math.min(x, argv('query-limit') as number); if ( !(isPgFieldConnection || isPgFieldSimpleCollection) || !source || (source.kind !== 'class' && source.kind !== 'procedure') ) { return args; } const Cursor = getTypeByName('Cursor'); addArgDataGenerator(function connectionFirstLastBeforeAfter({after, before, first, last, offset}) { return { pgQuery: (queryBuilder: QueryBuilder) => { if (!first && !last && !unsafe) { queryBuilder.first(argv('query-limit') as number); } if (first) { first = safeClamp(first); queryBuilder.first(first); } if (offset) { queryBuilder.offset(offset); } if (isPgFieldConnection) { if (after) { addCursorConstraint(after, true); } if (before) { addCursorConstraint(before, false); } if (last) { if (first) { throw new Error("We don't support setting both first and last"); } if (offset) { throw new Error("We don't support setting both offset and last"); } last = safeClamp(last); queryBuilder.last(last); } } function addCursorConstraint(cursor, isAfter) { try { const cursorValues = JSON.parse(base64Decode(cursor)); return queryBuilder.addCursorCondition(cursorValues, isAfter); } catch (e) { throw new Error('Invalid cursor, please enter a cursor from a previous request, or null.'); } } }, }; }); return extend( args, { first: { description: build.wrapDescription('Only read the first `n` values of the set.', 'arg'), type: GraphQLInt, }, ...(isPgFieldConnection ? { last: { description: build.wrapDescription('Only read the last `n` values of the set.', 'arg'), type: GraphQLInt, }, } : null), offset: { description: build.wrapDescription( isPgFieldConnection ? 'Skip the first `n` values from our `after` cursor, an alternative to cursor based pagination. May not be used with `last`.' : 'Skip the first `n` values.', 'arg' ), type: GraphQLInt, }, ...(isPgFieldConnection ? { before: { description: build.wrapDescription('Read all values in the set before (above) this cursor.', 'arg'), type: Cursor, }, after: { description: build.wrapDescription('Read all values in the set after (below) this cursor.', 'arg'), type: Cursor, }, } : null), }, isPgFieldConnection ? `Adding connection pagination args to field '${fieldName}' of '${Self.name}'` : `Adding simple collection args to field '${fieldName}' of '${Self.name}'` ); }, ['PgConnectionArgFirstLastBeforeAfter'] ); }; ================================================ FILE: packages/query/src/graphql/plugins/PgDistinctPlugin.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import {PgClass, QueryBuilder} from '@subql/x-graphile-build-pg'; import {Build, Plugin} from 'graphile-build'; import type {GraphQLEnumType} from 'graphql'; import * as PgSql from 'pg-sql2'; import {SQLNode} from 'pg-sql2'; import {argv} from '../../yargs'; type Extend = (base: T1, extra: T2, hint?: string) => T1 & T2; const getEnumName = (entityName: string): string => { return `${entityName}_distinct_enum`; }; export const PgDistinctPlugin: Plugin = (builder) => { // Creates enums for each entity based on their fields builder.hook( 'init', (args, build) => { const { graphql: {GraphQLEnumType}, newWithHooks, pgIntrospectionResultsByKind, } = build; pgIntrospectionResultsByKind.class.forEach((cls: PgClass) => { if (!cls.isSelectable || build.pgOmit(cls, 'order')) return; if (!cls.namespace) return; const enumTypeName = getEnumName(cls.name); const entityEnumValues: Record = {}; cls?.attributes?.forEach((attr, index) => { if (attr.name.indexOf('_') !== 0) { entityEnumValues[attr.name.toUpperCase()] = {value: index}; } }); newWithHooks( GraphQLEnumType, { name: enumTypeName, values: entityEnumValues, }, { __origin: `Adding connection "distinct" enum type for ${cls.name}.`, pgIntrospection: cls, }, true ); }); return args; }, ['AddDistinctEnumsPlugin'] ); // Extends schema and modifies the query builder.hook( 'GraphQLObjectType:fields:field:args', (args, build, {addArgDataGenerator, scope: {pgFieldIntrospection}}) => { const { extend, graphql: {GraphQLList}, pgSql: sql, } = build as Build & {extend: Extend; pgSql: typeof PgSql}; const enumTypeName = getEnumName(pgFieldIntrospection?.name); const enumType = build.getTypeByName(enumTypeName) as GraphQLEnumType; if (!enumType) { return args; } addArgDataGenerator(({distinct}) => ({ pgQuery: (queryBuilder: QueryBuilder) => { distinct?.map((field: number) => { const {name} = enumType.getValues()[field]; const fieldName = name.toLowerCase(); if (!pgFieldIntrospection?.attributes?.map((a) => a.name).includes(fieldName)) { console.warn(`Distinct field ${fieldName} doesn't exist on entity ${pgFieldIntrospection?.name}`); return; } //export declare type SQL = SQLNode | SQLQuery; const id = sql.fragment`${queryBuilder.getTableAlias() as unknown as SQLNode}.${sql.identifier(fieldName)}`; // Dependent on https://github.com/graphile/graphile-engine/pull/805 (queryBuilder as any).distinctOn(id); // set BlockHeight as orderBy key, as by default it uses primaryKey (This will speed up the query speed of dictionaries) if (argv('dictionary-optimisation')) { queryBuilder.setOrderIsUnique(); } }); }, })); return extend( args, { distinct: { description: 'Fields to be distinct', defaultValue: null, type: new GraphQLList(enumType), }, }, 'DistinctPlugin' ); } ); }; ================================================ FILE: packages/query/src/graphql/plugins/PgOrderByAggregatesPlugin.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 /* WARNING * This is a fork of https://github.com/graphile/pg-aggregates/blob/c8dd0f951663d5dacde21da26f3b94b62dc296c5/src/OrderByAggregatesPlugin.ts * The only modification is to filter out `_id` and `_block_height` attributes to fix a naming conflict */ import {AggregateSpec} from '@graphile/pg-aggregates/dist/interfaces'; import type {SQL, QueryBuilder, PgClass, PgEntity} from '@subql/x-graphile-build-pg'; import type {Plugin} from 'graphile-build'; import {hasBlockRange, makeRangeQuery} from './historical/utils'; type OrderBySpecIdentity = string | SQL | ((options: {queryBuilder: QueryBuilder}) => SQL); type OrderSpec = [OrderBySpecIdentity, boolean] | [OrderBySpecIdentity, boolean, boolean]; export interface OrderSpecs { [orderByEnumValue: string]: { value: { alias?: string; specs: Array; unique: boolean; }; }; } const OrderByAggregatesPlugin: Plugin = (builder) => { builder.hook('GraphQLEnumType:values', (values, build, context) => { const { extend, inflection, pgIntrospectionResultsByKind: introspectionResultsByKind, pgOmit: omit, pgSql: sql, } = build; const pgAggregateSpecs: AggregateSpec[] = build.pgAggregateSpecs; const { scope: {isPgRowSortEnum}, } = context; const pgIntrospection: PgEntity | undefined = context.scope.pgIntrospection; if (!isPgRowSortEnum || !pgIntrospection || pgIntrospection.kind !== 'class') { return values; } const foreignTable: PgClass = pgIntrospection; const foreignKeyConstraints = foreignTable.foreignConstraints.filter((con) => con.type === 'f'); const newValues = foreignKeyConstraints.reduce((memo, constraint) => { if (omit(constraint, 'read')) { return memo; } const table: PgClass | undefined = introspectionResultsByKind.classById[constraint.classId]; if (!table) { throw new Error(`Could not find the table that referenced us (constraint: ${constraint.name})`); } const keys = constraint.keyAttributes; const foreignKeys = constraint.foreignKeyAttributes; if (!keys.every((_) => _) || !foreignKeys.every((_) => _)) { throw new Error('Could not find key columns!'); } if (keys.some((key) => omit(key, 'read'))) { return memo; } if (foreignKeys.some((key) => omit(key, 'read'))) { return memo; } const isUnique = !!table.constraints.find( (c) => (c.type === 'p' || c.type === 'u') && c.keyAttributeNums.length === keys.length && c.keyAttributeNums.every((n, i) => keys[i].num === n) ); if (isUnique) { // No point aggregating over a relation that's unique return memo; } const tableAlias = sql.identifier(Symbol(`${foreignTable.namespaceName}.${foreignTable.name}`)); const supportsHistorical = hasBlockRange(pgIntrospection); const buildConditions = (queryBuilder: QueryBuilder): SQL[] => { const foreignTableAlias = queryBuilder.getTableAlias(); const conditions: SQL[] = []; keys.forEach((key, i) => { conditions.push( sql.fragment`${tableAlias}.${sql.identifier(key.name)} = ${foreignTableAlias}.${sql.identifier( foreignKeys[i].name )}` ); }); if (queryBuilder.context.args?.blockHeight && supportsHistorical) { conditions.push(makeRangeQuery(tableAlias, queryBuilder.context.args.blockHeight, sql)); } return conditions; }; // Add count memo = build.extend( memo, orderByAscDesc( inflection.orderByCountOfManyRelationByKeys(keys, table, foreignTable, constraint), ({queryBuilder}) => { const conditions = buildConditions(queryBuilder); return sql.fragment`(select count(*) from ${sql.identifier( table.namespaceName, table.name )} ${tableAlias} where (${sql.join(conditions, ' AND ')}))`; }, false ), `Adding orderBy count to '${foreignTable.namespaceName}.${foreignTable.name}' using constraint '${constraint.name}'` ); // Filter out attributes relating to historical. This was causing conflicts with `id` and `_id` const attributes = table.attributes.filter((attr) => attr.name !== '_id' && attr.name !== '_block_height'); // Add other aggregates pgAggregateSpecs.forEach((spec) => { attributes.forEach((attr) => { memo = build.extend( memo, orderByAscDesc( inflection.orderByColumnAggregateOfManyRelationByKeys(keys, table, foreignTable, constraint, spec, attr), ({queryBuilder}) => { const conditions = buildConditions(queryBuilder); return sql.fragment`(select ${spec.sqlAggregateWrap( sql.fragment`${tableAlias}.${sql.identifier(attr.name)}` )} from ${sql.identifier(table.namespaceName, table.name)} ${tableAlias} where (${sql.join( conditions, ' AND ' )}))`; }, false ), `Adding orderBy ${spec.id} of '${attr.name}' to '${foreignTable.namespaceName}.${foreignTable.name}' using constraint '${constraint.name}'` ); }); }); return memo; }, {} as OrderSpecs); return extend(values, newValues, `Adding aggregate orders to '${foreignTable.namespaceName}.${foreignTable.name}'`); }); }; export function orderByAscDesc(baseName: string, columnOrSqlFragment: OrderBySpecIdentity, unique = false): OrderSpecs { return { [`${baseName}_ASC`]: { value: { alias: `${baseName}_ASC`, specs: [[columnOrSqlFragment, true]], unique, }, }, [`${baseName}_DESC`]: { value: { alias: `${baseName}_DESC`, specs: [[columnOrSqlFragment, false]], unique, }, }, }; } export default OrderByAggregatesPlugin; ================================================ FILE: packages/query/src/graphql/plugins/PgOrderByUnique.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import {PgClass} from '@subql/x-graphile-build-pg'; import {Plugin} from 'graphile-build'; import {GraphQLEnumType} from 'graphql'; import isString from 'lodash/isString'; import * as PgSql from 'pg-sql2'; import {argv} from '../../yargs'; const PgConnectionArgOrderBy: Plugin = (builder, {orderByNullsLast}) => { builder.hook( 'init', (_, build) => { const { describePgEntity, graphql: {GraphQLEnumType}, inflection, newWithHooks, pgIntrospectionResultsByKind: introspectionResultsByKind, pgOmit: omit, sqlCommentByAddingTags, } = build; introspectionResultsByKind.class.forEach((table: PgClass) => { // PERFORMANCE: These used to be .filter(...) calls if (!table.isSelectable || omit(table, 'order')) return; if (!table.namespace) return; const tableTypeName = inflection.tableType(table); // const TableOrderByType = newWithHooks( GraphQLEnumType, { name: inflection.orderByType(tableTypeName), description: build.wrapDescription(`Methods to use when ordering \`${tableTypeName}\`.`, 'type'), values: { [inflection.builtin('NATURAL')]: { value: { alias: null, specs: [], }, }, }, }, { __origin: `Adding connection "orderBy" argument for ${describePgEntity( table )}. You can rename the table's GraphQL type via a 'Smart Comment':\n\n ${sqlCommentByAddingTags(table, { name: 'newNameHere', })}`, pgIntrospection: table, isPgRowSortEnum: true, } ); }); return _; }, ['PgConnectionArgOrderBy'] ); builder.hook( 'GraphQLObjectType:fields:field:args', (args, build, context) => { const { extend, getTypeByName, graphql: {GraphQLList, GraphQLNonNull}, inflection, pgGetGqlTypeByTypeIdAndModifier, pgOmit: omit, pgSql: sql, } = build; const { Self, addArgDataGenerator, scope: { fieldName, isPgFieldConnection, isPgFieldSimpleCollection, pgFieldIntrospection, pgFieldIntrospectionTable, }, } = context; if (!isPgFieldConnection && !isPgFieldSimpleCollection) { return args; } const proc = pgFieldIntrospection.kind === 'procedure' ? pgFieldIntrospection : null; const table: PgClass | null = pgFieldIntrospection.kind === 'class' ? pgFieldIntrospection : proc ? pgFieldIntrospectionTable : null; if (!table || !table.namespace || !table.isSelectable || omit(table, 'order')) { return args; } if (proc) { if (!proc.tags.sortable) { return args; } } const TableType = pgGetGqlTypeByTypeIdAndModifier(table.type.id, null); const tableTypeName = TableType.name; const TableOrderByType = getTypeByName(inflection.orderByType(tableTypeName)) as GraphQLEnumType; const cursorPrefixFromOrderBy = (orderBy: any) => { if (orderBy) { const cursorPrefixes: PgSql.SQLNode[] = []; for (let itemIndex = 0, itemCount = orderBy.length; itemIndex < itemCount; itemIndex++) { const item = orderBy[itemIndex]; if (item.alias) { cursorPrefixes.push(sql.literal(item.alias)); } } if (cursorPrefixes.length > 0) { return cursorPrefixes; } } return null; }; addArgDataGenerator(function connectionOrderBy({orderBy: rawOrderBy, orderByNull}: any) { const orderBy = rawOrderBy ? (Array.isArray(rawOrderBy) ? rawOrderBy : [rawOrderBy]) : null; return { pgCursorPrefix: cursorPrefixFromOrderBy(orderBy), pgQuery: (queryBuilder) => { if (orderBy !== null) { orderBy.forEach((item) => { const {specs, unique} = item; const orders = Array.isArray(specs[0]) || specs.length === 0 ? specs : [specs]; orders.forEach(([col, ascending, specNullsFirst]) => { const expr = isString(col) ? sql.fragment`${queryBuilder.getTableAlias()}.${sql.identifier(col)}` : col; // If the enum specifies null ordering, use that // Otherwise, use the orderByNullsLast option if present // For Ordering By DESC -> NULL First is default behaviour. let nullsFirst; if (orderByNull !== null && orderByNull !== undefined) { nullsFirst = orderByNull === 'NULLS_FIRST'; } else if (specNullsFirst !== null) { nullsFirst = specNullsFirst; } else if (orderByNullsLast !== null) { nullsFirst = !orderByNullsLast; } else { nullsFirst = undefined; // Leave it to the default behaviour } queryBuilder.orderBy(expr, ascending, nullsFirst); }); if (argv('dictionary-optimisation') || unique) { queryBuilder.setOrderIsUnique(); } }); } }, }; }); return extend( args, { orderBy: { description: build.wrapDescription(`The method to use when ordering \`${tableTypeName}\`.`, 'arg'), type: new GraphQLList(new GraphQLNonNull(TableOrderByType)), }, orderByNull: { description: 'Specify ordering of null values (NULLS_FIRST or NULLS_LAST).', type: getTypeByName('NullOrder'), }, }, `Adding 'orderBy' and 'orderByNull' arguments to field '${fieldName}' of '${Self.name}'` ); }, ['PgConnectionArgOrderBy'] ); // Define the NullOrder enum builder.hook('build', (build) => { const { graphql: {GraphQLEnumType}, } = build; build.addType( new GraphQLEnumType({ name: 'NullOrder', description: 'Options for ordering null values in a specific direction.', values: { NULLS_FIRST: { description: 'Order null values first.', value: 'NULLS_FIRST', }, NULLS_LAST: { description: 'Order null values last.', value: 'NULLS_LAST', }, }, }) ); return build; }); }; export default PgConnectionArgOrderBy; ================================================ FILE: packages/query/src/graphql/plugins/PgRowByVirtualIdPlugin.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import {Plugin} from 'graphile-build'; // Copied from graphile-build-pg/node8plus/plugins/PgRowByUniqueConstraint.ts // Modified to overwrite hidden column _id primary key with id column export const PgRowByVirtualIdPlugin: Plugin = (builder) => { builder.hook('GraphQLObjectType:fields', (fields, build, context) => { const { extend, gql2pg, graphql: {GraphQLNonNull}, inflection, parseResolveInfo, pgGetGqlInputTypeByTypeIdAndModifier, pgGetGqlTypeByTypeIdAndModifier, pgIntrospectionResultsByKind: introspectionResultsByKind, pgOmit: omit, pgPrepareAndRun, pgQueryFromResolveData: queryFromResolveData, pgSql: sql, } = build; const { fieldWithHooks, scope: {isRootQuery}, } = context; if (!isRootQuery) { return fields; } return extend( fields, introspectionResultsByKind.class.reduce((memo, table) => { if (!table.namespace) return memo; if (omit(table, 'read')) return memo; const TableType = pgGetGqlTypeByTypeIdAndModifier(table.type.id, null); const sqlFullTableName = sql.identifier(table.namespace.name, table.name); if (TableType) { const uniqueConstraints = table.constraints.filter((con) => con.type === 'u' || con.type === 'p'); uniqueConstraints.forEach((constraint) => { if (omit(constraint, 'read')) { return; } const keys = constraint.keyAttributes; // Only for _id primary key if (keys.length !== 1 || keys[0].name !== '_id') { return; } const fieldName = inflection.rowByUniqueKeys(keys, table, constraint); // Find id column const idColumn = table.attributes.find(({name}) => name === 'id'); if (!idColumn) { return; } // Overwrite with id column const keysIncludingMeta = [ { ...idColumn, sqlIdentifier: sql.identifier(idColumn.name), columnName: inflection.column(idColumn), }, ]; const queryFromResolveDataOptions = { useAsterisk: false, }; const queryFromResolveDataCallback = (queryBuilder, args) => { const sqlTableAlias = queryBuilder.getTableAlias(); keysIncludingMeta.forEach(({columnName, sqlIdentifier, type, typeModifier}) => { queryBuilder.where( sql.fragment`${sqlTableAlias}.${sqlIdentifier} = ${gql2pg(args[columnName], type, typeModifier)}` ); }); }; memo[fieldName] = fieldWithHooks( fieldName, ({getDataFromParsedResolveInfoFragment}) => { return { type: TableType, args: keysIncludingMeta.reduce((memo, {columnName, name, typeId, typeModifier}) => { const InputType = pgGetGqlInputTypeByTypeIdAndModifier(typeId, typeModifier); if (!InputType) { throw new Error(`Could not find input type for key '${name}' on type '${TableType.name}'`); } memo[columnName] = { type: new GraphQLNonNull(InputType), }; return memo; }, {}), async resolve(parent, args, resolveContext, resolveInfo) { const {pgClient} = resolveContext; const parsedResolveInfoFragment = parseResolveInfo(resolveInfo); parsedResolveInfoFragment.args = args; // Allow overriding via makeWrapResolversPlugin const resolveData = getDataFromParsedResolveInfoFragment(parsedResolveInfoFragment, TableType); const query = queryFromResolveData( sqlFullTableName, undefined, resolveData, queryFromResolveDataOptions, (queryBuilder) => queryFromResolveDataCallback(queryBuilder, args), resolveContext, resolveInfo.rootValue ); const {text, values} = sql.compile(query); const { rows: [row], } = await pgPrepareAndRun(pgClient, text, values); return row; }, }; }, { isPgRowByUniqueConstraintField: true, pgFieldIntrospection: constraint, } ); }); } return memo; }, {}) ); }); }; ================================================ FILE: packages/query/src/graphql/plugins/PgSearchPlugin.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import {PgEntity, PgEntityKind, PgProc} from '@subql/x-graphile-build-pg'; import {Plugin, Context} from 'graphile-build'; import {Tsquery} from 'pg-tsquery'; const parser = new Tsquery(); function isProcedure(entity?: PgEntity): entity is PgProc { return entity?.kind === PgEntityKind.PROCEDURE; } export const PgSearchPlugin: Plugin = (builder) => { // Sanitises the search argument for fulltext search using pg-tsquery builder.hook('GraphQLObjectType:fields:field', (field, build, {scope: {pgFieldIntrospection}}: Context) => { if (isProcedure(pgFieldIntrospection) && pgFieldIntrospection.argNames.includes('search')) { pgFieldIntrospection.tags.sortable = true; return { ...field, resolve(source, args, ctx, info) { if (args.search !== undefined) { args.search = parser.parse(args.search)?.toString(); } return field.resolve?.(source, args, ctx, info); }, }; } return field; }); }; ================================================ FILE: packages/query/src/graphql/plugins/PgSubscriptionPlugin.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import {hashName} from '@subql/utils'; import {PgIntrospectionResultsByKind} from '@subql/x-graphile-build-pg'; import {makeExtendSchemaPlugin, gql, embed, Resolvers} from 'graphile-utils'; import {DocumentNode} from 'graphql'; const filter = (event, args) => { if (args.mutation && !args.mutation.includes(event.mutation_type)) { return false; } if (args.id && !args.id.includes(event.id)) { return false; } return true; }; function makePayload(entityType: string): {type: DocumentNode; name: string} { const name = `${entityType}Payload`; const type = gql` type ${name} { id: ID! mutation_type: MutationType! _entity: ${entityType} } `; return {name, type}; } export const PgSubscriptionPlugin = makeExtendSchemaPlugin((build) => { const {inflection, pgIntrospectionResultsByKind, pgSql: sql} = build; const typeDefs = [ gql` enum MutationType { INSERT UPDATE DELETE } `, ]; const resolvers: Resolvers = {}; // Generate subscription fields for all database tables (pgIntrospectionResultsByKind as PgIntrospectionResultsByKind).class.forEach((table) => { if (!table.namespace || table.name.includes('_metadata')) return; const field = inflection.allRows(table); const type = inflection.tableType(table); const {name: payloadName, type: payloadType} = makePayload(type); const topic = hashName(table.namespace.name, 'notify_channel', table.name); typeDefs.push( gql` ${payloadType} extend type Subscription { ${field}(id: [ID!], mutation: [MutationType!]): ${payloadName} @pgSubscription( topic: ${embed(topic)} filter: ${embed(filter)} ) }` ); resolvers[payloadName] = { _entity: { resolve: async ({_block_height, _entity}, args, context, resolveInfo) => { const [row] = await resolveInfo.graphile.selectGraphQLResultFromTable( sql.identifier(table.namespace.name, table.name), (tableAlias, queryBuilder) => { queryBuilder.context.args ??= {}; if (_block_height) { queryBuilder.context.args.blockHeight = sql.fragment`${sql.value(_block_height.toString())}::bigint`; queryBuilder.where(sql.fragment`${tableAlias}._id = ${sql.value(_entity._id)}`); } else { queryBuilder.where(sql.fragment`${tableAlias}.id = ${sql.value(_entity.id)}`); } queryBuilder.limit(1); } ); return row; }, }, }; }); return { typeDefs, resolvers, }; }); ================================================ FILE: packages/query/src/graphql/plugins/PlaygroundPlugin.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import type {ApolloServerPlugin, GraphQLServerListener} from 'apollo-server-plugin-base'; export function playgroundPlugin(options: {url: string; subscriptionUrl?: string}): ApolloServerPlugin { return { // eslint-disable-next-line @typescript-eslint/require-await async serverWillStart(): Promise { return { // eslint-disable-next-line @typescript-eslint/require-await async renderLandingPage() { // This content is sourced from https://github.com/graphql/graphiql/blob/main/examples/graphiql-cdn/index.html return { html: ` GraphiQL 5 with React 19 and GraphiQL Explorer
Loading…
`, }; }, }; }, }; } ================================================ FILE: packages/query/src/graphql/plugins/QueryAliasLimitPlugin.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import type {ApolloServerPlugin} from 'apollo-server-plugin-base'; import {GraphQLSchema, GraphQLError, DocumentNode, visit} from 'graphql'; function checkLimit(document: DocumentNode, limit: number): void { let aliasCount = 0; visit(document, { Field(node) { if (node.alias) { aliasCount += 1; if (aliasCount > limit) throw new GraphQLError('Alias limit exceeded'); } }, }); } export function queryAliasLimit(options: {schema: GraphQLSchema; limit?: number}): ApolloServerPlugin { return { requestDidStart: () => { return { didResolveOperation(context: {document: DocumentNode}) { if (options?.limit === undefined) { return; } checkLimit(context.document, options.limit); }, }; }, } as unknown as ApolloServerPlugin; } ================================================ FILE: packages/query/src/graphql/plugins/QueryComplexityPlugin.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import type {ApolloServerPlugin} from 'apollo-server-plugin-base'; import {separateOperations, GraphQLSchema} from 'graphql'; import {getComplexity, simpleEstimator} from 'graphql-query-complexity'; export function queryComplexityPlugin(options: {schema: GraphQLSchema; maxComplexity?: number}): ApolloServerPlugin { return { requestDidStart: () => { let complexity: number; return { didResolveOperation({document, request}) { complexity = getComplexity({ schema: options.schema, query: request.operationName ? separateOperations(document)[request.operationName] : document, variables: request.variables, estimators: [simpleEstimator({defaultComplexity: 1})], }); if (options.maxComplexity !== undefined && complexity > options.maxComplexity) { throw new Error( `Sorry, too complicated query! Current ${complexity} is over ${options.maxComplexity} that is the max allowed complexity.` ); } }, willSendResponse({response}) { response.http.headers.append('query-complexity', complexity); if (options.maxComplexity !== undefined) { response.http.headers.append('max-query-complexity', options.maxComplexity); } }, }; }, } as unknown as ApolloServerPlugin; } ================================================ FILE: packages/query/src/graphql/plugins/QueryDepthLimitPlugin.spec.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import {ASTNode, Kind} from 'graphql'; import {checkDepth} from './QueryDepthLimitPlugin'; const mockFieldNode = { kind: Kind.FIELD, name: {kind: 'Name', value: 'field1'}, selectionSet: { kind: Kind.SELECTION_SET, selections: [ { kind: Kind.FIELD, name: { kind: 'Name', value: 'field2', }, selectionSet: { kind: Kind.SELECTION_SET, selections: [ { kind: Kind.FIELD, name: {kind: 'Name', value: 'field1'}, }, ], }, }, ], }, } as unknown as ASTNode; describe('Query depth limit', () => { it('checkDepth does not throw on shallow depth', () => { const depthSoFar = 0; const maxDepth = 5; expect(() => checkDepth(mockFieldNode, {}, depthSoFar, maxDepth)).not.toThrow(); }); it('checkDepth does throw when max depth is exceeded', () => { const depthSoFar = 6; const maxDepth = 7; expect(() => checkDepth(mockFieldNode, {}, depthSoFar, maxDepth)).toThrow(); }); }); ================================================ FILE: packages/query/src/graphql/plugins/QueryDepthLimitPlugin.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import type {ApolloServerPlugin} from 'apollo-server-plugin-base'; import { GraphQLSchema, Kind, GraphQLError, DocumentNode, DefinitionNode, ValidationContext, TypeInfo, SelectionNode, FragmentDefinitionNode, OperationDefinitionNode, ASTNode, } from 'graphql'; export function validateQueryDepth(maxDepth: number, context: ValidationContext): void { const {definitions} = context.getDocument(); const fragments = getFragments(definitions); const operations = getQueriesAndMutations(definitions); for (const operation of operations) { if (operation.name && operation.name.value === 'IntrospectionQuery') { continue; } checkDepth(operation, fragments, 0, maxDepth); } } function isOperationDefinitionNode(node: DefinitionNode): node is OperationDefinitionNode { return node.kind === Kind.OPERATION_DEFINITION; } function isFragmentDefinitionNode(node: DefinitionNode): node is FragmentDefinitionNode { return node.kind === Kind.FRAGMENT_DEFINITION; } function getFragments(definitions: readonly DefinitionNode[]): Record { return definitions.filter(isFragmentDefinitionNode).reduce((frags, def) => { frags[def.name.value] = def; return frags; }, {}); } function getQueriesAndMutations(definitions: readonly DefinitionNode[]): OperationDefinitionNode[] { return definitions.filter(isOperationDefinitionNode); } export function checkDepth( node: ASTNode, fragments: Record, depthSoFar: number, maxDepth: number ): void { if (depthSoFar > maxDepth) { throw new GraphQLError(`Query is too deep. Maximum depth allowed is ${maxDepth}.`, [node]); } switch (node.kind) { case Kind.FIELD: { if (!node.selectionSet) { return; } node.selectionSet.selections.forEach((selection: SelectionNode) => { checkDepth(selection, fragments, depthSoFar + 1, maxDepth); }); return; } case Kind.FRAGMENT_SPREAD: { return checkDepth(fragments[node.name.value], fragments, depthSoFar, maxDepth); } case Kind.INLINE_FRAGMENT: case Kind.FRAGMENT_DEFINITION: case Kind.OPERATION_DEFINITION: { node.selectionSet.selections.forEach((selection: SelectionNode) => { checkDepth(selection, fragments, depthSoFar, maxDepth); }); return; } default: break; } } export function queryDepthLimitPlugin(options: {schema: GraphQLSchema; maxDepth?: number}): ApolloServerPlugin { return { requestDidStart: () => { return { didResolveOperation(context: {document: DocumentNode}) { if (options?.maxDepth === undefined) { return; } const validationContext = new ValidationContext( options.schema, context.document, new TypeInfo(options.schema), (err) => { throw err; } ); validateQueryDepth(options.maxDepth, validationContext); }, }; }, } as unknown as ApolloServerPlugin; } ================================================ FILE: packages/query/src/graphql/plugins/historical/PgBlockHeightPlugin.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import {QueryBuilder} from '@subql/x-graphile-build-pg'; import {Plugin, Context} from 'graphile-build'; import {GraphQLString} from 'graphql'; import {fetchFromTable} from '../GetMetadataPlugin'; import {makeRangeQuery, hasBlockRange} from './utils'; function addRangeQuery(queryBuilder: QueryBuilder, sql: any) { queryBuilder.where(makeRangeQuery(queryBuilder.getTableAlias(), queryBuilder.context.args.blockHeight, sql)); } // Save blockHeight to context, so it gets passed down to children function addQueryContext(queryBuilder: QueryBuilder, sql: any, blockHeight: any) { if (!queryBuilder.context.args?.blockHeight || !queryBuilder.parentQueryBuilder) { queryBuilder.context.args = {blockHeight: sql.fragment`${sql.value(blockHeight)}::bigint`}; } } export const PgBlockHeightPlugin: Plugin = async (builder, options) => { // Note this varies from node where true is allowed because of legacy support let historicalMode: boolean | 'height' | 'timestamp' = 'height'; const [schemaName] = options.pgSchemas; try { const {historicalStateEnabled} = await fetchFromTable(options.pgConfig, schemaName, undefined, false); historicalMode = historicalStateEnabled; } catch (e) { /* Do nothing, default value is already set */ } // Adds blockHeight condition to join clause when joining a table that has _block_range column builder.hook( 'GraphQLObjectType:fields:field', ( field, {pgSql: sql}, { addArgDataGenerator, scope: { isPgBackwardRelationField, isPgBackwardSingleRelationField, isPgForwardRelationField, pgFieldIntrospection, }, }: Context ) => { if (!isPgBackwardRelationField && !isPgForwardRelationField && !isPgBackwardSingleRelationField) { return field; } if (!hasBlockRange(pgFieldIntrospection)) { return field; } addArgDataGenerator(({blockHeight, timestamp}) => ({ pgQuery: (queryBuilder: QueryBuilder) => { // If timestamp provided use that as the value addQueryContext(queryBuilder, sql, blockHeight ?? timestamp); addRangeQuery(queryBuilder, sql); }, })); return field; } ); // Adds blockHeight argument to single entity and connection queries for tables with _block_range column builder.hook( 'GraphQLObjectType:fields:field:args', ( args, {extend, pgSql: sql}, { addArgDataGenerator, scope: {isPgFieldConnection, isPgRowByUniqueConstraintField, pgFieldIntrospection}, }: Context ) => { if (!isPgRowByUniqueConstraintField && !isPgFieldConnection) { return args; } if (!hasBlockRange(pgFieldIntrospection)) { return args; } addArgDataGenerator(({blockHeight, timestamp}) => ({ pgQuery: (queryBuilder: QueryBuilder) => { // If timestamp provided use that as the value addQueryContext(queryBuilder, sql, blockHeight ?? timestamp); addRangeQuery(queryBuilder, sql); }, })); if (historicalMode === 'timestamp') { return extend(args, { timestamp: { description: 'When specified, the query will return results as of this timestamp. Unix timestamp in MS', defaultValue: '9223372036854775807', type: GraphQLString, // String because of int overflow }, }); } return extend(args, { blockHeight: { description: 'When specified, the query will return results as of this block height', defaultValue: '9223372036854775807', type: GraphQLString, // String because of int overflow }, }); } ); }; ================================================ FILE: packages/query/src/graphql/plugins/historical/PgConnectionArgFilterBackwardRelationsPlugin.ts ================================================ /* eslint-disable */ /* INFO: This file has been modified from https://github.com/graphile-contrib/postgraphile-plugin-connection-filter to support historical queries */ import {SQL} from '@subql/x-graphile-build-pg'; import type {PgEntity, PgAttribute, PgClass, PgConstraint, QueryBuilder} from '@subql/x-graphile-build-pg'; import type {Plugin} from 'graphile-build'; import {ConnectionFilterResolver} from 'postgraphile-plugin-connection-filter/dist/PgConnectionArgFilterPlugin'; import {makeRangeQuery, hasBlockRange} from './utils'; /* This is a modification from the original function where a block range condition is added */ export function buildWhereConditionBackward( table: PgEntity, foreignTableAlias: SQL, sourceAlias: SQL, foreignKeyAttributes: PgAttribute[], keyAttributes: PgAttribute[], queryBuilder: QueryBuilder, sql: any ): SQL { const fkMatches = foreignKeyAttributes.map((attr, i) => { return sql.fragment`${foreignTableAlias}.${sql.identifier(attr.name)} = ${sourceAlias}.${sql.identifier( keyAttributes[i].name )}`; }); if (queryBuilder.context.args?.blockHeight && hasBlockRange(table)) { fkMatches.push(makeRangeQuery(foreignTableAlias, queryBuilder.context.args.blockHeight, sql)); } return sql.query`(${sql.join(fkMatches, ') and (')})`; } export function connectionFilterResolveBlockHeight( fieldValue: unknown, foreignTableAlias: SQL, foreignTableFilterTypeName: string, queryBuilder: QueryBuilder, connectionFilterResolve: ( fieldValue: unknown, foreignTableAlias: SQL, foreignTableFilterTypeName: string, queryBuilder: QueryBuilder // There are more args but they don't seem to be used ) => SQL | null, foreignTable: PgEntity, sql: any ): SQL | null { const sqlFragment = connectionFilterResolve(fieldValue, foreignTableAlias, foreignTableFilterTypeName, queryBuilder); if (sqlFragment === null) { return null; } if (queryBuilder.context.args?.blockHeight === undefined || !hasBlockRange(foreignTable)) { return sqlFragment; } return sql.join( [sqlFragment, makeRangeQuery(foreignTableAlias, queryBuilder.context.args.blockHeight, sql)], ') and (' ); } const PgConnectionArgFilterBackwardRelationsPlugin: Plugin = ( builder, {pgSimpleCollections, pgOmitListSuffix, connectionFilterUseListInflectors} ) => { const hasConnections = pgSimpleCollections !== 'only'; const simpleInflectorsAreShorter = pgOmitListSuffix === true; if (simpleInflectorsAreShorter && connectionFilterUseListInflectors === undefined) { // TODO: in V3 consider doing this for the user automatically (doing it in V2 would be a breaking change) console.warn( `We recommend you set the 'connectionFilterUseListInflectors' option to 'true' since you've set the 'pgOmitListSuffix' option` ); } const useConnectionInflectors = connectionFilterUseListInflectors === undefined ? hasConnections : !connectionFilterUseListInflectors; builder.hook('inflection', (inflection) => { return Object.assign(inflection, { filterManyType(table: PgClass, foreignTable: PgClass): string { return (this as any).upperCamelCase( `${(this as any).tableType(table)}-to-many-${(this as any).tableType(foreignTable)}-filter` ); }, filterBackwardSingleRelationExistsFieldName(relationFieldName: string) { return `${relationFieldName}Exists`; }, filterBackwardManyRelationExistsFieldName(relationFieldName: string) { return `${relationFieldName}Exist`; }, filterSingleRelationByKeysBackwardsFieldName(fieldName: string) { return fieldName; }, filterManyRelationByKeysFieldName(fieldName: string) { return fieldName; }, }); }); builder.hook('GraphQLInputObjectType:fields', (fields, build, context) => { const { describePgEntity, extend, newWithHooks, inflection, pgOmit: omit, pgSql: sql, pgIntrospectionResultsByKind: introspectionResultsByKind, graphql: {GraphQLInputObjectType, GraphQLBoolean}, connectionFilterResolve, connectionFilterRegisterResolver, connectionFilterTypesByTypeName, connectionFilterType, } = build; const { fieldWithHooks, scope: {pgIntrospection: table, isPgConnectionFilter}, Self, } = context; if (!isPgConnectionFilter || table.kind !== 'class') return fields; connectionFilterTypesByTypeName[Self.name] = Self; const backwardRelationSpecs = (introspectionResultsByKind.constraint as PgConstraint[]) .filter((con) => con.type === 'f') .filter((con) => con.foreignClassId === table.id) .reduce((memo: BackwardRelationSpec[], foreignConstraint) => { if (omit(foreignConstraint, 'read') || omit(foreignConstraint, 'filter')) { return memo; } const foreignTable = introspectionResultsByKind.classById[foreignConstraint.classId]; if (!foreignTable) { throw new Error(`Could not find the foreign table (constraint: ${foreignConstraint.name})`); } if (omit(foreignTable, 'read') || omit(foreignTable, 'filter')) { return memo; } const attributes = (introspectionResultsByKind.attribute as PgAttribute[]) .filter((attr) => attr.classId === table.id) .sort((a, b) => a.num - b.num); const foreignAttributes = (introspectionResultsByKind.attribute as PgAttribute[]) .filter((attr) => attr.classId === foreignTable.id) .sort((a, b) => a.num - b.num); const keyAttributes = foreignConstraint.foreignKeyAttributeNums.map( (num) => attributes.filter((attr) => attr.num === num)[0] ); const foreignKeyAttributes = foreignConstraint.keyAttributeNums.map( (num) => foreignAttributes.filter((attr) => attr.num === num)[0] ); if (keyAttributes.some((attr) => omit(attr, 'read'))) { return memo; } if (foreignKeyAttributes.some((attr) => omit(attr, 'read'))) { return memo; } const isForeignKeyUnique = !!(introspectionResultsByKind.constraint as PgConstraint[]).find( (c) => c.classId === foreignTable.id && (c.type === 'p' || c.type === 'u') && c.keyAttributeNums.length === foreignKeyAttributes.length && c.keyAttributeNums.every((n, i) => foreignKeyAttributes[i].num === n) ); memo.push({ table, keyAttributes, foreignTable, foreignKeyAttributes, foreignConstraint, isOneToMany: !isForeignKeyUnique, }); return memo; }, []); let backwardRelationSpecByFieldName: { [fieldName: string]: BackwardRelationSpec; } = {}; const addField = ( fieldName: string, description: string, type: any, resolve: any, spec: BackwardRelationSpec, hint: string ) => { // Field fields = extend( fields, { [fieldName]: fieldWithHooks( fieldName, { description, type, }, { isPgConnectionFilterField: true, } ), }, hint ); // Relation spec for use in resolver backwardRelationSpecByFieldName = extend(backwardRelationSpecByFieldName, { [fieldName]: spec, }); // Resolver connectionFilterRegisterResolver(Self.name, fieldName, resolve); }; const resolveSingle: ConnectionFilterResolver = ({sourceAlias, fieldName, fieldValue, queryBuilder}) => { if (fieldValue == null) return null; const {foreignTable, foreignKeyAttributes, keyAttributes} = backwardRelationSpecByFieldName[fieldName]; const foreignTableTypeName = inflection.tableType(foreignTable); const foreignTableAlias = sql.identifier(Symbol()); const foreignTableFilterTypeName = inflection.filterType(foreignTableTypeName); const sqlIdentifier = sql.identifier(foreignTable.namespace.name, foreignTable.name); /****************************** * HISTORICAL CHANGES BEGIN *******************************/ const sqlKeysMatch = buildWhereConditionBackward( table, foreignTableAlias, sourceAlias, foreignKeyAttributes, keyAttributes, queryBuilder, sql ); const sqlSelectWhereKeysMatch = sql.query`select 1 from ${sqlIdentifier} as ${foreignTableAlias} where ${sqlKeysMatch}`; const sqlFragment = connectionFilterResolveBlockHeight( fieldValue, foreignTableAlias, foreignTableFilterTypeName, queryBuilder, connectionFilterResolve, foreignTable, sql ); /****************************** * HISTORICAL CHANGES END *******************************/ return sqlFragment == null ? null : sql.query`exists(${sqlSelectWhereKeysMatch} and (${sqlFragment}))`; }; const resolveExists: ConnectionFilterResolver = ({sourceAlias, fieldName, fieldValue, queryBuilder}) => { if (fieldValue == null) return null; const {foreignTable, foreignKeyAttributes, keyAttributes} = backwardRelationSpecByFieldName[fieldName]; const foreignTableAlias = sql.identifier(Symbol()); const sqlIdentifier = sql.identifier(foreignTable.namespace.name, foreignTable.name); /****************************** * HISTORICAL CHANGES BEGIN *******************************/ const sqlKeysMatch = buildWhereConditionBackward( table, foreignTableAlias, sourceAlias, foreignKeyAttributes, keyAttributes, queryBuilder, sql ); /****************************** * HISTORICAL CHANGES END *******************************/ const sqlSelectWhereKeysMatch = sql.query`select 1 from ${sqlIdentifier} as ${foreignTableAlias} where ${sqlKeysMatch}`; return fieldValue === true ? sql.query`exists(${sqlSelectWhereKeysMatch})` : sql.query`not exists(${sqlSelectWhereKeysMatch})`; }; const makeResolveMany = (backwardRelationSpec: BackwardRelationSpec) => { const resolveMany: ConnectionFilterResolver = ({sourceAlias, fieldName, fieldValue, queryBuilder}) => { if (fieldValue == null) return null; const {foreignTable} = backwardRelationSpecByFieldName[fieldName]; const foreignTableFilterManyTypeName = inflection.filterManyType(table, foreignTable); const sqlFragment = connectionFilterResolve( fieldValue, sourceAlias, foreignTableFilterManyTypeName, queryBuilder, null, null, null, {backwardRelationSpec} ); return sqlFragment == null ? null : sqlFragment; }; return resolveMany; }; for (const spec of backwardRelationSpecs) { const {foreignTable, foreignKeyAttributes, foreignConstraint, isOneToMany} = spec; const foreignTableTypeName = inflection.tableType(foreignTable); const foreignTableFilterTypeName = inflection.filterType(foreignTableTypeName); const ForeignTableFilterType = connectionFilterType( newWithHooks, foreignTableFilterTypeName, foreignTable, foreignTableTypeName ); if (!ForeignTableFilterType) continue; if (isOneToMany) { if (!omit(foreignTable, 'many')) { const filterManyTypeName = inflection.filterManyType(table, foreignTable); if (!connectionFilterTypesByTypeName[filterManyTypeName]) { connectionFilterTypesByTypeName[filterManyTypeName] = newWithHooks( GraphQLInputObjectType, { name: filterManyTypeName, description: `A filter to be used against many \`${foreignTableTypeName}\` object types. All fields are combined with a logical ‘and.’`, }, { foreignTable, isPgConnectionFilterMany: true, } ); } const FilterManyType = connectionFilterTypesByTypeName[filterManyTypeName]; const fieldName = useConnectionInflectors ? inflection.manyRelationByKeys(foreignKeyAttributes, foreignTable, table, foreignConstraint) : inflection.manyRelationByKeysSimple(foreignKeyAttributes, foreignTable, table, foreignConstraint); const filterFieldName = inflection.filterManyRelationByKeysFieldName(fieldName); addField( filterFieldName, `Filter by the object’s \`${fieldName}\` relation.`, FilterManyType, makeResolveMany(spec), spec, `Adding connection filter backward relation field from ${describePgEntity(table)} to ${describePgEntity( foreignTable )}` ); const existsFieldName = inflection.filterBackwardManyRelationExistsFieldName(fieldName); addField( existsFieldName, `Some related \`${fieldName}\` exist.`, GraphQLBoolean, resolveExists, spec, `Adding connection filter backward relation exists field from ${describePgEntity( table )} to ${describePgEntity(foreignTable)}` ); } } else { const fieldName = inflection.singleRelationByKeysBackwards( foreignKeyAttributes, foreignTable, table, foreignConstraint ); const filterFieldName = inflection.filterSingleRelationByKeysBackwardsFieldName(fieldName); addField( filterFieldName, `Filter by the object’s \`${fieldName}\` relation.`, ForeignTableFilterType, resolveSingle, spec, `Adding connection filter backward relation field from ${describePgEntity(table)} to ${describePgEntity( foreignTable )}` ); const existsFieldName = inflection.filterBackwardSingleRelationExistsFieldName(fieldName); addField( existsFieldName, `A related \`${fieldName}\` exists.`, GraphQLBoolean, resolveExists, spec, `Adding connection filter backward relation exists field from ${describePgEntity( table )} to ${describePgEntity(foreignTable)}` ); } } return fields; }); builder.hook('GraphQLInputObjectType:fields', (fields, build, context) => { const { extend, newWithHooks, inflection, pgSql: sql, connectionFilterResolve, connectionFilterRegisterResolver, connectionFilterTypesByTypeName, connectionFilterType, } = build; const { fieldWithHooks, scope: {foreignTable, isPgConnectionFilterMany}, Self, } = context; if (!isPgConnectionFilterMany || !foreignTable) return fields; connectionFilterTypesByTypeName[Self.name] = Self; const foreignTableTypeName = inflection.tableType(foreignTable); const foreignTableFilterTypeName = inflection.filterType(foreignTableTypeName); const FilterType = connectionFilterType( newWithHooks, foreignTableFilterTypeName, foreignTable, foreignTableTypeName ); const manyFields = { every: fieldWithHooks( 'every', { description: `Every related \`${foreignTableTypeName}\` matches the filter criteria. All fields are combined with a logical ‘and.’`, type: FilterType, }, { isPgConnectionFilterManyField: true, } ), some: fieldWithHooks( 'some', { description: `Some related \`${foreignTableTypeName}\` matches the filter criteria. All fields are combined with a logical ‘and.’`, type: FilterType, }, { isPgConnectionFilterManyField: true, } ), none: fieldWithHooks( 'none', { description: `No related \`${foreignTableTypeName}\` matches the filter criteria. All fields are combined with a logical ‘and.’`, type: FilterType, }, { isPgConnectionFilterManyField: true, } ), }; const resolve: ConnectionFilterResolver = ({sourceAlias, fieldName, fieldValue, queryBuilder, parentFieldInfo}) => { if (fieldValue == null) return null; if (!parentFieldInfo || !parentFieldInfo.backwardRelationSpec) throw new Error('Did not receive backward relation spec'); const {keyAttributes, foreignKeyAttributes}: BackwardRelationSpec = parentFieldInfo.backwardRelationSpec; const foreignTableAlias = sql.identifier(Symbol()); const sqlIdentifier = sql.identifier(foreignTable.namespace.name, foreignTable.name); /****************************** * HISTORICAL CHANGES BEGIN *******************************/ const sqlKeysMatch = buildWhereConditionBackward( foreignTable, foreignTableAlias, sourceAlias, foreignKeyAttributes, keyAttributes, queryBuilder, sql ); /****************************** * HISTORICAL CHANGES END *******************************/ const sqlSelectWhereKeysMatch = sql.query`select 1 from ${sqlIdentifier} as ${foreignTableAlias} where ${sqlKeysMatch}`; const sqlFragment = connectionFilterResolveBlockHeight( fieldValue, foreignTableAlias, foreignTableFilterTypeName, queryBuilder, connectionFilterResolve, foreignTable, sql ); if (sqlFragment == null) { return null; } else if (fieldName === 'every') { return sql.query`not exists(${sqlSelectWhereKeysMatch} and not (${sqlFragment}))`; } else if (fieldName === 'some') { return sql.query`exists(${sqlSelectWhereKeysMatch} and (${sqlFragment}))`; } else if (fieldName === 'none') { return sql.query`not exists(${sqlSelectWhereKeysMatch} and (${sqlFragment}))`; } throw new Error(`Unknown field name: ${fieldName}`); }; for (const fieldName of Object.keys(manyFields)) { connectionFilterRegisterResolver(Self.name, fieldName, resolve); } return extend(fields, manyFields); }); }; export interface BackwardRelationSpec { table: PgClass; keyAttributes: PgAttribute[]; foreignTable: PgClass; foreignKeyAttributes: PgAttribute[]; foreignConstraint: PgConstraint; isOneToMany: boolean; } export default PgConnectionArgFilterBackwardRelationsPlugin; ================================================ FILE: packages/query/src/graphql/plugins/historical/PgConnectionArgFilterForwardRelationsPlugin.ts ================================================ /* eslint-disable */ /* INFO: This file has been modified from https://github.com/graphile-contrib/postgraphile-plugin-connection-filter to support historical queries */ import {PgEntity, SQL} from '@subql/x-graphile-build-pg'; import type {Plugin} from 'graphile-build'; import type {PgAttribute, PgClass, PgConstraint, QueryBuilder} from '@subql/x-graphile-build-pg'; import {ConnectionFilterResolver} from 'postgraphile-plugin-connection-filter/dist/PgConnectionArgFilterPlugin'; import { buildWhereConditionBackward, connectionFilterResolveBlockHeight, } from './PgConnectionArgFilterBackwardRelationsPlugin'; /* This is a modification from the original function where a block range condition is added */ function buildWhereConditionForward( table: PgEntity, foreignTableAlias: SQL, sourceAlias: SQL, foreignKeyAttributes: PgAttribute[], keyAttributes: PgAttribute[], queryBuilder: QueryBuilder, sql: any ): SQL { // Swaps the arguments for source and foreign return buildWhereConditionBackward( table, sourceAlias, foreignTableAlias, keyAttributes, foreignKeyAttributes, queryBuilder, sql ); } const PgConnectionArgFilterForwardRelationsPlugin: Plugin = (builder) => { builder.hook('inflection', (inflection) => ({ ...inflection, filterForwardRelationExistsFieldName(relationFieldName: string) { return `${relationFieldName}Exists`; }, filterSingleRelationFieldName(fieldName: string) { return fieldName; }, })); builder.hook('GraphQLInputObjectType:fields', (fields, build, context) => { const { describePgEntity, extend, newWithHooks, inflection, graphql: {GraphQLBoolean}, pgOmit: omit, pgSql: sql, pgIntrospectionResultsByKind: introspectionResultsByKind, connectionFilterResolve, connectionFilterRegisterResolver, connectionFilterTypesByTypeName, connectionFilterType, } = build; const { fieldWithHooks, scope: {pgIntrospection: table, isPgConnectionFilter}, Self, } = context; if (!isPgConnectionFilter || table.kind !== 'class') return fields; connectionFilterTypesByTypeName[Self.name] = Self; const forwardRelationSpecs = (introspectionResultsByKind.constraint as PgConstraint[]) .filter((con) => con.type === 'f') .filter((con) => con.classId === table.id) .reduce((memo: ForwardRelationSpec[], constraint) => { if (omit(constraint, 'read') || omit(constraint, 'filter')) { return memo; } const foreignTable = constraint.foreignClassId ? introspectionResultsByKind.classById[constraint.foreignClassId] : null; if (!foreignTable) { throw new Error(`Could not find the foreign table (constraint: ${constraint.name})`); } if (omit(foreignTable, 'read') || omit(foreignTable, 'filter')) { return memo; } const attributes = (introspectionResultsByKind.attribute as PgAttribute[]) .filter((attr) => attr.classId === table.id) .sort((a, b) => a.num - b.num); const foreignAttributes = (introspectionResultsByKind.attribute as PgAttribute[]) .filter((attr) => attr.classId === foreignTable.id) .sort((a, b) => a.num - b.num); const keyAttributes = constraint.keyAttributeNums.map( (num) => attributes.filter((attr) => attr.num === num)[0] ); const foreignKeyAttributes = constraint.foreignKeyAttributeNums.map( (num) => foreignAttributes.filter((attr) => attr.num === num)[0] ); if (keyAttributes.some((attr) => omit(attr, 'read'))) { return memo; } if (foreignKeyAttributes.some((attr) => omit(attr, 'read'))) { return memo; } memo.push({ table, keyAttributes, foreignTable, foreignKeyAttributes, constraint, }); return memo; }, []); let forwardRelationSpecByFieldName: { [fieldName: string]: ForwardRelationSpec; } = {}; const addField = ( fieldName: string, description: string, type: any, resolve: any, spec: ForwardRelationSpec, hint: string ) => { // Field fields = extend( fields, { [fieldName]: fieldWithHooks( fieldName, { description, type, }, { isPgConnectionFilterField: true, } ), }, hint ); // Spec for use in resolver forwardRelationSpecByFieldName = extend(forwardRelationSpecByFieldName, { [fieldName]: spec, }); // Resolver connectionFilterRegisterResolver(Self.name, fieldName, resolve); }; const resolve: ConnectionFilterResolver = ({sourceAlias, fieldName, fieldValue, queryBuilder}) => { if (fieldValue == null) return null; const {foreignTable, foreignKeyAttributes, keyAttributes} = forwardRelationSpecByFieldName[fieldName]; const foreignTableAlias = sql.identifier(Symbol()); const sqlIdentifier = sql.identifier(foreignTable.namespace.name, foreignTable.name); /****************************** * HISTORICAL CHANGES BEGIN *******************************/ const sqlKeysMatch = buildWhereConditionForward( table, foreignTableAlias, sourceAlias, foreignKeyAttributes, keyAttributes, queryBuilder, sql ); const foreignTableTypeName = inflection.tableType(foreignTable); const foreignTableFilterTypeName = inflection.filterType(foreignTableTypeName); const sqlFragment = connectionFilterResolveBlockHeight( fieldValue, foreignTableAlias, foreignTableFilterTypeName, queryBuilder, connectionFilterResolve, foreignTable, sql ); /****************************** * HISTORICAL CHANGES END *******************************/ return sqlFragment == null ? null : sql.query`\ exists( select 1 from ${sqlIdentifier} as ${foreignTableAlias} where ${sqlKeysMatch} and (${sqlFragment}) )`; }; const resolveExists: ConnectionFilterResolver = ({sourceAlias, fieldName, fieldValue, queryBuilder}) => { if (fieldValue == null) return null; const {foreignTable, foreignKeyAttributes, keyAttributes} = forwardRelationSpecByFieldName[fieldName]; const foreignTableAlias = sql.identifier(Symbol()); const sqlIdentifier = sql.identifier(foreignTable.namespace.name, foreignTable.name); /****************************** * HISTORICAL CHANGES BEGIN *******************************/ const sqlKeysMatch = buildWhereConditionForward( table, foreignTableAlias, sourceAlias, foreignKeyAttributes, keyAttributes, queryBuilder, sql ); /****************************** * HISTORICAL CHANGES END *******************************/ const sqlSelectWhereKeysMatch = sql.query`select 1 from ${sqlIdentifier} as ${foreignTableAlias} where ${sqlKeysMatch}`; return fieldValue === true ? sql.query`exists(${sqlSelectWhereKeysMatch})` : sql.query`not exists(${sqlSelectWhereKeysMatch})`; }; for (const spec of forwardRelationSpecs) { const {constraint, foreignTable, keyAttributes} = spec; const fieldName = inflection.singleRelationByKeys(keyAttributes, foreignTable, table, constraint); const filterFieldName = inflection.filterSingleRelationFieldName(fieldName); const foreignTableTypeName = inflection.tableType(foreignTable); const foreignTableFilterTypeName = inflection.filterType(foreignTableTypeName); const ForeignTableFilterType = connectionFilterType( newWithHooks, foreignTableFilterTypeName, foreignTable, foreignTableTypeName ); if (!ForeignTableFilterType) continue; addField( filterFieldName, `Filter by the object’s \`${fieldName}\` relation.`, ForeignTableFilterType, resolve, spec, `Adding connection filter forward relation field from ${describePgEntity(table)} to ${describePgEntity( foreignTable )}` ); const keyIsNullable = !keyAttributes.every((attr) => attr.isNotNull); if (keyIsNullable) { const existsFieldName = inflection.filterForwardRelationExistsFieldName(fieldName); addField( existsFieldName, `A related \`${fieldName}\` exists.`, GraphQLBoolean, resolveExists, spec, `Adding connection filter forward relation exists field from ${describePgEntity(table)} to ${describePgEntity( foreignTable )}` ); } } return fields; }); }; export interface ForwardRelationSpec { table: PgClass; keyAttributes: PgAttribute[]; foreignTable: PgClass; foreignKeyAttributes: PgAttribute[]; constraint: PgConstraint; } export default PgConnectionArgFilterForwardRelationsPlugin; ================================================ FILE: packages/query/src/graphql/plugins/historical/index.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import {PgBlockHeightPlugin} from './PgBlockHeightPlugin'; import PgConnectionArgFilterBackwardRelationsPlugin from './PgConnectionArgFilterBackwardRelationsPlugin'; import PgConnectionArgFilterForwardRelationsPlugin from './PgConnectionArgFilterForwardRelationsPlugin'; const historicalPlugins = [ PgBlockHeightPlugin, // This must be before the other plugins to ensure the context is set PgConnectionArgFilterBackwardRelationsPlugin, PgConnectionArgFilterForwardRelationsPlugin, ]; export default historicalPlugins; ================================================ FILE: packages/query/src/graphql/plugins/historical/utils.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import {PgEntity, PgEntityKind, SQL} from '@subql/x-graphile-build-pg'; export function makeRangeQuery(tableName: SQL, blockHeight: SQL, sql: any): SQL { return sql.fragment`${tableName}._block_range @> ${blockHeight}`; } // Used to filter out _block_range attributes export function hasBlockRange(entity?: PgEntity): boolean { if (!entity) { return true; } switch (entity.kind) { case PgEntityKind.CLASS: { return entity.attributes.some(({name}) => name === '_block_range'); } case PgEntityKind.CONSTRAINT: { return hasBlockRange(entity.class); // DOESNT WORK && notBlockRange(pgFieldIntrospection.foreignClass) } default: return true; } } ================================================ FILE: packages/query/src/graphql/plugins/index.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 /* eslint-disable */ import { SwallowErrorsPlugin, StandardTypesPlugin, NodePlugin, QueryPlugin, MutationPlugin, SubscriptionPlugin, ClientMutationIdDescriptionPlugin, MutationPayloadQueryPlugin, AddQueriesToSubscriptionsPlugin, TrimEmptyDescriptionsPlugin, } from 'graphile-build/node8plus/plugins'; import PgBasicsPlugin from '@subql/x-graphile-build-pg/node8plus/plugins/PgBasicsPlugin'; import PgIntrospectionPlugin from '@subql/x-graphile-build-pg/node8plus/plugins/PgIntrospectionPlugin'; import PgTypesPlugin from '@subql/x-graphile-build-pg/node8plus/plugins/PgTypesPlugin'; import PgTablesPlugin from '@subql/x-graphile-build-pg/node8plus/plugins/PgTablesPlugin'; import PgConnectionArgOrderByDefaultValue from '@subql/x-graphile-build-pg/node8plus/plugins/PgConnectionArgOrderByDefaultValue'; import PgConditionComputedColumnPlugin from '@subql/x-graphile-build-pg/node8plus/plugins/PgConditionComputedColumnPlugin'; import PgAllRows from '@subql/x-graphile-build-pg/node8plus/plugins/PgAllRows'; import PgColumnsPlugin from '@subql/x-graphile-build-pg/node8plus/plugins/PgColumnsPlugin'; import PgColumnDeprecationPlugin from '@subql/x-graphile-build-pg/node8plus/plugins/PgColumnDeprecationPlugin'; import PgForwardRelationPlugin from '@subql/x-graphile-build-pg/node8plus/plugins/PgForwardRelationPlugin'; import PgRowByUniqueConstraint from '@subql/x-graphile-build-pg/node8plus/plugins/PgRowByUniqueConstraint'; import PgComputedColumnsPlugin from '@subql/x-graphile-build-pg/node8plus/plugins/PgComputedColumnsPlugin'; import PgQueryProceduresPlugin from '@subql/x-graphile-build-pg/node8plus/plugins/PgQueryProceduresPlugin'; import PgOrderAllColumnsPlugin from '@subql/x-graphile-build-pg/node8plus/plugins/PgOrderAllColumnsPlugin'; import PgOrderComputedColumnsPlugin from '@subql/x-graphile-build-pg/node8plus/plugins/PgOrderComputedColumnsPlugin'; import PgOrderByPrimaryKeyPlugin from '@subql/x-graphile-build-pg/node8plus/plugins/PgOrderByPrimaryKeyPlugin'; import PgRowNode from '@subql/x-graphile-build-pg/node8plus/plugins/PgRowNode'; import PgNodeAliasPostGraphile from '@subql/x-graphile-build-pg/node8plus/plugins/PgNodeAliasPostGraphile'; import PgRecordReturnTypesPlugin from '@subql/x-graphile-build-pg/node8plus/plugins/PgRecordReturnTypesPlugin'; import PgRecordFunctionConnectionPlugin from '@subql/x-graphile-build-pg/node8plus/plugins/PgRecordFunctionConnectionPlugin'; import PgScalarFunctionConnectionPlugin from '@subql/x-graphile-build-pg/node8plus/plugins/PgScalarFunctionConnectionPlugin'; import PageInfoStartEndCursor from '@subql/x-graphile-build-pg/node8plus/plugins/PageInfoStartEndCursor'; import PgConnectionTotalCount from '@subql/x-graphile-build-pg/node8plus/plugins/PgConnectionTotalCount'; import PgSimplifyInflectorPlugin from '@graphile-contrib/pg-simplify-inflector'; import PgManyToManyPlugin from '@graphile-contrib/pg-many-to-many'; import ConnectionFilterPlugin from 'postgraphile-plugin-connection-filter'; import PgOrderByRelatedPlugin from '@graphile-contrib/pg-order-by-related'; // custom plugins import PgConnectionArgFirstLastBeforeAfter from './PgConnectionArgFirstLastBeforeAfter'; import PgBackwardRelationPlugin from './PgBackwardRelationPlugin'; import {GetMetadataPlugin} from './GetMetadataPlugin'; import {smartTagsPlugin} from './smartTagsPlugin'; import {makeAddInflectorsPlugin} from 'graphile-utils'; import PgAggregationPlugin from './PgAggregationPlugin'; import {PgRowByVirtualIdPlugin} from './PgRowByVirtualIdPlugin'; import {PgDistinctPlugin} from './PgDistinctPlugin'; import PgConnectionArgOrderBy from './PgOrderByUnique'; import historicalPlugins from './historical'; import {PgSearchPlugin} from './PgSearchPlugin'; /* eslint-enable */ export const defaultPlugins = [ SwallowErrorsPlugin, StandardTypesPlugin, NodePlugin, QueryPlugin, MutationPlugin, SubscriptionPlugin, ClientMutationIdDescriptionPlugin, MutationPayloadQueryPlugin, AddQueriesToSubscriptionsPlugin, TrimEmptyDescriptionsPlugin, ]; export const pgDefaultPlugins = [ PgBasicsPlugin, PgIntrospectionPlugin, PgTypesPlugin, // PgJWTPlugin, PgTablesPlugin, PgConnectionArgFirstLastBeforeAfter, PgConnectionArgOrderByDefaultValue, PgConditionComputedColumnPlugin, PgAllRows, PgColumnsPlugin, PgColumnDeprecationPlugin, PgForwardRelationPlugin, PgBackwardRelationPlugin, PgRowByUniqueConstraint, PgComputedColumnsPlugin, PgQueryProceduresPlugin, PgOrderAllColumnsPlugin, PgOrderComputedColumnsPlugin, PgOrderByPrimaryKeyPlugin, PgRowNode, PgNodeAliasPostGraphile, PgRecordReturnTypesPlugin, PgRecordFunctionConnectionPlugin, PgScalarFunctionConnectionPlugin, // For PostGraphile compatibility PageInfoStartEndCursor, // For PostGraphile compatibility PgConnectionTotalCount, ]; const plugins = [ ...defaultPlugins, ...pgDefaultPlugins, ...historicalPlugins, PgConnectionArgOrderBy, PgSimplifyInflectorPlugin, PgManyToManyPlugin, ConnectionFilterPlugin, smartTagsPlugin, GetMetadataPlugin, PgAggregationPlugin, PgRowByVirtualIdPlugin, PgDistinctPlugin, PgSearchPlugin, PgOrderByRelatedPlugin, makeAddInflectorsPlugin((inflectors) => { const {constantCase: oldConstantCase} = inflectors; const enumValues = new Set(); return { enumName: (v: string) => { enumValues.add(v); return v; }, constantCase: (v: string) => { // We don't want to change the names of all enum values to CONSTANT CASE // because they could be specified in non CONSTANT CASE in their schema.graphql if (enumValues.has(v)) { return v; } else { return oldConstantCase(v); } }, }; }, true), ]; export {plugins}; ================================================ FILE: packages/query/src/graphql/plugins/smartTagsPlugin.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import {MULTI_METADATA_REGEX, METADATA_REGEX, MULTI_GLOBAL_REGEX} from '@subql/utils'; import {PgEntity, PgEntityKind} from '@subql/x-graphile-build-pg'; import {makePgSmartTagsPlugin} from 'graphile-utils'; export const smartTagsPlugin = makePgSmartTagsPlugin([ { //Rule 1, omit `_metadata`, `_global` from node kind: PgEntityKind.CLASS, match: ({name}: PgEntity) => METADATA_REGEX.test(name) || MULTI_METADATA_REGEX.test(name) || MULTI_GLOBAL_REGEX.test(name), tags: { omit: true, }, }, // Omit _block_range column { kind: PgEntityKind.ATTRIBUTE, match: ({name}) => /^_block_range$/.test(name), tags: { omit: true, }, }, // Omit _id column { kind: PgEntityKind.ATTRIBUTE, match: ({name}) => /^_id$/.test(name), tags: { omit: true, }, }, ]); ================================================ FILE: packages/query/src/graphql/project.service.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import {Injectable} from '@nestjs/common'; import {Pool} from 'pg'; import {Config} from '../configure'; @Injectable() export class ProjectService { constructor( private readonly pool: Pool, private readonly config: Config ) {} async getProjectSchema(name: string): Promise { // After subqueries table has been deprecated, project may not be present in subqueries table const result = await this.pool .query<{schema_name: string}, any[]>(`SELECT schema_name FROM information_schema.schemata`) .then((obj) => obj.rows.map((x) => x.schema_name)) .catch((e) => { throw new Error(`Unable to fetch all database schemas: ${e}`); }); if (result.includes(name)) { return name; } else { // fallback to subqueries table const {rows} = await this.pool.query( `SELECT * FROM public.subqueries WHERE name = $1`, [name] ); if (rows.length === 0) { throw new Error(`unknown project name ${this.config.get('name')}`); } return rows[0].db_schema; } } } ================================================ FILE: packages/query/src/main.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 // import rxjs from 'rxjs'; This is a reminder that rxjs is a peer dependency of @nestjs/common import {NestFactory} from '@nestjs/core'; import {notifyUpdates} from '@subql/common'; import {findAvailablePort} from '@subql/utils'; import {AppModule} from './app.module'; import {getLogger, NestLogger} from './utils/logger'; import {getYargsOption} from './yargs'; const pjson = require('../package.json'); const DEFAULT_PORT = 3000; const {argv} = getYargsOption(); const logger = getLogger('subql-query'); notifyUpdates(pjson, logger); void (async () => { const app = await NestFactory.create(AppModule, { logger: new NestLogger(), }); const validate = (x: any) => { const p = parseInt(x); return isNaN(p) ? null : p; }; const port = validate(process.env.PORT) ?? validate(argv.port) ?? (await findAvailablePort(DEFAULT_PORT)); if (!port) { logger.error( `Unable to find available port (tried ports in range (${DEFAULT_PORT}..${ DEFAULT_PORT + 10 })). Try setting a free port manually by setting the PORT environment variable or by setting the --port flag` ); process.exit(1); } if (argv.playground) { logger.info(`Started playground at http://localhost:${port}`); } await app.listen(port); })(); ================================================ FILE: packages/query/src/utils/asyncInterval.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 //improve util method from : https://dev.to/jsmccrumb/asynchronous-setinterval-4j69 const asyncIntervals: {run: boolean; id: number | NodeJS.Timeout}[] = []; const runAsyncInterval = async (cb: () => any, interval: number, intervalIndex: number) => { await cb(); if (asyncIntervals[intervalIndex].run) { // eslint-disable-next-line @typescript-eslint/no-misused-promises asyncIntervals[intervalIndex].id = setTimeout(() => runAsyncInterval(cb, interval, intervalIndex), interval); } }; export const setAsyncInterval = (cb: () => any, interval: number) => { if (cb && typeof cb === 'function') { const intervalIndex = asyncIntervals.length; asyncIntervals.push({run: true, id: 0}); void runAsyncInterval(cb, interval, intervalIndex); return intervalIndex; } else { throw new Error('Callback must be a function'); } }; ================================================ FILE: packages/query/src/utils/logger.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import {LoggerService} from '@nestjs/common'; import {Logger} from '@subql/utils'; import Pino from 'pino'; import {argv} from '../yargs'; const outputFmt = argv('output-fmt') as 'json' | 'colored'; const logLevel = argv('log-level') as string | undefined; const logPath = argv('log-path') as string | undefined; const logRotate = argv('log-rotate') as boolean | undefined; const logger = new Logger({level: logLevel, filepath: logPath, rotate: logRotate, outputFormat: outputFmt}); export function getLogger(category: string): Pino.Logger { return logger.getLogger(category); } export class NestLogger implements LoggerService { private logger = logger.getLogger('nestjs'); error(message: any, trace?: string): void { if (trace) { this.logger.error({trace}, message); } else { this.logger.error(message); } } log(message: any): any { this.logger.info(message); } warn(message: any): any { this.logger.warn(message); } } export const PinoConfig = { logger: getLogger('express'), serializers: { req(req) { const body = req.raw.body; if ('operationName' in body && body.query) { // Logging IntrospectionQuery payload clutters logs and isn't useful if (body.operationName === 'IntrospectionQuery') { req.introspection = true; } else { req.payload = body.query; } } return req; }, }, autoLogging: { ignorePaths: ['/.well-known/apollo/server-health'], }, }; ================================================ FILE: packages/query/src/yargs.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 // import {argv as yargv} from 'yargs'; import {hideBin} from 'yargs/helpers'; import yargs from 'yargs/yargs'; // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types export function getYargsOption() { return yargs(hideBin(process.argv)) .env('SUBQL_QUERY') .options({ aggregate: { demandOption: false, default: true, describe: 'Enable aggregate feature', type: 'boolean', }, 'disable-hot-schema': { demandOption: false, describe: 'Hot reload schema on schema-changes', type: 'boolean', default: false, }, 'dictionary-optimisation': { demandOption: false, describe: 'Dictionary optimisation', type: 'boolean', default: false, }, indexer: { demandOption: false, describe: 'Url that allows query to access indexer metadata', type: 'string', }, 'log-level': { demandOption: false, describe: 'Specify log level to print.', type: 'string', default: 'info', choices: ['fatal', 'error', 'warn', 'info', 'debug', 'trace', 'silent'], }, 'log-path': { demandOption: false, describe: 'Path to create log file e.g ./src/name.log', type: 'string', }, 'log-rotate': { demandOption: false, describe: 'Rotate log files in directory specified by log-path', type: 'boolean', default: false, }, 'max-connection': { demandOption: false, describe: 'Max connection to pg pool', type: 'number', default: 10, }, name: { demandOption: true, alias: 'n', describe: 'Project name', type: 'string', }, 'output-fmt': { demandOption: false, describe: 'Print log as json or plain text', type: 'string', default: 'colored', choices: ['json', 'colored'], }, 'pg-ca': { demandOption: false, describe: 'Postgres ca certificate - to enables TLS/SSL connections to your PostgreSQL, path to the server certificate file are required, e.g /path/to/server-certificates/root.crt', type: 'string', }, 'pg-key': { demandOption: false, describe: 'Postgres client key - Path to key file e.g /path/to/client-key/postgresql.key', type: 'string', }, 'pg-cert': { demandOption: false, describe: 'Postgres client certificate - Path to client certificate e.g /path/to/client-certificates/postgresql.crt', type: 'string', }, port: { alias: 'p', demandOption: false, describe: 'The port the service will bind to', type: 'number', }, playground: { demandOption: false, describe: 'Enable graphql playground', type: 'boolean', }, 'query-limit': { demandOption: false, describe: 'Set limit on number of query results per entity', type: 'number', default: 100, }, 'query-batch-limit': { demandOption: false, describe: 'Set limit on number on the maximum batch queries', type: 'number', }, 'query-depth-limit': { demandOption: false, describe: 'Set limit on query depth', type: 'number', }, 'query-alias-limit': { demandOption: false, describe: 'Set limit on query alias limit', type: 'number', }, 'query-complexity': { demandOption: false, describe: 'Level of query complexity', type: 'number', }, 'query-timeout': { demandOption: false, describe: 'Query timeout in milliseconds', type: 'number', default: 10000, }, 'query-explain': { demandOption: false, describe: 'Explain query in SQL statement', type: 'boolean', }, unsafe: { demandOption: false, describe: 'Disable limits on query depth and allowable number returned query records', type: 'boolean', }, subscription: { demandOption: false, describe: 'Enable subscription service', type: 'boolean', default: false, }, 'sl-keep-alive-interval': { demandOption: false, describe: 'Schema listener keep-alive interval in milliseconds', type: 'number', default: 180000, }, }); } export function argv(arg: string): unknown { return getYargsOption().argv[arg]; } ================================================ FILE: packages/query/tsconfig.build.json ================================================ { "extends": "./tsconfig.json", "exclude": ["node_modules", "test", "dist", "**/*spec.ts"] } ================================================ FILE: packages/query/tsconfig.json ================================================ { "extends": "../../tsconfig.json", "compilerOptions": { "target": "es2017", "sourceMap": true, "tsBuildInfoFile": "dist/.tsbuildinfo", "rootDir": "src", "outDir": "./dist" }, "references": [{"path": "../common"}, {"path": "../types"}, {"path": "../utils"}], "include": ["src/**/*"] } ================================================ FILE: packages/testing/CHANGELOG.md ================================================ # Changelog All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). ## [Unreleased] ## [2.3.1] - 2025-11-05 ### Changed - Update package manager (#2937) ## [2.3.0] - 2025-07-01 ### Removed - Test files and artifacts from published package (#2838) ## [2.2.4] - 2025-02-26 ### Changed - Update subqlTest to support entities with alternative ID types (#2700) ## [2.2.3] - 2025-02-04 ### Changed - Update copyright header to 2025 ## [2.2.2] - 2024-10-23 ### Fixed - Bump version `@subql/types-core` ## [2.2.1] - 2024-07-09 ### Changed - Changes to ts build settings (#2475) ## [2.2.0] - 2024-06-21 ### Changed - Bump version with `@subql/types-core` ## [2.1.2] - 2024-06-18 ### Changed - Enable strict TS setting (#2446) ## [2.1.1] - 2024-04-24 ### Changed - Update headers to 2024 (#2237) ## [2.1.0] - 2023-10-17 ### Changed - Update with Typescript manifest (#2011) ## [2.0.2] - 2023-07-31 ### Fixed - Update license (#1891) ## [2.0.1] - 2023-05-11 ### Changed - Sync with `types@2.1.2` ## [2.0.0] - 2023-04-20 ### Added - Major release 2.0.0, align with other package versions [Unreleased]: https://github.com/subquery/subql/compare/testing/2.3.1...HEAD [2.3.1]: https://github.com/subquery/subql/compare/testing/2.3.0...testing/2.3.1 [2.3.0]: https://github.com/subquery/subql/compare/testing/2.2.4...testing/2.3.0 [2.2.4]: https://github.com/subquery/subql/compare/testing/2.2.3...testing/2.2.4 [2.2.3]: https://github.com/subquery/subql/compare/testing/2.2.2...testing/2.2.3 [2.2.2]: https://github.com/subquery/subql/compare/testing/2.2.1...testing/2.2.2 [2.2.1]: https://github.com/subquery/subql/compare/testing/2.2.0...testing/2.2.1 [2.2.0]: https://github.com/subquery/subql/compare/testing/2.1.2...testing/2.2.0 [2.1.2]: https://github.com/subquery/subql/compare/testing/2.1.1...testing/2.1.2 [2.1.1]: https://github.com/subquery/subql/compare/testing/2.1.0...testing/2.1.1 [2.1.0]: https://github.com/subquery/subql/compare/testing/2.0.2...testing/2.1.0 [2.0.2]: https://github.com/subquery/subql/compare/v2.0.1...v2.0.2 [2.0.1]: https://github.com/subquery/subql/compare/testing/2.0.0...testing/2.0.1 [2.0.0]: https://github.com/subquery/subql/tag/v2.0.0 ================================================ FILE: packages/testing/LICENSE ================================================ GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 Copyright (C) 2007 Free Software Foundation, Inc. Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The GNU General Public License is a free, copyleft license for software and other kinds of works. The licenses for most software and other practical works are designed to take away your freedom to share and change the works. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change all versions of a program--to make sure it remains free software for all its users. We, the Free Software Foundation, use the GNU General Public License for most of our software; it applies also to any other work released this way by its authors. You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for them if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs, and that you know you can do these things. To protect your rights, we need to prevent others from denying you these rights or asking you to surrender the rights. Therefore, you have certain responsibilities if you distribute copies of the software, or if you modify it: responsibilities to respect the freedom of others. For example, if you distribute copies of such a program, whether gratis or for a fee, you must pass on to the recipients the same freedoms that you received. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. Developers that use the GNU GPL protect your rights with two steps: (1) assert copyright on the software, and (2) offer you this License giving you legal permission to copy, distribute and/or modify it. For the developers' and authors' protection, the GPL clearly explains that there is no warranty for this free software. For both users' and authors' sake, the GPL requires that modified versions be marked as changed, so that their problems will not be attributed erroneously to authors of previous versions. Some devices are designed to deny users access to install or run modified versions of the software inside them, although the manufacturer can do so. This is fundamentally incompatible with the aim of protecting users' freedom to change the software. The systematic pattern of such abuse occurs in the area of products for individuals to use, which is precisely where it is most unacceptable. Therefore, we have designed this version of the GPL to prohibit the practice for those products. If such problems arise substantially in other domains, we stand ready to extend this provision to those domains in future versions of the GPL, as needed to protect the freedom of users. Finally, every program is threatened constantly by software patents. States should not allow patents to restrict development and use of software on general-purpose computers, but in those that do, we wish to avoid the special danger that patents applied to a free program could make it effectively proprietary. To prevent this, the GPL assures that patents cannot be used to render the program non-free. The precise terms and conditions for copying, distribution and modification follow. TERMS AND CONDITIONS 0. Definitions. "This License" refers to version 3 of the GNU General Public License. "Copyright" also means copyright-like laws that apply to other kinds of works, such as semiconductor masks. "The Program" refers to any copyrightable work licensed under this License. Each licensee is addressed as "you". "Licensees" and "recipients" may be individuals or organizations. To "modify" a work means to copy from or adapt all or part of the work in a fashion requiring copyright permission, other than the making of an exact copy. The resulting work is called a "modified version" of the earlier work or a work "based on" the earlier work. A "covered work" means either the unmodified Program or a work based on the Program. To "propagate" a work means to do anything with it that, without permission, would make you directly or secondarily liable for infringement under applicable copyright law, except executing it on a computer or modifying a private copy. Propagation includes copying, distribution (with or without modification), making available to the public, and in some countries other activities as well. To "convey" a work means any kind of propagation that enables other parties to make or receive copies. Mere interaction with a user through a computer network, with no transfer of a copy, is not conveying. An interactive user interface displays "Appropriate Legal Notices" to the extent that it includes a convenient and prominently visible feature that (1) displays an appropriate copyright notice, and (2) tells the user that there is no warranty for the work (except to the extent that warranties are provided), that licensees may convey the work under this License, and how to view a copy of this License. If the interface presents a list of user commands or options, such as a menu, a prominent item in the list meets this criterion. 1. Source Code. The "source code" for a work means the preferred form of the work for making modifications to it. "Object code" means any non-source form of a work. A "Standard Interface" means an interface that either is an official standard defined by a recognized standards body, or, in the case of interfaces specified for a particular programming language, one that is widely used among developers working in that language. The "System Libraries" of an executable work include anything, other than the work as a whole, that (a) is included in the normal form of packaging a Major Component, but which is not part of that Major Component, and (b) serves only to enable use of the work with that Major Component, or to implement a Standard Interface for which an implementation is available to the public in source code form. A "Major Component", in this context, means a major essential component (kernel, window system, and so on) of the specific operating system (if any) on which the executable work runs, or a compiler used to produce the work, or an object code interpreter used to run it. The "Corresponding Source" for a work in object code form means all the source code needed to generate, install, and (for an executable work) run the object code and to modify the work, including scripts to control those activities. However, it does not include the work's System Libraries, or general-purpose tools or generally available free programs which are used unmodified in performing those activities but which are not part of the work. For example, Corresponding Source includes interface definition files associated with source files for the work, and the source code for shared libraries and dynamically linked subprograms that the work is specifically designed to require, such as by intimate data communication or control flow between those subprograms and other parts of the work. The Corresponding Source need not include anything that users can regenerate automatically from other parts of the Corresponding Source. The Corresponding Source for a work in source code form is that same work. 2. Basic Permissions. All rights granted under this License are granted for the term of copyright on the Program, and are irrevocable provided the stated conditions are met. This License explicitly affirms your unlimited permission to run the unmodified Program. The output from running a covered work is covered by this License only if the output, given its content, constitutes a covered work. This License acknowledges your rights of fair use or other equivalent, as provided by copyright law. You may make, run and propagate covered works that you do not convey, without conditions so long as your license otherwise remains in force. You may convey covered works to others for the sole purpose of having them make modifications exclusively for you, or provide you with facilities for running those works, provided that you comply with the terms of this License in conveying all material for which you do not control copyright. Those thus making or running the covered works for you must do so exclusively on your behalf, under your direction and control, on terms that prohibit them from making any copies of your copyrighted material outside their relationship with you. Conveying under any other circumstances is permitted solely under the conditions stated below. Sublicensing is not allowed; section 10 makes it unnecessary. 3. Protecting Users' Legal Rights From Anti-Circumvention Law. No covered work shall be deemed part of an effective technological measure under any applicable law fulfilling obligations under article 11 of the WIPO copyright treaty adopted on 20 December 1996, or similar laws prohibiting or restricting circumvention of such measures. When you convey a covered work, you waive any legal power to forbid circumvention of technological measures to the extent such circumvention is effected by exercising rights under this License with respect to the covered work, and you disclaim any intention to limit operation or modification of the work as a means of enforcing, against the work's users, your or third parties' legal rights to forbid circumvention of technological measures. 4. Conveying Verbatim Copies. You may convey verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice; keep intact all notices stating that this License and any non-permissive terms added in accord with section 7 apply to the code; keep intact all notices of the absence of any warranty; and give all recipients a copy of this License along with the Program. You may charge any price or no price for each copy that you convey, and you may offer support or warranty protection for a fee. 5. Conveying Modified Source Versions. You may convey a work based on the Program, or the modifications to produce it from the Program, in the form of source code under the terms of section 4, provided that you also meet all of these conditions: a) The work must carry prominent notices stating that you modified it, and giving a relevant date. b) The work must carry prominent notices stating that it is released under this License and any conditions added under section 7. This requirement modifies the requirement in section 4 to "keep intact all notices". c) You must license the entire work, as a whole, under this License to anyone who comes into possession of a copy. This License will therefore apply, along with any applicable section 7 additional terms, to the whole of the work, and all its parts, regardless of how they are packaged. This License gives no permission to license the work in any other way, but it does not invalidate such permission if you have separately received it. d) If the work has interactive user interfaces, each must display Appropriate Legal Notices; however, if the Program has interactive interfaces that do not display Appropriate Legal Notices, your work need not make them do so. A compilation of a covered work with other separate and independent works, which are not by their nature extensions of the covered work, and which are not combined with it such as to form a larger program, in or on a volume of a storage or distribution medium, is called an "aggregate" if the compilation and its resulting copyright are not used to limit the access or legal rights of the compilation's users beyond what the individual works permit. Inclusion of a covered work in an aggregate does not cause this License to apply to the other parts of the aggregate. 6. Conveying Non-Source Forms. You may convey a covered work in object code form under the terms of sections 4 and 5, provided that you also convey the machine-readable Corresponding Source under the terms of this License, in one of these ways: a) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by the Corresponding Source fixed on a durable physical medium customarily used for software interchange. b) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by a written offer, valid for at least three years and valid for as long as you offer spare parts or customer support for that product model, to give anyone who possesses the object code either (1) a copy of the Corresponding Source for all the software in the product that is covered by this License, on a durable physical medium customarily used for software interchange, for a price no more than your reasonable cost of physically performing this conveying of source, or (2) access to copy the Corresponding Source from a network server at no charge. c) Convey individual copies of the object code with a copy of the written offer to provide the Corresponding Source. This alternative is allowed only occasionally and noncommercially, and only if you received the object code with such an offer, in accord with subsection 6b. d) Convey the object code by offering access from a designated place (gratis or for a charge), and offer equivalent access to the Corresponding Source in the same way through the same place at no further charge. You need not require recipients to copy the Corresponding Source along with the object code. If the place to copy the object code is a network server, the Corresponding Source may be on a different server (operated by you or a third party) that supports equivalent copying facilities, provided you maintain clear directions next to the object code saying where to find the Corresponding Source. Regardless of what server hosts the Corresponding Source, you remain obligated to ensure that it is available for as long as needed to satisfy these requirements. e) Convey the object code using peer-to-peer transmission, provided you inform other peers where the object code and Corresponding Source of the work are being offered to the general public at no charge under subsection 6d. A separable portion of the object code, whose source code is excluded from the Corresponding Source as a System Library, need not be included in conveying the object code work. A "User Product" is either (1) a "consumer product", which means any tangible personal property which is normally used for personal, family, or household purposes, or (2) anything designed or sold for incorporation into a dwelling. In determining whether a product is a consumer product, doubtful cases shall be resolved in favor of coverage. For a particular product received by a particular user, "normally used" refers to a typical or common use of that class of product, regardless of the status of the particular user or of the way in which the particular user actually uses, or expects or is expected to use, the product. A product is a consumer product regardless of whether the product has substantial commercial, industrial or non-consumer uses, unless such uses represent the only significant mode of use of the product. "Installation Information" for a User Product means any methods, procedures, authorization keys, or other information required to install and execute modified versions of a covered work in that User Product from a modified version of its Corresponding Source. The information must suffice to ensure that the continued functioning of the modified object code is in no case prevented or interfered with solely because modification has been made. If you convey an object code work under this section in, or with, or specifically for use in, a User Product, and the conveying occurs as part of a transaction in which the right of possession and use of the User Product is transferred to the recipient in perpetuity or for a fixed term (regardless of how the transaction is characterized), the Corresponding Source conveyed under this section must be accompanied by the Installation Information. But this requirement does not apply if neither you nor any third party retains the ability to install modified object code on the User Product (for example, the work has been installed in ROM). The requirement to provide Installation Information does not include a requirement to continue to provide support service, warranty, or updates for a work that has been modified or installed by the recipient, or for the User Product in which it has been modified or installed. Access to a network may be denied when the modification itself materially and adversely affects the operation of the network or violates the rules and protocols for communication across the network. Corresponding Source conveyed, and Installation Information provided, in accord with this section must be in a format that is publicly documented (and with an implementation available to the public in source code form), and must require no special password or key for unpacking, reading or copying. 7. Additional Terms. "Additional permissions" are terms that supplement the terms of this License by making exceptions from one or more of its conditions. Additional permissions that are applicable to the entire Program shall be treated as though they were included in this License, to the extent that they are valid under applicable law. If additional permissions apply only to part of the Program, that part may be used separately under those permissions, but the entire Program remains governed by this License without regard to the additional permissions. When you convey a copy of a covered work, you may at your option remove any additional permissions from that copy, or from any part of it. (Additional permissions may be written to require their own removal in certain cases when you modify the work.) You may place additional permissions on material, added by you to a covered work, for which you have or can give appropriate copyright permission. Notwithstanding any other provision of this License, for material you add to a covered work, you may (if authorized by the copyright holders of that material) supplement the terms of this License with terms: a) Disclaiming warranty or limiting liability differently from the terms of sections 15 and 16 of this License; or b) Requiring preservation of specified reasonable legal notices or author attributions in that material or in the Appropriate Legal Notices displayed by works containing it; or c) Prohibiting misrepresentation of the origin of that material, or requiring that modified versions of such material be marked in reasonable ways as different from the original version; or d) Limiting the use for publicity purposes of names of licensors or authors of the material; or e) Declining to grant rights under trademark law for use of some trade names, trademarks, or service marks; or f) Requiring indemnification of licensors and authors of that material by anyone who conveys the material (or modified versions of it) with contractual assumptions of liability to the recipient, for any liability that these contractual assumptions directly impose on those licensors and authors. All other non-permissive additional terms are considered "further restrictions" within the meaning of section 10. If the Program as you received it, or any part of it, contains a notice stating that it is governed by this License along with a term that is a further restriction, you may remove that term. If a license document contains a further restriction but permits relicensing or conveying under this License, you may add to a covered work material governed by the terms of that license document, provided that the further restriction does not survive such relicensing or conveying. If you add terms to a covered work in accord with this section, you must place, in the relevant source files, a statement of the additional terms that apply to those files, or a notice indicating where to find the applicable terms. Additional terms, permissive or non-permissive, may be stated in the form of a separately written license, or stated as exceptions; the above requirements apply either way. 8. Termination. You may not propagate or modify a covered work except as expressly provided under this License. Any attempt otherwise to propagate or modify it is void, and will automatically terminate your rights under this License (including any patent licenses granted under the third paragraph of section 11). However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation. Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means, this is the first time you have received notice of violation of this License (for any work) from that copyright holder, and you cure the violation prior to 30 days after your receipt of the notice. Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under this License. If your rights have been terminated and not permanently reinstated, you do not qualify to receive new licenses for the same material under section 10. 9. Acceptance Not Required for Having Copies. You are not required to accept this License in order to receive or run a copy of the Program. Ancillary propagation of a covered work occurring solely as a consequence of using peer-to-peer transmission to receive a copy likewise does not require acceptance. However, nothing other than this License grants you permission to propagate or modify any covered work. These actions infringe copyright if you do not accept this License. Therefore, by modifying or propagating a covered work, you indicate your acceptance of this License to do so. 10. Automatic Licensing of Downstream Recipients. Each time you convey a covered work, the recipient automatically receives a license from the original licensors, to run, modify and propagate that work, subject to this License. You are not responsible for enforcing compliance by third parties with this License. An "entity transaction" is a transaction transferring control of an organization, or substantially all assets of one, or subdividing an organization, or merging organizations. If propagation of a covered work results from an entity transaction, each party to that transaction who receives a copy of the work also receives whatever licenses to the work the party's predecessor in interest had or could give under the previous paragraph, plus a right to possession of the Corresponding Source of the work from the predecessor in interest, if the predecessor has it or can get it with reasonable efforts. You may not impose any further restrictions on the exercise of the rights granted or affirmed under this License. For example, you may not impose a license fee, royalty, or other charge for exercise of rights granted under this License, and you may not initiate litigation (including a cross-claim or counterclaim in a lawsuit) alleging that any patent claim is infringed by making, using, selling, offering for sale, or importing the Program or any portion of it. 11. Patents. A "contributor" is a copyright holder who authorizes use under this License of the Program or a work on which the Program is based. The work thus licensed is called the contributor's "contributor version". A contributor's "essential patent claims" are all patent claims owned or controlled by the contributor, whether already acquired or hereafter acquired, that would be infringed by some manner, permitted by this License, of making, using, or selling its contributor version, but do not include claims that would be infringed only as a consequence of further modification of the contributor version. For purposes of this definition, "control" includes the right to grant patent sublicenses in a manner consistent with the requirements of this License. Each contributor grants you a non-exclusive, worldwide, royalty-free patent license under the contributor's essential patent claims, to make, use, sell, offer for sale, import and otherwise run, modify and propagate the contents of its contributor version. In the following three paragraphs, a "patent license" is any express agreement or commitment, however denominated, not to enforce a patent (such as an express permission to practice a patent or covenant not to sue for patent infringement). To "grant" such a patent license to a party means to make such an agreement or commitment not to enforce a patent against the party. If you convey a covered work, knowingly relying on a patent license, and the Corresponding Source of the work is not available for anyone to copy, free of charge and under the terms of this License, through a publicly available network server or other readily accessible means, then you must either (1) cause the Corresponding Source to be so available, or (2) arrange to deprive yourself of the benefit of the patent license for this particular work, or (3) arrange, in a manner consistent with the requirements of this License, to extend the patent license to downstream recipients. "Knowingly relying" means you have actual knowledge that, but for the patent license, your conveying the covered work in a country, or your recipient's use of the covered work in a country, would infringe one or more identifiable patents in that country that you have reason to believe are valid. If, pursuant to or in connection with a single transaction or arrangement, you convey, or propagate by procuring conveyance of, a covered work, and grant a patent license to some of the parties receiving the covered work authorizing them to use, propagate, modify or convey a specific copy of the covered work, then the patent license you grant is automatically extended to all recipients of the covered work and works based on it. A patent license is "discriminatory" if it does not include within the scope of its coverage, prohibits the exercise of, or is conditioned on the non-exercise of one or more of the rights that are specifically granted under this License. You may not convey a covered work if you are a party to an arrangement with a third party that is in the business of distributing software, under which you make payment to the third party based on the extent of your activity of conveying the work, and under which the third party grants, to any of the parties who would receive the covered work from you, a discriminatory patent license (a) in connection with copies of the covered work conveyed by you (or copies made from those copies), or (b) primarily for and in connection with specific products or compilations that contain the covered work, unless you entered into that arrangement, or that patent license was granted, prior to 28 March 2007. Nothing in this License shall be construed as excluding or limiting any implied license or other defenses to infringement that may otherwise be available to you under applicable patent law. 12. No Surrender of Others' Freedom. If conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot convey a covered work so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not convey it at all. For example, if you agree to terms that obligate you to collect a royalty for further conveying from those to whom you convey the Program, the only way you could satisfy both those terms and this License would be to refrain entirely from conveying the Program. 13. Use with the GNU Affero General Public License. Notwithstanding any other provision of this License, you have permission to link or combine any covered work with a work licensed under version 3 of the GNU Affero General Public License into a single combined work, and to convey the resulting work. The terms of this License will continue to apply to the part which is the covered work, but the special requirements of the GNU Affero General Public License, section 13, concerning interaction through a network will apply to the combination as such. 14. Revised Versions of this License. The Free Software Foundation may publish revised and/or new versions of the GNU General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies that a certain numbered version of the GNU General Public License "or any later version" applies to it, you have the option of following the terms and conditions either of that numbered version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of the GNU General Public License, you may choose any version ever published by the Free Software Foundation. If the Program specifies that a proxy can decide which future versions of the GNU General Public License can be used, that proxy's public statement of acceptance of a version permanently authorizes you to choose that version for the Program. Later license versions may give you additional or different permissions. However, no additional obligations are imposed on any author or copyright holder as a result of your choosing to follow a later version. 15. Disclaimer of Warranty. THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 16. Limitation of Liability. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. 17. Interpretation of Sections 15 and 16. If the disclaimer of warranty and limitation of liability provided above cannot be given local legal effect according to their terms, reviewing courts shall apply local law that most closely approximates an absolute waiver of all civil liability in connection with the Program, unless a warranty or assumption of liability accompanies a copy of the Program in return for a fee. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively state the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . Also add information on how to contact you by electronic and paper mail. If the program does terminal interaction, make it output a short notice like this when it starts in an interactive mode: Copyright (C) This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, your program's commands might be different; for a GUI interface, you would use an "about box". You should also get your employer (if you work as a programmer) or school, if any, to sign a "copyright disclaimer" for the program, if necessary. For more information on this, and how to apply and follow the GNU GPL, see . The GNU General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. But first, please read . ================================================ FILE: packages/testing/package.json ================================================ { "name": "@subql/testing", "version": "2.3.1", "scripts": { "test": "echo \"Error: no test specified\" && exit 1", "build": "rm -rf dist && tsc -b", "changelog:release": "echo \"Updating changelog $npm_package_version\" && npx chan release $npm_package_version --git-url \"https://github.com/subquery/subql\" --release-prefix=\"testing/\"" }, "main": "dist/index.js", "license": "GPL-3.0", "files": [ "/dist", "!/dist/**/*.spec.js", "!/dist/**/*.spec.d.ts", "!/dist/**/*.spec.js.map", "!/dist/**/*.test.js", "!/dist/**/*.test.d.ts", "!/dist/**/*.test.js.map", "package.json", "README.md", "CHANGELOG.md", "LICENSE" ], "dependencies": { "@subql/types-core": "workspace:^" } } ================================================ FILE: packages/testing/src/index.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 export * from './interfaces'; import {CompatEntity} from '@subql/types-core'; // Register test functions to a global array export function subqlTest = CompatEntity>( name: string, blockHeight: number, dependentEntities: E[], expectedEntities: E[], handler: string ): void { (global as any).subqlTests = (global as any).subqlTests ?? []; (global as any).subqlTests.push({ name, blockHeight, dependentEntities, expectedEntities, handler, }); } ================================================ FILE: packages/testing/src/interfaces.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import {Entity} from '@subql/types-core'; export type HandlerFunction = (input: T) => Promise; export type SubqlTest = { name: string; blockHeight: number; dependentEntities: Entity[]; expectedEntities: Entity[]; handler: string; }; ================================================ FILE: packages/testing/tsconfig.json ================================================ { "extends": "../../tsconfig.json", "compilerOptions": { "tsBuildInfoFile": "dist/.tsbuildinfo", "rootDir": "src", "outDir": "dist", "noImplicitAny": true }, "include": ["src/**/*"], "references": [{"path": "../common"}, {"path": "../common-substrate"}] } ================================================ FILE: packages/types/CHANGELOG.md ================================================ # Changelog All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). ## [Unreleased] ## [3.15.0] - 2025-10-15 ### Changed - Minor improvements and fixes from upgrading to eslint 9 with stricter settings (#2929) ## [3.14.2] - 2025-09-16 ### Changed - Update polkadot dependenices (#2915) ## [3.14.1] - 2025-07-17 ### Changed - Workspace dependencies now match to patch versions rather than exact (#2855) ## [3.14.0] - 2025-07-14 ### Changed - Update to `@polkadot/api@^16` (#2845) ## [3.13.0] - 2025-07-01 ### Removed - Test files and artifacts from published package (#2838) ## [3.12.2] - 2025-04-24 ### Changed - Update polkadot dependencies ## [3.12.1] - 2025-02-26 ### Changed - Update types core ## [3.12.0] - 2025-02-19 ### Changed - Update polkadot api to 15 (#2680) ### Removed - Redundant internal type (#2677) ## [3.11.5] - 2025-02-04 ### Changed - Update copyright header to 2025 ## [3.11.4] - 2024-11-25 ### Added - Update polkadot/api library to 14 version ## [3.11.3] - 2024-10-23 ### Fixed - Bump version `@subql/types-core` ## [3.11.2] - 2024-08-14 ### Added - Update polkadot/api library ## [3.11.1] - 2024-08-12 ### Fixed - DS Processor types not being able to distinguish input and filter types (#2522) ## [3.11.0] - 2024-08-05 ### Changed - Update dependencies (#2518) ## [3.10.0] - 2024-08-01 ### Fixed - Fix timestamp can be undefined (#2514) ### Changed - Bump version with `@subql/types-core` ## [3.9.0] - 2024-07-09 ### Changed - Enable TS strict setting. ### Removed - Deprecated types relating to datasource processors (#2475) ## [3.8.0] - 2024-07-01 ### Changed - Bump version with `@subql/types-core` ## [3.7.0] - 2024-06-21 ### Changed - Bump version with `@subql/types-core` ## [3.6.1] - 2024-06-12 ### Changed - Update polkadot dependencies to 11.2.1 (#2440) ## [3.6.0] - 2024-05-08 ### Changed - Update polkadot dependencies to v11 ## [3.5.0] - 2024-04-24 ### Changed - Use ds processor types from `@subql/types-core` (#2357) ## [3.4.0] - 2024-03-28 ### Added - Add IBlock interface for block content of all networks, also support dictionary to be array type (#2257) ## [3.3.1] - 2024-02-07 ### Changed - Update `@subql/types-core` ## [3.3.0] - 2023-10-31 ### Changed - Import types-core global so there is no need to update tsconfig - Update `@subql/types-core` to add support for endBlock ## [3.2.0] - 2023-10-20 ### Changed - Version bump with `types-core` 0.2.0 ## [3.1.2] - 2023-10-04 ### Fixed - `@subql/types-core` being a devDep instead of a dep ## [3.1.1] - 2023-10-03 ### Changed - Version bump with `types-core` 0.1.1 ## [3.1.0] - 2023-10-02 ### Changed - Update project types with `types-core` 0.1.0 (#2056) ## [3.0.1] - 2023-09-28 ### Changed - Move non-specific types to types-core package, add `SubstrateProject` type to define project manifest in typescript. (#2011) ### Added - New LightBlock type (#1968) - `getByFields` function to store interface (#1993) ## [2.2.0] - 2023-08-16 ### Added - `isSigned` filter to call handler (#1940) ### Changed - Allow boolean types in DictionaryQueryCondition (#1940) ## [2.1.4] - 2023-08-11 ### Fixed - Fix missing `unsafeApi` in global (#1935) ## [2.1.3] - 2023-07-31 ### Fixed - Update license (#1891) ## [2.1.2] - 2023-05-11 ### Added - Inject the chain id into sandboxes (#1684) ## [2.1.1] - 2023-05-11 ### Changed - `DictionaryQueryCondition` type (#1679) ## [2.1.0] - 2023-05-10 ### Added - `bulkRemove` method on the store. (#1666) ## [2.0.0] - 2023-04-20 ### Changed - Major release 2.0.0, align with other package versions - Update interfaces to support testing framework (#1584) - Removed `count` method from `Store` ## [1.7.2] - 2023-03-29 ### Changed - Update polkadot api to 10.1.4 (#1580) ## [1.7.1] - 2023-01-23 ### Added - Add `count` to `Store` interface (#1480) ## [1.7.0] - 2022-12-06 ### Added - Support for `bypassBlocks` (#1435) ## [1.6.0] - 2022-10-27 ### Added - Timestamp filter to block handlers (#1310) ## [1.5.1] - 2022-10-11 ### Added - Matcher to dictionary query condition. (#1345) ## [1.5.0] - 2022-09-13 ### Changed - Change types to support wasm processor and update polkadot API to v9. (#1280) ## [1.4.0] - 2022-08-26 ### Changed - Minor release ### Changed - Updated store.getByField to have limit and offset options. `getByField(entity: string, field: string, value: any, options?: {offset?: number; limit?: number}): Promise;`. (#1259) ## [1.3.0] - 2022-08-17 ### Added - `bulkUpdate` and `bulkGet` to the injected store. This can be used to optimise handlers and speed up indexing. (#1246) ## [1.2.1] - 2022-08-04 ### Fixed - Export `EventTypeRecord`. (#1225) ## [1.2.0] - 2022-07-27 ### Changed - Update `SubstrateBlockFilter` with new `modulo` filter. (#1196) - Make `SubstrateExtrinsic` and `SubstrateEvent` types generic. This allows specifying the data/args type rather than being provided with `Codec[]` or `AnyTuple`. (#1194) ## [1.1.0] - 2022-05-31 ### Changed - Update name for substrate types (#1012) ## [1.0.0] - 2022-05-11 ### Changed - Major release ## [0.15.0] - 2022-05-02 ### Changed - Update polkadot 8.2.1 (#910) ## [0.14.0] - 2022-02-09 ### Added - inject `createDynamicDatasource` in global (#773) ## [0.13.0] - 2022-01-13 ### Changed - Update Polkadot/api to 7.3.1 (#745) ## [0.12.0] - 2021-12-16 ### Added - Add `bulkCreate` in `Store` interface (#699) ## [0.11.0] - 2021-11-27 ### Changed - Update patch api type (#638) ## [0.10.1] - 2021-11-19 ### Changed - Update patch api type (#638) ## [0.10.0] - 2021-11-03 ### Changed - Update interface under project for Moonbeam custom datasource processor (#579) ### Added - Add interface `FunctionPropertyNames` improve types of entity creation (#573) ## [0.9.0] - 2021-10-26 ### Changed - Update Polkadot/api to v6 (#548) - Move project manifest types to @subql/types because it is now also required by subquery project. (#512) ## [0.8.5] - 2021-10-12 ### Changed - Update Polkadot/api to 6.3.1 (#505) ## [0.8.4] - 2021-09-16 ### Changed - Update Polkadot/api to 5.9.1 (#476) ## [0.8.3] - 2021-09-01 ### Changed - Update Polkadot/api to 5.7.1 (#460) ## [0.8.2] - 2021-08-20 ### Changed - Update Polkadot/api to 5.5.2 (#439) ## [0.8.1] - 2021-08-16 ### Changed - Update Polkadot/api to 5.5.1 (#433) ## [0.8.0] - 2021-06-25 ### Changed - Update dependencies (#358) ## [0.7.0] - 2021-04-20 ### Fixed - inject logger module in global(#248) ### Added - Expose events in SubstrateBlock (#256) - Injecting logger to sandbox's global (#259) - Store support querying by indexed field (#271) ## [0.6.1] - 2021-03-11 ### Fixed - patch release with other packages (#228) ## [0.6.0] - 2021-01-27 ### Fixed - fix crash for events not own by extrinsic (#120) ## [0.5.0] - 2021-01-25 ### Added - patch and inject api in sandbox context (#103) - support specVersion filter and success filter (#106) ### Changed - bump @polkadot/api to v3.6.3 (#109) ## [0.3.0] - 2021-01-06 ### Added - support callHandler and eventHandler (#47) ## [0.2.0] - 2020-12-22 ### Added - support block handler [Unreleased]: https://github.com/subquery/subql/compare/types/3.15.0...HEAD [3.15.0]: https://github.com/subquery/subql/compare/types/3.14.2...types/3.15.0 [3.14.2]: https://github.com/subquery/subql/compare/types/3.14.1...types/3.14.2 [3.14.1]: https://github.com/subquery/subql/compare/types/3.14.0...types/3.14.1 [3.14.0]: https://github.com/subquery/subql/compare/types/3.13.0...types/3.14.0 [3.13.0]: https://github.com/subquery/subql/compare/types/3.12.2...types/3.13.0 [3.12.2]: https://github.com/subquery/subql/compare/types/3.12.1...types/3.12.2 [3.12.1]: https://github.com/subquery/subql/compare/types/3.12.0...types/3.12.1 [3.12.0]: https://github.com/subquery/subql/compare/types/3.11.5...types/3.12.0 [3.11.5]: https://github.com/subquery/subql/compare/types/3.11.4...types/3.11.5 [3.11.4]: https://github.com/subquery/subql/compare/types/3.11.3...types/3.11.4 [3.11.3]: https://github.com/subquery/subql/compare/types/3.11.2...types/3.11.3 [3.11.2]: https://github.com/subquery/subql/compare/types/3.11.1...types/3.11.2 [3.11.1]: https://github.com/subquery/subql/compare/types/3.11.0...types/3.11.1 [3.11.0]: https://github.com/subquery/subql/compare/types/3.10.0...types/3.11.0 [3.10.0]: https://github.com/subquery/subql/compare/types/3.9.0...types/3.10.0 [3.9.0]: https://github.com/subquery/subql/compare/types/3.8.0...types/3.9.0 [3.8.0]: https://github.com/subquery/subql/compare/types/3.7.0...types/3.8.0 [3.7.0]: https://github.com/subquery/subql/compare/types/3.6.1...types/3.7.0 [3.6.1]: https://github.com/subquery/subql/compare/types/3.6.0...types/3.6.1 [3.6.0]: https://github.com/subquery/subql/compare/types/3.5.0...types/3.6.0 [3.5.0]: https://github.com/subquery/subql/compare/types/3.4.0...types/3.5.0 [3.4.0]: https://github.com/subquery/subql/compare/types/3.3.1...types/3.4.0 [3.3.1]: https://github.com/subquery/subql/compare/types/3.3.0...types/3.3.1 [3.3.0]: https://github.com/subquery/subql/compare/types/3.2.0...types/3.3.0 [3.2.0]: https://github.com/subquery/subql/compare/types/3.1.2...types/3.2.0 [3.1.2]: https://github.com/subquery/subql/compare/types/3.1.1...types/3.1.2 [3.1.1]: https://github.com/subquery/subql/compare/types/3.1.0...types/3.1.1 [3.1.0]: https://github.com/subquery/subql/compare/types/3.0.1...types/3.1.0 [3.0.1]: https://github.com/subquery/subql/compare/types/2.2.0...types/3.0.1 [2.2.0]: https://github.com/subquery/subql/compare/types/2.1.4...types/2.2.0 [2.1.4]: https://github.com/subquery/subql/compare/types/2.1.3...types/2.1.4 [2.1.3]: https://github.com/subquery/subql/compare/types/2.1.2...types/2.1.3 [2.1.2]: https://github.com/subquery/subql/compare/types/2.1.1...types/2.1.2 [2.1.1]: https://github.com/subquery/subql/compare/types/2.1.1...types/2.1.1 [2.1.0]: https://github.com/subquery/subql/compare/types/2.0.0...types/2.1.0 [2.0.0]: https://github.com/subquery/subql/compare/types/1.7.2...types/2.0.0 [1.7.2]: https://github.com/subquery/subql/compare/types/1.7.1...types/1.7.2 [1.7.1]: https://github.com/subquery/subql/compare/types/1.7.0...types/1.7.1 [1.7.0]: https://github.com/subquery/subql/compare/types/1.6.0...types/1.7.0 [1.6.0]: https://github.com/subquery/subql/compare/types/1.5.1...types/1.6.0 [1.5.1]: https://github.com/subquery/subql/compare/types/1.5.0...types/1.5.1 [1.5.0]: https://github.com/subquery/subql/compare/types/1.4.0...types/1.5.0 [1.4.0]: https://github.com/subquery/subql/compare/types/1.3.0...types/1.4.0 [1.3.0]: https://github.com/subquery/subql/compare/types/1.2.1...types/1.3.0 [1.2.1]: https://github.com/subquery/subql/compare/types/1.2.0...types/1.2.1 [1.2.0]: https://github.com/subquery/subql/compare/types/1.1.0...types/1.2.0 [1.1.0]: https://github.com/subquery/subql/compare/types/1.0.0...types/1.1.0 [1.0.0]: https://github.com/subquery/subql/compare/types/0.15.0...types/1.0.0 [0.15.0]: https://github.com/subquery/subql/compare/types/0.14.0...types/0.15.0 [0.14.0]: https://github.com/subquery/subql/compare/types/0.13.0...types/0.14.0 [0.13.0]: https://github.com/subquery/subql/compare/types/0.12.0...types/0.13.0 [0.12.0]: https://github.com/subquery/subql/compare/types/0.11.0...types/0.12.0 [0.11.0]: https://github.com/subquery/subql/compare/types/0.10.0...types/0.11.0 [0.10.1]: https://github.com/subquery/subql/compare/types/0.10.0...types/0.10.1 [0.10.0]: https://github.com/subquery/subql/compare/types/0.9.0...types/0.10.0 [0.9.0]: https://github.com/subquery/subql/compare/types/0.8.5...types/0.9.0 [0.8.5]: https://github.com/subquery/subql/compare/types/0.8.4...types/0.8.5 [0.8.4]: https://github.com/subquery/subql/compare/types/0.8.3...types/0.8.4 [0.8.3]: https://github.com/subquery/subql/compare/types/0.8.2...types/0.8.3 [0.8.2]: https://github.com/subquery/subql/compare/types/0.8.1...types/0.8.2 [0.8.1]: https://github.com/subquery/subql/compare/types/0.8.0...types/0.8.1 [0.8.0]: https://github.com/subquery/subql/compare/types/0.7.0...types/0.8.0 [0.7.0]: https://github.com/subquery/subql/compare/types/0.6.1...types/0.7.0 [0.6.1]: https://github.com/subquery/subql/compare/types/0.6.0...types/0.6.1 [0.6.0]: https://github.com/subquery/subql/compare/types/0.5.0...types/0.6.0 [0.5.0]: https://github.com/subquery/subql/compare/types/0.3.0...types/0.5.0 [0.3.0]: https://github.com/subquery/subql/compare/types/0.2.0...types/0.3.0 [0.2.0]: https://github.com/subquery/subql/tag/v0.2.0 ================================================ FILE: packages/types/LICENSE ================================================ GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 Copyright (C) 2007 Free Software Foundation, Inc. Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The GNU General Public License is a free, copyleft license for software and other kinds of works. The licenses for most software and other practical works are designed to take away your freedom to share and change the works. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change all versions of a program--to make sure it remains free software for all its users. We, the Free Software Foundation, use the GNU General Public License for most of our software; it applies also to any other work released this way by its authors. You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for them if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs, and that you know you can do these things. To protect your rights, we need to prevent others from denying you these rights or asking you to surrender the rights. Therefore, you have certain responsibilities if you distribute copies of the software, or if you modify it: responsibilities to respect the freedom of others. For example, if you distribute copies of such a program, whether gratis or for a fee, you must pass on to the recipients the same freedoms that you received. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. Developers that use the GNU GPL protect your rights with two steps: (1) assert copyright on the software, and (2) offer you this License giving you legal permission to copy, distribute and/or modify it. For the developers' and authors' protection, the GPL clearly explains that there is no warranty for this free software. For both users' and authors' sake, the GPL requires that modified versions be marked as changed, so that their problems will not be attributed erroneously to authors of previous versions. Some devices are designed to deny users access to install or run modified versions of the software inside them, although the manufacturer can do so. This is fundamentally incompatible with the aim of protecting users' freedom to change the software. The systematic pattern of such abuse occurs in the area of products for individuals to use, which is precisely where it is most unacceptable. Therefore, we have designed this version of the GPL to prohibit the practice for those products. If such problems arise substantially in other domains, we stand ready to extend this provision to those domains in future versions of the GPL, as needed to protect the freedom of users. Finally, every program is threatened constantly by software patents. States should not allow patents to restrict development and use of software on general-purpose computers, but in those that do, we wish to avoid the special danger that patents applied to a free program could make it effectively proprietary. To prevent this, the GPL assures that patents cannot be used to render the program non-free. The precise terms and conditions for copying, distribution and modification follow. TERMS AND CONDITIONS 0. Definitions. "This License" refers to version 3 of the GNU General Public License. "Copyright" also means copyright-like laws that apply to other kinds of works, such as semiconductor masks. "The Program" refers to any copyrightable work licensed under this License. Each licensee is addressed as "you". "Licensees" and "recipients" may be individuals or organizations. To "modify" a work means to copy from or adapt all or part of the work in a fashion requiring copyright permission, other than the making of an exact copy. The resulting work is called a "modified version" of the earlier work or a work "based on" the earlier work. A "covered work" means either the unmodified Program or a work based on the Program. To "propagate" a work means to do anything with it that, without permission, would make you directly or secondarily liable for infringement under applicable copyright law, except executing it on a computer or modifying a private copy. Propagation includes copying, distribution (with or without modification), making available to the public, and in some countries other activities as well. To "convey" a work means any kind of propagation that enables other parties to make or receive copies. Mere interaction with a user through a computer network, with no transfer of a copy, is not conveying. An interactive user interface displays "Appropriate Legal Notices" to the extent that it includes a convenient and prominently visible feature that (1) displays an appropriate copyright notice, and (2) tells the user that there is no warranty for the work (except to the extent that warranties are provided), that licensees may convey the work under this License, and how to view a copy of this License. If the interface presents a list of user commands or options, such as a menu, a prominent item in the list meets this criterion. 1. Source Code. The "source code" for a work means the preferred form of the work for making modifications to it. "Object code" means any non-source form of a work. A "Standard Interface" means an interface that either is an official standard defined by a recognized standards body, or, in the case of interfaces specified for a particular programming language, one that is widely used among developers working in that language. The "System Libraries" of an executable work include anything, other than the work as a whole, that (a) is included in the normal form of packaging a Major Component, but which is not part of that Major Component, and (b) serves only to enable use of the work with that Major Component, or to implement a Standard Interface for which an implementation is available to the public in source code form. A "Major Component", in this context, means a major essential component (kernel, window system, and so on) of the specific operating system (if any) on which the executable work runs, or a compiler used to produce the work, or an object code interpreter used to run it. The "Corresponding Source" for a work in object code form means all the source code needed to generate, install, and (for an executable work) run the object code and to modify the work, including scripts to control those activities. However, it does not include the work's System Libraries, or general-purpose tools or generally available free programs which are used unmodified in performing those activities but which are not part of the work. For example, Corresponding Source includes interface definition files associated with source files for the work, and the source code for shared libraries and dynamically linked subprograms that the work is specifically designed to require, such as by intimate data communication or control flow between those subprograms and other parts of the work. The Corresponding Source need not include anything that users can regenerate automatically from other parts of the Corresponding Source. The Corresponding Source for a work in source code form is that same work. 2. Basic Permissions. All rights granted under this License are granted for the term of copyright on the Program, and are irrevocable provided the stated conditions are met. This License explicitly affirms your unlimited permission to run the unmodified Program. The output from running a covered work is covered by this License only if the output, given its content, constitutes a covered work. This License acknowledges your rights of fair use or other equivalent, as provided by copyright law. You may make, run and propagate covered works that you do not convey, without conditions so long as your license otherwise remains in force. You may convey covered works to others for the sole purpose of having them make modifications exclusively for you, or provide you with facilities for running those works, provided that you comply with the terms of this License in conveying all material for which you do not control copyright. Those thus making or running the covered works for you must do so exclusively on your behalf, under your direction and control, on terms that prohibit them from making any copies of your copyrighted material outside their relationship with you. Conveying under any other circumstances is permitted solely under the conditions stated below. Sublicensing is not allowed; section 10 makes it unnecessary. 3. Protecting Users' Legal Rights From Anti-Circumvention Law. No covered work shall be deemed part of an effective technological measure under any applicable law fulfilling obligations under article 11 of the WIPO copyright treaty adopted on 20 December 1996, or similar laws prohibiting or restricting circumvention of such measures. When you convey a covered work, you waive any legal power to forbid circumvention of technological measures to the extent such circumvention is effected by exercising rights under this License with respect to the covered work, and you disclaim any intention to limit operation or modification of the work as a means of enforcing, against the work's users, your or third parties' legal rights to forbid circumvention of technological measures. 4. Conveying Verbatim Copies. You may convey verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice; keep intact all notices stating that this License and any non-permissive terms added in accord with section 7 apply to the code; keep intact all notices of the absence of any warranty; and give all recipients a copy of this License along with the Program. You may charge any price or no price for each copy that you convey, and you may offer support or warranty protection for a fee. 5. Conveying Modified Source Versions. You may convey a work based on the Program, or the modifications to produce it from the Program, in the form of source code under the terms of section 4, provided that you also meet all of these conditions: a) The work must carry prominent notices stating that you modified it, and giving a relevant date. b) The work must carry prominent notices stating that it is released under this License and any conditions added under section 7. This requirement modifies the requirement in section 4 to "keep intact all notices". c) You must license the entire work, as a whole, under this License to anyone who comes into possession of a copy. This License will therefore apply, along with any applicable section 7 additional terms, to the whole of the work, and all its parts, regardless of how they are packaged. This License gives no permission to license the work in any other way, but it does not invalidate such permission if you have separately received it. d) If the work has interactive user interfaces, each must display Appropriate Legal Notices; however, if the Program has interactive interfaces that do not display Appropriate Legal Notices, your work need not make them do so. A compilation of a covered work with other separate and independent works, which are not by their nature extensions of the covered work, and which are not combined with it such as to form a larger program, in or on a volume of a storage or distribution medium, is called an "aggregate" if the compilation and its resulting copyright are not used to limit the access or legal rights of the compilation's users beyond what the individual works permit. Inclusion of a covered work in an aggregate does not cause this License to apply to the other parts of the aggregate. 6. Conveying Non-Source Forms. You may convey a covered work in object code form under the terms of sections 4 and 5, provided that you also convey the machine-readable Corresponding Source under the terms of this License, in one of these ways: a) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by the Corresponding Source fixed on a durable physical medium customarily used for software interchange. b) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by a written offer, valid for at least three years and valid for as long as you offer spare parts or customer support for that product model, to give anyone who possesses the object code either (1) a copy of the Corresponding Source for all the software in the product that is covered by this License, on a durable physical medium customarily used for software interchange, for a price no more than your reasonable cost of physically performing this conveying of source, or (2) access to copy the Corresponding Source from a network server at no charge. c) Convey individual copies of the object code with a copy of the written offer to provide the Corresponding Source. This alternative is allowed only occasionally and noncommercially, and only if you received the object code with such an offer, in accord with subsection 6b. d) Convey the object code by offering access from a designated place (gratis or for a charge), and offer equivalent access to the Corresponding Source in the same way through the same place at no further charge. You need not require recipients to copy the Corresponding Source along with the object code. If the place to copy the object code is a network server, the Corresponding Source may be on a different server (operated by you or a third party) that supports equivalent copying facilities, provided you maintain clear directions next to the object code saying where to find the Corresponding Source. Regardless of what server hosts the Corresponding Source, you remain obligated to ensure that it is available for as long as needed to satisfy these requirements. e) Convey the object code using peer-to-peer transmission, provided you inform other peers where the object code and Corresponding Source of the work are being offered to the general public at no charge under subsection 6d. A separable portion of the object code, whose source code is excluded from the Corresponding Source as a System Library, need not be included in conveying the object code work. A "User Product" is either (1) a "consumer product", which means any tangible personal property which is normally used for personal, family, or household purposes, or (2) anything designed or sold for incorporation into a dwelling. In determining whether a product is a consumer product, doubtful cases shall be resolved in favor of coverage. For a particular product received by a particular user, "normally used" refers to a typical or common use of that class of product, regardless of the status of the particular user or of the way in which the particular user actually uses, or expects or is expected to use, the product. A product is a consumer product regardless of whether the product has substantial commercial, industrial or non-consumer uses, unless such uses represent the only significant mode of use of the product. "Installation Information" for a User Product means any methods, procedures, authorization keys, or other information required to install and execute modified versions of a covered work in that User Product from a modified version of its Corresponding Source. The information must suffice to ensure that the continued functioning of the modified object code is in no case prevented or interfered with solely because modification has been made. If you convey an object code work under this section in, or with, or specifically for use in, a User Product, and the conveying occurs as part of a transaction in which the right of possession and use of the User Product is transferred to the recipient in perpetuity or for a fixed term (regardless of how the transaction is characterized), the Corresponding Source conveyed under this section must be accompanied by the Installation Information. But this requirement does not apply if neither you nor any third party retains the ability to install modified object code on the User Product (for example, the work has been installed in ROM). The requirement to provide Installation Information does not include a requirement to continue to provide support service, warranty, or updates for a work that has been modified or installed by the recipient, or for the User Product in which it has been modified or installed. Access to a network may be denied when the modification itself materially and adversely affects the operation of the network or violates the rules and protocols for communication across the network. Corresponding Source conveyed, and Installation Information provided, in accord with this section must be in a format that is publicly documented (and with an implementation available to the public in source code form), and must require no special password or key for unpacking, reading or copying. 7. Additional Terms. "Additional permissions" are terms that supplement the terms of this License by making exceptions from one or more of its conditions. Additional permissions that are applicable to the entire Program shall be treated as though they were included in this License, to the extent that they are valid under applicable law. If additional permissions apply only to part of the Program, that part may be used separately under those permissions, but the entire Program remains governed by this License without regard to the additional permissions. When you convey a copy of a covered work, you may at your option remove any additional permissions from that copy, or from any part of it. (Additional permissions may be written to require their own removal in certain cases when you modify the work.) You may place additional permissions on material, added by you to a covered work, for which you have or can give appropriate copyright permission. Notwithstanding any other provision of this License, for material you add to a covered work, you may (if authorized by the copyright holders of that material) supplement the terms of this License with terms: a) Disclaiming warranty or limiting liability differently from the terms of sections 15 and 16 of this License; or b) Requiring preservation of specified reasonable legal notices or author attributions in that material or in the Appropriate Legal Notices displayed by works containing it; or c) Prohibiting misrepresentation of the origin of that material, or requiring that modified versions of such material be marked in reasonable ways as different from the original version; or d) Limiting the use for publicity purposes of names of licensors or authors of the material; or e) Declining to grant rights under trademark law for use of some trade names, trademarks, or service marks; or f) Requiring indemnification of licensors and authors of that material by anyone who conveys the material (or modified versions of it) with contractual assumptions of liability to the recipient, for any liability that these contractual assumptions directly impose on those licensors and authors. All other non-permissive additional terms are considered "further restrictions" within the meaning of section 10. If the Program as you received it, or any part of it, contains a notice stating that it is governed by this License along with a term that is a further restriction, you may remove that term. If a license document contains a further restriction but permits relicensing or conveying under this License, you may add to a covered work material governed by the terms of that license document, provided that the further restriction does not survive such relicensing or conveying. If you add terms to a covered work in accord with this section, you must place, in the relevant source files, a statement of the additional terms that apply to those files, or a notice indicating where to find the applicable terms. Additional terms, permissive or non-permissive, may be stated in the form of a separately written license, or stated as exceptions; the above requirements apply either way. 8. Termination. You may not propagate or modify a covered work except as expressly provided under this License. Any attempt otherwise to propagate or modify it is void, and will automatically terminate your rights under this License (including any patent licenses granted under the third paragraph of section 11). However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation. Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means, this is the first time you have received notice of violation of this License (for any work) from that copyright holder, and you cure the violation prior to 30 days after your receipt of the notice. Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under this License. If your rights have been terminated and not permanently reinstated, you do not qualify to receive new licenses for the same material under section 10. 9. Acceptance Not Required for Having Copies. You are not required to accept this License in order to receive or run a copy of the Program. Ancillary propagation of a covered work occurring solely as a consequence of using peer-to-peer transmission to receive a copy likewise does not require acceptance. However, nothing other than this License grants you permission to propagate or modify any covered work. These actions infringe copyright if you do not accept this License. Therefore, by modifying or propagating a covered work, you indicate your acceptance of this License to do so. 10. Automatic Licensing of Downstream Recipients. Each time you convey a covered work, the recipient automatically receives a license from the original licensors, to run, modify and propagate that work, subject to this License. You are not responsible for enforcing compliance by third parties with this License. An "entity transaction" is a transaction transferring control of an organization, or substantially all assets of one, or subdividing an organization, or merging organizations. If propagation of a covered work results from an entity transaction, each party to that transaction who receives a copy of the work also receives whatever licenses to the work the party's predecessor in interest had or could give under the previous paragraph, plus a right to possession of the Corresponding Source of the work from the predecessor in interest, if the predecessor has it or can get it with reasonable efforts. You may not impose any further restrictions on the exercise of the rights granted or affirmed under this License. For example, you may not impose a license fee, royalty, or other charge for exercise of rights granted under this License, and you may not initiate litigation (including a cross-claim or counterclaim in a lawsuit) alleging that any patent claim is infringed by making, using, selling, offering for sale, or importing the Program or any portion of it. 11. Patents. A "contributor" is a copyright holder who authorizes use under this License of the Program or a work on which the Program is based. The work thus licensed is called the contributor's "contributor version". A contributor's "essential patent claims" are all patent claims owned or controlled by the contributor, whether already acquired or hereafter acquired, that would be infringed by some manner, permitted by this License, of making, using, or selling its contributor version, but do not include claims that would be infringed only as a consequence of further modification of the contributor version. For purposes of this definition, "control" includes the right to grant patent sublicenses in a manner consistent with the requirements of this License. Each contributor grants you a non-exclusive, worldwide, royalty-free patent license under the contributor's essential patent claims, to make, use, sell, offer for sale, import and otherwise run, modify and propagate the contents of its contributor version. In the following three paragraphs, a "patent license" is any express agreement or commitment, however denominated, not to enforce a patent (such as an express permission to practice a patent or covenant not to sue for patent infringement). To "grant" such a patent license to a party means to make such an agreement or commitment not to enforce a patent against the party. If you convey a covered work, knowingly relying on a patent license, and the Corresponding Source of the work is not available for anyone to copy, free of charge and under the terms of this License, through a publicly available network server or other readily accessible means, then you must either (1) cause the Corresponding Source to be so available, or (2) arrange to deprive yourself of the benefit of the patent license for this particular work, or (3) arrange, in a manner consistent with the requirements of this License, to extend the patent license to downstream recipients. "Knowingly relying" means you have actual knowledge that, but for the patent license, your conveying the covered work in a country, or your recipient's use of the covered work in a country, would infringe one or more identifiable patents in that country that you have reason to believe are valid. If, pursuant to or in connection with a single transaction or arrangement, you convey, or propagate by procuring conveyance of, a covered work, and grant a patent license to some of the parties receiving the covered work authorizing them to use, propagate, modify or convey a specific copy of the covered work, then the patent license you grant is automatically extended to all recipients of the covered work and works based on it. A patent license is "discriminatory" if it does not include within the scope of its coverage, prohibits the exercise of, or is conditioned on the non-exercise of one or more of the rights that are specifically granted under this License. You may not convey a covered work if you are a party to an arrangement with a third party that is in the business of distributing software, under which you make payment to the third party based on the extent of your activity of conveying the work, and under which the third party grants, to any of the parties who would receive the covered work from you, a discriminatory patent license (a) in connection with copies of the covered work conveyed by you (or copies made from those copies), or (b) primarily for and in connection with specific products or compilations that contain the covered work, unless you entered into that arrangement, or that patent license was granted, prior to 28 March 2007. Nothing in this License shall be construed as excluding or limiting any implied license or other defenses to infringement that may otherwise be available to you under applicable patent law. 12. No Surrender of Others' Freedom. If conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot convey a covered work so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not convey it at all. For example, if you agree to terms that obligate you to collect a royalty for further conveying from those to whom you convey the Program, the only way you could satisfy both those terms and this License would be to refrain entirely from conveying the Program. 13. Use with the GNU Affero General Public License. Notwithstanding any other provision of this License, you have permission to link or combine any covered work with a work licensed under version 3 of the GNU Affero General Public License into a single combined work, and to convey the resulting work. The terms of this License will continue to apply to the part which is the covered work, but the special requirements of the GNU Affero General Public License, section 13, concerning interaction through a network will apply to the combination as such. 14. Revised Versions of this License. The Free Software Foundation may publish revised and/or new versions of the GNU General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies that a certain numbered version of the GNU General Public License "or any later version" applies to it, you have the option of following the terms and conditions either of that numbered version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of the GNU General Public License, you may choose any version ever published by the Free Software Foundation. If the Program specifies that a proxy can decide which future versions of the GNU General Public License can be used, that proxy's public statement of acceptance of a version permanently authorizes you to choose that version for the Program. Later license versions may give you additional or different permissions. However, no additional obligations are imposed on any author or copyright holder as a result of your choosing to follow a later version. 15. Disclaimer of Warranty. THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 16. Limitation of Liability. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. 17. Interpretation of Sections 15 and 16. If the disclaimer of warranty and limitation of liability provided above cannot be given local legal effect according to their terms, reviewing courts shall apply local law that most closely approximates an absolute waiver of all civil liability in connection with the Program, unless a warranty or assumption of liability accompanies a copy of the Program in return for a fee. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively state the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . Also add information on how to contact you by electronic and paper mail. If the program does terminal interaction, make it output a short notice like this when it starts in an interactive mode: Copyright (C) This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, your program's commands might be different; for a GUI interface, you would use an "about box". You should also get your employer (if you work as a programmer) or school, if any, to sign a "copyright disclaimer" for the program, if necessary. For more information on this, and how to apply and follow the GNU GPL, see . The GNU General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. But first, please read . ================================================ FILE: packages/types/package.json ================================================ { "name": "@subql/types", "version": "3.15.0", "description": "", "homepage": "https://github.com/subquery/subql", "repository": "github:subquery/subql", "scripts": { "test": "echo \"Error: no test specified\" && exit 1", "build": "rm -rf dist && tsc -b", "changelog:release": "echo \"Updating changelog $npm_package_version\" && npx chan release $npm_package_version --git-url \"https://github.com/subquery/subql\" --release-prefix=\"types/\"" }, "author": "Ian He", "main": "dist/index.js", "license": "GPL-3.0", "files": [ "src/global.d.ts", "/dist", "!/dist/**/*.spec.js", "!/dist/**/*.spec.d.ts", "!/dist/**/*.spec.js.map", "!/dist/**/*.test.js", "!/dist/**/*.test.d.ts", "!/dist/**/*.test.js.map", "package.json", "README.md", "CHANGELOG.md", "LICENSE" ], "dependencies": { "@subql/types-core": "workspace:~" }, "peerDependencies": { "@polkadot/api": "^16" }, "devDependencies": { "@polkadot/api": "^16.4.7" } } ================================================ FILE: packages/types/src/global.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import {ApiPromise} from '@polkadot/api'; import {ApiDecoration} from '@polkadot/api/types'; import '@subql/types-core/dist/global'; type ApiAt = ApiDecoration<'promise'> & {rpc: ApiPromise['rpc']}; declare global { const api: ApiAt; const unsafeApi: ApiPromise | undefined; } ================================================ FILE: packages/types/src/index.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 export * from './interfaces'; export * from './project'; ================================================ FILE: packages/types/src/interfaces.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import {GenericExtrinsic} from '@polkadot/types/extrinsic'; import {EventRecord, SignedBlock, Header} from '@polkadot/types/interfaces'; import {IEvent} from '@polkadot/types/types'; import {AnyTuple, Codec} from '@polkadot/types-codec/types'; export interface SubstrateBlock extends SignedBlock { // parent block's spec version, can be used to decide the correct metadata that should be used for this block. specVersion: number; timestamp: Date | undefined; events: EventRecord[]; } export interface SubstrateExtrinsic { // index in the block idx: number; extrinsic: GenericExtrinsic; block: SubstrateBlock; events: TypedEventRecord[]; success: boolean; } interface BaseSubstrateEvent extends TypedEventRecord { // index in the block idx: number; } // A subset of SubstrateBlock with just the header export interface BlockHeader { block: { header: Header; }; events: EventRecord[]; } export interface LightSubstrateEvent extends BaseSubstrateEvent { block: BlockHeader; } export interface SubstrateEvent extends BaseSubstrateEvent { extrinsic?: SubstrateExtrinsic; block: SubstrateBlock; } export type TypedEventRecord = Omit & { event: IEvent; }; ================================================ FILE: packages/types/src/project.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import {ApiPromise} from '@polkadot/api'; import {AnyTuple} from '@polkadot/types/types'; import { BaseTemplateDataSource, IProjectNetworkConfig, CommonSubqueryProject, FileReference, Processor, ProjectManifestV1_0_0, BlockFilter, BaseDataSource, BaseHandler, BaseMapping, BaseCustomDataSource, HandlerInputTransformer_0_0_0 as BaseHandlerInputTransformer_0_0_0, HandlerInputTransformer_1_0_0 as BaseHandlerInputTransformer_1_0_0, SecondLayerHandlerProcessor_0_0_0, SecondLayerHandlerProcessor_1_0_0, DsProcessor, } from '@subql/types-core'; import {LightSubstrateEvent, SubstrateBlock, SubstrateEvent, SubstrateExtrinsic} from './interfaces'; export type RuntimeDatasourceTemplate = BaseTemplateDataSource; export type CustomDatasourceTemplate = BaseTemplateDataSource; export type SubstrateProjectManifestV1_0_0 = ProjectManifestV1_0_0< SubstrateRuntimeDatasource | SubstrateCustomDatasource >; /** * Kind of Substrate datasource. * @enum {string} */ export enum SubstrateDatasourceKind { /** * The runtime kind of Substrate datasource. */ Runtime = 'substrate/Runtime', } /** * Enum representing the kind of Substrate handler. * @enum {string} */ export enum SubstrateHandlerKind { /** * Handler for Substrate blocks. */ Block = 'substrate/BlockHandler', /** * Handler for Substrate extrinsic calls. */ Call = 'substrate/CallHandler', /** * Handler for Substrate events. */ Event = 'substrate/EventHandler', } export type RuntimeHandlerInputMap = { [SubstrateHandlerKind.Block]: SubstrateBlock; [SubstrateHandlerKind.Event]: SubstrateEvent | LightSubstrateEvent; [SubstrateHandlerKind.Call]: SubstrateExtrinsic; }; type RuntimeFilterMap = { [SubstrateHandlerKind.Block]: SubstrateBlockFilter; [SubstrateHandlerKind.Event]: SubstrateEventFilter; [SubstrateHandlerKind.Call]: SubstrateCallFilter; }; // [startSpecVersion?, endSpecVersion?] closed range export type SpecVersionRange = [number, number]; interface SubstrateBaseHandlerFilter { specVersion?: SpecVersionRange; } /** * Represents a filter for Substrate blocks, extending SubstrateBaseHandlerFilter. * @interface * @extends {SubstrateBaseHandlerFilter} */ export interface SubstrateBlockFilter extends SubstrateBaseHandlerFilter, BlockFilter {} /** * Represents a filter for Substrate events, extending SubstrateBaseHandlerFilter. * @interface * @extends {SubstrateBaseHandlerFilter} */ export interface SubstrateEventFilter extends SubstrateBaseHandlerFilter { /** * The module name for filtering events or calls (optional). * @type {string} * @example * module: 'balances' */ module?: string; /** * The method name for filtering events calls (case-sensitive) (optional). * @type {string} * @example * method: 'Transfer' */ method?: string; } /** * Represents a filter for Substrate calls, extending SubstrateEventFilter. * @interface * @extends {SubstrateEventFilter} * @example * filter: { * module: 'balances', * method: 'Deposit', * success: true, * } */ export interface SubstrateCallFilter extends SubstrateEventFilter { /** * Indicates whether the call was successful (optional). * @type {boolean} */ success?: boolean; /** * Indicates whether the call is signed (optional). * @type {boolean} */ isSigned?: boolean; } /** * Represents a handler for Substrate blocks. * @type {SubstrateCustomHandler} */ export type SubstrateBlockHandler = SubstrateCustomHandler; /** * Represents a handler for Substrate calls. * @type {SubstrateCustomHandler} */ export type SubstrateCallHandler = SubstrateCustomHandler; /** * Represents a handler for Substrate events. * @type {SubstrateCustomHandler} */ export type SubstrateEventHandler = SubstrateCustomHandler; /** * Represents a generic custom handler for Substrate. * @interface * @template K - The kind of the handler (default: string). * @template F - The filter type for the handler (default: Record). */ export interface SubstrateCustomHandler> extends BaseHandler { /** * The kind of handler. For `substrate/Runtime` datasources this is either `Block`, `Call` or `Event` kinds. * The value of this will determine the filter options as well as the data provided to your handler function * @type {SubstrateHandlerKind.Block | SubstrateHandlerKind.Call | SubstrateHandlerKind.Event | string } * @example * kind: SubstrateHandlerKind.Block // Defined with an enum, this is used for runtime datasources * @example * kind: 'substrate/FrontierEvmEvent' // Defined with a string, this is used with custom datasources */ kind: K; /** * @type {F} * @example * filter: { * module: 'balances', * method: 'Deposit', * success: true, * } // A Call filter */ filter?: F; } /** * Represents a runtime handler for Substrate, which can be a block handler, call handler, or event handler. * @type {SubstrateBlockHandler | SubstrateCallHandler | SubstrateEventHandler} */ export type SubstrateRuntimeHandler = SubstrateBlockHandler | SubstrateCallHandler | SubstrateEventHandler; /** * Represents a handler for Substrate, which can be a runtime handler or a custom handler with unknown filter type. * @type {SubstrateRuntimeHandler | SubstrateCustomHandler} */ export type SubstrateHandler = SubstrateRuntimeHandler | SubstrateCustomHandler; /** * Represents a filter for Substrate runtime handlers, which can be a block filter, call filter, or event filter. * @type {SubstrateBlockFilter | SubstrateCallFilter | SubstrateEventFilter} */ export type SubstrateRuntimeHandlerFilter = SubstrateBlockFilter | SubstrateCallFilter | SubstrateEventFilter; /** * Represents a mapping for Substrate handlers, extending FileReference. * @interface * @extends {FileReference} */ export interface SubstrateMapping extends BaseMapping { /** * @type {T[]} * @example * handlers: [{ kind: SubstrateHandlerKind.Call, handler: 'handleCall', filter: { module: 'balances', method: 'Deposit', success: true, } }] */ handlers: T[]; } /** * Represents a runtime datasource for Substrate. * @interface * @template M - The mapping type for the datasource (default: SubstrateMapping). */ export interface SubstrateRuntimeDatasource< M extends SubstrateMapping = SubstrateMapping, > extends BaseDataSource { /** * The kind of the datasource, which is `substrate/Runtime`. * @type {SubstrateDatasourceKind.Runtime} */ kind: SubstrateDatasourceKind.Runtime; } /** * Represents a Substrate datasource, which can be either runtime or custom. * @type {SubstrateDatasource} */ export type SubstrateDatasource = SubstrateRuntimeDatasource | SubstrateCustomDatasource; /** * Represents a custom datasource for Substrate. * @interface * @template K - The kind of the datasource (default: string). * @template M - The mapping type for the datasource (default: SubstrateMapping). * @template O - The processor options (default: any). */ export interface SubstrateCustomDatasource< K extends string = string, M extends SubstrateMapping = SubstrateMapping, O = any, > extends BaseCustomDataSource { /** * The kind of the custom datasource. This should follow the pattern `substrate/*`. * @type {K} * @example * kind: 'substrate/FrontierEvm' */ kind: K; /** * @example * processor: { * file: './node_modules/@subql/frontier-evm-processor/dist/bundle.js', * options: { * abi: 'erc20', * address: '0x322E86852e492a7Ee17f28a78c663da38FB33bfb', * } * } */ processor: Processor; } /** * @deprecated use types core version. datasource processors need updating before this can be removed * */ export type HandlerInputTransformer_0_0_0< IT extends AnyTuple, IM extends RuntimeHandlerInputMap, T extends SubstrateHandlerKind, E, DS extends SubstrateCustomDatasource = SubstrateCustomDatasource, > = BaseHandlerInputTransformer_0_0_0; /** * @deprecated use types core version. datasource processors need updating before this can be removed * */ export type HandlerInputTransformer_1_0_0< IT extends AnyTuple, IM extends RuntimeHandlerInputMap, T extends SubstrateHandlerKind, F extends Record, E, DS extends SubstrateCustomDatasource = SubstrateCustomDatasource, > = BaseHandlerInputTransformer_1_0_0; export type SecondLayerHandlerProcessorArray< K extends string, F extends Record, T, DS extends SubstrateCustomDatasource = SubstrateCustomDatasource, > = | SecondLayerHandlerProcessor | SecondLayerHandlerProcessor | SecondLayerHandlerProcessor; /** * @deprecated use types core version. datasource processors need updating before this can be removed * */ export type SubstrateDatasourceProcessor< K extends string, F extends Record, DS extends SubstrateCustomDatasource = SubstrateCustomDatasource, P extends Record> = Record< string, SecondLayerHandlerProcessorArray >, > = DsProcessor; export type SecondLayerHandlerProcessor< K extends SubstrateHandlerKind, F extends Record, E, DS extends SubstrateCustomDatasource = SubstrateCustomDatasource, > = | SecondLayerHandlerProcessor_0_0_0 | SecondLayerHandlerProcessor_1_0_0; /** * Represents a Substrate subquery network configuration, which is based on the CommonSubqueryNetworkConfig template. * @type {IProjectNetworkConfig} */ export type SubstrateNetworkConfig = IProjectNetworkConfig & { /** * The chain types associated with the network (optional). * @type {FileReference} */ chaintypes?: FileReference; // Align with previous field name }; /** * Represents a Substrate project configuration based on the CommonSubqueryProject template. * @type {CommonSubqueryProject} */ export type SubstrateProject = CommonSubqueryProject< SubstrateNetworkConfig, SubstrateRuntimeDatasource | DS, BaseTemplateDataSource | BaseTemplateDataSource >; ================================================ FILE: packages/types/tsconfig.json ================================================ { "extends": "../../tsconfig.json", "compilerOptions": { "strictNullChecks": true, "tsBuildInfoFile": "dist/.tsbuildinfo", "rootDir": "src", "outDir": "dist", "noImplicitAny": true }, "references": [{"path": "../types-core"}], "include": ["src/**/*"] } ================================================ FILE: packages/types-core/CHANGELOG.md ================================================ # Changelog All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). ## [Unreleased] ## [2.2.0] - 2025-10-15 ### Changed - Minor improvements and fixes from upgrading to eslint 9 with stricter settings (#2929) ## [2.1.1] - 2025-07-14 ### Fixed - Missing deps for imported deps (#2842) ## [2.1.0] - 2025-07-01 ### Removed - Test files and artifacts from published package (#2838) ## [2.0.2] - 2025-02-26 ### Added - CompatEntity type for when using alternative ID types (#2700) ## [2.0.1] - 2025-02-04 ### Changed - Update copyright header to 2025 ## [2.0.0] - 2024-10-21 ### Changed - Update store interface making options.limit required on getByField(s) methods (#2567) ## [1.1.1] - 2024-08-12 ### Fixed - DS Processor types not being able to distinguish input and filter types (#2522) ## [1.1.0] - 2024-08-05 ### Changed - Update dependencies (#2518) ## [1.0.0] - 2024-08-01 ### Added - New endpoint type to allow specifying endpoint config (#2511) ## [0.10.0] - 2024-07-11 ### Changed - Make assets optional on `BaseAssetsDataSource` (#2484) ## [0.9.1] - 2024-07-09 ### Changed - Changes to ts build settings (#2475) ## [0.9.0] - 2024-07-01 ### Added - Add generic network module types (#2462) ## [0.8.0] - 2024-06-21 ### Changed - Reader interface not returning undefined ## [0.7.0] - 2024-04-24 ### Added - GetOptions type with support for ordering store methods (#2325) - Generic ds processor types from types (#2357) ## [0.6.0] - 2024-03-28 ### Changed - Dictionary type changed (#2257) ## [0.5.0] - 2024-02-07 ### Added - Update `ParentProject` to use `untilBlock` as and alias for `block` (#2235) ## [0.4.0] - 2023-11-27 ### Changed - Split out `BaseAssetsDataSource` interface from `BaseCustomDataSource` (#2182) ## [0.3.0] - 2023-10-31 ### Added - New `endBlock` option on datasources (#2064) ## [0.2.0] - 2023-10-20 ### Added - Add cache to injected globals (#2110) ### Changed - Update `ProjectManifestV1_0_0` with generic networkConfig (#2061) ## [0.1.0] - 2023-10-02 ### Changed - Update `BaseDataSource` and `BaseCustomDataSource` with JSDoc (#2056) ## [0.0.1] - 2023-09-29 ### Added - Initial release of new package containing types common to all chains [Unreleased]: https://github.com/subquery/subql/compare/types-core/2.2.0...HEAD [2.2.0]: https://github.com/subquery/subql/compare/types-core/2.1.1...types-core/2.2.0 [2.1.1]: https://github.com/subquery/subql/compare/types-core/2.1.0...types-core/2.1.1 [2.1.0]: https://github.com/subquery/subql/compare/types-core/2.0.2...types-core/2.1.0 [2.0.2]: https://github.com/subquery/subql/compare/types-core/2.0.1...types-core/2.0.2 [2.0.1]: https://github.com/subquery/subql/compare/types-core/2.0.0...types-core/2.0.1 [2.0.0]: https://github.com/subquery/subql/compare/types-core/1.1.1...types-core/2.0.0 [1.1.1]: https://github.com/subquery/subql/compare/types-core/1.1.0...types-core/1.1.1 [1.1.0]: https://github.com/subquery/subql/compare/types-core/1.0.0...types-core/1.1.0 [1.0.0]: https://github.com/subquery/subql/compare/types-core/0.10.0...types-core/1.0.0 [0.10.0]: https://github.com/subquery/subql/compare/types-core/0.9.1...types-core/0.10.0 [0.9.1]: https://github.com/subquery/subql/compare/types-core/0.9.0...types-core/0.9.1 [0.9.0]: https://github.com/subquery/subql/compare/types-core/0.8.0...types-core/0.9.0 [0.8.0]: https://github.com/subquery/subql/compare/types-core/0.7.0...types-core/0.8.0 [0.7.0]: https://github.com/subquery/subql/compare/types-core/0.6.0...types-core/0.7.0 [0.6.0]: https://github.com/subquery/subql/compare/types-core/0.5.0...types-core/0.6.0 [0.5.0]: https://github.com/subquery/subql/compare/types-core/0.4.0...types-core/0.5.0 [0.4.0]: https://github.com/subquery/subql/compare/types-core/0.3.0...types-core/0.4.0 [0.3.0]: https://github.com/subquery/subql/compare/types-core/0.2.0...types-core/0.3.0 [0.2.0]: https://github.com/subquery/subql/compare/types-core/0.1.0...types-core/0.2.0 [0.1.0]: https://github.com/subquery/subql/compare/types-core/0.0.1...types-core/0.1.0 [0.0.1]: https://github.com/subquery/subql/tag/types-core/0.0.1 ================================================ FILE: packages/types-core/LICENSE ================================================ GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 Copyright (C) 2007 Free Software Foundation, Inc. Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The GNU General Public License is a free, copyleft license for software and other kinds of works. The licenses for most software and other practical works are designed to take away your freedom to share and change the works. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change all versions of a program--to make sure it remains free software for all its users. We, the Free Software Foundation, use the GNU General Public License for most of our software; it applies also to any other work released this way by its authors. You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for them if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs, and that you know you can do these things. To protect your rights, we need to prevent others from denying you these rights or asking you to surrender the rights. Therefore, you have certain responsibilities if you distribute copies of the software, or if you modify it: responsibilities to respect the freedom of others. For example, if you distribute copies of such a program, whether gratis or for a fee, you must pass on to the recipients the same freedoms that you received. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. Developers that use the GNU GPL protect your rights with two steps: (1) assert copyright on the software, and (2) offer you this License giving you legal permission to copy, distribute and/or modify it. For the developers' and authors' protection, the GPL clearly explains that there is no warranty for this free software. For both users' and authors' sake, the GPL requires that modified versions be marked as changed, so that their problems will not be attributed erroneously to authors of previous versions. Some devices are designed to deny users access to install or run modified versions of the software inside them, although the manufacturer can do so. This is fundamentally incompatible with the aim of protecting users' freedom to change the software. The systematic pattern of such abuse occurs in the area of products for individuals to use, which is precisely where it is most unacceptable. Therefore, we have designed this version of the GPL to prohibit the practice for those products. If such problems arise substantially in other domains, we stand ready to extend this provision to those domains in future versions of the GPL, as needed to protect the freedom of users. Finally, every program is threatened constantly by software patents. States should not allow patents to restrict development and use of software on general-purpose computers, but in those that do, we wish to avoid the special danger that patents applied to a free program could make it effectively proprietary. To prevent this, the GPL assures that patents cannot be used to render the program non-free. The precise terms and conditions for copying, distribution and modification follow. TERMS AND CONDITIONS 0. Definitions. "This License" refers to version 3 of the GNU General Public License. "Copyright" also means copyright-like laws that apply to other kinds of works, such as semiconductor masks. "The Program" refers to any copyrightable work licensed under this License. Each licensee is addressed as "you". "Licensees" and "recipients" may be individuals or organizations. To "modify" a work means to copy from or adapt all or part of the work in a fashion requiring copyright permission, other than the making of an exact copy. The resulting work is called a "modified version" of the earlier work or a work "based on" the earlier work. A "covered work" means either the unmodified Program or a work based on the Program. To "propagate" a work means to do anything with it that, without permission, would make you directly or secondarily liable for infringement under applicable copyright law, except executing it on a computer or modifying a private copy. Propagation includes copying, distribution (with or without modification), making available to the public, and in some countries other activities as well. To "convey" a work means any kind of propagation that enables other parties to make or receive copies. Mere interaction with a user through a computer network, with no transfer of a copy, is not conveying. An interactive user interface displays "Appropriate Legal Notices" to the extent that it includes a convenient and prominently visible feature that (1) displays an appropriate copyright notice, and (2) tells the user that there is no warranty for the work (except to the extent that warranties are provided), that licensees may convey the work under this License, and how to view a copy of this License. If the interface presents a list of user commands or options, such as a menu, a prominent item in the list meets this criterion. 1. Source Code. The "source code" for a work means the preferred form of the work for making modifications to it. "Object code" means any non-source form of a work. A "Standard Interface" means an interface that either is an official standard defined by a recognized standards body, or, in the case of interfaces specified for a particular programming language, one that is widely used among developers working in that language. The "System Libraries" of an executable work include anything, other than the work as a whole, that (a) is included in the normal form of packaging a Major Component, but which is not part of that Major Component, and (b) serves only to enable use of the work with that Major Component, or to implement a Standard Interface for which an implementation is available to the public in source code form. A "Major Component", in this context, means a major essential component (kernel, window system, and so on) of the specific operating system (if any) on which the executable work runs, or a compiler used to produce the work, or an object code interpreter used to run it. The "Corresponding Source" for a work in object code form means all the source code needed to generate, install, and (for an executable work) run the object code and to modify the work, including scripts to control those activities. However, it does not include the work's System Libraries, or general-purpose tools or generally available free programs which are used unmodified in performing those activities but which are not part of the work. For example, Corresponding Source includes interface definition files associated with source files for the work, and the source code for shared libraries and dynamically linked subprograms that the work is specifically designed to require, such as by intimate data communication or control flow between those subprograms and other parts of the work. The Corresponding Source need not include anything that users can regenerate automatically from other parts of the Corresponding Source. The Corresponding Source for a work in source code form is that same work. 2. Basic Permissions. All rights granted under this License are granted for the term of copyright on the Program, and are irrevocable provided the stated conditions are met. This License explicitly affirms your unlimited permission to run the unmodified Program. The output from running a covered work is covered by this License only if the output, given its content, constitutes a covered work. This License acknowledges your rights of fair use or other equivalent, as provided by copyright law. You may make, run and propagate covered works that you do not convey, without conditions so long as your license otherwise remains in force. You may convey covered works to others for the sole purpose of having them make modifications exclusively for you, or provide you with facilities for running those works, provided that you comply with the terms of this License in conveying all material for which you do not control copyright. Those thus making or running the covered works for you must do so exclusively on your behalf, under your direction and control, on terms that prohibit them from making any copies of your copyrighted material outside their relationship with you. Conveying under any other circumstances is permitted solely under the conditions stated below. Sublicensing is not allowed; section 10 makes it unnecessary. 3. Protecting Users' Legal Rights From Anti-Circumvention Law. No covered work shall be deemed part of an effective technological measure under any applicable law fulfilling obligations under article 11 of the WIPO copyright treaty adopted on 20 December 1996, or similar laws prohibiting or restricting circumvention of such measures. When you convey a covered work, you waive any legal power to forbid circumvention of technological measures to the extent such circumvention is effected by exercising rights under this License with respect to the covered work, and you disclaim any intention to limit operation or modification of the work as a means of enforcing, against the work's users, your or third parties' legal rights to forbid circumvention of technological measures. 4. Conveying Verbatim Copies. You may convey verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice; keep intact all notices stating that this License and any non-permissive terms added in accord with section 7 apply to the code; keep intact all notices of the absence of any warranty; and give all recipients a copy of this License along with the Program. You may charge any price or no price for each copy that you convey, and you may offer support or warranty protection for a fee. 5. Conveying Modified Source Versions. You may convey a work based on the Program, or the modifications to produce it from the Program, in the form of source code under the terms of section 4, provided that you also meet all of these conditions: a) The work must carry prominent notices stating that you modified it, and giving a relevant date. b) The work must carry prominent notices stating that it is released under this License and any conditions added under section 7. This requirement modifies the requirement in section 4 to "keep intact all notices". c) You must license the entire work, as a whole, under this License to anyone who comes into possession of a copy. This License will therefore apply, along with any applicable section 7 additional terms, to the whole of the work, and all its parts, regardless of how they are packaged. This License gives no permission to license the work in any other way, but it does not invalidate such permission if you have separately received it. d) If the work has interactive user interfaces, each must display Appropriate Legal Notices; however, if the Program has interactive interfaces that do not display Appropriate Legal Notices, your work need not make them do so. A compilation of a covered work with other separate and independent works, which are not by their nature extensions of the covered work, and which are not combined with it such as to form a larger program, in or on a volume of a storage or distribution medium, is called an "aggregate" if the compilation and its resulting copyright are not used to limit the access or legal rights of the compilation's users beyond what the individual works permit. Inclusion of a covered work in an aggregate does not cause this License to apply to the other parts of the aggregate. 6. Conveying Non-Source Forms. You may convey a covered work in object code form under the terms of sections 4 and 5, provided that you also convey the machine-readable Corresponding Source under the terms of this License, in one of these ways: a) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by the Corresponding Source fixed on a durable physical medium customarily used for software interchange. b) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by a written offer, valid for at least three years and valid for as long as you offer spare parts or customer support for that product model, to give anyone who possesses the object code either (1) a copy of the Corresponding Source for all the software in the product that is covered by this License, on a durable physical medium customarily used for software interchange, for a price no more than your reasonable cost of physically performing this conveying of source, or (2) access to copy the Corresponding Source from a network server at no charge. c) Convey individual copies of the object code with a copy of the written offer to provide the Corresponding Source. This alternative is allowed only occasionally and noncommercially, and only if you received the object code with such an offer, in accord with subsection 6b. d) Convey the object code by offering access from a designated place (gratis or for a charge), and offer equivalent access to the Corresponding Source in the same way through the same place at no further charge. You need not require recipients to copy the Corresponding Source along with the object code. If the place to copy the object code is a network server, the Corresponding Source may be on a different server (operated by you or a third party) that supports equivalent copying facilities, provided you maintain clear directions next to the object code saying where to find the Corresponding Source. Regardless of what server hosts the Corresponding Source, you remain obligated to ensure that it is available for as long as needed to satisfy these requirements. e) Convey the object code using peer-to-peer transmission, provided you inform other peers where the object code and Corresponding Source of the work are being offered to the general public at no charge under subsection 6d. A separable portion of the object code, whose source code is excluded from the Corresponding Source as a System Library, need not be included in conveying the object code work. A "User Product" is either (1) a "consumer product", which means any tangible personal property which is normally used for personal, family, or household purposes, or (2) anything designed or sold for incorporation into a dwelling. In determining whether a product is a consumer product, doubtful cases shall be resolved in favor of coverage. For a particular product received by a particular user, "normally used" refers to a typical or common use of that class of product, regardless of the status of the particular user or of the way in which the particular user actually uses, or expects or is expected to use, the product. A product is a consumer product regardless of whether the product has substantial commercial, industrial or non-consumer uses, unless such uses represent the only significant mode of use of the product. "Installation Information" for a User Product means any methods, procedures, authorization keys, or other information required to install and execute modified versions of a covered work in that User Product from a modified version of its Corresponding Source. The information must suffice to ensure that the continued functioning of the modified object code is in no case prevented or interfered with solely because modification has been made. If you convey an object code work under this section in, or with, or specifically for use in, a User Product, and the conveying occurs as part of a transaction in which the right of possession and use of the User Product is transferred to the recipient in perpetuity or for a fixed term (regardless of how the transaction is characterized), the Corresponding Source conveyed under this section must be accompanied by the Installation Information. But this requirement does not apply if neither you nor any third party retains the ability to install modified object code on the User Product (for example, the work has been installed in ROM). The requirement to provide Installation Information does not include a requirement to continue to provide support service, warranty, or updates for a work that has been modified or installed by the recipient, or for the User Product in which it has been modified or installed. Access to a network may be denied when the modification itself materially and adversely affects the operation of the network or violates the rules and protocols for communication across the network. Corresponding Source conveyed, and Installation Information provided, in accord with this section must be in a format that is publicly documented (and with an implementation available to the public in source code form), and must require no special password or key for unpacking, reading or copying. 7. Additional Terms. "Additional permissions" are terms that supplement the terms of this License by making exceptions from one or more of its conditions. Additional permissions that are applicable to the entire Program shall be treated as though they were included in this License, to the extent that they are valid under applicable law. If additional permissions apply only to part of the Program, that part may be used separately under those permissions, but the entire Program remains governed by this License without regard to the additional permissions. When you convey a copy of a covered work, you may at your option remove any additional permissions from that copy, or from any part of it. (Additional permissions may be written to require their own removal in certain cases when you modify the work.) You may place additional permissions on material, added by you to a covered work, for which you have or can give appropriate copyright permission. Notwithstanding any other provision of this License, for material you add to a covered work, you may (if authorized by the copyright holders of that material) supplement the terms of this License with terms: a) Disclaiming warranty or limiting liability differently from the terms of sections 15 and 16 of this License; or b) Requiring preservation of specified reasonable legal notices or author attributions in that material or in the Appropriate Legal Notices displayed by works containing it; or c) Prohibiting misrepresentation of the origin of that material, or requiring that modified versions of such material be marked in reasonable ways as different from the original version; or d) Limiting the use for publicity purposes of names of licensors or authors of the material; or e) Declining to grant rights under trademark law for use of some trade names, trademarks, or service marks; or f) Requiring indemnification of licensors and authors of that material by anyone who conveys the material (or modified versions of it) with contractual assumptions of liability to the recipient, for any liability that these contractual assumptions directly impose on those licensors and authors. All other non-permissive additional terms are considered "further restrictions" within the meaning of section 10. If the Program as you received it, or any part of it, contains a notice stating that it is governed by this License along with a term that is a further restriction, you may remove that term. If a license document contains a further restriction but permits relicensing or conveying under this License, you may add to a covered work material governed by the terms of that license document, provided that the further restriction does not survive such relicensing or conveying. If you add terms to a covered work in accord with this section, you must place, in the relevant source files, a statement of the additional terms that apply to those files, or a notice indicating where to find the applicable terms. Additional terms, permissive or non-permissive, may be stated in the form of a separately written license, or stated as exceptions; the above requirements apply either way. 8. Termination. You may not propagate or modify a covered work except as expressly provided under this License. Any attempt otherwise to propagate or modify it is void, and will automatically terminate your rights under this License (including any patent licenses granted under the third paragraph of section 11). However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation. Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means, this is the first time you have received notice of violation of this License (for any work) from that copyright holder, and you cure the violation prior to 30 days after your receipt of the notice. Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under this License. If your rights have been terminated and not permanently reinstated, you do not qualify to receive new licenses for the same material under section 10. 9. Acceptance Not Required for Having Copies. You are not required to accept this License in order to receive or run a copy of the Program. Ancillary propagation of a covered work occurring solely as a consequence of using peer-to-peer transmission to receive a copy likewise does not require acceptance. However, nothing other than this License grants you permission to propagate or modify any covered work. These actions infringe copyright if you do not accept this License. Therefore, by modifying or propagating a covered work, you indicate your acceptance of this License to do so. 10. Automatic Licensing of Downstream Recipients. Each time you convey a covered work, the recipient automatically receives a license from the original licensors, to run, modify and propagate that work, subject to this License. You are not responsible for enforcing compliance by third parties with this License. An "entity transaction" is a transaction transferring control of an organization, or substantially all assets of one, or subdividing an organization, or merging organizations. If propagation of a covered work results from an entity transaction, each party to that transaction who receives a copy of the work also receives whatever licenses to the work the party's predecessor in interest had or could give under the previous paragraph, plus a right to possession of the Corresponding Source of the work from the predecessor in interest, if the predecessor has it or can get it with reasonable efforts. You may not impose any further restrictions on the exercise of the rights granted or affirmed under this License. For example, you may not impose a license fee, royalty, or other charge for exercise of rights granted under this License, and you may not initiate litigation (including a cross-claim or counterclaim in a lawsuit) alleging that any patent claim is infringed by making, using, selling, offering for sale, or importing the Program or any portion of it. 11. Patents. A "contributor" is a copyright holder who authorizes use under this License of the Program or a work on which the Program is based. The work thus licensed is called the contributor's "contributor version". A contributor's "essential patent claims" are all patent claims owned or controlled by the contributor, whether already acquired or hereafter acquired, that would be infringed by some manner, permitted by this License, of making, using, or selling its contributor version, but do not include claims that would be infringed only as a consequence of further modification of the contributor version. For purposes of this definition, "control" includes the right to grant patent sublicenses in a manner consistent with the requirements of this License. Each contributor grants you a non-exclusive, worldwide, royalty-free patent license under the contributor's essential patent claims, to make, use, sell, offer for sale, import and otherwise run, modify and propagate the contents of its contributor version. In the following three paragraphs, a "patent license" is any express agreement or commitment, however denominated, not to enforce a patent (such as an express permission to practice a patent or covenant not to sue for patent infringement). To "grant" such a patent license to a party means to make such an agreement or commitment not to enforce a patent against the party. If you convey a covered work, knowingly relying on a patent license, and the Corresponding Source of the work is not available for anyone to copy, free of charge and under the terms of this License, through a publicly available network server or other readily accessible means, then you must either (1) cause the Corresponding Source to be so available, or (2) arrange to deprive yourself of the benefit of the patent license for this particular work, or (3) arrange, in a manner consistent with the requirements of this License, to extend the patent license to downstream recipients. "Knowingly relying" means you have actual knowledge that, but for the patent license, your conveying the covered work in a country, or your recipient's use of the covered work in a country, would infringe one or more identifiable patents in that country that you have reason to believe are valid. If, pursuant to or in connection with a single transaction or arrangement, you convey, or propagate by procuring conveyance of, a covered work, and grant a patent license to some of the parties receiving the covered work authorizing them to use, propagate, modify or convey a specific copy of the covered work, then the patent license you grant is automatically extended to all recipients of the covered work and works based on it. A patent license is "discriminatory" if it does not include within the scope of its coverage, prohibits the exercise of, or is conditioned on the non-exercise of one or more of the rights that are specifically granted under this License. You may not convey a covered work if you are a party to an arrangement with a third party that is in the business of distributing software, under which you make payment to the third party based on the extent of your activity of conveying the work, and under which the third party grants, to any of the parties who would receive the covered work from you, a discriminatory patent license (a) in connection with copies of the covered work conveyed by you (or copies made from those copies), or (b) primarily for and in connection with specific products or compilations that contain the covered work, unless you entered into that arrangement, or that patent license was granted, prior to 28 March 2007. Nothing in this License shall be construed as excluding or limiting any implied license or other defenses to infringement that may otherwise be available to you under applicable patent law. 12. No Surrender of Others' Freedom. If conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot convey a covered work so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not convey it at all. For example, if you agree to terms that obligate you to collect a royalty for further conveying from those to whom you convey the Program, the only way you could satisfy both those terms and this License would be to refrain entirely from conveying the Program. 13. Use with the GNU Affero General Public License. Notwithstanding any other provision of this License, you have permission to link or combine any covered work with a work licensed under version 3 of the GNU Affero General Public License into a single combined work, and to convey the resulting work. The terms of this License will continue to apply to the part which is the covered work, but the special requirements of the GNU Affero General Public License, section 13, concerning interaction through a network will apply to the combination as such. 14. Revised Versions of this License. The Free Software Foundation may publish revised and/or new versions of the GNU General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies that a certain numbered version of the GNU General Public License "or any later version" applies to it, you have the option of following the terms and conditions either of that numbered version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of the GNU General Public License, you may choose any version ever published by the Free Software Foundation. If the Program specifies that a proxy can decide which future versions of the GNU General Public License can be used, that proxy's public statement of acceptance of a version permanently authorizes you to choose that version for the Program. Later license versions may give you additional or different permissions. However, no additional obligations are imposed on any author or copyright holder as a result of your choosing to follow a later version. 15. Disclaimer of Warranty. THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 16. Limitation of Liability. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. 17. Interpretation of Sections 15 and 16. If the disclaimer of warranty and limitation of liability provided above cannot be given local legal effect according to their terms, reviewing courts shall apply local law that most closely approximates an absolute waiver of all civil liability in connection with the Program, unless a warranty or assumption of liability accompanies a copy of the Program in return for a fee. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively state the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . Also add information on how to contact you by electronic and paper mail. If the program does terminal interaction, make it output a short notice like this when it starts in an interactive mode: Copyright (C) This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, your program's commands might be different; for a GUI interface, you would use an "about box". You should also get your employer (if you work as a programmer) or school, if any, to sign a "copyright disclaimer" for the program, if necessary. For more information on this, and how to apply and follow the GNU GPL, see . The GNU General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. But first, please read . ================================================ FILE: packages/types-core/package.json ================================================ { "name": "@subql/types-core", "version": "2.2.0", "description": "", "homepage": "https://github.com/subquery/subql", "repository": "github:subquery/subql", "scripts": { "test": "echo \"Error: no test specified\" && exit 1", "build": "rm -rf dist && tsc -b", "changelog:release": "echo \"Updating changelog $npm_package_version\" && npx chan release $npm_package_version --git-url \"https://github.com/subquery/subql\" --release-prefix=\"types-core/\"" }, "author": "Ian He", "main": "dist/index.js", "license": "GPL-3.0", "files": [ "/dist", "!/dist/**/*.spec.js", "!/dist/**/*.spec.d.ts", "!/dist/**/*.spec.js.map", "!/dist/**/*.test.js", "!/dist/**/*.test.d.ts", "!/dist/**/*.test.js.map", "package.json", "README.md", "CHANGELOG.md", "LICENSE" ], "dependencies": { "package-json-type": "^1.0.3", "pino": "^6.13.3" } } ================================================ FILE: packages/types-core/src/global.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import type Pino from 'pino'; import {Cache, DynamicDatasourceCreator} from './interfaces'; import {Store} from './store'; // base global declare global { const logger: Pino.Logger; const store: Store; const cache: Cache; const chainId: string; const createDynamicDatasource: DynamicDatasourceCreator; } ================================================ FILE: packages/types-core/src/index.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 export * from './interfaces'; export * from './project'; export * from './store'; export * from './multichain'; ================================================ FILE: packages/types-core/src/interfaces.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 export type DynamicDatasourceCreator = (name: string, args: Record) => Promise; export interface Cache = Record> { set(key: keyof T, value: T[keyof T]): Promise; get(key: keyof T): Promise; } ================================================ FILE: packages/types-core/src/multichain/index.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 export * from './types'; ================================================ FILE: packages/types-core/src/multichain/types.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import {QuerySpec} from '../project'; export interface MultichainProjectManifest { specVersion: string; projects: string[]; query: QuerySpec; } ================================================ FILE: packages/types-core/src/project/datasourceProcessors.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import {DictionaryQueryEntry} from './types'; import {BaseCustomDataSource} from './versioned'; /** * Maps a handler kind to the data type * @example { * 'block': BlockType, * 'transaction': TransactionType, * 'event': EventType, * }*/ export type HandlerInputMap = Record; export interface HandlerInputTransformer_0_0_0< Input, DS extends BaseCustomDataSource, API, E, // Output type > { (input: Input, ds: DS, api: API, assets?: Record): Promise; } export interface HandlerInputTransformer_1_0_0< Input, DS extends BaseCustomDataSource, API, F extends Record, E, // Output type > { (params: {input: Input; ds: DS; api: API; filter?: F; assets?: Record}): Promise; } interface SecondLayerHandlerProcessorBase< BaseFilterMap extends HandlerInputMap, K extends keyof BaseFilterMap, F extends Record, DS extends BaseCustomDataSource, > { baseHandlerKind: K; baseFilter: BaseFilterMap[K] | BaseFilterMap[K][]; filterValidator: (filter?: F) => void; dictionaryQuery?: (filter: F, ds: DS) => DictionaryQueryEntry | undefined; } // only allow one custom handler for each baseHandler kind export interface SecondLayerHandlerProcessor_0_0_0< InputKinds extends string | symbol, HandlerInput extends Record, BaseHandlerFilters extends Record, F extends Record, E, DS extends BaseCustomDataSource, API, > extends SecondLayerHandlerProcessorBase { specVersion: undefined; transformer: HandlerInputTransformer_0_0_0; filterProcessor: (filter: F | undefined, input: HandlerInput[InputKinds], ds: DS) => boolean; } export interface SecondLayerHandlerProcessor_1_0_0< InputKinds extends string | symbol, HandlerInput extends Record, BaseHandlerFilters extends Record, F extends Record, E, DS extends BaseCustomDataSource, API, > extends SecondLayerHandlerProcessorBase { specVersion: '1.0.0'; transformer: HandlerInputTransformer_1_0_0; filterProcessor: (params: {filter: F | undefined; input: HandlerInput[InputKinds]; ds: DS}) => boolean; } export type SecondLayerHandlerProcessor< InputKinds extends string | symbol, HandlerInput extends Record, BaseHandlerFilters extends Record, F extends Record, E, DS extends BaseCustomDataSource, API, > = | SecondLayerHandlerProcessor_0_0_0 | SecondLayerHandlerProcessor_1_0_0; ================================================ FILE: packages/types-core/src/project/index.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 export * from './types'; export * from './versioned'; export * from './readers'; export * from './datasourceProcessors'; export * from './modulars'; ================================================ FILE: packages/types-core/src/project/modulars/index.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 export * from './types'; ================================================ FILE: packages/types-core/src/project/modulars/types.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import {BaseCustomDataSource, BaseDataSource, IProjectManifest, ProjectManifestBaseImplInterface} from '../index'; export interface INetworkCommonModule< D extends BaseCustomDataSource | BaseDataSource = BaseDataSource, RDS extends D = D, CDS extends D = D, > { parseProjectManifest(raw: unknown): IProjectManifest & { // other missing interfaces ProjectManifestVersioned asImpl: ProjectManifestBaseImplInterface; }; isRuntimeDs(ds: D): ds is RDS; isCustomDs(ds: D): ds is CDS; } ================================================ FILE: packages/types-core/src/project/readers/index.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 export * from './reader'; ================================================ FILE: packages/types-core/src/project/readers/reader.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import type {IPackageJson} from 'package-json-type'; export type ReaderOptions = { ipfs?: string; }; export interface Reader { getProjectSchema(): Promise; getPkg(): Promise; getFile(file: string): Promise; root: string | undefined; } ================================================ FILE: packages/types-core/src/project/types.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import {BaseDataSource, BaseTemplateDataSource, ParentProject, RunnerSpecs} from './versioned'; /** * Represents a common subquery project configuration. * @template N - The type of the network configuration (default: CommonSubqueryNetworkConfig). * @template DS - The type of the base data source (default: BaseDataSource). * @template T - The type of templates (default: unknown). */ export interface CommonSubqueryProject< N extends IProjectNetworkConfig = IProjectNetworkConfig, DS extends BaseDataSource = BaseDataSource, T extends BaseTemplateDataSource = BaseTemplateDataSource, > { /** * The repository of your SubQuery project. * @type {string} */ repository?: string; /** * The version string of your SubQuery project. * @type {string} * @default "1.0.0" */ version?: string; /** * The name of your SubQuery project. * @type {string} */ name?: string; /** * The specVersion of the SubQuery project manifest file, the latest and suggested is 1.0.0 * @type {string} * @default "1.0.0" */ specVersion: string; /** * A description of your SubQuery project. * @type {string} */ description?: string; /** * The location of your GraphQL schema file. * @type {FileReference} */ schema: FileReference; /** * The runner specifications for the common SubQuery project. * @readonly * @type {RunnerSpecs} */ readonly runner?: RunnerSpecs; /** * The parent manifest of current project. * @readonly * @type {ParentProject} */ readonly parent?: ParentProject; /** * The network configuration for the SubQuery project. * * This defines what network you are wanting to index as well as the details on how to connect to it. * @readonly * @type {N} */ readonly network: N; /** * An array of data sources associated with the SubQuery project. * * Defines the data that will be filtered and extracted and the location of the mapping function handler for the data transformation to be applied. * @readonly * @type {DS[]} */ readonly dataSources: DS[]; /** * An array of project templates associated with the project. * * These are the same as datasources but instead of having a startBlock they have a unique name. * These are used to dynamically create data sources, this is useful when you don't know the start block. * e.g When a factory creates a new instance of a contract you can initialize a datasource from a template in your mapping function. * @readonly * @type {T[]} */ readonly templates?: T[]; } /** * Represents the common network configuration for a subquery project. * @interface * @extends {ProjectNetworkConfig} */ export interface IProjectNetworkConfig extends ProjectNetworkConfig { /** * The unique identity of the chain. * * This differs for different blockchain ecosystems, please refer to our documentation * @type {string} * @example * chainId: '1' // Ethereum * @example * chainId: '0x91b171bb158e2d3848fa23a9f1c25182fb8e20313b2c1eb49219da7a70ce90c3' // Polkadot * @example * chainId: 'juno-1' // Cosmos Juno * */ chainId: string; } export type DsProcessor = Record, API = any> = { kind: string; validate: (ds: DS, assets: Record) => void; dsFilterProcessor: (ds: DS, api: API) => boolean; handlerProcessors: P; }; export interface ProjectRootAndManifest { root: string; manifests: string[]; } export interface IProjectManifest { specVersion: string; description?: string; repository?: string; dataSources: D[]; toDeployment(): string; validate(): void; } /* Define specific behaviour for rate limits*/ export interface IEndpointConfig { /* Headers to be supplied with the requests to the endpoint */ headers?: Record; } /** * Represents the network configuration for a project. * @interface */ export interface ProjectNetworkConfig { /** * The endpoint(s) for the network connection, which can be a single string or an array of strings. * * Endpoints ideally should non-pruned archive nodes (so you have access for the entire chain state) * We recommend providing more than one endpoint for improved reliability, performance, and uptime. * Public nodes may be rate limited, which can affect indexing speed * When developing your project we suggest adding a private API key * * @type {string | string[] | Record } */ endpoint: string | string[] | Record; /** * The SubQuery network dictionary endpoint (optional). * This significantly speeds up indexing of your project. * * @type {string} */ dictionary?: string | string[]; /** * An array of block numbers or block ranges to bypass (optional). * @type {(number | string)[]} * @example * [1, 2, 3, '5-10'] */ bypassBlocks?: (number | `${number}-${number}`)[]; } /** * Represents a reference to a file. * @interface */ export interface FileReference { /** * The path or name of the referenced file from the root of this project. * @type {string} */ file: string; } export type Processor = FileReference & {options?: O}; export interface DictionaryQueryCondition { field: string; value: string | string[] | boolean; matcher?: string; // defaults to "equalTo", use "contains" for JSON } export interface DictionaryQueryEntry { entity: string; conditions: DictionaryQueryCondition[]; } ================================================ FILE: packages/types-core/src/project/versioned/base.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import {ParentProject} from '../../project'; import {FileReference, Processor} from '../types'; export interface BaseDataSource = BaseMapping> { /** * The kind of the datasource. * @type {string} */ kind: string; /** * The starting block number for the datasource. If not specified, 1 will be used (optional). * @type {number} * @default 1 */ startBlock?: number; /** * The ending block number for the datasource (optional). * @type {number} */ endBlock?: number; /** * The mapping associated with the datasource. * This contains the handlers. * @type {M} */ mapping: M; } export interface BaseCustomDataSource = BaseMapping> extends BaseDataSource, BaseAssetsDataSource { /** * The processor used for the custom datasource. * @type {Processor} */ processor: Processor; } export interface BaseAssetsDataSource { /** * A map of custom datasource assets. These typically include ABIs or other files used to decode data. * @type {Map} * @example * assets: new Map([['erc20', './abis/erc20.json']]) */ assets?: Map; } export interface BaseMapping extends FileReference { /** * An array of handlers associated with the mapping. * @type {T[]} */ handlers: T[]; } export interface BaseHandler { kind: K; /** * The name of your handler function. This must be defined and exported from your code. * @type {string} * @example * handler: 'handleBlock' */ handler: string; /** * The filter for the handler. The handler kind will determine the possible filters (optional). */ filter?: T; } export interface TemplateBase { /** * The name of the template. This must be unique. * */ name: string; } export type BaseTemplateDataSource = Omit & TemplateBase; export interface ProjectManifestBaseImplInterface< D extends BaseDeploymentV1_0_0Interface = BaseDeploymentV1_0_0Interface, > { deployment: D; } export interface BaseDeploymentV1_0_0Interface { specVersion: string; schema: FileReference; parent?: ParentProject; toYaml(): string; } ================================================ FILE: packages/types-core/src/project/versioned/index.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 export * from './base'; export * from './v1_0_0'; ================================================ FILE: packages/types-core/src/project/versioned/v1_0_0/index.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 export * from './types'; ================================================ FILE: packages/types-core/src/project/versioned/v1_0_0/types.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import {IProjectNetworkConfig} from '../../types'; import {BaseDataSource, BaseTemplateDataSource} from '../base'; /** * Represents specifications for an indexer runner. * @interface */ export interface RunnerSpecs { /** * The specifications for a node. * @type {NodeSpec} */ node: NodeSpec; /** * The specifications for a query. * @type {QuerySpec} */ query: QuerySpec; } /** * Represents specifications for a node. * @interface * @example * // Example of a substrate based NodeSpec * const nodeSpec = { * name: '@subql/node' * version: '^2.15.0' * options: { * historical: true * } * } */ export interface NodeSpec { /** * The name of the indexer node. * @type {string} */ name: string; /** * The version number of the indexer node. * @type {string} * @default "*" */ version: string; /** * Additional options for the node (optional). * @type {NodeOptions} */ options?: NodeOptions; } /** * Represents specifications for a query. * @interface */ export interface QuerySpec { /** * The name of the query service. * @type {string} * @default "@subql/query" */ name: string; /** * The version number of the query service. * @type {string} * @default "*" */ version: string; } /** * Represents optional configuration options for a node. * @interface */ export interface NodeOptions { /** * Indicates whether historical state tracking is enabled for the indexer (optional). * @type {boolean} * @default "true" */ historical?: boolean; /** * Indicates whether unsafe mode are allowed for the indexer (optional). * * Unsafe mode controls various features that compromise the determinsm of a SubQuery project. * Unsafe allows any imports which greatly increases functionality with the tradeoff of decreased security * @type {boolean} * @default "false" */ unsafe?: boolean; /** * Indicates whether unfinalized blocks are supported by the indexer (optional). * * This allows you to index blocks before they become finalized. * It can be very useful if you want the most up-to-date data possible. * It will detect any forks and remove any blocks that don't become finalized. * @type {boolean} * @default "false" */ unfinalizedBlocks?: boolean; /** * Indicates whether transaction skipping is enabled for the indexer. (optional). * If this is enabled and the project only contains event handlers then it wont fetch transactions reducing memory footprint and RPC requests. This can lead to faster indexing. * @type {boolean} */ skipTransactions?: boolean; } /** * Represents a parent project configuration. * @interface */ export interface ParentProject { /** * The block height at which to switch from the parent project to this project. * @deprecated Please use `untilBlock` instead * @type {number} * @description The block height to switch from the parent project to this project. */ block: number; /** * The block height at which to switch from the parent project to this project. * @type {number} * @description The block height to switch from the parent project to this project. */ untilBlock: number; /** * The IPFS CID (Content Identifier) referencing the parent project. * @type {string} * @description The IPFS CID to the parent project. */ reference: string; } export interface ProjectManifestV1_0_0< D extends BaseDataSource = BaseDataSource, T extends BaseTemplateDataSource = BaseTemplateDataSource, C extends IProjectNetworkConfig = IProjectNetworkConfig, > { name?: string; version: string; schema: { file: string; }; specVersion: string; repository?: string; description?: string; templates?: T[]; dataSources: D[]; runner: RunnerSpecs; network: C; parent?: ParentProject; } export interface BlockFilter { /** * The modulo value for filtering blocks (optional). * @type {number} * @example * modulo: 5, // every 5 blocks will be indexed */ modulo?: number; /** * A cron expression will index blocks at an interval (optional). * @type {string} * @example * timestamp: "\*\/5 * * * *" */ timestamp?: string; } ================================================ FILE: packages/types-core/src/store.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 export type FunctionPropertyNames = { // eslint-disable-next-line @typescript-eslint/no-unsafe-function-type [K in keyof T]: T[K] extends Function ? K : never; }[keyof T]; type SingleOperators = '=' | '!='; type ArrayOperators = 'in' | '!in'; export type FieldOperators = SingleOperators | ArrayOperators; export type FieldsExpression = | [field: keyof T, operator: SingleOperators, value: T[keyof T]] | [field: keyof T, operator: ArrayOperators, value: Array]; export interface Entity { id: string; _name?: string; save?: () => Promise; } // Used in selective places where @dbType directive is used to change the ID type export type CompatEntity = Omit & {id: T}; export type GetOptions = { /** * The number of items to return, if this exceeds the query-limit flag it will throw * */ limit: number; offset?: number; orderBy?: keyof T; orderDirection?: 'ASC' | 'DESC'; }; export interface Store { get(entity: string, id: string): Promise; /** * Gets entities matching the specified filters and options. * * ⚠️ This function will first search cache data followed by DB data. Please consider this when using order and offset options.⚠️ * */ getByFields(entity: string, filter: FieldsExpression[], options: GetOptions): Promise; /** * This is an alias for getByFields with a single filter * */ getByField(entity: string, field: keyof T, value: any, options: GetOptions): Promise; /** * This is an alias for getByField with limit set to 1 * */ getOneByField(entity: string, field: string, value: any): Promise; set(entity: string, id: string, data: Entity): Promise; bulkCreate(entity: string, data: Entity[]): Promise; //if fields in provided, only specify fields will be updated bulkUpdate(entity: string, data: Entity[], fields?: string[]): Promise; remove(entity: string, id: string): Promise; bulkRemove(entity: string, ids: string[]): Promise; } ================================================ FILE: packages/types-core/tsconfig.json ================================================ { "extends": "../../tsconfig.json", "compilerOptions": { "strictNullChecks": true, "tsBuildInfoFile": "dist/.tsbuildinfo", "rootDir": "src", "outDir": "dist", "noImplicitAny": true }, "include": ["src/**/*"] } ================================================ FILE: packages/utils/CHANGELOG.md ================================================ # Changelog All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). ## [Unreleased] ## [2.22.1] - 2025-11-05 ### Changed - Update flatted dependency (#2941) ## [2.22.0] - 2025-10-15 ### Changed - Minor improvements and fixes from upgrading to eslint 9 with stricter settings (#2929) ## [2.21.2] - 2025-09-16 ### Changed - Address some linter related warnings (#2876) - Update polkadot dependenices (#2915) ## [2.21.1] - 2025-07-24 ### Fixed - Typos (#2834) ## [2.21.0] - 2025-07-14 ### Changed - Update polkadot deps to align with `@polkadot/api@16` (#2845) ## [2.20.1] - 2025-07-02 ### Fixed - Regex for \_global table (#2840) ## [2.20.0] - 2025-07-01 ### Removed - Test files and artifacts from published package (#2838) ## [2.19.0] - 2025-05-21 ### Added - Regex for \`\_global\` table (#2799) ## [2.18.1] - 2025-04-24 ### Changed - Update polkadot dependencies ## [2.18.0] - 2025-02-19 ### Changed - Update polkadot api to 15 (#2680) ## [2.17.2] - 2025-02-04 ### Changed - Update copyright header to 2025 - Update error message to include allowed dbType types (#2662) ### Fixed - Various typos ## [2.17.1] - 2025-01-28 ### Fixed - Graphql entity relations not resolving the id type from the `@dbType` directive (#2649) ## [2.17.0] - 2024-12-11 ### Added - @dbType graphql directive (#2622) ## [2.16.0] - 2024-11-25 ### Changed - Update polkadot/api library to 14 version ## [2.15.0] - 2024-11-22 ### Added - Support for indexes on enums (#2586) ### Changed - Update metadata types (#2584) ## [2.14.0] - 2024-08-05 ### Added - `findAvailablePort` function from common package (#2518) ### Changed - Update dependencies (#2518) ## [2.13.1] - 2024-07-25 ### Fixed - Fix hashcode for Json and Json array, sorted keys before hashing ## [2.13.0] - 2024-07-22 ### Changed - Update error log format to specify the name of the error instance where possible (#2492) ## [2.12.1] - 2024-07-09 ### Changed - Changes to ts build settings (#2475) ## [2.12.0] - 2024-06-21 ### Added - Better error messages for invalid graphql schemas (#2458) - enable ts strict mode - TS check reports errors when debugging Query ## [2.11.0] - 2024-06-12 ### Changed - Support logging errors with provided cause and improve colors (#2435) ## [2.10.0] - 2024-05-08 ### Changed - Update polkadot dependencies to v11 ## [2.9.2] - 2024-05-02 ### Fixed - Debug flag not working with worker loggers (#2374) ## [2.9.1] - 2024-04-12 ### Changed - Update tar dependency ## [2.9.0] - 2024-03-28 ### Added - Export 'numberToHex' (#2307) - Add method `hexStripZeros` to handle hex string in order to align with ethers (#2319) ## [2.8.0] - 2024-03-05 ### Added - New fullText graphql directive (#2280) ## [2.7.1] - 2024-02-29 ### Fixed - Fixed Int hashCode method failed due to original method not support negative value (#2278) ## [2.7.0] - 2024-01-25 ### Added - export sequelize support types (#2179) ## [2.6.2] - 2024-01-10 ### Fixed - Update x-sequelize improve `getForeignKeyReferencesQuery` performance in large size DB (#2212) ## [2.6.1] - 2024-01-04 ### Fixed - Update x-sequelize, fix `more than one row returned by a subquery used as an expression` error. (#2209) ## [2.6.0] - 2023-11-10 ### Changed - Update Polkadot/util to 10.5.1 (#2150) ### Removed - Removed unused `axios` from dependency (#2155) ## [2.5.0] - 2023-10-31 ### Added - Logger now supports negative filters. To use this prefix the logger name with a `-`. E.g `--debug="*,-SQL"` (#2133) ## [2.4.4] - 2023-10-11 ### Added - Option to set debug level for child loggers ### Fixed - fix undefined ts type for unsupported field type (#2003) ## [2.4.3] - 2023-07-31 ### Fixed - Update license (#1891) ## [2.4.2] - 2023-06-26 ### Fixed - Incorrect type for rowCountEstimate on metadata, remove terra metadata type (#1839) ## [2.4.1] - 2023-06-09 ### Changed - Use @subql/x-sequelize in order support cockroach (#1791) ## [2.4.0] - 2023-05-30 ### Added - Composite indexes for entities (#1759) - Expose base64 functions (#1761) ## [2.3.0] - 2023-05-24 ### Added - Base58 util functions (#1750) ## [2.2.0] - 2023-05-19 ### Changed - Update polkadot api to 10.7.1 (#1736) ## [2.1.0] - 2023-05-10 ### Changed - Expose all `@polkadot/utils` and `@polkadot/utils-crypto` through utils (#1653) ## [2.0.0] - 2023-04-20 ### Changed - Major release 2.0.0, align with other package versions ## [1.5.0] - 2023-04-14 ### Added - Added option to @jsonField to disable GIN index (#1613) ## [1.4.2] - 2023-03-29 ### Changed - update polkadot api to 10.1.4 (#1580) ## [1.4.1] - 2023-02-21 ### Changed - Update sequlize to 6.28.0 (#1521) ## [1.4.0] - 2023-01-23 ### Changed - Update metadata type with `startHeight` (#1473) - Update Polkadot api to 9.11.1 (#1483) ## [1.3.1] - 2022-11-30 ### Fixed - Support postgres identifier restrictions (#1438) ## [1.3.0] - 2022-11-23 ### Changed - Support for multi-chain indexing (#1375) ## [1.2.0] - 2022-08-11 ### Changed - Update `sequelize` to 6.23.0. (#1311) ## [1.1.0] - 2022-08-11 ### Changed - Update `@polkadot/util` to v10 (#1230) ## [1.0.1] - 2022-07-05 ### Fixed - Tidy up dependency, move `ipfs-http-client` to common packages (#1160) ## [1.0.0] - 2022-05-11 ### Changed - Major release ## [0.1.0] - 2022-05-06 ### Changed - Update polkadot/api to 9 [Unreleased]: https://github.com/subquery/subql/compare/utils/2.22.1...HEAD [2.22.1]: https://github.com/subquery/subql/compare/utils/2.22.0...utils/2.22.1 [2.22.0]: https://github.com/subquery/subql/compare/utils/2.21.2...utils/2.22.0 [2.21.2]: https://github.com/subquery/subql/compare/utils/2.21.1...utils/2.21.2 [2.21.1]: https://github.com/subquery/subql/compare/utils/2.21.0...utils/2.21.1 [2.21.0]: https://github.com/subquery/subql/compare/utils/2.20.1...utils/2.21.0 [2.20.1]: https://github.com/subquery/subql/compare/utils/2.20.0...utils/2.20.1 [2.20.0]: https://github.com/subquery/subql/compare/utils/2.19.0...utils/2.20.0 [2.19.0]: https://github.com/subquery/subql/compare/utils/2.18.1...utils/2.19.0 [2.18.1]: https://github.com/subquery/subql/compare/utils/2.18.0...utils/2.18.1 [2.18.0]: https://github.com/subquery/subql/compare/utils/2.17.2...utils/2.18.0 [2.17.2]: https://github.com/subquery/subql/compare/utils/2.17.1...utils/2.17.2 [2.17.1]: https://github.com/subquery/subql/compare/utils/2.17.0...utils/2.17.1 [2.17.0]: https://github.com/subquery/subql/compare/utils/2.16.0...utils/2.17.0 [2.16.0]: https://github.com/subquery/subql/compare/utils/2.15.0...utils/2.16.0 [2.15.0]: https://github.com/subquery/subql/compare/utils/2.14.0...utils/2.15.0 [2.14.0]: https://github.com/subquery/subql/compare/utils/2.13.1...utils/2.14.0 [2.13.1]: https://github.com/subquery/subql/compare/utils/2.13.0...utils/2.13.1 [2.13.0]: https://github.com/subquery/subql/compare/utils/2.12.1...utils/2.13.0 [2.12.1]: https://github.com/subquery/subql/compare/utils/2.12.0...utils/2.12.1 [2.12.0]: https://github.com/subquery/subql/compare/utils/2.11.0...utils/2.12.0 [2.11.0]: https://github.com/subquery/subql/compare/utils/2.10.0...utils/2.11.0 [2.10.0]: https://github.com/subquery/subql/compare/utils/2.9.2...utils/2.10.0 [2.9.2]: https://github.com/subquery/subql/compare/utils/2.9.1...utils/2.9.2 [2.9.1]: https://github.com/subquery/subql/compare/utils/2.9.0...utils/2.9.1 [2.9.0]: https://github.com/subquery/subql/compare/utils/2.8.0...utils/2.9.0 [2.8.0]: https://github.com/subquery/subql/compare/utils/2.7.1...utils/2.8.0 [2.7.1]: https://github.com/subquery/subql/compare/utils/2.7.0...utils/2.7.1 [2.7.0]: https://github.com/subquery/subql/compare/utils/2.6.2...utils/2.7.0 [2.6.2]: https://github.com/subquery/subql/compare/utils/2.6.1...utils/2.6.2 [2.6.1]: https://github.com/subquery/subql/compare/utils/2.6.0...utils/2.6.1 [2.6.0]: https://github.com/subquery/subql/compare/utils/2.5.0...utils/2.6.0 [2.5.0]: https://github.com/subquery/subql/compare/utils/2.4.4...utils/2.5.0 [2.4.4]: https://github.com/subquery/subql/compare/v2.4.3...v2.4.4 [2.4.3]: https://github.com/subquery/subql/compare/v2.4.2...v2.4.3 [2.4.2]: https://github.com/subquery/subql/compare/utils/2.4.1...utils/2.4.2 [2.4.1]: https://github.com/subquery/subql/compare/utils/2.4.0...utils/2.4.1 [2.4.0]: https://github.com/subquery/subql/compare/utils/2.3.0...utils/2.4.0 [2.3.0]: https://github.com/subquery/subql/compare/utils/2.2.0...utils/2.3.0 [2.2.0]: https://github.com/subquery/subql/compare/utils/2.1.0...utils/2.2.0 [2.1.0]: https://github.com/subquery/subql/compare/utils/2.0.0...utils/2.1.0 [2.0.0]: https://github.com/subquery/subql/compare/utils/1.5.0...utils/2.0.0 [1.5.0]: https://github.com/subquery/subql/compare/utils/1.4.2...utils/1.5.0 [1.4.2]: https://github.com/subquery/subql/compare/utils/1.4.1...utils/1.4.2 [1.4.1]: https://github.com/subquery/subql/compare/utils/1.4.0...utils/1.4.1 [1.4.0]: https://github.com/subquery/subql/compare/utils/1.3.1...utils/1.4.0 [1.3.1]: https://github.com/subquery/subql/compare/utils/1.3.0...utils/1.3.1 [1.3.0]: https://github.com/subquery/subql/compare/utils/1.2.0...utils/1.3.0 [1.2.0]: https://github.com/subquery/subql/compare/utils/1.1.0...utils/1.2.0 [1.1.0]: https://github.com/subquery/subql/compare/utils/1.0.1...utils/1.1.0 [1.0.1]: https://github.com/subquery/subql/compare/utils/1.0.0...utils/1.0.1 [1.0.0]: https://github.com/subquery/subql/compare/utils/0.1.0...utils/1.0.0 [0.1.0]: https://github.com/subquery/subql/tags/0.1.0 ================================================ FILE: packages/utils/LICENSE ================================================ GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 Copyright (C) 2007 Free Software Foundation, Inc. Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The GNU General Public License is a free, copyleft license for software and other kinds of works. The licenses for most software and other practical works are designed to take away your freedom to share and change the works. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change all versions of a program--to make sure it remains free software for all its users. We, the Free Software Foundation, use the GNU General Public License for most of our software; it applies also to any other work released this way by its authors. You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for them if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs, and that you know you can do these things. To protect your rights, we need to prevent others from denying you these rights or asking you to surrender the rights. Therefore, you have certain responsibilities if you distribute copies of the software, or if you modify it: responsibilities to respect the freedom of others. For example, if you distribute copies of such a program, whether gratis or for a fee, you must pass on to the recipients the same freedoms that you received. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. Developers that use the GNU GPL protect your rights with two steps: (1) assert copyright on the software, and (2) offer you this License giving you legal permission to copy, distribute and/or modify it. For the developers' and authors' protection, the GPL clearly explains that there is no warranty for this free software. For both users' and authors' sake, the GPL requires that modified versions be marked as changed, so that their problems will not be attributed erroneously to authors of previous versions. Some devices are designed to deny users access to install or run modified versions of the software inside them, although the manufacturer can do so. This is fundamentally incompatible with the aim of protecting users' freedom to change the software. The systematic pattern of such abuse occurs in the area of products for individuals to use, which is precisely where it is most unacceptable. Therefore, we have designed this version of the GPL to prohibit the practice for those products. If such problems arise substantially in other domains, we stand ready to extend this provision to those domains in future versions of the GPL, as needed to protect the freedom of users. Finally, every program is threatened constantly by software patents. States should not allow patents to restrict development and use of software on general-purpose computers, but in those that do, we wish to avoid the special danger that patents applied to a free program could make it effectively proprietary. To prevent this, the GPL assures that patents cannot be used to render the program non-free. The precise terms and conditions for copying, distribution and modification follow. TERMS AND CONDITIONS 0. Definitions. "This License" refers to version 3 of the GNU General Public License. "Copyright" also means copyright-like laws that apply to other kinds of works, such as semiconductor masks. "The Program" refers to any copyrightable work licensed under this License. Each licensee is addressed as "you". "Licensees" and "recipients" may be individuals or organizations. To "modify" a work means to copy from or adapt all or part of the work in a fashion requiring copyright permission, other than the making of an exact copy. The resulting work is called a "modified version" of the earlier work or a work "based on" the earlier work. A "covered work" means either the unmodified Program or a work based on the Program. To "propagate" a work means to do anything with it that, without permission, would make you directly or secondarily liable for infringement under applicable copyright law, except executing it on a computer or modifying a private copy. Propagation includes copying, distribution (with or without modification), making available to the public, and in some countries other activities as well. To "convey" a work means any kind of propagation that enables other parties to make or receive copies. Mere interaction with a user through a computer network, with no transfer of a copy, is not conveying. An interactive user interface displays "Appropriate Legal Notices" to the extent that it includes a convenient and prominently visible feature that (1) displays an appropriate copyright notice, and (2) tells the user that there is no warranty for the work (except to the extent that warranties are provided), that licensees may convey the work under this License, and how to view a copy of this License. If the interface presents a list of user commands or options, such as a menu, a prominent item in the list meets this criterion. 1. Source Code. The "source code" for a work means the preferred form of the work for making modifications to it. "Object code" means any non-source form of a work. A "Standard Interface" means an interface that either is an official standard defined by a recognized standards body, or, in the case of interfaces specified for a particular programming language, one that is widely used among developers working in that language. The "System Libraries" of an executable work include anything, other than the work as a whole, that (a) is included in the normal form of packaging a Major Component, but which is not part of that Major Component, and (b) serves only to enable use of the work with that Major Component, or to implement a Standard Interface for which an implementation is available to the public in source code form. A "Major Component", in this context, means a major essential component (kernel, window system, and so on) of the specific operating system (if any) on which the executable work runs, or a compiler used to produce the work, or an object code interpreter used to run it. The "Corresponding Source" for a work in object code form means all the source code needed to generate, install, and (for an executable work) run the object code and to modify the work, including scripts to control those activities. However, it does not include the work's System Libraries, or general-purpose tools or generally available free programs which are used unmodified in performing those activities but which are not part of the work. For example, Corresponding Source includes interface definition files associated with source files for the work, and the source code for shared libraries and dynamically linked subprograms that the work is specifically designed to require, such as by intimate data communication or control flow between those subprograms and other parts of the work. The Corresponding Source need not include anything that users can regenerate automatically from other parts of the Corresponding Source. The Corresponding Source for a work in source code form is that same work. 2. Basic Permissions. All rights granted under this License are granted for the term of copyright on the Program, and are irrevocable provided the stated conditions are met. This License explicitly affirms your unlimited permission to run the unmodified Program. The output from running a covered work is covered by this License only if the output, given its content, constitutes a covered work. This License acknowledges your rights of fair use or other equivalent, as provided by copyright law. You may make, run and propagate covered works that you do not convey, without conditions so long as your license otherwise remains in force. You may convey covered works to others for the sole purpose of having them make modifications exclusively for you, or provide you with facilities for running those works, provided that you comply with the terms of this License in conveying all material for which you do not control copyright. Those thus making or running the covered works for you must do so exclusively on your behalf, under your direction and control, on terms that prohibit them from making any copies of your copyrighted material outside their relationship with you. Conveying under any other circumstances is permitted solely under the conditions stated below. Sublicensing is not allowed; section 10 makes it unnecessary. 3. Protecting Users' Legal Rights From Anti-Circumvention Law. No covered work shall be deemed part of an effective technological measure under any applicable law fulfilling obligations under article 11 of the WIPO copyright treaty adopted on 20 December 1996, or similar laws prohibiting or restricting circumvention of such measures. When you convey a covered work, you waive any legal power to forbid circumvention of technological measures to the extent such circumvention is effected by exercising rights under this License with respect to the covered work, and you disclaim any intention to limit operation or modification of the work as a means of enforcing, against the work's users, your or third parties' legal rights to forbid circumvention of technological measures. 4. Conveying Verbatim Copies. You may convey verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice; keep intact all notices stating that this License and any non-permissive terms added in accord with section 7 apply to the code; keep intact all notices of the absence of any warranty; and give all recipients a copy of this License along with the Program. You may charge any price or no price for each copy that you convey, and you may offer support or warranty protection for a fee. 5. Conveying Modified Source Versions. You may convey a work based on the Program, or the modifications to produce it from the Program, in the form of source code under the terms of section 4, provided that you also meet all of these conditions: a) The work must carry prominent notices stating that you modified it, and giving a relevant date. b) The work must carry prominent notices stating that it is released under this License and any conditions added under section 7. This requirement modifies the requirement in section 4 to "keep intact all notices". c) You must license the entire work, as a whole, under this License to anyone who comes into possession of a copy. This License will therefore apply, along with any applicable section 7 additional terms, to the whole of the work, and all its parts, regardless of how they are packaged. This License gives no permission to license the work in any other way, but it does not invalidate such permission if you have separately received it. d) If the work has interactive user interfaces, each must display Appropriate Legal Notices; however, if the Program has interactive interfaces that do not display Appropriate Legal Notices, your work need not make them do so. A compilation of a covered work with other separate and independent works, which are not by their nature extensions of the covered work, and which are not combined with it such as to form a larger program, in or on a volume of a storage or distribution medium, is called an "aggregate" if the compilation and its resulting copyright are not used to limit the access or legal rights of the compilation's users beyond what the individual works permit. Inclusion of a covered work in an aggregate does not cause this License to apply to the other parts of the aggregate. 6. Conveying Non-Source Forms. You may convey a covered work in object code form under the terms of sections 4 and 5, provided that you also convey the machine-readable Corresponding Source under the terms of this License, in one of these ways: a) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by the Corresponding Source fixed on a durable physical medium customarily used for software interchange. b) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by a written offer, valid for at least three years and valid for as long as you offer spare parts or customer support for that product model, to give anyone who possesses the object code either (1) a copy of the Corresponding Source for all the software in the product that is covered by this License, on a durable physical medium customarily used for software interchange, for a price no more than your reasonable cost of physically performing this conveying of source, or (2) access to copy the Corresponding Source from a network server at no charge. c) Convey individual copies of the object code with a copy of the written offer to provide the Corresponding Source. This alternative is allowed only occasionally and noncommercially, and only if you received the object code with such an offer, in accord with subsection 6b. d) Convey the object code by offering access from a designated place (gratis or for a charge), and offer equivalent access to the Corresponding Source in the same way through the same place at no further charge. You need not require recipients to copy the Corresponding Source along with the object code. If the place to copy the object code is a network server, the Corresponding Source may be on a different server (operated by you or a third party) that supports equivalent copying facilities, provided you maintain clear directions next to the object code saying where to find the Corresponding Source. Regardless of what server hosts the Corresponding Source, you remain obligated to ensure that it is available for as long as needed to satisfy these requirements. e) Convey the object code using peer-to-peer transmission, provided you inform other peers where the object code and Corresponding Source of the work are being offered to the general public at no charge under subsection 6d. A separable portion of the object code, whose source code is excluded from the Corresponding Source as a System Library, need not be included in conveying the object code work. A "User Product" is either (1) a "consumer product", which means any tangible personal property which is normally used for personal, family, or household purposes, or (2) anything designed or sold for incorporation into a dwelling. In determining whether a product is a consumer product, doubtful cases shall be resolved in favor of coverage. For a particular product received by a particular user, "normally used" refers to a typical or common use of that class of product, regardless of the status of the particular user or of the way in which the particular user actually uses, or expects or is expected to use, the product. A product is a consumer product regardless of whether the product has substantial commercial, industrial or non-consumer uses, unless such uses represent the only significant mode of use of the product. "Installation Information" for a User Product means any methods, procedures, authorization keys, or other information required to install and execute modified versions of a covered work in that User Product from a modified version of its Corresponding Source. The information must suffice to ensure that the continued functioning of the modified object code is in no case prevented or interfered with solely because modification has been made. If you convey an object code work under this section in, or with, or specifically for use in, a User Product, and the conveying occurs as part of a transaction in which the right of possession and use of the User Product is transferred to the recipient in perpetuity or for a fixed term (regardless of how the transaction is characterized), the Corresponding Source conveyed under this section must be accompanied by the Installation Information. But this requirement does not apply if neither you nor any third party retains the ability to install modified object code on the User Product (for example, the work has been installed in ROM). The requirement to provide Installation Information does not include a requirement to continue to provide support service, warranty, or updates for a work that has been modified or installed by the recipient, or for the User Product in which it has been modified or installed. Access to a network may be denied when the modification itself materially and adversely affects the operation of the network or violates the rules and protocols for communication across the network. Corresponding Source conveyed, and Installation Information provided, in accord with this section must be in a format that is publicly documented (and with an implementation available to the public in source code form), and must require no special password or key for unpacking, reading or copying. 7. Additional Terms. "Additional permissions" are terms that supplement the terms of this License by making exceptions from one or more of its conditions. Additional permissions that are applicable to the entire Program shall be treated as though they were included in this License, to the extent that they are valid under applicable law. If additional permissions apply only to part of the Program, that part may be used separately under those permissions, but the entire Program remains governed by this License without regard to the additional permissions. When you convey a copy of a covered work, you may at your option remove any additional permissions from that copy, or from any part of it. (Additional permissions may be written to require their own removal in certain cases when you modify the work.) You may place additional permissions on material, added by you to a covered work, for which you have or can give appropriate copyright permission. Notwithstanding any other provision of this License, for material you add to a covered work, you may (if authorized by the copyright holders of that material) supplement the terms of this License with terms: a) Disclaiming warranty or limiting liability differently from the terms of sections 15 and 16 of this License; or b) Requiring preservation of specified reasonable legal notices or author attributions in that material or in the Appropriate Legal Notices displayed by works containing it; or c) Prohibiting misrepresentation of the origin of that material, or requiring that modified versions of such material be marked in reasonable ways as different from the original version; or d) Limiting the use for publicity purposes of names of licensors or authors of the material; or e) Declining to grant rights under trademark law for use of some trade names, trademarks, or service marks; or f) Requiring indemnification of licensors and authors of that material by anyone who conveys the material (or modified versions of it) with contractual assumptions of liability to the recipient, for any liability that these contractual assumptions directly impose on those licensors and authors. All other non-permissive additional terms are considered "further restrictions" within the meaning of section 10. If the Program as you received it, or any part of it, contains a notice stating that it is governed by this License along with a term that is a further restriction, you may remove that term. If a license document contains a further restriction but permits relicensing or conveying under this License, you may add to a covered work material governed by the terms of that license document, provided that the further restriction does not survive such relicensing or conveying. If you add terms to a covered work in accord with this section, you must place, in the relevant source files, a statement of the additional terms that apply to those files, or a notice indicating where to find the applicable terms. Additional terms, permissive or non-permissive, may be stated in the form of a separately written license, or stated as exceptions; the above requirements apply either way. 8. Termination. You may not propagate or modify a covered work except as expressly provided under this License. Any attempt otherwise to propagate or modify it is void, and will automatically terminate your rights under this License (including any patent licenses granted under the third paragraph of section 11). However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation. Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means, this is the first time you have received notice of violation of this License (for any work) from that copyright holder, and you cure the violation prior to 30 days after your receipt of the notice. Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under this License. If your rights have been terminated and not permanently reinstated, you do not qualify to receive new licenses for the same material under section 10. 9. Acceptance Not Required for Having Copies. You are not required to accept this License in order to receive or run a copy of the Program. Ancillary propagation of a covered work occurring solely as a consequence of using peer-to-peer transmission to receive a copy likewise does not require acceptance. However, nothing other than this License grants you permission to propagate or modify any covered work. These actions infringe copyright if you do not accept this License. Therefore, by modifying or propagating a covered work, you indicate your acceptance of this License to do so. 10. Automatic Licensing of Downstream Recipients. Each time you convey a covered work, the recipient automatically receives a license from the original licensors, to run, modify and propagate that work, subject to this License. You are not responsible for enforcing compliance by third parties with this License. An "entity transaction" is a transaction transferring control of an organization, or substantially all assets of one, or subdividing an organization, or merging organizations. If propagation of a covered work results from an entity transaction, each party to that transaction who receives a copy of the work also receives whatever licenses to the work the party's predecessor in interest had or could give under the previous paragraph, plus a right to possession of the Corresponding Source of the work from the predecessor in interest, if the predecessor has it or can get it with reasonable efforts. You may not impose any further restrictions on the exercise of the rights granted or affirmed under this License. For example, you may not impose a license fee, royalty, or other charge for exercise of rights granted under this License, and you may not initiate litigation (including a cross-claim or counterclaim in a lawsuit) alleging that any patent claim is infringed by making, using, selling, offering for sale, or importing the Program or any portion of it. 11. Patents. A "contributor" is a copyright holder who authorizes use under this License of the Program or a work on which the Program is based. The work thus licensed is called the contributor's "contributor version". A contributor's "essential patent claims" are all patent claims owned or controlled by the contributor, whether already acquired or hereafter acquired, that would be infringed by some manner, permitted by this License, of making, using, or selling its contributor version, but do not include claims that would be infringed only as a consequence of further modification of the contributor version. For purposes of this definition, "control" includes the right to grant patent sublicenses in a manner consistent with the requirements of this License. Each contributor grants you a non-exclusive, worldwide, royalty-free patent license under the contributor's essential patent claims, to make, use, sell, offer for sale, import and otherwise run, modify and propagate the contents of its contributor version. In the following three paragraphs, a "patent license" is any express agreement or commitment, however denominated, not to enforce a patent (such as an express permission to practice a patent or covenant not to sue for patent infringement). To "grant" such a patent license to a party means to make such an agreement or commitment not to enforce a patent against the party. If you convey a covered work, knowingly relying on a patent license, and the Corresponding Source of the work is not available for anyone to copy, free of charge and under the terms of this License, through a publicly available network server or other readily accessible means, then you must either (1) cause the Corresponding Source to be so available, or (2) arrange to deprive yourself of the benefit of the patent license for this particular work, or (3) arrange, in a manner consistent with the requirements of this License, to extend the patent license to downstream recipients. "Knowingly relying" means you have actual knowledge that, but for the patent license, your conveying the covered work in a country, or your recipient's use of the covered work in a country, would infringe one or more identifiable patents in that country that you have reason to believe are valid. If, pursuant to or in connection with a single transaction or arrangement, you convey, or propagate by procuring conveyance of, a covered work, and grant a patent license to some of the parties receiving the covered work authorizing them to use, propagate, modify or convey a specific copy of the covered work, then the patent license you grant is automatically extended to all recipients of the covered work and works based on it. A patent license is "discriminatory" if it does not include within the scope of its coverage, prohibits the exercise of, or is conditioned on the non-exercise of one or more of the rights that are specifically granted under this License. You may not convey a covered work if you are a party to an arrangement with a third party that is in the business of distributing software, under which you make payment to the third party based on the extent of your activity of conveying the work, and under which the third party grants, to any of the parties who would receive the covered work from you, a discriminatory patent license (a) in connection with copies of the covered work conveyed by you (or copies made from those copies), or (b) primarily for and in connection with specific products or compilations that contain the covered work, unless you entered into that arrangement, or that patent license was granted, prior to 28 March 2007. Nothing in this License shall be construed as excluding or limiting any implied license or other defenses to infringement that may otherwise be available to you under applicable patent law. 12. No Surrender of Others' Freedom. If conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot convey a covered work so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not convey it at all. For example, if you agree to terms that obligate you to collect a royalty for further conveying from those to whom you convey the Program, the only way you could satisfy both those terms and this License would be to refrain entirely from conveying the Program. 13. Use with the GNU Affero General Public License. Notwithstanding any other provision of this License, you have permission to link or combine any covered work with a work licensed under version 3 of the GNU Affero General Public License into a single combined work, and to convey the resulting work. The terms of this License will continue to apply to the part which is the covered work, but the special requirements of the GNU Affero General Public License, section 13, concerning interaction through a network will apply to the combination as such. 14. Revised Versions of this License. The Free Software Foundation may publish revised and/or new versions of the GNU General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies that a certain numbered version of the GNU General Public License "or any later version" applies to it, you have the option of following the terms and conditions either of that numbered version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of the GNU General Public License, you may choose any version ever published by the Free Software Foundation. If the Program specifies that a proxy can decide which future versions of the GNU General Public License can be used, that proxy's public statement of acceptance of a version permanently authorizes you to choose that version for the Program. Later license versions may give you additional or different permissions. However, no additional obligations are imposed on any author or copyright holder as a result of your choosing to follow a later version. 15. Disclaimer of Warranty. THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 16. Limitation of Liability. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. 17. Interpretation of Sections 15 and 16. If the disclaimer of warranty and limitation of liability provided above cannot be given local legal effect according to their terms, reviewing courts shall apply local law that most closely approximates an absolute waiver of all civil liability in connection with the Program, unless a warranty or assumption of liability accompanies a copy of the Program in return for a fee. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively state the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . Also add information on how to contact you by electronic and paper mail. If the program does terminal interaction, make it output a short notice like this when it starts in an interactive mode: Copyright (C) This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, your program's commands might be different; for a GUI interface, you would use an "about box". You should also get your employer (if you work as a programmer) or school, if any, to sign a "copyright disclaimer" for the program, if necessary. For more information on this, and how to apply and follow the GNU GPL, see . The GNU General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. But first, please read . ================================================ FILE: packages/utils/README.md ================================================ # manifest-spec ================================================ FILE: packages/utils/package.json ================================================ { "name": "@subql/utils", "version": "2.22.1", "description": "", "scripts": { "build": "tsc -b", "changelog:release": "echo \"Updating changelog $npm_package_version\" && npx chan release $npm_package_version --git-url \"https://github.com/subquery/subql\" --release-prefix=\"utils/\"" }, "homepage": "https://github.com/subquery/subql", "repository": "github:subquery/subql", "author": "SubQuery Pty. Limited", "main": "dist/index.js", "license": "GPL-3.0", "dependencies": { "@polkadot/util": "^13.5.6", "@polkadot/util-crypto": "^13.5.6", "@subql/x-sequelize": "6.32.0-0.0.4", "chalk": "^4.1.2", "detect-port": "^1.6.1", "flatted": "^3.3.3", "graphql": "^15.8.0", "graphql-tag": "^2.12.6", "lodash": "^4.17.21", "pino": "^6.13.3", "rotating-file-stream": "^3.2.3" }, "devDependencies": { "@types/detect-port": "^1.3.5", "@types/pino": "^6.3.12" }, "files": [ "/dist", "!/dist/**/*.spec.js", "!/dist/**/*.spec.d.ts", "!/dist/**/*.spec.js.map", "!/dist/**/*.test.js", "!/dist/**/*.test.d.ts", "!/dist/**/*.test.js.map", "package.json", "README.md", "CHANGELOG.md", "LICENSE" ] } ================================================ FILE: packages/utils/src/array/array.spec.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import {findDuplicateStringArray} from './array'; describe('Array util', () => { it('findDuplicateStringArray', () => { const arrays = [ ['1', '2', '3'], ['3', '1', '2'], ['apple', 'banana', 'orange'], ['orange', 'apple', 'banana'], ['grape', 'melon', 'kiwi'], //this is unique ]; expect(findDuplicateStringArray(arrays)).toStrictEqual([ ['1', '2', '3'], ['apple', 'banana', 'orange'], ]); }); }); ================================================ FILE: packages/utils/src/array/array.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import {uniqWith, isEqual} from 'lodash'; // Find duplicate string array in arrays // Only sorted unique string array will be return export function findDuplicateStringArray(arrays: string[][]): string[][] { const sortedArrays = arrays.map((arr) => arr.sort().join('')); const duplicateArray: string[][] = []; for (let i = 0; i < sortedArrays.length; i++) { if (sortedArrays.indexOf(sortedArrays[i]) !== sortedArrays.lastIndexOf(sortedArrays[i])) { duplicateArray.push(arrays[i]); } } return uniqWith(duplicateArray, isEqual); } ================================================ FILE: packages/utils/src/array/index.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 export * from './array'; ================================================ FILE: packages/utils/src/buffer/buffer.spec.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import {hexStripZeros, numberToHex} from './buffer'; it('in getData, should hex number correctly', () => { const from = 10000; const to = 9999999; const to54897704 = 54897704; const zero = 0; // Use ethers.utils should have same output // expect(utils.hexValue(from)).toBe(numberToHex(from)) // expect(utils.hexValue(to54897704)).toBe(hexStripZeros(numberToHex(to54897704))) expect(hexStripZeros(numberToHex(zero))).toBe('0x0'); expect(hexStripZeros(numberToHex(from))).toBe('0x2710'); expect(hexStripZeros(numberToHex(to))).toBe('0x98967f'); expect(hexStripZeros(numberToHex(to54897704))).toBe('0x345ac28'); }); ================================================ FILE: packages/utils/src/buffer/buffer.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import {isHex} from '@polkadot/util'; import {HexString} from '@polkadot/util/types'; export { u8aEq, hexToU8a, hexToNumber, bufferToU8a, numberToU8a, numberToHex, u8aToHex, u8aConcat, u8aToBuffer, isU8a, isHex, isString, isBuffer, isNull, } from '@polkadot/util'; export {blake2AsHex, blake2AsU8a, isBase58, isBase64, base58Decode, base64Decode} from '@polkadot/util-crypto'; // This is a clone from ethers.util hexStripZeros, in order to match polkadot util hex value with ethers export function hexStripZeros(value: HexString): string { if (!isHex(value)) { throw new Error(`invalid hex string ${value}`); } const str = value.toString().substring(2); let offset = 0; while (offset < str.length && str[offset] === '0') { offset++; } const trimmed = `0x${str.substring(offset)}`; if (trimmed === '0x') { return '0x0'; } return trimmed; } ================================================ FILE: packages/utils/src/buffer/index.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 export * from './buffer'; ================================================ FILE: packages/utils/src/graphql/builder.spec.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import {validate} from 'graphql/validation'; import {buildQuery, GqlNode, GqlVar} from './builder'; describe('build gql', () => { it('gql 1', () => { const vars: GqlVar[] = [ { name: 'e_1_value', gqlType: 'String!', value: 'balances', }, ]; const nodes: GqlNode[] = [ { entity: 'specVersions', args: { filter: { blockHeight: {greaterThanOrEqualTo: '"1000"', lessThan: '"100000"'}, }, }, project: [ { entity: 'nodes', project: ['id', 'blockHeight'], }, ], }, { entity: 'events', args: { filter: { blockHeight: {greaterThanOrEqualTo: '"1000"', lessThan: '"100000"'}, or: [ { and: [{module: {equalTo: '$e_1_value'}}, {event: {equalTo: '"Transfer"'}}], }, ], }, orderBy: 'BLOCK_HEIGHT_ASC', first: '100', }, project: [ { entity: 'nodes', project: ['blockHeight'], }, ], }, ]; const {query, variables} = buildQuery(vars, nodes); expect(variables.e_1_value).toBe('balances'); expect(query).toMatch(/query\(\$e_1_value:String!\)/); }); }); ================================================ FILE: packages/utils/src/graphql/builder.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 export interface GqlVar { name: string; gqlType: string; value: unknown; } export interface GqlNode { // type?: "interface" | "union"; entity: string; project?: Array; args?: Record; } export interface GqlQuery { query: string; variables: Record; } function buildArgs(args: Record): string { return Object.keys(args) .map((argKey) => { const argValue = args[argKey]; if (typeof argValue === 'string') { return `${argKey}:${argValue}`; } else if (argValue instanceof Array) { return `${argKey}:[${argValue .map((nested) => { if (typeof nested === 'string') { return nested; } else if (nested instanceof Array) { throw new Error('not supported'); } else if (typeof nested === 'object') { return `{${buildArgs(nested)}}`; } throw new Error('not supported'); }) .join(',')}]`; } else if (typeof argValue === 'object') { return `${argKey}:{${buildArgs(argValue as Record)}}`; } else { throw new Error('graphql args not supported'); } }) .join(','); } const bindProjections = (node: GqlNode): string => { return `${node.entity} ${node.args ? `(${buildArgs(node.args)})` : ``}${ node.project ? `{${node.project .map((el: GqlNode | string) => { if (typeof el === 'string') { return `${el} `; } return `${bindProjections(el)} `; }) .join('')}} ` : `` }`; }; const toVarDefs = (vars: GqlVar[]): string => { return vars && vars.length ? `(${vars.map((item) => `$${item.name}:${item.gqlType}`)})` : ``; }; const toVariables = (vars: GqlVar[]) => vars.reduce( (acc, v) => { if (acc[v.name]) { throw new Error(`Graphql variables conflicts $${v.name}`); } acc[v.name] = v.value; return acc; }, {} as Record ); export function buildQuery(vars: GqlVar[], nodes: GqlNode[]): GqlQuery { return { query: `query${toVarDefs(vars)}{${nodes.map((node) => bindProjections(node)).join(' ')}}`, variables: toVariables(vars), }; } ================================================ FILE: packages/utils/src/graphql/constant.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 export enum DirectiveName { DerivedFrom = 'derivedFrom', Entity = 'entity', JsonField = 'jsonField', FullText = 'fullText', } ================================================ FILE: packages/utils/src/graphql/entities.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import assert from 'assert'; import { assertListType, getDirectiveValues, getNullableType, GraphQLEnumType, GraphQLField, GraphQLNamedType, GraphQLObjectType, GraphQLOutputType, GraphQLSchema, isEnumType, isInterfaceType, isListType, isNonNullType, isObjectType, isUnionType, ValueNode, BooleanValueNode, TypeNode, GraphQLDirective, } from 'graphql'; import {findDuplicateStringArray} from '../array'; import {Logger} from '../logger'; import {getTypeByScalarName} from '../types'; import {DirectiveName} from './constant'; import {buildSchemaFromFile} from './schema'; import { FieldScalar, GraphQLEntityField, GraphQLFullTextType, GraphQLJsonFieldType, GraphQLJsonObjectType, GraphQLModelsRelationsEnums, GraphQLModelsType, GraphQLRelationsType, IndexType, } from './types'; const logger = new Logger({level: 'info', outputFormat: 'colored'}).getLogger('Utils.entities'); export function getAllJsonObjects(_schema: GraphQLSchema | string): GraphQLObjectType[] { return Object.values(getSchema(_schema).getTypeMap()) .filter((node) => node.astNode?.directives?.find(({name: {value}}) => value === DirectiveName.JsonField)) .map((node) => node) .filter(isObjectType); } export function getAllEnums(_schema: GraphQLSchema | string): GraphQLEnumType[] { return getEnumsFromSchema(getSchema(_schema)); } function getDirectives(schema: GraphQLSchema, names: string[]): GraphQLDirective[] { const res: GraphQLDirective[] = []; for (const name of names) { const directive = schema.getDirective(name); assert(directive, `${name} directive is required`); res.push(directive); } return res; } // eslint-disable-next-line complexity export function getAllEntitiesRelations(_schema: GraphQLSchema | string | null): GraphQLModelsRelationsEnums { if (_schema === null) { return { models: [], relations: [], enums: [], }; } const schema = getSchema(_schema); const entities = Object.values(schema.getTypeMap()) .filter((node) => node.astNode?.directives?.find(({name: {value}}) => value === DirectiveName.Entity)) .filter(isObjectType); const jsonObjects = getAllJsonObjects(schema); const entityNameSet = entities.map((entity) => entity.name); const enums = new Map( getEnumsFromSchema(schema).map((node) => [ node.name, {name: node.name, description: node.description, values: node.getValues().map((v) => v.value)}, ]) ); const modelRelations = {models: [], relations: [], enums: [...enums.values()]} as GraphQLModelsRelationsEnums; const [derivedFrom, indexDirective, idDbType] = getDirectives(schema, ['derivedFrom', 'index', 'dbType']); for (const entity of entities) { const newModel: GraphQLModelsType = { name: entity.name, description: entity.description ?? undefined, fields: [], indexes: [], }; const entityFields = Object.values(entity.getFields()); const idField = entityFields.find((field) => field.name === 'id'); if (!idField) { throw new Error(`Entity "${entity.name}" is missing required id field.`); } else if (idField.type.toString() !== 'ID!') { throw new Error(`Entity "${entity.name}" type must be ID, received ${idField.type.toString()}`); } const fkNameSet: string[] = []; for (const field of entityFields) { const typeString = extractType(field.type); const derivedFromDirectValues = field.astNode ? getDirectiveValues(derivedFrom, field.astNode) : undefined; const indexDirectiveVal = field.astNode ? getDirectiveValues(indexDirective, field.astNode) : undefined; const dbTypeDirectiveVal = field.astNode ? getDirectiveValues(idDbType, field.astNode) : undefined; //If is a basic scalar type const typeClass = getTypeByScalarName(typeString); if (typeClass?.fieldScalar) { newModel.fields.push(packEntityField(typeString, field, false)); } // If is an enum else if (enums.has(typeString)) { newModel.fields.push({ type: typeString, description: field.description ?? undefined, isEnum: true, isArray: isListType(isNonNullType(field.type) ? getNullableType(field.type) : field.type), nullable: !isNonNullType(field.type), name: field.name, }); } // If is a foreign key else if (entityNameSet.includes(typeString) && !derivedFromDirectValues) { let relatedTypeString = FieldScalar.String; // Check to see if the relation ID type is modified with the @dbType directive const relatedIdField = entities.find((e) => e.name === typeString)?.getFields().id; const dbIdType = relatedIdField?.astNode ? getDirectiveValues(idDbType, relatedIdField.astNode) : undefined; if (dbIdType) { relatedTypeString = dbIdType.type; } newModel.fields.push(packEntityField(relatedTypeString, field, true)); modelRelations.relations.push({ from: entity.name, type: 'belongsTo', to: typeString, foreignKey: `${field.name}Id`, } as GraphQLRelationsType); // Ensures that foreign keys are linked correctly if ( field.astNode && (field.astNode.type.kind === 'ListType' || (field.astNode.type.kind === 'NonNullType' && field.astNode.type.type.kind === 'ListType')) ) { const resolveName = (type: TypeNode): string => { switch (type.kind) { case 'NamedType': return type.name.value; case 'NonNullType': return resolveName(type.type); case 'ListType': return resolveName(type.type); default: // Any case in case future adds new kind throw new Error(`Unhandled node kind: ${(type as any).kind}`); } }; throw new Error( `Field "${field.name}" on entity "${newModel.name}" is missing "derivedFrom" directive. Please also make sure "${resolveName(field.astNode.type)}" has a field of type "${newModel.name}".` ); } newModel.indexes.push({ unique: false, fields: [`${field.name}Id`], using: IndexType.HASH, }); fkNameSet.push(field.name); } // If is derivedFrom else if (entityNameSet.includes(typeString) && derivedFromDirectValues) { modelRelations.relations.push({ from: entity.name, type: isListType(isNonNullType(field.type) ? getNullableType(field.type) : field.type) ? 'hasMany' : 'hasOne', to: typeString, foreignKey: `${derivedFromDirectValues.field}Id`, fieldName: field.name, } as GraphQLRelationsType); } // If is jsonField else if (jsonObjects.map((json) => json.name).includes(typeString)) { const jsonObject = jsonObjects.find((object) => object.name === typeString); assert(jsonObject, `Json object ${typeString} not found`); const jsonObjectType = setJsonObjectType(jsonObject, jsonObjects); newModel.fields.push(packJSONField(typeString, field, jsonObjectType)); const directive = jsonObject.astNode?.directives?.find(({name: {value}}) => value === DirectiveName.JsonField); const argValue = directive?.arguments?.find((arg) => arg.name.value === 'indexed')?.value; // For backwards compatibility if the argument is not defined then the index will be added if (!argValue || (isBooleanValueNode(argValue) && argValue.value !== false)) { newModel.indexes.push({ unique: false, fields: [field.name], using: IndexType.GIN, }); } } else { throw new Error(`${typeString} is not a valid type`); } // handle indexes if (indexDirectiveVal) { if (typeString !== 'ID' && typeClass) { newModel.indexes.push({ unique: indexDirectiveVal.unique, fields: [field.name], }); } else if (typeString !== 'ID' && entityNameSet.includes(typeString)) { if (indexDirectiveVal.unique) { const fkIndex = newModel.indexes.find( (idx) => idx.fields.length === 1 && idx.fields[0] === `${field.name}Id` ); if (fkIndex) { fkIndex.unique = true; } } } else if (typeString !== 'ID' && enums.has(typeString)) { newModel.indexes.push({ fields: [field.name], }); } else { throw new Error(`index can not be added on field ${field.name}`); } } // Update id type if directive specified if (dbTypeDirectiveVal) { if (typeString !== 'ID') { throw new Error(`dbType directive can only be added on 'id' field, received: ${field.name}`); } const dbType = dbTypeDirectiveVal.type; const t = getTypeByScalarName(dbType); // Allowlist of types that can be used. const allowedTypes = ['BigInt', 'Float', 'ID', 'Int', 'String']; if (!t || !allowedTypes.includes(t.name)) { throw new Error( `${dbType} is not a defined scalar type, please use another type in the dbType directive.\nAvailable types: ${allowedTypes.join(', ')}` ); } const f = newModel.fields.find((f) => f.name === 'id'); if (!f) { throw new Error('Expected id field to exist on model'); } f.type = t.name; } } // Composite Indexes const compositeIndexDirective = schema.getDirective('compositeIndexes'); assert(compositeIndexDirective, 'compositeIndexes directive is required'); assert(entity.astNode, 'Entity astNode is required'); const compositeIndexDirectiveVal = getDirectiveValues(compositeIndexDirective, entity.astNode) as { fields?: string[][]; }; if (compositeIndexDirectiveVal?.fields && compositeIndexDirectiveVal?.fields.length) { const duplicateIndexes = findDuplicateStringArray(compositeIndexDirectiveVal.fields); if (duplicateIndexes.length) { throw new Error( `Found duplicate composite indexes ${JSON.stringify(duplicateIndexes)} on entity ${entity.name}` ); } compositeIndexDirectiveVal.fields.forEach((indexFields) => { const joinFields = getJoinIndexFields(entity, entityFields, fkNameSet, indexFields); newModel.indexes.push({ fields: joinFields, }); }); } // Fulltext Search const fullTextDirective = schema.getDirective('fullText'); assert(fullTextDirective, 'fullText directive is required'); const fullTextDirectiveVal = getDirectiveValues(fullTextDirective, entity.astNode) as GraphQLFullTextType; if (fullTextDirectiveVal) { if (!fullTextDirectiveVal.fields.length) { throw new Error(`Expected fullText directive to have at least one field on entity ${entity.name}`); } // Make fields unique fullTextDirectiveVal.fields = [...new Set(fullTextDirectiveVal.fields)]; fullTextDirectiveVal.fields.forEach((searchField, index) => { const field = newModel.fields.find((f) => [searchField, `${searchField}Id`].includes(f.name)); if (!field) { throw new Error(`Field "${searchField}" in fullText directive doesn't exist on entity "${entity.name}"`); } if (!['String', 'ID'].includes(field.type)) { throw new Error(`fullText directive fields only supports String types`); } // If the field is a relation, we rename the field to include _id if (field.name === `${searchField}Id`) { fullTextDirectiveVal.fields[index] = `${searchField}_id`; } }); newModel.fullText = fullTextDirectiveVal; } modelRelations.models.push(newModel); } validateRelations(modelRelations); return modelRelations; } function getJoinIndexFields( entity: GraphQLObjectType, entityFields: GraphQLField[], fkNameSet: string[], indexArgFields: string[] ): string[] { if (indexArgFields.length === 1) { logger.warn(`Composite index expected to be more than 1 field , entity ${entity} [${indexArgFields}]`); } if (indexArgFields.length > 3) { throw new Error( `Composite index on entity ${entity} expected not more than 3 fields, index [${indexArgFields}] got ${indexArgFields.length} fields` ); } // check duplicate fields const duplicateFields = indexArgFields.filter((name, index, arr) => arr.indexOf(name) !== index); if (duplicateFields.length) { throw new Error(`Composite index ${entity}.${indexArgFields} got duplicated fields: ${duplicateFields}`); } return indexArgFields.map((j) => { const fieldInEntity = entityFields.find((f) => f.name === j); // check whether these fields are exist in the entity if (fieldInEntity === undefined) { throw new Error(`Composite index [${indexArgFields}], field ${j} not found within entity ${entity} `); } // check is fk if (fkNameSet.includes(fieldInEntity.name)) { return `${j}Id`; } return j; }); } function packEntityField( typeString: FieldScalar | string, field: GraphQLField, isForeignKey: boolean ): GraphQLEntityField { return { name: isForeignKey ? `${field.name}Id` : field.name, type: typeString, description: field.description ?? undefined, isArray: isListType(isNonNullType(field.type) ? getNullableType(field.type) : field.type), nullable: !isNonNullType(field.type), isEnum: false, }; } function packJSONField( typeString: string, field: GraphQLField, jsonObject: GraphQLJsonObjectType ): GraphQLEntityField { return { name: field.name, type: 'Json', description: field.description ?? undefined, jsonInterface: jsonObject, isArray: isListType(isNonNullType(field.type) ? getNullableType(field.type) : field.type), nullable: !isNonNullType(field.type), isEnum: false, }; } export function setJsonObjectType( jsonObject: GraphQLObjectType, jsonObjects: GraphQLObjectType[] ): GraphQLJsonObjectType { const graphQLJsonObject: GraphQLJsonObjectType = { name: jsonObject.name, fields: [], }; for (const field of Object.values(jsonObject.getFields())) { //check if field is also json const typeString = extractType(field.type); const jsonType = jsonObjects.find((json) => json.name === typeString); graphQLJsonObject.fields.push({ name: field.name, type: jsonType ? 'Json' : extractType(field.type), jsonInterface: jsonType ? setJsonObjectType(jsonType, jsonObjects) : undefined, nullable: !isNonNullType(field.type), isArray: isListType(isNonNullType(field.type) ? getNullableType(field.type) : field.type), } as GraphQLJsonFieldType); } return graphQLJsonObject; } function getSchema(_schema: GraphQLSchema | string): GraphQLSchema { return typeof _schema === 'string' ? buildSchemaFromFile(_schema) : _schema; } function getEnumsFromSchema(schema: GraphQLSchema): GraphQLEnumType[] { return Object.values(schema.getTypeMap()) .filter((r) => r.astNode !== undefined) .filter(isEnumType); } //Get the type, ready to be convert to string function extractType(type: GraphQLOutputType): string { if (isUnionType(type)) { throw new Error(`Not support Union type`); } if (isInterfaceType(type)) { throw new Error(`Not support Interface type`); } const offNullType = isNonNullType(type) ? getNullableType(type) : type; const offListType = isListType(offNullType) ? assertListType(offNullType).ofType : type; return isNonNullType(offListType) ? (getNullableType(offListType) as unknown as GraphQLNamedType).name : offListType.name; } function validateRelations(modelRelations: GraphQLModelsRelationsEnums): void { for (const r of modelRelations.relations.filter((model) => model.type === 'hasMany' || model.type === 'hasOne')) { assert( modelRelations.models.find( (model) => model.name === r.to && model.fields.find((field) => field.name === r.foreignKey) ), `Please check entity ${r.from} with field ${r.fieldName} has correct relation with entity ${r.to}` ); } } function isBooleanValueNode(valueNode?: ValueNode): valueNode is BooleanValueNode { return valueNode?.kind === 'BooleanValue'; } ================================================ FILE: packages/utils/src/graphql/graphql.spec.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import gql from 'graphql-tag'; import {getAllEntitiesRelations} from './entities'; import {buildSchemaFromDocumentNode} from './schema'; describe('utils that handle schema.graphql', () => { it('support @entity annotation in the schema', () => { const graphqlSchema = gql` type KittyBirthInfo @entity { id: ID! birthBlockHeight: BigInt! owner: String! birthAt: Date! } `; const schema = buildSchemaFromDocumentNode(graphqlSchema); expect(schema).toBeTruthy(); expect(Object.keys(schema.getTypeMap())).toContain('KittyBirthInfo'); }); it('can extract entities from the schema', () => { const graphqlSchema = gql` type KittyBirthInfo @entity { id: ID! } `; const schema = buildSchemaFromDocumentNode(graphqlSchema); const entities = getAllEntitiesRelations(schema); expect(entities.models).toMatchObject([{name: 'KittyBirthInfo'}]); expect(entities.models[0].fields).toEqual([ {isArray: false, name: 'id', nullable: false, type: 'ID', isEnum: false}, ]); }); it('throw error for unsupported types', () => { const graphqlSchema = gql` type Test @entity { id: ID! price: Double } `; expect(() => buildSchemaFromDocumentNode(graphqlSchema)).toThrow(); }); it('support Bytes and Float types', () => { const graphqlSchema = gql` type Test @entity { id: ID! hash: Bytes rate: Float } `; const schema = buildSchemaFromDocumentNode(graphqlSchema); const entities = getAllEntitiesRelations(schema); expect(entities.models[0].fields[1].type).toBe('Bytes'); expect(entities.models[0].fields[2].type).toBe('Float'); }); it('throw error for union/enum/interface type', () => { const graphqlSchema = gql` type Test @entity { id: ID! unionKind: unionResult enumKind: enumResult who: Character } interface Character { id: ID! name: String! } union unionResult = Human | Droid | Starship type Human @entity { id: ID! } type Droid @entity { id: ID! } type Starship @entity { id: ID! } enum enumResult { NEWHOPE EMPIRE JEDI } `; expect(() => { const schema = buildSchemaFromDocumentNode(graphqlSchema); getAllEntitiesRelations(schema); }).toThrow(/Not support/); }); it('can create an enum with an index', () => { const graphqlSchema = gql` type Test @entity { id: ID! enumKind: enumResult! @index } enum enumResult { NEWHOPE EMPIRE JEDI } `; const schema = buildSchemaFromDocumentNode(graphqlSchema); const rels = getAllEntitiesRelations(schema); expect(rels.models[0].indexes[0]).toMatchObject({ fields: ['enumKind'], }); // expect(() => { // const schema = buildSchemaFromDocumentNode(graphqlSchema); // getAllEntitiesRelations(schema); // }).toThrow(/Not support/); }); it('can extract nested models and relations from the schema', () => { const graphqlSchema = gql` type Account @entity { id: ID! identity: Identity! @derivedFrom(field: "account") transfers: [Transfer] @derivedFrom(field: "from") } type Transfer @entity { id: ID! from: Account! } type Identity @entity { id: ID! account: Account! } `; const schema = buildSchemaFromDocumentNode(graphqlSchema); const entities = getAllEntitiesRelations(schema); expect(entities.models).toMatchObject([ { name: 'Account', fields: [{name: 'id', type: 'ID', isArray: false, nullable: false}], }, { name: 'Transfer', fields: [ {name: 'id', type: 'ID', isArray: false, nullable: false}, {name: 'fromId', type: 'String', isArray: false, nullable: false}, ], }, { name: 'Identity', fields: [ {name: 'id', type: 'ID', isArray: false, nullable: false}, { name: 'accountId', type: 'String', isArray: false, nullable: false, }, ], }, ]); expect(entities.relations).toMatchObject([ { from: 'Account', type: 'hasOne', to: 'Identity', foreignKey: 'accountId', fieldName: 'identity', }, { from: 'Account', type: 'hasMany', to: 'Transfer', foreignKey: 'fromId', fieldName: 'transfers', }, { from: 'Transfer', type: 'belongsTo', to: 'Account', foreignKey: 'fromId', }, { from: 'Identity', type: 'belongsTo', to: 'Account', foreignKey: 'accountId', }, ]); }); it('throw error if derivedFrom field with missing field name in corresponding entity', () => { const graphqlSchema = gql` type Account @entity { id: ID! transfers: [Transfer] @derivedFrom(field: "from") } type Transfer @entity { id: ID! #from: Account! # If this is missing to: Account! } `; const schema = buildSchemaFromDocumentNode(graphqlSchema); expect(() => getAllEntitiesRelations(schema)).toThrow( 'Please check entity Account with field transfers has correct relation with entity Transfer' ); }); it('can extract indexed fields from the schema', () => { const graphqlSchema = gql` type TestEntity @entity { id: ID! column1: String @index column2: BigInt @index(unique: true) } `; const schema = buildSchemaFromDocumentNode(graphqlSchema); const entities = getAllEntitiesRelations(schema); expect(entities.models?.[0].indexes).toHaveLength(2); expect(entities.models?.[0].indexes[0].fields).toEqual(['column1']); expect(entities.models?.[0].indexes[0].unique).toBeUndefined(); expect(entities.models?.[0].indexes[1].fields).toEqual(['column2']); expect(entities.models?.[0].indexes[1].unique).toBe(true); }); it('throw if add index on pk', () => { const graphqlSchema = gql` type TestEntity @entity { id: ID! @index } `; const schema = buildSchemaFromDocumentNode(graphqlSchema); expect(() => getAllEntitiesRelations(schema)).toThrow(/^index can not be added on field id/); }); it('can extract indexed fields from foreign field', () => { const graphqlSchema = gql` type Fruit @entity { id: ID! apple: Apple banana: [Banana] @derivedFrom(field: "fruit") } type Fruit2 @entity { id: ID! apple: Apple @index } type Apple @entity { id: ID! } type Banana @entity { id: ID! fruit: Fruit } `; const schema = buildSchemaFromDocumentNode(graphqlSchema); const entities = getAllEntitiesRelations(schema); expect(entities.models?.[0].indexes[0].fields).toEqual(['appleId']); expect(entities.models?.[0].indexes[0].using).toEqual('hash'); expect(entities.models?.[0].indexes[0].unique).toBe(false); expect(entities.models?.[1].indexes[0].fields).toEqual(['appleId']); expect(entities.models?.[1].indexes[0].unique).toBe(false); }); it('can read jsonfield', () => { const graphqlSchema = gql` type MyJson @jsonField { data: String! data2: [String] data3: MyJson2 } type MyJson2 @jsonField { data4: String! } type Account @entity { field6: [MyJson]! id: ID! } `; const schema = buildSchemaFromDocumentNode(graphqlSchema); const accountModel = getAllEntitiesRelations(schema).models.find((model) => model.name === 'Account'); expect(accountModel?.fields[0].type).toBe('Json'); expect(accountModel?.fields[0].jsonInterface?.name).toBe('MyJson'); expect(accountModel?.fields[0].isArray).toBeTruthy(); expect(accountModel?.fields[0].jsonInterface?.fields[0].nullable).toBeFalsy(); expect(accountModel?.fields[0].jsonInterface?.fields[1].isArray).toBeTruthy(); // allow json in json expect(accountModel?.fields[0].jsonInterface?.fields[2].type).toBe('Json'); expect(accountModel?.fields[0].jsonInterface?.fields[2].jsonInterface?.name).toBe('MyJson2'); }); it('can read jsonfield with indexed option', () => { const graphqlSchema = gql` type MyJson @jsonField(indexed: false) { data: String! data2: [String] } type MyJson2 @jsonField(indexed: true) { data: String! data2: [String] } type MyJson3 @jsonField { data: String! data2: [String] } type Account @entity { field1: MyJson! field2: MyJson2! field3: MyJson3! id: ID! } `; const schema = buildSchemaFromDocumentNode(graphqlSchema); const entities = getAllEntitiesRelations(schema); expect(entities.models?.[0].indexes.length).toEqual(2); expect(entities.models?.[0].indexes[0].fields).toEqual(['field2']); expect(entities.models?.[0].indexes[1].fields).toEqual(['field3']); }); it('can read composite index', () => { const graphqlSchema = gql` type StarterEntity @entity @compositeIndexes(fields: [["field1", "field2"], ["field2", "field3"]]) { id: ID! #id is a required field field1: Int! field2: String #field2 is an optional field field3: String } `; const schema = buildSchemaFromDocumentNode(graphqlSchema); const entities = getAllEntitiesRelations(schema); expect(entities.models?.[0].indexes[0].fields).toEqual(['field1', 'field2']); }); it('can create composite index for fk field', () => { const graphqlSchema = gql` type StarterEntity @entity @compositeIndexes(fields: [["field1", "field2"], ["field2", "relate"]]) { id: ID! #id is a required field field1: Int! field2: String relate: RelateEntity } type RelateEntity @entity { id: ID! #id is a required field } `; const schema = buildSchemaFromDocumentNode(graphqlSchema); const entities = getAllEntitiesRelations(schema); expect(entities.models?.[0].indexes[2].fields).toEqual(['field2', 'relateId']); }); it('will throw if composite index field not found within entity', () => { const graphqlSchema = gql` type StarterEntity @entity @compositeIndexes(fields: [["field1", "field5"]]) { id: ID! field1: Int! field2: String } `; const schema = buildSchemaFromDocumentNode(graphqlSchema); expect(() => getAllEntitiesRelations(schema)).toThrow(/not found within entity/); }); it('will throw when found duplicate composite index', () => { const graphqlSchema = gql` type StarterEntity @entity @compositeIndexes(fields: [["field1", "field2"], ["field2", "field3"], ["field3", "field2"]]) { id: ID! field1: Int! field2: String field3: String } `; const schema = buildSchemaFromDocumentNode(graphqlSchema); expect(() => getAllEntitiesRelations(schema)).toThrow(/Found duplicate composite indexes/); }); it('will throw if number of composite indexes excess limit', () => { const graphqlSchema = gql` type StarterEntity @entity @compositeIndexes(fields: [["id", "field1", "field2", "field3"]]) { id: ID! field1: Int! field2: String field3: String } `; const schema = buildSchemaFromDocumentNode(graphqlSchema); expect(() => getAllEntitiesRelations(schema)).toThrow( /Composite index on entity StarterEntity expected not more than 3 fields,/ ); }); it('can read fulltext directive', () => { const graphqlSchema = gql` type StarterEntity @entity @fullText(fields: ["field2", "field3"], language: "english") { id: ID! #id is a required field field1: Int! field2: String #field2 is an optional field field3: String } `; const schema = buildSchemaFromDocumentNode(graphqlSchema); const entities = getAllEntitiesRelations(schema); expect(entities.models?.[0].fullText?.fields).toEqual(['field2', 'field3']); }); it('can throw fulltext directive when field doesnt exist on entity', () => { const graphqlSchema = gql` type StarterEntity @entity @fullText(fields: ["field2", "not_exists"], language: "english") { id: ID! #id is a required field field1: Int! field2: String #field2 is an optional field field3: String } `; const schema = buildSchemaFromDocumentNode(graphqlSchema); expect(() => getAllEntitiesRelations(schema)).toThrow( `Field "not_exists" in fullText directive doesn't exist on entity "StarterEntity"` ); }); it('can throw fulltext directive when field isnt a string', () => { const graphqlSchema = gql` type StarterEntity @entity @fullText(fields: ["field1"], language: "english") { id: ID! #id is a required field field1: Int! field2: String #field2 is an optional field field3: String } `; const schema = buildSchemaFromDocumentNode(graphqlSchema); expect(() => getAllEntitiesRelations(schema)).toThrow(`fullText directive fields only supports String types`); }); it('will throw if entity missing id field', () => { const graphqlSchema = gql` type StarterEntity @entity { field1: Int! field2: String #field2 is an optional field field3: String } `; const schema = buildSchemaFromDocumentNode(graphqlSchema); expect(() => getAllEntitiesRelations(schema)).toThrow(`Entity "StarterEntity" is missing required id field.`); }); it('will throw if entity id field isnt id', () => { const graphqlSchema = gql` type StarterEntity @entity { id: Int! field1: Int! field2: String #field2 is an optional field field3: String } `; const schema = buildSchemaFromDocumentNode(graphqlSchema); expect(() => getAllEntitiesRelations(schema)).toThrow(`Entity "StarterEntity" type must be ID, received Int`); }); it('will throw if 1 to Many relationship is missing directive', () => { const graphqlSchema = gql` type Fruit @entity { id: ID! bananas: [Banana!]! } type Banana @entity { id: ID! } `; const schema = buildSchemaFromDocumentNode(graphqlSchema); expect(() => getAllEntitiesRelations(schema)).toThrow( `Field "bananas" on entity "Fruit" is missing "derivedFrom" directive. Please also make sure "Banana" has a field of type "Fruit".` ); }); describe('dbType directive', () => { it('allows overriding the default ID type', () => { const graphqlSchema = gql` type StarterEntity @entity { id: ID! @dbType(type: "Int") } `; const schema = buildSchemaFromDocumentNode(graphqlSchema); const entityRelations = getAllEntitiesRelations(schema); const model = entityRelations.models.find((m) => m.name === 'StarterEntity'); expect(model).toBeDefined(); expect(model?.fields[0].type).toEqual('Int'); }); it('doesnt allow the directive on fields other than id', () => { const graphqlSchema = gql` type StarterEntity @entity { id: ID! field1: Date @dbType(type: "Int") } `; const schema = buildSchemaFromDocumentNode(graphqlSchema); expect(() => getAllEntitiesRelations(schema)).toThrow( `dbType directive can only be added on 'id' field, received: field1` ); }); it('only allows predefined ID db types', () => { const makeSchema = (type: string) => buildSchemaFromDocumentNode(gql` type StarterEntity @entity { id: ID! @dbType(type: "${type}") } `); for (const type of ['BigInt', 'Int', 'Float', 'ID', 'String']) { const schema = makeSchema(type); expect(() => getAllEntitiesRelations(schema)).not.toThrow(); } for (const type of ['JSON', 'Date', 'Bytes', 'Boolean', 'StarterEntity']) { const schema = makeSchema(type); expect(() => getAllEntitiesRelations(schema)).toThrow( `${type} is not a defined scalar type, please use another type in the dbType directive.\nAvailable types: BigInt, Float, ID, Int, String` ); } }); }); }); ================================================ FILE: packages/utils/src/graphql/index.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 export * from './entities'; export * from './schema'; export * from './types'; export * from './builder'; ================================================ FILE: packages/utils/src/graphql/schema/directives.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import gql from 'graphql-tag'; export const directives = gql` directive @derivedFrom(field: String!) on FIELD_DEFINITION directive @entity on OBJECT directive @jsonField(indexed: Boolean) on OBJECT directive @index(unique: Boolean) on FIELD_DEFINITION directive @compositeIndexes(fields: [[String]]!) on OBJECT directive @fullText(fields: [String!], language: String) on OBJECT directive @dbType(type: String!) on FIELD_DEFINITION `; ================================================ FILE: packages/utils/src/graphql/schema/scalas.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import gql from 'graphql-tag'; export const scalas = gql` scalar BigInt scalar BigDecimal scalar Date scalar Bytes scalar Float `; ================================================ FILE: packages/utils/src/graphql/schema.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import fs from 'fs'; import {buildASTSchema, DocumentNode, extendSchema, GraphQLSchema, parse, Source} from 'graphql'; import {directives} from './schema/directives'; import {scalas} from './schema/scalas'; function loadBaseSchema(): GraphQLSchema { const schema = buildASTSchema(scalas); return extendSchema(schema, directives); } export function buildSchemaFromFile(path: string): GraphQLSchema { return buildSchemaFromString(fs.readFileSync(path).toString()); } export function buildSchemaFromString(raw: string): GraphQLSchema { const src = new Source(raw); const doc = parse(src); return buildSchemaFromDocumentNode(doc); } export function buildSchemaFromDocumentNode(doc: DocumentNode): GraphQLSchema { return extendSchema(loadBaseSchema(), doc); } ================================================ FILE: packages/utils/src/graphql/types.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 export interface GraphQLJsonObjectType { name: string; fields: GraphQLJsonFieldType[]; } export interface GraphQLJsonFieldType { name: string; type: Exclude | 'Json'; jsonInterface?: GraphQLJsonObjectType; nullable: boolean; isArray: boolean; } export interface GraphQLModelsRelationsEnums { models: GraphQLModelsType[]; relations: GraphQLRelationsType[]; enums: GraphQLEnumsType[]; } export interface GraphQLEnumsType { name: string; values: string[]; description?: string; } export interface GraphQLModelsType { name: string; fields: GraphQLEntityField[]; indexes: GraphQLEntityIndex[]; fullText?: GraphQLFullTextType; description?: string; } export interface GraphQLEntityField { name: string; type: string; jsonInterface?: GraphQLJsonObjectType; isArray: boolean; nullable: boolean; isEnum: boolean; description?: string; } export enum IndexType { BTREE = 'btree', HASH = 'hash', GIST = 'gist', SPGIST = 'spgist', GIN = 'gin', BRIN = 'brin', } export interface GraphQLEntityIndex { fields: string[]; unique?: boolean; using?: IndexType; } export interface GraphQLFullTextType { fields: string[]; language?: string; } export interface GraphQLRelationsType { from: string; type: 'hasOne' | 'hasMany' | 'belongsTo'; to: string; foreignKey: string; fieldName?: string; } export enum FieldScalar { ID = 'ID', Int = 'Int', BigInt = 'BigInt', String = 'String', Date = 'Date', Boolean = 'Boolean', Bytes = 'Bytes', Float = 'Float', } ================================================ FILE: packages/utils/src/index.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 export * from './graphql'; export {levelFilter, Logger, LoggerOption} from './logger'; export * from './query'; export * from './types'; export * from './buffer'; export * from './networking'; ================================================ FILE: packages/utils/src/logger/colors.spec.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import {colorizeLevel} from './colors'; describe('LoggerColorLevel', () => { it('returns default for an unsupported level number', () => { const level = colorizeLevel(5); expect(level).toBe('\x1b[37mUSERLVL\x1b[39m'); }); it('returns the correct level for a level number', () => { const level = colorizeLevel(60); expect(level).toBe('\x1b[41mFATAL\x1b[49m'); }); }); ================================================ FILE: packages/utils/src/logger/colors.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import chalk from 'chalk'; import {LEVELS} from './constants'; export const ctx = new chalk.Instance({level: 3}); const colored: Record = { default: ctx.white, 60: ctx.bgRed, 50: ctx.red, 40: ctx.yellow, 30: ctx.green, 20: ctx.blue, 10: ctx.grey, message: ctx.cyan, }; function isColouredValue(level: number | string): level is keyof typeof LEVELS { return Number.isInteger(+level) && level in colored; } export function colorizeLevel(level: number): string { if (isColouredValue(level) && Object.prototype.hasOwnProperty.call(LEVELS, level)) { return colored[level](LEVELS[level]); } return colored.default(LEVELS.default); } ================================================ FILE: packages/utils/src/logger/constants.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 export const LEVELS = { default: 'USERLVL', 60: 'FATAL', 50: 'ERROR', 40: 'WARN', 30: 'INFO', 20: 'DEBUG', 10: 'TRACE', }; export const LEVELS_MAP = { trace: 10, debug: 20, info: 30, warn: 40, error: 50, fatal: 60, silent: 999, }; ================================================ FILE: packages/utils/src/logger/index.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 export * from './logger'; export * from './util'; ================================================ FILE: packages/utils/src/logger/logger.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import path from 'path'; import {isMainThread, threadId} from 'worker_threads'; import {stringify} from 'flatted'; import Pino, {LevelWithSilent} from 'pino'; import {createStream} from 'rotating-file-stream'; import {colorizeLevel, ctx} from './colors'; import {LEVELS, LEVELS_MAP} from './constants'; export interface LoggerOption { level?: string; filepath?: string; rotate?: boolean; nestedKey?: string; outputFormat?: 'json' | 'colored'; /** * Set the debug level for specific child loggers * */ debugFilter?: string[]; } function formatErrorString(err: unknown, stack = false): string { if (err instanceof Error) { const t = err.constructor.name ?? 'Error'; let formattedError = `${ctx.red(`${t}:`)} ${ctx.yellow(err.message)}`; if (stack) { formattedError += `\n${ctx.red('Stack:')} ${ctx.gray(err.stack)}`; } if (err.cause) { formattedError += `\n${ctx.red('Cause:')} ${formatErrorString(err.cause, stack)}`; } return formattedError; } return String(err); } function formatErrorJson(err: unknown): unknown { if (err instanceof Error) { return { type: 'error', name: err.name, message: err.message, stack: err.stack, cause: err.cause ? formatErrorJson(err.cause) : undefined, }; } else { return stringify(err); } } export class Logger { private pino: Pino.Logger; private childLoggers: {[category: string]: Pino.Logger} = {}; private _debugFilter: string[]; constructor({debugFilter = [], filepath, level: logLevel = 'info', nestedKey, outputFormat, rotate}: LoggerOption) { this._debugFilter = debugFilter; const options = { messageKey: 'message', timestamp: () => `,"timestamp":"${new Date().toISOString()}"`, nestedKey, level: logLevel, formatters: { level(label, number) { return {level: label}; }, }, serializers: outputFormat === 'json' ? { payload: formatErrorJson, } : {}, prettyPrint: outputFormat !== 'json', prettifier: function (options: unknown) { // `this` is bound to the pino instance // Deal with whatever options are supplied. return function prettifier(inputData: string | object) { let logObject; if (typeof inputData === 'string') { logObject = JSON.parse(inputData); } else if (isObject(inputData)) { logObject = inputData; } if (!logObject) return inputData; // implement prettification const {category, level, message, payload, time} = logObject; let error = ''; if (payload instanceof Error) { if (['debug', 'trace'].includes(logLevel)) { error = `\n${formatErrorString(payload, true)}`; } else { error = formatErrorString(payload); } } return `${time} <${ctx.magentaBright(category)}> ${colorizeLevel(level)} ${message} ${error}\n`; }; function isObject(input: unknown): boolean { return Object.prototype.toString.apply(input) === '[object Object]'; } }, } as Pino.LoggerOptions; if (filepath) { const baseName = path.basename(filepath); const dirName = path.dirname(path.resolve(filepath)); const rotateOptions = { interval: '1d', maxFiles: 7, maxSize: '1G', }; if (rotate) { this.pino = Pino(options, createStream(baseName, {path: dirName, ...rotateOptions})); } else { this.pino = Pino(options, createStream(baseName, {path: dirName})); } } else { this.pino = Pino(options); } } getLogger(category: string): Pino.Logger { if (!this.childLoggers[category]) { this.childLoggers[category] = this.pino.child({category}); this.applyChildDebug(category); } return this.childLoggers[category]; } setLevel(level: LevelWithSilent): void { this.pino.level = level; Object.keys(this.childLoggers).map((key) => this.applyChildDebug(key)); } setDebugFilter(debugFilter: string[]): void { this._debugFilter = debugFilter; Object.keys(this.childLoggers).map((key) => this.applyChildDebug(key)); } private get debugFilter(): string[] { return this._debugFilter.map((f) => f.trim()); } private applyChildDebug(category: string) { if (!this.childLoggers[category].level) return; const checkCategory = isMainThread ? category : category.replace(`-#${threadId}`, ''); if (this.debugFilter.includes(`-${checkCategory}`)) { this.pino.info(`Debug logging is disabled for ${category}`); // Set the log level to the global log level or INFO if its debug const newLevel = Math.max(LEVELS_MAP[this.pino.level], LEVELS_MAP.info); this.childLoggers[category].level = LEVELS[newLevel as keyof typeof LEVELS].toLowerCase(); } else if (this.debugFilter.includes(checkCategory)) { this.pino.info(`Debug logging is enabled for ${category}`); this.childLoggers[category].level = 'debug'; } else if (this.debugFilter.includes('*')) { // Don't log wildcards, it spams the output this.childLoggers[category].level = 'debug'; } } } ================================================ FILE: packages/utils/src/logger/util.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import {LevelWithSilent} from 'pino'; import {LEVELS_MAP} from './constants'; export function levelFilter(test: LevelWithSilent, target: LevelWithSilent): boolean { return LEVELS_MAP[test?.toLowerCase()] >= LEVELS_MAP[target.toLowerCase()]; } ================================================ FILE: packages/utils/src/networking.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import detectPort from 'detect-port'; export async function findAvailablePort(startPort: number, range = 10): Promise { for (let port = startPort; port <= startPort + range; port++) { try { const _port = await detectPort(port); if (_port === port) { return port; } } catch (e) { return null; } } return null; } ================================================ FILE: packages/utils/src/query/index.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 export * from './types'; export * from './metadata'; ================================================ FILE: packages/utils/src/query/metadata.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import {blake2AsHex} from '@polkadot/util-crypto'; export const METADATA_REGEX = /^_metadata$/; export const MULTI_METADATA_REGEX = /^_metadata_[a-zA-Z0-9-]+$/; export const MULTI_GLOBAL_REGEX = /^_[global|Global]$/; export function getMetadataTableName(chainId: string): string { const hash = blake2AsHex(chainId, 64); return `_metadata_${hash}`.substring(0, 63); // 63 chars is the max postgres database table name length } // Hash names of SQL functions, triggers, channels to ensure it does not exceed the char limit export function hashName(schema: string, type: string, tableName: string): string { // Postgres identifier limit is 63 bytes (chars) return blake2AsHex(`${schema}_${tableName}_${type}`, 64).substring(0, 63); } ================================================ FILE: packages/utils/src/query/types.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 export type TableEstimate = { table: string; estimate: number; }; export type MetaData = { lastProcessedHeight: number; lastProcessedBlockTimestamp: number; lastProcessedTimestamp: number; targetHeight: number; chain: string; specName: string; genesisHash: string; indexerHealthy: boolean; indexerNodeVersion: string; queryNodeVersion: string; startHeight?: number; rowCountEstimate: TableEstimate[]; deployments: Record; historicalStateEnabled: boolean | 'height' | 'timestamp'; }; ================================================ FILE: packages/utils/src/types/TypeClass.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import assert from 'assert'; import {DataTypes} from '@subql/x-sequelize'; type ValueOf = T[keyof T]; export type SequelizeTypes = string | ValueOf; export class TypeClass { constructor( public name: T, private _hashCode: (data: D) => Uint8Array, private _tsType?: string, private _fieldScalar?: string, private _sequelizeType?: SequelizeTypes ) {} get tsType(): string | undefined { return this._tsType; } get fieldScalar(): string | undefined { return this._fieldScalar; } get sequelizeType(): SequelizeTypes { assert(this._sequelizeType !== undefined, `Type ${this.name} associated sequelize type is not supported`); return this._sequelizeType; } hashCode(data: D): Uint8Array { if (this._hashCode === undefined) { return Buffer.from(JSON.stringify(data)); } return this._hashCode(data); } } ================================================ FILE: packages/utils/src/types/generalTypes.spec.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import {isU8a, numberToU8a, u8aConcat} from '@polkadot/util'; import {u8aEq} from '@subql/utils'; import {getTypeByScalarName} from '../types'; import {wrappedNumToU8a} from './u8aUtils'; describe('general types', () => { it('can get json type', () => { const typeClass = getTypeByScalarName('Json'); expect(typeClass?.name).toBe('Json'); }); it('get sequelize date type', () => { const typeClass = getTypeByScalarName('Date'); expect(typeClass?.sequelizeType).toBe('timestamp'); }); it('get unsupported type', () => { expect(getTypeByScalarName('Unsupported' as any)).toBe(undefined); }); it('Int type should able to hash negative value', () => { const testNum0 = 0; const testNum = -1; const testNum2 = -989899999; const testNum3 = 10000; const testNum4 = -98989999999999; expect(() => wrappedNumToU8a(testNum0)).not.toThrow(); const testArray = wrappedNumToU8a(testNum); const testArray2 = wrappedNumToU8a(testNum2); const testArray4 = wrappedNumToU8a(testNum4); expect(u8aEq(wrappedNumToU8a(testNum3), numberToU8a(testNum3))).toBeTruthy(); expect(isU8a(testArray)).toBeTruthy(); expect(isU8a(testArray2)).toBeTruthy(); expect(isU8a(testArray4)).toBeTruthy(); expect(u8aEq(u8aConcat(new Uint8Array([0]), wrappedNumToU8a(1000)), wrappedNumToU8a(-1000))).toBeTruthy(); }); }); ================================================ FILE: packages/utils/src/types/generalTypes.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import * as supportedTypes from './supported'; import {TypeClass} from './TypeClass'; type TypeNameMap = { [K in keyof typeof supportedTypes]: { name: (typeof supportedTypes)[K]['name']; hashCodeArg: Parameters<(typeof supportedTypes)[K]['hashCode']>[0]; }; }; export type TypeNames = (typeof supportedTypes)[keyof typeof supportedTypes]['name']; export function getTypeByScalarName< T extends keyof TypeNameMap, R extends TypeNameMap[T]['hashCodeArg'], N extends TypeNameMap[T]['name'], >(type: N | string): TypeClass | undefined { const typeClass = Object.values(supportedTypes).find(({name}) => name === type); if (!typeClass) return undefined; return typeClass as TypeClass; } ================================================ FILE: packages/utils/src/types/index.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 export * from './generalTypes'; export * from './TypeClass'; export * from './supported'; ================================================ FILE: packages/utils/src/types/supported/BigInt.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import BN from 'bn.js'; import {TypeClass} from '../TypeClass'; export const BigInt = new TypeClass( 'BigInt', (data: bigint | string): Uint8Array => { return new BN(data.toString()).toBuffer(); }, 'bigint', 'BigInt', 'numeric' ); ================================================ FILE: packages/utils/src/types/supported/Boolean.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import {numberToU8a} from '@polkadot/util'; import {TypeClass} from '../TypeClass'; export const Boolean = new TypeClass( 'Boolean', (data: boolean): Uint8Array => { return numberToU8a(data ? 1 : 0); }, 'boolean', 'Boolean', 'boolean' ); ================================================ FILE: packages/utils/src/types/supported/Bytes.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import {isHex, hexToU8a} from '@polkadot/util'; import {DataTypes} from '@subql/x-sequelize'; import {TypeClass} from '../TypeClass'; export const Bytes = new TypeClass( 'Bytes', (data: string | Uint8Array): Uint8Array => { if (data instanceof Uint8Array) return data; if (isHex(data)) { return hexToU8a(data); } throw new Error(`can not hash ${data}`); }, 'string', 'Bytes', DataTypes.BLOB ); ================================================ FILE: packages/utils/src/types/supported/Date.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import assert from 'assert'; import {numberToU8a} from '@polkadot/util'; import {TypeClass} from '../TypeClass'; export const DateObj = new TypeClass( 'Date', (data: Date): Uint8Array => { assert(data instanceof Date, `can not hash ${data}, expect instance of Date`); return numberToU8a(data.getTime()); }, 'Date', 'Date', 'timestamp' ); ================================================ FILE: packages/utils/src/types/supported/Float.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import {DataTypes} from '@subql/x-sequelize'; import {TypeClass} from '../TypeClass'; export const Float = new TypeClass( 'Float', (data: number): Uint8Array => { //TODO, check if this is proper way to handle float return Buffer.from(data.toString()); }, 'number', 'Float', DataTypes.FLOAT ); ================================================ FILE: packages/utils/src/types/supported/ID.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import {TypeClass} from '../TypeClass'; export const ID = new TypeClass( 'ID', (data: any): Uint8Array => { return Buffer.from(data); }, 'string', 'ID', 'text' ); ================================================ FILE: packages/utils/src/types/supported/Int.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import {numberToU8a} from '@polkadot/util'; import {TypeClass} from '../TypeClass'; import {wrappedNumToU8a} from '../u8aUtils'; export const Int = new TypeClass( 'Int', (data: number): Uint8Array => { return wrappedNumToU8a(data); }, 'number', 'Int', 'integer' ); ================================================ FILE: packages/utils/src/types/supported/Json.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import {DataTypes} from '@subql/x-sequelize'; import {TypeClass} from '../TypeClass'; // Function to sort object properties // If array is provide, return same array, but sort json properties in each object // If JSON object only, sort its properties function sortJsonObjectProperties(obj: any): any { if (Array.isArray(obj)) { return obj.map((item) => sortJsonObjectProperties(item)).sort(); } else if (obj && typeof obj === 'object' && obj.constructor === Object) { const sortedObj: any = {}; Object.keys(obj) .sort() .forEach((key) => { const value = sortJsonObjectProperties(obj[key]); if (value !== undefined) { sortedObj[key] = value; } }); return sortedObj; } return obj; } export const Json = new TypeClass( 'Json', (data: unknown): Uint8Array => { return Buffer.from(JSON.stringify(sortJsonObjectProperties(data))); }, undefined, undefined, DataTypes.JSONB ); ================================================ FILE: packages/utils/src/types/supported/String.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import {TypeClass} from '../TypeClass'; export const String = new TypeClass( 'String', (data: string): Uint8Array => { return Buffer.from(data); }, 'string', 'String', 'text' ); ================================================ FILE: packages/utils/src/types/supported/index.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 export * from './BigInt'; export * from './Boolean'; export * from './Bytes'; export * from './Date'; export * from './Float'; export * from './ID'; export * from './Int'; export * from './String'; export * from './Json'; ================================================ FILE: packages/utils/src/types/u8aUtils.ts ================================================ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors // SPDX-License-Identifier: GPL-3.0 import {numberToU8a, u8aConcat} from '@polkadot/util'; /** * Due to current polkadotjs `numberToU8a` not support negative number, * The helper method used to convert negative to a uint8Array * * @param byteArray */ export function wrappedNumToU8a(num: number): Uint8Array { if (num >= 0) { return numberToU8a(num); } return u8aConcat(new Uint8Array([0]), numberToU8a(Math.abs(num))); } ================================================ FILE: packages/utils/tsconfig.json ================================================ { "extends": "../../tsconfig.json", "compilerOptions": { "target": "es2017", "sourceMap": true, "tsBuildInfoFile": "dist/.tsbuildinfo", "rootDir": "src", "outDir": "./dist", "noImplicitThis": true, "noImplicitAny": true }, "references": [{"path": "../types"}], "include": ["src/**/*"] } ================================================ FILE: report-main.json ================================================ {"numFailedTestSuites":12,"numFailedTests":20,"numPassedTestSuites":70,"numPassedTests":468,"numPendingTestSuites":2,"numPendingTests":12,"numRuntimeErrorTestSuites":4,"numTodoTests":0,"numTotalTestSuites":84,"numTotalTests":500,"openHandles":[],"snapshot":{"added":0,"didUpdate":false,"failure":false,"filesAdded":0,"filesRemoved":0,"filesRemovedList":[],"filesUnmatched":0,"filesUpdated":0,"matched":0,"total":0,"unchecked":0,"uncheckedKeysByFile":[],"unmatched":0,"updated":0},"startTime":1710903676836,"success":false,"testResults":[{"assertionResults":[{"ancestorTitles":["CLI codegen:generate"],"duration":9,"failureDetails":[],"failureMessages":[],"fullName":"CLI codegen:generate Construct correct datasources","invocations":1,"location":{"column":3,"line":128},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"Construct correct datasources"},{"ancestorTitles":["CLI codegen:generate"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"CLI codegen:generate prepareInputFragments, should return all fragments, if user passes --events=\"*\"","invocations":1,"location":{"column":3,"line":168},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"prepareInputFragments, should return all fragments, if user passes --events=\"*\""},{"ancestorTitles":["CLI codegen:generate"],"duration":5,"failureDetails":[],"failureMessages":[],"fullName":"CLI codegen:generate prepareInputFragments, no method passed, should prompt through inquirer","invocations":1,"location":{"column":3,"line":172},"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"prepareInputFragments, no method passed, should prompt through inquirer"},{"ancestorTitles":["CLI codegen:generate"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"CLI codegen:generate prepareInputFragments, --functions=\"transferFrom\", should return matching fragment method (cased insensitive)","invocations":1,"location":{"column":3,"line":186},"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"prepareInputFragments, --functions=\"transferFrom\", should return matching fragment method (cased insensitive)"},{"ancestorTitles":["CLI codegen:generate"],"duration":18,"failureDetails":[],"failureMessages":[],"fullName":"CLI codegen:generate should throw when passing invalid methods","invocations":1,"location":{"column":3,"line":205},"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"should throw when passing invalid methods"},{"ancestorTitles":["CLI codegen:generate"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"CLI codegen:generate Ensure generateHandlerName","invocations":1,"location":{"column":3,"line":227},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"Ensure generateHandlerName"},{"ancestorTitles":["CLI codegen:generate"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"CLI codegen:generate Ensure ConstructHandlerProps","invocations":1,"location":{"column":3,"line":230},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"Ensure ConstructHandlerProps"},{"ancestorTitles":["CLI codegen:generate"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"CLI codegen:generate FilterObjectsByStatMutability","invocations":1,"location":{"column":3,"line":247},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"FilterObjectsByStatMutability"},{"ancestorTitles":["CLI codegen:generate"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"CLI codegen:generate filter out existing methods, input address === undefined && ds address === \"\", should filter","invocations":1,"location":{"column":3,"line":288},"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"filter out existing methods, input address === undefined && ds address === \"\", should filter"},{"ancestorTitles":["CLI codegen:generate"],"duration":11,"failureDetails":[],"failureMessages":[],"fullName":"CLI codegen:generate filter out existing methods, only on matching address","invocations":1,"location":{"column":3,"line":307},"numPassingAsserts":0,"retryReasons":[],"status":"passed","title":"filter out existing methods, only on matching address"},{"ancestorTitles":["CLI codegen:generate"],"duration":7,"failureDetails":[],"failureMessages":[],"fullName":"CLI codegen:generate filter out existing methods, inputAddress === undefined || \"\" should filter all ds that contains no address","invocations":1,"location":{"column":3,"line":324},"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"filter out existing methods, inputAddress === undefined || \"\" should filter all ds that contains no address"},{"ancestorTitles":["CLI codegen:generate"],"duration":2,"failureDetails":[],"failureMessages":[],"fullName":"CLI codegen:generate filter out different formatted filters","invocations":1,"location":{"column":3,"line":342},"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"filter out different formatted filters"},{"ancestorTitles":["CLI codegen:generate"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"CLI codegen:generate removeKeyword, should only remove expect value","invocations":1,"location":{"column":3,"line":388},"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"removeKeyword, should only remove expect value"},{"ancestorTitles":["CLI codegen:generate"],"duration":29,"failureDetails":[],"failureMessages":[],"fullName":"CLI codegen:generate Able to read from artifacts and abis","invocations":1,"location":{"column":3,"line":400},"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"Able to read from artifacts and abis"},{"ancestorTitles":["CLI codegen:generate"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"CLI codegen:generate resolve to absolutePath from tilde","invocations":1,"location":{"column":3,"line":409},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"resolve to absolutePath from tilde"},{"ancestorTitles":["CLI codegen:generate"],"duration":2,"failureDetails":[],"failureMessages":[],"fullName":"CLI codegen:generate resolve to absolutePath from relativePath","invocations":1,"location":{"column":3,"line":413},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"resolve to absolutePath from relativePath"},{"ancestorTitles":["CLI codegen:generate"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"CLI codegen:generate if absolutePath regex should not do anything","invocations":1,"location":{"column":3,"line":417},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"if absolutePath regex should not do anything"},{"ancestorTitles":["CLI codegen:generate"],"duration":2,"failureDetails":[],"failureMessages":[],"fullName":"CLI codegen:generate filter existing methods","invocations":1,"location":{"column":3,"line":421},"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"filter existing methods"},{"ancestorTitles":["CLI codegen:generate"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"CLI codegen:generate splitArrayString","invocations":1,"location":{"column":3,"line":435},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"splitArrayString"},{"ancestorTitles":["CLI codegen:generate"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"CLI codegen:generate Correct constructedDataSourcesTs","invocations":1,"location":{"column":3,"line":504},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"Correct constructedDataSourcesTs"},{"ancestorTitles":["CLI codegen:generate"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"CLI codegen:generate Construct correct ds for yaml","invocations":1,"location":{"column":3,"line":545},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"Construct correct ds for yaml"},{"ancestorTitles":["CLI codegen:generate"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"CLI codegen:generate tsExtractor should extract existing events and functions from ts-manifest","invocations":1,"location":{"column":3,"line":582},"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"tsExtractor should extract existing events and functions from ts-manifest"},{"ancestorTitles":["CLI codegen:generate"],"duration":19,"failureDetails":[],"failureMessages":[],"fullName":"CLI codegen:generate findArray indices","invocations":1,"location":{"column":3,"line":593},"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"findArray indices"},{"ancestorTitles":["CLI codegen:generate"],"duration":4,"failureDetails":[{"matcherResult":{"message":"\u001b[2mexpect(\u001b[22m\u001b[31mreceived\u001b[39m\u001b[2m).\u001b[22mtoMatch\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m\n\nExpected substring: \u001b[32m\"approve(address spender, uint256 rawAmount)\"\u001b[39m\nReceived string: \u001b[31m\"0x095ea7b3\"\u001b[39m","pass":false}}],"failureMessages":["Error: \u001b[2mexpect(\u001b[22m\u001b[31mreceived\u001b[39m\u001b[2m).\u001b[22mtoMatch\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m\n\nExpected substring: \u001b[32m\"approve(address spender, uint256 rawAmount)\"\u001b[39m\nReceived string: \u001b[31m\"0x095ea7b3\"\u001b[39m\n at Object. (/Users/scotttwiname/Projects/subql-main/packages/cli/src/controller/generate-controller.spec.ts:686:24)"],"fullName":"CLI codegen:generate extract from TS manifest","invocations":1,"location":{"column":3,"line":603},"numPassingAsserts":2,"retryReasons":[],"status":"failed","title":"extract from TS manifest"},{"ancestorTitles":["CLI codegen:generate"],"duration":5,"failureDetails":[],"failureMessages":[],"fullName":"CLI codegen:generate Should replace value in tsManifetst","invocations":1,"location":{"column":3,"line":692},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"Should replace value in tsManifetst"},{"ancestorTitles":["CLI codegen:generate"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"CLI codegen:generate Correct output on tsStringify","invocations":1,"location":{"column":3,"line":699},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"Correct output on tsStringify"},{"ancestorTitles":["CLI codegen:generate"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"CLI codegen:generate Split array","invocations":1,"location":{"column":3,"line":721},"numPassingAsserts":4,"retryReasons":[],"status":"passed","title":"Split array"}],"endTime":1710903700090,"message":"\u001b[1m\u001b[31m \u001b[1m● \u001b[22m\u001b[1mCLI codegen:generate › extract from TS manifest\u001b[39m\u001b[22m\n\n \u001b[2mexpect(\u001b[22m\u001b[31mreceived\u001b[39m\u001b[2m).\u001b[22mtoMatch\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m\n\n Expected substring: \u001b[32m\"approve(address spender, uint256 rawAmount)\"\u001b[39m\n Received string: \u001b[31m\"0x095ea7b3\"\u001b[39m\n\u001b[2m\u001b[22m\n\u001b[2m \u001b[0m \u001b[90m 684 |\u001b[39m )\u001b[33m;\u001b[39m\u001b[0m\u001b[22m\n\u001b[2m \u001b[0m \u001b[90m 685 |\u001b[39m \u001b[90m// TODO expected to fail, due to unable to skip comments\u001b[39m\u001b[0m\u001b[22m\n\u001b[2m \u001b[0m\u001b[31m\u001b[1m>\u001b[22m\u001b[2m\u001b[39m\u001b[90m 686 |\u001b[39m expect(v\u001b[33m.\u001b[39m\u001b[36mfunction\u001b[39m)\u001b[33m.\u001b[39mtoMatch(\u001b[32m'approve(address spender, uint256 rawAmount)'\u001b[39m)\u001b[33m;\u001b[39m\u001b[0m\u001b[22m\n\u001b[2m \u001b[0m \u001b[90m |\u001b[39m \u001b[31m\u001b[1m^\u001b[22m\u001b[2m\u001b[39m\u001b[0m\u001b[22m\n\u001b[2m \u001b[0m \u001b[90m 687 |\u001b[39m expect(v\u001b[33m.\u001b[39mtopics[\u001b[35m0\u001b[39m])\u001b[33m.\u001b[39mtoMatch(\u001b[32m'Transfer(address indexed from, address indexed to, uint256 amount)'\u001b[39m)\u001b[33m;\u001b[39m\u001b[0m\u001b[22m\n\u001b[2m \u001b[0m \u001b[90m 688 |\u001b[39m expect(v\u001b[33m.\u001b[39mendpoint[\u001b[35m0\u001b[39m])\u001b[33m.\u001b[39mtoMatch(\u001b[32m'https://eth.api.onfinality.io/public'\u001b[39m)\u001b[33m;\u001b[39m\u001b[0m\u001b[22m\n\u001b[2m \u001b[0m \u001b[90m 689 |\u001b[39m })\u001b[33m;\u001b[39m\u001b[0m\u001b[22m\n\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat Object. (\u001b[22m\u001b[2m\u001b[0m\u001b[36mpackages/cli/src/controller/generate-controller.spec.ts\u001b[39m\u001b[0m\u001b[2m:686:24)\u001b[22m\u001b[2m\u001b[22m\n","name":"/Users/scotttwiname/Projects/subql-main/packages/cli/src/controller/generate-controller.spec.ts","startTime":1710903677010,"status":"failed","summary":""},{"assertionResults":[{"ancestorTitles":["CLI deploy, delete, promote"],"duration":209,"failureDetails":[{}],"failureMessages":["Error: Failed to validate IPFS CID: failure to get a peer from the ring-balancer\n at errorHandle (/Users/scotttwiname/Projects/subql-main/packages/cli/src/utils/utils.ts:82:11)\n at ipfsCID_validate (/Users/scotttwiname/Projects/subql-main/packages/cli/src/controller/deploy-controller.ts:169:16)\n at processTicksAndRejections (node:internal/process/task_queues:95:5)\n at Object. (/Users/scotttwiname/Projects/subql-main/packages/cli/src/controller/deploy-controller.spec.ts:110:23)"],"fullName":"CLI deploy, delete, promote Deploy to Hosted Service and Delete","invocations":1,"location":{"column":3,"line":107},"numPassingAsserts":0,"retryReasons":[],"status":"failed","title":"Deploy to Hosted Service and Delete"},{"ancestorTitles":["CLI deploy, delete, promote"],"duration":null,"failureDetails":[],"failureMessages":[],"fullName":"CLI deploy, delete, promote Promote Deployment","invocations":1,"location":{"column":6,"line":120},"numPassingAsserts":0,"retryReasons":[],"status":"pending","title":"Promote Deployment"},{"ancestorTitles":["CLI deploy, delete, promote"],"duration":197,"failureDetails":[{}],"failureMessages":["Error: Failed to validate IPFS CID: failure to get a peer from the ring-balancer\n at errorHandle (/Users/scotttwiname/Projects/subql-main/packages/cli/src/utils/utils.ts:82:11)\n at ipfsCID_validate (/Users/scotttwiname/Projects/subql-main/packages/cli/src/controller/deploy-controller.ts:169:16)\n at processTicksAndRejections (node:internal/process/task_queues:95:5)\n at Object. (/Users/scotttwiname/Projects/subql-main/packages/cli/src/controller/deploy-controller.spec.ts:139:23)"],"fullName":"CLI deploy, delete, promote should return true for valid ipfsCID","invocations":1,"location":{"column":3,"line":138},"numPassingAsserts":0,"retryReasons":[],"status":"failed","title":"should return true for valid ipfsCID"},{"ancestorTitles":["CLI deploy, delete, promote"],"duration":221,"failureDetails":[{"matcherResult":{"message":"\u001b[2mexpect(\u001b[22m\u001b[31mreceived\u001b[39m\u001b[2m).\u001b[22mrejects\u001b[2m.\u001b[22mtoThrow\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m\n\nExpected substring: \u001b[32m\"Failed to validate IPFS CID: fake is not a valid subquery deployment id!\"\u001b[39m\nReceived message: \u001b[31m\"Failed to validate IPFS CID: failure to get a peer from the ring-balancer\"\u001b[39m\n\n \u001b[0m \u001b[90m 80 |\u001b[39m \u001b[36mexport\u001b[39m \u001b[36mfunction\u001b[39m errorHandle(e\u001b[33m:\u001b[39m any\u001b[33m,\u001b[39m msg\u001b[33m:\u001b[39m string)\u001b[33m:\u001b[39m \u001b[33mError\u001b[39m {\u001b[0m\n \u001b[0m \u001b[90m 81 |\u001b[39m \u001b[36mif\u001b[39m (axios\u001b[33m.\u001b[39misAxiosError(e) \u001b[33m&&\u001b[39m e\u001b[33m?\u001b[39m\u001b[33m.\u001b[39mresponse\u001b[33m?\u001b[39m\u001b[33m.\u001b[39mdata) {\u001b[0m\n \u001b[0m\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 82 |\u001b[39m \u001b[36mthrow\u001b[39m \u001b[36mnew\u001b[39m \u001b[33mError\u001b[39m(\u001b[32m`${msg} ${e.response.data.message ?? e.response.data}`\u001b[39m)\u001b[33m;\u001b[39m\u001b[0m\n \u001b[0m \u001b[90m |\u001b[39m \u001b[31m\u001b[1m^\u001b[22m\u001b[39m\u001b[0m\n \u001b[0m \u001b[90m 83 |\u001b[39m }\u001b[0m\n \u001b[0m \u001b[90m 84 |\u001b[39m\u001b[0m\n \u001b[0m \u001b[90m 85 |\u001b[39m \u001b[36mthrow\u001b[39m \u001b[36mnew\u001b[39m \u001b[33mError\u001b[39m(\u001b[32m`${msg} ${e.message}`\u001b[39m)\u001b[33m;\u001b[39m\u001b[0m\n\n \u001b[2mat errorHandle (\u001b[22mpackages/cli/src/utils/utils.ts\u001b[2m:82:11)\u001b[22m\n \u001b[2mat ipfsCID_validate (\u001b[22mpackages/cli/src/controller/deploy-controller.ts\u001b[2m:169:16)\u001b[22m\n \u001b[2mat Object. (\u001b[22mpackages/cli/src/controller/deploy-controller.spec.ts\u001b[2m:144:5)\u001b[22m","pass":false},"message":"\u001b[2mexpect(\u001b[22m\u001b[31mreceived\u001b[39m\u001b[2m).\u001b[22mrejects\u001b[2m.\u001b[22mtoThrow\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m\n\nExpected substring: \u001b[32m\"Failed to validate IPFS CID: fake is not a valid subquery deployment id!\"\u001b[39m\nReceived message: \u001b[31m\"Failed to validate IPFS CID: failure to get a peer from the ring-balancer\"\u001b[39m\n\n \u001b[0m \u001b[90m 80 |\u001b[39m \u001b[36mexport\u001b[39m \u001b[36mfunction\u001b[39m errorHandle(e\u001b[33m:\u001b[39m any\u001b[33m,\u001b[39m msg\u001b[33m:\u001b[39m string)\u001b[33m:\u001b[39m \u001b[33mError\u001b[39m {\u001b[0m\n \u001b[0m \u001b[90m 81 |\u001b[39m \u001b[36mif\u001b[39m (axios\u001b[33m.\u001b[39misAxiosError(e) \u001b[33m&&\u001b[39m e\u001b[33m?\u001b[39m\u001b[33m.\u001b[39mresponse\u001b[33m?\u001b[39m\u001b[33m.\u001b[39mdata) {\u001b[0m\n \u001b[0m\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 82 |\u001b[39m \u001b[36mthrow\u001b[39m \u001b[36mnew\u001b[39m \u001b[33mError\u001b[39m(\u001b[32m`${msg} ${e.response.data.message ?? e.response.data}`\u001b[39m)\u001b[33m;\u001b[39m\u001b[0m\n \u001b[0m \u001b[90m |\u001b[39m \u001b[31m\u001b[1m^\u001b[22m\u001b[39m\u001b[0m\n \u001b[0m \u001b[90m 83 |\u001b[39m }\u001b[0m\n \u001b[0m \u001b[90m 84 |\u001b[39m\u001b[0m\n \u001b[0m \u001b[90m 85 |\u001b[39m \u001b[36mthrow\u001b[39m \u001b[36mnew\u001b[39m \u001b[33mError\u001b[39m(\u001b[32m`${msg} ${e.message}`\u001b[39m)\u001b[33m;\u001b[39m\u001b[0m\n\n \u001b[2mat errorHandle (\u001b[22mpackages/cli/src/utils/utils.ts\u001b[2m:82:11)\u001b[22m\n \u001b[2mat ipfsCID_validate (\u001b[22mpackages/cli/src/controller/deploy-controller.ts\u001b[2m:169:16)\u001b[22m\n \u001b[2mat Object. (\u001b[22mpackages/cli/src/controller/deploy-controller.spec.ts\u001b[2m:144:5)\u001b[22m"}],"failureMessages":["Error: \u001b[2mexpect(\u001b[22m\u001b[31mreceived\u001b[39m\u001b[2m).\u001b[22mrejects\u001b[2m.\u001b[22mtoThrow\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m\n\nExpected substring: \u001b[32m\"Failed to validate IPFS CID: fake is not a valid subquery deployment id!\"\u001b[39m\nReceived message: \u001b[31m\"Failed to validate IPFS CID: failure to get a peer from the ring-balancer\"\u001b[39m\n\n \u001b[0m \u001b[90m 80 |\u001b[39m \u001b[36mexport\u001b[39m \u001b[36mfunction\u001b[39m errorHandle(e\u001b[33m:\u001b[39m any\u001b[33m,\u001b[39m msg\u001b[33m:\u001b[39m string)\u001b[33m:\u001b[39m \u001b[33mError\u001b[39m {\u001b[0m\n \u001b[0m \u001b[90m 81 |\u001b[39m \u001b[36mif\u001b[39m (axios\u001b[33m.\u001b[39misAxiosError(e) \u001b[33m&&\u001b[39m e\u001b[33m?\u001b[39m\u001b[33m.\u001b[39mresponse\u001b[33m?\u001b[39m\u001b[33m.\u001b[39mdata) {\u001b[0m\n \u001b[0m\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 82 |\u001b[39m \u001b[36mthrow\u001b[39m \u001b[36mnew\u001b[39m \u001b[33mError\u001b[39m(\u001b[32m`${msg} ${e.response.data.message ?? e.response.data}`\u001b[39m)\u001b[33m;\u001b[39m\u001b[0m\n \u001b[0m \u001b[90m |\u001b[39m \u001b[31m\u001b[1m^\u001b[22m\u001b[39m\u001b[0m\n \u001b[0m \u001b[90m 83 |\u001b[39m }\u001b[0m\n \u001b[0m \u001b[90m 84 |\u001b[39m\u001b[0m\n \u001b[0m \u001b[90m 85 |\u001b[39m \u001b[36mthrow\u001b[39m \u001b[36mnew\u001b[39m \u001b[33mError\u001b[39m(\u001b[32m`${msg} ${e.message}`\u001b[39m)\u001b[33m;\u001b[39m\u001b[0m\n\n \u001b[2mat errorHandle (\u001b[22mpackages/cli/src/utils/utils.ts\u001b[2m:82:11)\u001b[22m\n \u001b[2mat ipfsCID_validate (\u001b[22mpackages/cli/src/controller/deploy-controller.ts\u001b[2m:169:16)\u001b[22m\n \u001b[2mat Object. (\u001b[22mpackages/cli/src/controller/deploy-controller.spec.ts\u001b[2m:144:5)\u001b[22m\n at Object.toThrow (/Users/scotttwiname/Projects/subql-main/node_modules/expect/build/index.js:210:22)\n at Object. (/Users/scotttwiname/Projects/subql-main/packages/cli/src/controller/deploy-controller.spec.ts:144:80)\n at Promise.then.completed (/Users/scotttwiname/Projects/subql-main/node_modules/jest-circus/build/utils.js:293:28)\n at new Promise ()\n at callAsyncCircusFn (/Users/scotttwiname/Projects/subql-main/node_modules/jest-circus/build/utils.js:226:10)\n at _callCircusTest (/Users/scotttwiname/Projects/subql-main/node_modules/jest-circus/build/run.js:297:40)\n at processTicksAndRejections (node:internal/process/task_queues:95:5)\n at _runTest (/Users/scotttwiname/Projects/subql-main/node_modules/jest-circus/build/run.js:233:3)\n at _runTestsForDescribeBlock (/Users/scotttwiname/Projects/subql-main/node_modules/jest-circus/build/run.js:135:9)\n at _runTestsForDescribeBlock (/Users/scotttwiname/Projects/subql-main/node_modules/jest-circus/build/run.js:130:9)\n at run (/Users/scotttwiname/Projects/subql-main/node_modules/jest-circus/build/run.js:68:3)\n at runAndTransformResultsToJestFormat (/Users/scotttwiname/Projects/subql-main/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapterInit.js:122:21)\n at jestAdapter (/Users/scotttwiname/Projects/subql-main/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapter.js:79:19)\n at runTestInternal (/Users/scotttwiname/Projects/subql-main/node_modules/jest-runner/build/runTest.js:367:16)\n at runTest (/Users/scotttwiname/Projects/subql-main/node_modules/jest-runner/build/runTest.js:444:34)\n at Object.worker (/Users/scotttwiname/Projects/subql-main/node_modules/jest-runner/build/testWorker.js:106:12)"],"fullName":"CLI deploy, delete, promote to throw error for invalid ipfsCID","invocations":1,"location":{"column":3,"line":143},"numPassingAsserts":0,"retryReasons":[],"status":"failed","title":"to throw error for invalid ipfsCID"},{"ancestorTitles":["CLI deploy, delete, promote"],"duration":205,"failureDetails":[{}],"failureMessages":["Error: Failed to validate IPFS CID: failure to get a peer from the ring-balancer\n at errorHandle (/Users/scotttwiname/Projects/subql-main/packages/cli/src/utils/utils.ts:82:11)\n at ipfsCID_validate (/Users/scotttwiname/Projects/subql-main/packages/cli/src/controller/deploy-controller.ts:169:16)\n at processTicksAndRejections (node:internal/process/task_queues:95:5)\n at Object. (/Users/scotttwiname/Projects/subql-main/packages/cli/src/controller/deploy-controller.spec.ts:150:23)"],"fullName":"CLI deploy, delete, promote get DictEndpoint - polkadot","invocations":1,"location":{"column":3,"line":149},"numPassingAsserts":0,"retryReasons":[],"status":"failed","title":"get DictEndpoint - polkadot"},{"ancestorTitles":["CLI deploy, delete, promote"],"duration":196,"failureDetails":[{}],"failureMessages":["Error: Failed to validate IPFS CID: failure to get a peer from the ring-balancer\n at errorHandle (/Users/scotttwiname/Projects/subql-main/packages/cli/src/utils/utils.ts:82:11)\n at ipfsCID_validate (/Users/scotttwiname/Projects/subql-main/packages/cli/src/controller/deploy-controller.ts:169:16)\n at processTicksAndRejections (node:internal/process/task_queues:95:5)\n at Object. (/Users/scotttwiname/Projects/subql-main/packages/cli/src/controller/deploy-controller.spec.ts:160:23)"],"fullName":"CLI deploy, delete, promote reDeploy to Hosted Service","invocations":1,"location":{"column":3,"line":157},"numPassingAsserts":0,"retryReasons":[],"status":"failed","title":"reDeploy to Hosted Service"}],"endTime":1710903702449,"message":"\u001b[1m\u001b[31m \u001b[1m● \u001b[22m\u001b[1mCLI deploy, delete, promote › Deploy to Hosted Service and Delete\u001b[39m\u001b[22m\n\n Failed to validate IPFS CID: failure to get a peer from the ring-balancer\n\u001b[2m\u001b[22m\n\u001b[2m \u001b[0m \u001b[90m 80 |\u001b[39m \u001b[36mexport\u001b[39m \u001b[36mfunction\u001b[39m errorHandle(e\u001b[33m:\u001b[39m any\u001b[33m,\u001b[39m msg\u001b[33m:\u001b[39m string)\u001b[33m:\u001b[39m \u001b[33mError\u001b[39m {\u001b[0m\u001b[22m\n\u001b[2m \u001b[0m \u001b[90m 81 |\u001b[39m \u001b[36mif\u001b[39m (axios\u001b[33m.\u001b[39misAxiosError(e) \u001b[33m&&\u001b[39m e\u001b[33m?\u001b[39m\u001b[33m.\u001b[39mresponse\u001b[33m?\u001b[39m\u001b[33m.\u001b[39mdata) {\u001b[0m\u001b[22m\n\u001b[2m \u001b[0m\u001b[31m\u001b[1m>\u001b[22m\u001b[2m\u001b[39m\u001b[90m 82 |\u001b[39m \u001b[36mthrow\u001b[39m \u001b[36mnew\u001b[39m \u001b[33mError\u001b[39m(\u001b[32m`${msg} ${e.response.data.message ?? e.response.data}`\u001b[39m)\u001b[33m;\u001b[39m\u001b[0m\u001b[22m\n\u001b[2m \u001b[0m \u001b[90m |\u001b[39m \u001b[31m\u001b[1m^\u001b[22m\u001b[2m\u001b[39m\u001b[0m\u001b[22m\n\u001b[2m \u001b[0m \u001b[90m 83 |\u001b[39m }\u001b[0m\u001b[22m\n\u001b[2m \u001b[0m \u001b[90m 84 |\u001b[39m\u001b[0m\u001b[22m\n\u001b[2m \u001b[0m \u001b[90m 85 |\u001b[39m \u001b[36mthrow\u001b[39m \u001b[36mnew\u001b[39m \u001b[33mError\u001b[39m(\u001b[32m`${msg} ${e.message}`\u001b[39m)\u001b[33m;\u001b[39m\u001b[0m\u001b[22m\n\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat errorHandle (\u001b[22m\u001b[2mpackages/cli/src/utils/utils.ts\u001b[2m:82:11)\u001b[22m\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat ipfsCID_validate (\u001b[22m\u001b[2mpackages/cli/src/controller/deploy-controller.ts\u001b[2m:169:16)\u001b[22m\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat Object. (\u001b[22m\u001b[2m\u001b[0m\u001b[36mpackages/cli/src/controller/deploy-controller.spec.ts\u001b[39m\u001b[0m\u001b[2m:110:23)\u001b[22m\u001b[2m\u001b[22m\n\n\u001b[1m\u001b[31m \u001b[1m● \u001b[22m\u001b[1mCLI deploy, delete, promote › should return true for valid ipfsCID\u001b[39m\u001b[22m\n\n Failed to validate IPFS CID: failure to get a peer from the ring-balancer\n\u001b[2m\u001b[22m\n\u001b[2m \u001b[0m \u001b[90m 80 |\u001b[39m \u001b[36mexport\u001b[39m \u001b[36mfunction\u001b[39m errorHandle(e\u001b[33m:\u001b[39m any\u001b[33m,\u001b[39m msg\u001b[33m:\u001b[39m string)\u001b[33m:\u001b[39m \u001b[33mError\u001b[39m {\u001b[0m\u001b[22m\n\u001b[2m \u001b[0m \u001b[90m 81 |\u001b[39m \u001b[36mif\u001b[39m (axios\u001b[33m.\u001b[39misAxiosError(e) \u001b[33m&&\u001b[39m e\u001b[33m?\u001b[39m\u001b[33m.\u001b[39mresponse\u001b[33m?\u001b[39m\u001b[33m.\u001b[39mdata) {\u001b[0m\u001b[22m\n\u001b[2m \u001b[0m\u001b[31m\u001b[1m>\u001b[22m\u001b[2m\u001b[39m\u001b[90m 82 |\u001b[39m \u001b[36mthrow\u001b[39m \u001b[36mnew\u001b[39m \u001b[33mError\u001b[39m(\u001b[32m`${msg} ${e.response.data.message ?? e.response.data}`\u001b[39m)\u001b[33m;\u001b[39m\u001b[0m\u001b[22m\n\u001b[2m \u001b[0m \u001b[90m |\u001b[39m \u001b[31m\u001b[1m^\u001b[22m\u001b[2m\u001b[39m\u001b[0m\u001b[22m\n\u001b[2m \u001b[0m \u001b[90m 83 |\u001b[39m }\u001b[0m\u001b[22m\n\u001b[2m \u001b[0m \u001b[90m 84 |\u001b[39m\u001b[0m\u001b[22m\n\u001b[2m \u001b[0m \u001b[90m 85 |\u001b[39m \u001b[36mthrow\u001b[39m \u001b[36mnew\u001b[39m \u001b[33mError\u001b[39m(\u001b[32m`${msg} ${e.message}`\u001b[39m)\u001b[33m;\u001b[39m\u001b[0m\u001b[22m\n\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat errorHandle (\u001b[22m\u001b[2mpackages/cli/src/utils/utils.ts\u001b[2m:82:11)\u001b[22m\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat ipfsCID_validate (\u001b[22m\u001b[2mpackages/cli/src/controller/deploy-controller.ts\u001b[2m:169:16)\u001b[22m\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat Object. (\u001b[22m\u001b[2m\u001b[0m\u001b[36mpackages/cli/src/controller/deploy-controller.spec.ts\u001b[39m\u001b[0m\u001b[2m:139:23)\u001b[22m\u001b[2m\u001b[22m\n\n\u001b[1m\u001b[31m \u001b[1m● \u001b[22m\u001b[1mCLI deploy, delete, promote › to throw error for invalid ipfsCID\u001b[39m\u001b[22m\n\n \u001b[2mexpect(\u001b[22m\u001b[31mreceived\u001b[39m\u001b[2m).\u001b[22mrejects\u001b[2m.\u001b[22mtoThrow\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m\n\n Expected substring: \u001b[32m\"Failed to validate IPFS CID: fake is not a valid subquery deployment id!\"\u001b[39m\n Received message: \u001b[31m\"Failed to validate IPFS CID: failure to get a peer from the ring-balancer\"\u001b[39m\n\n \u001b[0m \u001b[90m 80 |\u001b[39m \u001b[36mexport\u001b[39m \u001b[36mfunction\u001b[39m errorHandle(e\u001b[33m:\u001b[39m any\u001b[33m,\u001b[39m msg\u001b[33m:\u001b[39m string)\u001b[33m:\u001b[39m \u001b[33mError\u001b[39m {\u001b[0m\n \u001b[0m \u001b[90m 81 |\u001b[39m \u001b[36mif\u001b[39m (axios\u001b[33m.\u001b[39misAxiosError(e) \u001b[33m&&\u001b[39m e\u001b[33m?\u001b[39m\u001b[33m.\u001b[39mresponse\u001b[33m?\u001b[39m\u001b[33m.\u001b[39mdata) {\u001b[0m\n \u001b[0m\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 82 |\u001b[39m \u001b[36mthrow\u001b[39m \u001b[36mnew\u001b[39m \u001b[33mError\u001b[39m(\u001b[32m`${msg} ${e.response.data.message ?? e.response.data}`\u001b[39m)\u001b[33m;\u001b[39m\u001b[0m\n \u001b[0m \u001b[90m |\u001b[39m \u001b[31m\u001b[1m^\u001b[22m\u001b[39m\u001b[0m\n \u001b[0m \u001b[90m 83 |\u001b[39m }\u001b[0m\n \u001b[0m \u001b[90m 84 |\u001b[39m\u001b[0m\n \u001b[0m \u001b[90m 85 |\u001b[39m \u001b[36mthrow\u001b[39m \u001b[36mnew\u001b[39m \u001b[33mError\u001b[39m(\u001b[32m`${msg} ${e.message}`\u001b[39m)\u001b[33m;\u001b[39m\u001b[0m\n\n \u001b[2mat errorHandle (\u001b[22mpackages/cli/src/utils/utils.ts\u001b[2m:82:11)\u001b[22m\n \u001b[2mat ipfsCID_validate (\u001b[22mpackages/cli/src/controller/deploy-controller.ts\u001b[2m:169:16)\u001b[22m\n \u001b[2mat Object. (\u001b[22mpackages/cli/src/controller/deploy-controller.spec.ts\u001b[2m:144:5)\u001b[22m\n\u001b[2m\u001b[22m\n\u001b[2m \u001b[0m \u001b[90m 142 |\u001b[39m\u001b[0m\u001b[22m\n\u001b[2m \u001b[0m \u001b[90m 143 |\u001b[39m it(\u001b[32m'to throw error for invalid ipfsCID'\u001b[39m\u001b[33m,\u001b[39m \u001b[36masync\u001b[39m () \u001b[33m=>\u001b[39m {\u001b[0m\u001b[22m\n\u001b[2m \u001b[0m\u001b[31m\u001b[1m>\u001b[22m\u001b[2m\u001b[39m\u001b[90m 144 |\u001b[39m \u001b[36mawait\u001b[39m expect(ipfsCID_validate(\u001b[32m'fake'\u001b[39m\u001b[33m,\u001b[39m testAuth\u001b[33m,\u001b[39m \u001b[33mROOT_API_URL_DEV\u001b[39m))\u001b[33m.\u001b[39mrejects\u001b[33m.\u001b[39mtoThrow(\u001b[0m\u001b[22m\n\u001b[2m \u001b[0m \u001b[90m |\u001b[39m \u001b[31m\u001b[1m^\u001b[22m\u001b[2m\u001b[39m\u001b[0m\u001b[22m\n\u001b[2m \u001b[0m \u001b[90m 145 |\u001b[39m \u001b[32m'Failed to validate IPFS CID: fake is not a valid subquery deployment id!'\u001b[39m\u001b[0m\u001b[22m\n\u001b[2m \u001b[0m \u001b[90m 146 |\u001b[39m )\u001b[33m;\u001b[39m\u001b[0m\u001b[22m\n\u001b[2m \u001b[0m \u001b[90m 147 |\u001b[39m })\u001b[33m;\u001b[39m\u001b[0m\u001b[22m\n\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat Object.toThrow (\u001b[22m\u001b[2mnode_modules/expect/build/index.js\u001b[2m:210:22)\u001b[22m\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat Object. (\u001b[22m\u001b[2m\u001b[0m\u001b[36mpackages/cli/src/controller/deploy-controller.spec.ts\u001b[39m\u001b[0m\u001b[2m:144:80)\u001b[22m\u001b[2m\u001b[22m\n\n\u001b[1m\u001b[31m \u001b[1m● \u001b[22m\u001b[1mCLI deploy, delete, promote › get DictEndpoint - polkadot\u001b[39m\u001b[22m\n\n Failed to validate IPFS CID: failure to get a peer from the ring-balancer\n\u001b[2m\u001b[22m\n\u001b[2m \u001b[0m \u001b[90m 80 |\u001b[39m \u001b[36mexport\u001b[39m \u001b[36mfunction\u001b[39m errorHandle(e\u001b[33m:\u001b[39m any\u001b[33m,\u001b[39m msg\u001b[33m:\u001b[39m string)\u001b[33m:\u001b[39m \u001b[33mError\u001b[39m {\u001b[0m\u001b[22m\n\u001b[2m \u001b[0m \u001b[90m 81 |\u001b[39m \u001b[36mif\u001b[39m (axios\u001b[33m.\u001b[39misAxiosError(e) \u001b[33m&&\u001b[39m e\u001b[33m?\u001b[39m\u001b[33m.\u001b[39mresponse\u001b[33m?\u001b[39m\u001b[33m.\u001b[39mdata) {\u001b[0m\u001b[22m\n\u001b[2m \u001b[0m\u001b[31m\u001b[1m>\u001b[22m\u001b[2m\u001b[39m\u001b[90m 82 |\u001b[39m \u001b[36mthrow\u001b[39m \u001b[36mnew\u001b[39m \u001b[33mError\u001b[39m(\u001b[32m`${msg} ${e.response.data.message ?? e.response.data}`\u001b[39m)\u001b[33m;\u001b[39m\u001b[0m\u001b[22m\n\u001b[2m \u001b[0m \u001b[90m |\u001b[39m \u001b[31m\u001b[1m^\u001b[22m\u001b[2m\u001b[39m\u001b[0m\u001b[22m\n\u001b[2m \u001b[0m \u001b[90m 83 |\u001b[39m }\u001b[0m\u001b[22m\n\u001b[2m \u001b[0m \u001b[90m 84 |\u001b[39m\u001b[0m\u001b[22m\n\u001b[2m \u001b[0m \u001b[90m 85 |\u001b[39m \u001b[36mthrow\u001b[39m \u001b[36mnew\u001b[39m \u001b[33mError\u001b[39m(\u001b[32m`${msg} ${e.message}`\u001b[39m)\u001b[33m;\u001b[39m\u001b[0m\u001b[22m\n\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat errorHandle (\u001b[22m\u001b[2mpackages/cli/src/utils/utils.ts\u001b[2m:82:11)\u001b[22m\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat ipfsCID_validate (\u001b[22m\u001b[2mpackages/cli/src/controller/deploy-controller.ts\u001b[2m:169:16)\u001b[22m\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat Object. (\u001b[22m\u001b[2m\u001b[0m\u001b[36mpackages/cli/src/controller/deploy-controller.spec.ts\u001b[39m\u001b[0m\u001b[2m:150:23)\u001b[22m\u001b[2m\u001b[22m\n\n\u001b[1m\u001b[31m \u001b[1m● \u001b[22m\u001b[1mCLI deploy, delete, promote › reDeploy to Hosted Service\u001b[39m\u001b[22m\n\n Failed to validate IPFS CID: failure to get a peer from the ring-balancer\n\u001b[2m\u001b[22m\n\u001b[2m \u001b[0m \u001b[90m 80 |\u001b[39m \u001b[36mexport\u001b[39m \u001b[36mfunction\u001b[39m errorHandle(e\u001b[33m:\u001b[39m any\u001b[33m,\u001b[39m msg\u001b[33m:\u001b[39m string)\u001b[33m:\u001b[39m \u001b[33mError\u001b[39m {\u001b[0m\u001b[22m\n\u001b[2m \u001b[0m \u001b[90m 81 |\u001b[39m \u001b[36mif\u001b[39m (axios\u001b[33m.\u001b[39misAxiosError(e) \u001b[33m&&\u001b[39m e\u001b[33m?\u001b[39m\u001b[33m.\u001b[39mresponse\u001b[33m?\u001b[39m\u001b[33m.\u001b[39mdata) {\u001b[0m\u001b[22m\n\u001b[2m \u001b[0m\u001b[31m\u001b[1m>\u001b[22m\u001b[2m\u001b[39m\u001b[90m 82 |\u001b[39m \u001b[36mthrow\u001b[39m \u001b[36mnew\u001b[39m \u001b[33mError\u001b[39m(\u001b[32m`${msg} ${e.response.data.message ?? e.response.data}`\u001b[39m)\u001b[33m;\u001b[39m\u001b[0m\u001b[22m\n\u001b[2m \u001b[0m \u001b[90m |\u001b[39m \u001b[31m\u001b[1m^\u001b[22m\u001b[2m\u001b[39m\u001b[0m\u001b[22m\n\u001b[2m \u001b[0m \u001b[90m 83 |\u001b[39m }\u001b[0m\u001b[22m\n\u001b[2m \u001b[0m \u001b[90m 84 |\u001b[39m\u001b[0m\u001b[22m\n\u001b[2m \u001b[0m \u001b[90m 85 |\u001b[39m \u001b[36mthrow\u001b[39m \u001b[36mnew\u001b[39m \u001b[33mError\u001b[39m(\u001b[32m`${msg} ${e.message}`\u001b[39m)\u001b[33m;\u001b[39m\u001b[0m\u001b[22m\n\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat errorHandle (\u001b[22m\u001b[2mpackages/cli/src/utils/utils.ts\u001b[2m:82:11)\u001b[22m\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat ipfsCID_validate (\u001b[22m\u001b[2mpackages/cli/src/controller/deploy-controller.ts\u001b[2m:169:16)\u001b[22m\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat Object. (\u001b[22m\u001b[2m\u001b[0m\u001b[36mpackages/cli/src/controller/deploy-controller.spec.ts\u001b[39m\u001b[0m\u001b[2m:160:23)\u001b[22m\u001b[2m\u001b[22m\n","name":"/Users/scotttwiname/Projects/subql-main/packages/cli/src/controller/deploy-controller.spec.ts","startTime":1710903677022,"status":"failed","summary":""},{"assertionResults":[{"ancestorTitles":["IndexerManager"],"duration":null,"failureDetails":[],"failureMessages":[],"fullName":"IndexerManager should be able to start the manager (v0.0.1)","invocations":1,"location":{"column":6,"line":228},"numPassingAsserts":0,"retryReasons":[],"status":"pending","title":"should be able to start the manager (v0.0.1)"},{"ancestorTitles":["IndexerManager"],"duration":null,"failureDetails":[],"failureMessages":[],"fullName":"IndexerManager should be able to start the manager (v0.2.0)","invocations":1,"location":{"column":6,"line":241},"numPassingAsserts":0,"retryReasons":[],"status":"pending","title":"should be able to start the manager (v0.2.0)"}],"coverage":{},"endTime":1710904328682,"message":"","name":"/Users/scotttwiname/Projects/subql-main/packages/node/src/indexer/indexer.manager.spec.ts","startTime":1710904328682,"status":"skipped","summary":""},{"assertionResults":[{"ancestorTitles":["CLI create project and delete project"],"duration":null,"failureDetails":[],"failureMessages":[],"fullName":"CLI create project and delete project Create project and delete","invocations":1,"location":{"column":32,"line":24},"numPassingAsserts":0,"retryReasons":[],"status":"pending","title":"Create project and delete"}],"coverage":{},"endTime":1710904328682,"message":"","name":"/Users/scotttwiname/Projects/subql-main/packages/cli/src/controller/project-controller.spec.ts","startTime":1710904328682,"status":"skipped","summary":""},{"assertionResults":[{"ancestorTitles":["query limits","entity limits"],"duration":10039,"failureDetails":[{},{"message":"thrown: \"Exceeded timeout of 5000 ms for a hook.\nAdd a timeout value to this test to increase the timeout, if this is a long-running test. See https://jestjs.io/docs/api#testname-fn-timeout.\""},{},{"message":"thrown: \"Exceeded timeout of 5000 ms for a hook.\nAdd a timeout value to this test to increase the timeout, if this is a long-running test. See https://jestjs.io/docs/api#testname-fn-timeout.\""}],"failureMessages":["Error: SASL: SCRAM-SERVER-FIRST-MESSAGE: client password must be a string\n at Object.continueSession (/Users/scotttwiname/Projects/subql-main/node_modules/pg/lib/sasl.js:24:11)\n at Client._handleAuthSASLContinue (/Users/scotttwiname/Projects/subql-main/node_modules/pg/lib/client.js:257:10)\n at Connection.emit (node:events:518:28)\n at /Users/scotttwiname/Projects/subql-main/node_modules/pg/lib/connection.js:114:12\n at Parser.parse (/Users/scotttwiname/Projects/subql-main/node_modules/pg-protocol/src/parser.ts:104:9)\n at Socket. (/Users/scotttwiname/Projects/subql-main/node_modules/pg-protocol/src/index.ts:7:48)\n at Socket.emit (node:events:518:28)\n at addChunk (node:internal/streams/readable:559:12)\n at readableAddChunkPushByteMode (node:internal/streams/readable:510:3)\n at Socket.Readable.push (node:internal/streams/readable:390:5)\n at TCP.onStreamRead (node:internal/stream_base_commons:190:23)","Error: thrown: \"Exceeded timeout of 5000 ms for a hook.\nAdd a timeout value to this test to increase the timeout, if this is a long-running test. See https://jestjs.io/docs/api#testname-fn-timeout.\"\n at /Users/scotttwiname/Projects/subql-main/packages/query/src/graphql/limit.test.ts:62:5\n at _dispatchDescribe (/Users/scotttwiname/Projects/subql-main/node_modules/jest-circus/build/index.js:91:26)\n at describe (/Users/scotttwiname/Projects/subql-main/node_modules/jest-circus/build/index.js:55:5)\n at /Users/scotttwiname/Projects/subql-main/packages/query/src/graphql/limit.test.ts:57:3\n at _dispatchDescribe (/Users/scotttwiname/Projects/subql-main/node_modules/jest-circus/build/index.js:91:26)\n at describe (/Users/scotttwiname/Projects/subql-main/node_modules/jest-circus/build/index.js:55:5)\n at Object. (/Users/scotttwiname/Projects/subql-main/packages/query/src/graphql/limit.test.ts:19:1)\n at Runtime._execModule (/Users/scotttwiname/Projects/subql-main/node_modules/jest-runtime/build/index.js:1429:24)\n at Runtime._loadModule (/Users/scotttwiname/Projects/subql-main/node_modules/jest-runtime/build/index.js:1013:12)\n at Runtime.requireModule (/Users/scotttwiname/Projects/subql-main/node_modules/jest-runtime/build/index.js:873:12)\n at jestAdapter (/Users/scotttwiname/Projects/subql-main/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapter.js:77:13)\n at processTicksAndRejections (node:internal/process/task_queues:95:5)\n at runTestInternal (/Users/scotttwiname/Projects/subql-main/node_modules/jest-runner/build/runTest.js:367:16)\n at runTest (/Users/scotttwiname/Projects/subql-main/node_modules/jest-runner/build/runTest.js:444:34)\n at Object.worker (/Users/scotttwiname/Projects/subql-main/node_modules/jest-runner/build/testWorker.js:106:12)","Error: SASL: SCRAM-SERVER-FIRST-MESSAGE: client password must be a string\n at Object.continueSession (/Users/scotttwiname/Projects/subql-main/node_modules/pg/lib/sasl.js:24:11)\n at Client._handleAuthSASLContinue (/Users/scotttwiname/Projects/subql-main/node_modules/pg/lib/client.js:257:10)\n at Connection.emit (node:events:518:28)\n at /Users/scotttwiname/Projects/subql-main/node_modules/pg/lib/connection.js:114:12\n at Parser.parse (/Users/scotttwiname/Projects/subql-main/node_modules/pg-protocol/src/parser.ts:104:9)\n at Socket. (/Users/scotttwiname/Projects/subql-main/node_modules/pg-protocol/src/index.ts:7:48)\n at Socket.emit (node:events:518:28)\n at addChunk (node:internal/streams/readable:559:12)\n at readableAddChunkPushByteMode (node:internal/streams/readable:510:3)\n at Socket.Readable.push (node:internal/streams/readable:390:5)\n at TCP.onStreamRead (node:internal/stream_base_commons:190:23)","Error: thrown: \"Exceeded timeout of 5000 ms for a hook.\nAdd a timeout value to this test to increase the timeout, if this is a long-running test. See https://jestjs.io/docs/api#testname-fn-timeout.\"\n at /Users/scotttwiname/Projects/subql-main/packages/query/src/graphql/limit.test.ts:73:5\n at _dispatchDescribe (/Users/scotttwiname/Projects/subql-main/node_modules/jest-circus/build/index.js:91:26)\n at describe (/Users/scotttwiname/Projects/subql-main/node_modules/jest-circus/build/index.js:55:5)\n at /Users/scotttwiname/Projects/subql-main/packages/query/src/graphql/limit.test.ts:57:3\n at _dispatchDescribe (/Users/scotttwiname/Projects/subql-main/node_modules/jest-circus/build/index.js:91:26)\n at describe (/Users/scotttwiname/Projects/subql-main/node_modules/jest-circus/build/index.js:55:5)\n at Object. (/Users/scotttwiname/Projects/subql-main/packages/query/src/graphql/limit.test.ts:19:1)\n at Runtime._execModule (/Users/scotttwiname/Projects/subql-main/node_modules/jest-runtime/build/index.js:1429:24)\n at Runtime._loadModule (/Users/scotttwiname/Projects/subql-main/node_modules/jest-runtime/build/index.js:1013:12)\n at Runtime.requireModule (/Users/scotttwiname/Projects/subql-main/node_modules/jest-runtime/build/index.js:873:12)\n at jestAdapter (/Users/scotttwiname/Projects/subql-main/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapter.js:77:13)\n at processTicksAndRejections (node:internal/process/task_queues:95:5)\n at runTestInternal (/Users/scotttwiname/Projects/subql-main/node_modules/jest-runner/build/runTest.js:367:16)\n at runTest (/Users/scotttwiname/Projects/subql-main/node_modules/jest-runner/build/runTest.js:444:34)\n at Object.worker (/Users/scotttwiname/Projects/subql-main/node_modules/jest-runner/build/testWorker.js:106:12)"],"fullName":"query limits entity limits unbounded query clamped to safe bound","invocations":1,"location":{"column":5,"line":77},"numPassingAsserts":0,"retryReasons":[],"status":"failed","title":"unbounded query clamped to safe bound"},{"ancestorTitles":["query limits","entity limits"],"duration":10004,"failureDetails":[{},{"message":"thrown: \"Exceeded timeout of 5000 ms for a hook.\nAdd a timeout value to this test to increase the timeout, if this is a long-running test. See https://jestjs.io/docs/api#testname-fn-timeout.\""},{},{"message":"thrown: \"Exceeded timeout of 5000 ms for a hook.\nAdd a timeout value to this test to increase the timeout, if this is a long-running test. See https://jestjs.io/docs/api#testname-fn-timeout.\""}],"failureMessages":["Error: SASL: SCRAM-SERVER-FIRST-MESSAGE: client password must be a string\n at Object.continueSession (/Users/scotttwiname/Projects/subql-main/node_modules/pg/lib/sasl.js:24:11)\n at Client._handleAuthSASLContinue (/Users/scotttwiname/Projects/subql-main/node_modules/pg/lib/client.js:257:10)\n at Connection.emit (node:events:518:28)\n at /Users/scotttwiname/Projects/subql-main/node_modules/pg/lib/connection.js:114:12\n at Parser.parse (/Users/scotttwiname/Projects/subql-main/node_modules/pg-protocol/src/parser.ts:104:9)\n at Socket. (/Users/scotttwiname/Projects/subql-main/node_modules/pg-protocol/src/index.ts:7:48)\n at Socket.emit (node:events:518:28)\n at addChunk (node:internal/streams/readable:559:12)\n at readableAddChunkPushByteMode (node:internal/streams/readable:510:3)\n at Socket.Readable.push (node:internal/streams/readable:390:5)\n at TCP.onStreamRead (node:internal/stream_base_commons:190:23)","Error: thrown: \"Exceeded timeout of 5000 ms for a hook.\nAdd a timeout value to this test to increase the timeout, if this is a long-running test. See https://jestjs.io/docs/api#testname-fn-timeout.\"\n at /Users/scotttwiname/Projects/subql-main/packages/query/src/graphql/limit.test.ts:62:5\n at _dispatchDescribe (/Users/scotttwiname/Projects/subql-main/node_modules/jest-circus/build/index.js:91:26)\n at describe (/Users/scotttwiname/Projects/subql-main/node_modules/jest-circus/build/index.js:55:5)\n at /Users/scotttwiname/Projects/subql-main/packages/query/src/graphql/limit.test.ts:57:3\n at _dispatchDescribe (/Users/scotttwiname/Projects/subql-main/node_modules/jest-circus/build/index.js:91:26)\n at describe (/Users/scotttwiname/Projects/subql-main/node_modules/jest-circus/build/index.js:55:5)\n at Object. (/Users/scotttwiname/Projects/subql-main/packages/query/src/graphql/limit.test.ts:19:1)\n at Runtime._execModule (/Users/scotttwiname/Projects/subql-main/node_modules/jest-runtime/build/index.js:1429:24)\n at Runtime._loadModule (/Users/scotttwiname/Projects/subql-main/node_modules/jest-runtime/build/index.js:1013:12)\n at Runtime.requireModule (/Users/scotttwiname/Projects/subql-main/node_modules/jest-runtime/build/index.js:873:12)\n at jestAdapter (/Users/scotttwiname/Projects/subql-main/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapter.js:77:13)\n at processTicksAndRejections (node:internal/process/task_queues:95:5)\n at runTestInternal (/Users/scotttwiname/Projects/subql-main/node_modules/jest-runner/build/runTest.js:367:16)\n at runTest (/Users/scotttwiname/Projects/subql-main/node_modules/jest-runner/build/runTest.js:444:34)\n at Object.worker (/Users/scotttwiname/Projects/subql-main/node_modules/jest-runner/build/testWorker.js:106:12)","Error: SASL: SCRAM-SERVER-FIRST-MESSAGE: client password must be a string\n at Object.continueSession (/Users/scotttwiname/Projects/subql-main/node_modules/pg/lib/sasl.js:24:11)\n at Client._handleAuthSASLContinue (/Users/scotttwiname/Projects/subql-main/node_modules/pg/lib/client.js:257:10)\n at Connection.emit (node:events:518:28)\n at /Users/scotttwiname/Projects/subql-main/node_modules/pg/lib/connection.js:114:12\n at Parser.parse (/Users/scotttwiname/Projects/subql-main/node_modules/pg-protocol/src/parser.ts:104:9)\n at Socket. (/Users/scotttwiname/Projects/subql-main/node_modules/pg-protocol/src/index.ts:7:48)\n at Socket.emit (node:events:518:28)\n at addChunk (node:internal/streams/readable:559:12)\n at readableAddChunkPushByteMode (node:internal/streams/readable:510:3)\n at Socket.Readable.push (node:internal/streams/readable:390:5)\n at TCP.onStreamRead (node:internal/stream_base_commons:190:23)","Error: thrown: \"Exceeded timeout of 5000 ms for a hook.\nAdd a timeout value to this test to increase the timeout, if this is a long-running test. See https://jestjs.io/docs/api#testname-fn-timeout.\"\n at /Users/scotttwiname/Projects/subql-main/packages/query/src/graphql/limit.test.ts:73:5\n at _dispatchDescribe (/Users/scotttwiname/Projects/subql-main/node_modules/jest-circus/build/index.js:91:26)\n at describe (/Users/scotttwiname/Projects/subql-main/node_modules/jest-circus/build/index.js:55:5)\n at /Users/scotttwiname/Projects/subql-main/packages/query/src/graphql/limit.test.ts:57:3\n at _dispatchDescribe (/Users/scotttwiname/Projects/subql-main/node_modules/jest-circus/build/index.js:91:26)\n at describe (/Users/scotttwiname/Projects/subql-main/node_modules/jest-circus/build/index.js:55:5)\n at Object. (/Users/scotttwiname/Projects/subql-main/packages/query/src/graphql/limit.test.ts:19:1)\n at Runtime._execModule (/Users/scotttwiname/Projects/subql-main/node_modules/jest-runtime/build/index.js:1429:24)\n at Runtime._loadModule (/Users/scotttwiname/Projects/subql-main/node_modules/jest-runtime/build/index.js:1013:12)\n at Runtime.requireModule (/Users/scotttwiname/Projects/subql-main/node_modules/jest-runtime/build/index.js:873:12)\n at jestAdapter (/Users/scotttwiname/Projects/subql-main/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapter.js:77:13)\n at processTicksAndRejections (node:internal/process/task_queues:95:5)\n at runTestInternal (/Users/scotttwiname/Projects/subql-main/node_modules/jest-runner/build/runTest.js:367:16)\n at runTest (/Users/scotttwiname/Projects/subql-main/node_modules/jest-runner/build/runTest.js:444:34)\n at Object.worker (/Users/scotttwiname/Projects/subql-main/node_modules/jest-runner/build/testWorker.js:106:12)"],"fullName":"query limits entity limits bounded unsafe query clamped to safe bound","invocations":1,"location":{"column":5,"line":94},"numPassingAsserts":0,"retryReasons":[],"status":"failed","title":"bounded unsafe query clamped to safe bound"},{"ancestorTitles":["query limits","entity limits"],"duration":10004,"failureDetails":[{},{"message":"thrown: \"Exceeded timeout of 5000 ms for a hook.\nAdd a timeout value to this test to increase the timeout, if this is a long-running test. See https://jestjs.io/docs/api#testname-fn-timeout.\""},{},{"message":"thrown: \"Exceeded timeout of 5000 ms for a hook.\nAdd a timeout value to this test to increase the timeout, if this is a long-running test. See https://jestjs.io/docs/api#testname-fn-timeout.\""}],"failureMessages":["Error: SASL: SCRAM-SERVER-FIRST-MESSAGE: client password must be a string\n at Object.continueSession (/Users/scotttwiname/Projects/subql-main/node_modules/pg/lib/sasl.js:24:11)\n at Client._handleAuthSASLContinue (/Users/scotttwiname/Projects/subql-main/node_modules/pg/lib/client.js:257:10)\n at Connection.emit (node:events:518:28)\n at /Users/scotttwiname/Projects/subql-main/node_modules/pg/lib/connection.js:114:12\n at Parser.parse (/Users/scotttwiname/Projects/subql-main/node_modules/pg-protocol/src/parser.ts:104:9)\n at Socket. (/Users/scotttwiname/Projects/subql-main/node_modules/pg-protocol/src/index.ts:7:48)\n at Socket.emit (node:events:518:28)\n at addChunk (node:internal/streams/readable:559:12)\n at readableAddChunkPushByteMode (node:internal/streams/readable:510:3)\n at Socket.Readable.push (node:internal/streams/readable:390:5)\n at TCP.onStreamRead (node:internal/stream_base_commons:190:23)","Error: thrown: \"Exceeded timeout of 5000 ms for a hook.\nAdd a timeout value to this test to increase the timeout, if this is a long-running test. See https://jestjs.io/docs/api#testname-fn-timeout.\"\n at /Users/scotttwiname/Projects/subql-main/packages/query/src/graphql/limit.test.ts:62:5\n at _dispatchDescribe (/Users/scotttwiname/Projects/subql-main/node_modules/jest-circus/build/index.js:91:26)\n at describe (/Users/scotttwiname/Projects/subql-main/node_modules/jest-circus/build/index.js:55:5)\n at /Users/scotttwiname/Projects/subql-main/packages/query/src/graphql/limit.test.ts:57:3\n at _dispatchDescribe (/Users/scotttwiname/Projects/subql-main/node_modules/jest-circus/build/index.js:91:26)\n at describe (/Users/scotttwiname/Projects/subql-main/node_modules/jest-circus/build/index.js:55:5)\n at Object. (/Users/scotttwiname/Projects/subql-main/packages/query/src/graphql/limit.test.ts:19:1)\n at Runtime._execModule (/Users/scotttwiname/Projects/subql-main/node_modules/jest-runtime/build/index.js:1429:24)\n at Runtime._loadModule (/Users/scotttwiname/Projects/subql-main/node_modules/jest-runtime/build/index.js:1013:12)\n at Runtime.requireModule (/Users/scotttwiname/Projects/subql-main/node_modules/jest-runtime/build/index.js:873:12)\n at jestAdapter (/Users/scotttwiname/Projects/subql-main/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapter.js:77:13)\n at processTicksAndRejections (node:internal/process/task_queues:95:5)\n at runTestInternal (/Users/scotttwiname/Projects/subql-main/node_modules/jest-runner/build/runTest.js:367:16)\n at runTest (/Users/scotttwiname/Projects/subql-main/node_modules/jest-runner/build/runTest.js:444:34)\n at Object.worker (/Users/scotttwiname/Projects/subql-main/node_modules/jest-runner/build/testWorker.js:106:12)","Error: SASL: SCRAM-SERVER-FIRST-MESSAGE: client password must be a string\n at Object.continueSession (/Users/scotttwiname/Projects/subql-main/node_modules/pg/lib/sasl.js:24:11)\n at Client._handleAuthSASLContinue (/Users/scotttwiname/Projects/subql-main/node_modules/pg/lib/client.js:257:10)\n at Connection.emit (node:events:518:28)\n at /Users/scotttwiname/Projects/subql-main/node_modules/pg/lib/connection.js:114:12\n at Parser.parse (/Users/scotttwiname/Projects/subql-main/node_modules/pg-protocol/src/parser.ts:104:9)\n at Socket. (/Users/scotttwiname/Projects/subql-main/node_modules/pg-protocol/src/index.ts:7:48)\n at Socket.emit (node:events:518:28)\n at addChunk (node:internal/streams/readable:559:12)\n at readableAddChunkPushByteMode (node:internal/streams/readable:510:3)\n at Socket.Readable.push (node:internal/streams/readable:390:5)\n at TCP.onStreamRead (node:internal/stream_base_commons:190:23)","Error: thrown: \"Exceeded timeout of 5000 ms for a hook.\nAdd a timeout value to this test to increase the timeout, if this is a long-running test. See https://jestjs.io/docs/api#testname-fn-timeout.\"\n at /Users/scotttwiname/Projects/subql-main/packages/query/src/graphql/limit.test.ts:73:5\n at _dispatchDescribe (/Users/scotttwiname/Projects/subql-main/node_modules/jest-circus/build/index.js:91:26)\n at describe (/Users/scotttwiname/Projects/subql-main/node_modules/jest-circus/build/index.js:55:5)\n at /Users/scotttwiname/Projects/subql-main/packages/query/src/graphql/limit.test.ts:57:3\n at _dispatchDescribe (/Users/scotttwiname/Projects/subql-main/node_modules/jest-circus/build/index.js:91:26)\n at describe (/Users/scotttwiname/Projects/subql-main/node_modules/jest-circus/build/index.js:55:5)\n at Object. (/Users/scotttwiname/Projects/subql-main/packages/query/src/graphql/limit.test.ts:19:1)\n at Runtime._execModule (/Users/scotttwiname/Projects/subql-main/node_modules/jest-runtime/build/index.js:1429:24)\n at Runtime._loadModule (/Users/scotttwiname/Projects/subql-main/node_modules/jest-runtime/build/index.js:1013:12)\n at Runtime.requireModule (/Users/scotttwiname/Projects/subql-main/node_modules/jest-runtime/build/index.js:873:12)\n at jestAdapter (/Users/scotttwiname/Projects/subql-main/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapter.js:77:13)\n at processTicksAndRejections (node:internal/process/task_queues:95:5)\n at runTestInternal (/Users/scotttwiname/Projects/subql-main/node_modules/jest-runner/build/runTest.js:367:16)\n at runTest (/Users/scotttwiname/Projects/subql-main/node_modules/jest-runner/build/runTest.js:444:34)\n at Object.worker (/Users/scotttwiname/Projects/subql-main/node_modules/jest-runner/build/testWorker.js:106:12)"],"fullName":"query limits entity limits bounded safe query remains unchanged","invocations":1,"location":{"column":5,"line":111},"numPassingAsserts":0,"retryReasons":[],"status":"failed","title":"bounded safe query remains unchanged"}],"coverage":{},"endTime":1710904328682,"message":"\u001b[1m\u001b[31m \u001b[1m● \u001b[22m\u001b[1mquery limits › entity limits › unbounded query clamped to safe bound\u001b[39m\u001b[22m\n\n SASL: SCRAM-SERVER-FIRST-MESSAGE: client password must be a string\n\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat Object.continueSession (\u001b[22m\u001b[2mnode_modules/pg/lib/sasl.js\u001b[2m:24:11)\u001b[22m\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat Client._handleAuthSASLContinue (\u001b[22m\u001b[2mnode_modules/pg/lib/client.js\u001b[2m:257:10)\u001b[22m\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat \u001b[22m\u001b[2mnode_modules/pg/lib/connection.js\u001b[2m:114:12\u001b[22m\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat Parser.parse (\u001b[22m\u001b[2mnode_modules/pg-protocol/src/parser.ts\u001b[2m:104:9)\u001b[22m\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat Socket. (\u001b[22m\u001b[2mnode_modules/pg-protocol/src/index.ts\u001b[2m:7:48)\u001b[22m\u001b[2m\u001b[22m\n\n\u001b[1m\u001b[31m \u001b[1m● \u001b[22m\u001b[1mquery limits › entity limits › unbounded query clamped to safe bound\u001b[39m\u001b[22m\n\n thrown: \"Exceeded timeout of 5000 ms for a hook.\n Add a timeout value to this test to increase the timeout, if this is a long-running test. See https://jestjs.io/docs/api#testname-fn-timeout.\"\n\u001b[2m\u001b[22m\n\u001b[2m \u001b[0m \u001b[90m 60 |\u001b[39m }\u001b[0m\u001b[22m\n\u001b[2m \u001b[0m \u001b[90m 61 |\u001b[39m\u001b[0m\u001b[22m\n\u001b[2m \u001b[0m\u001b[31m\u001b[1m>\u001b[22m\u001b[2m\u001b[39m\u001b[90m 62 |\u001b[39m beforeEach(\u001b[36masync\u001b[39m () \u001b[33m=>\u001b[39m {\u001b[0m\u001b[22m\n\u001b[2m \u001b[0m \u001b[90m |\u001b[39m \u001b[31m\u001b[1m^\u001b[22m\u001b[2m\u001b[39m\u001b[0m\u001b[22m\n\u001b[2m \u001b[0m \u001b[90m 63 |\u001b[39m \u001b[36mawait\u001b[39m pool\u001b[33m.\u001b[39mquery(\u001b[32m`CREATE SCHEMA IF NOT EXISTS ${dbSchema}`\u001b[39m)\u001b[33m;\u001b[39m\u001b[0m\u001b[22m\n\u001b[2m \u001b[0m \u001b[90m 64 |\u001b[39m \u001b[36mawait\u001b[39m pool\u001b[33m.\u001b[39mquery(\u001b[32m`CREATE TABLE IF NOT EXISTS subquery_1.table (\u001b[39m\u001b[0m\u001b[22m\n\u001b[2m \u001b[0m \u001b[90m 65 |\u001b[39m \u001b[32m key INT, \u001b[39m\u001b[0m\u001b[22m\n\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat \u001b[22m\u001b[2m\u001b[0m\u001b[36mpackages/query/src/graphql/limit.test.ts\u001b[39m\u001b[0m\u001b[2m:62:5\u001b[22m\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat \u001b[22m\u001b[2m\u001b[0m\u001b[36mpackages/query/src/graphql/limit.test.ts\u001b[39m\u001b[0m\u001b[2m:57:3\u001b[22m\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat Object. (\u001b[22m\u001b[2m\u001b[0m\u001b[36mpackages/query/src/graphql/limit.test.ts\u001b[39m\u001b[0m\u001b[2m:19:1)\u001b[22m\u001b[2m\u001b[22m\n\n\u001b[1m\u001b[31m \u001b[1m● \u001b[22m\u001b[1mquery limits › entity limits › unbounded query clamped to safe bound\u001b[39m\u001b[22m\n\n SASL: SCRAM-SERVER-FIRST-MESSAGE: client password must be a string\n\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat Object.continueSession (\u001b[22m\u001b[2mnode_modules/pg/lib/sasl.js\u001b[2m:24:11)\u001b[22m\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat Client._handleAuthSASLContinue (\u001b[22m\u001b[2mnode_modules/pg/lib/client.js\u001b[2m:257:10)\u001b[22m\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat \u001b[22m\u001b[2mnode_modules/pg/lib/connection.js\u001b[2m:114:12\u001b[22m\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat Parser.parse (\u001b[22m\u001b[2mnode_modules/pg-protocol/src/parser.ts\u001b[2m:104:9)\u001b[22m\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat Socket. (\u001b[22m\u001b[2mnode_modules/pg-protocol/src/index.ts\u001b[2m:7:48)\u001b[22m\u001b[2m\u001b[22m\n\n\u001b[1m\u001b[31m \u001b[1m● \u001b[22m\u001b[1mquery limits › entity limits › unbounded query clamped to safe bound\u001b[39m\u001b[22m\n\n thrown: \"Exceeded timeout of 5000 ms for a hook.\n Add a timeout value to this test to increase the timeout, if this is a long-running test. See https://jestjs.io/docs/api#testname-fn-timeout.\"\n\u001b[2m\u001b[22m\n\u001b[2m \u001b[0m \u001b[90m 71 |\u001b[39m })\u001b[33m;\u001b[39m\u001b[0m\u001b[22m\n\u001b[2m \u001b[0m \u001b[90m 72 |\u001b[39m\u001b[0m\u001b[22m\n\u001b[2m \u001b[0m\u001b[31m\u001b[1m>\u001b[22m\u001b[2m\u001b[39m\u001b[90m 73 |\u001b[39m afterEach(\u001b[36masync\u001b[39m () \u001b[33m=>\u001b[39m {\u001b[0m\u001b[22m\n\u001b[2m \u001b[0m \u001b[90m |\u001b[39m \u001b[31m\u001b[1m^\u001b[22m\u001b[2m\u001b[39m\u001b[0m\u001b[22m\n\u001b[2m \u001b[0m \u001b[90m 74 |\u001b[39m \u001b[36mawait\u001b[39m pool\u001b[33m.\u001b[39mquery(\u001b[32m`DROP TABLE subquery_1.table`\u001b[39m)\u001b[33m;\u001b[39m\u001b[0m\u001b[22m\n\u001b[2m \u001b[0m \u001b[90m 75 |\u001b[39m })\u001b[33m;\u001b[39m\u001b[0m\u001b[22m\n\u001b[2m \u001b[0m \u001b[90m 76 |\u001b[39m\u001b[0m\u001b[22m\n\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat \u001b[22m\u001b[2m\u001b[0m\u001b[36mpackages/query/src/graphql/limit.test.ts\u001b[39m\u001b[0m\u001b[2m:73:5\u001b[22m\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat \u001b[22m\u001b[2m\u001b[0m\u001b[36mpackages/query/src/graphql/limit.test.ts\u001b[39m\u001b[0m\u001b[2m:57:3\u001b[22m\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat Object. (\u001b[22m\u001b[2m\u001b[0m\u001b[36mpackages/query/src/graphql/limit.test.ts\u001b[39m\u001b[0m\u001b[2m:19:1)\u001b[22m\u001b[2m\u001b[22m\n\n\u001b[1m\u001b[31m \u001b[1m● \u001b[22m\u001b[1mquery limits › entity limits › bounded unsafe query clamped to safe bound\u001b[39m\u001b[22m\n\n SASL: SCRAM-SERVER-FIRST-MESSAGE: client password must be a string\n\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat Object.continueSession (\u001b[22m\u001b[2mnode_modules/pg/lib/sasl.js\u001b[2m:24:11)\u001b[22m\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat Client._handleAuthSASLContinue (\u001b[22m\u001b[2mnode_modules/pg/lib/client.js\u001b[2m:257:10)\u001b[22m\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat \u001b[22m\u001b[2mnode_modules/pg/lib/connection.js\u001b[2m:114:12\u001b[22m\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat Parser.parse (\u001b[22m\u001b[2mnode_modules/pg-protocol/src/parser.ts\u001b[2m:104:9)\u001b[22m\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat Socket. (\u001b[22m\u001b[2mnode_modules/pg-protocol/src/index.ts\u001b[2m:7:48)\u001b[22m\u001b[2m\u001b[22m\n\n\u001b[1m\u001b[31m \u001b[1m● \u001b[22m\u001b[1mquery limits › entity limits › bounded unsafe query clamped to safe bound\u001b[39m\u001b[22m\n\n thrown: \"Exceeded timeout of 5000 ms for a hook.\n Add a timeout value to this test to increase the timeout, if this is a long-running test. See https://jestjs.io/docs/api#testname-fn-timeout.\"\n\u001b[2m\u001b[22m\n\u001b[2m \u001b[0m \u001b[90m 60 |\u001b[39m }\u001b[0m\u001b[22m\n\u001b[2m \u001b[0m \u001b[90m 61 |\u001b[39m\u001b[0m\u001b[22m\n\u001b[2m \u001b[0m\u001b[31m\u001b[1m>\u001b[22m\u001b[2m\u001b[39m\u001b[90m 62 |\u001b[39m beforeEach(\u001b[36masync\u001b[39m () \u001b[33m=>\u001b[39m {\u001b[0m\u001b[22m\n\u001b[2m \u001b[0m \u001b[90m |\u001b[39m \u001b[31m\u001b[1m^\u001b[22m\u001b[2m\u001b[39m\u001b[0m\u001b[22m\n\u001b[2m \u001b[0m \u001b[90m 63 |\u001b[39m \u001b[36mawait\u001b[39m pool\u001b[33m.\u001b[39mquery(\u001b[32m`CREATE SCHEMA IF NOT EXISTS ${dbSchema}`\u001b[39m)\u001b[33m;\u001b[39m\u001b[0m\u001b[22m\n\u001b[2m \u001b[0m \u001b[90m 64 |\u001b[39m \u001b[36mawait\u001b[39m pool\u001b[33m.\u001b[39mquery(\u001b[32m`CREATE TABLE IF NOT EXISTS subquery_1.table (\u001b[39m\u001b[0m\u001b[22m\n\u001b[2m \u001b[0m \u001b[90m 65 |\u001b[39m \u001b[32m key INT, \u001b[39m\u001b[0m\u001b[22m\n\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat \u001b[22m\u001b[2m\u001b[0m\u001b[36mpackages/query/src/graphql/limit.test.ts\u001b[39m\u001b[0m\u001b[2m:62:5\u001b[22m\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat \u001b[22m\u001b[2m\u001b[0m\u001b[36mpackages/query/src/graphql/limit.test.ts\u001b[39m\u001b[0m\u001b[2m:57:3\u001b[22m\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat Object. (\u001b[22m\u001b[2m\u001b[0m\u001b[36mpackages/query/src/graphql/limit.test.ts\u001b[39m\u001b[0m\u001b[2m:19:1)\u001b[22m\u001b[2m\u001b[22m\n\n\u001b[1m\u001b[31m \u001b[1m● \u001b[22m\u001b[1mquery limits › entity limits › bounded unsafe query clamped to safe bound\u001b[39m\u001b[22m\n\n SASL: SCRAM-SERVER-FIRST-MESSAGE: client password must be a string\n\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat Object.continueSession (\u001b[22m\u001b[2mnode_modules/pg/lib/sasl.js\u001b[2m:24:11)\u001b[22m\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat Client._handleAuthSASLContinue (\u001b[22m\u001b[2mnode_modules/pg/lib/client.js\u001b[2m:257:10)\u001b[22m\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat \u001b[22m\u001b[2mnode_modules/pg/lib/connection.js\u001b[2m:114:12\u001b[22m\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat Parser.parse (\u001b[22m\u001b[2mnode_modules/pg-protocol/src/parser.ts\u001b[2m:104:9)\u001b[22m\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat Socket. (\u001b[22m\u001b[2mnode_modules/pg-protocol/src/index.ts\u001b[2m:7:48)\u001b[22m\u001b[2m\u001b[22m\n\n\u001b[1m\u001b[31m \u001b[1m● \u001b[22m\u001b[1mquery limits › entity limits › bounded unsafe query clamped to safe bound\u001b[39m\u001b[22m\n\n thrown: \"Exceeded timeout of 5000 ms for a hook.\n Add a timeout value to this test to increase the timeout, if this is a long-running test. See https://jestjs.io/docs/api#testname-fn-timeout.\"\n\u001b[2m\u001b[22m\n\u001b[2m \u001b[0m \u001b[90m 71 |\u001b[39m })\u001b[33m;\u001b[39m\u001b[0m\u001b[22m\n\u001b[2m \u001b[0m \u001b[90m 72 |\u001b[39m\u001b[0m\u001b[22m\n\u001b[2m \u001b[0m\u001b[31m\u001b[1m>\u001b[22m\u001b[2m\u001b[39m\u001b[90m 73 |\u001b[39m afterEach(\u001b[36masync\u001b[39m () \u001b[33m=>\u001b[39m {\u001b[0m\u001b[22m\n\u001b[2m \u001b[0m \u001b[90m |\u001b[39m \u001b[31m\u001b[1m^\u001b[22m\u001b[2m\u001b[39m\u001b[0m\u001b[22m\n\u001b[2m \u001b[0m \u001b[90m 74 |\u001b[39m \u001b[36mawait\u001b[39m pool\u001b[33m.\u001b[39mquery(\u001b[32m`DROP TABLE subquery_1.table`\u001b[39m)\u001b[33m;\u001b[39m\u001b[0m\u001b[22m\n\u001b[2m \u001b[0m \u001b[90m 75 |\u001b[39m })\u001b[33m;\u001b[39m\u001b[0m\u001b[22m\n\u001b[2m \u001b[0m \u001b[90m 76 |\u001b[39m\u001b[0m\u001b[22m\n\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat \u001b[22m\u001b[2m\u001b[0m\u001b[36mpackages/query/src/graphql/limit.test.ts\u001b[39m\u001b[0m\u001b[2m:73:5\u001b[22m\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat \u001b[22m\u001b[2m\u001b[0m\u001b[36mpackages/query/src/graphql/limit.test.ts\u001b[39m\u001b[0m\u001b[2m:57:3\u001b[22m\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat Object. (\u001b[22m\u001b[2m\u001b[0m\u001b[36mpackages/query/src/graphql/limit.test.ts\u001b[39m\u001b[0m\u001b[2m:19:1)\u001b[22m\u001b[2m\u001b[22m\n\n\u001b[1m\u001b[31m \u001b[1m● \u001b[22m\u001b[1mquery limits › entity limits › bounded safe query remains unchanged\u001b[39m\u001b[22m\n\n SASL: SCRAM-SERVER-FIRST-MESSAGE: client password must be a string\n\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat Object.continueSession (\u001b[22m\u001b[2mnode_modules/pg/lib/sasl.js\u001b[2m:24:11)\u001b[22m\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat Client._handleAuthSASLContinue (\u001b[22m\u001b[2mnode_modules/pg/lib/client.js\u001b[2m:257:10)\u001b[22m\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat \u001b[22m\u001b[2mnode_modules/pg/lib/connection.js\u001b[2m:114:12\u001b[22m\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat Parser.parse (\u001b[22m\u001b[2mnode_modules/pg-protocol/src/parser.ts\u001b[2m:104:9)\u001b[22m\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat Socket. (\u001b[22m\u001b[2mnode_modules/pg-protocol/src/index.ts\u001b[2m:7:48)\u001b[22m\u001b[2m\u001b[22m\n\n\u001b[1m\u001b[31m \u001b[1m● \u001b[22m\u001b[1mquery limits › entity limits › bounded safe query remains unchanged\u001b[39m\u001b[22m\n\n thrown: \"Exceeded timeout of 5000 ms for a hook.\n Add a timeout value to this test to increase the timeout, if this is a long-running test. See https://jestjs.io/docs/api#testname-fn-timeout.\"\n\u001b[2m\u001b[22m\n\u001b[2m \u001b[0m \u001b[90m 60 |\u001b[39m }\u001b[0m\u001b[22m\n\u001b[2m \u001b[0m \u001b[90m 61 |\u001b[39m\u001b[0m\u001b[22m\n\u001b[2m \u001b[0m\u001b[31m\u001b[1m>\u001b[22m\u001b[2m\u001b[39m\u001b[90m 62 |\u001b[39m beforeEach(\u001b[36masync\u001b[39m () \u001b[33m=>\u001b[39m {\u001b[0m\u001b[22m\n\u001b[2m \u001b[0m \u001b[90m |\u001b[39m \u001b[31m\u001b[1m^\u001b[22m\u001b[2m\u001b[39m\u001b[0m\u001b[22m\n\u001b[2m \u001b[0m \u001b[90m 63 |\u001b[39m \u001b[36mawait\u001b[39m pool\u001b[33m.\u001b[39mquery(\u001b[32m`CREATE SCHEMA IF NOT EXISTS ${dbSchema}`\u001b[39m)\u001b[33m;\u001b[39m\u001b[0m\u001b[22m\n\u001b[2m \u001b[0m \u001b[90m 64 |\u001b[39m \u001b[36mawait\u001b[39m pool\u001b[33m.\u001b[39mquery(\u001b[32m`CREATE TABLE IF NOT EXISTS subquery_1.table (\u001b[39m\u001b[0m\u001b[22m\n\u001b[2m \u001b[0m \u001b[90m 65 |\u001b[39m \u001b[32m key INT, \u001b[39m\u001b[0m\u001b[22m\n\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat \u001b[22m\u001b[2m\u001b[0m\u001b[36mpackages/query/src/graphql/limit.test.ts\u001b[39m\u001b[0m\u001b[2m:62:5\u001b[22m\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat \u001b[22m\u001b[2m\u001b[0m\u001b[36mpackages/query/src/graphql/limit.test.ts\u001b[39m\u001b[0m\u001b[2m:57:3\u001b[22m\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat Object. (\u001b[22m\u001b[2m\u001b[0m\u001b[36mpackages/query/src/graphql/limit.test.ts\u001b[39m\u001b[0m\u001b[2m:19:1)\u001b[22m\u001b[2m\u001b[22m\n\n\u001b[1m\u001b[31m \u001b[1m● \u001b[22m\u001b[1mquery limits › entity limits › bounded safe query remains unchanged\u001b[39m\u001b[22m\n\n SASL: SCRAM-SERVER-FIRST-MESSAGE: client password must be a string\n\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat Object.continueSession (\u001b[22m\u001b[2mnode_modules/pg/lib/sasl.js\u001b[2m:24:11)\u001b[22m\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat Client._handleAuthSASLContinue (\u001b[22m\u001b[2mnode_modules/pg/lib/client.js\u001b[2m:257:10)\u001b[22m\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat \u001b[22m\u001b[2mnode_modules/pg/lib/connection.js\u001b[2m:114:12\u001b[22m\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat Parser.parse (\u001b[22m\u001b[2mnode_modules/pg-protocol/src/parser.ts\u001b[2m:104:9)\u001b[22m\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat Socket. (\u001b[22m\u001b[2mnode_modules/pg-protocol/src/index.ts\u001b[2m:7:48)\u001b[22m\u001b[2m\u001b[22m\n\n\u001b[1m\u001b[31m \u001b[1m● \u001b[22m\u001b[1mquery limits › entity limits › bounded safe query remains unchanged\u001b[39m\u001b[22m\n\n thrown: \"Exceeded timeout of 5000 ms for a hook.\n Add a timeout value to this test to increase the timeout, if this is a long-running test. See https://jestjs.io/docs/api#testname-fn-timeout.\"\n\u001b[2m\u001b[22m\n\u001b[2m \u001b[0m \u001b[90m 71 |\u001b[39m })\u001b[33m;\u001b[39m\u001b[0m\u001b[22m\n\u001b[2m \u001b[0m \u001b[90m 72 |\u001b[39m\u001b[0m\u001b[22m\n\u001b[2m \u001b[0m\u001b[31m\u001b[1m>\u001b[22m\u001b[2m\u001b[39m\u001b[90m 73 |\u001b[39m afterEach(\u001b[36masync\u001b[39m () \u001b[33m=>\u001b[39m {\u001b[0m\u001b[22m\n\u001b[2m \u001b[0m \u001b[90m |\u001b[39m \u001b[31m\u001b[1m^\u001b[22m\u001b[2m\u001b[39m\u001b[0m\u001b[22m\n\u001b[2m \u001b[0m \u001b[90m 74 |\u001b[39m \u001b[36mawait\u001b[39m pool\u001b[33m.\u001b[39mquery(\u001b[32m`DROP TABLE subquery_1.table`\u001b[39m)\u001b[33m;\u001b[39m\u001b[0m\u001b[22m\n\u001b[2m \u001b[0m \u001b[90m 75 |\u001b[39m })\u001b[33m;\u001b[39m\u001b[0m\u001b[22m\n\u001b[2m \u001b[0m \u001b[90m 76 |\u001b[39m\u001b[0m\u001b[22m\n\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat \u001b[22m\u001b[2m\u001b[0m\u001b[36mpackages/query/src/graphql/limit.test.ts\u001b[39m\u001b[0m\u001b[2m:73:5\u001b[22m\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat \u001b[22m\u001b[2m\u001b[0m\u001b[36mpackages/query/src/graphql/limit.test.ts\u001b[39m\u001b[0m\u001b[2m:57:3\u001b[22m\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat Object. (\u001b[22m\u001b[2m\u001b[0m\u001b[36mpackages/query/src/graphql/limit.test.ts\u001b[39m\u001b[0m\u001b[2m:19:1)\u001b[22m\u001b[2m\u001b[22m\n\n\n \u001b[1m● \u001b[22mTest suite failed to run\n\n thrown: \"Exceeded timeout of 5000 ms for a hook.\n Add a timeout value to this test to increase the timeout, if this is a long-running test. See https://jestjs.io/docs/api#testname-fn-timeout.\"\n\n \u001b[0m \u001b[90m 51 |\u001b[39m }\u001b[0m\n \u001b[0m \u001b[90m 52 |\u001b[39m\u001b[0m\n \u001b[0m\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 53 |\u001b[39m afterAll(\u001b[36masync\u001b[39m () \u001b[33m=>\u001b[39m {\u001b[0m\n \u001b[0m \u001b[90m |\u001b[39m \u001b[31m\u001b[1m^\u001b[22m\u001b[39m\u001b[0m\n \u001b[0m \u001b[90m 54 |\u001b[39m \u001b[36mawait\u001b[39m pool\u001b[33m.\u001b[39mend()\u001b[33m;\u001b[39m\u001b[0m\n \u001b[0m \u001b[90m 55 |\u001b[39m })\u001b[33m;\u001b[39m\u001b[0m\n \u001b[0m \u001b[90m 56 |\u001b[39m\u001b[0m\n\n \u001b[2mat \u001b[22mpackages/query/src/graphql/limit.test.ts\u001b[2m:53:3\u001b[22m\n \u001b[2mat Object. (\u001b[22mpackages/query/src/graphql/limit.test.ts\u001b[2m:19:1)\u001b[22m\n","name":"/Users/scotttwiname/Projects/subql-main/packages/query/src/graphql/limit.test.ts","startTime":1710904328682,"status":"failed","summary":""},{"assertionResults":[{"ancestorTitles":["GraphqlModule"],"duration":10022,"failureDetails":[{},{"message":"thrown: \"Exceeded timeout of 5000 ms for a hook.\nAdd a timeout value to this test to increase the timeout, if this is a long-running test. See https://jestjs.io/docs/api#testname-fn-timeout.\""},{},{"message":"thrown: \"Exceeded timeout of 5000 ms for a hook.\nAdd a timeout value to this test to increase the timeout, if this is a long-running test. See https://jestjs.io/docs/api#testname-fn-timeout.\""}],"failureMessages":["Error: SASL: SCRAM-SERVER-FIRST-MESSAGE: client password must be a string\n at Object.continueSession (/Users/scotttwiname/Projects/subql-main/node_modules/pg/lib/sasl.js:24:11)\n at Client._handleAuthSASLContinue (/Users/scotttwiname/Projects/subql-main/node_modules/pg/lib/client.js:257:10)\n at Connection.emit (node:events:518:28)\n at /Users/scotttwiname/Projects/subql-main/node_modules/pg/lib/connection.js:114:12\n at Parser.parse (/Users/scotttwiname/Projects/subql-main/node_modules/pg-protocol/src/parser.ts:104:9)\n at Socket. (/Users/scotttwiname/Projects/subql-main/node_modules/pg-protocol/src/index.ts:7:48)\n at Socket.emit (node:events:518:28)\n at addChunk (node:internal/streams/readable:559:12)\n at readableAddChunkPushByteMode (node:internal/streams/readable:510:3)\n at Socket.Readable.push (node:internal/streams/readable:390:5)\n at TCP.onStreamRead (node:internal/stream_base_commons:190:23)","Error: thrown: \"Exceeded timeout of 5000 ms for a hook.\nAdd a timeout value to this test to increase the timeout, if this is a long-running test. See https://jestjs.io/docs/api#testname-fn-timeout.\"\n at /Users/scotttwiname/Projects/subql-main/packages/query/src/graphql/graphql.test.ts:59:3\n at _dispatchDescribe (/Users/scotttwiname/Projects/subql-main/node_modules/jest-circus/build/index.js:91:26)\n at describe (/Users/scotttwiname/Projects/subql-main/node_modules/jest-circus/build/index.js:55:5)\n at Object. (/Users/scotttwiname/Projects/subql-main/packages/query/src/graphql/graphql.test.ts:17:1)\n at Runtime._execModule (/Users/scotttwiname/Projects/subql-main/node_modules/jest-runtime/build/index.js:1429:24)\n at Runtime._loadModule (/Users/scotttwiname/Projects/subql-main/node_modules/jest-runtime/build/index.js:1013:12)\n at Runtime.requireModule (/Users/scotttwiname/Projects/subql-main/node_modules/jest-runtime/build/index.js:873:12)\n at jestAdapter (/Users/scotttwiname/Projects/subql-main/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapter.js:77:13)\n at processTicksAndRejections (node:internal/process/task_queues:95:5)\n at runTestInternal (/Users/scotttwiname/Projects/subql-main/node_modules/jest-runner/build/runTest.js:367:16)\n at runTest (/Users/scotttwiname/Projects/subql-main/node_modules/jest-runner/build/runTest.js:444:34)\n at Object.worker (/Users/scotttwiname/Projects/subql-main/node_modules/jest-runner/build/testWorker.js:106:12)","Error: SASL: SCRAM-SERVER-FIRST-MESSAGE: client password must be a string\n at Object.continueSession (/Users/scotttwiname/Projects/subql-main/node_modules/pg/lib/sasl.js:24:11)\n at Client._handleAuthSASLContinue (/Users/scotttwiname/Projects/subql-main/node_modules/pg/lib/client.js:257:10)\n at Connection.emit (node:events:518:28)\n at /Users/scotttwiname/Projects/subql-main/node_modules/pg/lib/connection.js:114:12\n at Parser.parse (/Users/scotttwiname/Projects/subql-main/node_modules/pg-protocol/src/parser.ts:104:9)\n at Socket. (/Users/scotttwiname/Projects/subql-main/node_modules/pg-protocol/src/index.ts:7:48)\n at Socket.emit (node:events:518:28)\n at addChunk (node:internal/streams/readable:559:12)\n at readableAddChunkPushByteMode (node:internal/streams/readable:510:3)\n at Socket.Readable.push (node:internal/streams/readable:390:5)\n at TCP.onStreamRead (node:internal/stream_base_commons:190:23)","Error: thrown: \"Exceeded timeout of 5000 ms for a hook.\nAdd a timeout value to this test to increase the timeout, if this is a long-running test. See https://jestjs.io/docs/api#testname-fn-timeout.\"\n at /Users/scotttwiname/Projects/subql-main/packages/query/src/graphql/graphql.test.ts:70:3\n at _dispatchDescribe (/Users/scotttwiname/Projects/subql-main/node_modules/jest-circus/build/index.js:91:26)\n at describe (/Users/scotttwiname/Projects/subql-main/node_modules/jest-circus/build/index.js:55:5)\n at Object. (/Users/scotttwiname/Projects/subql-main/packages/query/src/graphql/graphql.test.ts:17:1)\n at Runtime._execModule (/Users/scotttwiname/Projects/subql-main/node_modules/jest-runtime/build/index.js:1429:24)\n at Runtime._loadModule (/Users/scotttwiname/Projects/subql-main/node_modules/jest-runtime/build/index.js:1013:12)\n at Runtime.requireModule (/Users/scotttwiname/Projects/subql-main/node_modules/jest-runtime/build/index.js:873:12)\n at jestAdapter (/Users/scotttwiname/Projects/subql-main/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapter.js:77:13)\n at processTicksAndRejections (node:internal/process/task_queues:95:5)\n at runTestInternal (/Users/scotttwiname/Projects/subql-main/node_modules/jest-runner/build/runTest.js:367:16)\n at runTest (/Users/scotttwiname/Projects/subql-main/node_modules/jest-runner/build/runTest.js:444:34)\n at Object.worker (/Users/scotttwiname/Projects/subql-main/node_modules/jest-runner/build/testWorker.js:106:12)"],"fullName":"GraphqlModule can query all metadata fields from database","invocations":1,"location":{"column":3,"line":78},"numPassingAsserts":0,"retryReasons":[],"status":"failed","title":"can query all metadata fields from database"},{"ancestorTitles":["GraphqlModule"],"duration":10005,"failureDetails":[{},{"message":"thrown: \"Exceeded timeout of 5000 ms for a hook.\nAdd a timeout value to this test to increase the timeout, if this is a long-running test. See https://jestjs.io/docs/api#testname-fn-timeout.\""},{},{"message":"thrown: \"Exceeded timeout of 5000 ms for a hook.\nAdd a timeout value to this test to increase the timeout, if this is a long-running test. See https://jestjs.io/docs/api#testname-fn-timeout.\""}],"failureMessages":["Error: SASL: SCRAM-SERVER-FIRST-MESSAGE: client password must be a string\n at Object.continueSession (/Users/scotttwiname/Projects/subql-main/node_modules/pg/lib/sasl.js:24:11)\n at Client._handleAuthSASLContinue (/Users/scotttwiname/Projects/subql-main/node_modules/pg/lib/client.js:257:10)\n at Connection.emit (node:events:518:28)\n at /Users/scotttwiname/Projects/subql-main/node_modules/pg/lib/connection.js:114:12\n at Parser.parse (/Users/scotttwiname/Projects/subql-main/node_modules/pg-protocol/src/parser.ts:104:9)\n at Socket. (/Users/scotttwiname/Projects/subql-main/node_modules/pg-protocol/src/index.ts:7:48)\n at Socket.emit (node:events:518:28)\n at addChunk (node:internal/streams/readable:559:12)\n at readableAddChunkPushByteMode (node:internal/streams/readable:510:3)\n at Socket.Readable.push (node:internal/streams/readable:390:5)\n at TCP.onStreamRead (node:internal/stream_base_commons:190:23)","Error: thrown: \"Exceeded timeout of 5000 ms for a hook.\nAdd a timeout value to this test to increase the timeout, if this is a long-running test. See https://jestjs.io/docs/api#testname-fn-timeout.\"\n at /Users/scotttwiname/Projects/subql-main/packages/query/src/graphql/graphql.test.ts:59:3\n at _dispatchDescribe (/Users/scotttwiname/Projects/subql-main/node_modules/jest-circus/build/index.js:91:26)\n at describe (/Users/scotttwiname/Projects/subql-main/node_modules/jest-circus/build/index.js:55:5)\n at Object. (/Users/scotttwiname/Projects/subql-main/packages/query/src/graphql/graphql.test.ts:17:1)\n at Runtime._execModule (/Users/scotttwiname/Projects/subql-main/node_modules/jest-runtime/build/index.js:1429:24)\n at Runtime._loadModule (/Users/scotttwiname/Projects/subql-main/node_modules/jest-runtime/build/index.js:1013:12)\n at Runtime.requireModule (/Users/scotttwiname/Projects/subql-main/node_modules/jest-runtime/build/index.js:873:12)\n at jestAdapter (/Users/scotttwiname/Projects/subql-main/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapter.js:77:13)\n at processTicksAndRejections (node:internal/process/task_queues:95:5)\n at runTestInternal (/Users/scotttwiname/Projects/subql-main/node_modules/jest-runner/build/runTest.js:367:16)\n at runTest (/Users/scotttwiname/Projects/subql-main/node_modules/jest-runner/build/runTest.js:444:34)\n at Object.worker (/Users/scotttwiname/Projects/subql-main/node_modules/jest-runner/build/testWorker.js:106:12)","Error: SASL: SCRAM-SERVER-FIRST-MESSAGE: client password must be a string\n at Object.continueSession (/Users/scotttwiname/Projects/subql-main/node_modules/pg/lib/sasl.js:24:11)\n at Client._handleAuthSASLContinue (/Users/scotttwiname/Projects/subql-main/node_modules/pg/lib/client.js:257:10)\n at Connection.emit (node:events:518:28)\n at /Users/scotttwiname/Projects/subql-main/node_modules/pg/lib/connection.js:114:12\n at Parser.parse (/Users/scotttwiname/Projects/subql-main/node_modules/pg-protocol/src/parser.ts:104:9)\n at Socket. (/Users/scotttwiname/Projects/subql-main/node_modules/pg-protocol/src/index.ts:7:48)\n at Socket.emit (node:events:518:28)\n at addChunk (node:internal/streams/readable:559:12)\n at readableAddChunkPushByteMode (node:internal/streams/readable:510:3)\n at Socket.Readable.push (node:internal/streams/readable:390:5)\n at TCP.onStreamRead (node:internal/stream_base_commons:190:23)","Error: thrown: \"Exceeded timeout of 5000 ms for a hook.\nAdd a timeout value to this test to increase the timeout, if this is a long-running test. See https://jestjs.io/docs/api#testname-fn-timeout.\"\n at /Users/scotttwiname/Projects/subql-main/packages/query/src/graphql/graphql.test.ts:70:3\n at _dispatchDescribe (/Users/scotttwiname/Projects/subql-main/node_modules/jest-circus/build/index.js:91:26)\n at describe (/Users/scotttwiname/Projects/subql-main/node_modules/jest-circus/build/index.js:55:5)\n at Object. (/Users/scotttwiname/Projects/subql-main/packages/query/src/graphql/graphql.test.ts:17:1)\n at Runtime._execModule (/Users/scotttwiname/Projects/subql-main/node_modules/jest-runtime/build/index.js:1429:24)\n at Runtime._loadModule (/Users/scotttwiname/Projects/subql-main/node_modules/jest-runtime/build/index.js:1013:12)\n at Runtime.requireModule (/Users/scotttwiname/Projects/subql-main/node_modules/jest-runtime/build/index.js:873:12)\n at jestAdapter (/Users/scotttwiname/Projects/subql-main/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapter.js:77:13)\n at processTicksAndRejections (node:internal/process/task_queues:95:5)\n at runTestInternal (/Users/scotttwiname/Projects/subql-main/node_modules/jest-runner/build/runTest.js:367:16)\n at runTest (/Users/scotttwiname/Projects/subql-main/node_modules/jest-runner/build/runTest.js:444:34)\n at Object.worker (/Users/scotttwiname/Projects/subql-main/node_modules/jest-runner/build/testWorker.js:106:12)"],"fullName":"GraphqlModule wont resolve fields that arent allowed metadata","invocations":1,"location":{"column":3,"line":124},"numPassingAsserts":0,"retryReasons":[],"status":"failed","title":"wont resolve fields that arent allowed metadata"},{"ancestorTitles":["GraphqlModule"],"duration":10003,"failureDetails":[{},{"message":"thrown: \"Exceeded timeout of 5000 ms for a hook.\nAdd a timeout value to this test to increase the timeout, if this is a long-running test. See https://jestjs.io/docs/api#testname-fn-timeout.\""},{},{"message":"thrown: \"Exceeded timeout of 5000 ms for a hook.\nAdd a timeout value to this test to increase the timeout, if this is a long-running test. See https://jestjs.io/docs/api#testname-fn-timeout.\""}],"failureMessages":["Error: SASL: SCRAM-SERVER-FIRST-MESSAGE: client password must be a string\n at Object.continueSession (/Users/scotttwiname/Projects/subql-main/node_modules/pg/lib/sasl.js:24:11)\n at Client._handleAuthSASLContinue (/Users/scotttwiname/Projects/subql-main/node_modules/pg/lib/client.js:257:10)\n at Connection.emit (node:events:518:28)\n at /Users/scotttwiname/Projects/subql-main/node_modules/pg/lib/connection.js:114:12\n at Parser.parse (/Users/scotttwiname/Projects/subql-main/node_modules/pg-protocol/src/parser.ts:104:9)\n at Socket. (/Users/scotttwiname/Projects/subql-main/node_modules/pg-protocol/src/index.ts:7:48)\n at Socket.emit (node:events:518:28)\n at addChunk (node:internal/streams/readable:559:12)\n at readableAddChunkPushByteMode (node:internal/streams/readable:510:3)\n at Socket.Readable.push (node:internal/streams/readable:390:5)\n at TCP.onStreamRead (node:internal/stream_base_commons:190:23)","Error: thrown: \"Exceeded timeout of 5000 ms for a hook.\nAdd a timeout value to this test to increase the timeout, if this is a long-running test. See https://jestjs.io/docs/api#testname-fn-timeout.\"\n at /Users/scotttwiname/Projects/subql-main/packages/query/src/graphql/graphql.test.ts:59:3\n at _dispatchDescribe (/Users/scotttwiname/Projects/subql-main/node_modules/jest-circus/build/index.js:91:26)\n at describe (/Users/scotttwiname/Projects/subql-main/node_modules/jest-circus/build/index.js:55:5)\n at Object. (/Users/scotttwiname/Projects/subql-main/packages/query/src/graphql/graphql.test.ts:17:1)\n at Runtime._execModule (/Users/scotttwiname/Projects/subql-main/node_modules/jest-runtime/build/index.js:1429:24)\n at Runtime._loadModule (/Users/scotttwiname/Projects/subql-main/node_modules/jest-runtime/build/index.js:1013:12)\n at Runtime.requireModule (/Users/scotttwiname/Projects/subql-main/node_modules/jest-runtime/build/index.js:873:12)\n at jestAdapter (/Users/scotttwiname/Projects/subql-main/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapter.js:77:13)\n at processTicksAndRejections (node:internal/process/task_queues:95:5)\n at runTestInternal (/Users/scotttwiname/Projects/subql-main/node_modules/jest-runner/build/runTest.js:367:16)\n at runTest (/Users/scotttwiname/Projects/subql-main/node_modules/jest-runner/build/runTest.js:444:34)\n at Object.worker (/Users/scotttwiname/Projects/subql-main/node_modules/jest-runner/build/testWorker.js:106:12)","Error: SASL: SCRAM-SERVER-FIRST-MESSAGE: client password must be a string\n at Object.continueSession (/Users/scotttwiname/Projects/subql-main/node_modules/pg/lib/sasl.js:24:11)\n at Client._handleAuthSASLContinue (/Users/scotttwiname/Projects/subql-main/node_modules/pg/lib/client.js:257:10)\n at Connection.emit (node:events:518:28)\n at /Users/scotttwiname/Projects/subql-main/node_modules/pg/lib/connection.js:114:12\n at Parser.parse (/Users/scotttwiname/Projects/subql-main/node_modules/pg-protocol/src/parser.ts:104:9)\n at Socket. (/Users/scotttwiname/Projects/subql-main/node_modules/pg-protocol/src/index.ts:7:48)\n at Socket.emit (node:events:518:28)\n at addChunk (node:internal/streams/readable:559:12)\n at readableAddChunkPushByteMode (node:internal/streams/readable:510:3)\n at Socket.Readable.push (node:internal/streams/readable:390:5)\n at TCP.onStreamRead (node:internal/stream_base_commons:190:23)","Error: thrown: \"Exceeded timeout of 5000 ms for a hook.\nAdd a timeout value to this test to increase the timeout, if this is a long-running test. See https://jestjs.io/docs/api#testname-fn-timeout.\"\n at /Users/scotttwiname/Projects/subql-main/packages/query/src/graphql/graphql.test.ts:70:3\n at _dispatchDescribe (/Users/scotttwiname/Projects/subql-main/node_modules/jest-circus/build/index.js:91:26)\n at describe (/Users/scotttwiname/Projects/subql-main/node_modules/jest-circus/build/index.js:55:5)\n at Object. (/Users/scotttwiname/Projects/subql-main/packages/query/src/graphql/graphql.test.ts:17:1)\n at Runtime._execModule (/Users/scotttwiname/Projects/subql-main/node_modules/jest-runtime/build/index.js:1429:24)\n at Runtime._loadModule (/Users/scotttwiname/Projects/subql-main/node_modules/jest-runtime/build/index.js:1013:12)\n at Runtime.requireModule (/Users/scotttwiname/Projects/subql-main/node_modules/jest-runtime/build/index.js:873:12)\n at jestAdapter (/Users/scotttwiname/Projects/subql-main/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapter.js:77:13)\n at processTicksAndRejections (node:internal/process/task_queues:95:5)\n at runTestInternal (/Users/scotttwiname/Projects/subql-main/node_modules/jest-runner/build/runTest.js:367:16)\n at runTest (/Users/scotttwiname/Projects/subql-main/node_modules/jest-runner/build/runTest.js:444:34)\n at Object.worker (/Users/scotttwiname/Projects/subql-main/node_modules/jest-runner/build/testWorker.js:106:12)"],"fullName":"GraphqlModule resolve incorrect fields in db to null when queried from graphql","invocations":1,"location":{"column":3,"line":149},"numPassingAsserts":0,"retryReasons":[],"status":"failed","title":"resolve incorrect fields in db to null when queried from graphql"}],"coverage":{},"endTime":1710904328682,"message":"\u001b[1m\u001b[31m \u001b[1m● \u001b[22m\u001b[1mGraphqlModule › can query all metadata fields from database\u001b[39m\u001b[22m\n\n SASL: SCRAM-SERVER-FIRST-MESSAGE: client password must be a string\n\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat Object.continueSession (\u001b[22m\u001b[2mnode_modules/pg/lib/sasl.js\u001b[2m:24:11)\u001b[22m\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat Client._handleAuthSASLContinue (\u001b[22m\u001b[2mnode_modules/pg/lib/client.js\u001b[2m:257:10)\u001b[22m\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat \u001b[22m\u001b[2mnode_modules/pg/lib/connection.js\u001b[2m:114:12\u001b[22m\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat Parser.parse (\u001b[22m\u001b[2mnode_modules/pg-protocol/src/parser.ts\u001b[2m:104:9)\u001b[22m\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat Socket. (\u001b[22m\u001b[2mnode_modules/pg-protocol/src/index.ts\u001b[2m:7:48)\u001b[22m\u001b[2m\u001b[22m\n\n\u001b[1m\u001b[31m \u001b[1m● \u001b[22m\u001b[1mGraphqlModule › can query all metadata fields from database\u001b[39m\u001b[22m\n\n thrown: \"Exceeded timeout of 5000 ms for a hook.\n Add a timeout value to this test to increase the timeout, if this is a long-running test. See https://jestjs.io/docs/api#testname-fn-timeout.\"\n\u001b[2m\u001b[22m\n\u001b[2m \u001b[0m \u001b[90m 57 |\u001b[39m }\u001b[0m\u001b[22m\n\u001b[2m \u001b[0m \u001b[90m 58 |\u001b[39m\u001b[0m\u001b[22m\n\u001b[2m \u001b[0m\u001b[31m\u001b[1m>\u001b[22m\u001b[2m\u001b[39m\u001b[90m 59 |\u001b[39m beforeEach(\u001b[36masync\u001b[39m () \u001b[33m=>\u001b[39m {\u001b[0m\u001b[22m\n\u001b[2m \u001b[0m \u001b[90m |\u001b[39m \u001b[31m\u001b[1m^\u001b[22m\u001b[2m\u001b[39m\u001b[0m\u001b[22m\n\u001b[2m \u001b[0m \u001b[90m 60 |\u001b[39m \u001b[36mawait\u001b[39m pool\u001b[33m.\u001b[39mquery(\u001b[32m`CREATE SCHEMA IF NOT EXISTS ${dbSchema}`\u001b[39m)\u001b[33m;\u001b[39m\u001b[0m\u001b[22m\n\u001b[2m \u001b[0m \u001b[90m 61 |\u001b[39m \u001b[36mawait\u001b[39m pool\u001b[33m.\u001b[39mquery(\u001b[32m`CREATE TABLE IF NOT EXISTS subquery_1._metadata (\u001b[39m\u001b[0m\u001b[22m\n\u001b[2m \u001b[0m \u001b[90m 62 |\u001b[39m \u001b[32m key character varying(255) COLLATE pg_catalog.\"default\" NOT NULL,\u001b[39m\u001b[0m\u001b[22m\n\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat \u001b[22m\u001b[2m\u001b[0m\u001b[36mpackages/query/src/graphql/graphql.test.ts\u001b[39m\u001b[0m\u001b[2m:59:3\u001b[22m\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat Object. (\u001b[22m\u001b[2m\u001b[0m\u001b[36mpackages/query/src/graphql/graphql.test.ts\u001b[39m\u001b[0m\u001b[2m:17:1)\u001b[22m\u001b[2m\u001b[22m\n\n\u001b[1m\u001b[31m \u001b[1m● \u001b[22m\u001b[1mGraphqlModule › can query all metadata fields from database\u001b[39m\u001b[22m\n\n SASL: SCRAM-SERVER-FIRST-MESSAGE: client password must be a string\n\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat Object.continueSession (\u001b[22m\u001b[2mnode_modules/pg/lib/sasl.js\u001b[2m:24:11)\u001b[22m\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat Client._handleAuthSASLContinue (\u001b[22m\u001b[2mnode_modules/pg/lib/client.js\u001b[2m:257:10)\u001b[22m\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat \u001b[22m\u001b[2mnode_modules/pg/lib/connection.js\u001b[2m:114:12\u001b[22m\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat Parser.parse (\u001b[22m\u001b[2mnode_modules/pg-protocol/src/parser.ts\u001b[2m:104:9)\u001b[22m\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat Socket. (\u001b[22m\u001b[2mnode_modules/pg-protocol/src/index.ts\u001b[2m:7:48)\u001b[22m\u001b[2m\u001b[22m\n\n\u001b[1m\u001b[31m \u001b[1m● \u001b[22m\u001b[1mGraphqlModule › can query all metadata fields from database\u001b[39m\u001b[22m\n\n thrown: \"Exceeded timeout of 5000 ms for a hook.\n Add a timeout value to this test to increase the timeout, if this is a long-running test. See https://jestjs.io/docs/api#testname-fn-timeout.\"\n\u001b[2m\u001b[22m\n\u001b[2m \u001b[0m \u001b[90m 68 |\u001b[39m })\u001b[33m;\u001b[39m\u001b[0m\u001b[22m\n\u001b[2m \u001b[0m \u001b[90m 69 |\u001b[39m\u001b[0m\u001b[22m\n\u001b[2m \u001b[0m\u001b[31m\u001b[1m>\u001b[22m\u001b[2m\u001b[39m\u001b[90m 70 |\u001b[39m afterEach(\u001b[36masync\u001b[39m () \u001b[33m=>\u001b[39m {\u001b[0m\u001b[22m\n\u001b[2m \u001b[0m \u001b[90m |\u001b[39m \u001b[31m\u001b[1m^\u001b[22m\u001b[2m\u001b[39m\u001b[0m\u001b[22m\n\u001b[2m \u001b[0m \u001b[90m 71 |\u001b[39m \u001b[36mawait\u001b[39m pool\u001b[33m.\u001b[39mquery(\u001b[32m`DROP TABLE subquery_1._metadata`\u001b[39m)\u001b[33m;\u001b[39m\u001b[0m\u001b[22m\n\u001b[2m \u001b[0m \u001b[90m 72 |\u001b[39m })\u001b[33m;\u001b[39m\u001b[0m\u001b[22m\n\u001b[2m \u001b[0m \u001b[90m 73 |\u001b[39m\u001b[0m\u001b[22m\n\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat \u001b[22m\u001b[2m\u001b[0m\u001b[36mpackages/query/src/graphql/graphql.test.ts\u001b[39m\u001b[0m\u001b[2m:70:3\u001b[22m\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat Object. (\u001b[22m\u001b[2m\u001b[0m\u001b[36mpackages/query/src/graphql/graphql.test.ts\u001b[39m\u001b[0m\u001b[2m:17:1)\u001b[22m\u001b[2m\u001b[22m\n\n\u001b[1m\u001b[31m \u001b[1m● \u001b[22m\u001b[1mGraphqlModule › wont resolve fields that arent allowed metadata\u001b[39m\u001b[22m\n\n SASL: SCRAM-SERVER-FIRST-MESSAGE: client password must be a string\n\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat Object.continueSession (\u001b[22m\u001b[2mnode_modules/pg/lib/sasl.js\u001b[2m:24:11)\u001b[22m\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat Client._handleAuthSASLContinue (\u001b[22m\u001b[2mnode_modules/pg/lib/client.js\u001b[2m:257:10)\u001b[22m\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat \u001b[22m\u001b[2mnode_modules/pg/lib/connection.js\u001b[2m:114:12\u001b[22m\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat Parser.parse (\u001b[22m\u001b[2mnode_modules/pg-protocol/src/parser.ts\u001b[2m:104:9)\u001b[22m\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat Socket. (\u001b[22m\u001b[2mnode_modules/pg-protocol/src/index.ts\u001b[2m:7:48)\u001b[22m\u001b[2m\u001b[22m\n\n\u001b[1m\u001b[31m \u001b[1m● \u001b[22m\u001b[1mGraphqlModule › wont resolve fields that arent allowed metadata\u001b[39m\u001b[22m\n\n thrown: \"Exceeded timeout of 5000 ms for a hook.\n Add a timeout value to this test to increase the timeout, if this is a long-running test. See https://jestjs.io/docs/api#testname-fn-timeout.\"\n\u001b[2m\u001b[22m\n\u001b[2m \u001b[0m \u001b[90m 57 |\u001b[39m }\u001b[0m\u001b[22m\n\u001b[2m \u001b[0m \u001b[90m 58 |\u001b[39m\u001b[0m\u001b[22m\n\u001b[2m \u001b[0m\u001b[31m\u001b[1m>\u001b[22m\u001b[2m\u001b[39m\u001b[90m 59 |\u001b[39m beforeEach(\u001b[36masync\u001b[39m () \u001b[33m=>\u001b[39m {\u001b[0m\u001b[22m\n\u001b[2m \u001b[0m \u001b[90m |\u001b[39m \u001b[31m\u001b[1m^\u001b[22m\u001b[2m\u001b[39m\u001b[0m\u001b[22m\n\u001b[2m \u001b[0m \u001b[90m 60 |\u001b[39m \u001b[36mawait\u001b[39m pool\u001b[33m.\u001b[39mquery(\u001b[32m`CREATE SCHEMA IF NOT EXISTS ${dbSchema}`\u001b[39m)\u001b[33m;\u001b[39m\u001b[0m\u001b[22m\n\u001b[2m \u001b[0m \u001b[90m 61 |\u001b[39m \u001b[36mawait\u001b[39m pool\u001b[33m.\u001b[39mquery(\u001b[32m`CREATE TABLE IF NOT EXISTS subquery_1._metadata (\u001b[39m\u001b[0m\u001b[22m\n\u001b[2m \u001b[0m \u001b[90m 62 |\u001b[39m \u001b[32m key character varying(255) COLLATE pg_catalog.\"default\" NOT NULL,\u001b[39m\u001b[0m\u001b[22m\n\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat \u001b[22m\u001b[2m\u001b[0m\u001b[36mpackages/query/src/graphql/graphql.test.ts\u001b[39m\u001b[0m\u001b[2m:59:3\u001b[22m\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat Object. (\u001b[22m\u001b[2m\u001b[0m\u001b[36mpackages/query/src/graphql/graphql.test.ts\u001b[39m\u001b[0m\u001b[2m:17:1)\u001b[22m\u001b[2m\u001b[22m\n\n\u001b[1m\u001b[31m \u001b[1m● \u001b[22m\u001b[1mGraphqlModule › wont resolve fields that arent allowed metadata\u001b[39m\u001b[22m\n\n SASL: SCRAM-SERVER-FIRST-MESSAGE: client password must be a string\n\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat Object.continueSession (\u001b[22m\u001b[2mnode_modules/pg/lib/sasl.js\u001b[2m:24:11)\u001b[22m\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat Client._handleAuthSASLContinue (\u001b[22m\u001b[2mnode_modules/pg/lib/client.js\u001b[2m:257:10)\u001b[22m\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat \u001b[22m\u001b[2mnode_modules/pg/lib/connection.js\u001b[2m:114:12\u001b[22m\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat Parser.parse (\u001b[22m\u001b[2mnode_modules/pg-protocol/src/parser.ts\u001b[2m:104:9)\u001b[22m\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat Socket. (\u001b[22m\u001b[2mnode_modules/pg-protocol/src/index.ts\u001b[2m:7:48)\u001b[22m\u001b[2m\u001b[22m\n\n\u001b[1m\u001b[31m \u001b[1m● \u001b[22m\u001b[1mGraphqlModule › wont resolve fields that arent allowed metadata\u001b[39m\u001b[22m\n\n thrown: \"Exceeded timeout of 5000 ms for a hook.\n Add a timeout value to this test to increase the timeout, if this is a long-running test. See https://jestjs.io/docs/api#testname-fn-timeout.\"\n\u001b[2m\u001b[22m\n\u001b[2m \u001b[0m \u001b[90m 68 |\u001b[39m })\u001b[33m;\u001b[39m\u001b[0m\u001b[22m\n\u001b[2m \u001b[0m \u001b[90m 69 |\u001b[39m\u001b[0m\u001b[22m\n\u001b[2m \u001b[0m\u001b[31m\u001b[1m>\u001b[22m\u001b[2m\u001b[39m\u001b[90m 70 |\u001b[39m afterEach(\u001b[36masync\u001b[39m () \u001b[33m=>\u001b[39m {\u001b[0m\u001b[22m\n\u001b[2m \u001b[0m \u001b[90m |\u001b[39m \u001b[31m\u001b[1m^\u001b[22m\u001b[2m\u001b[39m\u001b[0m\u001b[22m\n\u001b[2m \u001b[0m \u001b[90m 71 |\u001b[39m \u001b[36mawait\u001b[39m pool\u001b[33m.\u001b[39mquery(\u001b[32m`DROP TABLE subquery_1._metadata`\u001b[39m)\u001b[33m;\u001b[39m\u001b[0m\u001b[22m\n\u001b[2m \u001b[0m \u001b[90m 72 |\u001b[39m })\u001b[33m;\u001b[39m\u001b[0m\u001b[22m\n\u001b[2m \u001b[0m \u001b[90m 73 |\u001b[39m\u001b[0m\u001b[22m\n\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat \u001b[22m\u001b[2m\u001b[0m\u001b[36mpackages/query/src/graphql/graphql.test.ts\u001b[39m\u001b[0m\u001b[2m:70:3\u001b[22m\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat Object. (\u001b[22m\u001b[2m\u001b[0m\u001b[36mpackages/query/src/graphql/graphql.test.ts\u001b[39m\u001b[0m\u001b[2m:17:1)\u001b[22m\u001b[2m\u001b[22m\n\n\u001b[1m\u001b[31m \u001b[1m● \u001b[22m\u001b[1mGraphqlModule › resolve incorrect fields in db to null when queried from graphql\u001b[39m\u001b[22m\n\n SASL: SCRAM-SERVER-FIRST-MESSAGE: client password must be a string\n\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat Object.continueSession (\u001b[22m\u001b[2mnode_modules/pg/lib/sasl.js\u001b[2m:24:11)\u001b[22m\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat Client._handleAuthSASLContinue (\u001b[22m\u001b[2mnode_modules/pg/lib/client.js\u001b[2m:257:10)\u001b[22m\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat \u001b[22m\u001b[2mnode_modules/pg/lib/connection.js\u001b[2m:114:12\u001b[22m\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat Parser.parse (\u001b[22m\u001b[2mnode_modules/pg-protocol/src/parser.ts\u001b[2m:104:9)\u001b[22m\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat Socket. (\u001b[22m\u001b[2mnode_modules/pg-protocol/src/index.ts\u001b[2m:7:48)\u001b[22m\u001b[2m\u001b[22m\n\n\u001b[1m\u001b[31m \u001b[1m● \u001b[22m\u001b[1mGraphqlModule › resolve incorrect fields in db to null when queried from graphql\u001b[39m\u001b[22m\n\n thrown: \"Exceeded timeout of 5000 ms for a hook.\n Add a timeout value to this test to increase the timeout, if this is a long-running test. See https://jestjs.io/docs/api#testname-fn-timeout.\"\n\u001b[2m\u001b[22m\n\u001b[2m \u001b[0m \u001b[90m 57 |\u001b[39m }\u001b[0m\u001b[22m\n\u001b[2m \u001b[0m \u001b[90m 58 |\u001b[39m\u001b[0m\u001b[22m\n\u001b[2m \u001b[0m\u001b[31m\u001b[1m>\u001b[22m\u001b[2m\u001b[39m\u001b[90m 59 |\u001b[39m beforeEach(\u001b[36masync\u001b[39m () \u001b[33m=>\u001b[39m {\u001b[0m\u001b[22m\n\u001b[2m \u001b[0m \u001b[90m |\u001b[39m \u001b[31m\u001b[1m^\u001b[22m\u001b[2m\u001b[39m\u001b[0m\u001b[22m\n\u001b[2m \u001b[0m \u001b[90m 60 |\u001b[39m \u001b[36mawait\u001b[39m pool\u001b[33m.\u001b[39mquery(\u001b[32m`CREATE SCHEMA IF NOT EXISTS ${dbSchema}`\u001b[39m)\u001b[33m;\u001b[39m\u001b[0m\u001b[22m\n\u001b[2m \u001b[0m \u001b[90m 61 |\u001b[39m \u001b[36mawait\u001b[39m pool\u001b[33m.\u001b[39mquery(\u001b[32m`CREATE TABLE IF NOT EXISTS subquery_1._metadata (\u001b[39m\u001b[0m\u001b[22m\n\u001b[2m \u001b[0m \u001b[90m 62 |\u001b[39m \u001b[32m key character varying(255) COLLATE pg_catalog.\"default\" NOT NULL,\u001b[39m\u001b[0m\u001b[22m\n\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat \u001b[22m\u001b[2m\u001b[0m\u001b[36mpackages/query/src/graphql/graphql.test.ts\u001b[39m\u001b[0m\u001b[2m:59:3\u001b[22m\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat Object. (\u001b[22m\u001b[2m\u001b[0m\u001b[36mpackages/query/src/graphql/graphql.test.ts\u001b[39m\u001b[0m\u001b[2m:17:1)\u001b[22m\u001b[2m\u001b[22m\n\n\u001b[1m\u001b[31m \u001b[1m● \u001b[22m\u001b[1mGraphqlModule › resolve incorrect fields in db to null when queried from graphql\u001b[39m\u001b[22m\n\n SASL: SCRAM-SERVER-FIRST-MESSAGE: client password must be a string\n\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat Object.continueSession (\u001b[22m\u001b[2mnode_modules/pg/lib/sasl.js\u001b[2m:24:11)\u001b[22m\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat Client._handleAuthSASLContinue (\u001b[22m\u001b[2mnode_modules/pg/lib/client.js\u001b[2m:257:10)\u001b[22m\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat \u001b[22m\u001b[2mnode_modules/pg/lib/connection.js\u001b[2m:114:12\u001b[22m\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat Parser.parse (\u001b[22m\u001b[2mnode_modules/pg-protocol/src/parser.ts\u001b[2m:104:9)\u001b[22m\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat Socket. (\u001b[22m\u001b[2mnode_modules/pg-protocol/src/index.ts\u001b[2m:7:48)\u001b[22m\u001b[2m\u001b[22m\n\n\u001b[1m\u001b[31m \u001b[1m● \u001b[22m\u001b[1mGraphqlModule › resolve incorrect fields in db to null when queried from graphql\u001b[39m\u001b[22m\n\n thrown: \"Exceeded timeout of 5000 ms for a hook.\n Add a timeout value to this test to increase the timeout, if this is a long-running test. See https://jestjs.io/docs/api#testname-fn-timeout.\"\n\u001b[2m\u001b[22m\n\u001b[2m \u001b[0m \u001b[90m 68 |\u001b[39m })\u001b[33m;\u001b[39m\u001b[0m\u001b[22m\n\u001b[2m \u001b[0m \u001b[90m 69 |\u001b[39m\u001b[0m\u001b[22m\n\u001b[2m \u001b[0m\u001b[31m\u001b[1m>\u001b[22m\u001b[2m\u001b[39m\u001b[90m 70 |\u001b[39m afterEach(\u001b[36masync\u001b[39m () \u001b[33m=>\u001b[39m {\u001b[0m\u001b[22m\n\u001b[2m \u001b[0m \u001b[90m |\u001b[39m \u001b[31m\u001b[1m^\u001b[22m\u001b[2m\u001b[39m\u001b[0m\u001b[22m\n\u001b[2m \u001b[0m \u001b[90m 71 |\u001b[39m \u001b[36mawait\u001b[39m pool\u001b[33m.\u001b[39mquery(\u001b[32m`DROP TABLE subquery_1._metadata`\u001b[39m)\u001b[33m;\u001b[39m\u001b[0m\u001b[22m\n\u001b[2m \u001b[0m \u001b[90m 72 |\u001b[39m })\u001b[33m;\u001b[39m\u001b[0m\u001b[22m\n\u001b[2m \u001b[0m \u001b[90m 73 |\u001b[39m\u001b[0m\u001b[22m\n\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat \u001b[22m\u001b[2m\u001b[0m\u001b[36mpackages/query/src/graphql/graphql.test.ts\u001b[39m\u001b[0m\u001b[2m:70:3\u001b[22m\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat Object. (\u001b[22m\u001b[2m\u001b[0m\u001b[36mpackages/query/src/graphql/graphql.test.ts\u001b[39m\u001b[0m\u001b[2m:17:1)\u001b[22m\u001b[2m\u001b[22m\n\n\n \u001b[1m● \u001b[22mTest suite failed to run\n\n thrown: \"Exceeded timeout of 5000 ms for a hook.\n Add a timeout value to this test to increase the timeout, if this is a long-running test. See https://jestjs.io/docs/api#testname-fn-timeout.\"\n\n \u001b[0m \u001b[90m 72 |\u001b[39m })\u001b[33m;\u001b[39m\u001b[0m\n \u001b[0m \u001b[90m 73 |\u001b[39m\u001b[0m\n \u001b[0m\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 74 |\u001b[39m afterAll(\u001b[36masync\u001b[39m () \u001b[33m=>\u001b[39m {\u001b[0m\n \u001b[0m \u001b[90m |\u001b[39m \u001b[31m\u001b[1m^\u001b[22m\u001b[39m\u001b[0m\n \u001b[0m \u001b[90m 75 |\u001b[39m \u001b[36mawait\u001b[39m pool\u001b[33m.\u001b[39mend()\u001b[33m;\u001b[39m\u001b[0m\n \u001b[0m \u001b[90m 76 |\u001b[39m })\u001b[33m;\u001b[39m\u001b[0m\n \u001b[0m \u001b[90m 77 |\u001b[39m\u001b[0m\n\n \u001b[2mat \u001b[22mpackages/query/src/graphql/graphql.test.ts\u001b[2m:74:3\u001b[22m\n \u001b[2mat Object. (\u001b[22mpackages/query/src/graphql/graphql.test.ts\u001b[2m:17:1)\u001b[22m\n","name":"/Users/scotttwiname/Projects/subql-main/packages/query/src/graphql/graphql.test.ts","startTime":1710904328682,"status":"failed","summary":""},{"assertionResults":[{"ancestorTitles":["Store service integration test"],"duration":11683,"failureDetails":[],"failureMessages":[],"fullName":"Store service integration test Correct db sync on historical project","invocations":1,"location":{"column":3,"line":52},"numPassingAsserts":5,"retryReasons":[],"status":"passed","title":"Correct db sync on historical project"},{"ancestorTitles":["Store service integration test"],"duration":10143,"failureDetails":[],"failureMessages":[],"fullName":"Store service integration test Correct db sync on non-historical","invocations":1,"location":{"column":3,"line":153},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"Correct db sync on non-historical"},{"ancestorTitles":["Store service integration test"],"duration":9174,"failureDetails":[],"failureMessages":[],"fullName":"Store service integration test Cyclic relations on non-historical","invocations":1,"location":{"column":3,"line":223},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"Cyclic relations on non-historical"},{"ancestorTitles":["Store service integration test"],"duration":9386,"failureDetails":[],"failureMessages":[],"fullName":"Store service integration test Init with enums","invocations":1,"location":{"column":3,"line":267},"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"Init with enums"},{"ancestorTitles":["Store service integration test"],"duration":10694,"failureDetails":[],"failureMessages":[],"fullName":"Store service integration test Able to drop notification triggers and functions","invocations":1,"location":{"column":3,"line":298},"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"Able to drop notification triggers and functions"}],"endTime":1710903767918,"message":"","name":"/Users/scotttwiname/Projects/subql-main/packages/node/src/indexer/store.service.test.ts","startTime":1710903714893,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["Fetch Service"],"duration":2,"failureDetails":[],"failureMessages":[],"fullName":"Fetch Service calls the preHookLoop when init is called","invocations":1,"location":{"column":3,"line":181},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"calls the preHookLoop when init is called"},{"ancestorTitles":["Fetch Service"],"duration":3,"failureDetails":[],"failureMessages":[],"fullName":"Fetch Service adds bypassBlocks for empty datasources","invocations":1,"location":{"column":3,"line":189},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"adds bypassBlocks for empty datasources"},{"ancestorTitles":["Fetch Service"],"duration":153,"failureDetails":[],"failureMessages":[],"fullName":"Fetch Service checks chain heads at an interval","invocations":1,"location":{"column":3,"line":241},"numPassingAsserts":5,"retryReasons":[],"status":"passed","title":"checks chain heads at an interval"},{"ancestorTitles":["Fetch Service"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"Fetch Service enqueues blocks WITHOUT dictionary","invocations":1,"location":{"column":3,"line":259},"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"enqueues blocks WITHOUT dictionary"},{"ancestorTitles":["Fetch Service"],"duration":3002,"failureDetails":[],"failureMessages":[],"fullName":"Fetch Service enqueues blocks WITH valid dictionary results","invocations":1,"location":{"column":3,"line":270},"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"enqueues blocks WITH valid dictionary results"},{"ancestorTitles":["Fetch Service"],"duration":3003,"failureDetails":[],"failureMessages":[],"fullName":"Fetch Service skips the dictionary","invocations":1,"location":{"column":3,"line":282},"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"skips the dictionary"},{"ancestorTitles":["Fetch Service"],"duration":5004,"failureDetails":[],"failureMessages":[],"fullName":"Fetch Service updates the last processed height if the dictionary result is empty","invocations":1,"location":{"column":3,"line":297},"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"updates the last processed height if the dictionary result is empty"},{"ancestorTitles":["Fetch Service"],"duration":2006,"failureDetails":[],"failureMessages":[],"fullName":"Fetch Service waits for blockDispatcher to have capacity","invocations":1,"location":{"column":3,"line":326},"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"waits for blockDispatcher to have capacity"},{"ancestorTitles":["Fetch Service"],"duration":3008,"failureDetails":[],"failureMessages":[],"fullName":"Fetch Service enqueues modulo blocks WITHOUT dictionary","invocations":1,"location":{"column":3,"line":348},"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"enqueues modulo blocks WITHOUT dictionary"},{"ancestorTitles":["Fetch Service"],"duration":3003,"failureDetails":[],"failureMessages":[],"fullName":"Fetch Service enqueues modulo blocks WITH dictionary","invocations":1,"location":{"column":3,"line":361},"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"enqueues modulo blocks WITH dictionary"},{"ancestorTitles":["Fetch Service"],"duration":3010,"failureDetails":[],"failureMessages":[],"fullName":"Fetch Service update the LatestBufferHeight when modulo blocks full synced","invocations":1,"location":{"column":3,"line":377},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"update the LatestBufferHeight when modulo blocks full synced"},{"ancestorTitles":["Fetch Service"],"duration":3020,"failureDetails":[],"failureMessages":[],"fullName":"Fetch Service skips bypassBlocks","invocations":1,"location":{"column":3,"line":391},"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"skips bypassBlocks"},{"ancestorTitles":["Fetch Service"],"duration":3002,"failureDetails":[],"failureMessages":[],"fullName":"Fetch Service transforms bypassBlocks","invocations":1,"location":{"column":3,"line":405},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"transforms bypassBlocks"},{"ancestorTitles":["Fetch Service"],"duration":3002,"failureDetails":[],"failureMessages":[],"fullName":"Fetch Service dictionary page limited result and modulo block enqueues correct blocks","invocations":1,"location":{"column":3,"line":422},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"dictionary page limited result and modulo block enqueues correct blocks"},{"ancestorTitles":["Fetch Service"],"duration":3004,"failureDetails":[],"failureMessages":[],"fullName":"Fetch Service dictionary dictionary queries to be limited to target block height (finalized/latest depending on settings)","invocations":1,"location":{"column":3,"line":447},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"dictionary dictionary queries to be limited to target block height (finalized/latest depending on settings)"},{"ancestorTitles":["Fetch Service"],"duration":24,"failureDetails":[],"failureMessages":[],"fullName":"Fetch Service throws if the start block is greater than the chain latest height","invocations":1,"location":{"column":3,"line":467},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"throws if the start block is greater than the chain latest height"}],"endTime":1710903768499,"message":"","name":"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/indexer/fetch.service.spec.ts","startTime":1710903731787,"status":"passed","summary":""},{"assertionResults":[],"coverage":{},"endTime":1710904328682,"message":" \u001b[1m● \u001b[22mTest suite failed to run\n\n Jest worker encountered 4 child process exceptions, exceeding retry limit\n\n \u001b[2mat ChildProcessWorker.initialize (\u001b[22mnode_modules/jest-worker/build/workers/ChildProcessWorker.js\u001b[2m:181:21)\u001b[22m\n","name":"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/indexer/connectionPool.service.spec.ts","startTime":1710904328682,"status":"failed","summary":""},{"assertionResults":[{"ancestorTitles":["GraphqlTypes"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"GraphqlTypes Supports arrays of primitives","invocations":1,"location":{"column":3,"line":117},"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"Supports arrays of primitives"},{"ancestorTitles":["GraphqlTypes"],"duration":2,"failureDetails":[],"failureMessages":[],"fullName":"GraphqlTypes Throws arrays of non-primitives","invocations":1,"location":{"column":3,"line":125},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"Throws arrays of non-primitives"},{"ancestorTitles":["GraphqlTypes"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"GraphqlTypes Throws with empty arrays","invocations":1,"location":{"column":3,"line":129},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"Throws with empty arrays"},{"ancestorTitles":["Dictionary V1","coreDictionary"],"duration":1526,"failureDetails":[],"failureMessages":[],"fullName":"Dictionary V1 coreDictionary set startHeight of this dictionary","invocations":1,"location":{"column":5,"line":175},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"set startHeight of this dictionary"},{"ancestorTitles":["Dictionary V1","coreDictionary"],"duration":1668,"failureDetails":[],"failureMessages":[],"fullName":"Dictionary V1 coreDictionary validateChainMeta and useDictionary","invocations":1,"location":{"column":5,"line":180},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"validateChainMeta and useDictionary"},{"ancestorTitles":["Dictionary V1","coreDictionary"],"duration":1397,"failureDetails":[],"failureMessages":[],"fullName":"Dictionary V1 coreDictionary validate dictionary with a height","invocations":1,"location":{"column":5,"line":184},"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"validate dictionary with a height"},{"ancestorTitles":["Dictionary V1","coreDictionary"],"duration":1422,"failureDetails":[],"failureMessages":[],"fullName":"Dictionary V1 coreDictionary able to build queryEntryMap","invocations":1,"location":{"column":5,"line":190},"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"able to build queryEntryMap"},{"ancestorTitles":["Dictionary V1","coreDictionary"],"duration":4596,"failureDetails":[],"failureMessages":[],"fullName":"Dictionary V1 coreDictionary can use scoped dictionary query","invocations":1,"location":{"column":5,"line":200},"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"can use scoped dictionary query"},{"ancestorTitles":["Dictionary V1","coreDictionary"],"duration":1653,"failureDetails":[],"failureMessages":[],"fullName":"Dictionary V1 coreDictionary able to getDicitonaryQueryEntries","invocations":1,"location":{"column":5,"line":211},"numPassingAsserts":4,"retryReasons":[],"status":"passed","title":"able to getDicitonaryQueryEntries"},{"ancestorTitles":["Dictionary V1"],"duration":1508,"failureDetails":[],"failureMessages":[],"fullName":"Dictionary V1 get metadata","invocations":1,"location":{"column":3,"line":250},"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"get metadata"},{"ancestorTitles":["Dictionary V1"],"duration":2947,"failureDetails":[],"failureMessages":[],"fullName":"Dictionary V1 init metadata and get metadata","invocations":1,"location":{"column":3,"line":256},"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"init metadata and get metadata"},{"ancestorTitles":["Dictionary V1"],"duration":2936,"failureDetails":[],"failureMessages":[],"fullName":"Dictionary V1 return dictionary query result","invocations":1,"location":{"column":3,"line":265},"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"return dictionary query result"},{"ancestorTitles":["Dictionary V1"],"duration":2902,"failureDetails":[],"failureMessages":[],"fullName":"Dictionary V1 should return undefined startblock height greater than dictionary last processed height","invocations":1,"location":{"column":3,"line":274},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should return undefined startblock height greater than dictionary last processed height"},{"ancestorTitles":["Dictionary V1"],"duration":1443,"failureDetails":[],"failureMessages":[],"fullName":"Dictionary V1 should use metadata last process height at end of query height","invocations":1,"location":{"column":3,"line":282},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should use metadata last process height at end of query height"},{"ancestorTitles":["Individual dictionary V1 test"],"duration":618,"failureDetails":[],"failureMessages":[],"fullName":"Individual dictionary V1 test return undefined when dictionary api failed","invocations":1,"location":{"column":3,"line":293},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"return undefined when dictionary api failed"},{"ancestorTitles":["Individual dictionary V1 test"],"duration":2949,"failureDetails":[],"failureMessages":[],"fullName":"Individual dictionary V1 test limits the dictionary query to that block range","invocations":1,"location":{"column":3,"line":314},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"limits the dictionary query to that block range"},{"ancestorTitles":["Individual dictionary V1 test"],"duration":3119,"failureDetails":[],"failureMessages":[],"fullName":"Individual dictionary V1 test test query the correct range","invocations":1,"location":{"column":3,"line":336},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"test query the correct range"},{"ancestorTitles":["Individual dictionary V1 test"],"duration":3158,"failureDetails":[],"failureMessages":[],"fullName":"Individual dictionary V1 test use minimum value of event/extrinsic returned block as batch end block","invocations":1,"location":{"column":3,"line":356},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"use minimum value of event/extrinsic returned block as batch end block"}],"endTime":1710903804285,"message":"","name":"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/indexer/dictionary/v1/dictionaryV1.spec.ts","startTime":1710903768679,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["GraphqlTypes"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"GraphqlTypes Supports arrays of primitives","invocations":1,"location":{"column":3,"line":117},"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"Supports arrays of primitives"},{"ancestorTitles":["GraphqlTypes"],"duration":2,"failureDetails":[],"failureMessages":[],"fullName":"GraphqlTypes Throws arrays of non-primitives","invocations":1,"location":{"column":3,"line":125},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"Throws arrays of non-primitives"},{"ancestorTitles":["GraphqlTypes"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"GraphqlTypes Throws with empty arrays","invocations":1,"location":{"column":3,"line":129},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"Throws with empty arrays"},{"ancestorTitles":["Dictionary V1","coreDictionary"],"duration":2252,"failureDetails":[],"failureMessages":[],"fullName":"Dictionary V1 coreDictionary set startHeight of this dictionary","invocations":1,"location":{"column":5,"line":175},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"set startHeight of this dictionary"},{"ancestorTitles":["Dictionary V1","coreDictionary"],"duration":1477,"failureDetails":[],"failureMessages":[],"fullName":"Dictionary V1 coreDictionary validateChainMeta and useDictionary","invocations":1,"location":{"column":5,"line":180},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"validateChainMeta and useDictionary"},{"ancestorTitles":["Dictionary V1","coreDictionary"],"duration":10011,"failureDetails":[{"matcherResult":{"message":"\u001b[2mexpect(\u001b[22m\u001b[31mreceived\u001b[39m\u001b[2m).\u001b[22mtoBeTruthy\u001b[2m()\u001b[22m\n\nReceived: \u001b[31mfalse\u001b[39m","pass":false}}],"failureMessages":["Error: \u001b[2mexpect(\u001b[22m\u001b[31mreceived\u001b[39m\u001b[2m).\u001b[22mtoBeTruthy\u001b[2m()\u001b[22m\n\nReceived: \u001b[31mfalse\u001b[39m\n at Object. (/Users/scotttwiname/Projects/subql-main/packages/node-core/src/indexer/dictionary/v1/dictionaryV1.spec.ts:185:48)\n at Promise.then.completed (/Users/scotttwiname/Projects/subql-main/node_modules/jest-circus/build/utils.js:293:28)\n at new Promise ()\n at callAsyncCircusFn (/Users/scotttwiname/Projects/subql-main/node_modules/jest-circus/build/utils.js:226:10)\n at _callCircusTest (/Users/scotttwiname/Projects/subql-main/node_modules/jest-circus/build/run.js:297:40)\n at _runTest (/Users/scotttwiname/Projects/subql-main/node_modules/jest-circus/build/run.js:233:3)\n at _runTestsForDescribeBlock (/Users/scotttwiname/Projects/subql-main/node_modules/jest-circus/build/run.js:135:9)\n at _runTestsForDescribeBlock (/Users/scotttwiname/Projects/subql-main/node_modules/jest-circus/build/run.js:130:9)\n at _runTestsForDescribeBlock (/Users/scotttwiname/Projects/subql-main/node_modules/jest-circus/build/run.js:130:9)\n at run (/Users/scotttwiname/Projects/subql-main/node_modules/jest-circus/build/run.js:68:3)\n at runAndTransformResultsToJestFormat (/Users/scotttwiname/Projects/subql-main/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapterInit.js:122:21)\n at jestAdapter (/Users/scotttwiname/Projects/subql-main/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapter.js:79:19)\n at runTestInternal (/Users/scotttwiname/Projects/subql-main/node_modules/jest-runner/build/runTest.js:367:16)\n at runTest (/Users/scotttwiname/Projects/subql-main/node_modules/jest-runner/build/runTest.js:444:34)\n at Object.worker (/Users/scotttwiname/Projects/subql-main/node_modules/jest-runner/build/testWorker.js:106:12)"],"fullName":"Dictionary V1 coreDictionary validate dictionary with a height","invocations":1,"location":{"column":5,"line":184},"numPassingAsserts":0,"retryReasons":[],"status":"failed","title":"validate dictionary with a height"},{"ancestorTitles":["Dictionary V1","coreDictionary"],"duration":1420,"failureDetails":[],"failureMessages":[],"fullName":"Dictionary V1 coreDictionary able to build queryEntryMap","invocations":1,"location":{"column":5,"line":190},"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"able to build queryEntryMap"},{"ancestorTitles":["Dictionary V1","coreDictionary"],"duration":4622,"failureDetails":[],"failureMessages":[],"fullName":"Dictionary V1 coreDictionary can use scoped dictionary query","invocations":1,"location":{"column":5,"line":200},"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"can use scoped dictionary query"},{"ancestorTitles":["Dictionary V1","coreDictionary"],"duration":1441,"failureDetails":[],"failureMessages":[],"fullName":"Dictionary V1 coreDictionary able to getDicitonaryQueryEntries","invocations":1,"location":{"column":5,"line":211},"numPassingAsserts":4,"retryReasons":[],"status":"passed","title":"able to getDicitonaryQueryEntries"},{"ancestorTitles":["Dictionary V1"],"duration":1456,"failureDetails":[],"failureMessages":[],"fullName":"Dictionary V1 get metadata","invocations":1,"location":{"column":3,"line":250},"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"get metadata"},{"ancestorTitles":["Dictionary V1"],"duration":11793,"failureDetails":[],"failureMessages":[],"fullName":"Dictionary V1 init metadata and get metadata","invocations":1,"location":{"column":3,"line":256},"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"init metadata and get metadata"},{"ancestorTitles":["Dictionary V1"],"duration":3013,"failureDetails":[],"failureMessages":[],"fullName":"Dictionary V1 return dictionary query result","invocations":1,"location":{"column":3,"line":265},"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"return dictionary query result"},{"ancestorTitles":["Dictionary V1"],"duration":2896,"failureDetails":[],"failureMessages":[],"fullName":"Dictionary V1 should return undefined startblock height greater than dictionary last processed height","invocations":1,"location":{"column":3,"line":274},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should return undefined startblock height greater than dictionary last processed height"},{"ancestorTitles":["Dictionary V1"],"duration":1509,"failureDetails":[],"failureMessages":[],"fullName":"Dictionary V1 should use metadata last process height at end of query height","invocations":1,"location":{"column":3,"line":282},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should use metadata last process height at end of query height"},{"ancestorTitles":["Individual dictionary V1 test"],"duration":671,"failureDetails":[],"failureMessages":[],"fullName":"Individual dictionary V1 test return undefined when dictionary api failed","invocations":1,"location":{"column":3,"line":293},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"return undefined when dictionary api failed"},{"ancestorTitles":["Individual dictionary V1 test"],"duration":2893,"failureDetails":[],"failureMessages":[],"fullName":"Individual dictionary V1 test limits the dictionary query to that block range","invocations":1,"location":{"column":3,"line":314},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"limits the dictionary query to that block range"},{"ancestorTitles":["Individual dictionary V1 test"],"duration":3221,"failureDetails":[],"failureMessages":[],"fullName":"Individual dictionary V1 test test query the correct range","invocations":1,"location":{"column":3,"line":336},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"test query the correct range"},{"ancestorTitles":["Individual dictionary V1 test"],"duration":11508,"failureDetails":[],"failureMessages":[],"fullName":"Individual dictionary V1 test use minimum value of event/extrinsic returned block as batch end block","invocations":1,"location":{"column":3,"line":356},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"use minimum value of event/extrinsic returned block as batch end block"},{"ancestorTitles":["Individual dictionary V2 test"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"Individual dictionary V2 test can init metadata and set start height","invocations":1,"location":{"column":3,"line":60},"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"can init metadata and set start height"},{"ancestorTitles":["Individual dictionary V2 test"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"Individual dictionary V2 test should get correct getQueryEndBlock","invocations":1,"location":{"column":3,"line":66},"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should get correct getQueryEndBlock"},{"ancestorTitles":["Individual dictionary V2 test"],"duration":7,"failureDetails":[],"failureMessages":[],"fullName":"Individual dictionary V2 test can get data","invocations":1,"location":{"column":3,"line":77},"numPassingAsserts":4,"retryReasons":[],"status":"passed","title":"can get data"},{"ancestorTitles":["Individual dictionary V2 test"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"Individual dictionary V2 test can determine current dictionary query map is valid with block height","invocations":1,"location":{"column":3,"line":115},"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"can determine current dictionary query map is valid with block height"},{"ancestorTitles":["Individual dictionary V2 test"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"Individual dictionary V2 test should able to handle convertResponseBlocks return empty array blocks and lastBufferedHeight is undefined","invocations":1,"location":{"column":3,"line":122},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should able to handle convertResponseBlocks return empty array blocks and lastBufferedHeight is undefined"},{"ancestorTitles":["determine dictionary V2 version"],"duration":443,"failureDetails":[],"failureMessages":[],"fullName":"determine dictionary V2 version if not supported dictionary endpoint, v2 should throw error if init failed","invocations":1,"location":{"column":3,"line":154},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"if not supported dictionary endpoint, v2 should throw error if init failed"},{"ancestorTitles":[],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"in getData, should hex number correctly","invocations":1,"location":{"column":1,"line":165},"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"in getData, should hex number correctly"},{"ancestorTitles":["Dictionary service"],"duration":7142,"failureDetails":[],"failureMessages":[],"fullName":"Dictionary service can use the dictionary registry to resolve a url","invocations":1,"location":{"column":3,"line":62},"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"can use the dictionary registry to resolve a url"},{"ancestorTitles":["Dictionary service"],"duration":930,"failureDetails":[],"failureMessages":[],"fullName":"Dictionary service init Dictionaries with mutiple endpoints, can be valid and non-valid","invocations":1,"location":{"column":3,"line":80},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"init Dictionaries with mutiple endpoints, can be valid and non-valid"},{"ancestorTitles":["Dictionary service"],"duration":1110,"failureDetails":[],"failureMessages":[],"fullName":"Dictionary service can find valid dictionary with height","invocations":1,"location":{"column":3,"line":84},"numPassingAsserts":5,"retryReasons":[],"status":"passed","title":"can find valid dictionary with height"},{"ancestorTitles":["Dictionary service"],"duration":1271,"failureDetails":[],"failureMessages":[],"fullName":"Dictionary service scopedDictionaryEntries, dictionary get data should be called","invocations":1,"location":{"column":3,"line":100},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"scopedDictionaryEntries, dictionary get data should be called"},{"ancestorTitles":["Dictionary service"],"duration":1271,"failureDetails":[],"failureMessages":[],"fullName":"Dictionary service scopedDictionaryEntries, if query failed/timeout, should try next valid dictionary for query","invocations":1,"location":{"column":3,"line":109},"numPassingAsserts":4,"retryReasons":[],"status":"passed","title":"scopedDictionaryEntries, if query failed/timeout, should try next valid dictionary for query"},{"ancestorTitles":["Dictionary service"],"duration":902,"failureDetails":[],"failureMessages":[],"fullName":"Dictionary service tried all dictionaries but all failed will return undefined","invocations":1,"location":{"column":3,"line":135},"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"tried all dictionaries but all failed will return undefined"}],"endTime":1710903807999,"message":"\u001b[1m\u001b[31m \u001b[1m● \u001b[22m\u001b[1mDictionary V1 › coreDictionary › validate dictionary with a height\u001b[39m\u001b[22m\n\n \u001b[2mexpect(\u001b[22m\u001b[31mreceived\u001b[39m\u001b[2m).\u001b[22mtoBeTruthy\u001b[2m()\u001b[22m\n\n Received: \u001b[31mfalse\u001b[39m\n\u001b[2m\u001b[22m\n\u001b[2m \u001b[0m \u001b[90m 183 |\u001b[39m\u001b[0m\u001b[22m\n\u001b[2m \u001b[0m \u001b[90m 184 |\u001b[39m it(\u001b[32m'validate dictionary with a height'\u001b[39m\u001b[33m,\u001b[39m () \u001b[33m=>\u001b[39m {\u001b[0m\u001b[22m\n\u001b[2m \u001b[0m\u001b[31m\u001b[1m>\u001b[22m\u001b[2m\u001b[39m\u001b[90m 185 |\u001b[39m expect(dictionary\u001b[33m.\u001b[39mheightValidation(\u001b[35m100\u001b[39m))\u001b[33m.\u001b[39mtoBeTruthy()\u001b[33m;\u001b[39m\u001b[0m\u001b[22m\n\u001b[2m \u001b[0m \u001b[90m |\u001b[39m \u001b[31m\u001b[1m^\u001b[22m\u001b[2m\u001b[39m\u001b[0m\u001b[22m\n\u001b[2m \u001b[0m \u001b[90m 186 |\u001b[39m \u001b[36mconst\u001b[39m beyond500 \u001b[33m=\u001b[39m (dictionary \u001b[36mas\u001b[39m any)\u001b[33m.\u001b[39mmetadata\u001b[33m.\u001b[39mlastProcessedHeight \u001b[33m+\u001b[39m \u001b[35m500\u001b[39m\u001b[33m;\u001b[39m\u001b[0m\u001b[22m\n\u001b[2m \u001b[0m \u001b[90m 187 |\u001b[39m expect(dictionary\u001b[33m.\u001b[39mheightValidation(beyond500))\u001b[33m.\u001b[39mtoBeFalsy()\u001b[33m;\u001b[39m\u001b[0m\u001b[22m\n\u001b[2m \u001b[0m \u001b[90m 188 |\u001b[39m })\u001b[33m;\u001b[39m\u001b[0m\u001b[22m\n\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat Object. (\u001b[22m\u001b[2mpackages/node-core/src/indexer/dictionary/v1/dictionaryV1.spec.ts\u001b[2m:185:48)\u001b[22m\u001b[2m\u001b[22m\n","name":"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/indexer/dictionary/dictionary.service.spec.ts","startTime":1710903731427,"status":"failed","summary":""},{"assertionResults":[{"ancestorTitles":["AutoQueue"],"duration":1116,"failureDetails":[],"failureMessages":[],"fullName":"AutoQueue resovles promises in the order they are pushed","invocations":1,"location":{"column":3,"line":7},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"resovles promises in the order they are pushed"},{"ancestorTitles":["AutoQueue"],"duration":1111,"failureDetails":[],"failureMessages":[],"fullName":"AutoQueue doesnt resolve tasks if flush is called","invocations":1,"location":{"column":3,"line":29},"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"doesnt resolve tasks if flush is called"},{"ancestorTitles":["AutoQueue"],"duration":202,"failureDetails":[],"failureMessages":[],"fullName":"AutoQueue has a cap on the number of out of order tasks","invocations":1,"location":{"column":3,"line":66},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"has a cap on the number of out of order tasks"},{"ancestorTitles":["AutoQueue"],"duration":705,"failureDetails":[],"failureMessages":[],"fullName":"AutoQueue can adjust the parallelism while running","invocations":1,"location":{"column":3,"line":89},"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"can adjust the parallelism while running"},{"ancestorTitles":["AutoQueue"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"AutoQueue includes running tasks in the size and free space","invocations":1,"location":{"column":3,"line":130},"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"includes running tasks in the size and free space"},{"ancestorTitles":["AutoQueue"],"duration":504,"failureDetails":[],"failureMessages":[],"fullName":"AutoQueue resumes after flushing","invocations":1,"location":{"column":3,"line":154},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"resumes after flushing"}],"endTime":1710903813503,"message":"","name":"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/utils/autoQueue.spec.ts","startTime":1710903808140,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["Substrate DictionaryService"],"duration":13387,"failureDetails":[],"failureMessages":[],"fullName":"Substrate DictionaryService should return all specVersion","invocations":1,"location":{"column":3,"line":41},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should return all specVersion"},{"ancestorTitles":["Building dictionary query entries"],"duration":7,"failureDetails":[],"failureMessages":[],"fullName":"Building dictionary query entries supports block handlers","invocations":1,"location":{"column":3,"line":88},"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"supports block handlers"},{"ancestorTitles":["Building dictionary query entries"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"Building dictionary query entries supports block handlers with modulo filter","invocations":1,"location":{"column":3,"line":109},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"supports block handlers with modulo filter"},{"ancestorTitles":["Building dictionary query entries"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"Building dictionary query entries supports any handler with no filters","invocations":1,"location":{"column":3,"line":138},"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"supports any handler with no filters"},{"ancestorTitles":["Building dictionary query entries"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"Building dictionary query entries supports custom ds processors","invocations":1,"location":{"column":3,"line":152},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"supports custom ds processors"}],"endTime":1710903820165,"message":"","name":"/Users/scotttwiname/Projects/subql-main/packages/node/src/indexer/dictionary/v1/substrateDictionaryV1.spec.ts","startTime":1710903804493,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["GraphqlTypes"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"GraphqlTypes Supports arrays of primitives","invocations":1,"location":{"column":3,"line":117},"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"Supports arrays of primitives"},{"ancestorTitles":["GraphqlTypes"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"GraphqlTypes Throws arrays of non-primitives","invocations":1,"location":{"column":3,"line":125},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"Throws arrays of non-primitives"},{"ancestorTitles":["GraphqlTypes"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"GraphqlTypes Throws with empty arrays","invocations":1,"location":{"column":3,"line":129},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"Throws with empty arrays"},{"ancestorTitles":["Dictionary V1","coreDictionary"],"duration":10010,"failureDetails":[],"failureMessages":[],"fullName":"Dictionary V1 coreDictionary set startHeight of this dictionary","invocations":1,"location":{"column":5,"line":175},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"set startHeight of this dictionary"},{"ancestorTitles":["Dictionary V1","coreDictionary"],"duration":10007,"failureDetails":[{}],"failureMessages":["Error: Dictionary metadata hasn't been initialized\n at TestDictionaryV1.get metadata [as metadata] (/Users/scotttwiname/Projects/subql-main/packages/node-core/src/indexer/dictionary/coreDictionary.ts:44:13)\n at Object. (/Users/scotttwiname/Projects/subql-main/packages/node-core/src/indexer/dictionary/v1/dictionaryV1.spec.ts:181:72)\n at Promise.then.completed (/Users/scotttwiname/Projects/subql-main/node_modules/jest-circus/build/utils.js:293:28)\n at new Promise ()\n at callAsyncCircusFn (/Users/scotttwiname/Projects/subql-main/node_modules/jest-circus/build/utils.js:226:10)\n at _callCircusTest (/Users/scotttwiname/Projects/subql-main/node_modules/jest-circus/build/run.js:297:40)\n at _runTest (/Users/scotttwiname/Projects/subql-main/node_modules/jest-circus/build/run.js:233:3)\n at _runTestsForDescribeBlock (/Users/scotttwiname/Projects/subql-main/node_modules/jest-circus/build/run.js:135:9)\n at _runTestsForDescribeBlock (/Users/scotttwiname/Projects/subql-main/node_modules/jest-circus/build/run.js:130:9)\n at _runTestsForDescribeBlock (/Users/scotttwiname/Projects/subql-main/node_modules/jest-circus/build/run.js:130:9)\n at run (/Users/scotttwiname/Projects/subql-main/node_modules/jest-circus/build/run.js:68:3)\n at runAndTransformResultsToJestFormat (/Users/scotttwiname/Projects/subql-main/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapterInit.js:122:21)\n at jestAdapter (/Users/scotttwiname/Projects/subql-main/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapter.js:79:19)\n at runTestInternal (/Users/scotttwiname/Projects/subql-main/node_modules/jest-runner/build/runTest.js:367:16)\n at runTest (/Users/scotttwiname/Projects/subql-main/node_modules/jest-runner/build/runTest.js:444:34)\n at Object.worker (/Users/scotttwiname/Projects/subql-main/node_modules/jest-runner/build/testWorker.js:106:12)"],"fullName":"Dictionary V1 coreDictionary validateChainMeta and useDictionary","invocations":1,"location":{"column":5,"line":180},"numPassingAsserts":0,"retryReasons":[],"status":"failed","title":"validateChainMeta and useDictionary"},{"ancestorTitles":["Dictionary V1","coreDictionary"],"duration":1510,"failureDetails":[],"failureMessages":[],"fullName":"Dictionary V1 coreDictionary validate dictionary with a height","invocations":1,"location":{"column":5,"line":184},"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"validate dictionary with a height"},{"ancestorTitles":["Dictionary V1","coreDictionary"],"duration":1467,"failureDetails":[],"failureMessages":[],"fullName":"Dictionary V1 coreDictionary able to build queryEntryMap","invocations":1,"location":{"column":5,"line":190},"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"able to build queryEntryMap"},{"ancestorTitles":["Dictionary V1","coreDictionary"],"duration":4489,"failureDetails":[],"failureMessages":[],"fullName":"Dictionary V1 coreDictionary can use scoped dictionary query","invocations":1,"location":{"column":5,"line":200},"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"can use scoped dictionary query"},{"ancestorTitles":["Dictionary V1","coreDictionary"],"duration":1770,"failureDetails":[],"failureMessages":[],"fullName":"Dictionary V1 coreDictionary able to getDicitonaryQueryEntries","invocations":1,"location":{"column":5,"line":211},"numPassingAsserts":4,"retryReasons":[],"status":"passed","title":"able to getDicitonaryQueryEntries"},{"ancestorTitles":["Dictionary V1"],"duration":1479,"failureDetails":[],"failureMessages":[],"fullName":"Dictionary V1 get metadata","invocations":1,"location":{"column":3,"line":250},"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"get metadata"},{"ancestorTitles":["Dictionary V1"],"duration":3031,"failureDetails":[],"failureMessages":[],"fullName":"Dictionary V1 init metadata and get metadata","invocations":1,"location":{"column":3,"line":256},"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"init metadata and get metadata"},{"ancestorTitles":["Dictionary V1"],"duration":3755,"failureDetails":[],"failureMessages":[],"fullName":"Dictionary V1 return dictionary query result","invocations":1,"location":{"column":3,"line":265},"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"return dictionary query result"},{"ancestorTitles":["Dictionary V1"],"duration":3057,"failureDetails":[],"failureMessages":[],"fullName":"Dictionary V1 should return undefined startblock height greater than dictionary last processed height","invocations":1,"location":{"column":3,"line":274},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should return undefined startblock height greater than dictionary last processed height"},{"ancestorTitles":["Dictionary V1"],"duration":1656,"failureDetails":[],"failureMessages":[],"fullName":"Dictionary V1 should use metadata last process height at end of query height","invocations":1,"location":{"column":3,"line":282},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should use metadata last process height at end of query height"},{"ancestorTitles":["Individual dictionary V1 test"],"duration":625,"failureDetails":[],"failureMessages":[],"fullName":"Individual dictionary V1 test return undefined when dictionary api failed","invocations":1,"location":{"column":3,"line":293},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"return undefined when dictionary api failed"},{"ancestorTitles":["Individual dictionary V1 test"],"duration":3004,"failureDetails":[],"failureMessages":[],"fullName":"Individual dictionary V1 test limits the dictionary query to that block range","invocations":1,"location":{"column":3,"line":314},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"limits the dictionary query to that block range"},{"ancestorTitles":["Individual dictionary V1 test"],"duration":3204,"failureDetails":[],"failureMessages":[],"fullName":"Individual dictionary V1 test test query the correct range","invocations":1,"location":{"column":3,"line":336},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"test query the correct range"},{"ancestorTitles":["Individual dictionary V1 test"],"duration":2948,"failureDetails":[],"failureMessages":[],"fullName":"Individual dictionary V1 test use minimum value of event/extrinsic returned block as batch end block","invocations":1,"location":{"column":3,"line":356},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"use minimum value of event/extrinsic returned block as batch end block"},{"ancestorTitles":["Individual dictionary V2 test"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"Individual dictionary V2 test can init metadata and set start height","invocations":1,"location":{"column":3,"line":60},"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"can init metadata and set start height"},{"ancestorTitles":["Individual dictionary V2 test"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"Individual dictionary V2 test should get correct getQueryEndBlock","invocations":1,"location":{"column":3,"line":66},"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should get correct getQueryEndBlock"},{"ancestorTitles":["Individual dictionary V2 test"],"duration":7,"failureDetails":[],"failureMessages":[],"fullName":"Individual dictionary V2 test can get data","invocations":1,"location":{"column":3,"line":77},"numPassingAsserts":4,"retryReasons":[],"status":"passed","title":"can get data"},{"ancestorTitles":["Individual dictionary V2 test"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"Individual dictionary V2 test can determine current dictionary query map is valid with block height","invocations":1,"location":{"column":3,"line":115},"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"can determine current dictionary query map is valid with block height"},{"ancestorTitles":["Individual dictionary V2 test"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"Individual dictionary V2 test should able to handle convertResponseBlocks return empty array blocks and lastBufferedHeight is undefined","invocations":1,"location":{"column":3,"line":122},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should able to handle convertResponseBlocks return empty array blocks and lastBufferedHeight is undefined"},{"ancestorTitles":["determine dictionary V2 version"],"duration":471,"failureDetails":[],"failureMessages":[],"fullName":"determine dictionary V2 version if not supported dictionary endpoint, v2 should throw error if init failed","invocations":1,"location":{"column":3,"line":154},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"if not supported dictionary endpoint, v2 should throw error if init failed"},{"ancestorTitles":[],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"in getData, should hex number correctly","invocations":1,"location":{"column":1,"line":165},"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"in getData, should hex number correctly"}],"endTime":1710903823975,"message":"\u001b[1m\u001b[31m \u001b[1m● \u001b[22m\u001b[1mDictionary V1 › coreDictionary › validateChainMeta and useDictionary\u001b[39m\u001b[22m\n\n Dictionary metadata hasn't been initialized\n\u001b[2m\u001b[22m\n\u001b[2m \u001b[0m \u001b[90m 42 |\u001b[39m \u001b[36mprotected\u001b[39m \u001b[36mget\u001b[39m metadata()\u001b[33m:\u001b[39m \u001b[33mM\u001b[39m {\u001b[0m\u001b[22m\n\u001b[2m \u001b[0m \u001b[90m 43 |\u001b[39m \u001b[36mif\u001b[39m (\u001b[33m!\u001b[39m\u001b[36mthis\u001b[39m\u001b[33m.\u001b[39m_metadata) {\u001b[0m\u001b[22m\n\u001b[2m \u001b[0m\u001b[31m\u001b[1m>\u001b[22m\u001b[2m\u001b[39m\u001b[90m 44 |\u001b[39m \u001b[36mthrow\u001b[39m \u001b[36mnew\u001b[39m \u001b[33mError\u001b[39m(\u001b[32m`Dictionary metadata hasn't been initialized`\u001b[39m)\u001b[33m;\u001b[39m\u001b[0m\u001b[22m\n\u001b[2m \u001b[0m \u001b[90m |\u001b[39m \u001b[31m\u001b[1m^\u001b[22m\u001b[2m\u001b[39m\u001b[0m\u001b[22m\n\u001b[2m \u001b[0m \u001b[90m 45 |\u001b[39m }\u001b[0m\u001b[22m\n\u001b[2m \u001b[0m \u001b[90m 46 |\u001b[39m \u001b[36mreturn\u001b[39m \u001b[36mthis\u001b[39m\u001b[33m.\u001b[39m_metadata\u001b[33m;\u001b[39m\u001b[0m\u001b[22m\n\u001b[2m \u001b[0m \u001b[90m 47 |\u001b[39m }\u001b[0m\u001b[22m\n\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat TestDictionaryV1.get metadata [as metadata] (\u001b[22m\u001b[2mpackages/node-core/src/indexer/dictionary/coreDictionary.ts\u001b[2m:44:13)\u001b[22m\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat Object. (\u001b[22m\u001b[2mpackages/node-core/src/indexer/dictionary/v1/dictionaryV1.spec.ts\u001b[2m:181:72)\u001b[22m\u001b[2m\u001b[22m\n","name":"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/indexer/dictionary/v2/dictionaryV2.spec.ts","startTime":1710903768086,"status":"failed","summary":""},{"assertionResults":[{"ancestorTitles":["Poi Service sync"],"duration":2,"failureDetails":[],"failureMessages":[],"fullName":"Poi Service sync sync hold until genesis poi been created","invocations":1,"location":{"column":3,"line":132},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"sync hold until genesis poi been created"},{"ancestorTitles":["Poi Service sync"],"duration":1008,"failureDetails":[],"failureMessages":[],"fullName":"Poi Service sync could set genesis Poi into metadata","invocations":1,"location":{"column":3,"line":138},"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"could set genesis Poi into metadata"},{"ancestorTitles":["Poi Service sync"],"duration":1013,"failureDetails":[],"failureMessages":[],"fullName":"Poi Service sync should skip create genesis poi if latestSyncedPoi existed","invocations":1,"location":{"column":3,"line":145},"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should skip create genesis poi if latestSyncedPoi existed"},{"ancestorTitles":["Poi Service sync"],"duration":4019,"failureDetails":[],"failureMessages":[],"fullName":"Poi Service sync sync poi block in continuous range","invocations":1,"location":{"column":3,"line":176},"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"sync poi block in continuous range"},{"ancestorTitles":["Poi Service sync"],"duration":4494,"failureDetails":[],"failureMessages":[],"fullName":"Poi Service sync sync poi block in discontinuous range,should get default block created","invocations":1,"location":{"column":3,"line":210},"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"sync poi block in discontinuous range,should get default block created"},{"ancestorTitles":["Poi Service sync"],"duration":3071,"failureDetails":[],"failureMessages":[],"fullName":"Poi Service sync if sync poi block out of order, it will throw","invocations":1,"location":{"column":3,"line":247},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"if sync poi block out of order, it will throw"},{"ancestorTitles":["Poi Service sync"],"duration":3259,"failureDetails":[],"failureMessages":[],"fullName":"Poi Service sync could stop sync and clear","invocations":1,"location":{"column":3,"line":278},"numPassingAsserts":6,"retryReasons":[],"status":"passed","title":"could stop sync and clear"},{"ancestorTitles":["Poi Service sync"],"duration":1007,"failureDetails":[],"failureMessages":[],"fullName":"Poi Service sync found SyncedProofOfIndex is not complete will throw","invocations":1,"location":{"column":3,"line":322},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"found SyncedProofOfIndex is not complete will throw"}],"endTime":1710903832456,"message":"","name":"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/indexer/poi/poiSync.service.spec.ts","startTime":1710903799047,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["Cli can create project"],"duration":2378,"failureDetails":[],"failureMessages":[],"fullName":"Cli can create project should resolve when starter project created via template","invocations":1,"location":{"column":3,"line":68},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should resolve when starter project created via template"},{"ancestorTitles":["Cli can create project"],"duration":1709,"failureDetails":[],"failureMessages":[],"fullName":"Cli can create project should resolve when starter project created via git","invocations":1,"location":{"column":3,"line":76},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should resolve when starter project created via git"},{"ancestorTitles":["Cli can create project"],"duration":2059,"failureDetails":[],"failureMessages":[],"fullName":"Cli can create project throw error if .git exists in starter project","invocations":1,"location":{"column":3,"line":88},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"throw error if .git exists in starter project"},{"ancestorTitles":["Cli can create project"],"duration":1840,"failureDetails":[],"failureMessages":[],"fullName":"Cli can create project YAML contains comments","invocations":1,"location":{"column":3,"line":95},"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"YAML contains comments"},{"ancestorTitles":["Cli can create project"],"duration":1747,"failureDetails":[],"failureMessages":[],"fullName":"Cli can create project prepare correctly applies project details","invocations":1,"location":{"column":3,"line":117},"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"prepare correctly applies project details"},{"ancestorTitles":["Cli can create project"],"duration":1883,"failureDetails":[],"failureMessages":[],"fullName":"Cli can create project allow git from sub directory","invocations":1,"location":{"column":3,"line":136},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"allow git from sub directory"}],"endTime":1710903834360,"message":"","name":"/Users/scotttwiname/Projects/subql-main/packages/cli/src/controller/init-controller.test.ts","startTime":1710903820284,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["ApiPromiseConnection"],"duration":6740,"failureDetails":[{"message":"thrown: \"Exceeded timeout of 5000 ms for a test.\nAdd a timeout value to this test to increase the timeout, if this is a long-running test. See https://jestjs.io/docs/api#testname-fn-timeout.\""}],"failureMessages":["Error: thrown: \"Exceeded timeout of 5000 ms for a test.\nAdd a timeout value to this test to increase the timeout, if this is a long-running test. See https://jestjs.io/docs/api#testname-fn-timeout.\"\n at /Users/scotttwiname/Projects/subql-main/packages/node/src/indexer/apiPromise.connection.spec.ts:30:3\n at _dispatchDescribe (/Users/scotttwiname/Projects/subql-main/node_modules/jest-circus/build/index.js:91:26)\n at describe (/Users/scotttwiname/Projects/subql-main/node_modules/jest-circus/build/index.js:55:5)\n at Object. (/Users/scotttwiname/Projects/subql-main/packages/node/src/indexer/apiPromise.connection.spec.ts:12:1)\n at Runtime._execModule (/Users/scotttwiname/Projects/subql-main/node_modules/jest-runtime/build/index.js:1429:24)\n at Runtime._loadModule (/Users/scotttwiname/Projects/subql-main/node_modules/jest-runtime/build/index.js:1013:12)\n at Runtime.requireModule (/Users/scotttwiname/Projects/subql-main/node_modules/jest-runtime/build/index.js:873:12)\n at jestAdapter (/Users/scotttwiname/Projects/subql-main/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapter.js:77:13)\n at processTicksAndRejections (node:internal/process/task_queues:95:5)\n at runTestInternal (/Users/scotttwiname/Projects/subql-main/node_modules/jest-runner/build/runTest.js:367:16)\n at runTest (/Users/scotttwiname/Projects/subql-main/node_modules/jest-runner/build/runTest.js:444:34)\n at Object.worker (/Users/scotttwiname/Projects/subql-main/node_modules/jest-runner/build/testWorker.js:106:12)"],"fullName":"ApiPromiseConnection should not make duplicate requests for state_getRuntimeVersion on wsProvider","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"status":"failed","title":"should not make duplicate requests for state_getRuntimeVersion on wsProvider"},{"ancestorTitles":["ApiPromiseConnection"],"duration":689,"failureDetails":[],"failureMessages":[],"fullName":"ApiPromiseConnection should not make duplicate requests for chain_getHeader on wsProvider","invocations":1,"location":{"column":3,"line":41},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should not make duplicate requests for chain_getHeader on wsProvider"},{"ancestorTitles":["ApiPromiseConnection"],"duration":4169,"failureDetails":[],"failureMessages":[],"fullName":"ApiPromiseConnection should not make duplicate requests for state_getRuntimeVersion on httpProvider","invocations":1,"location":{"column":3,"line":50},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should not make duplicate requests for state_getRuntimeVersion on httpProvider"},{"ancestorTitles":["ApiPromiseConnection"],"duration":1086,"failureDetails":[],"failureMessages":[],"fullName":"ApiPromiseConnection should not make duplicate requests for chain_getHeader on httpProvider","invocations":1,"location":{"column":3,"line":60},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should not make duplicate requests for chain_getHeader on httpProvider"},{"ancestorTitles":["ApiPromiseConnection"],"duration":8242,"failureDetails":[],"failureMessages":[],"fullName":"ApiPromiseConnection should not cache requests if there are no args","invocations":1,"location":{"column":3,"line":70},"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should not cache requests if there are no args"}],"endTime":1710903836863,"message":"\u001b[1m\u001b[31m \u001b[1m● \u001b[22m\u001b[1mApiPromiseConnection › should not make duplicate requests for state_getRuntimeVersion on wsProvider\u001b[39m\u001b[22m\n\n thrown: \"Exceeded timeout of 5000 ms for a test.\n Add a timeout value to this test to increase the timeout, if this is a long-running test. See https://jestjs.io/docs/api#testname-fn-timeout.\"\n\u001b[2m\u001b[22m\n\u001b[2m \u001b[0m \u001b[90m 28 |\u001b[39m })\u001b[33m;\u001b[39m\u001b[0m\u001b[22m\n\u001b[2m \u001b[0m \u001b[90m 29 |\u001b[39m\u001b[0m\u001b[22m\n\u001b[2m \u001b[0m\u001b[31m\u001b[1m>\u001b[22m\u001b[2m\u001b[39m\u001b[90m 30 |\u001b[39m it(\u001b[32m'should not make duplicate requests for state_getRuntimeVersion on wsProvider'\u001b[39m\u001b[33m,\u001b[39m \u001b[36masync\u001b[39m () \u001b[33m=>\u001b[39m {\u001b[0m\u001b[22m\n\u001b[2m \u001b[0m \u001b[90m |\u001b[39m \u001b[31m\u001b[1m^\u001b[22m\u001b[2m\u001b[39m\u001b[0m\u001b[22m\n\u001b[2m \u001b[0m \u001b[90m 31 |\u001b[39m \u001b[36mconst\u001b[39m cachedProvider \u001b[33m=\u001b[39m createCachedProvider(wsProvider)\u001b[33m;\u001b[39m\u001b[0m\u001b[22m\n\u001b[2m \u001b[0m \u001b[90m 32 |\u001b[39m\u001b[0m\u001b[22m\n\u001b[2m \u001b[0m \u001b[90m 33 |\u001b[39m \u001b[36mawait\u001b[39m \u001b[33mPromise\u001b[39m\u001b[33m.\u001b[39mall([\u001b[0m\u001b[22m\n\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat \u001b[22m\u001b[2m\u001b[0m\u001b[36mpackages/node/src/indexer/apiPromise.connection.spec.ts\u001b[39m\u001b[0m\u001b[2m:30:3\u001b[22m\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat Object. (\u001b[22m\u001b[2m\u001b[0m\u001b[36mpackages/node/src/indexer/apiPromise.connection.spec.ts\u001b[39m\u001b[0m\u001b[2m:12:1)\u001b[22m\u001b[2m\u001b[22m\n","name":"/Users/scotttwiname/Projects/subql-main/packages/node/src/indexer/apiPromise.connection.spec.ts","startTime":1710903813527,"status":"failed","summary":""},{"assertionResults":[{"ancestorTitles":["fetchHelpers"],"duration":8055,"failureDetails":[],"failureMessages":[],"fullName":"fetchHelpers retryOnFail","invocations":1,"location":{"column":3,"line":9},"numPassingAsserts":4,"retryReasons":[],"status":"passed","title":"retryOnFail"}],"endTime":1710903839233,"message":"","name":"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/utils/fetchHelper.spec.ts","startTime":1710903824767,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["DbModule"],"duration":3915,"failureDetails":[],"failureMessages":[],"fullName":"DbModule can connect to database","invocations":1,"location":{"column":3,"line":19},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"can connect to database"},{"ancestorTitles":["DbModule"],"duration":3321,"failureDetails":[],"failureMessages":[],"fullName":"DbModule can load subquery model","invocations":1,"location":{"column":3,"line":30},"numPassingAsserts":0,"retryReasons":[],"status":"passed","title":"can load subquery model"}],"endTime":1710903845124,"message":"","name":"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/db/db.module.test.ts","startTime":1710903834441,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["bypass logic"],"duration":2,"failureDetails":[],"failureMessages":[],"fullName":"bypass logic process bypassBlocks with ranges","invocations":1,"location":{"column":3,"line":8},"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"process bypassBlocks with ranges"},{"ancestorTitles":["bypass logic"],"duration":7260,"failureDetails":[],"failureMessages":[],"fullName":"bypass logic cleanedBatchBlocks with large amount blocks should not throw error Maximum call stack size exceeded","invocations":1,"location":{"column":3,"line":23},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"cleanedBatchBlocks with large amount blocks should not throw error Maximum call stack size exceeded"}],"endTime":1710903846615,"message":"","name":"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/utils/blocks.spec.ts","startTime":1710903837051,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["Substrate Dictionary service"],"duration":109,"failureDetails":[],"failureMessages":[],"fullName":"Substrate Dictionary service should use v1 if v2 init failed, can determine dictionary version by init dictionary","invocations":1,"location":{"column":3,"line":67},"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"should use v1 if v2 init failed, can determine dictionary version by init dictionary"},{"ancestorTitles":["Substrate Dictionary service"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"Substrate Dictionary service should use v2 if init passed","invocations":1,"location":{"column":3,"line":81},"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should use v2 if init passed"}],"endTime":1710903849082,"message":"","name":"/Users/scotttwiname/Projects/subql-main/packages/node/src/indexer/dictionary/substrateDictionary.service.spec.ts","startTime":1710903846695,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["Promise Utils"],"duration":1036,"failureDetails":[],"failureMessages":[],"fullName":"Promise Utils utils.promise delay()","invocations":1,"location":{"column":3,"line":7},"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"utils.promise delay()"},{"ancestorTitles":["Promise Utils"],"duration":3031,"failureDetails":[],"failureMessages":[],"fullName":"Promise Utils utils.promise timeout()","invocations":1,"location":{"column":3,"line":15},"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"utils.promise timeout()"},{"ancestorTitles":["Promise Utils","BackoffRetry"],"duration":4,"failureDetails":[],"failureMessages":[],"fullName":"Promise Utils BackoffRetry doesn't retry with success","invocations":1,"location":{"column":5,"line":26},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"doesn't retry with success"},{"ancestorTitles":["Promise Utils","BackoffRetry"],"duration":1002,"failureDetails":[],"failureMessages":[],"fullName":"Promise Utils BackoffRetry retries multiple times","invocations":1,"location":{"column":5,"line":32},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"retries multiple times"},{"ancestorTitles":["Promise Utils","BackoffRetry"],"duration":1004,"failureDetails":[],"failureMessages":[],"fullName":"Promise Utils BackoffRetry throws when reaching the number of retries","invocations":1,"location":{"column":5,"line":48},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"throws when reaching the number of retries"}],"endTime":1710903850870,"message":"","name":"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/utils/promise.spec.ts","startTime":1710903839518,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["substrate utils"],"duration":10,"failureDetails":[],"failureMessages":[],"fullName":"substrate utils invalid timestamp throws error on cron creation","invocations":1,"location":{"column":3,"line":26},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"invalid timestamp throws error on cron creation"},{"ancestorTitles":["substrate utils"],"duration":null,"failureDetails":[],"failureMessages":[],"fullName":"substrate utils validate block hash after fetch","invocations":1,"location":{"column":6,"line":40},"numPassingAsserts":0,"retryReasons":[],"status":"pending","title":"validate block hash after fetch"},{"ancestorTitles":["substrate utils"],"duration":5048,"failureDetails":[],"failureMessages":[],"fullName":"substrate utils filters a signed extrinsic","invocations":1,"location":{"column":3,"line":50},"numPassingAsserts":4,"retryReasons":[],"status":"passed","title":"filters a signed extrinsic"}],"endTime":1710903852547,"message":"","name":"/Users/scotttwiname/Projects/subql-main/packages/node/src/utils/substrate.test.ts","startTime":1710903832591,"status":"focused","summary":""},{"assertionResults":[{"ancestorTitles":["CLI codegen:generate, Can write to file"],"duration":21,"failureDetails":[],"failureMessages":[],"fullName":"CLI codegen:generate, Can write to file generateManifest from ts-manifest","invocations":1,"location":{"column":3,"line":196},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"generateManifest from ts-manifest"},{"ancestorTitles":["CLI codegen:generate, Can write to file"],"duration":32,"failureDetails":[],"failureMessages":[],"fullName":"CLI codegen:generate, Can write to file Can generate manifest","invocations":1,"location":{"column":3,"line":325},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"Can generate manifest"},{"ancestorTitles":["CLI codegen:generate, Can write to file"],"duration":15,"failureDetails":[],"failureMessages":[],"fullName":"CLI codegen:generate, Can write to file if handler filter already exist with matching address, should not add","invocations":1,"location":{"column":3,"line":363},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"if handler filter already exist with matching address, should not add"},{"ancestorTitles":["CLI codegen:generate, Can write to file"],"duration":5694,"failureDetails":[],"failureMessages":[],"fullName":"CLI codegen:generate, Can write to file should preserve any comments in existing datasources","invocations":1,"location":{"column":3,"line":419},"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should preserve any comments in existing datasources"},{"ancestorTitles":["CLI codegen:generate, Can write to file"],"duration":66,"failureDetails":[],"failureMessages":[],"fullName":"CLI codegen:generate, Can write to file should throw, if handler file exists","invocations":1,"location":{"column":3,"line":443},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should throw, if handler file exists"},{"ancestorTitles":["CLI codegen:generate, Can write to file"],"duration":48,"failureDetails":[],"failureMessages":[],"fullName":"CLI codegen:generate, Can write to file Can generate mapping handlers","invocations":1,"location":{"column":3,"line":463},"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"Can generate mapping handlers"},{"ancestorTitles":["CLI codegen:generate, Can write to file"],"duration":31,"failureDetails":[],"failureMessages":[],"fullName":"CLI codegen:generate, Can write to file Throws if invalid abiPath is given","invocations":1,"location":{"column":3,"line":504},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"Throws if invalid abiPath is given"},{"ancestorTitles":["CLI codegen:generate, Can write to file"],"duration":36,"failureDetails":[],"failureMessages":[],"fullName":"CLI codegen:generate, Can write to file Should be able to parse relative path on abiPath","invocations":1,"location":{"column":3,"line":509},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"Should be able to parse relative path on abiPath"},{"ancestorTitles":["CLI codegen:generate, Can write to file"],"duration":29,"failureDetails":[],"failureMessages":[],"fullName":"CLI codegen:generate, Can write to file Should be able to parse absolute path on abiPath","invocations":1,"location":{"column":3,"line":515},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"Should be able to parse absolute path on abiPath"}],"endTime":1710903856316,"message":"","name":"/Users/scotttwiname/Projects/subql-main/packages/cli/src/controller/generate-controller.test.ts","startTime":1710903845298,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["ApiService"],"duration":14,"failureDetails":[],"failureMessages":[],"fullName":"ApiService read custom types from project manifest","invocations":1,"location":{"column":3,"line":99},"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"read custom types from project manifest"},{"ancestorTitles":["ApiService"],"duration":23,"failureDetails":[],"failureMessages":[],"fullName":"ApiService throws if expected genesis hash doesnt match","invocations":1,"location":{"column":3,"line":123},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"throws if expected genesis hash doesnt match"}],"endTime":1710903856807,"message":"","name":"/Users/scotttwiname/Projects/subql-main/packages/node/src/indexer/api.service.spec.ts","startTime":1710903850900,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["SubqueryProject","convert manifest to project object"],"duration":28,"failureDetails":[],"failureMessages":[],"fullName":"SubqueryProject convert manifest to project object convert 1.0.0 ipfs deployment to project object","invocations":1,"location":{"column":5,"line":62},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"convert 1.0.0 ipfs deployment to project object"},{"ancestorTitles":["SubqueryProject","convert manifest to project object"],"duration":15,"failureDetails":[],"failureMessages":[],"fullName":"SubqueryProject convert manifest to project object check processChainId","invocations":1,"location":{"column":5,"line":88},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"check processChainId"},{"ancestorTitles":["SubqueryProject","convert manifest to project object"],"duration":21,"failureDetails":[],"failureMessages":[],"fullName":"SubqueryProject convert manifest to project object check loadProjectTemplates","invocations":1,"location":{"column":5,"line":105},"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"check loadProjectTemplates"},{"ancestorTitles":["SubqueryProject"],"duration":6399,"failureDetails":[],"failureMessages":[],"fullName":"SubqueryProject loads chainTypes from deployment","invocations":1,"location":{"column":3,"line":133},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"loads chainTypes from deployment"},{"ancestorTitles":["SubqueryProject"],"duration":2615,"failureDetails":[],"failureMessages":[],"fullName":"SubqueryProject loads asset file correctly from deployment","invocations":1,"location":{"column":3,"line":152},"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"loads asset file correctly from deployment"},{"ancestorTitles":["load asset with updateDataSourcesV1_0_0"],"duration":917,"failureDetails":[],"failureMessages":[],"fullName":"load asset with updateDataSourcesV1_0_0 After fix, it could load asset correctly","invocations":1,"location":{"column":3,"line":233},"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"After fix, it could load asset correctly"}],"endTime":1710903863039,"message":"","name":"/Users/scotttwiname/Projects/subql-main/packages/node/src/configure/SubqueryProject.spec.ts","startTime":1710903849363,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["cacheMetadata integration"],"duration":27,"failureDetails":[],"failureMessages":[],"fullName":"cacheMetadata integration Ensure increment keys are created on _metadata table","invocations":1,"location":{"column":3,"line":56},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"Ensure increment keys are created on _metadata table"},{"ancestorTitles":["cacheMetadata integration","dynamicDatasources"],"duration":62,"failureDetails":[],"failureMessages":[],"fullName":"cacheMetadata integration dynamicDatasources Appends dynamicDatasources correctly","invocations":1,"location":{"column":5,"line":76},"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"Appends dynamicDatasources correctly"},{"ancestorTitles":["cacheMetadata integration","dynamicDatasources"],"duration":20,"failureDetails":[],"failureMessages":[],"fullName":"cacheMetadata integration dynamicDatasources Allows overriding all dynamicDatasources","invocations":1,"location":{"column":5,"line":96},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"Allows overriding all dynamicDatasources"},{"ancestorTitles":["cacheMetadata integration","dynamicDatasources"],"duration":17,"failureDetails":[],"failureMessages":[],"fullName":"cacheMetadata integration dynamicDatasources Caches the dynamicDatasources correctly after using set","invocations":1,"location":{"column":5,"line":107},"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"Caches the dynamicDatasources correctly after using set"},{"ancestorTitles":["cacheMetadata integration","dynamicDatasources"],"duration":11,"failureDetails":[],"failureMessages":[],"fullName":"cacheMetadata integration dynamicDatasources Uses the correct cache values when using new and set","invocations":1,"location":{"column":5,"line":124},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"Uses the correct cache values when using new and set"}],"endTime":1710903865809,"message":"","name":"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/indexer/storeCache/cacheMetadata.test.ts","startTime":1710903857373,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":[],"duration":5,"failureDetails":[],"failureMessages":[],"fullName":"mergeNumAndBlocks, merge and arrange blocks in order","invocations":1,"location":{"column":1,"line":30},"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"mergeNumAndBlocks, merge and arrange blocks in order"},{"ancestorTitles":[],"duration":2,"failureDetails":[],"failureMessages":[],"fullName":"mergeNumAndBlocksToNums, turn all blocks into number","invocations":1,"location":{"column":1,"line":53},"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"mergeNumAndBlocksToNums, turn all blocks into number"}],"endTime":1710903866314,"message":"","name":"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/indexer/dictionary/utils.spec.ts","startTime":1710903863296,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["FetchService"],"duration":1024,"failureDetails":[],"failureMessages":[],"fullName":"FetchService can get the finalized height","invocations":1,"location":{"column":3,"line":47},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"can get the finalized height"},{"ancestorTitles":["FetchService"],"duration":323,"failureDetails":[],"failureMessages":[],"fullName":"FetchService can get the best height","invocations":1,"location":{"column":3,"line":52},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"can get the best height"},{"ancestorTitles":["FetchService"],"duration":6,"failureDetails":[],"failureMessages":[],"fullName":"FetchService can get the chain interval","invocations":1,"location":{"column":3,"line":57},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"can get the chain interval"}],"endTime":1710903874875,"message":"","name":"/Users/scotttwiname/Projects/subql-main/packages/node/src/indexer/fetch.service.test.ts","startTime":1710903856982,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["CachePoi","clear poi"],"duration":2,"failureDetails":[],"failureMessages":[],"fullName":"CachePoi clear poi should clear all if blockHeight not provided","invocations":1,"location":{"column":5,"line":106},"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"should clear all if blockHeight not provided"},{"ancestorTitles":["CachePoi","clear poi"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"CachePoi clear poi should clear with blockHeight","invocations":1,"location":{"column":5,"line":117},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should clear with blockHeight"},{"ancestorTitles":["CachePoi","clear poi","getPoiBlocksBefore"],"duration":1001,"failureDetails":[],"failureMessages":[],"fullName":"CachePoi clear poi getPoiBlocksBefore should hit the cache first","invocations":1,"location":{"column":7,"line":150},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should hit the cache first"},{"ancestorTitles":["CachePoi","clear poi","getPoiBlocksBefore"],"duration":1005,"failureDetails":[],"failureMessages":[],"fullName":"CachePoi clear poi getPoiBlocksBefore should be able to get data from just the store","invocations":1,"location":{"column":7,"line":156},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should be able to get data from just the store"},{"ancestorTitles":["CachePoi","clear poi","getPoiBlocksBefore"],"duration":1003,"failureDetails":[],"failureMessages":[],"fullName":"CachePoi clear poi getPoiBlocksBefore should be able to combine cache and store data","invocations":1,"location":{"column":7,"line":162},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should be able to combine cache and store data"}],"endTime":1710903876549,"message":"","name":"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/indexer/storeCache/cachePoi.spec.ts","startTime":1710903866418,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["cacheModel","without historical"],"duration":2033,"failureDetails":[],"failureMessages":[],"fullName":"cacheModel without historical can avoid race conditions","invocations":1,"location":{"column":5,"line":106},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"can avoid race conditions"},{"ancestorTitles":["cacheModel","historical"],"duration":1035,"failureDetails":[],"failureMessages":[],"fullName":"cacheModel historical when get data after flushed, it should exclude block range","invocations":1,"location":{"column":5,"line":187},"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"when get data after flushed, it should exclude block range"},{"ancestorTitles":["cacheModel","historical","set, remove and get"],"duration":2,"failureDetails":[],"failureMessages":[],"fullName":"cacheModel historical set, remove and get In different block, remove and set, should able to get","invocations":1,"location":{"column":7,"line":215},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"In different block, remove and set, should able to get"},{"ancestorTitles":["cacheModel","historical","set, remove and get"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"cacheModel historical set, remove and get In same block, remove then set, should able to get","invocations":1,"location":{"column":7,"line":229},"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"In same block, remove then set, should able to get"},{"ancestorTitles":["cacheModel","historical","set, remove and get"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"cacheModel historical set, remove and get In different block, remove and set, then remove again, should get nothing","invocations":1,"location":{"column":7,"line":246},"numPassingAsserts":5,"retryReasons":[],"status":"passed","title":"In different block, remove and set, then remove again, should get nothing"},{"ancestorTitles":["cacheModel","historical","set, remove and get"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"cacheModel historical set, remove and get In same block, remove and set, then remove again, should get nothing","invocations":1,"location":{"column":7,"line":269},"numPassingAsserts":4,"retryReasons":[],"status":"passed","title":"In same block, remove and set, then remove again, should get nothing"},{"ancestorTitles":["cacheModel","historical","set, remove and get"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"cacheModel historical set, remove and get clean flushable records when applyBlockRange, if found set and removed happened in the same height","invocations":1,"location":{"column":7,"line":290},"numPassingAsserts":6,"retryReasons":[],"status":"passed","title":"clean flushable records when applyBlockRange, if found set and removed happened in the same height"},{"ancestorTitles":["cacheModel","historical","set, remove and get"],"duration":194,"failureDetails":[],"failureMessages":[],"fullName":"cacheModel historical set, remove and get clean flushable records when applyBlockRange, pass if set and remove in the different height","invocations":1,"location":{"column":7,"line":322},"numPassingAsserts":6,"retryReasons":[],"status":"passed","title":"clean flushable records when applyBlockRange, pass if set and remove in the different height"},{"ancestorTitles":["cacheModel","historical","set, remove and get"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"cacheModel historical set, remove and get getFromCache could filter out removed data","invocations":1,"location":{"column":7,"line":350},"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"getFromCache could filter out removed data"},{"ancestorTitles":["cacheModel","historical","set, remove and get"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"cacheModel historical set, remove and get getFromCache with removed and set again data","invocations":1,"location":{"column":7,"line":382},"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"getFromCache with removed and set again data"},{"ancestorTitles":["cacheModel","historical","getByFields"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"cacheModel historical getByFields calls getByField if there is one filter","invocations":1,"location":{"column":7,"line":424},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"calls getByField if there is one filter"},{"ancestorTitles":["cacheModel","historical","getByFields"],"duration":1019,"failureDetails":[],"failureMessages":[],"fullName":"cacheModel historical getByFields flushes the cache first","invocations":1,"location":{"column":7,"line":432},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"flushes the cache first"},{"ancestorTitles":["cacheModel","historical","getByFields"],"duration":50,"failureDetails":[],"failureMessages":[],"fullName":"cacheModel historical getByFields throws for unsupported operators","invocations":1,"location":{"column":7,"line":456},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"throws for unsupported operators"}],"endTime":1710903881468,"message":"","name":"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/indexer/storeCache/cacheModel.spec.ts","startTime":1710903866409,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["Configure"],"duration":3,"failureDetails":[],"failureMessages":[],"fullName":"Configure validDbSchemaName - works","invocations":1,"location":{"column":3,"line":7},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"validDbSchemaName - works"},{"ancestorTitles":["Configure"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"Configure validDbSchemaName - works not alphanumeric","invocations":1,"location":{"column":3,"line":10},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"validDbSchemaName - works not alphanumeric"},{"ancestorTitles":["Configure"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"Configure validDbSchemaName - long","invocations":1,"location":{"column":3,"line":13},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"validDbSchemaName - long"},{"ancestorTitles":["Configure"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"Configure validDbSchemaName - invalid prefix","invocations":1,"location":{"column":3,"line":16},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"validDbSchemaName - invalid prefix"},{"ancestorTitles":["Configure"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"Configure validDbSchemaName - invalid tokens","invocations":1,"location":{"column":3,"line":19},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"validDbSchemaName - invalid tokens"},{"ancestorTitles":["Configure"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"Configure validDbSchemaName - empty","invocations":1,"location":{"column":3,"line":22},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"validDbSchemaName - empty"}],"endTime":1710903883705,"message":"","name":"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/configure/configure.module.spec.ts","startTime":1710903876697,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":[],"duration":4,"failureDetails":[],"failureMessages":[],"fullName":"Convert objects key to camelCase","invocations":1,"location":{"column":1,"line":6},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"Convert objects key to camelCase"}],"endTime":1710903889739,"message":"","name":"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/utils/object.spec.ts","startTime":1710903881753,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["Codegen can generate schema (mocked)"],"duration":31,"failureDetails":[],"failureMessages":[],"fullName":"Codegen can generate schema (mocked) throw error when make directory failed at beginning of codegen","invocations":1,"location":{"column":3,"line":28},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"throw error when make directory failed at beginning of codegen"},{"ancestorTitles":["Codegen can generate schema (mocked)"],"duration":3,"failureDetails":[],"failureMessages":[],"fullName":"Codegen can generate schema (mocked) test codegen reserved key validate","invocations":1,"location":{"column":3,"line":34},"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"test codegen reserved key validate"},{"ancestorTitles":["Codegen can generate schema (mocked)"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"Codegen can generate schema (mocked) throw error when processing unsupported type in json fields","invocations":1,"location":{"column":3,"line":45},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"throw error when processing unsupported type in json fields"}],"endTime":1710903889242,"message":"","name":"/Users/scotttwiname/Projects/subql-main/packages/cli/src/controller/codegen-controller.spec.ts","startTime":1710903852867,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["sandbox for subql-node"],"duration":3070,"failureDetails":[],"failureMessages":[],"fullName":"sandbox for subql-node wait until promise resolved","invocations":1,"location":{"column":3,"line":15},"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"wait until promise resolved"}],"endTime":1710903889869,"message":"","name":"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/indexer/sandbox.spec.ts","startTime":1710903875658,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["SchemaMigration","comparator"],"duration":54,"failureDetails":[],"failureMessages":[],"fullName":"SchemaMigration comparator ensure comparator correctness","invocations":1,"location":{"column":5,"line":16},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"ensure comparator correctness"},{"ancestorTitles":["SchemaMigration","comparator"],"duration":21,"failureDetails":[],"failureMessages":[],"fullName":"SchemaMigration comparator Determine isRewindable","invocations":1,"location":{"column":5,"line":41},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"Determine isRewindable"},{"ancestorTitles":["SchemaMigration","comparator"],"duration":20,"failureDetails":[],"failureMessages":[],"fullName":"SchemaMigration comparator Ensure iterator logic","invocations":1,"location":{"column":5,"line":47},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"Ensure iterator logic"},{"ancestorTitles":["SchemaMigration"],"duration":2,"failureDetails":[],"failureMessages":[],"fullName":"SchemaMigration compare enums on modified enums","invocations":1,"location":{"column":3,"line":61},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"compare enums on modified enums"}],"endTime":1710903900232,"message":"","name":"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/db/migration-service/SchemaMigration.service.spec.ts","startTime":1710903890182,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["CacheMetadata"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"CacheMetadata clears the caches properly","invocations":1,"location":{"column":3,"line":17},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"clears the caches properly"},{"ancestorTitles":["CacheMetadata"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"CacheMetadata clears the caches properly with blockHeight","invocations":1,"location":{"column":3,"line":28},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"clears the caches properly with blockHeight"},{"ancestorTitles":["CacheMetadata"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"CacheMetadata builds the correct dynamicDatasources query","invocations":1,"location":{"column":3,"line":38},"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"builds the correct dynamicDatasources query"}],"endTime":1710903902164,"message":"","name":"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/indexer/storeCache/cacheMetadata.spec.ts","startTime":1710903889773,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["Codegen can generate schema"],"duration":1638,"failureDetails":[],"failureMessages":[],"fullName":"Codegen can generate schema codegen with correct schema should pass","invocations":1,"location":{"column":3,"line":18},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"codegen with correct schema should pass"},{"ancestorTitles":["Codegen can generate schema"],"duration":60,"failureDetails":[],"failureMessages":[],"fullName":"Codegen can generate schema codegen with incorrect schema field should fail","invocations":1,"location":{"column":3,"line":23},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"codegen with incorrect schema field should fail"},{"ancestorTitles":["Codegen can generate schema"],"duration":29,"failureDetails":[],"failureMessages":[],"fullName":"Codegen can generate schema codegen with entities that uses reserved names should throw","invocations":1,"location":{"column":3,"line":27},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"codegen with entities that uses reserved names should throw"},{"ancestorTitles":["Codegen can generate schema"],"duration":634,"failureDetails":[],"failureMessages":[],"fullName":"Codegen can generate schema Codegen should be able to generate ABIs from template datasources","invocations":1,"location":{"column":3,"line":33},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"Codegen should be able to generate ABIs from template datasources"},{"ancestorTitles":["Codegen can generate schema"],"duration":33,"failureDetails":[],"failureMessages":[],"fullName":"Codegen can generate schema Should not fail, if ds does not have any assets","invocations":1,"location":{"column":3,"line":41},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"Should not fail, if ds does not have any assets"},{"ancestorTitles":["Codegen can generate schema"],"duration":292,"failureDetails":[],"failureMessages":[],"fullName":"Codegen can generate schema Codegen should be able to generate ABIs from customName datasources","invocations":1,"location":{"column":3,"line":45},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"Codegen should be able to generate ABIs from customName datasources"},{"ancestorTitles":["Codegen can generate schema"],"duration":353,"failureDetails":[],"failureMessages":[],"fullName":"Codegen can generate schema Should clean out existing types directory","invocations":1,"location":{"column":3,"line":53},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"Should clean out existing types directory"},{"ancestorTitles":["Codegen can generate schema"],"duration":834,"failureDetails":[],"failureMessages":[],"fullName":"Codegen can generate schema should generate contracts on different glob paths","invocations":1,"location":{"column":3,"line":61},"numPassingAsserts":4,"retryReasons":[],"status":"passed","title":"should generate contracts on different glob paths"},{"ancestorTitles":["Codegen can generate schema"],"duration":83,"failureDetails":[],"failureMessages":[],"fullName":"Codegen can generate schema Should not generate ABI for non evm ds","invocations":1,"location":{"column":3,"line":77},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"Should not generate ABI for non evm ds"},{"ancestorTitles":["Codegen can generate schema"],"duration":70,"failureDetails":[],"failureMessages":[],"fullName":"Codegen can generate schema Should not generate proto-interfaces if no chaintypes are provided","invocations":1,"location":{"column":3,"line":82},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"Should not generate proto-interfaces if no chaintypes are provided"}],"endTime":1710903910342,"message":"","name":"/Users/scotttwiname/Projects/subql-main/packages/cli/src/controller/codegen-controller.test.ts","startTime":1710903883915,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["Store Cache Service historical"],"duration":11,"failureDetails":[],"failureMessages":[],"fullName":"Store Cache Service historical could init store cache service and init cache for models","invocations":1,"location":{"column":3,"line":70},"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"could init store cache service and init cache for models"},{"ancestorTitles":["Store Cache Service historical"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"Store Cache Service historical could set cache for multiple entities, also get from it","invocations":1,"location":{"column":3,"line":76},"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"could set cache for multiple entities, also get from it"},{"ancestorTitles":["Store Cache Service historical"],"duration":5,"failureDetails":[],"failureMessages":[],"fullName":"Store Cache Service historical set at different block height, will create historical records","invocations":1,"location":{"column":3,"line":105},"numPassingAsserts":7,"retryReasons":[],"status":"passed","title":"set at different block height, will create historical records"},{"ancestorTitles":["Store Cache Service historical"],"duration":3,"failureDetails":[],"failureMessages":[],"fullName":"Store Cache Service historical getAll, getOneByField and getByField with getFromCache","invocations":1,"location":{"column":3,"line":143},"numPassingAsserts":4,"retryReasons":[],"status":"passed","title":"getAll, getOneByField and getByField with getFromCache"},{"ancestorTitles":["Store Cache Service historical"],"duration":2,"failureDetails":[],"failureMessages":[],"fullName":"Store Cache Service historical count","invocations":1,"location":{"column":3,"line":197},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"count"},{"ancestorTitles":["Store Cache Service historical"],"duration":4,"failureDetails":[],"failureMessages":[],"fullName":"Store Cache Service historical remove","invocations":1,"location":{"column":3,"line":223},"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"remove"},{"ancestorTitles":["Store Cache flush with order"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"Store Cache flush with order when set/remove multiple model entities, operation index should added to record in sequential order","invocations":1,"location":{"column":3,"line":264},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"when set/remove multiple model entities, operation index should added to record in sequential order"},{"ancestorTitles":["Store Cache flush with non-historical"],"duration":5,"failureDetails":[],"failureMessages":[],"fullName":"Store Cache flush with non-historical Same Id with multiple operations, when flush it should always pick up the latest operation","invocations":1,"location":{"column":3,"line":301},"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"Same Id with multiple operations, when flush it should always pick up the latest operation"},{"ancestorTitles":["Store cache upper threshold"],"duration":6,"failureDetails":[],"failureMessages":[],"fullName":"Store cache upper threshold doesnt wait for flushing cache when threshold not met","invocations":1,"location":{"column":3,"line":359},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"doesnt wait for flushing cache when threshold not met"},{"ancestorTitles":["Store cache upper threshold"],"duration":1057,"failureDetails":[],"failureMessages":[],"fullName":"Store cache upper threshold waits for flushing when threshold is met","invocations":1,"location":{"column":3,"line":381},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"waits for flushing when threshold is met"}],"endTime":1710903914150,"message":"","name":"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/indexer/storeCache/storeCache.service.spec.ts","startTime":1710903902679,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["Able to generate cosmos types from protobuf"],"duration":4517,"failureDetails":[],"failureMessages":[],"fullName":"Able to generate cosmos types from protobuf Able to generate ts types from protobufs","invocations":1,"location":{"column":3,"line":35},"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"Able to generate ts types from protobufs"},{"ancestorTitles":["Able to generate cosmos types from protobuf"],"duration":889,"failureDetails":[],"failureMessages":[],"fullName":"Able to generate cosmos types from protobuf On missing protobuf dependency should throw","invocations":1,"location":{"column":3,"line":58},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"On missing protobuf dependency should throw"},{"ancestorTitles":["Able to generate cosmos types from protobuf"],"duration":1004,"failureDetails":[],"failureMessages":[],"fullName":"Able to generate cosmos types from protobuf create temp dir with all protobufs","invocations":1,"location":{"column":3,"line":74},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"create temp dir with all protobufs"}],"endTime":1710903915917,"message":"","name":"/Users/scotttwiname/Projects/subql-main/packages/cli/src/controller/codegen-cosmos.test.ts","startTime":1710903900642,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["sync-helper"],"duration":54,"failureDetails":[],"failureMessages":[],"fullName":"sync-helper Ensure correct fkConstraint","invocations":1,"location":{"column":3,"line":148},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"Ensure correct fkConstraint"},{"ancestorTitles":["sync-helper"],"duration":12,"failureDetails":[],"failureMessages":[],"fullName":"sync-helper Generate SQL statement for table creation with historical","invocations":1,"location":{"column":3,"line":153},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"Generate SQL statement for table creation with historical"},{"ancestorTitles":["sync-helper"],"duration":2,"failureDetails":[],"failureMessages":[],"fullName":"sync-helper Generate SQL statement for Indexes","invocations":1,"location":{"column":3,"line":176},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"Generate SQL statement for Indexes"},{"ancestorTitles":["sync-helper"],"duration":11,"failureDetails":[],"failureMessages":[],"fullName":"sync-helper Generate table statement no historical, no multi primary keys","invocations":1,"location":{"column":3,"line":188},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"Generate table statement no historical, no multi primary keys"},{"ancestorTitles":["sync-helper"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"sync-helper Reference statement","invocations":1,"location":{"column":3,"line":212},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"Reference statement"},{"ancestorTitles":["sync-helper"],"duration":2,"failureDetails":[],"failureMessages":[],"fullName":"sync-helper Ensure correct foreignkey statement","invocations":1,"location":{"column":3,"line":239},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"Ensure correct foreignkey statement"},{"ancestorTitles":["sync-helper"],"duration":2,"failureDetails":[],"failureMessages":[],"fullName":"sync-helper sortModel with toposort on cyclic schema","invocations":1,"location":{"column":3,"line":283},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"sortModel with toposort on cyclic schema"},{"ancestorTitles":["sync-helper"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"sync-helper sortModel with toposort on non cyclic schema","invocations":1,"location":{"column":3,"line":304},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"sortModel with toposort on non cyclic schema"},{"ancestorTitles":["sync-helper"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"sync-helper Ensure correct enumTypeMap","invocations":1,"location":{"column":3,"line":345},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"Ensure correct enumTypeMap"},{"ancestorTitles":["sync-helper"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"sync-helper sequelize to correct postgres type map","invocations":1,"location":{"column":3,"line":375},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"sequelize to correct postgres type map"}],"endTime":1710903928309,"message":"","name":"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/db/sync-helper.spec.ts","startTime":1710903890150,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["Runtime service"],"duration":4,"failureDetails":[],"failureMessages":[],"fullName":"Runtime service doesnt refetch metadata when spec version doesnt change","invocations":1,"location":{"column":3,"line":91},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"doesnt refetch metadata when spec version doesnt change"},{"ancestorTitles":["Runtime service"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"Runtime service fetches metadata only when spec version changes","invocations":1,"location":{"column":3,"line":102},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"fetches metadata only when spec version changes"},{"ancestorTitles":["Runtime service"],"duration":57,"failureDetails":[],"failureMessages":[],"fullName":"Runtime service use dictionary and specVersionMap to get block specVersion","invocations":1,"location":{"column":3,"line":114},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"use dictionary and specVersionMap to get block specVersion"},{"ancestorTitles":["Runtime service"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"Runtime service getSpecVersion will fetch the spec version if its not in the map","invocations":1,"location":{"column":3,"line":127},"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"getSpecVersion will fetch the spec version if its not in the map"}],"endTime":1710903927790,"message":"","name":"/Users/scotttwiname/Projects/subql-main/packages/node/src/indexer/runtime/runtime.service.spec.ts","startTime":1710903914584,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["Cli can create project (mocked)"],"duration":229,"failureDetails":[],"failureMessages":[],"fullName":"Cli can create project (mocked) throw error when git clone failed","invocations":1,"location":{"column":3,"line":60},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"throw error when git clone failed"},{"ancestorTitles":["Cli can create project (mocked)"],"duration":125,"failureDetails":[],"failureMessages":[],"fullName":"Cli can create project (mocked) validate ethereum project manifest","invocations":1,"location":{"column":3,"line":69},"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"validate ethereum project manifest"},{"ancestorTitles":["Cli can create project (mocked)"],"duration":null,"failureDetails":[],"failureMessages":[],"fullName":"Cli can create project (mocked) fetch templates","invocations":1,"location":{"column":6,"line":76},"numPassingAsserts":0,"retryReasons":[],"status":"pending","title":"fetch templates"},{"ancestorTitles":["Cli can create project (mocked)"],"duration":null,"failureDetails":[],"failureMessages":[],"fullName":"Cli can create project (mocked) fetch networks","invocations":1,"location":{"column":6,"line":80},"numPassingAsserts":0,"retryReasons":[],"status":"pending","title":"fetch networks"},{"ancestorTitles":["Cli can create project (mocked)"],"duration":null,"failureDetails":[],"failureMessages":[],"fullName":"Cli can create project (mocked) fetch example projects","invocations":1,"location":{"column":6,"line":84},"numPassingAsserts":0,"retryReasons":[],"status":"pending","title":"fetch example projects"},{"ancestorTitles":["Cli can create project (mocked)"],"duration":38,"failureDetails":[],"failureMessages":[],"fullName":"Cli can create project (mocked) readDefaults using regex","invocations":1,"location":{"column":3,"line":88},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"readDefaults using regex"},{"ancestorTitles":["Cli can create project (mocked)"],"duration":54,"failureDetails":[],"failureMessages":[],"fullName":"Cli can create project (mocked) Ensure regex correctness for ENDPOINT_REG","invocations":1,"location":{"column":3,"line":100},"numPassingAsserts":4,"retryReasons":[],"status":"passed","title":"Ensure regex correctness for ENDPOINT_REG"},{"ancestorTitles":["Cli can create project (mocked)"],"duration":32,"failureDetails":[],"failureMessages":[],"fullName":"Cli can create project (mocked) findReplace using regex","invocations":1,"location":{"column":3,"line":136},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"findReplace using regex"},{"ancestorTitles":["Cli can create project (mocked)"],"duration":12,"failureDetails":[],"failureMessages":[],"fullName":"Cli can create project (mocked) findReplace with string endpoints","invocations":1,"location":{"column":3,"line":148},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"findReplace with string endpoints"},{"ancestorTitles":["Cli can create project (mocked)"],"duration":16,"failureDetails":[],"failureMessages":[],"fullName":"Cli can create project (mocked) able to extract string endpoints","invocations":1,"location":{"column":3,"line":160},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"able to extract string endpoints"},{"ancestorTitles":["Cli can create project (mocked)"],"duration":247,"failureDetails":[],"failureMessages":[],"fullName":"Cli can create project (mocked) Ensure prepareManifest and preparePackage correctness for project.ts","invocations":1,"location":{"column":3,"line":170},"numPassingAsserts":6,"retryReasons":[],"status":"passed","title":"Ensure prepareManifest and preparePackage correctness for project.ts"},{"ancestorTitles":["Cli can create project (mocked)"],"duration":18,"failureDetails":[],"failureMessages":[],"fullName":"Cli can create project (mocked) Validate validateEthereumTsManifest","invocations":1,"location":{"column":3,"line":196},"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"Validate validateEthereumTsManifest"}],"endTime":1710903931570,"message":"","name":"/Users/scotttwiname/Projects/subql-main/packages/cli/src/controller/init-controller.spec.ts","startTime":1710903916172,"status":"focused","summary":""},{"assertionResults":[{"ancestorTitles":["configure utils"],"duration":8,"failureDetails":[],"failureMessages":[],"fullName":"configure utils could rebase node args with manifest file","invocations":1,"location":{"column":3,"line":11},"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"could rebase node args with manifest file"}],"endTime":1710903935293,"message":"","name":"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/utils/configure.spec.ts","startTime":1710903930154,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["IPFSReader"],"duration":1034,"failureDetails":[],"failureMessages":[],"fullName":"IPFSReader should return a project deployment","invocations":1,"location":{"column":3,"line":12},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should return a project deployment"},{"ancestorTitles":["IPFSReader"],"duration":306,"failureDetails":[],"failureMessages":[],"fullName":"IPFSReader ipfs should only fetch once when cache found","invocations":1,"location":{"column":3,"line":20},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"ipfs should only fetch once when cache found"}],"endTime":1710903937981,"message":"","name":"/Users/scotttwiname/Projects/subql-main/packages/common/src/project/readers/ipfs-reader.spec.ts","startTime":1710903931802,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["StoreOperations"],"duration":53,"failureDetails":[],"failureMessages":[],"fullName":"StoreOperations single leaf, expect merkleRoot to be hashed","invocations":1,"location":{"column":3,"line":236},"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"single leaf, expect merkleRoot to be hashed"},{"ancestorTitles":["StoreOperations"],"duration":3,"failureDetails":[],"failureMessages":[],"fullName":"StoreOperations put operation into the merkel leaf, and generate Merkle Root, also able to reset","invocations":1,"location":{"column":3,"line":252},"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"put operation into the merkel leaf, and generate Merkle Root, also able to reset"},{"ancestorTitles":["StoreOperations"],"duration":9,"failureDetails":[],"failureMessages":[],"fullName":"StoreOperations throw error when remove data is not string type","invocations":1,"location":{"column":3,"line":266},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"throw error when remove data is not string type"},{"ancestorTitles":["StoreOperations"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"StoreOperations could generate operation hash with negative value","invocations":1,"location":{"column":3,"line":274},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"could generate operation hash with negative value"}],"endTime":1710903940027,"message":"","name":"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/indexer/StoreOperations.spec.ts","startTime":1710903913223,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["Manifest generation"],"duration":461,"failureDetails":[],"failureMessages":[],"fullName":"Manifest generation should build ts manifest from multichain file","invocations":1,"location":{"column":5,"line":45},"numPassingAsserts":4,"retryReasons":[],"status":"passed","title":"should build ts manifest from multichain file"},{"ancestorTitles":["Manifest generation"],"duration":81,"failureDetails":[],"failureMessages":[],"fullName":"Manifest generation throws error on unknown file in multichain manifest","invocations":1,"location":{"column":5,"line":55},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"throws error on unknown file in multichain manifest"},{"ancestorTitles":["Manifest generation"],"duration":30,"failureDetails":[],"failureMessages":[],"fullName":"Manifest generation allows both ts and yaml file in multichain manifest","invocations":1,"location":{"column":5,"line":59},"numPassingAsserts":4,"retryReasons":[],"status":"passed","title":"allows both ts and yaml file in multichain manifest"},{"ancestorTitles":["Manifest generation"],"duration":26,"failureDetails":[],"failureMessages":[],"fullName":"Manifest generation should build ts manifest from yaml multichain file","invocations":1,"location":{"column":5,"line":69},"numPassingAsserts":5,"retryReasons":[],"status":"passed","title":"should build ts manifest from yaml multichain file"}],"endTime":1710903940743,"message":"","name":"/Users/scotttwiname/Projects/subql-main/packages/cli/src/utils/build.spec.ts","startTime":1710903935576,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["ReaderFactory"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"ReaderFactory should return the Github Reader","invocations":1,"location":{"column":3,"line":14},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should return the Github Reader"},{"ancestorTitles":["ReaderFactory"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"ReaderFactory should return the Local Reader","invocations":1,"location":{"column":3,"line":20},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should return the Local Reader"},{"ancestorTitles":["ReaderFactory"],"duration":19,"failureDetails":[],"failureMessages":[],"fullName":"ReaderFactory should return the IPFS Reader for a CID v0","invocations":1,"location":{"column":3,"line":26},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should return the IPFS Reader for a CID v0"},{"ancestorTitles":["ReaderFactory"],"duration":10,"failureDetails":[],"failureMessages":[],"fullName":"ReaderFactory should return the IPFS Reader for a CID v1","invocations":1,"location":{"column":3,"line":33},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should return the IPFS Reader for a CID v1"},{"ancestorTitles":["ReaderFactory"],"duration":null,"failureDetails":[],"failureMessages":[],"fullName":"ReaderFactory should support archive files","invocations":1,"location":{"column":6,"line":39},"numPassingAsserts":0,"retryReasons":[],"status":"pending","title":"should support archive files"},{"ancestorTitles":["ReaderFactory"],"duration":51,"failureDetails":[],"failureMessages":[],"fullName":"ReaderFactory throw error if getProjectRootAndManifest path not exist","invocations":1,"location":{"column":3,"line":45},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"throw error if getProjectRootAndManifest path not exist"},{"ancestorTitles":["ReaderFactory"],"duration":4,"failureDetails":[],"failureMessages":[],"fullName":"ReaderFactory throw error if ipfs path is not valid","invocations":1,"location":{"column":3,"line":49},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"throw error if ipfs path is not valid"}],"endTime":1710903948696,"message":"","name":"/Users/scotttwiname/Projects/subql-main/packages/common/src/project/readers/reader.spec.ts","startTime":1710903941163,"status":"focused","summary":""},{"assertionResults":[{"ancestorTitles":["project.yaml"],"duration":58,"failureDetails":[],"failureMessages":[],"fullName":"project.yaml can validate project.yaml","invocations":1,"location":{"column":3,"line":26},"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"can validate project.yaml"},{"ancestorTitles":["project.yaml"],"duration":9,"failureDetails":[],"failureMessages":[],"fullName":"project.yaml can fail validation if version not supported","invocations":1,"location":{"column":3,"line":31},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"can fail validation if version not supported"},{"ancestorTitles":["project.yaml"],"duration":100,"failureDetails":[],"failureMessages":[],"fullName":"project.yaml can validate a v1.0.0 project.yaml with a custom data source","invocations":1,"location":{"column":3,"line":34},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"can validate a v1.0.0 project.yaml with a custom data source"},{"ancestorTitles":["project.yaml"],"duration":13,"failureDetails":[],"failureMessages":[],"fullName":"project.yaml can validate a v1.0.0 project.yaml with templates","invocations":1,"location":{"column":3,"line":37},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"can validate a v1.0.0 project.yaml with templates"},{"ancestorTitles":["project.yaml"],"duration":6,"failureDetails":[],"failureMessages":[],"fullName":"project.yaml can convert genesis hash in v1.0.0 to chainId in deployment","invocations":1,"location":{"column":3,"line":41},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"can convert genesis hash in v1.0.0 to chainId in deployment"},{"ancestorTitles":["project.yaml"],"duration":12,"failureDetails":[],"failureMessages":[],"fullName":"project.yaml can get chainId for deployment","invocations":1,"location":{"column":3,"line":46},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"can get chainId for deployment"},{"ancestorTitles":["project.yaml"],"duration":10,"failureDetails":[],"failureMessages":[],"fullName":"project.yaml can get runner options for deployment","invocations":1,"location":{"column":3,"line":52},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"can get runner options for deployment"},{"ancestorTitles":["project.yaml"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"project.yaml can validate deployment runner versions","invocations":1,"location":{"column":3,"line":58},"numPassingAsserts":0,"retryReasons":[],"status":"passed","title":"can validate deployment runner versions"},{"ancestorTitles":["project.yaml"],"duration":39,"failureDetails":[],"failureMessages":[],"fullName":"project.yaml can validate bypass blocks","invocations":1,"location":{"column":3,"line":77},"numPassingAsserts":4,"retryReasons":[],"status":"passed","title":"can validate bypass blocks"},{"ancestorTitles":["project.yaml"],"duration":10,"failureDetails":[],"failureMessages":[],"fullName":"project.yaml can validate a v1.0.0 project.yaml with unsupported runner node","invocations":1,"location":{"column":3,"line":89},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"can validate a v1.0.0 project.yaml with unsupported runner node"},{"ancestorTitles":["project.yaml"],"duration":18,"failureDetails":[],"failureMessages":[],"fullName":"project.yaml can throw error with unsupported runner version","invocations":1,"location":{"column":3,"line":93},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"can throw error with unsupported runner version"},{"ancestorTitles":["project.yaml"],"duration":18,"failureDetails":[],"failureMessages":[],"fullName":"project.yaml can validate a v1.0.0 project.yaml runner and datasource mismatches","invocations":1,"location":{"column":3,"line":99},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"can validate a v1.0.0 project.yaml runner and datasource mismatches"},{"ancestorTitles":["project.yaml"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"project.yaml can fail validation if custom ds missing processor","invocations":1,"location":{"column":3,"line":105},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"can fail validation if custom ds missing processor"},{"ancestorTitles":["project.yaml"],"duration":8,"failureDetails":[],"failureMessages":[],"fullName":"project.yaml can convert project with assets to deployment","invocations":1,"location":{"column":3,"line":111},"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"can convert project with assets to deployment"},{"ancestorTitles":["project.yaml"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"project.yaml validate versions","invocations":1,"location":{"column":3,"line":117},"numPassingAsserts":16,"retryReasons":[],"status":"passed","title":"validate versions"},{"ancestorTitles":["project.yaml"],"duration":5,"failureDetails":[],"failureMessages":[],"fullName":"project.yaml Preserve Map content on deployment","invocations":1,"location":{"column":3,"line":139},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"Preserve Map content on deployment"}],"endTime":1710903949235,"message":"","name":"/Users/scotttwiname/Projects/subql-main/packages/common-substrate/src/project/project.spec.ts","startTime":1710903929463,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["FetchSevice"],"duration":5,"failureDetails":[],"failureMessages":[],"fullName":"FetchSevice can extract modulos from datasources","invocations":1,"location":{"column":3,"line":77},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"can extract modulos from datasources"}],"endTime":1710903948497,"message":"","name":"/Users/scotttwiname/Projects/subql-main/packages/node/src/indexer/fetch.service.spec.ts","startTime":1710903938090,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["load"],"duration":15,"failureDetails":[],"failureMessages":[],"fullName":"load throw error on incorrect format chain types","invocations":1,"location":{"column":3,"line":9},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"throw error on incorrect format chain types"},{"ancestorTitles":["load"],"duration":null,"failureDetails":[],"failureMessages":[],"fullName":"load can load yaml and json format chain types","invocations":1,"location":{"column":6,"line":13},"numPassingAsserts":0,"retryReasons":[],"status":"pending","title":"can load yaml and json format chain types"}],"endTime":1710903956792,"message":"","name":"/Users/scotttwiname/Projects/subql-main/packages/common-substrate/src/project/load.spec.ts","startTime":1710903949132,"status":"focused","summary":""},{"assertionResults":[{"ancestorTitles":["SetValueModel"],"duration":2,"failureDetails":[],"failureMessages":[],"fullName":"SetValueModel fromBelowHeight works","invocations":1,"location":{"column":3,"line":19},"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"fromBelowHeight works"},{"ancestorTitles":["SetValueModel"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"SetValueModel fromAboveHeight works","invocations":1,"location":{"column":3,"line":28},"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"fromAboveHeight works"}],"endTime":1710903959335,"message":"","name":"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/indexer/storeCache/setValueModel.spec.ts","startTime":1710903951206,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["LoggerColorLevel"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"LoggerColorLevel returns default for an unsupported level number","invocations":1,"location":{"column":3,"line":7},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"returns default for an unsupported level number"},{"ancestorTitles":["LoggerColorLevel"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"LoggerColorLevel returns the correct level for a level number","invocations":1,"location":{"column":3,"line":12},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"returns the correct level for a level number"}],"endTime":1710903964299,"message":"","name":"/Users/scotttwiname/Projects/subql-main/packages/utils/src/logger/colors.spec.ts","startTime":1710903957095,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["test jsonrpc client"],"duration":1290,"failureDetails":[],"failureMessages":[],"fullName":"test jsonrpc client Query polkadot's genesisHash via ws endpoint","invocations":1,"location":{"column":3,"line":12},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"Query polkadot's genesisHash via ws endpoint"},{"ancestorTitles":["test jsonrpc client"],"duration":654,"failureDetails":[],"failureMessages":[],"fullName":"test jsonrpc client Query polkadot's genesisHash via http endpoint","invocations":1,"location":{"column":3,"line":17},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"Query polkadot's genesisHash via http endpoint"}],"endTime":1710903970236,"message":"","name":"/Users/scotttwiname/Projects/subql-main/packages/cli/src/jsonrpc/jsonrpc.test.ts","startTime":1710903940428,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["DsProcessorService"],"duration":17,"failureDetails":[],"failureMessages":[],"fullName":"DsProcessorService can validate custom ds","invocations":1,"location":{"column":3,"line":51},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"can validate custom ds"},{"ancestorTitles":["DsProcessorService"],"duration":40,"failureDetails":[],"failureMessages":[],"fullName":"DsProcessorService can catch an invalid datasource kind","invocations":1,"location":{"column":3,"line":57},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"can catch an invalid datasource kind"},{"ancestorTitles":["DsProcessorService"],"duration":10,"failureDetails":[],"failureMessages":[],"fullName":"DsProcessorService can run a custom ds processor","invocations":1,"location":{"column":3,"line":76},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"can run a custom ds processor"}],"endTime":1710903970711,"message":"","name":"/Users/scotttwiname/Projects/subql-main/packages/node/src/indexer/ds-processor.service.spec.ts","startTime":1710903959405,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["WorkerBlockDispatcher"],"duration":3,"failureDetails":[],"failureMessages":[],"fullName":"WorkerBlockDispatcher getNextWorkerIndex should return the index of the next worker that has memory above the minimum limit","invocations":1,"location":{"column":3,"line":50},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"getNextWorkerIndex should return the index of the next worker that has memory above the minimum limit"},{"ancestorTitles":["WorkerBlockDispatcher"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"WorkerBlockDispatcher getNextWorkerIndex should skip workers that have memory below the minimum limit","invocations":1,"location":{"column":3,"line":55},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"getNextWorkerIndex should skip workers that have memory below the minimum limit"},{"ancestorTitles":["WorkerBlockDispatcher"],"duration":2,"failureDetails":[],"failureMessages":[],"fullName":"WorkerBlockDispatcher getNextWorkerIndex should wait for memory to be freed if all workers have memory below the minimum limit","invocations":1,"location":{"column":3,"line":63},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"getNextWorkerIndex should wait for memory to be freed if all workers have memory below the minimum limit"}],"endTime":1710903972905,"message":"","name":"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/indexer/blockDispatcher/worker-block-dispatcher.spec.ts","startTime":1710903964474,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["GithubReader"],"duration":1200,"failureDetails":[],"failureMessages":[],"fullName":"GithubReader should return the package json object","invocations":1,"location":{"column":3,"line":15},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should return the package json object"},{"ancestorTitles":["GithubReader"],"duration":331,"failureDetails":[],"failureMessages":[],"fullName":"GithubReader should return the project schema object","invocations":1,"location":{"column":3,"line":20},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should return the project schema object"}],"endTime":1710903979336,"message":"","name":"/Users/scotttwiname/Projects/subql-main/packages/common/src/project/readers/github-reader.spec.ts","startTime":1710903949644,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["UnfinalizedBlocksService"],"duration":4,"failureDetails":[],"failureMessages":[],"fullName":"UnfinalizedBlocksService can set finalized block","invocations":1,"location":{"column":3,"line":89},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"can set finalized block"},{"ancestorTitles":["UnfinalizedBlocksService"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"UnfinalizedBlocksService cant set a lower finalized block","invocations":1,"location":{"column":3,"line":95},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"cant set a lower finalized block"},{"ancestorTitles":["UnfinalizedBlocksService"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"UnfinalizedBlocksService keeps track of unfinalized blocks","invocations":1,"location":{"column":3,"line":103},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"keeps track of unfinalized blocks"},{"ancestorTitles":["UnfinalizedBlocksService"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"UnfinalizedBlocksService doesnt keep track of finalized blocks","invocations":1,"location":{"column":3,"line":115},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"doesnt keep track of finalized blocks"},{"ancestorTitles":["UnfinalizedBlocksService"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"UnfinalizedBlocksService can process unfinalized blocks","invocations":1,"location":{"column":3,"line":124},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"can process unfinalized blocks"},{"ancestorTitles":["UnfinalizedBlocksService"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"UnfinalizedBlocksService can handle a fork and rewind to the last finalized height","invocations":1,"location":{"column":3,"line":137},"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"can handle a fork and rewind to the last finalized height"},{"ancestorTitles":["UnfinalizedBlocksService"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"UnfinalizedBlocksService can handle a fork when some unfinalized blocks are invalid","invocations":1,"location":{"column":3,"line":158},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"can handle a fork when some unfinalized blocks are invalid"},{"ancestorTitles":["UnfinalizedBlocksService"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"UnfinalizedBlocksService can handle a fork when all unfinalized blocks are invalid","invocations":1,"location":{"column":3,"line":177},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"can handle a fork when all unfinalized blocks are invalid"},{"ancestorTitles":["UnfinalizedBlocksService"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"UnfinalizedBlocksService can handle a fork and when unfinalized blocks < finalized head","invocations":1,"location":{"column":3,"line":192},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"can handle a fork and when unfinalized blocks < finalized head"},{"ancestorTitles":["UnfinalizedBlocksService"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"UnfinalizedBlocksService can handle a fork and when unfinalized blocks < finalized head 2","invocations":1,"location":{"column":3,"line":207},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"can handle a fork and when unfinalized blocks < finalized head 2"},{"ancestorTitles":["UnfinalizedBlocksService"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"UnfinalizedBlocksService can handle a fork and when unfinalized blocks < finalized head with a large difference","invocations":1,"location":{"column":3,"line":228},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"can handle a fork and when unfinalized blocks < finalized head with a large difference"},{"ancestorTitles":["UnfinalizedBlocksService"],"duration":3,"failureDetails":[],"failureMessages":[],"fullName":"UnfinalizedBlocksService can rewind any unfinalized blocks when restarted and unfinalized blocks is disabled","invocations":1,"location":{"column":3,"line":243},"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"can rewind any unfinalized blocks when restarted and unfinalized blocks is disabled"}],"endTime":1710903981277,"message":"","name":"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/indexer/unfinalizedBlocks.service.spec.ts","startTime":1710903971293,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["BaseProjectService"],"duration":2,"failureDetails":[],"failureMessages":[],"fullName":"BaseProjectService hasDataSourcesAfterHeight","invocations":1,"location":{"column":3,"line":42},"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"hasDataSourcesAfterHeight"},{"ancestorTitles":["BaseProjectService"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"BaseProjectService hasDataSourcesAfterHeight - no available datasource","invocations":1,"location":{"column":3,"line":67},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"hasDataSourcesAfterHeight - no available datasource"},{"ancestorTitles":["BaseProjectService"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"BaseProjectService getDataSources","invocations":1,"location":{"column":3,"line":89},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"getDataSources"},{"ancestorTitles":["BaseProjectService","getDatasourceMap"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"BaseProjectService getDatasourceMap should add endBlock heights correctly","invocations":1,"location":{"column":5,"line":106},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should add endBlock heights correctly"},{"ancestorTitles":["BaseProjectService","getDatasourceMap"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"BaseProjectService getDatasourceMap should contain datasources from current project only","invocations":1,"location":{"column":5,"line":172},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should contain datasources from current project only"},{"ancestorTitles":["BaseProjectService","getDatasourceMap"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"BaseProjectService getDatasourceMap build correct map when upgrade has the same start height as first project","invocations":1,"location":{"column":5,"line":200},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"build correct map when upgrade has the same start height as first project"}],"endTime":1710903981357,"message":"","name":"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/indexer/project.service.spec.ts","startTime":1710903973429,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["Query depth limit"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"Query depth limit checkDepth does not throw on shallow depth","invocations":1,"location":{"column":3,"line":34},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"checkDepth does not throw on shallow depth"},{"ancestorTitles":["Query depth limit"],"duration":14,"failureDetails":[],"failureMessages":[],"fullName":"Query depth limit checkDepth does throw when max depth is exceeded","invocations":1,"location":{"column":3,"line":39},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"checkDepth does throw when max depth is exceeded"}],"endTime":1710903986666,"message":"","name":"/Users/scotttwiname/Projects/subql-main/packages/query/src/graphql/plugins/QueryDepthLimitPlugin.spec.ts","startTime":1710903970370,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["Worker Store Service"],"duration":930,"failureDetails":[],"failureMessages":[],"fullName":"Worker Store Service can make a request with an object","invocations":1,"location":{"column":3,"line":72},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"can make a request with an object"},{"ancestorTitles":["Worker Store Service"],"duration":758,"failureDetails":[],"failureMessages":[],"fullName":"Worker Store Service can make a respone with an object","invocations":1,"location":{"column":3,"line":80},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"can make a respone with an object"}],"endTime":1710903988547,"message":"","name":"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/indexer/worker/worker.store.service.test.ts","startTime":1710903981587,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["Project Upgrades","Loading projects"],"duration":5,"failureDetails":[],"failureMessages":[],"fullName":"Project Upgrades Loading projects can load a project with no parents","invocations":1,"location":{"column":5,"line":120},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"can load a project with no parents"},{"ancestorTitles":["Project Upgrades","Loading projects"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"Project Upgrades Loading projects can load all parent projects","invocations":1,"location":{"column":5,"line":130},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"can load all parent projects"},{"ancestorTitles":["Project Upgrades","Loading projects"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"Project Upgrades Loading projects can load all parent projects with untilBlock field","invocations":1,"location":{"column":5,"line":140},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"can load all parent projects with untilBlock field"},{"ancestorTitles":["Project Upgrades","Loading projects"],"duration":10,"failureDetails":[],"failureMessages":[],"fullName":"Project Upgrades Loading projects can handle projects that somehow refer to each other","invocations":1,"location":{"column":5,"line":150},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"can handle projects that somehow refer to each other"},{"ancestorTitles":["Project Upgrades","Loading projects"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"Project Upgrades Loading projects can load all parent projects upto startHeight","invocations":1,"location":{"column":5,"line":156},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"can load all parent projects upto startHeight"},{"ancestorTitles":["Project Upgrades","Loading projects"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"Project Upgrades Loading projects can use the correct project when the parent upgrades at the start height","invocations":1,"location":{"column":5,"line":167},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"can use the correct project when the parent upgrades at the start height"},{"ancestorTitles":["Project Upgrades","Loading projects"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"Project Upgrades Loading projects can load all parent projects upto and including startHeight","invocations":1,"location":{"column":5,"line":194},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"can load all parent projects upto and including startHeight"},{"ancestorTitles":["Project Upgrades","Loading projects"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"Project Upgrades Loading projects will throw if parent projects are not at an earlier height","invocations":1,"location":{"column":5,"line":204},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"will throw if parent projects are not at an earlier height"},{"ancestorTitles":["Project Upgrades","Loading projects"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"Project Upgrades Loading projects will throw if there are no parents and earlier start height","invocations":1,"location":{"column":5,"line":210},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"will throw if there are no parents and earlier start height"},{"ancestorTitles":["Project Upgrades","Loading projects"],"duration":14,"failureDetails":[],"failureMessages":[],"fullName":"Project Upgrades Loading projects will validate all parents are for the same network","invocations":1,"location":{"column":5,"line":219},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"will validate all parents are for the same network"},{"ancestorTitles":["Project Upgrades","Loading projects"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"Project Upgrades Loading projects will validate all parents are for the same node runner","invocations":1,"location":{"column":5,"line":239},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"will validate all parents are for the same node runner"},{"ancestorTitles":["Project Upgrades","Getting projects for heights"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"Project Upgrades Getting projects for heights can get the latest project","invocations":1,"location":{"column":5,"line":275},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"can get the latest project"},{"ancestorTitles":["Project Upgrades","Getting projects for heights"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"Project Upgrades Getting projects for heights gets the right project with an exact match","invocations":1,"location":{"column":5,"line":279},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"gets the right project with an exact match"},{"ancestorTitles":["Project Upgrades","Getting projects for heights"],"duration":3,"failureDetails":[],"failureMessages":[],"fullName":"Project Upgrades Getting projects for heights throws an error before the first project start height","invocations":1,"location":{"column":5,"line":283},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"throws an error before the first project start height"},{"ancestorTitles":["Project Upgrades","Upgradable subquery project"],"duration":3,"failureDetails":[],"failureMessages":[],"fullName":"Project Upgrades Upgradable subquery project cant set values other than `currentHeightg`","invocations":1,"location":{"column":5,"line":310},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"cant set values other than `currentHeightg`"},{"ancestorTitles":["Project Upgrades","Upgradable subquery project"],"duration":2,"failureDetails":[],"failureMessages":[],"fullName":"Project Upgrades Upgradable subquery project can set the current height on the service","invocations":1,"location":{"column":5,"line":314},"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"can set the current height on the service"},{"ancestorTitles":["Project Upgrades","Upgradable subquery project"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"Project Upgrades Upgradable subquery project can set the current height on the project","invocations":1,"location":{"column":5,"line":321},"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"can set the current height on the project"},{"ancestorTitles":["Project Upgrades","Upgradable subquery project"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"Project Upgrades Upgradable subquery project the project is the right project for a set height","invocations":1,"location":{"column":5,"line":328},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"the project is the right project for a set height"},{"ancestorTitles":["Project Upgrades","Upgradable subquery project"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"Project Upgrades Upgradable subquery project can update the indexed deployments","invocations":1,"location":{"column":5,"line":334},"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"can update the indexed deployments"},{"ancestorTitles":["Project Upgrades","Upgrade metadata validation"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"Project Upgrades Upgrade metadata validation succeds with an exact match","invocations":1,"location":{"column":5,"line":364},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"succeds with an exact match"},{"ancestorTitles":["Project Upgrades","Upgrade metadata validation"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"Project Upgrades Upgrade metadata validation succeds with a partial match","invocations":1,"location":{"column":5,"line":369},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"succeds with a partial match"},{"ancestorTitles":["Project Upgrades","Upgrade metadata validation"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"Project Upgrades Upgrade metadata validation succeeds with no indexed data","invocations":1,"location":{"column":5,"line":374},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"succeeds with no indexed data"},{"ancestorTitles":["Project Upgrades","Upgrade metadata validation"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"Project Upgrades Upgrade metadata validation succeeds with upgraded projects before the upgraded feature","invocations":1,"location":{"column":5,"line":378},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"succeeds with upgraded projects before the upgraded feature"},{"ancestorTitles":["Project Upgrades","Upgrade metadata validation"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"Project Upgrades Upgrade metadata validation can rewind if an upgrade needs replacing","invocations":1,"location":{"column":5,"line":384},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"can rewind if an upgrade needs replacing"},{"ancestorTitles":["Project Upgrades","Upgrade metadata validation"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"Project Upgrades Upgrade metadata validation throws if there are no matching projects","invocations":1,"location":{"column":5,"line":392},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"throws if there are no matching projects"},{"ancestorTitles":["Project Upgrades","Upgrade metadata validation"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"Project Upgrades Upgrade metadata validation validates if project doesnt have upgrades","invocations":1,"location":{"column":5,"line":399},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"validates if project doesnt have upgrades"}],"endTime":1710903990513,"message":"","name":"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/configure/ProjectUpgrade.service.spec.ts","startTime":1710903981532,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["Store Service"],"duration":60,"failureDetails":[],"failureMessages":[],"fullName":"Store Service addIdAndBlockRangeAttributes","invocations":1,"location":{"column":3,"line":11},"numPassingAsserts":4,"retryReasons":[],"status":"passed","title":"addIdAndBlockRangeAttributes"}],"endTime":1710903994475,"message":"","name":"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/indexer/store.service.spec.ts","startTime":1710903979523,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["MultiChain - ADD"],"duration":113,"failureDetails":[],"failureMessages":[],"fullName":"MultiChain - ADD can add chain to multichain manifest - valid schema paths","invocations":1,"location":{"column":3,"line":144},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"can add chain to multichain manifest - valid schema paths"},{"ancestorTitles":["MultiChain - ADD"],"duration":51,"failureDetails":[],"failureMessages":[],"fullName":"MultiChain - ADD cannot add chain to multichain manifest - invalid schema path","invocations":1,"location":{"column":3,"line":153},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"cannot add chain to multichain manifest - invalid schema path"}],"endTime":1710903996387,"message":"","name":"/Users/scotttwiname/Projects/subql-main/packages/cli/src/controller/add-chain-controller.spec.ts","startTime":1710903988659,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["TestRunner"],"duration":20,"failureDetails":[],"failureMessages":[],"fullName":"TestRunner cleans the database after each test run","invocations":1,"location":{"column":3,"line":45},"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"cleans the database after each test run"},{"ancestorTitles":["TestRunner"],"duration":22,"failureDetails":[],"failureMessages":[],"fullName":"TestRunner increments passedTests when expected and actual entity attributes match","invocations":1,"location":{"column":3,"line":65},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"increments passedTests when expected and actual entity attributes match"},{"ancestorTitles":["TestRunner"],"duration":3,"failureDetails":[],"failureMessages":[],"fullName":"TestRunner increments failedTests when expected and actual entity attributes do not match","invocations":1,"location":{"column":3,"line":94},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"increments failedTests when expected and actual entity attributes do not match"},{"ancestorTitles":["TestRunner"],"duration":3,"failureDetails":[],"failureMessages":[],"fullName":"TestRunner increments failedTests when indexBlock throws an error","invocations":1,"location":{"column":3,"line":129},"numPassingAsserts":5,"retryReasons":[],"status":"passed","title":"increments failedTests when indexBlock throws an error"}],"endTime":1710904001194,"message":"","name":"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/indexer/test.runner.spec.ts","startTime":1710903986818,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["csv Store Service"],"duration":27,"failureDetails":[],"failureMessages":[],"fullName":"csv Store Service Able to export to csv with correct output, No duplicated headers","invocations":1,"location":{"column":3,"line":20},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"Able to export to csv with correct output, No duplicated headers"},{"ancestorTitles":["csv Store Service"],"duration":11,"failureDetails":[],"failureMessages":[],"fullName":"csv Store Service JSON serialisation","invocations":1,"location":{"column":3,"line":61},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"JSON serialisation"}],"endTime":1710904001889,"message":"","name":"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/indexer/storeCache/csvStore.service.spec.ts","startTime":1710903990986,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["ConnectionPoolStateManager"],"duration":2,"failureDetails":[],"failureMessages":[],"fullName":"ConnectionPoolStateManager chooses primary endpoint first","invocations":1,"location":{"column":3,"line":15},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"chooses primary endpoint first"},{"ancestorTitles":["ConnectionPoolStateManager"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"ConnectionPoolStateManager does not choose primary endpoint if failed","invocations":1,"location":{"column":3,"line":43},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"does not choose primary endpoint if failed"},{"ancestorTitles":["ConnectionPoolStateManager"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"ConnectionPoolStateManager can calculate performance score for response time of zero","invocations":1,"location":{"column":3,"line":71},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"can calculate performance score for response time of zero"},{"ancestorTitles":["ConnectionPoolStateManager"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"ConnectionPoolStateManager performance score decreases with increasing response time","invocations":1,"location":{"column":3,"line":76},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"performance score decreases with increasing response time"}],"endTime":1710904005912,"message":"","name":"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/indexer/connectionPoolState.manager.spec.ts","startTime":1710903996539,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["NodeConfig"],"duration":3,"failureDetails":[],"failureMessages":[],"fullName":"NodeConfig supports read from yaml","invocations":1,"location":{"column":3,"line":8},"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"supports read from yaml"},{"ancestorTitles":["NodeConfig"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"NodeConfig support read from json","invocations":1,"location":{"column":3,"line":17},"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"support read from json"},{"ancestorTitles":["NodeConfig"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"NodeConfig rebase file config from manifest runner options","invocations":1,"location":{"column":3,"line":26},"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"rebase file config from manifest runner options"},{"ancestorTitles":["NodeConfig"],"duration":50,"failureDetails":[],"failureMessages":[],"fullName":"NodeConfig throw error for unknown configs","invocations":1,"location":{"column":3,"line":43},"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"throw error for unknown configs"}],"endTime":1710904010160,"message":"","name":"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/configure/NodeConfig.spec.ts","startTime":1710904001561,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["utils that handle schema.graphql"],"duration":5,"failureDetails":[],"failureMessages":[],"fullName":"utils that handle schema.graphql support @entity annotation in the schema","invocations":1,"location":{"column":3,"line":9},"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"support @entity annotation in the schema"},{"ancestorTitles":["utils that handle schema.graphql"],"duration":10,"failureDetails":[],"failureMessages":[],"fullName":"utils that handle schema.graphql can extract entities from the schema","invocations":1,"location":{"column":3,"line":22},"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"can extract entities from the schema"},{"ancestorTitles":["utils that handle schema.graphql"],"duration":22,"failureDetails":[],"failureMessages":[],"fullName":"utils that handle schema.graphql throw error for unsupported types","invocations":1,"location":{"column":3,"line":36},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"throw error for unsupported types"},{"ancestorTitles":["utils that handle schema.graphql"],"duration":20,"failureDetails":[],"failureMessages":[],"fullName":"utils that handle schema.graphql support Bytes and Float types","invocations":1,"location":{"column":3,"line":46},"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"support Bytes and Float types"},{"ancestorTitles":["utils that handle schema.graphql"],"duration":47,"failureDetails":[],"failureMessages":[],"fullName":"utils that handle schema.graphql throw error for union/enum/interface type","invocations":1,"location":{"column":3,"line":60},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"throw error for union/enum/interface type"},{"ancestorTitles":["utils that handle schema.graphql"],"duration":18,"failureDetails":[],"failureMessages":[],"fullName":"utils that handle schema.graphql can extract nested models and relations from the schema","invocations":1,"location":{"column":3,"line":94},"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"can extract nested models and relations from the schema"},{"ancestorTitles":["utils that handle schema.graphql"],"duration":31,"failureDetails":[],"failureMessages":[],"fullName":"utils that handle schema.graphql throw error if derivedFrom field with missing field name in corresponding entity","invocations":1,"location":{"column":3,"line":168},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"throw error if derivedFrom field with missing field name in corresponding entity"},{"ancestorTitles":["utils that handle schema.graphql"],"duration":208,"failureDetails":[],"failureMessages":[],"fullName":"utils that handle schema.graphql can extract indexed fields from the schema","invocations":1,"location":{"column":3,"line":186},"numPassingAsserts":5,"retryReasons":[],"status":"passed","title":"can extract indexed fields from the schema"},{"ancestorTitles":["utils that handle schema.graphql"],"duration":5,"failureDetails":[],"failureMessages":[],"fullName":"utils that handle schema.graphql throw if add index on pk","invocations":1,"location":{"column":3,"line":203},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"throw if add index on pk"},{"ancestorTitles":["utils that handle schema.graphql"],"duration":5,"failureDetails":[],"failureMessages":[],"fullName":"utils that handle schema.graphql can extract indexed fields from foreign field","invocations":1,"location":{"column":3,"line":213},"numPassingAsserts":6,"retryReasons":[],"status":"passed","title":"can extract indexed fields from foreign field"},{"ancestorTitles":["utils that handle schema.graphql"],"duration":5,"failureDetails":[],"failureMessages":[],"fullName":"utils that handle schema.graphql can read jsonfield","invocations":1,"location":{"column":3,"line":241},"numPassingAsserts":7,"retryReasons":[],"status":"passed","title":"can read jsonfield"},{"ancestorTitles":["utils that handle schema.graphql"],"duration":5,"failureDetails":[],"failureMessages":[],"fullName":"utils that handle schema.graphql can read jsonfield with indexed option","invocations":1,"location":{"column":3,"line":267},"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"can read jsonfield with indexed option"},{"ancestorTitles":["utils that handle schema.graphql"],"duration":5,"failureDetails":[],"failureMessages":[],"fullName":"utils that handle schema.graphql can read composite index","invocations":1,"location":{"column":3,"line":295},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"can read composite index"},{"ancestorTitles":["utils that handle schema.graphql"],"duration":5,"failureDetails":[],"failureMessages":[],"fullName":"utils that handle schema.graphql can create composite index for fk field","invocations":1,"location":{"column":3,"line":309},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"can create composite index for fk field"},{"ancestorTitles":["utils that handle schema.graphql"],"duration":8,"failureDetails":[],"failureMessages":[],"fullName":"utils that handle schema.graphql will throw if composite index field not found within entity","invocations":1,"location":{"column":3,"line":326},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"will throw if composite index field not found within entity"},{"ancestorTitles":["utils that handle schema.graphql"],"duration":11,"failureDetails":[],"failureMessages":[],"fullName":"utils that handle schema.graphql will throw when found duplicate composite index","invocations":1,"location":{"column":3,"line":338},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"will throw when found duplicate composite index"},{"ancestorTitles":["utils that handle schema.graphql"],"duration":10,"failureDetails":[],"failureMessages":[],"fullName":"utils that handle schema.graphql will throw if number of composite indexes excess limit","invocations":1,"location":{"column":3,"line":353},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"will throw if number of composite indexes excess limit"},{"ancestorTitles":["utils that handle schema.graphql"],"duration":9,"failureDetails":[],"failureMessages":[],"fullName":"utils that handle schema.graphql can read fulltext directive","invocations":1,"location":{"column":3,"line":368},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"can read fulltext directive"},{"ancestorTitles":["utils that handle schema.graphql"],"duration":7,"failureDetails":[],"failureMessages":[],"fullName":"utils that handle schema.graphql can throw fulltext directive when field doesnt exist on entity","invocations":1,"location":{"column":3,"line":384},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"can throw fulltext directive when field doesnt exist on entity"},{"ancestorTitles":["utils that handle schema.graphql"],"duration":7,"failureDetails":[],"failureMessages":[],"fullName":"utils that handle schema.graphql can throw fulltext directive when field isnt a string","invocations":1,"location":{"column":3,"line":400},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"can throw fulltext directive when field isnt a string"}],"endTime":1710904013086,"message":"","name":"/Users/scotttwiname/Projects/subql-main/packages/utils/src/graphql/graphql.spec.ts","startTime":1710904002289,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["LocalReader"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"LocalReader should return the package json object","invocations":1,"location":{"column":3,"line":16},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should return the package json object"},{"ancestorTitles":["LocalReader"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"LocalReader should return the project schema object","invocations":1,"location":{"column":3,"line":21},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should return the project schema object"}],"endTime":1710904017131,"message":"","name":"/Users/scotttwiname/Projects/subql-main/packages/common/src/project/readers/local-reader.spec.ts","startTime":1710904006478,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["Tests for validate, CLI"],"duration":2,"failureDetails":[],"failureMessages":[],"fullName":"Tests for validate, CLI ensure EnumValidator","invocations":1,"location":{"column":3,"line":8},"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"ensure EnumValidator"}],"endTime":1710904020660,"message":"","name":"/Users/scotttwiname/Projects/subql-main/packages/cli/src/controller/validate.spec.ts","startTime":1710904010431,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["Poi Block"],"duration":3,"failureDetails":[],"failureMessages":[],"fullName":"Poi Block create default block, block that has no operation and not been fetched","invocations":1,"location":{"column":3,"line":7},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"create default block, block that has no operation and not been fetched"},{"ancestorTitles":["Poi Block"],"duration":3,"failureDetails":[],"failureMessages":[],"fullName":"Poi Block chainBlockHash and Operation hash should either both null or both defined, otherwise should throw error","invocations":1,"location":{"column":3,"line":12},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"chainBlockHash and Operation hash should either both null or both defined, otherwise should throw error"},{"ancestorTitles":["Poi Block"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"Poi Block for default block, parentHash must be provided, otherwise should throw","invocations":1,"location":{"column":3,"line":24},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"for default block, parentHash must be provided, otherwise should throw"},{"ancestorTitles":["Poi Block"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"Poi Block create new block with operations, and place hold for parent hash and hash","invocations":1,"location":{"column":3,"line":28},"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"create new block with operations, and place hold for parent hash and hash"},{"ancestorTitles":["Poi Block"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"Poi Block update existing block with parent hash, it should create its own block hash","invocations":1,"location":{"column":3,"line":41},"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"update existing block with parent hash, it should create its own block hash"},{"ancestorTitles":["Poi Block"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"Poi Block supports hex block hashes","invocations":1,"location":{"column":3,"line":53},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"supports hex block hashes"},{"ancestorTitles":["Poi Block"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"Poi Block supports u8a block hashes","invocations":1,"location":{"column":3,"line":67},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"supports u8a block hashes"},{"ancestorTitles":["Poi Block"],"duration":3,"failureDetails":[],"failureMessages":[],"fullName":"Poi Block supports base58 block hashes","invocations":1,"location":{"column":3,"line":76},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"supports base58 block hashes"},{"ancestorTitles":["Poi Block"],"duration":4,"failureDetails":[],"failureMessages":[],"fullName":"Poi Block supports base64 block hashes","invocations":1,"location":{"column":3,"line":88},"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"supports base64 block hashes"},{"ancestorTitles":["Poi Block"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"Poi Block throws on unsupported block hash format","invocations":1,"location":{"column":3,"line":119},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"throws on unsupported block hash format"}],"endTime":1710904023630,"message":"","name":"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/indexer/poi/PoiBlock.spec.ts","startTime":1710904013180,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["general types"],"duration":4,"failureDetails":[],"failureMessages":[],"fullName":"general types can get json type","invocations":1,"location":{"column":3,"line":10},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"can get json type"},{"ancestorTitles":["general types"],"duration":2,"failureDetails":[],"failureMessages":[],"fullName":"general types get sequelize date type","invocations":1,"location":{"column":3,"line":15},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"get sequelize date type"},{"ancestorTitles":["general types"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"general types get unsupported type","invocations":1,"location":{"column":3,"line":20},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"get unsupported type"},{"ancestorTitles":["general types"],"duration":4,"failureDetails":[],"failureMessages":[],"fullName":"general types Int type should able to hash negative value","invocations":1,"location":{"column":3,"line":24},"numPassingAsserts":6,"retryReasons":[],"status":"passed","title":"Int type should able to hash negative value"}],"endTime":1710904027796,"message":"","name":"/Users/scotttwiname/Projects/subql-main/packages/utils/src/types/generalTypes.spec.ts","startTime":1710903995823,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["Ensure correct logic on blockHeightMap"],"duration":12,"failureDetails":[],"failureMessages":[],"fullName":"Ensure correct logic on blockHeightMap getWithinRange should return projects within specified height range","invocations":1,"location":{"column":3,"line":7},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"getWithinRange should return projects within specified height range"}],"endTime":1710904028394,"message":"","name":"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/utils/blockHeightMap.spec.ts","startTime":1710904017420,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["DynamicDsService"],"duration":2,"failureDetails":[],"failureMessages":[],"fullName":"DynamicDsService loads all datasources and params when init","invocations":1,"location":{"column":3,"line":37},"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"loads all datasources and params when init"},{"ancestorTitles":["DynamicDsService"],"duration":2,"failureDetails":[],"failureMessages":[],"fullName":"DynamicDsService keeps reference to added dynamic datasources","invocations":1,"location":{"column":3,"line":45},"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"keeps reference to added dynamic datasources"},{"ancestorTitles":["DynamicDsService"],"duration":58,"failureDetails":[],"failureMessages":[],"fullName":"DynamicDsService resets dynamic datasources","invocations":1,"location":{"column":3,"line":57},"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"resets dynamic datasources"},{"ancestorTitles":["DynamicDsService"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"DynamicDsService getDynamicDatasources with force reloads from metadata","invocations":1,"location":{"column":3,"line":67},"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"getDynamicDatasources with force reloads from metadata"}],"endTime":1710904033871,"message":"","name":"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/indexer/dynamic-ds.service.spec.ts","startTime":1710904024181,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["splitMultichainDataFields test"],"duration":4,"failureDetails":[],"failureMessages":[],"fullName":"splitMultichainDataFields test Single chain, single endpoint","invocations":1,"location":{"column":3,"line":10},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"Single chain, single endpoint"},{"ancestorTitles":["splitMultichainDataFields test"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"splitMultichainDataFields test multi chain, multi endpoint","invocations":1,"location":{"column":3,"line":16},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"multi chain, multi endpoint"},{"ancestorTitles":["splitMultichainDataFields test"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"splitMultichainDataFields test Incorrect values (endpoint without chainId)","invocations":1,"location":{"column":3,"line":22},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"Incorrect values (endpoint without chainId)"}],"endTime":1710904034432,"message":"","name":"/Users/scotttwiname/Projects/subql-main/packages/cli/src/controller/deploy-controller.test.ts","startTime":1710904020910,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["Array util"],"duration":2,"failureDetails":[],"failureMessages":[],"fullName":"Array util findDuplicateStringArray","invocations":1,"location":{"column":3,"line":7},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"findDuplicateStringArray"}],"endTime":1710904040590,"message":"","name":"/Users/scotttwiname/Projects/subql-main/packages/utils/src/array/array.spec.ts","startTime":1710904034095,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["InMemoryCacheService"],"duration":3,"failureDetails":[],"failureMessages":[],"fullName":"InMemoryCacheService should be created","invocations":1,"location":{"column":3,"line":13},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should be created"},{"ancestorTitles":["InMemoryCacheService"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"InMemoryCacheService should set and get value correctly","invocations":1,"location":{"column":3,"line":17},"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"should set and get value correctly"},{"ancestorTitles":["InMemoryCacheService"],"duration":0,"failureDetails":[],"failureMessages":[],"fullName":"InMemoryCacheService should return undefined if key does not exist","invocations":1,"location":{"column":3,"line":37},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should return undefined if key does not exist"}],"endTime":1710904045122,"message":"","name":"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/indexer/inMemoryCache.service.spec.ts","startTime":1710904028450,"status":"passed","summary":""},{"assertionResults":[],"coverage":{},"endTime":1710904328682,"message":" \u001b[1m● \u001b[22mTest suite failed to run\n\n Your test suite must contain at least one test.\n\n \u001b[2mat onResult (\u001b[22mnode_modules/@jest/core/build/TestScheduler.js\u001b[2m:133:18)\u001b[22m\n \u001b[2mat \u001b[22mnode_modules/@jest/core/build/TestScheduler.js\u001b[2m:254:19\u001b[22m\n \u001b[2mat \u001b[22mnode_modules/emittery/index.js\u001b[2m:363:13\u001b[22m\n at Array.map ()\n \u001b[2mat Emittery.emit (\u001b[22mnode_modules/emittery/index.js\u001b[2m:361:23)\u001b[22m\n","name":"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/indexer/poi/poi.service.spec.ts","startTime":1710904328682,"status":"failed","summary":""},{"assertionResults":[{"ancestorTitles":["build gql"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"build gql gql 1","invocations":1,"location":{"column":3,"line":8},"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"gql 1"}],"endTime":1710904049389,"message":"","name":"/Users/scotttwiname/Projects/subql-main/packages/utils/src/graphql/builder.spec.ts","startTime":1710904028427,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["SchemaMigration integration tests"],"duration":12129,"failureDetails":[],"failureMessages":[],"fullName":"SchemaMigration integration tests Migrate to new schema","invocations":1,"location":{"column":3,"line":51},"numPassingAsserts":9,"retryReasons":[],"status":"passed","title":"Migrate to new schema"},{"ancestorTitles":["SchemaMigration integration tests"],"duration":12234,"failureDetails":[],"failureMessages":[],"fullName":"SchemaMigration integration tests Ensure correct JSON field creation with nested json","invocations":1,"location":{"column":3,"line":152},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"Ensure correct JSON field creation with nested json"},{"ancestorTitles":["SchemaMigration integration tests"],"duration":11506,"failureDetails":[],"failureMessages":[],"fullName":"SchemaMigration integration tests Migration on index removal, creation","invocations":1,"location":{"column":3,"line":180},"numPassingAsserts":5,"retryReasons":[],"status":"passed","title":"Migration on index removal, creation"},{"ancestorTitles":["SchemaMigration integration tests"],"duration":10893,"failureDetails":[],"failureMessages":[],"fullName":"SchemaMigration integration tests Should initialize correct schema based on startHeight","invocations":1,"location":{"column":3,"line":244},"numPassingAsserts":4,"retryReasons":[],"status":"passed","title":"Should initialize correct schema based on startHeight"},{"ancestorTitles":["SchemaMigration integration tests"],"duration":10793,"failureDetails":[],"failureMessages":[],"fullName":"SchemaMigration integration tests On entity drop isRewindable should be false","invocations":1,"location":{"column":3,"line":271},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"On entity drop isRewindable should be false"},{"ancestorTitles":["SchemaMigration integration tests"],"duration":10934,"failureDetails":[],"failureMessages":[],"fullName":"SchemaMigration integration tests Should update sequelize Models in cachedModels","invocations":1,"location":{"column":3,"line":288},"numPassingAsserts":4,"retryReasons":[],"status":"passed","title":"Should update sequelize Models in cachedModels"},{"ancestorTitles":["SchemaMigration integration tests"],"duration":10908,"failureDetails":[],"failureMessages":[],"fullName":"SchemaMigration integration tests Ensure no duplication in cacheModels","invocations":1,"location":{"column":3,"line":325},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"Ensure no duplication in cacheModels"},{"ancestorTitles":["SchemaMigration integration tests"],"duration":11138,"failureDetails":[],"failureMessages":[],"fullName":"SchemaMigration integration tests Ensure correctness on non-historical migrate","invocations":1,"location":{"column":3,"line":345},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"Ensure correctness on non-historical migrate"},{"ancestorTitles":["SchemaMigration integration tests"],"duration":11430,"failureDetails":[],"failureMessages":[],"fullName":"SchemaMigration integration tests On Failed migration, no metadata transaction should be applied","invocations":1,"location":{"column":3,"line":379},"numPassingAsserts":4,"retryReasons":[],"status":"passed","title":"On Failed migration, no metadata transaction should be applied"},{"ancestorTitles":["SchemaMigration integration tests"],"duration":11079,"failureDetails":[],"failureMessages":[],"fullName":"SchemaMigration integration tests add relations on migration with historical","invocations":1,"location":{"column":3,"line":414},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"add relations on migration with historical"},{"ancestorTitles":["SchemaMigration integration tests"],"duration":12681,"failureDetails":[],"failureMessages":[],"fullName":"SchemaMigration integration tests add relations on migration no historical","invocations":1,"location":{"column":3,"line":461},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"add relations on migration no historical"},{"ancestorTitles":["SchemaMigration integration tests"],"duration":10252,"failureDetails":[],"failureMessages":[],"fullName":"SchemaMigration integration tests drop relational with no historical","invocations":1,"location":{"column":3,"line":502},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"drop relational with no historical"},{"ancestorTitles":["SchemaMigration integration tests"],"duration":11503,"failureDetails":[],"failureMessages":[],"fullName":"SchemaMigration integration tests Able to drop table and column with relations","invocations":1,"location":{"column":3,"line":539},"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"Able to drop table and column with relations"},{"ancestorTitles":["SchemaMigration integration tests"],"duration":10114,"failureDetails":[],"failureMessages":[],"fullName":"SchemaMigration integration tests create subscription on table creation","invocations":1,"location":{"column":3,"line":569},"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"create subscription on table creation"},{"ancestorTitles":["SchemaMigration integration tests"],"duration":10259,"failureDetails":[],"failureMessages":[],"fullName":"SchemaMigration integration tests support enum drop and enum creation","invocations":1,"location":{"column":3,"line":599},"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"support enum drop and enum creation"}],"endTime":1710904218516,"message":"","name":"/Users/scotttwiname/Projects/subql-main/packages/node/src/configure/SchemaMigration.service.test.ts","startTime":1710904040700,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["Cli publish"],"duration":139123,"failureDetails":[],"failureMessages":[],"fullName":"Cli publish should not allow uploading a v0.0.1 spec version project","invocations":1,"location":{"column":5,"line":84},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should not allow uploading a v0.0.1 spec version project"},{"ancestorTitles":["Cli publish"],"duration":2022,"failureDetails":[{}],"failureMessages":["Error: Publish project to default failed, HTTPError: \r\n403 Forbidden\r\n\r\n

403 Forbidden

\r\n
nginx/1.17.7
\r\n\r\n\r\n\n at /Users/scotttwiname/Projects/subql-main/packages/cli/src/controller/publish-controller.ts:176:15\n at processTicksAndRejections (node:internal/process/task_queues:95:5)\n at async Promise.all (index 0)\n at async uploadFile (/Users/scotttwiname/Projects/subql-main/packages/cli/src/controller/publish-controller.ts:179:30)\n at async Object. (/Users/scotttwiname/Projects/subql-main/packages/cli/src/controller/publish-controller.spec.ts:92:21)"],"fullName":"Cli publish upload file to ipfs","invocations":1,"location":{"column":5,"line":88},"numPassingAsserts":0,"retryReasons":[],"status":"failed","title":"upload file to ipfs"},{"ancestorTitles":["Cli publish"],"duration":142899,"failureDetails":[{}],"failureMessages":["Error: Publish project to default failed, HTTPError: \r\n403 Forbidden\r\n\r\n

403 Forbidden

\r\n
nginx/1.17.7
\r\n\r\n\r\n\n at /Users/scotttwiname/Projects/subql-main/packages/cli/src/controller/publish-controller.ts:176:15\n at processTicksAndRejections (node:internal/process/task_queues:95:5)\n at async Promise.all (index 0)\n at async uploadFile (/Users/scotttwiname/Projects/subql-main/packages/cli/src/controller/publish-controller.ts:179:30)\n at async replaceFileReferences (/Users/scotttwiname/Projects/subql-main/packages/cli/src/controller/publish-controller.ts:102:26)\n at async /Users/scotttwiname/Projects/subql-main/packages/cli/src/controller/publish-controller.ts:107:26\n at async Promise.all (index 2)\n at async replaceFileReferences (/Users/scotttwiname/Projects/subql-main/packages/cli/src/controller/publish-controller.ts:105:9)\n at async uploadToIpfs (/Users/scotttwiname/Projects/subql-main/packages/cli/src/controller/publish-controller.ts:72:28)\n at async Object. (/Users/scotttwiname/Projects/subql-main/packages/cli/src/controller/publish-controller.spec.ts:97:21)"],"fullName":"Cli publish should upload appropriate project to IPFS","invocations":1,"location":{"column":5,"line":95},"numPassingAsserts":0,"retryReasons":[],"status":"failed","title":"should upload appropriate project to IPFS"},{"ancestorTitles":["Cli publish"],"duration":90400,"failureDetails":[],"failureMessages":[],"fullName":"Cli publish upload project from a manifest","invocations":1,"location":{"column":5,"line":102},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"upload project from a manifest"},{"ancestorTitles":["Cli publish"],"duration":109896,"failureDetails":[],"failureMessages":[],"fullName":"Cli publish v1.0.0 should deploy","invocations":1,"location":{"column":5,"line":109},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"v1.0.0 should deploy"},{"ancestorTitles":["Cli publish"],"duration":33259,"failureDetails":[],"failureMessages":[],"fullName":"Cli publish convert to deployment and removed descriptive field","invocations":1,"location":{"column":5,"line":115},"numPassingAsserts":8,"retryReasons":[],"status":"passed","title":"convert to deployment and removed descriptive field"},{"ancestorTitles":["Cli publish"],"duration":1,"failureDetails":[],"failureMessages":[],"fullName":"Cli publish convert js object to JSON object","invocations":1,"location":{"column":5,"line":129},"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"convert js object to JSON object"}],"endTime":1710904227277,"message":"\u001b[1m\u001b[31m \u001b[1m● \u001b[22m\u001b[1mCli publish › upload file to ipfs\u001b[39m\u001b[22m\n\n Publish project to default failed, HTTPError: \r\n 403 Forbidden\r\n \r\n

403 Forbidden

\r\n
nginx/1.17.7
\r\n \r\n \n\u001b[2m\u001b[22m\n\u001b[2m \u001b[0m \u001b[90m 174 |\u001b[39m \u001b[36mconst\u001b[39m results \u001b[33m=\u001b[39m ipfsWrite\u001b[33m.\u001b[39maddAll(contents\u001b[33m,\u001b[39m {pin\u001b[33m:\u001b[39m \u001b[36mtrue\u001b[39m\u001b[33m,\u001b[39m cidVersion\u001b[33m:\u001b[39m \u001b[35m0\u001b[39m\u001b[33m,\u001b[39m wrapWithDirectory\u001b[33m:\u001b[39m isMultichain})\u001b[33m;\u001b[39m\u001b[0m\u001b[22m\n\u001b[2m \u001b[0m \u001b[90m 175 |\u001b[39m \u001b[36mfor\u001b[39m \u001b[36mawait\u001b[39m (\u001b[36mconst\u001b[39m result \u001b[36mof\u001b[39m results) {\u001b[0m\u001b[22m\n\u001b[2m \u001b[0m\u001b[31m\u001b[1m>\u001b[22m\u001b[2m\u001b[39m\u001b[90m 176 |\u001b[39m fileCidMap\u001b[33m.\u001b[39m\u001b[36mset\u001b[39m(result\u001b[33m.\u001b[39mpath\u001b[33m,\u001b[39m result\u001b[33m.\u001b[39mcid\u001b[33m.\u001b[39mtoString())\u001b[33m;\u001b[39m\u001b[0m\u001b[22m\n\u001b[2m \u001b[0m \u001b[90m |\u001b[39m \u001b[31m\u001b[1m^\u001b[22m\u001b[2m\u001b[39m\u001b[0m\u001b[22m\n\u001b[2m \u001b[0m \u001b[90m 177 |\u001b[39m\u001b[0m\u001b[22m\n\u001b[2m \u001b[0m \u001b[90m 178 |\u001b[39m \u001b[36mawait\u001b[39m ipfsWrite\u001b[33m.\u001b[39mpin\u001b[33m.\u001b[39mremote\u001b[33m.\u001b[39madd(result\u001b[33m.\u001b[39mcid\u001b[33m,\u001b[39m {service\u001b[33m:\u001b[39m \u001b[33mPIN_SERVICE\u001b[39m})\u001b[33m.\u001b[39m\u001b[36mcatch\u001b[39m((e) \u001b[33m=>\u001b[39m {\u001b[0m\u001b[22m\n\u001b[2m \u001b[0m \u001b[90m 179 |\u001b[39m console\u001b[33m.\u001b[39mwarn(\u001b[0m\u001b[22m\n\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat \u001b[22m\u001b[2mpackages/cli/src/controller/publish-controller.ts\u001b[2m:176:15\u001b[22m\u001b[2m\u001b[22m\n\u001b[2m at async Promise.all (index 0)\u001b[22m\n\u001b[2m \u001b[2mat async uploadFile (\u001b[22m\u001b[2mpackages/cli/src/controller/publish-controller.ts\u001b[2m:179:30)\u001b[22m\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat async Object. (\u001b[22m\u001b[2m\u001b[0m\u001b[36mpackages/cli/src/controller/publish-controller.spec.ts\u001b[39m\u001b[0m\u001b[2m:92:21)\u001b[22m\u001b[2m\u001b[22m\n\n\u001b[1m\u001b[31m \u001b[1m● \u001b[22m\u001b[1mCli publish › should upload appropriate project to IPFS\u001b[39m\u001b[22m\n\n Publish project to default failed, HTTPError: \r\n 403 Forbidden\r\n \r\n

403 Forbidden

\r\n
nginx/1.17.7
\r\n \r\n \n\u001b[2m\u001b[22m\n\u001b[2m \u001b[0m \u001b[90m 174 |\u001b[39m \u001b[36mconst\u001b[39m results \u001b[33m=\u001b[39m ipfsWrite\u001b[33m.\u001b[39maddAll(contents\u001b[33m,\u001b[39m {pin\u001b[33m:\u001b[39m \u001b[36mtrue\u001b[39m\u001b[33m,\u001b[39m cidVersion\u001b[33m:\u001b[39m \u001b[35m0\u001b[39m\u001b[33m,\u001b[39m wrapWithDirectory\u001b[33m:\u001b[39m isMultichain})\u001b[33m;\u001b[39m\u001b[0m\u001b[22m\n\u001b[2m \u001b[0m \u001b[90m 175 |\u001b[39m \u001b[36mfor\u001b[39m \u001b[36mawait\u001b[39m (\u001b[36mconst\u001b[39m result \u001b[36mof\u001b[39m results) {\u001b[0m\u001b[22m\n\u001b[2m \u001b[0m\u001b[31m\u001b[1m>\u001b[22m\u001b[2m\u001b[39m\u001b[90m 176 |\u001b[39m fileCidMap\u001b[33m.\u001b[39m\u001b[36mset\u001b[39m(result\u001b[33m.\u001b[39mpath\u001b[33m,\u001b[39m result\u001b[33m.\u001b[39mcid\u001b[33m.\u001b[39mtoString())\u001b[33m;\u001b[39m\u001b[0m\u001b[22m\n\u001b[2m \u001b[0m \u001b[90m |\u001b[39m \u001b[31m\u001b[1m^\u001b[22m\u001b[2m\u001b[39m\u001b[0m\u001b[22m\n\u001b[2m \u001b[0m \u001b[90m 177 |\u001b[39m\u001b[0m\u001b[22m\n\u001b[2m \u001b[0m \u001b[90m 178 |\u001b[39m \u001b[36mawait\u001b[39m ipfsWrite\u001b[33m.\u001b[39mpin\u001b[33m.\u001b[39mremote\u001b[33m.\u001b[39madd(result\u001b[33m.\u001b[39mcid\u001b[33m,\u001b[39m {service\u001b[33m:\u001b[39m \u001b[33mPIN_SERVICE\u001b[39m})\u001b[33m.\u001b[39m\u001b[36mcatch\u001b[39m((e) \u001b[33m=>\u001b[39m {\u001b[0m\u001b[22m\n\u001b[2m \u001b[0m \u001b[90m 179 |\u001b[39m console\u001b[33m.\u001b[39mwarn(\u001b[0m\u001b[22m\n\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat \u001b[22m\u001b[2mpackages/cli/src/controller/publish-controller.ts\u001b[2m:176:15\u001b[22m\u001b[2m\u001b[22m\n\u001b[2m at async Promise.all (index 0)\u001b[22m\n\u001b[2m \u001b[2mat async uploadFile (\u001b[22m\u001b[2mpackages/cli/src/controller/publish-controller.ts\u001b[2m:179:30)\u001b[22m\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat async replaceFileReferences (\u001b[22m\u001b[2mpackages/cli/src/controller/publish-controller.ts\u001b[2m:102:26)\u001b[22m\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat \u001b[22m\u001b[2masync /Users/scotttwiname/Projects/subql-main/packages/cli/src/controller/publish-controller.ts\u001b[2m:107:26\u001b[22m\u001b[2m\u001b[22m\n\u001b[2m at async Promise.all (index 2)\u001b[22m\n\u001b[2m \u001b[2mat async replaceFileReferences (\u001b[22m\u001b[2mpackages/cli/src/controller/publish-controller.ts\u001b[2m:105:9)\u001b[22m\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat async uploadToIpfs (\u001b[22m\u001b[2mpackages/cli/src/controller/publish-controller.ts\u001b[2m:72:28)\u001b[22m\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat async Object. (\u001b[22m\u001b[2m\u001b[0m\u001b[36mpackages/cli/src/controller/publish-controller.spec.ts\u001b[39m\u001b[0m\u001b[2m:97:21)\u001b[22m\u001b[2m\u001b[22m\n","name":"/Users/scotttwiname/Projects/subql-main/packages/cli/src/controller/publish-controller.spec.ts","startTime":1710903677005,"status":"failed","summary":""},{"assertionResults":[{"ancestorTitles":["ApiService"],"duration":5743,"failureDetails":[],"failureMessages":[],"fullName":"ApiService can instantiate api","invocations":1,"location":{"column":3,"line":88},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"can instantiate api"},{"ancestorTitles":["ApiService"],"duration":400797,"failureDetails":[],"failureMessages":[],"fullName":"ApiService api query is locked at specified block","invocations":1,"location":{"column":3,"line":100},"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"api query is locked at specified block"},{"ancestorTitles":["ApiService"],"duration":6631,"failureDetails":[],"failureMessages":[],"fullName":"ApiService api query input is double map","invocations":1,"location":{"column":3,"line":120},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"api query input is double map"},{"ancestorTitles":["ApiService"],"duration":8321,"failureDetails":[],"failureMessages":[],"fullName":"ApiService apiAt could fetch previous block info","invocations":1,"location":{"column":3,"line":144},"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"apiAt could fetch previous block info"},{"ancestorTitles":["ApiService"],"duration":7212,"failureDetails":[],"failureMessages":[],"fullName":"ApiService apiAt will throw when fetch future block info","invocations":1,"location":{"column":3,"line":174},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"apiAt will throw when fetch future block info"},{"ancestorTitles":["ApiService"],"duration":null,"failureDetails":[],"failureMessages":[],"fullName":"ApiService api consts is swapped to the specified block","invocations":1,"location":{"column":6,"line":198},"numPassingAsserts":0,"retryReasons":[],"status":"pending","title":"api consts is swapped to the specified block"},{"ancestorTitles":["ApiService"],"duration":null,"failureDetails":[],"failureMessages":[],"fullName":"ApiService support http provider","invocations":1,"location":{"column":6,"line":381},"numPassingAsserts":0,"retryReasons":[],"status":"pending","title":"support http provider"},{"ancestorTitles":["ApiService"],"duration":90004,"failureDetails":[{"message":"thrown: \"Exceeded timeout of 90000 ms for a test.\nAdd a timeout value to this test to increase the timeout, if this is a long-running test. See https://jestjs.io/docs/api#testname-fn-timeout.\""}],"failureMessages":["Error: thrown: \"Exceeded timeout of 90000 ms for a test.\nAdd a timeout value to this test to increase the timeout, if this is a long-running test. See https://jestjs.io/docs/api#testname-fn-timeout.\"\n at /Users/scotttwiname/Projects/subql-main/packages/node/src/indexer/api.service.test.ts:397:3\n at _dispatchDescribe (/Users/scotttwiname/Projects/subql-main/node_modules/jest-circus/build/index.js:91:26)\n at describe (/Users/scotttwiname/Projects/subql-main/node_modules/jest-circus/build/index.js:55:5)\n at Object. (/Users/scotttwiname/Projects/subql-main/packages/node/src/indexer/api.service.test.ts:52:1)\n at Runtime._execModule (/Users/scotttwiname/Projects/subql-main/node_modules/jest-runtime/build/index.js:1429:24)\n at Runtime._loadModule (/Users/scotttwiname/Projects/subql-main/node_modules/jest-runtime/build/index.js:1013:12)\n at Runtime.requireModule (/Users/scotttwiname/Projects/subql-main/node_modules/jest-runtime/build/index.js:873:12)\n at jestAdapter (/Users/scotttwiname/Projects/subql-main/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapter.js:77:13)\n at processTicksAndRejections (node:internal/process/task_queues:95:5)\n at runTestInternal (/Users/scotttwiname/Projects/subql-main/node_modules/jest-runner/build/runTest.js:367:16)\n at runTest (/Users/scotttwiname/Projects/subql-main/node_modules/jest-runner/build/runTest.js:444:34)\n at Object.worker (/Users/scotttwiname/Projects/subql-main/node_modules/jest-runner/build/testWorker.js:106:12)"],"fullName":"ApiService can correctly call rpc methods that use block number","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"status":"failed","title":"can correctly call rpc methods that use block number"}],"endTime":1710904232466,"message":"\u001b[1m\u001b[31m \u001b[1m● \u001b[22m\u001b[1mApiService › can correctly call rpc methods that use block number\u001b[39m\u001b[22m\n\n thrown: \"Exceeded timeout of 90000 ms for a test.\n Add a timeout value to this test to increase the timeout, if this is a long-running test. See https://jestjs.io/docs/api#testname-fn-timeout.\"\n\u001b[2m\u001b[22m\n\u001b[2m \u001b[0m \u001b[90m 395 |\u001b[39m\u001b[0m\u001b[22m\n\u001b[2m \u001b[0m \u001b[90m 396 |\u001b[39m \u001b[90m/* This test can be reenabled once https://github.com/polkadot-js/api/pull/4540 has been released and the api is updated */\u001b[39m\u001b[0m\u001b[22m\n\u001b[2m \u001b[0m\u001b[31m\u001b[1m>\u001b[22m\u001b[2m\u001b[39m\u001b[90m 397 |\u001b[39m it(\u001b[32m'can correctly call rpc methods that use block number'\u001b[39m\u001b[33m,\u001b[39m \u001b[36masync\u001b[39m () \u001b[33m=>\u001b[39m {\u001b[0m\u001b[22m\n\u001b[2m \u001b[0m \u001b[90m |\u001b[39m \u001b[31m\u001b[1m^\u001b[22m\u001b[2m\u001b[39m\u001b[0m\u001b[22m\n\u001b[2m \u001b[0m \u001b[90m 398 |\u001b[39m \u001b[36mconst\u001b[39m apiService \u001b[33m=\u001b[39m \u001b[36mawait\u001b[39m prepareApiService(\u001b[0m\u001b[22m\n\u001b[2m \u001b[0m \u001b[90m 399 |\u001b[39m \u001b[32m'wss://moonbeam-alpha.api.onfinality.io/public-ws'\u001b[39m\u001b[33m,\u001b[39m\u001b[0m\u001b[22m\n\u001b[2m \u001b[0m \u001b[90m 400 |\u001b[39m \u001b[32m'0x91bc6e169807aaa54802737e1c504b2577d4fafedd5a02c10293b1cd60e39527'\u001b[39m\u001b[33m,\u001b[39m\u001b[0m\u001b[22m\n\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat \u001b[22m\u001b[2m\u001b[0m\u001b[36mpackages/node/src/indexer/api.service.test.ts\u001b[39m\u001b[0m\u001b[2m:397:3\u001b[22m\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat Object. (\u001b[22m\u001b[2m\u001b[0m\u001b[36mpackages/node/src/indexer/api.service.test.ts\u001b[39m\u001b[0m\u001b[2m:52:1)\u001b[22m\u001b[2m\u001b[22m\n","name":"/Users/scotttwiname/Projects/subql-main/packages/node/src/indexer/api.service.test.ts","startTime":1710903677001,"status":"failed","summary":""},{"assertionResults":[{"ancestorTitles":["Cli publish"],"duration":139205,"failureDetails":[],"failureMessages":[],"fullName":"Cli publish should not allow uploading a v0.0.1 spec version project","invocations":1,"location":{"column":5,"line":84},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"should not allow uploading a v0.0.1 spec version project"},{"ancestorTitles":["Cli publish"],"duration":1934,"failureDetails":[{}],"failureMessages":["Error: Publish project to default failed, HTTPError: \r\n403 Forbidden\r\n\r\n

403 Forbidden

\r\n
nginx/1.17.7
\r\n\r\n\r\n\n at /Users/scotttwiname/Projects/subql-main/packages/cli/src/controller/publish-controller.ts:176:15\n at processTicksAndRejections (node:internal/process/task_queues:95:5)\n at async Promise.all (index 0)\n at async uploadFile (/Users/scotttwiname/Projects/subql-main/packages/cli/src/controller/publish-controller.ts:179:30)\n at async Object. (/Users/scotttwiname/Projects/subql-main/packages/cli/src/controller/publish-controller.spec.ts:92:21)"],"fullName":"Cli publish upload file to ipfs","invocations":1,"location":{"column":5,"line":88},"numPassingAsserts":0,"retryReasons":[],"status":"failed","title":"upload file to ipfs"},{"ancestorTitles":["Cli publish"],"duration":159194,"failureDetails":[{}],"failureMessages":["Error: Publish project to default failed, HTTPError: \r\n403 Forbidden\r\n\r\n

403 Forbidden

\r\n
nginx/1.17.7
\r\n\r\n\r\n\n at /Users/scotttwiname/Projects/subql-main/packages/cli/src/controller/publish-controller.ts:176:15\n at processTicksAndRejections (node:internal/process/task_queues:95:5)\n at async Promise.all (index 0)\n at async uploadFile (/Users/scotttwiname/Projects/subql-main/packages/cli/src/controller/publish-controller.ts:179:30)\n at async replaceFileReferences (/Users/scotttwiname/Projects/subql-main/packages/cli/src/controller/publish-controller.ts:102:26)\n at async /Users/scotttwiname/Projects/subql-main/packages/cli/src/controller/publish-controller.ts:107:26\n at async Promise.all (index 2)\n at async replaceFileReferences (/Users/scotttwiname/Projects/subql-main/packages/cli/src/controller/publish-controller.ts:105:9)\n at async uploadToIpfs (/Users/scotttwiname/Projects/subql-main/packages/cli/src/controller/publish-controller.ts:72:28)\n at async Object. (/Users/scotttwiname/Projects/subql-main/packages/cli/src/controller/publish-controller.spec.ts:97:21)"],"fullName":"Cli publish should upload appropriate project to IPFS","invocations":1,"location":{"column":5,"line":95},"numPassingAsserts":0,"retryReasons":[],"status":"failed","title":"should upload appropriate project to IPFS"},{"ancestorTitles":["Cli publish"],"duration":75489,"failureDetails":[],"failureMessages":[],"fullName":"Cli publish upload project from a manifest","invocations":1,"location":{"column":5,"line":102},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"upload project from a manifest"},{"ancestorTitles":["Cli publish"],"duration":108385,"failureDetails":[],"failureMessages":[],"fullName":"Cli publish v1.0.0 should deploy","invocations":1,"location":{"column":5,"line":109},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"v1.0.0 should deploy"},{"ancestorTitles":["Cli publish"],"duration":32526,"failureDetails":[],"failureMessages":[],"fullName":"Cli publish convert to deployment and removed descriptive field","invocations":1,"location":{"column":5,"line":115},"numPassingAsserts":8,"retryReasons":[],"status":"passed","title":"convert to deployment and removed descriptive field"},{"ancestorTitles":["Cli publish"],"duration":2,"failureDetails":[],"failureMessages":[],"fullName":"Cli publish convert js object to JSON object","invocations":1,"location":{"column":5,"line":129},"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"convert js object to JSON object"},{"ancestorTitles":["Intergration test - Publish"],"duration":34331,"failureDetails":[],"failureMessages":[],"fullName":"Intergration test - Publish overwrites any exisiting CID files","invocations":1,"location":{"column":5,"line":26},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"overwrites any exisiting CID files"},{"ancestorTitles":["Intergration test - Publish"],"duration":33248,"failureDetails":[],"failureMessages":[],"fullName":"Intergration test - Publish file name consistent with manfiest file name, if -f is used","invocations":1,"location":{"column":5,"line":35},"numPassingAsserts":1,"retryReasons":[],"status":"passed","title":"file name consistent with manfiest file name, if -f is used"},{"ancestorTitles":["Intergration test - Publish"],"duration":33112,"failureDetails":[],"failureMessages":[],"fullName":"Intergration test - Publish create ipfsCID file stored in local with dictiory path","invocations":1,"location":{"column":5,"line":45},"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"create ipfsCID file stored in local with dictiory path"}],"endTime":1710904327199,"message":"\u001b[1m\u001b[31m \u001b[1m● \u001b[22m\u001b[1mCli publish › upload file to ipfs\u001b[39m\u001b[22m\n\n Publish project to default failed, HTTPError: \r\n 403 Forbidden\r\n \r\n

403 Forbidden

\r\n
nginx/1.17.7
\r\n \r\n \n\u001b[2m\u001b[22m\n\u001b[2m \u001b[0m \u001b[90m 174 |\u001b[39m \u001b[36mconst\u001b[39m results \u001b[33m=\u001b[39m ipfsWrite\u001b[33m.\u001b[39maddAll(contents\u001b[33m,\u001b[39m {pin\u001b[33m:\u001b[39m \u001b[36mtrue\u001b[39m\u001b[33m,\u001b[39m cidVersion\u001b[33m:\u001b[39m \u001b[35m0\u001b[39m\u001b[33m,\u001b[39m wrapWithDirectory\u001b[33m:\u001b[39m isMultichain})\u001b[33m;\u001b[39m\u001b[0m\u001b[22m\n\u001b[2m \u001b[0m \u001b[90m 175 |\u001b[39m \u001b[36mfor\u001b[39m \u001b[36mawait\u001b[39m (\u001b[36mconst\u001b[39m result \u001b[36mof\u001b[39m results) {\u001b[0m\u001b[22m\n\u001b[2m \u001b[0m\u001b[31m\u001b[1m>\u001b[22m\u001b[2m\u001b[39m\u001b[90m 176 |\u001b[39m fileCidMap\u001b[33m.\u001b[39m\u001b[36mset\u001b[39m(result\u001b[33m.\u001b[39mpath\u001b[33m,\u001b[39m result\u001b[33m.\u001b[39mcid\u001b[33m.\u001b[39mtoString())\u001b[33m;\u001b[39m\u001b[0m\u001b[22m\n\u001b[2m \u001b[0m \u001b[90m |\u001b[39m \u001b[31m\u001b[1m^\u001b[22m\u001b[2m\u001b[39m\u001b[0m\u001b[22m\n\u001b[2m \u001b[0m \u001b[90m 177 |\u001b[39m\u001b[0m\u001b[22m\n\u001b[2m \u001b[0m \u001b[90m 178 |\u001b[39m \u001b[36mawait\u001b[39m ipfsWrite\u001b[33m.\u001b[39mpin\u001b[33m.\u001b[39mremote\u001b[33m.\u001b[39madd(result\u001b[33m.\u001b[39mcid\u001b[33m,\u001b[39m {service\u001b[33m:\u001b[39m \u001b[33mPIN_SERVICE\u001b[39m})\u001b[33m.\u001b[39m\u001b[36mcatch\u001b[39m((e) \u001b[33m=>\u001b[39m {\u001b[0m\u001b[22m\n\u001b[2m \u001b[0m \u001b[90m 179 |\u001b[39m console\u001b[33m.\u001b[39mwarn(\u001b[0m\u001b[22m\n\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat \u001b[22m\u001b[2mpackages/cli/src/controller/publish-controller.ts\u001b[2m:176:15\u001b[22m\u001b[2m\u001b[22m\n\u001b[2m at async Promise.all (index 0)\u001b[22m\n\u001b[2m \u001b[2mat async uploadFile (\u001b[22m\u001b[2mpackages/cli/src/controller/publish-controller.ts\u001b[2m:179:30)\u001b[22m\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat async Object. (\u001b[22m\u001b[2mpackages/cli/src/controller/publish-controller.spec.ts\u001b[2m:92:21)\u001b[22m\u001b[2m\u001b[22m\n\n\u001b[1m\u001b[31m \u001b[1m● \u001b[22m\u001b[1mCli publish › should upload appropriate project to IPFS\u001b[39m\u001b[22m\n\n Publish project to default failed, HTTPError: \r\n 403 Forbidden\r\n \r\n

403 Forbidden

\r\n
nginx/1.17.7
\r\n \r\n \n\u001b[2m\u001b[22m\n\u001b[2m \u001b[0m \u001b[90m 174 |\u001b[39m \u001b[36mconst\u001b[39m results \u001b[33m=\u001b[39m ipfsWrite\u001b[33m.\u001b[39maddAll(contents\u001b[33m,\u001b[39m {pin\u001b[33m:\u001b[39m \u001b[36mtrue\u001b[39m\u001b[33m,\u001b[39m cidVersion\u001b[33m:\u001b[39m \u001b[35m0\u001b[39m\u001b[33m,\u001b[39m wrapWithDirectory\u001b[33m:\u001b[39m isMultichain})\u001b[33m;\u001b[39m\u001b[0m\u001b[22m\n\u001b[2m \u001b[0m \u001b[90m 175 |\u001b[39m \u001b[36mfor\u001b[39m \u001b[36mawait\u001b[39m (\u001b[36mconst\u001b[39m result \u001b[36mof\u001b[39m results) {\u001b[0m\u001b[22m\n\u001b[2m \u001b[0m\u001b[31m\u001b[1m>\u001b[22m\u001b[2m\u001b[39m\u001b[90m 176 |\u001b[39m fileCidMap\u001b[33m.\u001b[39m\u001b[36mset\u001b[39m(result\u001b[33m.\u001b[39mpath\u001b[33m,\u001b[39m result\u001b[33m.\u001b[39mcid\u001b[33m.\u001b[39mtoString())\u001b[33m;\u001b[39m\u001b[0m\u001b[22m\n\u001b[2m \u001b[0m \u001b[90m |\u001b[39m \u001b[31m\u001b[1m^\u001b[22m\u001b[2m\u001b[39m\u001b[0m\u001b[22m\n\u001b[2m \u001b[0m \u001b[90m 177 |\u001b[39m\u001b[0m\u001b[22m\n\u001b[2m \u001b[0m \u001b[90m 178 |\u001b[39m \u001b[36mawait\u001b[39m ipfsWrite\u001b[33m.\u001b[39mpin\u001b[33m.\u001b[39mremote\u001b[33m.\u001b[39madd(result\u001b[33m.\u001b[39mcid\u001b[33m,\u001b[39m {service\u001b[33m:\u001b[39m \u001b[33mPIN_SERVICE\u001b[39m})\u001b[33m.\u001b[39m\u001b[36mcatch\u001b[39m((e) \u001b[33m=>\u001b[39m {\u001b[0m\u001b[22m\n\u001b[2m \u001b[0m \u001b[90m 179 |\u001b[39m console\u001b[33m.\u001b[39mwarn(\u001b[0m\u001b[22m\n\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat \u001b[22m\u001b[2mpackages/cli/src/controller/publish-controller.ts\u001b[2m:176:15\u001b[22m\u001b[2m\u001b[22m\n\u001b[2m at async Promise.all (index 0)\u001b[22m\n\u001b[2m \u001b[2mat async uploadFile (\u001b[22m\u001b[2mpackages/cli/src/controller/publish-controller.ts\u001b[2m:179:30)\u001b[22m\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat async replaceFileReferences (\u001b[22m\u001b[2mpackages/cli/src/controller/publish-controller.ts\u001b[2m:102:26)\u001b[22m\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat \u001b[22m\u001b[2masync /Users/scotttwiname/Projects/subql-main/packages/cli/src/controller/publish-controller.ts\u001b[2m:107:26\u001b[22m\u001b[2m\u001b[22m\n\u001b[2m at async Promise.all (index 2)\u001b[22m\n\u001b[2m \u001b[2mat async replaceFileReferences (\u001b[22m\u001b[2mpackages/cli/src/controller/publish-controller.ts\u001b[2m:105:9)\u001b[22m\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat async uploadToIpfs (\u001b[22m\u001b[2mpackages/cli/src/controller/publish-controller.ts\u001b[2m:72:28)\u001b[22m\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat async Object. (\u001b[22m\u001b[2mpackages/cli/src/controller/publish-controller.spec.ts\u001b[2m:97:21)\u001b[22m\u001b[2m\u001b[22m\n","name":"/Users/scotttwiname/Projects/subql-main/packages/cli/src/commands/publish.test.ts","startTime":1710903677011,"status":"failed","summary":""}],"wasInterrupted":false,"coverageMap":{"/Users/scotttwiname/Projects/subql-main/packages/cli/src/commands/build/index.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/cli/src/commands/build/index.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":28}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":55}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":24}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":43}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":24}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":61}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":92}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":0}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":44}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":58}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":0}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":18}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":99}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":87}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":103}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":67}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":4}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":0}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":30}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":9}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":46}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":94}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":73}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":0}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":91}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":94}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":0}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":49}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":0}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":23}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":40}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":21}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":22}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":21}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":27}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":15}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":33}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":10}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":7}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":0}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":73}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":94}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":0}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":64}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":72}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":0}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":50}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":28}},"51":{"start":{"line":52,"column":0},"end":{"line":52,"column":8}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":86}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":68}},"54":{"start":{"line":55,"column":0},"end":{"line":55,"column":52}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":9}},"56":{"start":{"line":57,"column":0},"end":{"line":57,"column":0}},"57":{"start":{"line":58,"column":0},"end":{"line":58,"column":87}},"58":{"start":{"line":59,"column":0},"end":{"line":59,"column":68}},"59":{"start":{"line":60,"column":0},"end":{"line":60,"column":53}},"60":{"start":{"line":61,"column":0},"end":{"line":61,"column":9}},"61":{"start":{"line":62,"column":0},"end":{"line":62,"column":0}},"62":{"start":{"line":63,"column":0},"end":{"line":63,"column":63}},"63":{"start":{"line":64,"column":0},"end":{"line":64,"column":86}},"64":{"start":{"line":65,"column":0},"end":{"line":65,"column":34}},"65":{"start":{"line":66,"column":0},"end":{"line":66,"column":54}},"66":{"start":{"line":67,"column":0},"end":{"line":67,"column":23}},"67":{"start":{"line":68,"column":0},"end":{"line":68,"column":12}},"68":{"start":{"line":69,"column":0},"end":{"line":69,"column":27}},"69":{"start":{"line":70,"column":0},"end":{"line":70,"column":10}},"70":{"start":{"line":71,"column":0},"end":{"line":71,"column":7}},"71":{"start":{"line":72,"column":0},"end":{"line":72,"column":0}},"72":{"start":{"line":73,"column":0},"end":{"line":73,"column":37}},"73":{"start":{"line":74,"column":0},"end":{"line":74,"column":50}},"74":{"start":{"line":75,"column":0},"end":{"line":75,"column":55}},"75":{"start":{"line":76,"column":0},"end":{"line":76,"column":33}},"76":{"start":{"line":77,"column":0},"end":{"line":77,"column":9}},"77":{"start":{"line":78,"column":0},"end":{"line":78,"column":7}},"78":{"start":{"line":79,"column":0},"end":{"line":79,"column":72}},"79":{"start":{"line":80,"column":0},"end":{"line":80,"column":26}},"80":{"start":{"line":81,"column":0},"end":{"line":81,"column":50}},"81":{"start":{"line":82,"column":0},"end":{"line":82,"column":26}},"82":{"start":{"line":83,"column":0},"end":{"line":83,"column":7}},"83":{"start":{"line":84,"column":0},"end":{"line":84,"column":17}},"84":{"start":{"line":85,"column":0},"end":{"line":85,"column":20}},"85":{"start":{"line":86,"column":0},"end":{"line":86,"column":5}},"86":{"start":{"line":87,"column":0},"end":{"line":87,"column":3}},"87":{"start":{"line":88,"column":0},"end":{"line":88,"column":1}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":18,"23":18,"24":18,"25":18,"26":18,"27":18,"28":18,"29":18,"30":18,"31":18,"32":18,"33":15,"34":15,"35":15,"36":15,"37":2,"38":2,"39":15,"40":15,"41":15,"42":18,"43":18,"44":18,"45":18,"46":18,"47":18,"48":18,"49":18,"50":18,"51":18,"52":18,"53":18,"54":18,"55":18,"56":18,"57":18,"58":0,"59":0,"60":18,"61":18,"62":18,"63":0,"64":0,"65":0,"66":0,"67":0,"68":0,"69":0,"70":0,"71":18,"72":18,"73":36,"74":0,"75":0,"76":0,"77":36,"78":18,"79":18,"80":13,"81":13,"82":13,"83":18,"84":0,"85":0,"86":18,"87":1},"branchMap":{"0":{"type":"branch","line":22,"loc":{"start":{"line":22,"column":2},"end":{"line":87,"column":3}},"locations":[{"start":{"line":22,"column":2},"end":{"line":87,"column":3}}]},"1":{"type":"branch","line":25,"loc":{"start":{"line":25,"column":78},"end":{"line":25,"column":93}},"locations":[{"start":{"line":25,"column":78},"end":{"line":25,"column":93}}]},"2":{"type":"branch","line":29,"loc":{"start":{"line":29,"column":58},"end":{"line":29,"column":68}},"locations":[{"start":{"line":29,"column":58},"end":{"line":29,"column":68}}]},"3":{"type":"branch","line":29,"loc":{"start":{"line":29,"column":69},"end":{"line":29,"column":93}},"locations":[{"start":{"line":29,"column":69},"end":{"line":29,"column":93}}]},"4":{"type":"branch","line":33,"loc":{"start":{"line":33,"column":22},"end":{"line":42,"column":7}},"locations":[{"start":{"line":33,"column":22},"end":{"line":42,"column":7}}]},"5":{"type":"branch","line":37,"loc":{"start":{"line":37,"column":12},"end":{"line":39,"column":15}},"locations":[{"start":{"line":37,"column":12},"end":{"line":39,"column":15}}]},"6":{"type":"branch","line":40,"loc":{"start":{"line":40,"column":12},"end":{"line":40,"column":33}},"locations":[{"start":{"line":40,"column":12},"end":{"line":40,"column":33}}]},"7":{"type":"branch","line":63,"loc":{"start":{"line":63,"column":23},"end":{"line":63,"column":60}},"locations":[{"start":{"line":63,"column":23},"end":{"line":63,"column":60}}]},"8":{"type":"branch","line":63,"loc":{"start":{"line":63,"column":62},"end":{"line":71,"column":7}},"locations":[{"start":{"line":63,"column":62},"end":{"line":71,"column":7}}]},"9":{"type":"branch","line":73,"loc":{"start":{"line":73,"column":36},"end":{"line":78,"column":7}},"locations":[{"start":{"line":73,"column":36},"end":{"line":78,"column":7}}]},"10":{"type":"branch","line":74,"loc":{"start":{"line":74,"column":49},"end":{"line":77,"column":9}},"locations":[{"start":{"line":74,"column":49},"end":{"line":77,"column":9}}]},"11":{"type":"branch","line":80,"loc":{"start":{"line":80,"column":25},"end":{"line":83,"column":7}},"locations":[{"start":{"line":80,"column":25},"end":{"line":83,"column":7}}]},"12":{"type":"branch","line":84,"loc":{"start":{"line":84,"column":6},"end":{"line":86,"column":5}},"locations":[{"start":{"line":84,"column":6},"end":{"line":86,"column":5}}]},"13":{"type":"branch","line":37,"loc":{"start":{"line":37,"column":14},"end":{"line":39,"column":15}},"locations":[{"start":{"line":37,"column":14},"end":{"line":39,"column":15}}]},"14":{"type":"branch","line":53,"loc":{"start":{"line":53,"column":71},"end":{"line":56,"column":7}},"locations":[{"start":{"line":53,"column":71},"end":{"line":56,"column":7}}]}},"b":{"0":[18],"1":[0],"2":[15],"3":[3],"4":[15],"5":[2],"6":[13],"7":[0],"8":[0],"9":[36],"10":[0],"11":[13],"12":[0],"13":[2],"14":[18]},"fnMap":{"0":{"name":"run","decl":{"start":{"line":22,"column":2},"end":{"line":87,"column":3}},"loc":{"start":{"line":22,"column":2},"end":{"line":87,"column":3}},"line":22},"1":{"name":"Object.entries.reduce","decl":{"start":{"line":65,"column":10},"end":{"line":68,"column":11}},"loc":{"start":{"line":65,"column":10},"end":{"line":68,"column":11}},"line":65}},"f":{"0":18,"1":0}},"/Users/scotttwiname/Projects/subql-main/packages/cli/src/commands/codegen/generate.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/cli/src/commands/codegen/generate.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":33}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":24}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":84}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":43}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":83}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":75}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":44}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":8}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":18}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":24}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":33}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":19}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":21}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":23}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":18}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":18}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":20}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":22}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":24}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":14}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":16}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":46}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":42}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":0}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":33}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":15}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":17}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":1}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":28}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":21}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":30}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":27}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":18}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":19}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":1}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":0}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":47}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":91}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":0}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":18}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":79}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":85}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":95}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":82}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":75}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":61}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":4}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":0}},"51":{"start":{"line":52,"column":0},"end":{"line":52,"column":30}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":50}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":56}},"54":{"start":{"line":55,"column":0},"end":{"line":55,"column":18}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":32}},"56":{"start":{"line":57,"column":0},"end":{"line":57,"column":23}},"57":{"start":{"line":58,"column":0},"end":{"line":58,"column":24}},"58":{"start":{"line":59,"column":0},"end":{"line":59,"column":35}},"59":{"start":{"line":60,"column":0},"end":{"line":60,"column":16}},"60":{"start":{"line":61,"column":0},"end":{"line":61,"column":64}},"61":{"start":{"line":62,"column":0},"end":{"line":62,"column":21}},"62":{"start":{"line":63,"column":0},"end":{"line":63,"column":24}},"63":{"start":{"line":64,"column":0},"end":{"line":64,"column":17}},"64":{"start":{"line":65,"column":0},"end":{"line":65,"column":14}},"65":{"start":{"line":66,"column":0},"end":{"line":66,"column":15}},"66":{"start":{"line":67,"column":0},"end":{"line":67,"column":6}},"67":{"start":{"line":68,"column":0},"end":{"line":68,"column":0}},"68":{"start":{"line":69,"column":0},"end":{"line":69,"column":74}},"69":{"start":{"line":70,"column":0},"end":{"line":70,"column":83}},"70":{"start":{"line":71,"column":0},"end":{"line":71,"column":0}},"71":{"start":{"line":72,"column":0},"end":{"line":72,"column":12}},"72":{"start":{"line":73,"column":0},"end":{"line":73,"column":29}},"73":{"start":{"line":74,"column":0},"end":{"line":74,"column":38}},"74":{"start":{"line":75,"column":0},"end":{"line":75,"column":32}},"75":{"start":{"line":76,"column":0},"end":{"line":76,"column":39}},"76":{"start":{"line":77,"column":0},"end":{"line":77,"column":23}},"77":{"start":{"line":78,"column":0},"end":{"line":78,"column":6}},"78":{"start":{"line":79,"column":0},"end":{"line":79,"column":3}},"79":{"start":{"line":80,"column":0},"end":{"line":80,"column":30}},"80":{"start":{"line":81,"column":0},"end":{"line":81,"column":47}},"81":{"start":{"line":82,"column":0},"end":{"line":82,"column":74}},"82":{"start":{"line":83,"column":0},"end":{"line":83,"column":39}},"83":{"start":{"line":84,"column":0},"end":{"line":84,"column":22}},"84":{"start":{"line":85,"column":0},"end":{"line":85,"column":0}},"85":{"start":{"line":86,"column":0},"end":{"line":86,"column":60}},"86":{"start":{"line":87,"column":0},"end":{"line":87,"column":0}},"87":{"start":{"line":88,"column":0},"end":{"line":88,"column":47}},"88":{"start":{"line":89,"column":0},"end":{"line":89,"column":71}},"89":{"start":{"line":90,"column":0},"end":{"line":90,"column":63}},"90":{"start":{"line":91,"column":0},"end":{"line":91,"column":20}},"91":{"start":{"line":92,"column":0},"end":{"line":92,"column":14}},"92":{"start":{"line":93,"column":0},"end":{"line":93,"column":60}},"93":{"start":{"line":94,"column":0},"end":{"line":94,"column":21}},"94":{"start":{"line":95,"column":0},"end":{"line":95,"column":7}},"95":{"start":{"line":96,"column":0},"end":{"line":96,"column":25}},"96":{"start":{"line":97,"column":0},"end":{"line":97,"column":49}},"97":{"start":{"line":98,"column":0},"end":{"line":98,"column":49}},"98":{"start":{"line":99,"column":0},"end":{"line":99,"column":17}},"99":{"start":{"line":100,"column":0},"end":{"line":100,"column":32}},"100":{"start":{"line":101,"column":0},"end":{"line":101,"column":29}},"101":{"start":{"line":102,"column":0},"end":{"line":102,"column":12}},"102":{"start":{"line":103,"column":0},"end":{"line":103,"column":42}},"103":{"start":{"line":104,"column":0},"end":{"line":104,"column":5}},"104":{"start":{"line":105,"column":0},"end":{"line":105,"column":0}},"105":{"start":{"line":106,"column":0},"end":{"line":106,"column":52}},"106":{"start":{"line":107,"column":0},"end":{"line":107,"column":0}},"107":{"start":{"line":108,"column":0},"end":{"line":108,"column":83}},"108":{"start":{"line":109,"column":0},"end":{"line":109,"column":68}},"109":{"start":{"line":110,"column":0},"end":{"line":110,"column":5}},"110":{"start":{"line":111,"column":0},"end":{"line":111,"column":0}},"111":{"start":{"line":112,"column":0},"end":{"line":112,"column":45}},"112":{"start":{"line":113,"column":0},"end":{"line":113,"column":47}},"113":{"start":{"line":114,"column":0},"end":{"line":114,"column":0}},"114":{"start":{"line":115,"column":0},"end":{"line":115,"column":25}},"115":{"start":{"line":116,"column":0},"end":{"line":116,"column":60}},"116":{"start":{"line":117,"column":0},"end":{"line":117,"column":48}},"117":{"start":{"line":118,"column":0},"end":{"line":118,"column":85}},"118":{"start":{"line":119,"column":0},"end":{"line":119,"column":0}},"119":{"start":{"line":120,"column":0},"end":{"line":120,"column":98}},"120":{"start":{"line":121,"column":0},"end":{"line":121,"column":109}},"121":{"start":{"line":122,"column":0},"end":{"line":122,"column":0}},"122":{"start":{"line":123,"column":0},"end":{"line":123,"column":29}},"123":{"start":{"line":124,"column":0},"end":{"line":124,"column":0}},"124":{"start":{"line":125,"column":0},"end":{"line":125,"column":9}},"125":{"start":{"line":126,"column":0},"end":{"line":126,"column":17}},"126":{"start":{"line":127,"column":0},"end":{"line":127,"column":78}},"127":{"start":{"line":128,"column":0},"end":{"line":128,"column":70}},"128":{"start":{"line":129,"column":0},"end":{"line":129,"column":33}},"129":{"start":{"line":130,"column":0},"end":{"line":130,"column":11}},"130":{"start":{"line":131,"column":0},"end":{"line":131,"column":70}},"131":{"start":{"line":132,"column":0},"end":{"line":132,"column":0}},"132":{"start":{"line":133,"column":0},"end":{"line":133,"column":42}},"133":{"start":{"line":134,"column":0},"end":{"line":134,"column":25}},"134":{"start":{"line":135,"column":0},"end":{"line":135,"column":28}},"135":{"start":{"line":136,"column":0},"end":{"line":136,"column":21}},"136":{"start":{"line":137,"column":0},"end":{"line":137,"column":18}},"137":{"start":{"line":138,"column":0},"end":{"line":138,"column":21}},"138":{"start":{"line":139,"column":0},"end":{"line":139,"column":22}},"139":{"start":{"line":140,"column":0},"end":{"line":140,"column":21}},"140":{"start":{"line":141,"column":0},"end":{"line":141,"column":10}},"141":{"start":{"line":142,"column":0},"end":{"line":142,"column":0}},"142":{"start":{"line":143,"column":0},"end":{"line":143,"column":72}},"143":{"start":{"line":144,"column":0},"end":{"line":144,"column":14}},"144":{"start":{"line":145,"column":0},"end":{"line":145,"column":15}},"145":{"start":{"line":146,"column":0},"end":{"line":146,"column":65}},"146":{"start":{"line":147,"column":0},"end":{"line":147,"column":106}},"147":{"start":{"line":148,"column":0},"end":{"line":148,"column":0}},"148":{"start":{"line":149,"column":0},"end":{"line":149,"column":42}},"149":{"start":{"line":150,"column":0},"end":{"line":150,"column":25}},"150":{"start":{"line":151,"column":0},"end":{"line":151,"column":28}},"151":{"start":{"line":152,"column":0},"end":{"line":152,"column":21}},"152":{"start":{"line":153,"column":0},"end":{"line":153,"column":18}},"153":{"start":{"line":154,"column":0},"end":{"line":154,"column":21}},"154":{"start":{"line":155,"column":0},"end":{"line":155,"column":22}},"155":{"start":{"line":156,"column":0},"end":{"line":156,"column":23}},"156":{"start":{"line":157,"column":0},"end":{"line":157,"column":10}},"157":{"start":{"line":158,"column":0},"end":{"line":158,"column":0}},"158":{"start":{"line":159,"column":0},"end":{"line":159,"column":74}},"159":{"start":{"line":160,"column":0},"end":{"line":160,"column":7}},"160":{"start":{"line":161,"column":0},"end":{"line":161,"column":0}},"161":{"start":{"line":162,"column":0},"end":{"line":162,"column":85}},"162":{"start":{"line":163,"column":0},"end":{"line":163,"column":0}},"163":{"start":{"line":164,"column":0},"end":{"line":164,"column":50}},"164":{"start":{"line":165,"column":0},"end":{"line":165,"column":43}},"165":{"start":{"line":166,"column":0},"end":{"line":166,"column":64}},"166":{"start":{"line":167,"column":0},"end":{"line":167,"column":9}},"167":{"start":{"line":168,"column":0},"end":{"line":168,"column":43}},"168":{"start":{"line":169,"column":0},"end":{"line":169,"column":64}},"169":{"start":{"line":170,"column":0},"end":{"line":170,"column":9}},"170":{"start":{"line":171,"column":0},"end":{"line":171,"column":50}},"171":{"start":{"line":172,"column":0},"end":{"line":172,"column":17}},"172":{"start":{"line":173,"column":0},"end":{"line":173,"column":20}},"173":{"start":{"line":174,"column":0},"end":{"line":174,"column":5}},"174":{"start":{"line":175,"column":0},"end":{"line":175,"column":3}},"175":{"start":{"line":176,"column":0},"end":{"line":176,"column":1}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"38":1,"39":1,"40":1,"41":1,"42":1,"43":1,"44":1,"45":1,"46":1,"47":1,"48":1,"49":1,"50":1,"51":1,"52":1,"53":1,"54":1,"55":1,"56":1,"57":1,"58":1,"59":1,"60":1,"61":1,"62":1,"63":1,"64":1,"65":1,"66":1,"67":1,"68":1,"69":1,"70":1,"71":1,"72":1,"73":1,"74":1,"75":1,"76":1,"77":1,"78":1,"79":1,"80":2,"81":2,"82":2,"83":2,"84":2,"85":2,"86":2,"87":2,"88":0,"89":0,"90":0,"91":0,"92":0,"93":0,"94":0,"95":0,"96":2,"97":2,"98":2,"99":2,"100":2,"101":2,"102":0,"103":0,"104":2,"105":2,"106":2,"107":2,"108":1,"109":1,"110":1,"111":1,"112":1,"113":1,"114":1,"115":1,"116":1,"117":1,"118":1,"119":1,"120":1,"121":1,"122":1,"123":1,"124":1,"125":2,"126":0,"127":0,"128":0,"129":0,"130":0,"131":0,"132":0,"133":0,"134":0,"135":0,"136":0,"137":0,"138":0,"139":0,"140":0,"141":0,"142":0,"143":2,"144":1,"145":1,"146":1,"147":1,"148":1,"149":1,"150":1,"151":1,"152":1,"153":1,"154":1,"155":1,"156":1,"157":1,"158":1,"159":1,"160":1,"161":1,"162":1,"163":1,"164":1,"165":2,"166":1,"167":1,"168":2,"169":1,"170":1,"171":2,"172":0,"173":0,"174":2,"175":1},"branchMap":{"0":{"type":"branch","line":52,"loc":{"start":{"line":52,"column":10},"end":{"line":79,"column":3}},"locations":[{"start":{"line":52,"column":10},"end":{"line":79,"column":3}}]},"1":{"type":"branch","line":80,"loc":{"start":{"line":80,"column":2},"end":{"line":175,"column":3}},"locations":[{"start":{"line":80,"column":2},"end":{"line":175,"column":3}}]},"2":{"type":"branch","line":86,"loc":{"start":{"line":86,"column":41},"end":{"line":86,"column":58}},"locations":[{"start":{"line":86,"column":41},"end":{"line":86,"column":58}}]},"3":{"type":"branch","line":88,"loc":{"start":{"line":88,"column":46},"end":{"line":97,"column":11}},"locations":[{"start":{"line":88,"column":46},"end":{"line":97,"column":11}}]},"4":{"type":"branch","line":102,"loc":{"start":{"line":102,"column":5},"end":{"line":104,"column":5}},"locations":[{"start":{"line":102,"column":5},"end":{"line":104,"column":5}}]},"5":{"type":"branch","line":108,"loc":{"start":{"line":108,"column":82},"end":{"line":126,"column":16}},"locations":[{"start":{"line":108,"column":82},"end":{"line":126,"column":16}}]},"6":{"type":"branch","line":126,"loc":{"start":{"line":126,"column":16},"end":{"line":144,"column":13}},"locations":[{"start":{"line":126,"column":16},"end":{"line":144,"column":13}}]},"7":{"type":"branch","line":144,"loc":{"start":{"line":144,"column":7},"end":{"line":172,"column":13}},"locations":[{"start":{"line":144,"column":7},"end":{"line":172,"column":13}}]},"8":{"type":"branch","line":147,"loc":{"start":{"line":147,"column":99},"end":{"line":147,"column":105}},"locations":[{"start":{"line":147,"column":99},"end":{"line":147,"column":105}}]},"9":{"type":"branch","line":172,"loc":{"start":{"line":172,"column":6},"end":{"line":174,"column":5}},"locations":[{"start":{"line":172,"column":6},"end":{"line":174,"column":5}}]},"10":{"type":"branch","line":165,"loc":{"start":{"line":165,"column":34},"end":{"line":167,"column":7}},"locations":[{"start":{"line":165,"column":34},"end":{"line":167,"column":7}}]},"11":{"type":"branch","line":168,"loc":{"start":{"line":168,"column":31},"end":{"line":170,"column":7}},"locations":[{"start":{"line":168,"column":31},"end":{"line":170,"column":7}}]}},"b":{"0":[1],"1":[2],"2":[0],"3":[0],"4":[0],"5":[1],"6":[0],"7":[1],"8":[0],"9":[0],"10":[2],"11":[2]},"fnMap":{"0":{"name":"prepareUserInput","decl":{"start":{"line":52,"column":10},"end":{"line":79,"column":3}},"loc":{"start":{"line":52,"column":10},"end":{"line":79,"column":3}},"line":52},"1":{"name":"run","decl":{"start":{"line":80,"column":2},"end":{"line":175,"column":3}},"loc":{"start":{"line":80,"column":2},"end":{"line":175,"column":3}},"line":80}},"f":{"0":1,"1":2}},"/Users/scotttwiname/Projects/subql-main/packages/cli/src/commands/codegen/index.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/cli/src/commands/codegen/index.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":43}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":71}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":60}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":92}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":0}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":46}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":57}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":0}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":18}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":28}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":16}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":95}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":7}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":112}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":4}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":0}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":30}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":46}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":48}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":48}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":48}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":0}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":35}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":0}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":81}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":0}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":6}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":56}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":31}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":74}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":6}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":50}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":0}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":21}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":71}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":5}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":0}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":69}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":0}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":46}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":0}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":39}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":55}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":0}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":37}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":37}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":50}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":61}},"51":{"start":{"line":52,"column":0},"end":{"line":52,"column":7}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":5}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":0}},"54":{"start":{"line":55,"column":0},"end":{"line":55,"column":9}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":37}},"56":{"start":{"line":57,"column":0},"end":{"line":57,"column":19}},"57":{"start":{"line":58,"column":0},"end":{"line":58,"column":33}},"58":{"start":{"line":59,"column":0},"end":{"line":59,"column":22}},"59":{"start":{"line":60,"column":0},"end":{"line":60,"column":5}},"60":{"start":{"line":61,"column":0},"end":{"line":61,"column":3}},"61":{"start":{"line":62,"column":0},"end":{"line":62,"column":1}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":13,"21":13,"22":13,"23":13,"24":13,"25":13,"26":13,"27":13,"28":13,"29":13,"30":13,"31":13,"32":13,"33":13,"34":13,"35":13,"36":13,"37":13,"38":13,"39":13,"40":13,"41":13,"42":13,"43":13,"44":13,"45":13,"46":13,"47":13,"48":13,"49":13,"50":0,"51":0,"52":13,"53":13,"54":13,"55":13,"56":13,"57":0,"58":0,"59":0,"60":13,"61":1},"branchMap":{"0":{"type":"branch","line":20,"loc":{"start":{"line":20,"column":2},"end":{"line":61,"column":3}},"locations":[{"start":{"line":20,"column":2},"end":{"line":61,"column":3}}]},"1":{"type":"branch","line":28,"loc":{"start":{"line":28,"column":62},"end":{"line":28,"column":79}},"locations":[{"start":{"line":28,"column":62},"end":{"line":28,"column":79}}]},"2":{"type":"branch","line":50,"loc":{"start":{"line":50,"column":7},"end":{"line":52,"column":7}},"locations":[{"start":{"line":50,"column":7},"end":{"line":52,"column":7}}]},"3":{"type":"branch","line":57,"loc":{"start":{"line":57,"column":6},"end":{"line":60,"column":5}},"locations":[{"start":{"line":57,"column":6},"end":{"line":60,"column":5}}]}},"b":{"0":[13],"1":[0],"2":[0],"3":[0]},"fnMap":{"0":{"name":"run","decl":{"start":{"line":20,"column":2},"end":{"line":61,"column":3}},"loc":{"start":{"line":20,"column":2},"end":{"line":61,"column":3}},"line":20}},"f":{"0":13}},"/Users/scotttwiname/Projects/subql-main/packages/cli/src/commands/deployment/delete.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/cli/src/commands/deployment/delete.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":43}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":50}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":68}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":54}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":0}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":45}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":43}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":0}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":18}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":64}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":68}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":69}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":4}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":0}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":30}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":45}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":41}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":51}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":50}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":32}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":0}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":85}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":103}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":105}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":0}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":53}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":119}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":26}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":6}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":53}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":3}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":1}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":1},"branchMap":{},"b":{},"fnMap":{"0":{"name":"run","decl":{"start":{"line":18,"column":2},"end":{"line":34,"column":3}},"loc":{"start":{"line":18,"column":2},"end":{"line":34,"column":3}},"line":18}},"f":{"0":0}},"/Users/scotttwiname/Projects/subql-main/packages/cli/src/commands/deployment/deploy.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/cli/src/commands/deployment/deploy.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":43}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":26}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":25}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":32}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":50}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":8}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":21}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":22}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":27}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":26}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":16}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":19}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":19}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":15}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":16}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":44}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":52}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":85}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":0}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":45}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":54}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":0}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":52}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":59}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":76}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":5}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":0}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":30}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":45}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":0}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":41}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":0}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":97}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":113}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":97}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":0}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":90}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":50}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":54}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":0}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":27}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":61}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":5}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":0}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":26}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":30}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":92}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":7}},"51":{"start":{"line":52,"column":0},"end":{"line":52,"column":0}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":99}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":5}},"54":{"start":{"line":55,"column":0},"end":{"line":55,"column":0}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":22}},"56":{"start":{"line":57,"column":0},"end":{"line":57,"column":117}},"57":{"start":{"line":58,"column":0},"end":{"line":58,"column":56}},"58":{"start":{"line":59,"column":0},"end":{"line":59,"column":111}},"59":{"start":{"line":60,"column":0},"end":{"line":60,"column":14}},"60":{"start":{"line":61,"column":0},"end":{"line":61,"column":42}},"61":{"start":{"line":62,"column":0},"end":{"line":62,"column":7}},"62":{"start":{"line":63,"column":0},"end":{"line":63,"column":5}},"63":{"start":{"line":64,"column":0},"end":{"line":64,"column":0}},"64":{"start":{"line":65,"column":0},"end":{"line":65,"column":32}},"65":{"start":{"line":66,"column":0},"end":{"line":66,"column":11}},"66":{"start":{"line":67,"column":0},"end":{"line":67,"column":52}},"67":{"start":{"line":68,"column":0},"end":{"line":68,"column":45}},"68":{"start":{"line":69,"column":0},"end":{"line":69,"column":48}},"69":{"start":{"line":70,"column":0},"end":{"line":70,"column":20}},"70":{"start":{"line":71,"column":0},"end":{"line":71,"column":27}},"71":{"start":{"line":72,"column":0},"end":{"line":72,"column":10}},"72":{"start":{"line":73,"column":0},"end":{"line":73,"column":33}},"73":{"start":{"line":74,"column":0},"end":{"line":74,"column":63}},"74":{"start":{"line":75,"column":0},"end":{"line":75,"column":21}},"75":{"start":{"line":76,"column":0},"end":{"line":76,"column":36}},"76":{"start":{"line":77,"column":0},"end":{"line":77,"column":17}},"77":{"start":{"line":78,"column":0},"end":{"line":78,"column":28}},"78":{"start":{"line":79,"column":0},"end":{"line":79,"column":16}},"79":{"start":{"line":80,"column":0},"end":{"line":80,"column":12}},"80":{"start":{"line":81,"column":0},"end":{"line":81,"column":16}},"81":{"start":{"line":82,"column":0},"end":{"line":82,"column":52}},"82":{"start":{"line":83,"column":0},"end":{"line":83,"column":9}},"83":{"start":{"line":84,"column":0},"end":{"line":84,"column":19}},"84":{"start":{"line":85,"column":0},"end":{"line":85,"column":74}},"85":{"start":{"line":86,"column":0},"end":{"line":86,"column":7}},"86":{"start":{"line":87,"column":0},"end":{"line":87,"column":5}},"87":{"start":{"line":88,"column":0},"end":{"line":88,"column":30}},"88":{"start":{"line":89,"column":0},"end":{"line":89,"column":11}},"89":{"start":{"line":90,"column":0},"end":{"line":90,"column":50}},"90":{"start":{"line":91,"column":0},"end":{"line":91,"column":46}},"91":{"start":{"line":92,"column":0},"end":{"line":92,"column":49}},"92":{"start":{"line":93,"column":0},"end":{"line":93,"column":20}},"93":{"start":{"line":94,"column":0},"end":{"line":94,"column":27}},"94":{"start":{"line":95,"column":0},"end":{"line":95,"column":10}},"95":{"start":{"line":96,"column":0},"end":{"line":96,"column":33}},"96":{"start":{"line":97,"column":0},"end":{"line":97,"column":117}},"97":{"start":{"line":98,"column":0},"end":{"line":98,"column":40}},"98":{"start":{"line":99,"column":0},"end":{"line":99,"column":16}},"99":{"start":{"line":100,"column":0},"end":{"line":100,"column":48}},"100":{"start":{"line":101,"column":0},"end":{"line":101,"column":9}},"101":{"start":{"line":102,"column":0},"end":{"line":102,"column":19}},"102":{"start":{"line":103,"column":0},"end":{"line":103,"column":72}},"103":{"start":{"line":104,"column":0},"end":{"line":104,"column":7}},"104":{"start":{"line":105,"column":0},"end":{"line":105,"column":5}},"105":{"start":{"line":106,"column":0},"end":{"line":106,"column":115}},"106":{"start":{"line":107,"column":0},"end":{"line":107,"column":49}},"107":{"start":{"line":108,"column":0},"end":{"line":108,"column":16}},"108":{"start":{"line":109,"column":0},"end":{"line":109,"column":31}},"109":{"start":{"line":110,"column":0},"end":{"line":110,"column":27}},"110":{"start":{"line":111,"column":0},"end":{"line":111,"column":33}},"111":{"start":{"line":112,"column":0},"end":{"line":112,"column":49}},"112":{"start":{"line":113,"column":0},"end":{"line":113,"column":21}},"113":{"start":{"line":114,"column":0},"end":{"line":114,"column":49}},"114":{"start":{"line":115,"column":0},"end":{"line":115,"column":8}},"115":{"start":{"line":116,"column":0},"end":{"line":116,"column":6}},"116":{"start":{"line":117,"column":0},"end":{"line":117,"column":0}},"117":{"start":{"line":118,"column":0},"end":{"line":118,"column":0}},"118":{"start":{"line":119,"column":0},"end":{"line":119,"column":61}},"119":{"start":{"line":120,"column":0},"end":{"line":120,"column":0}},"120":{"start":{"line":121,"column":0},"end":{"line":121,"column":36}},"121":{"start":{"line":122,"column":0},"end":{"line":122,"column":20}},"122":{"start":{"line":123,"column":0},"end":{"line":123,"column":27}},"123":{"start":{"line":124,"column":0},"end":{"line":124,"column":21}},"124":{"start":{"line":125,"column":0},"end":{"line":125,"column":19}},"125":{"start":{"line":126,"column":0},"end":{"line":126,"column":29}},"126":{"start":{"line":127,"column":0},"end":{"line":127,"column":21}},"127":{"start":{"line":128,"column":0},"end":{"line":128,"column":37}},"128":{"start":{"line":129,"column":0},"end":{"line":129,"column":37}},"129":{"start":{"line":130,"column":0},"end":{"line":130,"column":38}},"130":{"start":{"line":131,"column":0},"end":{"line":131,"column":7}},"131":{"start":{"line":132,"column":0},"end":{"line":132,"column":0}},"132":{"start":{"line":133,"column":0},"end":{"line":133,"column":0}},"133":{"start":{"line":134,"column":0},"end":{"line":134,"column":0}},"134":{"start":{"line":135,"column":0},"end":{"line":135,"column":0}},"135":{"start":{"line":136,"column":0},"end":{"line":136,"column":0}},"136":{"start":{"line":137,"column":0},"end":{"line":137,"column":0}},"137":{"start":{"line":138,"column":0},"end":{"line":138,"column":3}},"138":{"start":{"line":139,"column":0},"end":{"line":139,"column":1}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"59":0,"60":0,"61":0,"62":0,"63":0,"64":0,"65":0,"66":0,"67":0,"68":0,"69":0,"70":0,"71":0,"72":0,"73":0,"74":0,"75":0,"76":0,"77":0,"78":0,"79":0,"80":0,"81":0,"82":0,"83":0,"84":0,"85":0,"86":0,"87":0,"88":0,"89":0,"90":0,"91":0,"92":0,"93":0,"94":0,"95":0,"96":0,"97":0,"98":0,"99":0,"100":0,"101":0,"102":0,"103":0,"104":0,"105":0,"106":0,"107":0,"108":0,"109":0,"110":0,"111":0,"112":0,"113":0,"114":0,"115":0,"116":0,"117":0,"118":0,"119":0,"120":0,"121":0,"122":0,"123":0,"124":0,"125":0,"126":0,"127":0,"128":0,"129":0,"130":0,"131":0,"132":0,"133":0,"134":0,"135":0,"136":0,"137":0,"138":1},"branchMap":{},"b":{},"fnMap":{"0":{"name":"run","decl":{"start":{"line":31,"column":2},"end":{"line":138,"column":3}},"loc":{"start":{"line":31,"column":2},"end":{"line":138,"column":3}},"line":31}},"f":{"0":0}},"/Users/scotttwiname/Projects/subql-main/packages/cli/src/commands/deployment/index.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/cli/src/commands/deployment/index.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":43}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":37}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":30}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":30}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":32}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":0}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":56}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":0}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":49}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":50}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":18}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":27}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":47}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":7}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":20}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":21}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":20}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":4}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":26}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":19}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":21}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":19}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":4}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":0}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":30}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":49}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":33}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":38}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":0}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":18}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":46}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":9}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":36}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":49}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":23}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":75}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":10}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":9}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":0}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":47}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":12}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":47}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":5}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":59}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":9}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":60}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":87}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":50}},"51":{"start":{"line":52,"column":0},"end":{"line":52,"column":97}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":62}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":0}},"54":{"start":{"line":55,"column":0},"end":{"line":55,"column":39}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":17}},"56":{"start":{"line":57,"column":0},"end":{"line":57,"column":72}},"57":{"start":{"line":58,"column":0},"end":{"line":58,"column":5}},"58":{"start":{"line":59,"column":0},"end":{"line":59,"column":3}},"59":{"start":{"line":60,"column":0},"end":{"line":60,"column":1}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"59":1},"branchMap":{},"b":{},"fnMap":{"0":{"name":"run","decl":{"start":{"line":28,"column":2},"end":{"line":59,"column":3}},"loc":{"start":{"line":28,"column":2},"end":{"line":59,"column":3}},"line":28}},"f":{"0":0}},"/Users/scotttwiname/Projects/subql-main/packages/cli/src/commands/deployment/promote.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/cli/src/commands/deployment/promote.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":43}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":50}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":69}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":54}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":0}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":46}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":44}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":0}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":18}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":64}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":68}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":69}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":4}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":0}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":30}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":46}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":41}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":0}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":51}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":32}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":50}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":0}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":85}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":103}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":105}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":0}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":51}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":10}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":19}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":16}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":20}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":23}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":34}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":79}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":3}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":1}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":1},"branchMap":{},"b":{},"fnMap":{"0":{"name":"run","decl":{"start":{"line":18,"column":2},"end":{"line":38,"column":3}},"loc":{"start":{"line":18,"column":2},"end":{"line":38,"column":3}},"line":18}},"f":{"0":0}},"/Users/scotttwiname/Projects/subql-main/packages/cli/src/commands/init.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/cli/src/commands/init.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":20}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":24}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":24}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":49}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":45}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":26}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":25}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":26}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":37}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":8}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":22}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":23}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":18}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":15}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":10}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":25}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":34}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":16}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":23}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":26}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":39}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":41}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":74}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":42}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":81}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":0}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":51}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":37}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":40}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":24}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":37}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":14}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":46}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":29}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":10}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":8}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":7}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":4}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":1}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":0}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":64}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":22}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":21}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":20}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":9}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":63}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":23}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":9}},"51":{"start":{"line":52,"column":0},"end":{"line":52,"column":22}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":21}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":17}},"54":{"start":{"line":55,"column":0},"end":{"line":55,"column":72}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":15}},"56":{"start":{"line":57,"column":0},"end":{"line":57,"column":5}},"57":{"start":{"line":58,"column":0},"end":{"line":58,"column":3}},"58":{"start":{"line":59,"column":0},"end":{"line":59,"column":65}},"59":{"start":{"line":60,"column":0},"end":{"line":60,"column":19}},"60":{"start":{"line":61,"column":0},"end":{"line":61,"column":5}},"61":{"start":{"line":62,"column":0},"end":{"line":62,"column":26}},"62":{"start":{"line":63,"column":0},"end":{"line":63,"column":1}},"63":{"start":{"line":64,"column":0},"end":{"line":64,"column":0}},"64":{"start":{"line":65,"column":0},"end":{"line":65,"column":43}},"65":{"start":{"line":66,"column":0},"end":{"line":66,"column":64}},"66":{"start":{"line":67,"column":0},"end":{"line":67,"column":0}},"67":{"start":{"line":68,"column":0},"end":{"line":68,"column":18}},"68":{"start":{"line":69,"column":0},"end":{"line":69,"column":38}},"69":{"start":{"line":70,"column":0},"end":{"line":70,"column":94}},"70":{"start":{"line":71,"column":0},"end":{"line":71,"column":105}},"71":{"start":{"line":72,"column":0},"end":{"line":72,"column":118}},"72":{"start":{"line":73,"column":0},"end":{"line":73,"column":61}},"73":{"start":{"line":74,"column":0},"end":{"line":74,"column":4}},"74":{"start":{"line":75,"column":0},"end":{"line":75,"column":0}},"75":{"start":{"line":76,"column":0},"end":{"line":76,"column":17}},"76":{"start":{"line":77,"column":0},"end":{"line":77,"column":30}},"77":{"start":{"line":78,"column":0},"end":{"line":78,"column":51}},"78":{"start":{"line":79,"column":0},"end":{"line":79,"column":7}},"79":{"start":{"line":80,"column":0},"end":{"line":80,"column":4}},"80":{"start":{"line":81,"column":0},"end":{"line":81,"column":47}},"81":{"start":{"line":82,"column":0},"end":{"line":82,"column":35}},"82":{"start":{"line":83,"column":0},"end":{"line":83,"column":27}},"83":{"start":{"line":84,"column":0},"end":{"line":84,"column":40}},"84":{"start":{"line":85,"column":0},"end":{"line":85,"column":26}},"85":{"start":{"line":86,"column":0},"end":{"line":86,"column":0}},"86":{"start":{"line":87,"column":0},"end":{"line":87,"column":30}},"87":{"start":{"line":88,"column":0},"end":{"line":88,"column":49}},"88":{"start":{"line":89,"column":0},"end":{"line":89,"column":0}},"89":{"start":{"line":90,"column":0},"end":{"line":90,"column":91}},"90":{"start":{"line":91,"column":0},"end":{"line":91,"column":41}},"91":{"start":{"line":92,"column":0},"end":{"line":92,"column":40}},"92":{"start":{"line":93,"column":0},"end":{"line":93,"column":24}},"93":{"start":{"line":94,"column":0},"end":{"line":94,"column":85}},"94":{"start":{"line":95,"column":0},"end":{"line":95,"column":74}},"95":{"start":{"line":96,"column":0},"end":{"line":96,"column":89}},"96":{"start":{"line":97,"column":0},"end":{"line":97,"column":5}},"97":{"start":{"line":98,"column":0},"end":{"line":98,"column":0}},"98":{"start":{"line":99,"column":0},"end":{"line":99,"column":51}},"99":{"start":{"line":100,"column":0},"end":{"line":100,"column":0}},"100":{"start":{"line":101,"column":0},"end":{"line":101,"column":22}},"101":{"start":{"line":102,"column":0},"end":{"line":102,"column":60}},"102":{"start":{"line":103,"column":0},"end":{"line":103,"column":18}},"103":{"start":{"line":104,"column":0},"end":{"line":104,"column":15}},"104":{"start":{"line":105,"column":0},"end":{"line":105,"column":9}},"105":{"start":{"line":106,"column":0},"end":{"line":106,"column":33}},"106":{"start":{"line":107,"column":0},"end":{"line":107,"column":45}},"107":{"start":{"line":108,"column":0},"end":{"line":108,"column":31}},"108":{"start":{"line":109,"column":0},"end":{"line":109,"column":25}},"109":{"start":{"line":110,"column":0},"end":{"line":110,"column":48}},"110":{"start":{"line":111,"column":0},"end":{"line":111,"column":23}},"111":{"start":{"line":112,"column":0},"end":{"line":112,"column":40}},"112":{"start":{"line":113,"column":0},"end":{"line":113,"column":10}},"113":{"start":{"line":114,"column":0},"end":{"line":114,"column":8}},"114":{"start":{"line":115,"column":0},"end":{"line":115,"column":35}},"115":{"start":{"line":116,"column":0},"end":{"line":116,"column":44}},"116":{"start":{"line":117,"column":0},"end":{"line":117,"column":9}},"117":{"start":{"line":118,"column":0},"end":{"line":118,"column":0}},"118":{"start":{"line":119,"column":0},"end":{"line":119,"column":75}},"119":{"start":{"line":120,"column":0},"end":{"line":120,"column":97}},"120":{"start":{"line":121,"column":0},"end":{"line":121,"column":0}},"121":{"start":{"line":122,"column":0},"end":{"line":122,"column":24}},"122":{"start":{"line":123,"column":0},"end":{"line":123,"column":69}},"123":{"start":{"line":124,"column":0},"end":{"line":124,"column":0}},"124":{"start":{"line":125,"column":0},"end":{"line":125,"column":18}},"125":{"start":{"line":126,"column":0},"end":{"line":126,"column":15}},"126":{"start":{"line":127,"column":0},"end":{"line":127,"column":9}},"127":{"start":{"line":128,"column":0},"end":{"line":128,"column":34}},"128":{"start":{"line":129,"column":0},"end":{"line":129,"column":38}},"129":{"start":{"line":130,"column":0},"end":{"line":130,"column":31}},"130":{"start":{"line":131,"column":0},"end":{"line":131,"column":25}},"131":{"start":{"line":132,"column":0},"end":{"line":132,"column":41}},"132":{"start":{"line":133,"column":0},"end":{"line":133,"column":23}},"133":{"start":{"line":134,"column":0},"end":{"line":134,"column":45}},"134":{"start":{"line":135,"column":0},"end":{"line":135,"column":10}},"135":{"start":{"line":136,"column":0},"end":{"line":136,"column":8}},"136":{"start":{"line":137,"column":0},"end":{"line":137,"column":36}},"137":{"start":{"line":138,"column":0},"end":{"line":138,"column":39}},"138":{"start":{"line":139,"column":0},"end":{"line":139,"column":9}},"139":{"start":{"line":140,"column":0},"end":{"line":140,"column":101}},"140":{"start":{"line":141,"column":0},"end":{"line":141,"column":0}},"141":{"start":{"line":142,"column":0},"end":{"line":142,"column":100}},"142":{"start":{"line":143,"column":0},"end":{"line":143,"column":0}},"143":{"start":{"line":144,"column":0},"end":{"line":144,"column":49}},"144":{"start":{"line":145,"column":0},"end":{"line":145,"column":26}},"145":{"start":{"line":146,"column":0},"end":{"line":146,"column":115}},"146":{"start":{"line":147,"column":0},"end":{"line":147,"column":51}},"147":{"start":{"line":148,"column":0},"end":{"line":148,"column":92}},"148":{"start":{"line":149,"column":0},"end":{"line":149,"column":6}},"149":{"start":{"line":150,"column":0},"end":{"line":150,"column":110}},"150":{"start":{"line":151,"column":0},"end":{"line":151,"column":18}},"151":{"start":{"line":152,"column":0},"end":{"line":152,"column":15}},"152":{"start":{"line":153,"column":0},"end":{"line":153,"column":9}},"153":{"start":{"line":154,"column":0},"end":{"line":154,"column":34}},"154":{"start":{"line":155,"column":0},"end":{"line":155,"column":47}},"155":{"start":{"line":156,"column":0},"end":{"line":156,"column":31}},"156":{"start":{"line":157,"column":0},"end":{"line":157,"column":25}},"157":{"start":{"line":158,"column":0},"end":{"line":158,"column":42}},"158":{"start":{"line":159,"column":0},"end":{"line":159,"column":48}},"159":{"start":{"line":160,"column":0},"end":{"line":160,"column":10}},"160":{"start":{"line":161,"column":0},"end":{"line":161,"column":8}},"161":{"start":{"line":162,"column":0},"end":{"line":162,"column":42}},"162":{"start":{"line":163,"column":0},"end":{"line":163,"column":71}},"163":{"start":{"line":164,"column":0},"end":{"line":164,"column":39}},"164":{"start":{"line":165,"column":0},"end":{"line":165,"column":39}},"165":{"start":{"line":166,"column":0},"end":{"line":166,"column":16}},"166":{"start":{"line":167,"column":0},"end":{"line":167,"column":95}},"167":{"start":{"line":168,"column":0},"end":{"line":168,"column":9}},"168":{"start":{"line":169,"column":0},"end":{"line":169,"column":9}},"169":{"start":{"line":170,"column":0},"end":{"line":170,"column":101}},"170":{"start":{"line":171,"column":0},"end":{"line":171,"column":0}},"171":{"start":{"line":172,"column":0},"end":{"line":172,"column":35}},"172":{"start":{"line":173,"column":0},"end":{"line":173,"column":0}},"173":{"start":{"line":174,"column":0},"end":{"line":174,"column":66}},"174":{"start":{"line":175,"column":0},"end":{"line":175,"column":47}},"175":{"start":{"line":176,"column":0},"end":{"line":176,"column":9}},"176":{"start":{"line":177,"column":0},"end":{"line":177,"column":26}},"177":{"start":{"line":178,"column":0},"end":{"line":178,"column":26}},"178":{"start":{"line":179,"column":0},"end":{"line":179,"column":88}},"179":{"start":{"line":180,"column":0},"end":{"line":180,"column":25}},"180":{"start":{"line":181,"column":0},"end":{"line":181,"column":10}},"181":{"start":{"line":182,"column":0},"end":{"line":182,"column":9}},"182":{"start":{"line":183,"column":0},"end":{"line":183,"column":0}},"183":{"start":{"line":184,"column":0},"end":{"line":184,"column":20}},"184":{"start":{"line":185,"column":0},"end":{"line":185,"column":43}},"185":{"start":{"line":186,"column":0},"end":{"line":186,"column":7}},"186":{"start":{"line":187,"column":0},"end":{"line":187,"column":5}},"187":{"start":{"line":188,"column":0},"end":{"line":188,"column":3}},"188":{"start":{"line":189,"column":0},"end":{"line":189,"column":0}},"189":{"start":{"line":190,"column":0},"end":{"line":190,"column":42}},"190":{"start":{"line":191,"column":0},"end":{"line":191,"column":70}},"191":{"start":{"line":192,"column":0},"end":{"line":192,"column":101}},"192":{"start":{"line":193,"column":0},"end":{"line":193,"column":3}},"193":{"start":{"line":194,"column":0},"end":{"line":194,"column":0}},"194":{"start":{"line":195,"column":0},"end":{"line":195,"column":49}},"195":{"start":{"line":196,"column":0},"end":{"line":196,"column":102}},"196":{"start":{"line":197,"column":0},"end":{"line":197,"column":0}},"197":{"start":{"line":198,"column":0},"end":{"line":198,"column":98}},"198":{"start":{"line":199,"column":0},"end":{"line":199,"column":57}},"199":{"start":{"line":200,"column":0},"end":{"line":200,"column":82}},"200":{"start":{"line":201,"column":0},"end":{"line":201,"column":22}},"201":{"start":{"line":202,"column":0},"end":{"line":202,"column":7}},"202":{"start":{"line":203,"column":0},"end":{"line":203,"column":53}},"203":{"start":{"line":204,"column":0},"end":{"line":204,"column":58}},"204":{"start":{"line":205,"column":0},"end":{"line":205,"column":5}},"205":{"start":{"line":206,"column":0},"end":{"line":206,"column":78}},"206":{"start":{"line":207,"column":0},"end":{"line":207,"column":95}},"207":{"start":{"line":208,"column":0},"end":{"line":208,"column":40}},"208":{"start":{"line":209,"column":0},"end":{"line":209,"column":30}},"209":{"start":{"line":210,"column":0},"end":{"line":210,"column":24}},"210":{"start":{"line":211,"column":0},"end":{"line":211,"column":33}},"211":{"start":{"line":212,"column":0},"end":{"line":212,"column":8}},"212":{"start":{"line":213,"column":0},"end":{"line":213,"column":30}},"213":{"start":{"line":214,"column":0},"end":{"line":214,"column":82}},"214":{"start":{"line":215,"column":0},"end":{"line":215,"column":9}},"215":{"start":{"line":216,"column":0},"end":{"line":216,"column":0}},"216":{"start":{"line":217,"column":0},"end":{"line":217,"column":42}},"217":{"start":{"line":218,"column":0},"end":{"line":218,"column":50}},"218":{"start":{"line":219,"column":0},"end":{"line":219,"column":22}},"219":{"start":{"line":220,"column":0},"end":{"line":220,"column":40}},"220":{"start":{"line":221,"column":0},"end":{"line":221,"column":50}},"221":{"start":{"line":222,"column":0},"end":{"line":222,"column":55}},"222":{"start":{"line":223,"column":0},"end":{"line":223,"column":24}},"223":{"start":{"line":224,"column":0},"end":{"line":224,"column":5}},"224":{"start":{"line":225,"column":0},"end":{"line":225,"column":46}},"225":{"start":{"line":226,"column":0},"end":{"line":226,"column":3}},"226":{"start":{"line":227,"column":0},"end":{"line":227,"column":48}},"227":{"start":{"line":228,"column":0},"end":{"line":228,"column":51}},"228":{"start":{"line":229,"column":0},"end":{"line":229,"column":0}},"229":{"start":{"line":230,"column":0},"end":{"line":230,"column":49}},"230":{"start":{"line":231,"column":0},"end":{"line":231,"column":7}},"231":{"start":{"line":232,"column":0},"end":{"line":232,"column":22}},"232":{"start":{"line":233,"column":0},"end":{"line":233,"column":28}},"233":{"start":{"line":234,"column":0},"end":{"line":234,"column":31}},"234":{"start":{"line":235,"column":0},"end":{"line":235,"column":8}},"235":{"start":{"line":236,"column":0},"end":{"line":236,"column":7}},"236":{"start":{"line":237,"column":0},"end":{"line":237,"column":0}},"237":{"start":{"line":238,"column":0},"end":{"line":238,"column":53}},"238":{"start":{"line":239,"column":0},"end":{"line":239,"column":7}},"239":{"start":{"line":240,"column":0},"end":{"line":240,"column":22}},"240":{"start":{"line":241,"column":0},"end":{"line":241,"column":32}},"241":{"start":{"line":242,"column":0},"end":{"line":242,"column":64}},"242":{"start":{"line":243,"column":0},"end":{"line":243,"column":8}},"243":{"start":{"line":244,"column":0},"end":{"line":244,"column":7}},"244":{"start":{"line":245,"column":0},"end":{"line":245,"column":0}},"245":{"start":{"line":246,"column":0},"end":{"line":246,"column":48}},"246":{"start":{"line":247,"column":0},"end":{"line":247,"column":7}},"247":{"start":{"line":248,"column":0},"end":{"line":248,"column":22}},"248":{"start":{"line":249,"column":0},"end":{"line":249,"column":27}},"249":{"start":{"line":250,"column":0},"end":{"line":250,"column":90}},"250":{"start":{"line":251,"column":0},"end":{"line":251,"column":19}},"251":{"start":{"line":252,"column":0},"end":{"line":252,"column":8}},"252":{"start":{"line":253,"column":0},"end":{"line":253,"column":7}},"253":{"start":{"line":254,"column":0},"end":{"line":254,"column":0}},"254":{"start":{"line":255,"column":0},"end":{"line":255,"column":73}},"255":{"start":{"line":256,"column":0},"end":{"line":256,"column":0}},"256":{"start":{"line":257,"column":0},"end":{"line":257,"column":78}},"257":{"start":{"line":258,"column":0},"end":{"line":258,"column":24}},"258":{"start":{"line":259,"column":0},"end":{"line":259,"column":11}},"259":{"start":{"line":260,"column":0},"end":{"line":260,"column":23}},"260":{"start":{"line":261,"column":0},"end":{"line":261,"column":18}},"261":{"start":{"line":262,"column":0},"end":{"line":262,"column":23}},"262":{"start":{"line":263,"column":0},"end":{"line":263,"column":18}},"263":{"start":{"line":264,"column":0},"end":{"line":264,"column":34}},"264":{"start":{"line":265,"column":0},"end":{"line":265,"column":21}},"265":{"start":{"line":266,"column":0},"end":{"line":266,"column":22}},"266":{"start":{"line":267,"column":0},"end":{"line":267,"column":7}},"267":{"start":{"line":268,"column":0},"end":{"line":268,"column":3}},"268":{"start":{"line":269,"column":0},"end":{"line":269,"column":1}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":1,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"59":0,"60":0,"61":0,"62":0,"63":1,"64":1,"65":1,"66":1,"67":1,"68":1,"69":1,"70":1,"71":1,"72":1,"73":1,"74":1,"75":1,"76":1,"77":1,"78":1,"79":1,"80":1,"81":1,"82":1,"83":1,"84":1,"85":1,"86":1,"87":0,"88":0,"89":0,"90":0,"91":0,"92":0,"93":0,"94":0,"95":0,"96":0,"97":0,"98":0,"99":0,"100":0,"101":0,"102":0,"103":0,"104":0,"105":0,"106":0,"107":0,"108":0,"109":0,"110":0,"111":0,"112":0,"113":0,"114":0,"115":0,"116":0,"117":0,"118":0,"119":0,"120":0,"121":0,"122":0,"123":0,"124":0,"125":0,"126":0,"127":0,"128":0,"129":0,"130":0,"131":0,"132":0,"133":0,"134":0,"135":0,"136":0,"137":0,"138":0,"139":0,"140":0,"141":0,"142":0,"143":0,"144":0,"145":0,"146":0,"147":0,"148":0,"149":0,"150":0,"151":0,"152":0,"153":0,"154":0,"155":0,"156":0,"157":0,"158":0,"159":0,"160":0,"161":0,"162":0,"163":0,"164":0,"165":0,"166":0,"167":0,"168":0,"169":0,"170":0,"171":0,"172":0,"173":0,"174":0,"175":0,"176":0,"177":0,"178":0,"179":0,"180":0,"181":0,"182":0,"183":0,"184":0,"185":0,"186":0,"187":0,"188":1,"189":1,"190":0,"191":0,"192":0,"193":1,"194":1,"195":0,"196":0,"197":0,"198":0,"199":0,"200":0,"201":0,"202":0,"203":0,"204":0,"205":0,"206":0,"207":0,"208":0,"209":0,"210":0,"211":0,"212":0,"213":0,"214":0,"215":0,"216":0,"217":0,"218":0,"219":0,"220":0,"221":0,"222":0,"223":0,"224":0,"225":0,"226":1,"227":0,"228":0,"229":0,"230":0,"231":0,"232":0,"233":0,"234":0,"235":0,"236":0,"237":0,"238":0,"239":0,"240":0,"241":0,"242":0,"243":0,"244":0,"245":0,"246":0,"247":0,"248":0,"249":0,"250":0,"251":0,"252":0,"253":0,"254":0,"255":0,"256":0,"257":0,"258":0,"259":0,"260":0,"261":0,"262":0,"263":0,"264":0,"265":0,"266":0,"267":0,"268":1},"branchMap":{},"b":{},"fnMap":{"0":{"name":"filterInput","decl":{"start":{"line":31,"column":0},"end":{"line":42,"column":1}},"loc":{"start":{"line":31,"column":0},"end":{"line":42,"column":1}},"line":31},"1":{"name":"promptValidRemoteAndBranch","decl":{"start":{"line":44,"column":0},"end":{"line":63,"column":1}},"loc":{"start":{"line":44,"column":0},"end":{"line":63,"column":1}},"line":44},"2":{"name":"run","decl":{"start":{"line":87,"column":2},"end":{"line":188,"column":3}},"loc":{"start":{"line":87,"column":2},"end":{"line":188,"column":3}},"line":87},"3":{"name":"cloneCustomRepo","decl":{"start":{"line":190,"column":2},"end":{"line":193,"column":3}},"loc":{"start":{"line":190,"column":2},"end":{"line":193,"column":3}},"line":190},"4":{"name":"setupProject","decl":{"start":{"line":195,"column":2},"end":{"line":226,"column":3}},"loc":{"start":{"line":195,"column":2},"end":{"line":226,"column":3}},"line":195},"5":{"name":"createProjectScaffold","decl":{"start":{"line":227,"column":2},"end":{"line":268,"column":3}},"loc":{"start":{"line":227,"column":2},"end":{"line":268,"column":3}},"line":227}},"f":{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0}},"/Users/scotttwiname/Projects/subql-main/packages/cli/src/commands/multi-chain/add.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/cli/src/commands/multi-chain/add.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":43}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":27}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":63}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":50}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":0}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":52}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":77}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":0}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":18}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":120}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":96}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":4}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":0}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":30}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":52}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":0}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":31}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":36}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":0}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":29}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":87}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":5}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":0}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":73}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":3}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":1}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":1},"branchMap":{},"b":{},"fnMap":{"0":{"name":"run","decl":{"start":{"line":17,"column":2},"end":{"line":28,"column":3}},"loc":{"start":{"line":17,"column":2},"end":{"line":28,"column":3}},"line":17}},"f":{"0":0}},"/Users/scotttwiname/Projects/subql-main/packages/cli/src/commands/multi-chain/deploy.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/cli/src/commands/multi-chain/deploy.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":20}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":24}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":43}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":83}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":26}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":25}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":32}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":23}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":50}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":8}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":21}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":22}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":27}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":26}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":16}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":19}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":19}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":15}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":28}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":44}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":65}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":77}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":108}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":0}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":55}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":66}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":0}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":52}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":117}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":80}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":5}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":0}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":30}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":55}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":0}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":41}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":0}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":92}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":0}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":98}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":56}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":0}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":93}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":0}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":69}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":34}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":166}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":5}},"51":{"start":{"line":52,"column":0},"end":{"line":52,"column":0}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":77}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":48}},"54":{"start":{"line":55,"column":0},"end":{"line":55,"column":53}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":5}},"56":{"start":{"line":57,"column":0},"end":{"line":57,"column":0}},"57":{"start":{"line":58,"column":0},"end":{"line":58,"column":115}},"58":{"start":{"line":59,"column":0},"end":{"line":59,"column":26}},"59":{"start":{"line":60,"column":0},"end":{"line":60,"column":6}},"60":{"start":{"line":61,"column":0},"end":{"line":61,"column":0}},"61":{"start":{"line":62,"column":0},"end":{"line":62,"column":97}},"62":{"start":{"line":63,"column":0},"end":{"line":63,"column":113}},"63":{"start":{"line":64,"column":0},"end":{"line":64,"column":0}},"64":{"start":{"line":65,"column":0},"end":{"line":65,"column":34}},"65":{"start":{"line":66,"column":0},"end":{"line":66,"column":76}},"66":{"start":{"line":67,"column":0},"end":{"line":67,"column":0}},"67":{"start":{"line":68,"column":0},"end":{"line":68,"column":115}},"68":{"start":{"line":69,"column":0},"end":{"line":69,"column":49}},"69":{"start":{"line":70,"column":0},"end":{"line":70,"column":0}},"70":{"start":{"line":71,"column":0},"end":{"line":71,"column":89}},"71":{"start":{"line":72,"column":0},"end":{"line":72,"column":88}},"72":{"start":{"line":73,"column":0},"end":{"line":73,"column":101}},"73":{"start":{"line":74,"column":0},"end":{"line":74,"column":0}},"74":{"start":{"line":75,"column":0},"end":{"line":75,"column":30}},"75":{"start":{"line":76,"column":0},"end":{"line":76,"column":11}},"76":{"start":{"line":77,"column":0},"end":{"line":77,"column":59}},"77":{"start":{"line":78,"column":0},"end":{"line":78,"column":46}},"78":{"start":{"line":79,"column":0},"end":{"line":79,"column":49}},"79":{"start":{"line":80,"column":0},"end":{"line":80,"column":20}},"80":{"start":{"line":81,"column":0},"end":{"line":81,"column":27}},"81":{"start":{"line":82,"column":0},"end":{"line":82,"column":10}},"82":{"start":{"line":83,"column":0},"end":{"line":83,"column":33}},"83":{"start":{"line":84,"column":0},"end":{"line":84,"column":130}},"84":{"start":{"line":85,"column":0},"end":{"line":85,"column":16}},"85":{"start":{"line":86,"column":0},"end":{"line":86,"column":57}},"86":{"start":{"line":87,"column":0},"end":{"line":87,"column":9}},"87":{"start":{"line":88,"column":0},"end":{"line":88,"column":19}},"88":{"start":{"line":89,"column":0},"end":{"line":89,"column":72}},"89":{"start":{"line":90,"column":0},"end":{"line":90,"column":7}},"90":{"start":{"line":91,"column":0},"end":{"line":91,"column":5}},"91":{"start":{"line":92,"column":0},"end":{"line":92,"column":50}},"92":{"start":{"line":93,"column":0},"end":{"line":93,"column":0}},"93":{"start":{"line":94,"column":0},"end":{"line":94,"column":85}},"94":{"start":{"line":95,"column":0},"end":{"line":95,"column":110}},"95":{"start":{"line":96,"column":0},"end":{"line":96,"column":0}},"96":{"start":{"line":97,"column":0},"end":{"line":97,"column":99}},"97":{"start":{"line":98,"column":0},"end":{"line":98,"column":0}},"98":{"start":{"line":99,"column":0},"end":{"line":99,"column":29}},"99":{"start":{"line":100,"column":0},"end":{"line":100,"column":63}},"100":{"start":{"line":101,"column":0},"end":{"line":101,"column":7}},"101":{"start":{"line":102,"column":0},"end":{"line":102,"column":0}},"102":{"start":{"line":103,"column":0},"end":{"line":103,"column":48}},"103":{"start":{"line":104,"column":0},"end":{"line":104,"column":13}},"104":{"start":{"line":105,"column":0},"end":{"line":105,"column":63}},"105":{"start":{"line":106,"column":0},"end":{"line":106,"column":47}},"106":{"start":{"line":107,"column":0},"end":{"line":107,"column":50}},"107":{"start":{"line":108,"column":0},"end":{"line":108,"column":22}},"108":{"start":{"line":109,"column":0},"end":{"line":109,"column":29}},"109":{"start":{"line":110,"column":0},"end":{"line":110,"column":12}},"110":{"start":{"line":111,"column":0},"end":{"line":111,"column":35}},"111":{"start":{"line":112,"column":0},"end":{"line":112,"column":79}},"112":{"start":{"line":113,"column":0},"end":{"line":113,"column":23}},"113":{"start":{"line":114,"column":0},"end":{"line":114,"column":67}},"114":{"start":{"line":115,"column":0},"end":{"line":115,"column":19}},"115":{"start":{"line":116,"column":0},"end":{"line":116,"column":39}},"116":{"start":{"line":117,"column":0},"end":{"line":117,"column":18}},"117":{"start":{"line":118,"column":0},"end":{"line":118,"column":14}},"118":{"start":{"line":119,"column":0},"end":{"line":119,"column":18}},"119":{"start":{"line":120,"column":0},"end":{"line":120,"column":77}},"120":{"start":{"line":121,"column":0},"end":{"line":121,"column":11}},"121":{"start":{"line":122,"column":0},"end":{"line":122,"column":21}},"122":{"start":{"line":123,"column":0},"end":{"line":123,"column":76}},"123":{"start":{"line":124,"column":0},"end":{"line":124,"column":9}},"124":{"start":{"line":125,"column":0},"end":{"line":125,"column":7}},"125":{"start":{"line":126,"column":0},"end":{"line":126,"column":0}},"126":{"start":{"line":127,"column":0},"end":{"line":127,"column":84}},"127":{"start":{"line":128,"column":0},"end":{"line":128,"column":0}},"128":{"start":{"line":129,"column":0},"end":{"line":129,"column":0}},"129":{"start":{"line":130,"column":0},"end":{"line":130,"column":42}},"130":{"start":{"line":131,"column":0},"end":{"line":131,"column":32}},"131":{"start":{"line":132,"column":0},"end":{"line":132,"column":162}},"132":{"start":{"line":133,"column":0},"end":{"line":133,"column":9}},"133":{"start":{"line":134,"column":0},"end":{"line":134,"column":0}},"134":{"start":{"line":135,"column":0},"end":{"line":135,"column":144}},"135":{"start":{"line":136,"column":0},"end":{"line":136,"column":7}},"136":{"start":{"line":137,"column":0},"end":{"line":137,"column":0}},"137":{"start":{"line":138,"column":0},"end":{"line":138,"column":0}},"138":{"start":{"line":139,"column":0},"end":{"line":139,"column":45}},"139":{"start":{"line":140,"column":0},"end":{"line":140,"column":119}},"140":{"start":{"line":141,"column":0},"end":{"line":141,"column":58}},"141":{"start":{"line":142,"column":0},"end":{"line":142,"column":163}},"142":{"start":{"line":143,"column":0},"end":{"line":143,"column":16}},"143":{"start":{"line":144,"column":0},"end":{"line":144,"column":65}},"144":{"start":{"line":145,"column":0},"end":{"line":145,"column":9}},"145":{"start":{"line":146,"column":0},"end":{"line":146,"column":7}},"146":{"start":{"line":147,"column":0},"end":{"line":147,"column":0}},"147":{"start":{"line":148,"column":0},"end":{"line":148,"column":0}},"148":{"start":{"line":149,"column":0},"end":{"line":149,"column":18}},"149":{"start":{"line":150,"column":0},"end":{"line":150,"column":33}},"150":{"start":{"line":151,"column":0},"end":{"line":151,"column":36}},"151":{"start":{"line":152,"column":0},"end":{"line":152,"column":56}},"152":{"start":{"line":153,"column":0},"end":{"line":153,"column":51}},"153":{"start":{"line":154,"column":0},"end":{"line":154,"column":23}},"154":{"start":{"line":155,"column":0},"end":{"line":155,"column":65}},"155":{"start":{"line":156,"column":0},"end":{"line":156,"column":10}},"156":{"start":{"line":157,"column":0},"end":{"line":157,"column":8}},"157":{"start":{"line":158,"column":0},"end":{"line":158,"column":5}},"158":{"start":{"line":159,"column":0},"end":{"line":159,"column":0}},"159":{"start":{"line":160,"column":0},"end":{"line":160,"column":73}},"160":{"start":{"line":161,"column":0},"end":{"line":161,"column":0}},"161":{"start":{"line":162,"column":0},"end":{"line":162,"column":36}},"162":{"start":{"line":163,"column":0},"end":{"line":163,"column":20}},"163":{"start":{"line":164,"column":0},"end":{"line":164,"column":27}},"164":{"start":{"line":165,"column":0},"end":{"line":165,"column":21}},"165":{"start":{"line":166,"column":0},"end":{"line":166,"column":19}},"166":{"start":{"line":167,"column":0},"end":{"line":167,"column":23}},"167":{"start":{"line":168,"column":0},"end":{"line":168,"column":21}},"168":{"start":{"line":169,"column":0},"end":{"line":169,"column":31}},"169":{"start":{"line":170,"column":0},"end":{"line":170,"column":37}},"170":{"start":{"line":171,"column":0},"end":{"line":171,"column":38}},"171":{"start":{"line":172,"column":0},"end":{"line":172,"column":7}},"172":{"start":{"line":173,"column":0},"end":{"line":173,"column":0}},"173":{"start":{"line":174,"column":0},"end":{"line":174,"column":3}},"174":{"start":{"line":175,"column":0},"end":{"line":175,"column":1}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"59":0,"60":0,"61":0,"62":0,"63":0,"64":0,"65":0,"66":0,"67":0,"68":0,"69":0,"70":0,"71":0,"72":0,"73":0,"74":0,"75":0,"76":0,"77":0,"78":0,"79":0,"80":0,"81":0,"82":0,"83":0,"84":0,"85":0,"86":0,"87":0,"88":0,"89":0,"90":0,"91":0,"92":0,"93":0,"94":0,"95":0,"96":0,"97":0,"98":0,"99":0,"100":0,"101":0,"102":0,"103":0,"104":0,"105":0,"106":0,"107":0,"108":0,"109":0,"110":0,"111":0,"112":0,"113":0,"114":0,"115":0,"116":0,"117":0,"118":0,"119":0,"120":0,"121":0,"122":0,"123":0,"124":0,"125":0,"126":0,"127":0,"128":0,"129":0,"130":0,"131":0,"132":0,"133":0,"134":0,"135":0,"136":0,"137":0,"138":0,"139":0,"140":0,"141":0,"142":0,"143":0,"144":0,"145":0,"146":0,"147":0,"148":0,"149":0,"150":0,"151":0,"152":0,"153":0,"154":0,"155":0,"156":0,"157":0,"158":0,"159":0,"160":0,"161":0,"162":0,"163":0,"164":0,"165":0,"166":0,"167":0,"168":0,"169":0,"170":0,"171":0,"172":0,"173":0,"174":1},"branchMap":{},"b":{},"fnMap":{"0":{"name":"run","decl":{"start":{"line":36,"column":2},"end":{"line":174,"column":3}},"loc":{"start":{"line":36,"column":2},"end":{"line":174,"column":3}},"line":36}},"f":{"0":0}},"/Users/scotttwiname/Projects/subql-main/packages/cli/src/commands/project/create-project.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/cli/src/commands/project/create-project.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":43}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":68}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":66}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":54}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":0}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":53}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":58}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":0}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":18}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":64}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":67}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":65}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":0}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":89}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":90}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":96}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":96}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":90}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":4}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":0}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":30}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":53}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":0}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":44}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":41}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":0}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":85}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":101}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":97}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":0}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":39}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":10}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":21}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":20}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":18}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":16}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":14}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":24}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":23}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":24}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":23}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":34}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":0}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":50}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":57}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":86}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":3}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":1}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":1},"branchMap":{},"b":{},"fnMap":{"0":{"name":"run","decl":{"start":{"line":24,"column":2},"end":{"line":50,"column":3}},"loc":{"start":{"line":24,"column":2},"end":{"line":50,"column":3}},"line":24}},"f":{"0":0}},"/Users/scotttwiname/Projects/subql-main/packages/cli/src/commands/project/delete-project.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/cli/src/commands/project/delete-project.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":43}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":50}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":66}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":54}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":0}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":53}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":58}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":0}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":18}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":64}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":67}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":4}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":0}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":30}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":53}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":41}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":35}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":0}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":85}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":101}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":0}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":105}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":19}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":6}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":58}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":3}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":1}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":1},"branchMap":{},"b":{},"fnMap":{"0":{"name":"run","decl":{"start":{"line":17,"column":2},"end":{"line":29,"column":3}},"loc":{"start":{"line":17,"column":2},"end":{"line":29,"column":3}},"line":17}},"f":{"0":0}},"/Users/scotttwiname/Projects/subql-main/packages/cli/src/commands/project/index.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/cli/src/commands/project/index.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":43}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":37}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":46}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":46}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":0}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":42}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":0}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":46}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":47}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":18}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":27}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":36}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":7}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":28}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":28}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":4}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":26}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":27}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":27}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":4}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":30}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":46}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":33}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":36}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":0}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":18}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":46}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":9}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":32}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":46}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":23}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":56}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":10}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":9}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":43}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":12}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":45}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":5}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":56}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":0}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":9}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":57}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":87}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":50}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":94}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":62}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":0}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":39}},"51":{"start":{"line":52,"column":0},"end":{"line":52,"column":17}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":72}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":5}},"54":{"start":{"line":55,"column":0},"end":{"line":55,"column":3}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":1}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":1},"branchMap":{},"b":{},"fnMap":{"0":{"name":"run","decl":{"start":{"line":24,"column":2},"end":{"line":55,"column":3}},"loc":{"start":{"line":24,"column":2},"end":{"line":55,"column":3}},"line":24}},"f":{"0":0}},"/Users/scotttwiname/Projects/subql-main/packages/cli/src/commands/publish.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/cli/src/commands/publish.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":24}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":43}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":83}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":78}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":59}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":28}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":0}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":46}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":62}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":0}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":18}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":101}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":80}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":88}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":4}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":0}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":30}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":46}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":92}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":0}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":9}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":54}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":17}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":18}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":44}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":5}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":0}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":98}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":56}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":0}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":41}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":0}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":93}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":0}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":69}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":33}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":79}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":5}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":0}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":115}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":26}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":6}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":0}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":22}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":120}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":6}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":0}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":80}},"51":{"start":{"line":52,"column":0},"end":{"line":52,"column":0}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":24}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":25}},"54":{"start":{"line":55,"column":0},"end":{"line":55,"column":85}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":7}},"56":{"start":{"line":57,"column":0},"end":{"line":57,"column":0}},"57":{"start":{"line":58,"column":0},"end":{"line":58,"column":43}},"58":{"start":{"line":59,"column":0},"end":{"line":59,"column":26}},"59":{"start":{"line":60,"column":0},"end":{"line":60,"column":112}},"60":{"start":{"line":61,"column":0},"end":{"line":61,"column":9}},"61":{"start":{"line":62,"column":0},"end":{"line":62,"column":9}},"62":{"start":{"line":63,"column":0},"end":{"line":63,"column":12}},"63":{"start":{"line":64,"column":0},"end":{"line":64,"column":25}},"64":{"start":{"line":65,"column":0},"end":{"line":65,"column":34}},"65":{"start":{"line":66,"column":0},"end":{"line":66,"column":14}},"66":{"start":{"line":67,"column":0},"end":{"line":67,"column":45}},"67":{"start":{"line":68,"column":0},"end":{"line":68,"column":28}},"68":{"start":{"line":69,"column":0},"end":{"line":69,"column":26}},"69":{"start":{"line":70,"column":0},"end":{"line":70,"column":11}},"70":{"start":{"line":71,"column":0},"end":{"line":71,"column":11}},"71":{"start":{"line":72,"column":0},"end":{"line":72,"column":7}},"72":{"start":{"line":73,"column":0},"end":{"line":73,"column":5}},"73":{"start":{"line":74,"column":0},"end":{"line":74,"column":3}},"74":{"start":{"line":75,"column":0},"end":{"line":75,"column":1}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":5,"21":5,"22":5,"23":5,"24":5,"25":5,"26":0,"27":0,"28":0,"29":5,"30":5,"31":5,"32":5,"33":5,"34":5,"35":5,"36":5,"37":5,"38":5,"39":0,"40":0,"41":5,"42":5,"43":5,"44":5,"45":5,"46":5,"47":5,"48":5,"49":5,"50":5,"51":5,"52":5,"53":4,"54":0,"55":0,"56":4,"57":4,"58":4,"59":4,"60":4,"61":4,"62":5,"63":1,"64":0,"65":1,"66":1,"67":1,"68":1,"69":1,"70":1,"71":1,"72":1,"73":5,"74":1},"branchMap":{"0":{"type":"branch","line":20,"loc":{"start":{"line":20,"column":2},"end":{"line":74,"column":3}},"locations":[{"start":{"line":20,"column":2},"end":{"line":74,"column":3}}]},"1":{"type":"branch","line":22,"loc":{"start":{"line":22,"column":76},"end":{"line":22,"column":91}},"locations":[{"start":{"line":22,"column":76},"end":{"line":22,"column":91}}]},"2":{"type":"branch","line":26,"loc":{"start":{"line":26,"column":6},"end":{"line":29,"column":5}},"locations":[{"start":{"line":26,"column":6},"end":{"line":29,"column":5}}]},"3":{"type":"branch","line":39,"loc":{"start":{"line":39,"column":32},"end":{"line":41,"column":5}},"locations":[{"start":{"line":39,"column":32},"end":{"line":41,"column":5}}]},"4":{"type":"branch","line":53,"loc":{"start":{"line":53,"column":23},"end":{"line":63,"column":11}},"locations":[{"start":{"line":53,"column":23},"end":{"line":63,"column":11}}]},"5":{"type":"branch","line":54,"loc":{"start":{"line":54,"column":24},"end":{"line":56,"column":7}},"locations":[{"start":{"line":54,"column":24},"end":{"line":56,"column":7}}]},"6":{"type":"branch","line":63,"loc":{"start":{"line":63,"column":5},"end":{"line":73,"column":5}},"locations":[{"start":{"line":63,"column":5},"end":{"line":73,"column":5}}]},"7":{"type":"branch","line":64,"loc":{"start":{"line":64,"column":24},"end":{"line":66,"column":13}},"locations":[{"start":{"line":64,"column":24},"end":{"line":66,"column":13}}]},"8":{"type":"branch","line":36,"loc":{"start":{"line":36,"column":44},"end":{"line":36,"column":91}},"locations":[{"start":{"line":36,"column":44},"end":{"line":36,"column":91}}]},"9":{"type":"branch","line":48,"loc":{"start":{"line":48,"column":28},"end":{"line":48,"column":119}},"locations":[{"start":{"line":48,"column":28},"end":{"line":48,"column":119}}]},"10":{"type":"branch","line":51,"loc":{"start":{"line":51,"column":55},"end":{"line":51,"column":78}},"locations":[{"start":{"line":51,"column":55},"end":{"line":51,"column":78}}]},"11":{"type":"branch","line":58,"loc":{"start":{"line":58,"column":27},"end":{"line":62,"column":7}},"locations":[{"start":{"line":58,"column":27},"end":{"line":62,"column":7}}]},"12":{"type":"branch","line":60,"loc":{"start":{"line":60,"column":35},"end":{"line":60,"column":54}},"locations":[{"start":{"line":60,"column":35},"end":{"line":60,"column":54}}]},"13":{"type":"branch","line":67,"loc":{"start":{"line":67,"column":29},"end":{"line":71,"column":9}},"locations":[{"start":{"line":67,"column":29},"end":{"line":71,"column":9}}]}},"b":{"0":[5],"1":[0],"2":[0],"3":[0],"4":[4],"5":[0],"6":[1],"7":[0],"8":[5],"9":[5],"10":[5],"11":[4],"12":[0],"13":[1]},"fnMap":{"0":{"name":"run","decl":{"start":{"line":20,"column":2},"end":{"line":74,"column":3}},"loc":{"start":{"line":20,"column":2},"end":{"line":74,"column":3}},"line":20}},"f":{"0":5}},"/Users/scotttwiname/Projects/subql-main/packages/cli/src/constants.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/cli/src/constants.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":24}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":0}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":12}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":49}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":9}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":63}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":64}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":0}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":67}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":0}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":70}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":0}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":28}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":73}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":60}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":69}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":62}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":0}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":46}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":69}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":29}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":2}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1},"branchMap":{"0":{"type":"branch","line":23,"loc":{"start":{"line":23,"column":43},"end":{"line":23,"column":58}},"locations":[{"start":{"line":23,"column":43},"end":{"line":23,"column":58}}]}},"b":{"0":[0]},"fnMap":{},"f":{}},"/Users/scotttwiname/Projects/subql-main/packages/cli/src/controller/add-chain-controller.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/cli/src/controller/add-chain-controller.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":25}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":29}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":120}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":83}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":71}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":0}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":51}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":41}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":59}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":55}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":59}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":51}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":62}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":68}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":2}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":0}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":31}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":20}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":2}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":0}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":33}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":24}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":2}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":0}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":33}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":30}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":19}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":18}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":18}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":2}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":0}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":29}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":17}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":54}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":19}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":41}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":21}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":21}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":41}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":2}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":0}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":94}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":77}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":76}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":65}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":109}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":74}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":87}},"51":{"start":{"line":52,"column":0},"end":{"line":52,"column":1}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":0}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":77}},"54":{"start":{"line":55,"column":0},"end":{"line":55,"column":20}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":63}},"56":{"start":{"line":57,"column":0},"end":{"line":57,"column":3}},"57":{"start":{"line":58,"column":0},"end":{"line":58,"column":0}},"58":{"start":{"line":59,"column":0},"end":{"line":59,"column":29}},"59":{"start":{"line":60,"column":0},"end":{"line":60,"column":47}},"60":{"start":{"line":61,"column":0},"end":{"line":61,"column":75}},"61":{"start":{"line":62,"column":0},"end":{"line":62,"column":10}},"62":{"start":{"line":63,"column":0},"end":{"line":63,"column":37}},"63":{"start":{"line":64,"column":0},"end":{"line":64,"column":82}},"64":{"start":{"line":65,"column":0},"end":{"line":65,"column":5}},"65":{"start":{"line":66,"column":0},"end":{"line":66,"column":32}},"66":{"start":{"line":67,"column":0},"end":{"line":67,"column":3}},"67":{"start":{"line":68,"column":0},"end":{"line":68,"column":0}},"68":{"start":{"line":69,"column":0},"end":{"line":69,"column":24}},"69":{"start":{"line":70,"column":0},"end":{"line":70,"column":1}},"70":{"start":{"line":71,"column":0},"end":{"line":71,"column":0}},"71":{"start":{"line":72,"column":0},"end":{"line":72,"column":82}},"72":{"start":{"line":73,"column":0},"end":{"line":73,"column":35}},"73":{"start":{"line":74,"column":0},"end":{"line":74,"column":0}},"74":{"start":{"line":75,"column":0},"end":{"line":75,"column":53}},"75":{"start":{"line":76,"column":0},"end":{"line":76,"column":91}},"76":{"start":{"line":77,"column":0},"end":{"line":77,"column":3}},"77":{"start":{"line":78,"column":0},"end":{"line":78,"column":0}},"78":{"start":{"line":79,"column":0},"end":{"line":79,"column":46}},"79":{"start":{"line":80,"column":0},"end":{"line":80,"column":68}},"80":{"start":{"line":81,"column":0},"end":{"line":81,"column":48}},"81":{"start":{"line":82,"column":0},"end":{"line":82,"column":10}},"82":{"start":{"line":83,"column":0},"end":{"line":83,"column":83}},"83":{"start":{"line":84,"column":0},"end":{"line":84,"column":3}},"84":{"start":{"line":85,"column":0},"end":{"line":85,"column":0}},"85":{"start":{"line":86,"column":0},"end":{"line":86,"column":28}},"86":{"start":{"line":87,"column":0},"end":{"line":87,"column":1}},"87":{"start":{"line":88,"column":0},"end":{"line":88,"column":0}},"88":{"start":{"line":89,"column":0},"end":{"line":89,"column":76}},"89":{"start":{"line":90,"column":0},"end":{"line":90,"column":27}},"90":{"start":{"line":91,"column":0},"end":{"line":91,"column":60}},"91":{"start":{"line":92,"column":0},"end":{"line":92,"column":3}},"92":{"start":{"line":93,"column":0},"end":{"line":93,"column":0}},"93":{"start":{"line":94,"column":0},"end":{"line":94,"column":53}},"94":{"start":{"line":95,"column":0},"end":{"line":95,"column":42}},"95":{"start":{"line":96,"column":0},"end":{"line":96,"column":106}},"96":{"start":{"line":97,"column":0},"end":{"line":97,"column":3}},"97":{"start":{"line":98,"column":0},"end":{"line":98,"column":0}},"98":{"start":{"line":99,"column":0},"end":{"line":99,"column":41}},"99":{"start":{"line":100,"column":0},"end":{"line":100,"column":1}},"100":{"start":{"line":101,"column":0},"end":{"line":101,"column":0}},"101":{"start":{"line":102,"column":0},"end":{"line":102,"column":44}},"102":{"start":{"line":103,"column":0},"end":{"line":103,"column":21}},"103":{"start":{"line":104,"column":0},"end":{"line":104,"column":28}},"104":{"start":{"line":105,"column":0},"end":{"line":105,"column":30}},"105":{"start":{"line":106,"column":0},"end":{"line":106,"column":9}},"106":{"start":{"line":107,"column":0},"end":{"line":107,"column":26}},"107":{"start":{"line":108,"column":0},"end":{"line":108,"column":102}},"108":{"start":{"line":109,"column":0},"end":{"line":109,"column":110}},"109":{"start":{"line":110,"column":0},"end":{"line":110,"column":0}},"110":{"start":{"line":111,"column":0},"end":{"line":111,"column":70}},"111":{"start":{"line":112,"column":0},"end":{"line":112,"column":0}},"112":{"start":{"line":113,"column":0},"end":{"line":113,"column":87}},"113":{"start":{"line":114,"column":0},"end":{"line":114,"column":46}},"114":{"start":{"line":115,"column":0},"end":{"line":115,"column":6}},"115":{"start":{"line":116,"column":0},"end":{"line":116,"column":86}},"116":{"start":{"line":117,"column":0},"end":{"line":117,"column":73}},"117":{"start":{"line":118,"column":0},"end":{"line":118,"column":0}},"118":{"start":{"line":119,"column":0},"end":{"line":119,"column":49}},"119":{"start":{"line":120,"column":0},"end":{"line":120,"column":20}},"120":{"start":{"line":121,"column":0},"end":{"line":121,"column":153}},"121":{"start":{"line":122,"column":0},"end":{"line":122,"column":8}},"122":{"start":{"line":123,"column":0},"end":{"line":123,"column":52}},"123":{"start":{"line":124,"column":0},"end":{"line":124,"column":5}},"124":{"start":{"line":125,"column":0},"end":{"line":125,"column":3}},"125":{"start":{"line":126,"column":0},"end":{"line":126,"column":0}},"126":{"start":{"line":127,"column":0},"end":{"line":127,"column":91}},"127":{"start":{"line":128,"column":0},"end":{"line":128,"column":76}},"128":{"start":{"line":129,"column":0},"end":{"line":129,"column":97}},"129":{"start":{"line":130,"column":0},"end":{"line":130,"column":13}},"130":{"start":{"line":131,"column":0},"end":{"line":131,"column":5}},"131":{"start":{"line":132,"column":0},"end":{"line":132,"column":3}},"132":{"start":{"line":133,"column":0},"end":{"line":133,"column":0}},"133":{"start":{"line":134,"column":0},"end":{"line":134,"column":55}},"134":{"start":{"line":135,"column":0},"end":{"line":135,"column":68}},"135":{"start":{"line":136,"column":0},"end":{"line":136,"column":0}},"136":{"start":{"line":137,"column":0},"end":{"line":137,"column":68}},"137":{"start":{"line":138,"column":0},"end":{"line":138,"column":73}},"138":{"start":{"line":139,"column":0},"end":{"line":139,"column":1}},"139":{"start":{"line":140,"column":0},"end":{"line":140,"column":0}},"140":{"start":{"line":141,"column":0},"end":{"line":141,"column":88}},"141":{"start":{"line":142,"column":0},"end":{"line":142,"column":41}},"142":{"start":{"line":143,"column":0},"end":{"line":143,"column":63}},"143":{"start":{"line":144,"column":0},"end":{"line":144,"column":34}},"144":{"start":{"line":145,"column":0},"end":{"line":145,"column":3}},"145":{"start":{"line":146,"column":0},"end":{"line":146,"column":1}},"146":{"start":{"line":147,"column":0},"end":{"line":147,"column":0}},"147":{"start":{"line":148,"column":0},"end":{"line":148,"column":89}},"148":{"start":{"line":149,"column":0},"end":{"line":149,"column":49}},"149":{"start":{"line":150,"column":0},"end":{"line":150,"column":48}},"150":{"start":{"line":151,"column":0},"end":{"line":151,"column":51}},"151":{"start":{"line":152,"column":0},"end":{"line":152,"column":54}},"152":{"start":{"line":153,"column":0},"end":{"line":153,"column":56}},"153":{"start":{"line":154,"column":0},"end":{"line":154,"column":7}},"154":{"start":{"line":155,"column":0},"end":{"line":155,"column":0}},"155":{"start":{"line":156,"column":0},"end":{"line":156,"column":54}},"156":{"start":{"line":157,"column":0},"end":{"line":157,"column":71}},"157":{"start":{"line":158,"column":0},"end":{"line":158,"column":71}},"158":{"start":{"line":159,"column":0},"end":{"line":159,"column":38}},"159":{"start":{"line":160,"column":0},"end":{"line":160,"column":7}},"160":{"start":{"line":161,"column":0},"end":{"line":161,"column":60}},"161":{"start":{"line":162,"column":0},"end":{"line":162,"column":5}},"162":{"start":{"line":163,"column":0},"end":{"line":163,"column":3}},"163":{"start":{"line":164,"column":0},"end":{"line":164,"column":0}},"164":{"start":{"line":165,"column":0},"end":{"line":165,"column":19}},"165":{"start":{"line":166,"column":0},"end":{"line":166,"column":1}},"166":{"start":{"line":167,"column":0},"end":{"line":167,"column":0}},"167":{"start":{"line":168,"column":0},"end":{"line":168,"column":46}},"168":{"start":{"line":169,"column":0},"end":{"line":169,"column":28}},"169":{"start":{"line":170,"column":0},"end":{"line":170,"column":21}},"170":{"start":{"line":171,"column":0},"end":{"line":171,"column":34}},"171":{"start":{"line":172,"column":0},"end":{"line":172,"column":63}},"172":{"start":{"line":173,"column":0},"end":{"line":173,"column":23}},"173":{"start":{"line":174,"column":0},"end":{"line":174,"column":7}},"174":{"start":{"line":175,"column":0},"end":{"line":175,"column":68}},"175":{"start":{"line":176,"column":0},"end":{"line":176,"column":15}},"176":{"start":{"line":177,"column":0},"end":{"line":177,"column":74}},"177":{"start":{"line":178,"column":0},"end":{"line":178,"column":3}},"178":{"start":{"line":179,"column":0},"end":{"line":179,"column":0}},"179":{"start":{"line":180,"column":0},"end":{"line":180,"column":50}},"180":{"start":{"line":181,"column":0},"end":{"line":181,"column":21}},"181":{"start":{"line":182,"column":0},"end":{"line":182,"column":60}},"182":{"start":{"line":183,"column":0},"end":{"line":183,"column":3}},"183":{"start":{"line":184,"column":0},"end":{"line":184,"column":0}},"184":{"start":{"line":185,"column":0},"end":{"line":185,"column":10}},"185":{"start":{"line":186,"column":0},"end":{"line":186,"column":35}},"186":{"start":{"line":187,"column":0},"end":{"line":187,"column":17}},"187":{"start":{"line":188,"column":0},"end":{"line":188,"column":17}},"188":{"start":{"line":189,"column":0},"end":{"line":189,"column":37}},"189":{"start":{"line":190,"column":0},"end":{"line":190,"column":8}},"190":{"start":{"line":191,"column":0},"end":{"line":191,"column":6}},"191":{"start":{"line":192,"column":0},"end":{"line":192,"column":22}},"192":{"start":{"line":193,"column":0},"end":{"line":193,"column":18}},"193":{"start":{"line":194,"column":0},"end":{"line":194,"column":26}},"194":{"start":{"line":195,"column":0},"end":{"line":195,"column":26}},"195":{"start":{"line":196,"column":0},"end":{"line":196,"column":30}},"196":{"start":{"line":197,"column":0},"end":{"line":197,"column":26}},"197":{"start":{"line":198,"column":0},"end":{"line":198,"column":22}},"198":{"start":{"line":199,"column":0},"end":{"line":199,"column":6}},"199":{"start":{"line":200,"column":0},"end":{"line":200,"column":25}},"200":{"start":{"line":201,"column":0},"end":{"line":201,"column":77}},"201":{"start":{"line":202,"column":0},"end":{"line":202,"column":18}},"202":{"start":{"line":203,"column":0},"end":{"line":203,"column":70}},"203":{"start":{"line":204,"column":0},"end":{"line":204,"column":21}},"204":{"start":{"line":205,"column":0},"end":{"line":205,"column":20}},"205":{"start":{"line":206,"column":0},"end":{"line":206,"column":18}},"206":{"start":{"line":207,"column":0},"end":{"line":207,"column":6}},"207":{"start":{"line":208,"column":0},"end":{"line":208,"column":4}},"208":{"start":{"line":209,"column":0},"end":{"line":209,"column":1}},"209":{"start":{"line":210,"column":0},"end":{"line":210,"column":0}},"210":{"start":{"line":211,"column":0},"end":{"line":211,"column":105}},"211":{"start":{"line":212,"column":0},"end":{"line":212,"column":83}},"212":{"start":{"line":213,"column":0},"end":{"line":213,"column":72}},"213":{"start":{"line":214,"column":0},"end":{"line":214,"column":65}},"214":{"start":{"line":215,"column":0},"end":{"line":215,"column":23}},"215":{"start":{"line":216,"column":0},"end":{"line":216,"column":106}},"216":{"start":{"line":217,"column":0},"end":{"line":217,"column":3}},"217":{"start":{"line":218,"column":0},"end":{"line":218,"column":0}},"218":{"start":{"line":219,"column":0},"end":{"line":219,"column":82}},"219":{"start":{"line":220,"column":0},"end":{"line":220,"column":0}},"220":{"start":{"line":221,"column":0},"end":{"line":221,"column":35}},"221":{"start":{"line":222,"column":0},"end":{"line":222,"column":49}},"222":{"start":{"line":223,"column":0},"end":{"line":223,"column":48}},"223":{"start":{"line":224,"column":0},"end":{"line":224,"column":59}},"224":{"start":{"line":225,"column":0},"end":{"line":225,"column":46}},"225":{"start":{"line":226,"column":0},"end":{"line":226,"column":65}},"226":{"start":{"line":227,"column":0},"end":{"line":227,"column":21}},"227":{"start":{"line":228,"column":0},"end":{"line":228,"column":7}},"228":{"start":{"line":229,"column":0},"end":{"line":229,"column":61}},"229":{"start":{"line":230,"column":0},"end":{"line":230,"column":78}},"230":{"start":{"line":231,"column":0},"end":{"line":231,"column":7}},"231":{"start":{"line":232,"column":0},"end":{"line":232,"column":0}},"232":{"start":{"line":233,"column":0},"end":{"line":233,"column":26}},"233":{"start":{"line":234,"column":0},"end":{"line":234,"column":18}},"234":{"start":{"line":235,"column":0},"end":{"line":235,"column":109}},"235":{"start":{"line":236,"column":0},"end":{"line":236,"column":8}},"236":{"start":{"line":237,"column":0},"end":{"line":237,"column":13}},"237":{"start":{"line":238,"column":0},"end":{"line":238,"column":5}},"238":{"start":{"line":239,"column":0},"end":{"line":239,"column":3}},"239":{"start":{"line":240,"column":0},"end":{"line":240,"column":0}},"240":{"start":{"line":241,"column":0},"end":{"line":241,"column":60}},"241":{"start":{"line":242,"column":0},"end":{"line":242,"column":25}},"242":{"start":{"line":243,"column":0},"end":{"line":243,"column":62}},"243":{"start":{"line":244,"column":0},"end":{"line":244,"column":96}},"244":{"start":{"line":245,"column":0},"end":{"line":245,"column":80}},"245":{"start":{"line":246,"column":0},"end":{"line":246,"column":98}},"246":{"start":{"line":247,"column":0},"end":{"line":247,"column":10}},"247":{"start":{"line":248,"column":0},"end":{"line":248,"column":52}},"248":{"start":{"line":249,"column":0},"end":{"line":249,"column":92}},"249":{"start":{"line":250,"column":0},"end":{"line":250,"column":3}},"250":{"start":{"line":251,"column":0},"end":{"line":251,"column":67}},"251":{"start":{"line":252,"column":0},"end":{"line":252,"column":0}},"252":{"start":{"line":253,"column":0},"end":{"line":253,"column":73}},"253":{"start":{"line":254,"column":0},"end":{"line":254,"column":0}},"254":{"start":{"line":255,"column":0},"end":{"line":255,"column":41}},"255":{"start":{"line":256,"column":0},"end":{"line":256,"column":64}},"256":{"start":{"line":257,"column":0},"end":{"line":257,"column":83}},"257":{"start":{"line":258,"column":0},"end":{"line":258,"column":1}},"258":{"start":{"line":259,"column":0},"end":{"line":259,"column":0}},"259":{"start":{"line":260,"column":0},"end":{"line":260,"column":56}},"260":{"start":{"line":261,"column":0},"end":{"line":261,"column":92}},"261":{"start":{"line":262,"column":0},"end":{"line":262,"column":1}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"38":1,"39":1,"40":1,"41":1,"42":1,"43":1,"44":1,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":1,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"59":0,"60":0,"61":0,"62":0,"63":0,"64":0,"65":0,"66":0,"67":0,"68":0,"69":0,"70":1,"71":2,"72":2,"73":2,"74":2,"75":0,"76":0,"77":2,"78":2,"79":2,"80":2,"81":2,"82":0,"83":0,"84":2,"85":2,"86":2,"87":1,"88":0,"89":0,"90":0,"91":0,"92":0,"93":0,"94":0,"95":0,"96":0,"97":0,"98":0,"99":0,"100":1,"101":2,"102":2,"103":2,"104":2,"105":2,"106":2,"107":2,"108":2,"109":2,"110":2,"111":2,"112":2,"113":2,"114":2,"115":2,"116":2,"117":2,"118":2,"119":1,"120":1,"121":1,"122":1,"123":1,"124":2,"125":1,"126":1,"127":1,"128":0,"129":0,"130":0,"131":1,"132":1,"133":1,"134":1,"135":1,"136":1,"137":1,"138":1,"139":1,"140":0,"141":0,"142":0,"143":0,"144":0,"145":0,"146":1,"147":0,"148":0,"149":0,"150":0,"151":0,"152":0,"153":0,"154":0,"155":0,"156":0,"157":0,"158":0,"159":0,"160":0,"161":0,"162":0,"163":0,"164":0,"165":0,"166":1,"167":0,"168":0,"169":0,"170":0,"171":0,"172":0,"173":0,"174":0,"175":0,"176":0,"177":0,"178":0,"179":0,"180":0,"181":0,"182":0,"183":0,"184":0,"185":0,"186":0,"187":0,"188":0,"189":0,"190":0,"191":0,"192":0,"193":0,"194":0,"195":0,"196":0,"197":0,"198":0,"199":0,"200":0,"201":0,"202":0,"203":0,"204":0,"205":0,"206":0,"207":0,"208":0,"209":1,"210":1,"211":0,"212":0,"213":0,"214":0,"215":0,"216":0,"217":0,"218":0,"219":0,"220":0,"221":0,"222":0,"223":0,"224":0,"225":0,"226":0,"227":0,"228":0,"229":0,"230":0,"231":0,"232":0,"233":0,"234":0,"235":0,"236":0,"237":0,"238":0,"239":0,"240":0,"241":0,"242":0,"243":0,"244":0,"245":0,"246":0,"247":0,"248":0,"249":0,"250":0,"251":0,"252":0,"253":0,"254":0,"255":0,"256":0,"257":0,"258":1,"259":2,"260":2,"261":2},"branchMap":{"0":{"type":"branch","line":72,"loc":{"start":{"line":72,"column":0},"end":{"line":87,"column":1}},"locations":[{"start":{"line":72,"column":0},"end":{"line":87,"column":1}}]},"1":{"type":"branch","line":75,"loc":{"start":{"line":75,"column":52},"end":{"line":77,"column":3}},"locations":[{"start":{"line":75,"column":52},"end":{"line":77,"column":3}}]},"2":{"type":"branch","line":82,"loc":{"start":{"line":82,"column":3},"end":{"line":84,"column":3}},"locations":[{"start":{"line":82,"column":3},"end":{"line":84,"column":3}}]},"3":{"type":"branch","line":102,"loc":{"start":{"line":102,"column":0},"end":{"line":139,"column":1}},"locations":[{"start":{"line":102,"column":0},"end":{"line":139,"column":1}}]},"4":{"type":"branch","line":119,"loc":{"start":{"line":119,"column":48},"end":{"line":124,"column":5}},"locations":[{"start":{"line":119,"column":48},"end":{"line":124,"column":5}}]},"5":{"type":"branch","line":126,"loc":{"start":{"line":126,"column":-1},"end":{"line":139,"column":1}},"locations":[{"start":{"line":126,"column":-1},"end":{"line":139,"column":1}}]},"6":{"type":"branch","line":128,"loc":{"start":{"line":128,"column":75},"end":{"line":131,"column":5}},"locations":[{"start":{"line":128,"column":75},"end":{"line":131,"column":5}}]},"7":{"type":"branch","line":114,"loc":{"start":{"line":114,"column":4},"end":{"line":114,"column":46}},"locations":[{"start":{"line":114,"column":4},"end":{"line":114,"column":46}}]},"8":{"type":"branch","line":260,"loc":{"start":{"line":260,"column":0},"end":{"line":262,"column":1}},"locations":[{"start":{"line":260,"column":0},"end":{"line":262,"column":1}}]}},"b":{"0":[2],"1":[0],"2":[0],"3":[2],"4":[1],"5":[1],"6":[0],"7":[2],"8":[2]},"fnMap":{"0":{"name":"addChain","decl":{"start":{"line":45,"column":7},"end":{"line":52,"column":1}},"loc":{"start":{"line":45,"column":7},"end":{"line":52,"column":1}},"line":45},"1":{"name":"determineMultichainManifestPath","decl":{"start":{"line":54,"column":0},"end":{"line":70,"column":1}},"loc":{"start":{"line":54,"column":0},"end":{"line":70,"column":1}},"line":54},"2":{"name":"loadMultichainManifest","decl":{"start":{"line":72,"column":0},"end":{"line":87,"column":1}},"loc":{"start":{"line":72,"column":0},"end":{"line":87,"column":1}},"line":72},"3":{"name":"handleChainManifestOrId","decl":{"start":{"line":89,"column":0},"end":{"line":100,"column":1}},"loc":{"start":{"line":89,"column":0},"end":{"line":100,"column":1}},"line":89},"4":{"name":"validateAndAddChainManifest","decl":{"start":{"line":102,"column":0},"end":{"line":139,"column":1}},"loc":{"start":{"line":102,"column":0},"end":{"line":139,"column":1}},"line":102},"5":{"name":"loadDockerComposeFile","decl":{"start":{"line":141,"column":0},"end":{"line":146,"column":1}},"loc":{"start":{"line":141,"column":0},"end":{"line":146,"column":1}},"line":141},"6":{"name":"getSubqlNodeService","decl":{"start":{"line":148,"column":0},"end":{"line":166,"column":1}},"loc":{"start":{"line":148,"column":0},"end":{"line":166,"column":1}},"line":148},"7":{"name":"getDefaultServiceConfiguration","decl":{"start":{"line":168,"column":0},"end":{"line":209,"column":1}},"loc":{"start":{"line":168,"column":0},"end":{"line":209,"column":1}},"line":168},"8":{"name":"updateDockerCompose","decl":{"start":{"line":211,"column":7},"end":{"line":258,"column":1}},"loc":{"start":{"line":211,"column":7},"end":{"line":258,"column":1}},"line":211},"9":{"name":"isMultiChainProject","decl":{"start":{"line":260,"column":0},"end":{"line":262,"column":1}},"loc":{"start":{"line":260,"column":0},"end":{"line":262,"column":1}},"line":260}},"f":{"0":0,"1":0,"2":2,"3":0,"4":2,"5":0,"6":0,"7":0,"8":0,"9":2}},"/Users/scotttwiname/Projects/subql-main/packages/cli/src/controller/build-controller.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/cli/src/controller/build-controller.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":49}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":47}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":36}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":0}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":23}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":39}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":21}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":20}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":23}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":30}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":17}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":51}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":22}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":22}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":31}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":17}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":19}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":16}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":24}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":24}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":26}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":19}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":27}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":12}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":10}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":9}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":6}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":4}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":11}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":12}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":7}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":24}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":32}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":45}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":18}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":28}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":31}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":12}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":10}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":8}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":7}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":25}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":27}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":8}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":6}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":4}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":0}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":12}},"51":{"start":{"line":52,"column":0},"end":{"line":52,"column":48}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":4}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":0}},"54":{"start":{"line":55,"column":0},"end":{"line":55,"column":11}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":20}},"56":{"start":{"line":57,"column":0},"end":{"line":57,"column":26}},"57":{"start":{"line":58,"column":0},"end":{"line":58,"column":30}},"58":{"start":{"line":59,"column":0},"end":{"line":59,"column":4}},"59":{"start":{"line":60,"column":0},"end":{"line":60,"column":3}},"60":{"start":{"line":61,"column":0},"end":{"line":61,"column":0}},"61":{"start":{"line":62,"column":0},"end":{"line":62,"column":33}},"62":{"start":{"line":63,"column":0},"end":{"line":63,"column":39}},"63":{"start":{"line":64,"column":0},"end":{"line":64,"column":21}},"64":{"start":{"line":65,"column":0},"end":{"line":65,"column":20}},"65":{"start":{"line":66,"column":0},"end":{"line":66,"column":16}},"66":{"start":{"line":67,"column":0},"end":{"line":67,"column":15}},"67":{"start":{"line":68,"column":0},"end":{"line":68,"column":18}},"68":{"start":{"line":69,"column":0},"end":{"line":69,"column":23}},"69":{"start":{"line":70,"column":0},"end":{"line":70,"column":62}},"70":{"start":{"line":71,"column":0},"end":{"line":71,"column":21}},"71":{"start":{"line":72,"column":0},"end":{"line":72,"column":57}},"72":{"start":{"line":73,"column":0},"end":{"line":73,"column":4}},"73":{"start":{"line":74,"column":0},"end":{"line":74,"column":0}},"74":{"start":{"line":75,"column":0},"end":{"line":75,"column":42}},"75":{"start":{"line":76,"column":0},"end":{"line":76,"column":43}},"76":{"start":{"line":77,"column":0},"end":{"line":77,"column":18}},"77":{"start":{"line":78,"column":0},"end":{"line":78,"column":22}},"78":{"start":{"line":79,"column":0},"end":{"line":79,"column":15}},"79":{"start":{"line":80,"column":0},"end":{"line":80,"column":7}},"80":{"start":{"line":81,"column":0},"end":{"line":81,"column":0}},"81":{"start":{"line":82,"column":0},"end":{"line":82,"column":30}},"82":{"start":{"line":83,"column":0},"end":{"line":83,"column":36}},"83":{"start":{"line":84,"column":0},"end":{"line":84,"column":0}},"84":{"start":{"line":85,"column":0},"end":{"line":85,"column":39}},"85":{"start":{"line":86,"column":0},"end":{"line":86,"column":15}},"86":{"start":{"line":87,"column":0},"end":{"line":87,"column":7}},"87":{"start":{"line":88,"column":0},"end":{"line":88,"column":0}},"88":{"start":{"line":89,"column":0},"end":{"line":89,"column":20}},"89":{"start":{"line":90,"column":0},"end":{"line":90,"column":7}},"90":{"start":{"line":91,"column":0},"end":{"line":91,"column":5}},"91":{"start":{"line":92,"column":0},"end":{"line":92,"column":1}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":18,"9":18,"10":18,"11":18,"12":18,"13":18,"14":18,"15":18,"16":18,"17":18,"18":18,"19":18,"20":18,"21":18,"22":18,"23":18,"24":18,"25":18,"26":18,"27":18,"28":18,"29":18,"30":18,"31":18,"32":18,"33":18,"34":18,"35":18,"36":18,"37":18,"38":18,"39":18,"40":18,"41":18,"42":18,"43":18,"44":18,"45":18,"46":18,"47":18,"48":18,"49":18,"50":18,"51":18,"52":18,"53":18,"54":18,"55":18,"56":18,"57":18,"58":18,"59":1,"60":1,"61":1,"62":18,"63":18,"64":18,"65":18,"66":18,"67":18,"68":18,"69":18,"70":18,"71":18,"72":18,"73":18,"74":18,"75":18,"76":18,"77":0,"78":0,"79":0,"80":18,"81":18,"82":0,"83":0,"84":0,"85":0,"86":0,"87":18,"88":18,"89":18,"90":18,"91":18},"branchMap":{"0":{"type":"branch","line":8,"loc":{"start":{"line":8,"column":22},"end":{"line":60,"column":2}},"locations":[{"start":{"line":8,"column":22},"end":{"line":60,"column":2}}]},"1":{"type":"branch","line":15,"loc":{"start":{"line":15,"column":20},"end":{"line":15,"column":35}},"locations":[{"start":{"line":15,"column":20},"end":{"line":15,"column":35}}]},"2":{"type":"branch","line":62,"loc":{"start":{"line":62,"column":7},"end":{"line":92,"column":1}},"locations":[{"start":{"line":62,"column":7},"end":{"line":92,"column":1}}]},"3":{"type":"branch","line":75,"loc":{"start":{"line":75,"column":20},"end":{"line":91,"column":3}},"locations":[{"start":{"line":75,"column":20},"end":{"line":91,"column":3}}]},"4":{"type":"branch","line":76,"loc":{"start":{"line":76,"column":24},"end":{"line":90,"column":5}},"locations":[{"start":{"line":76,"column":24},"end":{"line":90,"column":5}}]},"5":{"type":"branch","line":77,"loc":{"start":{"line":77,"column":17},"end":{"line":80,"column":7}},"locations":[{"start":{"line":77,"column":17},"end":{"line":80,"column":7}}]},"6":{"type":"branch","line":82,"loc":{"start":{"line":82,"column":29},"end":{"line":87,"column":7}},"locations":[{"start":{"line":82,"column":29},"end":{"line":87,"column":7}}]}},"b":{"0":[18],"1":[0],"2":[18],"3":[18],"4":[18],"5":[0],"6":[0]},"fnMap":{"0":{"name":"getBaseConfig","decl":{"start":{"line":8,"column":22},"end":{"line":60,"column":2}},"loc":{"start":{"line":8,"column":22},"end":{"line":60,"column":2}},"line":8},"1":{"name":"runWebpack","decl":{"start":{"line":62,"column":7},"end":{"line":92,"column":1}},"loc":{"start":{"line":62,"column":7},"end":{"line":92,"column":1}},"line":62}},"f":{"0":18,"1":18}},"/Users/scotttwiname/Projects/subql-main/packages/cli/src/controller/codegen-controller.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/cli/src/controller/codegen-controller.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":24}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":114}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":114}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":8}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":19}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":20}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":16}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":15}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":25}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":41}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":19}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":25}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":30}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":8}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":35}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":37}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":15}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":32}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":96}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":105}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":101}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":8}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":51}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":56}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":22}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":8}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":52}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":57}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":33}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":47}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":8}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":48}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":53}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":29}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":8}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":50}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":55}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":39}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":44}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":31}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":8}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":46}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":51}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":27}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":8}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":49}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":54}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":30}},"51":{"start":{"line":52,"column":0},"end":{"line":52,"column":8}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":26}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":20}},"54":{"start":{"line":55,"column":0},"end":{"line":55,"column":20}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":22}},"56":{"start":{"line":57,"column":0},"end":{"line":57,"column":21}},"57":{"start":{"line":58,"column":0},"end":{"line":58,"column":23}},"58":{"start":{"line":59,"column":0},"end":{"line":59,"column":21}},"59":{"start":{"line":60,"column":0},"end":{"line":60,"column":14}},"60":{"start":{"line":61,"column":0},"end":{"line":61,"column":22}},"61":{"start":{"line":62,"column":0},"end":{"line":62,"column":48}},"62":{"start":{"line":63,"column":0},"end":{"line":63,"column":56}},"63":{"start":{"line":64,"column":0},"end":{"line":64,"column":0}},"64":{"start":{"line":65,"column":0},"end":{"line":65,"column":19}},"65":{"start":{"line":66,"column":0},"end":{"line":66,"column":23}},"66":{"start":{"line":67,"column":0},"end":{"line":67,"column":29}},"67":{"start":{"line":68,"column":0},"end":{"line":68,"column":20}},"68":{"start":{"line":69,"column":0},"end":{"line":69,"column":26}},"69":{"start":{"line":70,"column":0},"end":{"line":70,"column":22}},"70":{"start":{"line":71,"column":0},"end":{"line":71,"column":28}},"71":{"start":{"line":72,"column":0},"end":{"line":72,"column":18}},"72":{"start":{"line":73,"column":0},"end":{"line":73,"column":24}},"73":{"start":{"line":74,"column":0},"end":{"line":74,"column":21}},"74":{"start":{"line":75,"column":0},"end":{"line":75,"column":27}},"75":{"start":{"line":76,"column":0},"end":{"line":76,"column":24}},"76":{"start":{"line":77,"column":0},"end":{"line":77,"column":31}},"77":{"start":{"line":78,"column":0},"end":{"line":78,"column":0}},"78":{"start":{"line":79,"column":0},"end":{"line":79,"column":87}},"79":{"start":{"line":80,"column":0},"end":{"line":80,"column":0}},"80":{"start":{"line":81,"column":0},"end":{"line":81,"column":80}},"81":{"start":{"line":82,"column":0},"end":{"line":82,"column":94}},"82":{"start":{"line":83,"column":0},"end":{"line":83,"column":92}},"83":{"start":{"line":84,"column":0},"end":{"line":84,"column":88}},"84":{"start":{"line":85,"column":0},"end":{"line":85,"column":78}},"85":{"start":{"line":86,"column":0},"end":{"line":86,"column":108}},"86":{"start":{"line":87,"column":0},"end":{"line":87,"column":34}},"87":{"start":{"line":88,"column":0},"end":{"line":88,"column":42}},"88":{"start":{"line":89,"column":0},"end":{"line":89,"column":44}},"89":{"start":{"line":90,"column":0},"end":{"line":90,"column":0}},"90":{"start":{"line":91,"column":0},"end":{"line":91,"column":21}},"91":{"start":{"line":92,"column":0},"end":{"line":92,"column":16}},"92":{"start":{"line":93,"column":0},"end":{"line":93,"column":20}},"93":{"start":{"line":94,"column":0},"end":{"line":94,"column":15}},"94":{"start":{"line":95,"column":0},"end":{"line":95,"column":21}},"95":{"start":{"line":96,"column":0},"end":{"line":96,"column":2}},"96":{"start":{"line":97,"column":0},"end":{"line":97,"column":0}},"97":{"start":{"line":98,"column":0},"end":{"line":98,"column":39}},"98":{"start":{"line":99,"column":0},"end":{"line":99,"column":33}},"99":{"start":{"line":100,"column":0},"end":{"line":100,"column":15}},"100":{"start":{"line":101,"column":0},"end":{"line":101,"column":15}},"101":{"start":{"line":102,"column":0},"end":{"line":102,"column":20}},"102":{"start":{"line":103,"column":0},"end":{"line":103,"column":18}},"103":{"start":{"line":104,"column":0},"end":{"line":104,"column":19}},"104":{"start":{"line":105,"column":0},"end":{"line":105,"column":19}},"105":{"start":{"line":106,"column":0},"end":{"line":106,"column":19}},"106":{"start":{"line":107,"column":0},"end":{"line":107,"column":27}},"107":{"start":{"line":108,"column":0},"end":{"line":108,"column":1}},"108":{"start":{"line":109,"column":0},"end":{"line":109,"column":0}},"109":{"start":{"line":110,"column":0},"end":{"line":110,"column":98}},"110":{"start":{"line":111,"column":0},"end":{"line":111,"column":57}},"111":{"start":{"line":112,"column":0},"end":{"line":112,"column":48}},"112":{"start":{"line":113,"column":0},"end":{"line":113,"column":49}},"113":{"start":{"line":114,"column":0},"end":{"line":114,"column":53}},"114":{"start":{"line":115,"column":0},"end":{"line":115,"column":74}},"115":{"start":{"line":116,"column":0},"end":{"line":116,"column":12}},"116":{"start":{"line":117,"column":0},"end":{"line":117,"column":33}},"117":{"start":{"line":118,"column":0},"end":{"line":118,"column":13}},"118":{"start":{"line":119,"column":0},"end":{"line":119,"column":6}},"119":{"start":{"line":120,"column":0},"end":{"line":120,"column":5}},"120":{"start":{"line":121,"column":0},"end":{"line":121,"column":0}},"121":{"start":{"line":122,"column":0},"end":{"line":122,"column":36}},"122":{"start":{"line":123,"column":0},"end":{"line":123,"column":31}},"123":{"start":{"line":124,"column":0},"end":{"line":124,"column":14}},"124":{"start":{"line":125,"column":0},"end":{"line":125,"column":23}},"125":{"start":{"line":126,"column":0},"end":{"line":126,"column":8}},"126":{"start":{"line":127,"column":0},"end":{"line":127,"column":15}},"127":{"start":{"line":128,"column":0},"end":{"line":128,"column":19}},"128":{"start":{"line":129,"column":0},"end":{"line":129,"column":8}},"129":{"start":{"line":130,"column":0},"end":{"line":130,"column":6}},"130":{"start":{"line":131,"column":0},"end":{"line":131,"column":9}},"131":{"start":{"line":132,"column":0},"end":{"line":132,"column":109}},"132":{"start":{"line":133,"column":0},"end":{"line":133,"column":36}},"133":{"start":{"line":134,"column":0},"end":{"line":134,"column":17}},"134":{"start":{"line":135,"column":0},"end":{"line":135,"column":70}},"135":{"start":{"line":136,"column":0},"end":{"line":136,"column":5}},"136":{"start":{"line":137,"column":0},"end":{"line":137,"column":3}},"137":{"start":{"line":138,"column":0},"end":{"line":138,"column":1}},"138":{"start":{"line":139,"column":0},"end":{"line":139,"column":0}},"139":{"start":{"line":140,"column":0},"end":{"line":140,"column":89}},"140":{"start":{"line":141,"column":0},"end":{"line":141,"column":57}},"141":{"start":{"line":142,"column":0},"end":{"line":142,"column":42}},"142":{"start":{"line":143,"column":0},"end":{"line":143,"column":40}},"143":{"start":{"line":144,"column":0},"end":{"line":144,"column":12}},"144":{"start":{"line":145,"column":0},"end":{"line":145,"column":19}},"145":{"start":{"line":146,"column":0},"end":{"line":146,"column":47}},"146":{"start":{"line":147,"column":0},"end":{"line":147,"column":6}},"147":{"start":{"line":148,"column":0},"end":{"line":148,"column":5}},"148":{"start":{"line":149,"column":0},"end":{"line":149,"column":0}},"149":{"start":{"line":150,"column":0},"end":{"line":150,"column":27}},"150":{"start":{"line":151,"column":0},"end":{"line":151,"column":27}},"151":{"start":{"line":152,"column":0},"end":{"line":152,"column":14}},"152":{"start":{"line":153,"column":0},"end":{"line":153,"column":14}},"153":{"start":{"line":154,"column":0},"end":{"line":154,"column":8}},"154":{"start":{"line":155,"column":0},"end":{"line":155,"column":6}},"155":{"start":{"line":156,"column":0},"end":{"line":156,"column":9}},"156":{"start":{"line":157,"column":0},"end":{"line":157,"column":95}},"157":{"start":{"line":158,"column":0},"end":{"line":158,"column":31}},"158":{"start":{"line":159,"column":0},"end":{"line":159,"column":17}},"159":{"start":{"line":160,"column":0},"end":{"line":160,"column":60}},"160":{"start":{"line":161,"column":0},"end":{"line":161,"column":5}},"161":{"start":{"line":162,"column":0},"end":{"line":162,"column":3}},"162":{"start":{"line":163,"column":0},"end":{"line":163,"column":1}},"163":{"start":{"line":164,"column":0},"end":{"line":164,"column":0}},"164":{"start":{"line":165,"column":0},"end":{"line":165,"column":30}},"165":{"start":{"line":166,"column":0},"end":{"line":166,"column":31}},"166":{"start":{"line":167,"column":0},"end":{"line":167,"column":20}},"167":{"start":{"line":168,"column":0},"end":{"line":168,"column":56}},"168":{"start":{"line":169,"column":0},"end":{"line":169,"column":40}},"169":{"start":{"line":170,"column":0},"end":{"line":170,"column":21}},"170":{"start":{"line":171,"column":0},"end":{"line":171,"column":41}},"171":{"start":{"line":172,"column":0},"end":{"line":172,"column":31}},"172":{"start":{"line":173,"column":0},"end":{"line":173,"column":25}},"173":{"start":{"line":174,"column":0},"end":{"line":174,"column":23}},"174":{"start":{"line":175,"column":0},"end":{"line":175,"column":32}},"175":{"start":{"line":176,"column":0},"end":{"line":176,"column":29}},"176":{"start":{"line":177,"column":0},"end":{"line":177,"column":20}},"177":{"start":{"line":178,"column":0},"end":{"line":178,"column":24}},"178":{"start":{"line":179,"column":0},"end":{"line":179,"column":28}},"179":{"start":{"line":180,"column":0},"end":{"line":180,"column":71}},"180":{"start":{"line":181,"column":0},"end":{"line":181,"column":30}},"181":{"start":{"line":182,"column":0},"end":{"line":182,"column":88}},"182":{"start":{"line":183,"column":0},"end":{"line":183,"column":26}},"183":{"start":{"line":184,"column":0},"end":{"line":184,"column":70}},"184":{"start":{"line":185,"column":0},"end":{"line":185,"column":28}},"185":{"start":{"line":186,"column":0},"end":{"line":186,"column":57}},"186":{"start":{"line":187,"column":0},"end":{"line":187,"column":29}},"187":{"start":{"line":188,"column":0},"end":{"line":188,"column":13}},"188":{"start":{"line":189,"column":0},"end":{"line":189,"column":11}},"189":{"start":{"line":190,"column":0},"end":{"line":190,"column":21}},"190":{"start":{"line":191,"column":0},"end":{"line":191,"column":10}},"191":{"start":{"line":192,"column":0},"end":{"line":192,"column":26}},"192":{"start":{"line":193,"column":0},"end":{"line":193,"column":8}},"193":{"start":{"line":194,"column":0},"end":{"line":194,"column":36}},"194":{"start":{"line":195,"column":0},"end":{"line":195,"column":34}},"195":{"start":{"line":196,"column":0},"end":{"line":196,"column":5}},"196":{"start":{"line":197,"column":0},"end":{"line":197,"column":47}},"197":{"start":{"line":198,"column":0},"end":{"line":198,"column":36}},"198":{"start":{"line":199,"column":0},"end":{"line":199,"column":32}},"199":{"start":{"line":200,"column":0},"end":{"line":200,"column":42}},"200":{"start":{"line":201,"column":0},"end":{"line":201,"column":12}},"201":{"start":{"line":202,"column":0},"end":{"line":202,"column":27}},"202":{"start":{"line":203,"column":0},"end":{"line":203,"column":18}},"203":{"start":{"line":204,"column":0},"end":{"line":204,"column":69}},"204":{"start":{"line":205,"column":0},"end":{"line":205,"column":34}},"205":{"start":{"line":206,"column":0},"end":{"line":206,"column":28}},"206":{"start":{"line":207,"column":0},"end":{"line":207,"column":77}},"207":{"start":{"line":208,"column":0},"end":{"line":208,"column":26}},"208":{"start":{"line":209,"column":0},"end":{"line":209,"column":49}},"209":{"start":{"line":210,"column":0},"end":{"line":210,"column":14}},"210":{"start":{"line":211,"column":0},"end":{"line":211,"column":11}},"211":{"start":{"line":212,"column":0},"end":{"line":212,"column":46}},"212":{"start":{"line":213,"column":0},"end":{"line":213,"column":16}},"213":{"start":{"line":214,"column":0},"end":{"line":214,"column":9}},"214":{"start":{"line":215,"column":0},"end":{"line":215,"column":22}},"215":{"start":{"line":216,"column":0},"end":{"line":216,"column":50}},"216":{"start":{"line":217,"column":0},"end":{"line":217,"column":101}},"217":{"start":{"line":218,"column":0},"end":{"line":218,"column":11}},"218":{"start":{"line":219,"column":0},"end":{"line":219,"column":66}},"219":{"start":{"line":220,"column":0},"end":{"line":220,"column":45}},"220":{"start":{"line":221,"column":0},"end":{"line":221,"column":9}},"221":{"start":{"line":222,"column":0},"end":{"line":222,"column":7}},"222":{"start":{"line":223,"column":0},"end":{"line":223,"column":5}},"223":{"start":{"line":224,"column":0},"end":{"line":224,"column":32}},"224":{"start":{"line":225,"column":0},"end":{"line":225,"column":3}},"225":{"start":{"line":226,"column":0},"end":{"line":226,"column":19}},"226":{"start":{"line":227,"column":0},"end":{"line":227,"column":1}},"227":{"start":{"line":228,"column":0},"end":{"line":228,"column":0}},"228":{"start":{"line":229,"column":0},"end":{"line":229,"column":45}},"229":{"start":{"line":230,"column":0},"end":{"line":230,"column":109}},"230":{"start":{"line":231,"column":0},"end":{"line":231,"column":58}},"231":{"start":{"line":232,"column":0},"end":{"line":232,"column":80}},"232":{"start":{"line":233,"column":0},"end":{"line":233,"column":39}},"233":{"start":{"line":234,"column":0},"end":{"line":234,"column":46}},"234":{"start":{"line":235,"column":0},"end":{"line":235,"column":54}},"235":{"start":{"line":236,"column":0},"end":{"line":236,"column":79}},"236":{"start":{"line":237,"column":0},"end":{"line":237,"column":23}},"237":{"start":{"line":238,"column":0},"end":{"line":238,"column":26}},"238":{"start":{"line":239,"column":0},"end":{"line":239,"column":33}},"239":{"start":{"line":240,"column":0},"end":{"line":240,"column":36}},"240":{"start":{"line":241,"column":0},"end":{"line":241,"column":6}},"241":{"start":{"line":242,"column":0},"end":{"line":242,"column":5}},"242":{"start":{"line":243,"column":0},"end":{"line":243,"column":0}},"243":{"start":{"line":244,"column":0},"end":{"line":244,"column":50}},"244":{"start":{"line":245,"column":0},"end":{"line":245,"column":0}},"245":{"start":{"line":246,"column":0},"end":{"line":246,"column":71}},"246":{"start":{"line":247,"column":0},"end":{"line":247,"column":37}},"247":{"start":{"line":248,"column":0},"end":{"line":248,"column":49}},"248":{"start":{"line":249,"column":0},"end":{"line":249,"column":23}},"249":{"start":{"line":250,"column":0},"end":{"line":250,"column":52}},"250":{"start":{"line":251,"column":0},"end":{"line":251,"column":49}},"251":{"start":{"line":252,"column":0},"end":{"line":252,"column":75}},"252":{"start":{"line":253,"column":0},"end":{"line":253,"column":9}},"253":{"start":{"line":254,"column":0},"end":{"line":254,"column":8}},"254":{"start":{"line":255,"column":0},"end":{"line":255,"column":23}},"255":{"start":{"line":256,"column":0},"end":{"line":256,"column":5}},"256":{"start":{"line":257,"column":0},"end":{"line":257,"column":0}},"257":{"start":{"line":258,"column":0},"end":{"line":258,"column":58}},"258":{"start":{"line":259,"column":0},"end":{"line":259,"column":50}},"259":{"start":{"line":260,"column":0},"end":{"line":260,"column":0}},"260":{"start":{"line":261,"column":0},"end":{"line":261,"column":62}},"261":{"start":{"line":262,"column":0},"end":{"line":262,"column":44}},"262":{"start":{"line":263,"column":0},"end":{"line":263,"column":9}},"263":{"start":{"line":264,"column":0},"end":{"line":264,"column":0}},"264":{"start":{"line":265,"column":0},"end":{"line":265,"column":62}},"265":{"start":{"line":266,"column":0},"end":{"line":266,"column":62}},"266":{"start":{"line":267,"column":0},"end":{"line":267,"column":44}},"267":{"start":{"line":268,"column":0},"end":{"line":268,"column":5}},"268":{"start":{"line":269,"column":0},"end":{"line":269,"column":16}},"269":{"start":{"line":270,"column":0},"end":{"line":270,"column":9}},"270":{"start":{"line":271,"column":0},"end":{"line":271,"column":0}},"271":{"start":{"line":272,"column":0},"end":{"line":272,"column":31}},"272":{"start":{"line":273,"column":0},"end":{"line":273,"column":62}},"273":{"start":{"line":274,"column":0},"end":{"line":274,"column":68}},"274":{"start":{"line":275,"column":0},"end":{"line":275,"column":3}},"275":{"start":{"line":276,"column":0},"end":{"line":276,"column":0}},"276":{"start":{"line":277,"column":0},"end":{"line":277,"column":39}},"277":{"start":{"line":278,"column":0},"end":{"line":278,"column":56}},"278":{"start":{"line":279,"column":0},"end":{"line":279,"column":3}},"279":{"start":{"line":280,"column":0},"end":{"line":280,"column":0}},"280":{"start":{"line":281,"column":0},"end":{"line":281,"column":51}},"281":{"start":{"line":282,"column":0},"end":{"line":282,"column":0}},"282":{"start":{"line":283,"column":0},"end":{"line":283,"column":26}},"283":{"start":{"line":284,"column":0},"end":{"line":284,"column":107}},"284":{"start":{"line":285,"column":0},"end":{"line":285,"column":3}},"285":{"start":{"line":286,"column":0},"end":{"line":286,"column":95}},"286":{"start":{"line":287,"column":0},"end":{"line":287,"column":0}},"287":{"start":{"line":288,"column":0},"end":{"line":288,"column":91}},"288":{"start":{"line":289,"column":0},"end":{"line":289,"column":0}},"289":{"start":{"line":290,"column":0},"end":{"line":290,"column":101}},"290":{"start":{"line":291,"column":0},"end":{"line":291,"column":9}},"291":{"start":{"line":292,"column":0},"end":{"line":292,"column":106}},"292":{"start":{"line":293,"column":0},"end":{"line":293,"column":16}},"293":{"start":{"line":294,"column":0},"end":{"line":294,"column":22}},"294":{"start":{"line":295,"column":0},"end":{"line":295,"column":10}},"295":{"start":{"line":296,"column":0},"end":{"line":296,"column":9}},"296":{"start":{"line":297,"column":0},"end":{"line":297,"column":17}},"297":{"start":{"line":298,"column":0},"end":{"line":298,"column":69}},"298":{"start":{"line":299,"column":0},"end":{"line":299,"column":5}},"299":{"start":{"line":300,"column":0},"end":{"line":300,"column":45}},"300":{"start":{"line":301,"column":0},"end":{"line":301,"column":3}},"301":{"start":{"line":302,"column":0},"end":{"line":302,"column":1}},"302":{"start":{"line":303,"column":0},"end":{"line":303,"column":0}},"303":{"start":{"line":304,"column":0},"end":{"line":304,"column":30}},"304":{"start":{"line":305,"column":0},"end":{"line":305,"column":73}},"305":{"start":{"line":306,"column":0},"end":{"line":306,"column":42}},"306":{"start":{"line":307,"column":0},"end":{"line":307,"column":17}},"307":{"start":{"line":308,"column":0},"end":{"line":308,"column":45}},"308":{"start":{"line":309,"column":0},"end":{"line":309,"column":57}},"309":{"start":{"line":310,"column":0},"end":{"line":310,"column":65}},"310":{"start":{"line":311,"column":0},"end":{"line":311,"column":1}},"311":{"start":{"line":312,"column":0},"end":{"line":312,"column":0}},"312":{"start":{"line":313,"column":0},"end":{"line":313,"column":100}},"313":{"start":{"line":314,"column":0},"end":{"line":314,"column":58}},"314":{"start":{"line":315,"column":0},"end":{"line":315,"column":80}},"315":{"start":{"line":316,"column":0},"end":{"line":316,"column":39}},"316":{"start":{"line":317,"column":0},"end":{"line":317,"column":46}},"317":{"start":{"line":318,"column":0},"end":{"line":318,"column":0}},"318":{"start":{"line":319,"column":0},"end":{"line":319,"column":56}},"319":{"start":{"line":320,"column":0},"end":{"line":320,"column":48}},"320":{"start":{"line":321,"column":0},"end":{"line":321,"column":47}},"321":{"start":{"line":322,"column":0},"end":{"line":322,"column":1}},"322":{"start":{"line":323,"column":0},"end":{"line":323,"column":0}},"323":{"start":{"line":324,"column":0},"end":{"line":324,"column":58}},"324":{"start":{"line":325,"column":0},"end":{"line":325,"column":44}},"325":{"start":{"line":326,"column":0},"end":{"line":326,"column":65}},"326":{"start":{"line":327,"column":0},"end":{"line":327,"column":89}},"327":{"start":{"line":328,"column":0},"end":{"line":328,"column":5}},"328":{"start":{"line":329,"column":0},"end":{"line":329,"column":3}},"329":{"start":{"line":330,"column":0},"end":{"line":330,"column":14}},"330":{"start":{"line":331,"column":0},"end":{"line":331,"column":1}},"331":{"start":{"line":332,"column":0},"end":{"line":332,"column":37}},"332":{"start":{"line":333,"column":0},"end":{"line":333,"column":90}},"333":{"start":{"line":334,"column":0},"end":{"line":334,"column":58}},"334":{"start":{"line":335,"column":0},"end":{"line":335,"column":48}},"335":{"start":{"line":336,"column":0},"end":{"line":336,"column":41}},"336":{"start":{"line":337,"column":0},"end":{"line":337,"column":46}},"337":{"start":{"line":338,"column":0},"end":{"line":338,"column":0}},"338":{"start":{"line":339,"column":0},"end":{"line":339,"column":55}},"339":{"start":{"line":340,"column":0},"end":{"line":340,"column":0}},"340":{"start":{"line":341,"column":0},"end":{"line":341,"column":85}},"341":{"start":{"line":342,"column":0},"end":{"line":342,"column":106}},"342":{"start":{"line":343,"column":0},"end":{"line":343,"column":82}},"343":{"start":{"line":344,"column":0},"end":{"line":344,"column":92}},"344":{"start":{"line":345,"column":0},"end":{"line":345,"column":27}},"345":{"start":{"line":346,"column":0},"end":{"line":346,"column":14}},"346":{"start":{"line":347,"column":0},"end":{"line":347,"column":23}},"347":{"start":{"line":348,"column":0},"end":{"line":348,"column":18}},"348":{"start":{"line":349,"column":0},"end":{"line":349,"column":19}},"349":{"start":{"line":350,"column":0},"end":{"line":350,"column":15}},"350":{"start":{"line":351,"column":0},"end":{"line":351,"column":29}},"351":{"start":{"line":352,"column":0},"end":{"line":352,"column":20}},"352":{"start":{"line":353,"column":0},"end":{"line":353,"column":22}},"353":{"start":{"line":354,"column":0},"end":{"line":354,"column":8}},"354":{"start":{"line":355,"column":0},"end":{"line":355,"column":15}},"355":{"start":{"line":356,"column":0},"end":{"line":356,"column":19}},"356":{"start":{"line":357,"column":0},"end":{"line":357,"column":8}},"357":{"start":{"line":358,"column":0},"end":{"line":358,"column":6}},"358":{"start":{"line":359,"column":0},"end":{"line":359,"column":9}},"359":{"start":{"line":360,"column":0},"end":{"line":360,"column":27}},"360":{"start":{"line":361,"column":0},"end":{"line":361,"column":28}},"361":{"start":{"line":362,"column":0},"end":{"line":362,"column":66}},"362":{"start":{"line":363,"column":0},"end":{"line":363,"column":21}},"363":{"start":{"line":364,"column":0},"end":{"line":364,"column":8}},"364":{"start":{"line":365,"column":0},"end":{"line":365,"column":17}},"365":{"start":{"line":366,"column":0},"end":{"line":366,"column":23}},"366":{"start":{"line":367,"column":0},"end":{"line":367,"column":84}},"367":{"start":{"line":368,"column":0},"end":{"line":368,"column":5}},"368":{"start":{"line":369,"column":0},"end":{"line":369,"column":53}},"369":{"start":{"line":370,"column":0},"end":{"line":370,"column":3}},"370":{"start":{"line":371,"column":0},"end":{"line":371,"column":73}},"371":{"start":{"line":372,"column":0},"end":{"line":372,"column":32}},"372":{"start":{"line":373,"column":0},"end":{"line":373,"column":9}},"373":{"start":{"line":374,"column":0},"end":{"line":374,"column":108}},"374":{"start":{"line":375,"column":0},"end":{"line":375,"column":16}},"375":{"start":{"line":376,"column":0},"end":{"line":376,"column":21}},"376":{"start":{"line":377,"column":0},"end":{"line":377,"column":10}},"377":{"start":{"line":378,"column":0},"end":{"line":378,"column":17}},"378":{"start":{"line":379,"column":0},"end":{"line":379,"column":21}},"379":{"start":{"line":380,"column":0},"end":{"line":380,"column":10}},"380":{"start":{"line":381,"column":0},"end":{"line":381,"column":9}},"381":{"start":{"line":382,"column":0},"end":{"line":382,"column":32}},"382":{"start":{"line":383,"column":0},"end":{"line":383,"column":17}},"383":{"start":{"line":384,"column":0},"end":{"line":384,"column":70}},"384":{"start":{"line":385,"column":0},"end":{"line":385,"column":5}},"385":{"start":{"line":386,"column":0},"end":{"line":386,"column":46}},"386":{"start":{"line":387,"column":0},"end":{"line":387,"column":3}},"387":{"start":{"line":388,"column":0},"end":{"line":388,"column":1}},"388":{"start":{"line":389,"column":0},"end":{"line":389,"column":0}},"389":{"start":{"line":390,"column":0},"end":{"line":390,"column":114}},"390":{"start":{"line":391,"column":0},"end":{"line":391,"column":39}},"391":{"start":{"line":392,"column":0},"end":{"line":392,"column":35}},"392":{"start":{"line":393,"column":0},"end":{"line":393,"column":67}},"393":{"start":{"line":394,"column":0},"end":{"line":394,"column":6}},"394":{"start":{"line":395,"column":0},"end":{"line":395,"column":0}},"395":{"start":{"line":396,"column":0},"end":{"line":396,"column":86}},"396":{"start":{"line":397,"column":0},"end":{"line":397,"column":0}},"397":{"start":{"line":398,"column":0},"end":{"line":398,"column":7}},"398":{"start":{"line":399,"column":0},"end":{"line":399,"column":117}},"399":{"start":{"line":400,"column":0},"end":{"line":400,"column":36}},"400":{"start":{"line":401,"column":0},"end":{"line":401,"column":7}},"401":{"start":{"line":402,"column":0},"end":{"line":402,"column":35}},"402":{"start":{"line":403,"column":0},"end":{"line":403,"column":15}},"403":{"start":{"line":404,"column":0},"end":{"line":404,"column":21}},"404":{"start":{"line":405,"column":0},"end":{"line":405,"column":75}},"405":{"start":{"line":406,"column":0},"end":{"line":406,"column":3}},"406":{"start":{"line":407,"column":0},"end":{"line":407,"column":64}},"407":{"start":{"line":408,"column":0},"end":{"line":408,"column":1}},"408":{"start":{"line":409,"column":0},"end":{"line":409,"column":0}},"409":{"start":{"line":410,"column":0},"end":{"line":410,"column":50}},"410":{"start":{"line":411,"column":0},"end":{"line":411,"column":10}},"411":{"start":{"line":412,"column":0},"end":{"line":412,"column":47}},"412":{"start":{"line":413,"column":0},"end":{"line":413,"column":46}},"413":{"start":{"line":414,"column":0},"end":{"line":414,"column":51}},"414":{"start":{"line":415,"column":0},"end":{"line":415,"column":50}},"415":{"start":{"line":416,"column":0},"end":{"line":416,"column":52}},"416":{"start":{"line":417,"column":0},"end":{"line":417,"column":43}},"417":{"start":{"line":418,"column":0},"end":{"line":418,"column":42}},"418":{"start":{"line":419,"column":0},"end":{"line":419,"column":49}},"419":{"start":{"line":420,"column":0},"end":{"line":420,"column":48}},"420":{"start":{"line":421,"column":0},"end":{"line":421,"column":55}},"421":{"start":{"line":422,"column":0},"end":{"line":422,"column":51}},"422":{"start":{"line":423,"column":0},"end":{"line":423,"column":4}},"423":{"start":{"line":424,"column":0},"end":{"line":424,"column":1}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"38":1,"39":1,"40":1,"41":1,"42":1,"43":1,"44":1,"45":1,"46":1,"47":1,"48":1,"49":1,"50":1,"51":1,"52":1,"53":1,"54":1,"55":1,"56":1,"57":1,"58":1,"59":1,"60":1,"61":1,"62":1,"63":1,"64":1,"65":1,"66":1,"67":1,"68":1,"69":1,"70":1,"71":1,"72":1,"73":1,"74":1,"75":1,"76":1,"77":1,"78":1,"79":1,"80":1,"81":1,"82":1,"83":1,"84":1,"85":1,"86":1,"87":1,"88":1,"89":1,"90":1,"91":1,"92":1,"93":1,"94":1,"95":1,"96":1,"97":1,"98":1,"99":1,"100":1,"101":1,"102":1,"103":1,"104":1,"105":1,"106":1,"107":1,"108":1,"109":1,"110":24,"111":24,"112":24,"113":0,"114":0,"115":0,"116":0,"117":0,"118":0,"119":24,"120":24,"121":24,"122":0,"123":0,"124":0,"125":0,"126":0,"127":0,"128":0,"129":0,"130":0,"131":0,"132":0,"133":0,"134":0,"135":0,"136":0,"137":24,"138":1,"139":1,"140":22,"141":22,"142":22,"143":9,"144":9,"145":9,"146":9,"147":22,"148":22,"149":22,"150":9,"151":9,"152":9,"153":9,"154":9,"155":9,"156":9,"157":9,"158":9,"159":0,"160":0,"161":9,"162":22,"163":1,"164":37,"165":37,"166":37,"167":37,"168":37,"169":37,"170":37,"171":37,"172":197,"173":197,"174":197,"175":197,"176":197,"177":197,"178":197,"179":196,"180":196,"181":162,"182":28,"183":28,"184":0,"185":28,"186":0,"187":0,"188":28,"189":162,"190":196,"191":196,"192":196,"193":196,"194":196,"195":196,"196":197,"197":9,"198":9,"199":9,"200":197,"201":188,"202":188,"203":188,"204":188,"205":1,"206":1,"207":1,"208":1,"209":1,"210":1,"211":187,"212":187,"213":187,"214":188,"215":0,"216":0,"217":0,"218":0,"219":0,"220":0,"221":188,"222":188,"223":196,"224":196,"225":36,"226":36,"227":1,"228":1,"229":1,"230":25,"231":25,"232":25,"233":24,"234":24,"235":24,"236":24,"237":24,"238":24,"239":24,"240":24,"241":24,"242":24,"243":24,"244":24,"245":24,"246":24,"247":24,"248":24,"249":161,"250":161,"251":79,"252":79,"253":24,"254":24,"255":24,"256":24,"257":24,"258":24,"259":22,"260":22,"261":22,"262":22,"263":22,"264":22,"265":22,"266":2,"267":2,"268":20,"269":22,"270":22,"271":24,"272":2,"273":2,"274":2,"275":22,"276":24,"277":4,"278":4,"279":22,"280":22,"281":22,"282":24,"283":0,"284":0,"285":22,"286":22,"287":22,"288":22,"289":25,"290":22,"291":22,"292":22,"293":22,"294":22,"295":22,"296":22,"297":0,"298":0,"299":22,"300":22,"301":25,"302":1,"303":22,"304":22,"305":22,"306":22,"307":22,"308":22,"309":22,"310":22,"311":1,"312":1,"313":24,"314":24,"315":24,"316":24,"317":24,"318":24,"319":24,"320":22,"321":22,"322":1,"323":39,"324":39,"325":77,"326":2,"327":2,"328":77,"329":37,"330":37,"331":1,"332":1,"333":24,"334":24,"335":37,"336":37,"337":37,"338":37,"339":37,"340":37,"341":37,"342":37,"343":37,"344":37,"345":37,"346":37,"347":37,"348":37,"349":37,"350":37,"351":37,"352":37,"353":37,"354":37,"355":37,"356":37,"357":37,"358":37,"359":37,"360":37,"361":37,"362":37,"363":37,"364":37,"365":0,"366":0,"367":0,"368":36,"369":36,"370":22,"371":22,"372":22,"373":22,"374":22,"375":22,"376":22,"377":22,"378":22,"379":22,"380":22,"381":22,"382":22,"383":0,"384":0,"385":22,"386":22,"387":24,"388":1,"389":1,"390":2,"391":2,"392":2,"393":2,"394":2,"395":2,"396":2,"397":2,"398":2,"399":2,"400":2,"401":2,"402":2,"403":0,"404":0,"405":0,"406":2,"407":2,"408":1,"409":2,"410":2,"411":2,"412":2,"413":2,"414":2,"415":2,"416":2,"417":2,"418":2,"419":2,"420":2,"421":0,"422":2,"423":2},"branchMap":{"0":{"type":"branch","line":110,"loc":{"start":{"line":110,"column":7},"end":{"line":138,"column":1}},"locations":[{"start":{"line":110,"column":7},"end":{"line":138,"column":1}}]},"1":{"type":"branch","line":122,"loc":{"start":{"line":122,"column":35},"end":{"line":137,"column":3}},"locations":[{"start":{"line":122,"column":35},"end":{"line":137,"column":3}}]},"2":{"type":"branch","line":140,"loc":{"start":{"line":140,"column":7},"end":{"line":163,"column":1}},"locations":[{"start":{"line":140,"column":7},"end":{"line":163,"column":1}}]},"3":{"type":"branch","line":150,"loc":{"start":{"line":150,"column":26},"end":{"line":162,"column":3}},"locations":[{"start":{"line":150,"column":26},"end":{"line":162,"column":3}}]},"4":{"type":"branch","line":159,"loc":{"start":{"line":159,"column":6},"end":{"line":161,"column":5}},"locations":[{"start":{"line":159,"column":6},"end":{"line":161,"column":5}}]},"5":{"type":"branch","line":143,"loc":{"start":{"line":143,"column":32},"end":{"line":148,"column":3}},"locations":[{"start":{"line":143,"column":32},"end":{"line":148,"column":3}}]},"6":{"type":"branch","line":146,"loc":{"start":{"line":146,"column":32},"end":{"line":146,"column":45}},"locations":[{"start":{"line":146,"column":32},"end":{"line":146,"column":45}}]},"7":{"type":"branch","line":165,"loc":{"start":{"line":165,"column":0},"end":{"line":227,"column":1}},"locations":[{"start":{"line":165,"column":0},"end":{"line":227,"column":1}}]},"8":{"type":"branch","line":172,"loc":{"start":{"line":172,"column":30},"end":{"line":225,"column":3}},"locations":[{"start":{"line":172,"column":30},"end":{"line":225,"column":3}}]},"9":{"type":"branch","line":179,"loc":{"start":{"line":179,"column":27},"end":{"line":196,"column":5}},"locations":[{"start":{"line":179,"column":27},"end":{"line":196,"column":5}}]},"10":{"type":"branch","line":197,"loc":{"start":{"line":197,"column":46},"end":{"line":201,"column":11}},"locations":[{"start":{"line":197,"column":46},"end":{"line":201,"column":11}}]},"11":{"type":"branch","line":201,"loc":{"start":{"line":201,"column":5},"end":{"line":223,"column":5}},"locations":[{"start":{"line":201,"column":5},"end":{"line":223,"column":5}}]},"12":{"type":"branch","line":204,"loc":{"start":{"line":204,"column":60},"end":{"line":204,"column":68}},"locations":[{"start":{"line":204,"column":60},"end":{"line":204,"column":68}}]},"13":{"type":"branch","line":205,"loc":{"start":{"line":205,"column":33},"end":{"line":211,"column":11}},"locations":[{"start":{"line":205,"column":33},"end":{"line":211,"column":11}}]},"14":{"type":"branch","line":212,"loc":{"start":{"line":212,"column":-1},"end":{"line":214,"column":9}},"locations":[{"start":{"line":212,"column":-1},"end":{"line":214,"column":9}}]},"15":{"type":"branch","line":215,"loc":{"start":{"line":215,"column":8},"end":{"line":221,"column":9}},"locations":[{"start":{"line":215,"column":8},"end":{"line":221,"column":9}}]},"16":{"type":"branch","line":224,"loc":{"start":{"line":224,"column":-1},"end":{"line":225,"column":3}},"locations":[{"start":{"line":224,"column":-1},"end":{"line":225,"column":3}}]},"17":{"type":"branch","line":226,"loc":{"start":{"line":226,"column":-1},"end":{"line":227,"column":1}},"locations":[{"start":{"line":226,"column":-1},"end":{"line":227,"column":1}}]},"18":{"type":"branch","line":181,"loc":{"start":{"line":181,"column":8},"end":{"line":191,"column":9}},"locations":[{"start":{"line":181,"column":8},"end":{"line":191,"column":9}}]},"19":{"type":"branch","line":182,"loc":{"start":{"line":182,"column":52},"end":{"line":182,"column":85}},"locations":[{"start":{"line":182,"column":52},"end":{"line":182,"column":85}}]},"20":{"type":"branch","line":182,"loc":{"start":{"line":182,"column":87},"end":{"line":189,"column":11}},"locations":[{"start":{"line":182,"column":87},"end":{"line":189,"column":11}}]},"21":{"type":"branch","line":184,"loc":{"start":{"line":184,"column":69},"end":{"line":186,"column":19}},"locations":[{"start":{"line":184,"column":69},"end":{"line":186,"column":19}}]},"22":{"type":"branch","line":186,"loc":{"start":{"line":186,"column":56},"end":{"line":188,"column":13}},"locations":[{"start":{"line":186,"column":56},"end":{"line":188,"column":13}}]},"23":{"type":"branch","line":230,"loc":{"start":{"line":230,"column":7},"end":{"line":302,"column":1}},"locations":[{"start":{"line":230,"column":7},"end":{"line":302,"column":1}}]},"24":{"type":"branch","line":234,"loc":{"start":{"line":234,"column":-1},"end":{"line":290,"column":50}},"locations":[{"start":{"line":234,"column":-1},"end":{"line":290,"column":50}}]},"25":{"type":"branch","line":260,"loc":{"start":{"line":260,"column":-1},"end":{"line":272,"column":30}},"locations":[{"start":{"line":260,"column":-1},"end":{"line":272,"column":30}}]},"26":{"type":"branch","line":272,"loc":{"start":{"line":272,"column":30},"end":{"line":275,"column":3}},"locations":[{"start":{"line":272,"column":30},"end":{"line":275,"column":3}}]},"27":{"type":"branch","line":276,"loc":{"start":{"line":276,"column":-1},"end":{"line":277,"column":38}},"locations":[{"start":{"line":276,"column":-1},"end":{"line":277,"column":38}}]},"28":{"type":"branch","line":277,"loc":{"start":{"line":277,"column":38},"end":{"line":279,"column":3}},"locations":[{"start":{"line":277,"column":38},"end":{"line":279,"column":3}}]},"29":{"type":"branch","line":280,"loc":{"start":{"line":280,"column":-1},"end":{"line":283,"column":25}},"locations":[{"start":{"line":280,"column":-1},"end":{"line":283,"column":25}}]},"30":{"type":"branch","line":283,"loc":{"start":{"line":283,"column":25},"end":{"line":285,"column":3}},"locations":[{"start":{"line":283,"column":25},"end":{"line":285,"column":3}}]},"31":{"type":"branch","line":286,"loc":{"start":{"line":286,"column":-1},"end":{"line":290,"column":50}},"locations":[{"start":{"line":286,"column":-1},"end":{"line":290,"column":50}}]},"32":{"type":"branch","line":290,"loc":{"start":{"line":290,"column":50},"end":{"line":290,"column":71}},"locations":[{"start":{"line":290,"column":50},"end":{"line":290,"column":71}}]},"33":{"type":"branch","line":290,"loc":{"start":{"line":290,"column":71},"end":{"line":290,"column":98}},"locations":[{"start":{"line":290,"column":71},"end":{"line":290,"column":98}}]},"34":{"type":"branch","line":290,"loc":{"start":{"line":290,"column":100},"end":{"line":301,"column":3}},"locations":[{"start":{"line":290,"column":100},"end":{"line":301,"column":3}}]},"35":{"type":"branch","line":297,"loc":{"start":{"line":297,"column":6},"end":{"line":299,"column":5}},"locations":[{"start":{"line":297,"column":6},"end":{"line":299,"column":5}}]},"36":{"type":"branch","line":235,"loc":{"start":{"line":235,"column":39},"end":{"line":242,"column":3}},"locations":[{"start":{"line":235,"column":39},"end":{"line":242,"column":3}}]},"37":{"type":"branch","line":246,"loc":{"start":{"line":246,"column":51},"end":{"line":256,"column":3}},"locations":[{"start":{"line":246,"column":51},"end":{"line":256,"column":3}}]},"38":{"type":"branch","line":248,"loc":{"start":{"line":248,"column":14},"end":{"line":248,"column":48}},"locations":[{"start":{"line":248,"column":14},"end":{"line":248,"column":48}}]},"39":{"type":"branch","line":249,"loc":{"start":{"line":249,"column":11},"end":{"line":254,"column":7}},"locations":[{"start":{"line":249,"column":11},"end":{"line":254,"column":7}}]},"40":{"type":"branch","line":251,"loc":{"start":{"line":251,"column":37},"end":{"line":251,"column":46}},"locations":[{"start":{"line":251,"column":37},"end":{"line":251,"column":46}}]},"41":{"type":"branch","line":251,"loc":{"start":{"line":251,"column":48},"end":{"line":253,"column":9}},"locations":[{"start":{"line":251,"column":48},"end":{"line":253,"column":9}}]},"42":{"type":"branch","line":252,"loc":{"start":{"line":252,"column":65},"end":{"line":252,"column":74}},"locations":[{"start":{"line":252,"column":65},"end":{"line":252,"column":74}}]},"43":{"type":"branch","line":252,"loc":{"start":{"line":252,"column":43},"end":{"line":252,"column":64}},"locations":[{"start":{"line":252,"column":43},"end":{"line":252,"column":64}}]},"44":{"type":"branch","line":261,"loc":{"start":{"line":261,"column":42},"end":{"line":263,"column":3}},"locations":[{"start":{"line":261,"column":42},"end":{"line":263,"column":3}}]},"45":{"type":"branch","line":265,"loc":{"start":{"line":265,"column":42},"end":{"line":270,"column":3}},"locations":[{"start":{"line":265,"column":42},"end":{"line":270,"column":3}}]},"46":{"type":"branch","line":266,"loc":{"start":{"line":266,"column":25},"end":{"line":266,"column":59}},"locations":[{"start":{"line":266,"column":25},"end":{"line":266,"column":59}}]},"47":{"type":"branch","line":266,"loc":{"start":{"line":266,"column":61},"end":{"line":268,"column":5}},"locations":[{"start":{"line":266,"column":61},"end":{"line":268,"column":5}}]},"48":{"type":"branch","line":269,"loc":{"start":{"line":269,"column":-1},"end":{"line":270,"column":3}},"locations":[{"start":{"line":269,"column":-1},"end":{"line":270,"column":3}}]},"49":{"type":"branch","line":304,"loc":{"start":{"line":304,"column":0},"end":{"line":311,"column":1}},"locations":[{"start":{"line":304,"column":0},"end":{"line":311,"column":1}}]},"50":{"type":"branch","line":308,"loc":{"start":{"line":308,"column":12},"end":{"line":308,"column":44}},"locations":[{"start":{"line":308,"column":12},"end":{"line":308,"column":44}}]},"51":{"type":"branch","line":309,"loc":{"start":{"line":309,"column":9},"end":{"line":309,"column":56}},"locations":[{"start":{"line":309,"column":9},"end":{"line":309,"column":56}}]},"52":{"type":"branch","line":310,"loc":{"start":{"line":310,"column":12},"end":{"line":310,"column":63}},"locations":[{"start":{"line":310,"column":12},"end":{"line":310,"column":63}}]},"53":{"type":"branch","line":313,"loc":{"start":{"line":313,"column":7},"end":{"line":322,"column":1}},"locations":[{"start":{"line":313,"column":7},"end":{"line":322,"column":1}}]},"54":{"type":"branch","line":321,"loc":{"start":{"line":321,"column":-1},"end":{"line":322,"column":1}},"locations":[{"start":{"line":321,"column":-1},"end":{"line":322,"column":1}}]},"55":{"type":"branch","line":324,"loc":{"start":{"line":324,"column":0},"end":{"line":331,"column":1}},"locations":[{"start":{"line":324,"column":0},"end":{"line":331,"column":1}}]},"56":{"type":"branch","line":325,"loc":{"start":{"line":325,"column":43},"end":{"line":329,"column":3}},"locations":[{"start":{"line":325,"column":43},"end":{"line":329,"column":3}}]},"57":{"type":"branch","line":326,"loc":{"start":{"line":326,"column":64},"end":{"line":328,"column":5}},"locations":[{"start":{"line":326,"column":64},"end":{"line":328,"column":5}}]},"58":{"type":"branch","line":330,"loc":{"start":{"line":330,"column":-1},"end":{"line":331,"column":1}},"locations":[{"start":{"line":330,"column":-1},"end":{"line":331,"column":1}}]},"59":{"type":"branch","line":333,"loc":{"start":{"line":333,"column":7},"end":{"line":388,"column":1}},"locations":[{"start":{"line":333,"column":7},"end":{"line":388,"column":1}}]},"60":{"type":"branch","line":335,"loc":{"start":{"line":335,"column":47},"end":{"line":370,"column":3}},"locations":[{"start":{"line":335,"column":47},"end":{"line":370,"column":3}}]},"61":{"type":"branch","line":365,"loc":{"start":{"line":365,"column":-1},"end":{"line":365,"column":13}},"locations":[{"start":{"line":365,"column":-1},"end":{"line":365,"column":13}}]},"62":{"type":"branch","line":365,"loc":{"start":{"line":365,"column":6},"end":{"line":368,"column":5}},"locations":[{"start":{"line":365,"column":6},"end":{"line":368,"column":5}}]},"63":{"type":"branch","line":369,"loc":{"start":{"line":369,"column":-1},"end":{"line":370,"column":3}},"locations":[{"start":{"line":369,"column":-1},"end":{"line":370,"column":3}}]},"64":{"type":"branch","line":371,"loc":{"start":{"line":371,"column":-1},"end":{"line":387,"column":3}},"locations":[{"start":{"line":371,"column":-1},"end":{"line":387,"column":3}}]},"65":{"type":"branch","line":383,"loc":{"start":{"line":383,"column":6},"end":{"line":385,"column":5}},"locations":[{"start":{"line":383,"column":6},"end":{"line":385,"column":5}}]},"66":{"type":"branch","line":342,"loc":{"start":{"line":342,"column":52},"end":{"line":342,"column":84}},"locations":[{"start":{"line":342,"column":52},"end":{"line":342,"column":84}}]},"67":{"type":"branch","line":343,"loc":{"start":{"line":343,"column":38},"end":{"line":343,"column":61}},"locations":[{"start":{"line":343,"column":38},"end":{"line":343,"column":61}}]},"68":{"type":"branch","line":343,"loc":{"start":{"line":343,"column":67},"end":{"line":343,"column":80}},"locations":[{"start":{"line":343,"column":67},"end":{"line":343,"column":80}}]},"69":{"type":"branch","line":344,"loc":{"start":{"line":344,"column":40},"end":{"line":344,"column":90}},"locations":[{"start":{"line":344,"column":40},"end":{"line":344,"column":90}}]},"70":{"type":"branch","line":344,"loc":{"start":{"line":344,"column":64},"end":{"line":344,"column":90}},"locations":[{"start":{"line":344,"column":64},"end":{"line":344,"column":90}}]},"71":{"type":"branch","line":371,"loc":{"start":{"line":371,"column":48},"end":{"line":371,"column":71}},"locations":[{"start":{"line":371,"column":48},"end":{"line":371,"column":71}}]},"72":{"type":"branch","line":390,"loc":{"start":{"line":390,"column":7},"end":{"line":408,"column":1}},"locations":[{"start":{"line":390,"column":7},"end":{"line":408,"column":1}}]},"73":{"type":"branch","line":403,"loc":{"start":{"line":403,"column":4},"end":{"line":406,"column":3}},"locations":[{"start":{"line":403,"column":4},"end":{"line":406,"column":3}}]},"74":{"type":"branch","line":391,"loc":{"start":{"line":391,"column":30},"end":{"line":394,"column":4}},"locations":[{"start":{"line":391,"column":30},"end":{"line":394,"column":4}}]},"75":{"type":"branch","line":393,"loc":{"start":{"line":393,"column":55},"end":{"line":393,"column":66}},"locations":[{"start":{"line":393,"column":55},"end":{"line":393,"column":66}}]},"76":{"type":"branch","line":396,"loc":{"start":{"line":396,"column":47},"end":{"line":396,"column":84}},"locations":[{"start":{"line":396,"column":47},"end":{"line":396,"column":84}}]},"77":{"type":"branch","line":410,"loc":{"start":{"line":410,"column":0},"end":{"line":424,"column":1}},"locations":[{"start":{"line":410,"column":0},"end":{"line":424,"column":1}}]},"78":{"type":"branch","line":414,"loc":{"start":{"line":414,"column":48},"end":{"line":415,"column":47}},"locations":[{"start":{"line":414,"column":48},"end":{"line":415,"column":47}}]},"79":{"type":"branch","line":415,"loc":{"start":{"line":415,"column":47},"end":{"line":416,"column":49}},"locations":[{"start":{"line":415,"column":47},"end":{"line":416,"column":49}}]},"80":{"type":"branch","line":416,"loc":{"start":{"line":416,"column":49},"end":{"line":417,"column":40}},"locations":[{"start":{"line":416,"column":49},"end":{"line":417,"column":40}}]},"81":{"type":"branch","line":417,"loc":{"start":{"line":417,"column":40},"end":{"line":418,"column":39}},"locations":[{"start":{"line":417,"column":40},"end":{"line":418,"column":39}}]},"82":{"type":"branch","line":418,"loc":{"start":{"line":418,"column":39},"end":{"line":419,"column":46}},"locations":[{"start":{"line":418,"column":39},"end":{"line":419,"column":46}}]},"83":{"type":"branch","line":419,"loc":{"start":{"line":419,"column":46},"end":{"line":420,"column":45}},"locations":[{"start":{"line":419,"column":46},"end":{"line":420,"column":45}}]},"84":{"type":"branch","line":420,"loc":{"start":{"line":420,"column":45},"end":{"line":421,"column":52}},"locations":[{"start":{"line":420,"column":45},"end":{"line":421,"column":52}}]},"85":{"type":"branch","line":421,"loc":{"start":{"line":421,"column":52},"end":{"line":422,"column":51}},"locations":[{"start":{"line":421,"column":52},"end":{"line":422,"column":51}}]}},"b":{"0":[24],"1":[0],"2":[22],"3":[9],"4":[0],"5":[9],"6":[18],"7":[37],"8":[197],"9":[196],"10":[9],"11":[188],"12":[187],"13":[1],"14":[187],"15":[0],"16":[196],"17":[36],"18":[162],"19":[28],"20":[28],"21":[0],"22":[0],"23":[25],"24":[24],"25":[22],"26":[2],"27":[22],"28":[4],"29":[22],"30":[0],"31":[22],"32":[0],"33":[0],"34":[22],"35":[0],"36":[24],"37":[24],"38":[163],"39":[161],"40":[80],"41":[79],"42":[4],"43":[113],"44":[22],"45":[22],"46":[2],"47":[2],"48":[20],"49":[22],"50":[22],"51":[1],"52":[1],"53":[24],"54":[22],"55":[39],"56":[77],"57":[2],"58":[37],"59":[24],"60":[37],"61":[36],"62":[0],"63":[36],"64":[22],"65":[0],"66":[196],"67":[196],"68":[9],"69":[196],"70":[28],"71":[35],"72":[2],"73":[0],"74":[2],"75":[0],"76":[2],"77":[2],"78":[0],"79":[0],"80":[0],"81":[0],"82":[0],"83":[0],"84":[0],"85":[0]},"fnMap":{"0":{"name":"generateJsonInterfaces","decl":{"start":{"line":110,"column":7},"end":{"line":138,"column":1}},"loc":{"start":{"line":110,"column":7},"end":{"line":138,"column":1}},"line":110},"1":{"name":"generateEnums","decl":{"start":{"line":140,"column":7},"end":{"line":163,"column":1}},"loc":{"start":{"line":140,"column":7},"end":{"line":163,"column":1}},"line":140},"2":{"name":"processFields","decl":{"start":{"line":165,"column":0},"end":{"line":227,"column":1}},"loc":{"start":{"line":165,"column":0},"end":{"line":227,"column":1}},"line":165},"3":{"name":"codegen","decl":{"start":{"line":230,"column":7},"end":{"line":302,"column":1}},"loc":{"start":{"line":230,"column":7},"end":{"line":302,"column":1}},"line":230},"4":{"name":"getChaintypes","decl":{"start":{"line":304,"column":0},"end":{"line":311,"column":1}},"loc":{"start":{"line":304,"column":0},"end":{"line":311,"column":1}},"line":304},"5":{"name":"generateSchemaModels","decl":{"start":{"line":313,"column":7},"end":{"line":322,"column":1}},"loc":{"start":{"line":313,"column":7},"end":{"line":322,"column":1}},"line":313},"6":{"name":"validateEntityName","decl":{"start":{"line":324,"column":0},"end":{"line":331,"column":1}},"loc":{"start":{"line":324,"column":0},"end":{"line":331,"column":1}},"line":324},"7":{"name":"generateModels","decl":{"start":{"line":333,"column":7},"end":{"line":388,"column":1}},"loc":{"start":{"line":333,"column":7},"end":{"line":388,"column":1}},"line":333},"8":{"name":"generateDatasourceTemplates","decl":{"start":{"line":390,"column":7},"end":{"line":408,"column":1}},"loc":{"start":{"line":390,"column":7},"end":{"line":408,"column":1}},"line":390},"9":{"name":"hasParameters","decl":{"start":{"line":410,"column":0},"end":{"line":424,"column":1}},"loc":{"start":{"line":410,"column":0},"end":{"line":424,"column":1}},"line":410}},"f":{"0":24,"1":22,"2":37,"3":25,"4":22,"5":24,"6":39,"7":24,"8":2,"9":2}},"/Users/scotttwiname/Projects/subql-main/packages/cli/src/controller/deploy-controller.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/cli/src/controller/deploy-controller.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":34}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":60}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":35}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":26}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":90}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":8}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":21}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":18}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":20}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":26}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":20}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":19}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":29}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":35}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":27}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":25}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":18}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":54}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":0}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":67}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":45}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":0}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":18}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":50}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":3}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":0}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":23}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":17}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":12}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":5}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":1}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":0}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":39}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":14}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":22}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":20}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":18}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":28}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":15}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":27}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":36}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":13}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":32}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":7}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":60}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":71}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":7}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":21}},"51":{"start":{"line":52,"column":0},"end":{"line":52,"column":19}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":45}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":39}},"54":{"start":{"line":55,"column":0},"end":{"line":55,"column":15}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":28}},"56":{"start":{"line":57,"column":0},"end":{"line":57,"column":6}},"57":{"start":{"line":58,"column":0},"end":{"line":58,"column":31}},"58":{"start":{"line":59,"column":0},"end":{"line":59,"column":15}},"59":{"start":{"line":60,"column":0},"end":{"line":60,"column":57}},"60":{"start":{"line":61,"column":0},"end":{"line":61,"column":3}},"61":{"start":{"line":62,"column":0},"end":{"line":62,"column":1}},"62":{"start":{"line":63,"column":0},"end":{"line":63,"column":0}},"63":{"start":{"line":64,"column":0},"end":{"line":64,"column":40}},"64":{"start":{"line":65,"column":0},"end":{"line":65,"column":14}},"65":{"start":{"line":66,"column":0},"end":{"line":66,"column":22}},"66":{"start":{"line":67,"column":0},"end":{"line":67,"column":20}},"67":{"start":{"line":68,"column":0},"end":{"line":68,"column":23}},"68":{"start":{"line":69,"column":0},"end":{"line":69,"column":13}},"69":{"start":{"line":70,"column":0},"end":{"line":70,"column":20}},"70":{"start":{"line":71,"column":0},"end":{"line":71,"column":7}},"71":{"start":{"line":72,"column":0},"end":{"line":72,"column":48}},"72":{"start":{"line":73,"column":0},"end":{"line":73,"column":91}},"73":{"start":{"line":74,"column":0},"end":{"line":74,"column":6}},"74":{"start":{"line":75,"column":0},"end":{"line":75,"column":29}},"75":{"start":{"line":76,"column":0},"end":{"line":76,"column":15}},"76":{"start":{"line":77,"column":0},"end":{"line":77,"column":49}},"77":{"start":{"line":78,"column":0},"end":{"line":78,"column":3}},"78":{"start":{"line":79,"column":0},"end":{"line":79,"column":1}},"79":{"start":{"line":80,"column":0},"end":{"line":80,"column":0}},"80":{"start":{"line":81,"column":0},"end":{"line":81,"column":39}},"81":{"start":{"line":82,"column":0},"end":{"line":82,"column":14}},"82":{"start":{"line":83,"column":0},"end":{"line":83,"column":22}},"83":{"start":{"line":84,"column":0},"end":{"line":84,"column":20}},"84":{"start":{"line":85,"column":0},"end":{"line":85,"column":23}},"85":{"start":{"line":86,"column":0},"end":{"line":86,"column":13}},"86":{"start":{"line":87,"column":0},"end":{"line":87,"column":20}},"87":{"start":{"line":88,"column":0},"end":{"line":88,"column":7}},"88":{"start":{"line":89,"column":0},"end":{"line":89,"column":50}},"89":{"start":{"line":90,"column":0},"end":{"line":90,"column":83}},"90":{"start":{"line":91,"column":0},"end":{"line":91,"column":6}},"91":{"start":{"line":92,"column":0},"end":{"line":92,"column":29}},"92":{"start":{"line":93,"column":0},"end":{"line":93,"column":15}},"93":{"start":{"line":94,"column":0},"end":{"line":94,"column":51}},"94":{"start":{"line":95,"column":0},"end":{"line":95,"column":3}},"95":{"start":{"line":96,"column":0},"end":{"line":96,"column":1}},"96":{"start":{"line":97,"column":0},"end":{"line":97,"column":0}},"97":{"start":{"line":98,"column":0},"end":{"line":98,"column":39}},"98":{"start":{"line":99,"column":0},"end":{"line":99,"column":14}},"99":{"start":{"line":100,"column":0},"end":{"line":100,"column":22}},"100":{"start":{"line":101,"column":0},"end":{"line":101,"column":20}},"101":{"start":{"line":102,"column":0},"end":{"line":102,"column":19}},"102":{"start":{"line":103,"column":0},"end":{"line":103,"column":13}},"103":{"start":{"line":104,"column":0},"end":{"line":104,"column":20}},"104":{"start":{"line":105,"column":0},"end":{"line":105,"column":7}},"105":{"start":{"line":106,"column":0},"end":{"line":106,"column":79}},"106":{"start":{"line":107,"column":0},"end":{"line":107,"column":86}},"107":{"start":{"line":108,"column":0},"end":{"line":108,"column":6}},"108":{"start":{"line":109,"column":0},"end":{"line":109,"column":32}},"109":{"start":{"line":110,"column":0},"end":{"line":110,"column":15}},"110":{"start":{"line":111,"column":0},"end":{"line":111,"column":55}},"111":{"start":{"line":112,"column":0},"end":{"line":112,"column":3}},"112":{"start":{"line":113,"column":0},"end":{"line":113,"column":1}},"113":{"start":{"line":114,"column":0},"end":{"line":114,"column":0}},"114":{"start":{"line":115,"column":0},"end":{"line":115,"column":35}},"115":{"start":{"line":116,"column":0},"end":{"line":116,"column":20}},"116":{"start":{"line":117,"column":0},"end":{"line":117,"column":14}},"117":{"start":{"line":118,"column":0},"end":{"line":118,"column":22}},"118":{"start":{"line":119,"column":0},"end":{"line":119,"column":14}},"119":{"start":{"line":120,"column":0},"end":{"line":120,"column":14}},"120":{"start":{"line":121,"column":0},"end":{"line":121,"column":29}},"121":{"start":{"line":122,"column":0},"end":{"line":122,"column":38}},"122":{"start":{"line":123,"column":0},"end":{"line":123,"column":7}},"123":{"start":{"line":124,"column":0},"end":{"line":124,"column":78}},"124":{"start":{"line":125,"column":0},"end":{"line":125,"column":67}},"125":{"start":{"line":126,"column":0},"end":{"line":126,"column":6}},"126":{"start":{"line":127,"column":0},"end":{"line":127,"column":96}},"127":{"start":{"line":128,"column":0},"end":{"line":128,"column":15}},"128":{"start":{"line":129,"column":0},"end":{"line":129,"column":46}},"129":{"start":{"line":130,"column":0},"end":{"line":130,"column":3}},"130":{"start":{"line":131,"column":0},"end":{"line":131,"column":1}},"131":{"start":{"line":132,"column":0},"end":{"line":132,"column":0}},"132":{"start":{"line":133,"column":0},"end":{"line":133,"column":39}},"133":{"start":{"line":134,"column":0},"end":{"line":134,"column":14}},"134":{"start":{"line":135,"column":0},"end":{"line":135,"column":22}},"135":{"start":{"line":136,"column":0},"end":{"line":136,"column":19}},"136":{"start":{"line":137,"column":0},"end":{"line":137,"column":20}},"137":{"start":{"line":138,"column":0},"end":{"line":138,"column":18}},"138":{"start":{"line":139,"column":0},"end":{"line":139,"column":23}},"139":{"start":{"line":140,"column":0},"end":{"line":140,"column":27}},"140":{"start":{"line":141,"column":0},"end":{"line":141,"column":36}},"141":{"start":{"line":142,"column":0},"end":{"line":142,"column":13}},"142":{"start":{"line":143,"column":0},"end":{"line":143,"column":18}},"143":{"start":{"line":144,"column":0},"end":{"line":144,"column":7}},"144":{"start":{"line":145,"column":0},"end":{"line":145,"column":47}},"145":{"start":{"line":146,"column":0},"end":{"line":146,"column":83}},"146":{"start":{"line":147,"column":0},"end":{"line":147,"column":7}},"147":{"start":{"line":148,"column":0},"end":{"line":148,"column":21}},"148":{"start":{"line":149,"column":0},"end":{"line":149,"column":40}},"149":{"start":{"line":150,"column":0},"end":{"line":150,"column":39}},"150":{"start":{"line":151,"column":0},"end":{"line":151,"column":15}},"151":{"start":{"line":152,"column":0},"end":{"line":152,"column":28}},"152":{"start":{"line":153,"column":0},"end":{"line":153,"column":6}},"153":{"start":{"line":154,"column":0},"end":{"line":154,"column":15}},"154":{"start":{"line":155,"column":0},"end":{"line":155,"column":63}},"155":{"start":{"line":156,"column":0},"end":{"line":156,"column":3}},"156":{"start":{"line":157,"column":0},"end":{"line":157,"column":1}},"157":{"start":{"line":158,"column":0},"end":{"line":158,"column":0}},"158":{"start":{"line":159,"column":0},"end":{"line":159,"column":112}},"159":{"start":{"line":160,"column":0},"end":{"line":160,"column":7}},"160":{"start":{"line":161,"column":0},"end":{"line":161,"column":116}},"161":{"start":{"line":162,"column":0},"end":{"line":162,"column":0}},"162":{"start":{"line":163,"column":0},"end":{"line":163,"column":29}},"163":{"start":{"line":164,"column":0},"end":{"line":164,"column":76}},"164":{"start":{"line":165,"column":0},"end":{"line":165,"column":5}},"165":{"start":{"line":166,"column":0},"end":{"line":166,"column":0}},"166":{"start":{"line":167,"column":0},"end":{"line":167,"column":20}},"167":{"start":{"line":168,"column":0},"end":{"line":168,"column":15}},"168":{"start":{"line":169,"column":0},"end":{"line":169,"column":51}},"169":{"start":{"line":170,"column":0},"end":{"line":170,"column":3}},"170":{"start":{"line":171,"column":0},"end":{"line":171,"column":1}},"171":{"start":{"line":172,"column":0},"end":{"line":172,"column":0}},"172":{"start":{"line":173,"column":0},"end":{"line":173,"column":81}},"173":{"start":{"line":174,"column":0},"end":{"line":174,"column":7}},"174":{"start":{"line":175,"column":0},"end":{"line":175,"column":91}},"175":{"start":{"line":176,"column":0},"end":{"line":176,"column":0}},"176":{"start":{"line":177,"column":0},"end":{"line":177,"column":20}},"177":{"start":{"line":178,"column":0},"end":{"line":178,"column":15}},"178":{"start":{"line":179,"column":0},"end":{"line":179,"column":57}},"179":{"start":{"line":180,"column":0},"end":{"line":180,"column":3}},"180":{"start":{"line":181,"column":0},"end":{"line":181,"column":1}},"181":{"start":{"line":182,"column":0},"end":{"line":182,"column":0}},"182":{"start":{"line":183,"column":0},"end":{"line":183,"column":98}},"183":{"start":{"line":184,"column":0},"end":{"line":184,"column":92}},"184":{"start":{"line":185,"column":0},"end":{"line":185,"column":1}},"185":{"start":{"line":186,"column":0},"end":{"line":186,"column":0}},"186":{"start":{"line":187,"column":0},"end":{"line":187,"column":119}},"187":{"start":{"line":188,"column":0},"end":{"line":188,"column":7}},"188":{"start":{"line":189,"column":0},"end":{"line":189,"column":69}},"189":{"start":{"line":190,"column":0},"end":{"line":190,"column":86}},"190":{"start":{"line":191,"column":0},"end":{"line":191,"column":6}},"191":{"start":{"line":192,"column":0},"end":{"line":192,"column":20}},"192":{"start":{"line":193,"column":0},"end":{"line":193,"column":15}},"193":{"start":{"line":194,"column":0},"end":{"line":194,"column":43}},"194":{"start":{"line":195,"column":0},"end":{"line":195,"column":3}},"195":{"start":{"line":196,"column":0},"end":{"line":196,"column":1}},"196":{"start":{"line":197,"column":0},"end":{"line":197,"column":0}},"197":{"start":{"line":198,"column":0},"end":{"line":198,"column":63}},"198":{"start":{"line":199,"column":0},"end":{"line":199,"column":53}},"199":{"start":{"line":200,"column":0},"end":{"line":200,"column":1}},"200":{"start":{"line":201,"column":0},"end":{"line":201,"column":0}},"201":{"start":{"line":202,"column":0},"end":{"line":202,"column":31}},"202":{"start":{"line":203,"column":0},"end":{"line":203,"column":18}},"203":{"start":{"line":204,"column":0},"end":{"line":204,"column":19}},"204":{"start":{"line":205,"column":0},"end":{"line":205,"column":18}},"205":{"start":{"line":206,"column":0},"end":{"line":206,"column":1}},"206":{"start":{"line":207,"column":0},"end":{"line":207,"column":0}},"207":{"start":{"line":208,"column":0},"end":{"line":208,"column":86}},"208":{"start":{"line":209,"column":0},"end":{"line":209,"column":45}},"209":{"start":{"line":210,"column":0},"end":{"line":210,"column":0}},"210":{"start":{"line":211,"column":0},"end":{"line":211,"column":59}},"211":{"start":{"line":212,"column":0},"end":{"line":212,"column":65}},"212":{"start":{"line":213,"column":0},"end":{"line":213,"column":23}},"213":{"start":{"line":214,"column":0},"end":{"line":214,"column":49}},"214":{"start":{"line":215,"column":0},"end":{"line":215,"column":120}},"215":{"start":{"line":216,"column":0},"end":{"line":216,"column":50}},"216":{"start":{"line":217,"column":0},"end":{"line":217,"column":7}},"217":{"start":{"line":218,"column":0},"end":{"line":218,"column":5}},"218":{"start":{"line":219,"column":0},"end":{"line":219,"column":5}},"219":{"start":{"line":220,"column":0},"end":{"line":220,"column":0}},"220":{"start":{"line":221,"column":0},"end":{"line":221,"column":16}},"221":{"start":{"line":222,"column":0},"end":{"line":222,"column":1}},"222":{"start":{"line":223,"column":0},"end":{"line":223,"column":0}},"223":{"start":{"line":224,"column":0},"end":{"line":224,"column":70}},"224":{"start":{"line":225,"column":0},"end":{"line":225,"column":3}},"225":{"start":{"line":226,"column":0},"end":{"line":226,"column":64}},"226":{"start":{"line":227,"column":0},"end":{"line":227,"column":67}},"227":{"start":{"line":228,"column":0},"end":{"line":228,"column":62}},"228":{"start":{"line":229,"column":0},"end":{"line":229,"column":0}},"229":{"start":{"line":230,"column":0},"end":{"line":230,"column":107}},"230":{"start":{"line":231,"column":0},"end":{"line":231,"column":90}},"231":{"start":{"line":232,"column":0},"end":{"line":232,"column":86}},"232":{"start":{"line":233,"column":0},"end":{"line":233,"column":75}},"233":{"start":{"line":234,"column":0},"end":{"line":234,"column":77}},"234":{"start":{"line":235,"column":0},"end":{"line":235,"column":26}},"235":{"start":{"line":236,"column":0},"end":{"line":236,"column":90}},"236":{"start":{"line":237,"column":0},"end":{"line":237,"column":100}},"237":{"start":{"line":238,"column":0},"end":{"line":238,"column":102}},"238":{"start":{"line":239,"column":0},"end":{"line":239,"column":96}},"239":{"start":{"line":240,"column":0},"end":{"line":240,"column":39}},"240":{"start":{"line":241,"column":0},"end":{"line":241,"column":82}},"241":{"start":{"line":242,"column":0},"end":{"line":242,"column":22}},"242":{"start":{"line":243,"column":0},"end":{"line":243,"column":7}},"243":{"start":{"line":244,"column":0},"end":{"line":244,"column":47}},"244":{"start":{"line":245,"column":0},"end":{"line":245,"column":75}},"245":{"start":{"line":246,"column":0},"end":{"line":246,"column":22}},"246":{"start":{"line":247,"column":0},"end":{"line":247,"column":7}},"247":{"start":{"line":248,"column":0},"end":{"line":248,"column":50}},"248":{"start":{"line":249,"column":0},"end":{"line":249,"column":106}},"249":{"start":{"line":250,"column":0},"end":{"line":250,"column":22}},"250":{"start":{"line":251,"column":0},"end":{"line":251,"column":7}},"251":{"start":{"line":252,"column":0},"end":{"line":252,"column":110}},"252":{"start":{"line":253,"column":0},"end":{"line":253,"column":0}},"253":{"start":{"line":254,"column":0},"end":{"line":254,"column":17}},"254":{"start":{"line":255,"column":0},"end":{"line":255,"column":88}},"255":{"start":{"line":256,"column":0},"end":{"line":256,"column":98}},"256":{"start":{"line":257,"column":0},"end":{"line":257,"column":104}},"257":{"start":{"line":258,"column":0},"end":{"line":258,"column":106}},"258":{"start":{"line":259,"column":0},"end":{"line":259,"column":86}},"259":{"start":{"line":260,"column":0},"end":{"line":260,"column":0}},"260":{"start":{"line":261,"column":0},"end":{"line":261,"column":32}},"261":{"start":{"line":262,"column":0},"end":{"line":262,"column":16}},"262":{"start":{"line":263,"column":0},"end":{"line":263,"column":95}},"263":{"start":{"line":264,"column":0},"end":{"line":264,"column":22}},"264":{"start":{"line":265,"column":0},"end":{"line":265,"column":6}},"265":{"start":{"line":266,"column":0},"end":{"line":266,"column":4}},"266":{"start":{"line":267,"column":0},"end":{"line":267,"column":0}},"267":{"start":{"line":268,"column":0},"end":{"line":268,"column":0}},"268":{"start":{"line":269,"column":0},"end":{"line":269,"column":80}},"269":{"start":{"line":270,"column":0},"end":{"line":270,"column":10}},"270":{"start":{"line":271,"column":0},"end":{"line":271,"column":17}},"271":{"start":{"line":272,"column":0},"end":{"line":272,"column":35}},"272":{"start":{"line":273,"column":0},"end":{"line":273,"column":27}},"273":{"start":{"line":274,"column":0},"end":{"line":274,"column":49}},"274":{"start":{"line":275,"column":0},"end":{"line":275,"column":30}},"275":{"start":{"line":276,"column":0},"end":{"line":276,"column":16}},"276":{"start":{"line":277,"column":0},"end":{"line":277,"column":40}},"277":{"start":{"line":278,"column":0},"end":{"line":278,"column":46}},"278":{"start":{"line":279,"column":0},"end":{"line":279,"column":52}},"279":{"start":{"line":280,"column":0},"end":{"line":280,"column":53}},"280":{"start":{"line":281,"column":0},"end":{"line":281,"column":56}},"281":{"start":{"line":282,"column":0},"end":{"line":282,"column":66}},"282":{"start":{"line":283,"column":0},"end":{"line":283,"column":72}},"283":{"start":{"line":284,"column":0},"end":{"line":284,"column":8}},"284":{"start":{"line":285,"column":0},"end":{"line":285,"column":6}},"285":{"start":{"line":286,"column":0},"end":{"line":286,"column":43}},"286":{"start":{"line":287,"column":0},"end":{"line":287,"column":7}},"287":{"start":{"line":288,"column":0},"end":{"line":288,"column":18}},"288":{"start":{"line":289,"column":0},"end":{"line":289,"column":40}},"289":{"start":{"line":290,"column":0},"end":{"line":290,"column":10}},"290":{"start":{"line":291,"column":0},"end":{"line":291,"column":9}},"291":{"start":{"line":292,"column":0},"end":{"line":292,"column":8}},"292":{"start":{"line":293,"column":0},"end":{"line":293,"column":4}},"293":{"start":{"line":294,"column":0},"end":{"line":294,"column":1}},"294":{"start":{"line":295,"column":0},"end":{"line":295,"column":0}},"295":{"start":{"line":296,"column":0},"end":{"line":296,"column":98}},"296":{"start":{"line":297,"column":0},"end":{"line":297,"column":10}},"297":{"start":{"line":298,"column":0},"end":{"line":298,"column":32}},"298":{"start":{"line":299,"column":0},"end":{"line":299,"column":44}},"299":{"start":{"line":300,"column":0},"end":{"line":300,"column":45}},"300":{"start":{"line":301,"column":0},"end":{"line":301,"column":113}},"301":{"start":{"line":302,"column":0},"end":{"line":302,"column":38}},"302":{"start":{"line":303,"column":0},"end":{"line":303,"column":3}},"303":{"start":{"line":304,"column":0},"end":{"line":304,"column":1}},"304":{"start":{"line":305,"column":0},"end":{"line":305,"column":0}},"305":{"start":{"line":306,"column":0},"end":{"line":306,"column":0}},"306":{"start":{"line":307,"column":0},"end":{"line":307,"column":118}},"307":{"start":{"line":308,"column":0},"end":{"line":308,"column":50}},"308":{"start":{"line":309,"column":0},"end":{"line":309,"column":0}},"309":{"start":{"line":310,"column":0},"end":{"line":310,"column":39}},"310":{"start":{"line":311,"column":0},"end":{"line":311,"column":27}},"311":{"start":{"line":312,"column":0},"end":{"line":312,"column":15}},"312":{"start":{"line":313,"column":0},"end":{"line":313,"column":23}},"313":{"start":{"line":314,"column":0},"end":{"line":314,"column":26}},"314":{"start":{"line":315,"column":0},"end":{"line":315,"column":21}},"315":{"start":{"line":316,"column":0},"end":{"line":316,"column":19}},"316":{"start":{"line":317,"column":0},"end":{"line":317,"column":24}},"317":{"start":{"line":318,"column":0},"end":{"line":318,"column":47}},"318":{"start":{"line":319,"column":0},"end":{"line":319,"column":18}},"319":{"start":{"line":320,"column":0},"end":{"line":320,"column":23}},"320":{"start":{"line":321,"column":0},"end":{"line":321,"column":6}},"321":{"start":{"line":322,"column":0},"end":{"line":322,"column":66}},"322":{"start":{"line":323,"column":0},"end":{"line":323,"column":10}},"323":{"start":{"line":324,"column":0},"end":{"line":324,"column":46}},"324":{"start":{"line":325,"column":0},"end":{"line":325,"column":15}},"325":{"start":{"line":326,"column":0},"end":{"line":326,"column":23}},"326":{"start":{"line":327,"column":0},"end":{"line":327,"column":21}},"327":{"start":{"line":328,"column":0},"end":{"line":328,"column":19}},"328":{"start":{"line":329,"column":0},"end":{"line":329,"column":24}},"329":{"start":{"line":330,"column":0},"end":{"line":330,"column":22}},"330":{"start":{"line":331,"column":0},"end":{"line":331,"column":47}},"331":{"start":{"line":332,"column":0},"end":{"line":332,"column":18}},"332":{"start":{"line":333,"column":0},"end":{"line":333,"column":23}},"333":{"start":{"line":334,"column":0},"end":{"line":334,"column":20}},"334":{"start":{"line":335,"column":0},"end":{"line":335,"column":13}},"335":{"start":{"line":336,"column":0},"end":{"line":336,"column":7}},"336":{"start":{"line":337,"column":0},"end":{"line":337,"column":0}},"337":{"start":{"line":338,"column":0},"end":{"line":338,"column":27}},"338":{"start":{"line":339,"column":0},"end":{"line":339,"column":55}},"339":{"start":{"line":340,"column":0},"end":{"line":340,"column":54}},"340":{"start":{"line":341,"column":0},"end":{"line":341,"column":44}},"341":{"start":{"line":342,"column":0},"end":{"line":342,"column":49}},"342":{"start":{"line":343,"column":0},"end":{"line":343,"column":57}},"343":{"start":{"line":344,"column":0},"end":{"line":344,"column":53}},"344":{"start":{"line":345,"column":0},"end":{"line":345,"column":46}},"345":{"start":{"line":346,"column":0},"end":{"line":346,"column":61}},"346":{"start":{"line":347,"column":0},"end":{"line":347,"column":47}},"347":{"start":{"line":348,"column":0},"end":{"line":348,"column":79}},"348":{"start":{"line":349,"column":0},"end":{"line":349,"column":99}},"349":{"start":{"line":350,"column":0},"end":{"line":350,"column":103}},"350":{"start":{"line":351,"column":0},"end":{"line":351,"column":9}},"351":{"start":{"line":352,"column":0},"end":{"line":352,"column":5}},"352":{"start":{"line":353,"column":0},"end":{"line":353,"column":3}},"353":{"start":{"line":354,"column":0},"end":{"line":354,"column":26}},"354":{"start":{"line":355,"column":0},"end":{"line":355,"column":1}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":5,"23":5,"24":5,"25":5,"26":0,"27":0,"28":5,"29":5,"30":5,"31":5,"32":5,"33":5,"34":1,"35":1,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"59":0,"60":0,"61":0,"62":1,"63":1,"64":0,"65":0,"66":0,"67":0,"68":0,"69":0,"70":0,"71":0,"72":0,"73":0,"74":0,"75":0,"76":0,"77":0,"78":0,"79":1,"80":1,"81":0,"82":0,"83":0,"84":0,"85":0,"86":0,"87":0,"88":0,"89":0,"90":0,"91":0,"92":0,"93":0,"94":0,"95":0,"96":1,"97":1,"98":0,"99":0,"100":0,"101":0,"102":0,"103":0,"104":0,"105":0,"106":0,"107":0,"108":0,"109":0,"110":0,"111":0,"112":0,"113":1,"114":1,"115":0,"116":0,"117":0,"118":0,"119":0,"120":0,"121":0,"122":0,"123":0,"124":0,"125":0,"126":0,"127":0,"128":0,"129":0,"130":0,"131":1,"132":1,"133":0,"134":0,"135":0,"136":0,"137":0,"138":0,"139":0,"140":0,"141":0,"142":0,"143":0,"144":0,"145":0,"146":0,"147":0,"148":0,"149":0,"150":0,"151":0,"152":0,"153":0,"154":0,"155":0,"156":0,"157":1,"158":1,"159":5,"160":5,"161":0,"162":0,"163":0,"164":0,"165":0,"166":0,"167":5,"168":5,"169":5,"170":5,"171":1,"172":1,"173":0,"174":0,"175":0,"176":0,"177":0,"178":0,"179":0,"180":0,"181":1,"182":0,"183":0,"184":0,"185":1,"186":1,"187":0,"188":0,"189":0,"190":0,"191":0,"192":0,"193":0,"194":0,"195":0,"196":1,"197":3,"198":3,"199":3,"200":1,"201":1,"202":1,"203":1,"204":1,"205":1,"206":1,"207":3,"208":3,"209":3,"210":3,"211":6,"212":6,"213":6,"214":6,"215":4,"216":4,"217":6,"218":3,"219":3,"220":3,"221":3,"222":1,"223":1,"224":1,"225":1,"226":1,"227":1,"228":1,"229":1,"230":1,"231":1,"232":1,"233":1,"234":1,"235":1,"236":1,"237":1,"238":1,"239":1,"240":1,"241":1,"242":1,"243":1,"244":1,"245":1,"246":1,"247":1,"248":1,"249":1,"250":1,"251":1,"252":1,"253":1,"254":1,"255":1,"256":1,"257":1,"258":1,"259":1,"260":1,"261":1,"262":1,"263":1,"264":1,"265":1,"266":1,"267":1,"268":0,"269":0,"270":0,"271":0,"272":0,"273":0,"274":0,"275":0,"276":0,"277":0,"278":0,"279":0,"280":0,"281":0,"282":0,"283":0,"284":0,"285":0,"286":0,"287":0,"288":0,"289":0,"290":0,"291":0,"292":0,"293":0,"294":1,"295":0,"296":0,"297":0,"298":0,"299":0,"300":0,"301":0,"302":0,"303":0,"304":1,"305":1,"306":1,"307":0,"308":0,"309":0,"310":0,"311":0,"312":0,"313":0,"314":0,"315":0,"316":0,"317":0,"318":0,"319":0,"320":0,"321":0,"322":0,"323":0,"324":0,"325":0,"326":0,"327":0,"328":0,"329":0,"330":0,"331":0,"332":0,"333":0,"334":0,"335":0,"336":0,"337":0,"338":0,"339":0,"340":0,"341":0,"342":0,"343":0,"344":0,"345":0,"346":0,"347":0,"348":0,"349":0,"350":0,"351":0,"352":0,"353":0,"354":0},"branchMap":{"0":{"type":"branch","line":23,"loc":{"start":{"line":23,"column":0},"end":{"line":34,"column":1}},"locations":[{"start":{"line":23,"column":0},"end":{"line":34,"column":1}}]},"1":{"type":"branch","line":26,"loc":{"start":{"line":26,"column":17},"end":{"line":28,"column":3}},"locations":[{"start":{"line":26,"column":17},"end":{"line":28,"column":3}}]},"2":{"type":"branch","line":159,"loc":{"start":{"line":159,"column":7},"end":{"line":171,"column":1}},"locations":[{"start":{"line":159,"column":7},"end":{"line":171,"column":1}}]},"3":{"type":"branch","line":162,"loc":{"start":{"line":162,"column":-1},"end":{"line":168,"column":11}},"locations":[{"start":{"line":162,"column":-1},"end":{"line":168,"column":11}}]},"4":{"type":"branch","line":198,"loc":{"start":{"line":198,"column":0},"end":{"line":200,"column":1}},"locations":[{"start":{"line":198,"column":0},"end":{"line":200,"column":1}}]},"5":{"type":"branch","line":199,"loc":{"start":{"line":199,"column":36},"end":{"line":199,"column":51}},"locations":[{"start":{"line":199,"column":36},"end":{"line":199,"column":51}}]},"6":{"type":"branch","line":208,"loc":{"start":{"line":208,"column":0},"end":{"line":222,"column":1}},"locations":[{"start":{"line":208,"column":0},"end":{"line":222,"column":1}}]},"7":{"type":"branch","line":211,"loc":{"start":{"line":211,"column":43},"end":{"line":219,"column":3}},"locations":[{"start":{"line":211,"column":43},"end":{"line":219,"column":3}}]},"8":{"type":"branch","line":215,"loc":{"start":{"line":215,"column":119},"end":{"line":217,"column":7}},"locations":[{"start":{"line":215,"column":119},"end":{"line":217,"column":7}}]}},"b":{"0":[5],"1":[0],"2":[5],"3":[0],"4":[3],"5":[6],"6":[3],"7":[6],"8":[4]},"fnMap":{"0":{"name":"getAxiosInstance","decl":{"start":{"line":23,"column":0},"end":{"line":34,"column":1}},"loc":{"start":{"line":23,"column":0},"end":{"line":34,"column":1}},"line":23},"1":{"name":"createDeployment","decl":{"start":{"line":36,"column":7},"end":{"line":62,"column":1}},"loc":{"start":{"line":36,"column":7},"end":{"line":62,"column":1}},"line":36},"2":{"name":"promoteDeployment","decl":{"start":{"line":64,"column":7},"end":{"line":79,"column":1}},"loc":{"start":{"line":64,"column":7},"end":{"line":79,"column":1}},"line":64},"3":{"name":"deleteDeployment","decl":{"start":{"line":81,"column":7},"end":{"line":96,"column":1}},"loc":{"start":{"line":81,"column":7},"end":{"line":96,"column":1}},"line":81},"4":{"name":"deploymentStatus","decl":{"start":{"line":98,"column":7},"end":{"line":113,"column":1}},"loc":{"start":{"line":98,"column":7},"end":{"line":113,"column":1}},"line":98},"5":{"name":"projectsInfo","decl":{"start":{"line":115,"column":7},"end":{"line":131,"column":1}},"loc":{"start":{"line":115,"column":7},"end":{"line":131,"column":1}},"line":115},"6":{"name":"updateDeployment","decl":{"start":{"line":133,"column":7},"end":{"line":157,"column":1}},"loc":{"start":{"line":133,"column":7},"end":{"line":157,"column":1}},"line":133},"7":{"name":"ipfsCID_validate","decl":{"start":{"line":159,"column":7},"end":{"line":171,"column":1}},"loc":{"start":{"line":159,"column":7},"end":{"line":171,"column":1}},"line":159},"8":{"name":"dictionaryEndpoints","decl":{"start":{"line":173,"column":7},"end":{"line":181,"column":1}},"loc":{"start":{"line":173,"column":7},"end":{"line":181,"column":1}},"line":173},"9":{"name":"processEndpoints","decl":{"start":{"line":183,"column":0},"end":{"line":185,"column":1}},"loc":{"start":{"line":183,"column":0},"end":{"line":185,"column":1}},"line":183},"10":{"name":"imageVersions","decl":{"start":{"line":187,"column":7},"end":{"line":196,"column":1}},"loc":{"start":{"line":187,"column":7},"end":{"line":196,"column":1}},"line":187},"11":{"name":"splitEndpoints","decl":{"start":{"line":198,"column":0},"end":{"line":200,"column":1}},"loc":{"start":{"line":198,"column":0},"end":{"line":200,"column":1}},"line":198},"12":{"name":"splitMultichainDataFields","decl":{"start":{"line":208,"column":0},"end":{"line":222,"column":1}},"loc":{"start":{"line":208,"column":0},"end":{"line":222,"column":1}},"line":208},"13":{"name":"generateDeploymentChain","decl":{"start":{"line":269,"column":0},"end":{"line":294,"column":1}},"loc":{"start":{"line":269,"column":0},"end":{"line":294,"column":1}},"line":269},"14":{"name":"generateAdvancedQueryOptions","decl":{"start":{"line":296,"column":0},"end":{"line":304,"column":1}},"loc":{"start":{"line":296,"column":0},"end":{"line":304,"column":1}},"line":296},"15":{"name":"executeProjectDeployment","decl":{"start":{"line":307,"column":7},"end":{"line":355,"column":1}},"loc":{"start":{"line":307,"column":7},"end":{"line":355,"column":1}},"line":307}},"f":{"0":5,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":5,"8":0,"9":0,"10":0,"11":3,"12":3,"13":0,"14":0,"15":0}},"/Users/scotttwiname/Projects/subql-main/packages/cli/src/controller/generate-controller.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/cli/src/controller/generate-controller.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":20}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":24}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":115}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":49}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":8}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":25}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":22}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":28}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":22}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":20}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":32}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":94}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":26}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":43}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":37}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":54}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":54}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":71}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":67}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":8}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":16}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":17}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":32}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":24}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":19}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":14}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":18}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":0}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":27}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":15}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":18}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":18}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":1}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":0}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":23}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":15}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":30}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":1}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":0}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":103}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":40}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":53}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":32}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":0}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":60}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":55}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":1}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":0}},"51":{"start":{"line":52,"column":0},"end":{"line":52,"column":93}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":58}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":0}},"54":{"start":{"line":55,"column":0},"end":{"line":55,"column":35}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":59}},"56":{"start":{"line":57,"column":0},"end":{"line":57,"column":3}},"57":{"start":{"line":58,"column":0},"end":{"line":58,"column":0}},"58":{"start":{"line":59,"column":0},"end":{"line":59,"column":54}},"59":{"start":{"line":60,"column":0},"end":{"line":60,"column":11}},"60":{"start":{"line":61,"column":0},"end":{"line":61,"column":3}},"61":{"start":{"line":62,"column":0},"end":{"line":62,"column":0}},"62":{"start":{"line":63,"column":0},"end":{"line":63,"column":39}},"63":{"start":{"line":64,"column":0},"end":{"line":64,"column":56}},"64":{"start":{"line":65,"column":0},"end":{"line":65,"column":0}},"65":{"start":{"line":66,"column":0},"end":{"line":66,"column":7}},"66":{"start":{"line":67,"column":0},"end":{"line":67,"column":78}},"67":{"start":{"line":68,"column":0},"end":{"line":68,"column":102}},"68":{"start":{"line":69,"column":0},"end":{"line":69,"column":20}},"69":{"start":{"line":70,"column":0},"end":{"line":70,"column":30}},"70":{"start":{"line":71,"column":0},"end":{"line":71,"column":59}},"71":{"start":{"line":72,"column":0},"end":{"line":72,"column":5}},"72":{"start":{"line":73,"column":0},"end":{"line":73,"column":3}},"73":{"start":{"line":74,"column":0},"end":{"line":74,"column":1}},"74":{"start":{"line":75,"column":0},"end":{"line":75,"column":0}},"75":{"start":{"line":76,"column":0},"end":{"line":76,"column":74}},"76":{"start":{"line":77,"column":0},"end":{"line":77,"column":36}},"77":{"start":{"line":78,"column":0},"end":{"line":78,"column":21}},"78":{"start":{"line":79,"column":0},"end":{"line":79,"column":50}},"79":{"start":{"line":80,"column":0},"end":{"line":80,"column":12}},"80":{"start":{"line":81,"column":0},"end":{"line":81,"column":36}},"81":{"start":{"line":82,"column":0},"end":{"line":82,"column":16}},"82":{"start":{"line":83,"column":0},"end":{"line":83,"column":6}},"83":{"start":{"line":84,"column":0},"end":{"line":84,"column":5}},"84":{"start":{"line":85,"column":0},"end":{"line":85,"column":1}},"85":{"start":{"line":86,"column":0},"end":{"line":86,"column":0}},"86":{"start":{"line":87,"column":0},"end":{"line":87,"column":82}},"87":{"start":{"line":88,"column":0},"end":{"line":88,"column":31}},"88":{"start":{"line":89,"column":0},"end":{"line":89,"column":37}},"89":{"start":{"line":90,"column":0},"end":{"line":90,"column":31}},"90":{"start":{"line":91,"column":0},"end":{"line":91,"column":48}},"91":{"start":{"line":92,"column":0},"end":{"line":92,"column":42}},"92":{"start":{"line":93,"column":0},"end":{"line":93,"column":17}},"93":{"start":{"line":94,"column":0},"end":{"line":94,"column":32}},"94":{"start":{"line":95,"column":0},"end":{"line":95,"column":21}},"95":{"start":{"line":96,"column":0},"end":{"line":96,"column":43}},"96":{"start":{"line":97,"column":0},"end":{"line":97,"column":5}},"97":{"start":{"line":98,"column":0},"end":{"line":98,"column":50}},"98":{"start":{"line":99,"column":0},"end":{"line":99,"column":42}},"99":{"start":{"line":100,"column":0},"end":{"line":100,"column":55}},"100":{"start":{"line":101,"column":0},"end":{"line":101,"column":5}},"101":{"start":{"line":102,"column":0},"end":{"line":102,"column":0}},"102":{"start":{"line":103,"column":0},"end":{"line":103,"column":25}},"103":{"start":{"line":104,"column":0},"end":{"line":104,"column":1}},"104":{"start":{"line":105,"column":0},"end":{"line":105,"column":0}},"105":{"start":{"line":106,"column":0},"end":{"line":106,"column":86}},"106":{"start":{"line":107,"column":0},"end":{"line":107,"column":94}},"107":{"start":{"line":108,"column":0},"end":{"line":108,"column":28}},"108":{"start":{"line":109,"column":0},"end":{"line":109,"column":19}},"109":{"start":{"line":110,"column":0},"end":{"line":110,"column":69}},"110":{"start":{"line":111,"column":0},"end":{"line":111,"column":5}},"111":{"start":{"line":112,"column":0},"end":{"line":112,"column":34}},"112":{"start":{"line":113,"column":0},"end":{"line":113,"column":10}},"113":{"start":{"line":114,"column":0},"end":{"line":114,"column":30}},"114":{"start":{"line":115,"column":0},"end":{"line":115,"column":3}},"115":{"start":{"line":116,"column":0},"end":{"line":116,"column":1}},"116":{"start":{"line":117,"column":0},"end":{"line":117,"column":0}},"117":{"start":{"line":118,"column":0},"end":{"line":118,"column":47}},"118":{"start":{"line":119,"column":0},"end":{"line":119,"column":39}},"119":{"start":{"line":120,"column":0},"end":{"line":120,"column":37}},"120":{"start":{"line":121,"column":0},"end":{"line":121,"column":58}},"121":{"start":{"line":122,"column":0},"end":{"line":122,"column":1}},"122":{"start":{"line":123,"column":0},"end":{"line":123,"column":0}},"123":{"start":{"line":124,"column":0},"end":{"line":124,"column":120}},"124":{"start":{"line":125,"column":0},"end":{"line":125,"column":10}},"125":{"start":{"line":126,"column":0},"end":{"line":126,"column":49}},"126":{"start":{"line":127,"column":0},"end":{"line":127,"column":51}},"127":{"start":{"line":128,"column":0},"end":{"line":128,"column":4}},"128":{"start":{"line":129,"column":0},"end":{"line":129,"column":1}},"129":{"start":{"line":130,"column":0},"end":{"line":130,"column":0}},"130":{"start":{"line":131,"column":0},"end":{"line":131,"column":96}},"131":{"start":{"line":132,"column":0},"end":{"line":132,"column":78}},"132":{"start":{"line":133,"column":0},"end":{"line":133,"column":1}},"133":{"start":{"line":134,"column":0},"end":{"line":134,"column":0}},"134":{"start":{"line":135,"column":0},"end":{"line":135,"column":35}},"135":{"start":{"line":136,"column":0},"end":{"line":136,"column":23}},"136":{"start":{"line":137,"column":0},"end":{"line":137,"column":18}},"137":{"start":{"line":138,"column":0},"end":{"line":138,"column":62}},"138":{"start":{"line":139,"column":0},"end":{"line":139,"column":26}},"139":{"start":{"line":140,"column":0},"end":{"line":140,"column":54}},"140":{"start":{"line":141,"column":0},"end":{"line":141,"column":0}},"141":{"start":{"line":142,"column":0},"end":{"line":142,"column":39}},"142":{"start":{"line":143,"column":0},"end":{"line":143,"column":42}},"143":{"start":{"line":144,"column":0},"end":{"line":144,"column":59}},"144":{"start":{"line":145,"column":0},"end":{"line":145,"column":74}},"145":{"start":{"line":146,"column":0},"end":{"line":146,"column":15}},"146":{"start":{"line":147,"column":0},"end":{"line":147,"column":28}},"147":{"start":{"line":148,"column":0},"end":{"line":148,"column":8}},"148":{"start":{"line":149,"column":0},"end":{"line":149,"column":6}},"149":{"start":{"line":150,"column":0},"end":{"line":150,"column":36}},"150":{"start":{"line":151,"column":0},"end":{"line":151,"column":5}},"151":{"start":{"line":152,"column":0},"end":{"line":152,"column":0}},"152":{"start":{"line":153,"column":0},"end":{"line":153,"column":39}},"153":{"start":{"line":154,"column":0},"end":{"line":154,"column":42}},"154":{"start":{"line":155,"column":0},"end":{"line":155,"column":63}},"155":{"start":{"line":156,"column":0},"end":{"line":156,"column":85}},"156":{"start":{"line":157,"column":0},"end":{"line":157,"column":15}},"157":{"start":{"line":158,"column":0},"end":{"line":158,"column":31}},"158":{"start":{"line":159,"column":0},"end":{"line":159,"column":8}},"159":{"start":{"line":160,"column":0},"end":{"line":160,"column":6}},"160":{"start":{"line":161,"column":0},"end":{"line":161,"column":36}},"161":{"start":{"line":162,"column":0},"end":{"line":162,"column":5}},"162":{"start":{"line":163,"column":0},"end":{"line":163,"column":0}},"163":{"start":{"line":164,"column":0},"end":{"line":164,"column":27}},"164":{"start":{"line":165,"column":0},"end":{"line":165,"column":1}},"165":{"start":{"line":166,"column":0},"end":{"line":166,"column":0}},"166":{"start":{"line":167,"column":0},"end":{"line":167,"column":70}},"167":{"start":{"line":168,"column":0},"end":{"line":168,"column":60}},"168":{"start":{"line":169,"column":0},"end":{"line":169,"column":90}},"169":{"start":{"line":170,"column":0},"end":{"line":170,"column":56}},"170":{"start":{"line":171,"column":0},"end":{"line":171,"column":0}},"171":{"start":{"line":172,"column":0},"end":{"line":172,"column":11}},"172":{"start":{"line":173,"column":0},"end":{"line":173,"column":41}},"173":{"start":{"line":174,"column":0},"end":{"line":174,"column":40}},"174":{"start":{"line":175,"column":0},"end":{"line":175,"column":14}},"175":{"start":{"line":176,"column":0},"end":{"line":176,"column":24}},"176":{"start":{"line":177,"column":0},"end":{"line":177,"column":64}},"177":{"start":{"line":178,"column":0},"end":{"line":178,"column":6}},"178":{"start":{"line":179,"column":0},"end":{"line":179,"column":70}},"179":{"start":{"line":180,"column":0},"end":{"line":180,"column":14}},"180":{"start":{"line":181,"column":0},"end":{"line":181,"column":44}},"181":{"start":{"line":182,"column":0},"end":{"line":182,"column":33}},"182":{"start":{"line":183,"column":0},"end":{"line":183,"column":5}},"183":{"start":{"line":184,"column":0},"end":{"line":184,"column":5}},"184":{"start":{"line":185,"column":0},"end":{"line":185,"column":1}},"185":{"start":{"line":186,"column":0},"end":{"line":186,"column":0}},"186":{"start":{"line":187,"column":0},"end":{"line":187,"column":76}},"187":{"start":{"line":188,"column":0},"end":{"line":188,"column":60}},"188":{"start":{"line":189,"column":0},"end":{"line":189,"column":85}},"189":{"start":{"line":190,"column":0},"end":{"line":190,"column":77}},"190":{"start":{"line":191,"column":0},"end":{"line":191,"column":37}},"191":{"start":{"line":192,"column":0},"end":{"line":192,"column":5}},"192":{"start":{"line":193,"column":0},"end":{"line":193,"column":65}},"193":{"start":{"line":194,"column":0},"end":{"line":194,"column":0}},"194":{"start":{"line":195,"column":0},"end":{"line":195,"column":10}},"195":{"start":{"line":196,"column":0},"end":{"line":196,"column":41}},"196":{"start":{"line":197,"column":0},"end":{"line":197,"column":37}},"197":{"start":{"line":198,"column":0},"end":{"line":198,"column":14}},"198":{"start":{"line":199,"column":0},"end":{"line":199,"column":19}},"199":{"start":{"line":200,"column":0},"end":{"line":200,"column":61}},"200":{"start":{"line":201,"column":0},"end":{"line":201,"column":6}},"201":{"start":{"line":202,"column":0},"end":{"line":202,"column":19}},"202":{"start":{"line":203,"column":0},"end":{"line":203,"column":14}},"203":{"start":{"line":204,"column":0},"end":{"line":204,"column":39}},"204":{"start":{"line":205,"column":0},"end":{"line":205,"column":34}},"205":{"start":{"line":206,"column":0},"end":{"line":206,"column":6}},"206":{"start":{"line":207,"column":0},"end":{"line":207,"column":4}},"207":{"start":{"line":208,"column":0},"end":{"line":208,"column":1}},"208":{"start":{"line":209,"column":0},"end":{"line":209,"column":0}},"209":{"start":{"line":210,"column":0},"end":{"line":210,"column":21}},"210":{"start":{"line":211,"column":0},"end":{"line":211,"column":86}},"211":{"start":{"line":212,"column":0},"end":{"line":212,"column":29}},"212":{"start":{"line":213,"column":0},"end":{"line":213,"column":31}},"213":{"start":{"line":214,"column":0},"end":{"line":214,"column":40}},"214":{"start":{"line":215,"column":0},"end":{"line":215,"column":17}},"215":{"start":{"line":216,"column":0},"end":{"line":216,"column":31}},"216":{"start":{"line":217,"column":0},"end":{"line":217,"column":18}},"217":{"start":{"line":218,"column":0},"end":{"line":218,"column":58}},"218":{"start":{"line":219,"column":0},"end":{"line":219,"column":3}},"219":{"start":{"line":220,"column":0},"end":{"line":220,"column":0}},"220":{"start":{"line":221,"column":0},"end":{"line":221,"column":25}},"221":{"start":{"line":222,"column":0},"end":{"line":222,"column":30}},"222":{"start":{"line":223,"column":0},"end":{"line":223,"column":3}},"223":{"start":{"line":224,"column":0},"end":{"line":224,"column":0}},"224":{"start":{"line":225,"column":0},"end":{"line":225,"column":50}},"225":{"start":{"line":226,"column":0},"end":{"line":226,"column":42}},"226":{"start":{"line":227,"column":0},"end":{"line":227,"column":50}},"227":{"start":{"line":228,"column":0},"end":{"line":228,"column":78}},"228":{"start":{"line":229,"column":0},"end":{"line":229,"column":33}},"229":{"start":{"line":230,"column":0},"end":{"line":230,"column":70}},"230":{"start":{"line":231,"column":0},"end":{"line":231,"column":57}},"231":{"start":{"line":232,"column":0},"end":{"line":232,"column":21}},"232":{"start":{"line":233,"column":0},"end":{"line":233,"column":7}},"233":{"start":{"line":234,"column":0},"end":{"line":234,"column":7}},"234":{"start":{"line":235,"column":0},"end":{"line":235,"column":0}},"235":{"start":{"line":236,"column":0},"end":{"line":236,"column":25}},"236":{"start":{"line":237,"column":0},"end":{"line":237,"column":84}},"237":{"start":{"line":238,"column":0},"end":{"line":238,"column":5}},"238":{"start":{"line":239,"column":0},"end":{"line":239,"column":5}},"239":{"start":{"line":240,"column":0},"end":{"line":240,"column":0}},"240":{"start":{"line":241,"column":0},"end":{"line":241,"column":27}},"241":{"start":{"line":242,"column":0},"end":{"line":242,"column":1}},"242":{"start":{"line":243,"column":0},"end":{"line":243,"column":75}},"243":{"start":{"line":244,"column":0},"end":{"line":244,"column":31}},"244":{"start":{"line":245,"column":0},"end":{"line":245,"column":27}},"245":{"start":{"line":246,"column":0},"end":{"line":246,"column":22}},"246":{"start":{"line":247,"column":0},"end":{"line":247,"column":47}},"247":{"start":{"line":248,"column":0},"end":{"line":248,"column":32}},"248":{"start":{"line":249,"column":0},"end":{"line":249,"column":93}},"249":{"start":{"line":250,"column":0},"end":{"line":250,"column":62}},"250":{"start":{"line":251,"column":0},"end":{"line":251,"column":28}},"251":{"start":{"line":252,"column":0},"end":{"line":252,"column":33}},"252":{"start":{"line":253,"column":0},"end":{"line":253,"column":33}},"253":{"start":{"line":254,"column":0},"end":{"line":254,"column":55}},"254":{"start":{"line":255,"column":0},"end":{"line":255,"column":9}},"255":{"start":{"line":256,"column":0},"end":{"line":256,"column":9}},"256":{"start":{"line":257,"column":0},"end":{"line":257,"column":5}},"257":{"start":{"line":258,"column":0},"end":{"line":258,"column":3}},"258":{"start":{"line":259,"column":0},"end":{"line":259,"column":0}},"259":{"start":{"line":260,"column":0},"end":{"line":260,"column":24}},"260":{"start":{"line":261,"column":0},"end":{"line":261,"column":1}},"261":{"start":{"line":262,"column":0},"end":{"line":262,"column":0}},"262":{"start":{"line":263,"column":0},"end":{"line":263,"column":36}},"263":{"start":{"line":264,"column":0},"end":{"line":264,"column":17}},"264":{"start":{"line":265,"column":0},"end":{"line":265,"column":39}},"265":{"start":{"line":266,"column":0},"end":{"line":266,"column":6}},"266":{"start":{"line":267,"column":0},"end":{"line":267,"column":27}},"267":{"start":{"line":268,"column":0},"end":{"line":268,"column":30}},"268":{"start":{"line":269,"column":0},"end":{"line":269,"column":2}},"269":{"start":{"line":270,"column":0},"end":{"line":270,"column":0}},"270":{"start":{"line":271,"column":0},"end":{"line":271,"column":41}},"271":{"start":{"line":272,"column":0},"end":{"line":272,"column":48}},"272":{"start":{"line":273,"column":0},"end":{"line":273,"column":54}},"273":{"start":{"line":274,"column":0},"end":{"line":274,"column":17}},"274":{"start":{"line":275,"column":0},"end":{"line":275,"column":30}},"275":{"start":{"line":276,"column":0},"end":{"line":276,"column":33}},"276":{"start":{"line":277,"column":0},"end":{"line":277,"column":70}},"277":{"start":{"line":278,"column":0},"end":{"line":278,"column":103}},"278":{"start":{"line":279,"column":0},"end":{"line":279,"column":0}},"279":{"start":{"line":280,"column":0},"end":{"line":280,"column":10}},"280":{"start":{"line":281,"column":0},"end":{"line":281,"column":75}},"281":{"start":{"line":282,"column":0},"end":{"line":282,"column":84}},"282":{"start":{"line":283,"column":0},"end":{"line":283,"column":4}},"283":{"start":{"line":284,"column":0},"end":{"line":284,"column":1}},"284":{"start":{"line":285,"column":0},"end":{"line":285,"column":0}},"285":{"start":{"line":286,"column":0},"end":{"line":286,"column":99}},"286":{"start":{"line":287,"column":0},"end":{"line":287,"column":38}},"287":{"start":{"line":288,"column":0},"end":{"line":288,"column":41}},"288":{"start":{"line":289,"column":0},"end":{"line":289,"column":0}},"289":{"start":{"line":290,"column":0},"end":{"line":290,"column":13}},"290":{"start":{"line":291,"column":0},"end":{"line":291,"column":32}},"291":{"start":{"line":292,"column":0},"end":{"line":292,"column":57}},"292":{"start":{"line":293,"column":0},"end":{"line":293,"column":78}},"293":{"start":{"line":294,"column":0},"end":{"line":294,"column":6}},"294":{"start":{"line":295,"column":0},"end":{"line":295,"column":34}},"295":{"start":{"line":296,"column":0},"end":{"line":296,"column":48}},"296":{"start":{"line":297,"column":0},"end":{"line":297,"column":41}},"297":{"start":{"line":298,"column":0},"end":{"line":298,"column":79}},"298":{"start":{"line":299,"column":0},"end":{"line":299,"column":9}},"299":{"start":{"line":300,"column":0},"end":{"line":300,"column":43}},"300":{"start":{"line":301,"column":0},"end":{"line":301,"column":89}},"301":{"start":{"line":302,"column":0},"end":{"line":302,"column":9}},"302":{"start":{"line":303,"column":0},"end":{"line":303,"column":9}},"303":{"start":{"line":304,"column":0},"end":{"line":304,"column":7}},"304":{"start":{"line":305,"column":0},"end":{"line":305,"column":0}},"305":{"start":{"line":306,"column":0},"end":{"line":306,"column":45}},"306":{"start":{"line":307,"column":0},"end":{"line":307,"column":2}},"307":{"start":{"line":308,"column":0},"end":{"line":308,"column":0}},"308":{"start":{"line":309,"column":0},"end":{"line":309,"column":91}},"309":{"start":{"line":310,"column":0},"end":{"line":310,"column":38}},"310":{"start":{"line":311,"column":0},"end":{"line":311,"column":41}},"311":{"start":{"line":312,"column":0},"end":{"line":312,"column":0}},"312":{"start":{"line":313,"column":0},"end":{"line":313,"column":31}},"313":{"start":{"line":314,"column":0},"end":{"line":314,"column":20}},"314":{"start":{"line":315,"column":0},"end":{"line":315,"column":41}},"315":{"start":{"line":316,"column":0},"end":{"line":316,"column":88}},"316":{"start":{"line":317,"column":0},"end":{"line":317,"column":6}},"317":{"start":{"line":318,"column":0},"end":{"line":318,"column":21}},"318":{"start":{"line":319,"column":0},"end":{"line":319,"column":91}},"319":{"start":{"line":320,"column":0},"end":{"line":320,"column":0}},"320":{"start":{"line":321,"column":0},"end":{"line":321,"column":64}},"321":{"start":{"line":322,"column":0},"end":{"line":322,"column":27}},"322":{"start":{"line":323,"column":0},"end":{"line":323,"column":31}},"323":{"start":{"line":324,"column":0},"end":{"line":324,"column":9}},"324":{"start":{"line":325,"column":0},"end":{"line":325,"column":38}},"325":{"start":{"line":326,"column":0},"end":{"line":326,"column":49}},"326":{"start":{"line":327,"column":0},"end":{"line":327,"column":7}},"327":{"start":{"line":328,"column":0},"end":{"line":328,"column":40}},"328":{"start":{"line":329,"column":0},"end":{"line":329,"column":61}},"329":{"start":{"line":330,"column":0},"end":{"line":330,"column":7}},"330":{"start":{"line":331,"column":0},"end":{"line":331,"column":7}},"331":{"start":{"line":332,"column":0},"end":{"line":332,"column":0}},"332":{"start":{"line":333,"column":0},"end":{"line":333,"column":45}},"333":{"start":{"line":334,"column":0},"end":{"line":334,"column":2}},"334":{"start":{"line":335,"column":0},"end":{"line":335,"column":0}},"335":{"start":{"line":336,"column":0},"end":{"line":336,"column":80}},"336":{"start":{"line":337,"column":0},"end":{"line":337,"column":87}},"337":{"start":{"line":338,"column":0},"end":{"line":338,"column":41}},"338":{"start":{"line":339,"column":0},"end":{"line":339,"column":1}},"339":{"start":{"line":340,"column":0},"end":{"line":340,"column":0}},"340":{"start":{"line":341,"column":0},"end":{"line":341,"column":78}},"341":{"start":{"line":342,"column":0},"end":{"line":342,"column":67}},"342":{"start":{"line":343,"column":0},"end":{"line":343,"column":59}},"343":{"start":{"line":344,"column":0},"end":{"line":344,"column":55}},"344":{"start":{"line":345,"column":0},"end":{"line":345,"column":10}},"345":{"start":{"line":346,"column":0},"end":{"line":346,"column":69}},"346":{"start":{"line":347,"column":0},"end":{"line":347,"column":3}},"347":{"start":{"line":348,"column":0},"end":{"line":348,"column":1}},"348":{"start":{"line":349,"column":0},"end":{"line":349,"column":41}},"349":{"start":{"line":350,"column":0},"end":{"line":350,"column":23}},"350":{"start":{"line":351,"column":0},"end":{"line":351,"column":23}},"351":{"start":{"line":352,"column":0},"end":{"line":352,"column":30}},"352":{"start":{"line":353,"column":0},"end":{"line":353,"column":18}},"353":{"start":{"line":354,"column":0},"end":{"line":354,"column":52}},"354":{"start":{"line":355,"column":0},"end":{"line":355,"column":0}},"355":{"start":{"line":356,"column":0},"end":{"line":356,"column":109}},"356":{"start":{"line":357,"column":0},"end":{"line":357,"column":65}},"357":{"start":{"line":358,"column":0},"end":{"line":358,"column":95}},"358":{"start":{"line":359,"column":0},"end":{"line":359,"column":0}},"359":{"start":{"line":360,"column":0},"end":{"line":360,"column":68}},"360":{"start":{"line":361,"column":0},"end":{"line":361,"column":1}},"361":{"start":{"line":362,"column":0},"end":{"line":362,"column":43}},"362":{"start":{"line":363,"column":0},"end":{"line":363,"column":23}},"363":{"start":{"line":364,"column":0},"end":{"line":364,"column":23}},"364":{"start":{"line":365,"column":0},"end":{"line":365,"column":32}},"365":{"start":{"line":366,"column":0},"end":{"line":366,"column":18}},"366":{"start":{"line":367,"column":0},"end":{"line":367,"column":54}},"367":{"start":{"line":368,"column":0},"end":{"line":368,"column":68}},"368":{"start":{"line":369,"column":0},"end":{"line":369,"column":40}},"369":{"start":{"line":370,"column":0},"end":{"line":370,"column":41}},"370":{"start":{"line":371,"column":0},"end":{"line":371,"column":34}},"371":{"start":{"line":372,"column":0},"end":{"line":372,"column":25}},"372":{"start":{"line":373,"column":0},"end":{"line":373,"column":53}},"373":{"start":{"line":374,"column":0},"end":{"line":374,"column":10}},"374":{"start":{"line":375,"column":0},"end":{"line":375,"column":24}},"375":{"start":{"line":376,"column":0},"end":{"line":376,"column":3}},"376":{"start":{"line":377,"column":0},"end":{"line":377,"column":96}},"377":{"start":{"line":378,"column":0},"end":{"line":378,"column":1}},"378":{"start":{"line":379,"column":0},"end":{"line":379,"column":0}},"379":{"start":{"line":380,"column":0},"end":{"line":380,"column":116}},"380":{"start":{"line":381,"column":0},"end":{"line":381,"column":41}},"381":{"start":{"line":382,"column":0},"end":{"line":382,"column":38}},"382":{"start":{"line":383,"column":0},"end":{"line":383,"column":0}},"383":{"start":{"line":384,"column":0},"end":{"line":384,"column":29}},"384":{"start":{"line":385,"column":0},"end":{"line":385,"column":19}},"385":{"start":{"line":386,"column":0},"end":{"line":386,"column":56}},"386":{"start":{"line":387,"column":0},"end":{"line":387,"column":20}},"387":{"start":{"line":388,"column":0},"end":{"line":388,"column":51}},"388":{"start":{"line":389,"column":0},"end":{"line":389,"column":7}},"389":{"start":{"line":390,"column":0},"end":{"line":390,"column":5}},"390":{"start":{"line":391,"column":0},"end":{"line":391,"column":0}},"391":{"start":{"line":392,"column":0},"end":{"line":392,"column":29}},"392":{"start":{"line":393,"column":0},"end":{"line":393,"column":19}},"393":{"start":{"line":394,"column":0},"end":{"line":394,"column":60}},"394":{"start":{"line":395,"column":0},"end":{"line":395,"column":21}},"395":{"start":{"line":396,"column":0},"end":{"line":396,"column":46}},"396":{"start":{"line":397,"column":0},"end":{"line":397,"column":7}},"397":{"start":{"line":398,"column":0},"end":{"line":398,"column":5}},"398":{"start":{"line":399,"column":0},"end":{"line":399,"column":0}},"399":{"start":{"line":400,"column":0},"end":{"line":400,"column":10}},"400":{"start":{"line":401,"column":0},"end":{"line":401,"column":18}},"401":{"start":{"line":402,"column":0},"end":{"line":402,"column":23}},"402":{"start":{"line":403,"column":0},"end":{"line":403,"column":4}},"403":{"start":{"line":404,"column":0},"end":{"line":404,"column":1}},"404":{"start":{"line":405,"column":0},"end":{"line":405,"column":0}},"405":{"start":{"line":406,"column":0},"end":{"line":406,"column":39}},"406":{"start":{"line":407,"column":0},"end":{"line":407,"column":56}},"407":{"start":{"line":408,"column":0},"end":{"line":408,"column":22}},"408":{"start":{"line":409,"column":0},"end":{"line":409,"column":17}},"409":{"start":{"line":410,"column":0},"end":{"line":410,"column":18}},"410":{"start":{"line":411,"column":0},"end":{"line":411,"column":67}},"411":{"start":{"line":412,"column":0},"end":{"line":412,"column":0}},"412":{"start":{"line":413,"column":0},"end":{"line":413,"column":40}},"413":{"start":{"line":414,"column":0},"end":{"line":414,"column":7}},"414":{"start":{"line":415,"column":0},"end":{"line":415,"column":118}},"415":{"start":{"line":416,"column":0},"end":{"line":416,"column":14}},"416":{"start":{"line":417,"column":0},"end":{"line":417,"column":25}},"417":{"start":{"line":418,"column":0},"end":{"line":418,"column":8}},"418":{"start":{"line":419,"column":0},"end":{"line":419,"column":27}},"419":{"start":{"line":420,"column":0},"end":{"line":420,"column":7}},"420":{"start":{"line":421,"column":0},"end":{"line":421,"column":106}},"421":{"start":{"line":422,"column":0},"end":{"line":422,"column":15}},"422":{"start":{"line":423,"column":0},"end":{"line":423,"column":74}},"423":{"start":{"line":424,"column":0},"end":{"line":424,"column":3}},"424":{"start":{"line":425,"column":0},"end":{"line":425,"column":1}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"38":1,"39":1,"40":1,"41":1,"42":1,"43":1,"44":1,"45":1,"46":1,"47":99,"48":99,"49":99,"50":1,"51":1,"52":4,"53":4,"54":4,"55":0,"56":0,"57":4,"58":4,"59":1,"60":1,"61":3,"62":3,"63":3,"64":3,"65":3,"66":3,"67":2,"68":4,"69":1,"70":1,"71":1,"72":1,"73":4,"74":1,"75":8,"76":8,"77":8,"78":8,"79":20,"80":20,"81":20,"82":20,"83":8,"84":8,"85":1,"86":1,"87":2,"88":2,"89":2,"90":2,"91":2,"92":2,"93":2,"94":2,"95":2,"96":2,"97":2,"98":2,"99":2,"100":2,"101":2,"102":2,"103":2,"104":1,"105":6,"106":6,"107":6,"108":2,"109":1,"110":1,"111":1,"112":6,"113":4,"114":4,"115":6,"116":1,"117":4,"118":4,"119":4,"120":4,"121":4,"122":1,"123":48,"124":48,"125":48,"126":48,"127":48,"128":48,"129":1,"130":29,"131":29,"132":29,"133":1,"134":7,"135":7,"136":7,"137":7,"138":7,"139":7,"140":7,"141":7,"142":8,"143":8,"144":8,"145":8,"146":8,"147":8,"148":8,"149":8,"150":7,"151":7,"152":7,"153":8,"154":8,"155":8,"156":8,"157":8,"158":8,"159":8,"160":8,"161":7,"162":7,"163":7,"164":7,"165":1,"166":2,"167":2,"168":2,"169":2,"170":2,"171":2,"172":2,"173":2,"174":2,"175":2,"176":2,"177":2,"178":2,"179":2,"180":2,"181":2,"182":2,"183":2,"184":2,"185":1,"186":5,"187":5,"188":5,"189":12,"190":6,"191":5,"192":5,"193":5,"194":5,"195":5,"196":5,"197":5,"198":5,"199":5,"200":5,"201":5,"202":5,"203":5,"204":5,"205":5,"206":5,"207":5,"208":1,"209":1,"210":1,"211":12,"212":12,"213":12,"214":12,"215":12,"216":12,"217":2,"218":2,"219":10,"220":12,"221":1,"222":1,"223":9,"224":9,"225":9,"226":13,"227":13,"228":45,"229":45,"230":10,"231":10,"232":10,"233":13,"234":13,"235":13,"236":3,"237":3,"238":9,"239":9,"240":9,"241":9,"242":14,"243":14,"244":14,"245":14,"246":14,"247":14,"248":48,"249":48,"250":48,"251":38,"252":114,"253":62,"254":62,"255":38,"256":38,"257":48,"258":14,"259":14,"260":14,"261":1,"262":1,"263":1,"264":1,"265":1,"266":1,"267":1,"268":1,"269":1,"270":7,"271":7,"272":7,"273":7,"274":7,"275":7,"276":7,"277":7,"278":7,"279":7,"280":7,"281":7,"282":7,"283":7,"284":1,"285":1,"286":6,"287":6,"288":6,"289":6,"290":6,"291":6,"292":6,"293":6,"294":6,"295":4,"296":8,"297":4,"298":4,"299":8,"300":4,"301":4,"302":4,"303":6,"304":6,"305":6,"306":6,"307":1,"308":1,"309":3,"310":3,"311":3,"312":3,"313":3,"314":3,"315":3,"316":3,"317":3,"318":2,"319":2,"320":2,"321":2,"322":2,"323":2,"324":2,"325":2,"326":2,"327":2,"328":2,"329":2,"330":3,"331":3,"332":3,"333":3,"334":1,"335":1,"336":4,"337":4,"338":4,"339":1,"340":1,"341":1,"342":1,"343":1,"344":1,"345":0,"346":0,"347":1,"348":1,"349":1,"350":1,"351":1,"352":1,"353":1,"354":1,"355":1,"356":1,"357":1,"358":1,"359":1,"360":1,"361":1,"362":3,"363":3,"364":3,"365":3,"366":3,"367":3,"368":3,"369":0,"370":0,"371":0,"372":0,"373":3,"374":3,"375":3,"376":3,"377":3,"378":1,"379":3,"380":3,"381":3,"382":3,"383":3,"384":4,"385":4,"386":4,"387":4,"388":4,"389":3,"390":3,"391":3,"392":4,"393":4,"394":4,"395":4,"396":4,"397":3,"398":3,"399":3,"400":3,"401":3,"402":3,"403":3,"404":1,"405":1,"406":2,"407":2,"408":2,"409":2,"410":2,"411":2,"412":2,"413":2,"414":2,"415":2,"416":2,"417":2,"418":2,"419":2,"420":2,"421":2,"422":0,"423":0,"424":2},"branchMap":{"0":{"type":"branch","line":48,"loc":{"start":{"line":48,"column":0},"end":{"line":50,"column":1}},"locations":[{"start":{"line":48,"column":0},"end":{"line":50,"column":1}}]},"1":{"type":"branch","line":52,"loc":{"start":{"line":52,"column":7},"end":{"line":74,"column":1}},"locations":[{"start":{"line":52,"column":7},"end":{"line":74,"column":1}}]},"2":{"type":"branch","line":55,"loc":{"start":{"line":55,"column":34},"end":{"line":57,"column":3}},"locations":[{"start":{"line":55,"column":34},"end":{"line":57,"column":3}}]},"3":{"type":"branch","line":59,"loc":{"start":{"line":59,"column":53},"end":{"line":61,"column":3}},"locations":[{"start":{"line":59,"column":53},"end":{"line":61,"column":3}}]},"4":{"type":"branch","line":62,"loc":{"start":{"line":62,"column":-1},"end":{"line":67,"column":78}},"locations":[{"start":{"line":62,"column":-1},"end":{"line":67,"column":78}}]},"5":{"type":"branch","line":68,"loc":{"start":{"line":68,"column":-1},"end":{"line":69,"column":11}},"locations":[{"start":{"line":68,"column":-1},"end":{"line":69,"column":11}}]},"6":{"type":"branch","line":69,"loc":{"start":{"line":69,"column":4},"end":{"line":73,"column":3}},"locations":[{"start":{"line":69,"column":4},"end":{"line":73,"column":3}}]},"7":{"type":"branch","line":76,"loc":{"start":{"line":76,"column":0},"end":{"line":85,"column":1}},"locations":[{"start":{"line":76,"column":0},"end":{"line":85,"column":1}}]},"8":{"type":"branch","line":79,"loc":{"start":{"line":79,"column":42},"end":{"line":84,"column":3}},"locations":[{"start":{"line":79,"column":42},"end":{"line":84,"column":3}}]},"9":{"type":"branch","line":87,"loc":{"start":{"line":87,"column":7},"end":{"line":104,"column":1}},"locations":[{"start":{"line":87,"column":7},"end":{"line":104,"column":1}}]},"10":{"type":"branch","line":99,"loc":{"start":{"line":99,"column":21},"end":{"line":101,"column":3}},"locations":[{"start":{"line":99,"column":21},"end":{"line":101,"column":3}}]},"11":{"type":"branch","line":106,"loc":{"start":{"line":106,"column":0},"end":{"line":116,"column":1}},"locations":[{"start":{"line":106,"column":0},"end":{"line":116,"column":1}}]},"12":{"type":"branch","line":108,"loc":{"start":{"line":108,"column":27},"end":{"line":113,"column":9}},"locations":[{"start":{"line":108,"column":27},"end":{"line":113,"column":9}}]},"13":{"type":"branch","line":109,"loc":{"start":{"line":109,"column":18},"end":{"line":113,"column":9}},"locations":[{"start":{"line":109,"column":18},"end":{"line":113,"column":9}}]},"14":{"type":"branch","line":113,"loc":{"start":{"line":113,"column":3},"end":{"line":115,"column":3}},"locations":[{"start":{"line":113,"column":3},"end":{"line":115,"column":3}}]},"15":{"type":"branch","line":118,"loc":{"start":{"line":118,"column":0},"end":{"line":122,"column":1}},"locations":[{"start":{"line":118,"column":0},"end":{"line":122,"column":1}}]},"16":{"type":"branch","line":121,"loc":{"start":{"line":121,"column":21},"end":{"line":121,"column":56}},"locations":[{"start":{"line":121,"column":21},"end":{"line":121,"column":56}}]},"17":{"type":"branch","line":124,"loc":{"start":{"line":124,"column":0},"end":{"line":129,"column":1}},"locations":[{"start":{"line":124,"column":0},"end":{"line":129,"column":1}}]},"18":{"type":"branch","line":131,"loc":{"start":{"line":131,"column":0},"end":{"line":133,"column":1}},"locations":[{"start":{"line":131,"column":0},"end":{"line":133,"column":1}}]},"19":{"type":"branch","line":135,"loc":{"start":{"line":135,"column":0},"end":{"line":165,"column":1}},"locations":[{"start":{"line":135,"column":0},"end":{"line":165,"column":1}}]},"20":{"type":"branch","line":142,"loc":{"start":{"line":142,"column":30},"end":{"line":151,"column":3}},"locations":[{"start":{"line":142,"column":30},"end":{"line":151,"column":3}}]},"21":{"type":"branch","line":153,"loc":{"start":{"line":153,"column":27},"end":{"line":162,"column":3}},"locations":[{"start":{"line":153,"column":27},"end":{"line":162,"column":3}}]},"22":{"type":"branch","line":167,"loc":{"start":{"line":167,"column":0},"end":{"line":185,"column":1}},"locations":[{"start":{"line":167,"column":0},"end":{"line":185,"column":1}}]},"23":{"type":"branch","line":169,"loc":{"start":{"line":169,"column":74},"end":{"line":169,"column":88}},"locations":[{"start":{"line":169,"column":74},"end":{"line":169,"column":88}}]},"24":{"type":"branch","line":187,"loc":{"start":{"line":187,"column":0},"end":{"line":208,"column":1}},"locations":[{"start":{"line":187,"column":0},"end":{"line":208,"column":1}}]},"25":{"type":"branch","line":200,"loc":{"start":{"line":200,"column":27},"end":{"line":200,"column":59}},"locations":[{"start":{"line":200,"column":27},"end":{"line":200,"column":59}}]},"26":{"type":"branch","line":189,"loc":{"start":{"line":189,"column":74},"end":{"line":192,"column":3}},"locations":[{"start":{"line":189,"column":74},"end":{"line":192,"column":3}}]},"27":{"type":"branch","line":190,"loc":{"start":{"line":190,"column":45},"end":{"line":192,"column":3}},"locations":[{"start":{"line":190,"column":45},"end":{"line":192,"column":3}}]},"28":{"type":"branch","line":211,"loc":{"start":{"line":211,"column":7},"end":{"line":242,"column":1}},"locations":[{"start":{"line":211,"column":7},"end":{"line":242,"column":1}}]},"29":{"type":"branch","line":217,"loc":{"start":{"line":217,"column":17},"end":{"line":219,"column":3}},"locations":[{"start":{"line":217,"column":17},"end":{"line":219,"column":3}}]},"30":{"type":"branch","line":220,"loc":{"start":{"line":220,"column":-1},"end":{"line":221,"column":24}},"locations":[{"start":{"line":220,"column":-1},"end":{"line":221,"column":24}}]},"31":{"type":"branch","line":221,"loc":{"start":{"line":221,"column":24},"end":{"line":223,"column":3}},"locations":[{"start":{"line":221,"column":24},"end":{"line":223,"column":3}}]},"32":{"type":"branch","line":224,"loc":{"start":{"line":224,"column":-1},"end":{"line":242,"column":1}},"locations":[{"start":{"line":224,"column":-1},"end":{"line":242,"column":1}}]},"33":{"type":"branch","line":226,"loc":{"start":{"line":226,"column":30},"end":{"line":239,"column":3}},"locations":[{"start":{"line":226,"column":30},"end":{"line":239,"column":3}}]},"34":{"type":"branch","line":236,"loc":{"start":{"line":236,"column":24},"end":{"line":238,"column":5}},"locations":[{"start":{"line":236,"column":24},"end":{"line":238,"column":5}}]},"35":{"type":"branch","line":228,"loc":{"start":{"line":228,"column":66},"end":{"line":234,"column":5}},"locations":[{"start":{"line":228,"column":66},"end":{"line":234,"column":5}}]},"36":{"type":"branch","line":230,"loc":{"start":{"line":230,"column":69},"end":{"line":233,"column":7}},"locations":[{"start":{"line":230,"column":69},"end":{"line":233,"column":7}}]},"37":{"type":"branch","line":243,"loc":{"start":{"line":243,"column":0},"end":{"line":261,"column":1}},"locations":[{"start":{"line":243,"column":0},"end":{"line":261,"column":1}}]},"38":{"type":"branch","line":248,"loc":{"start":{"line":248,"column":31},"end":{"line":258,"column":3}},"locations":[{"start":{"line":248,"column":31},"end":{"line":258,"column":3}}]},"39":{"type":"branch","line":251,"loc":{"start":{"line":251,"column":27},"end":{"line":257,"column":5}},"locations":[{"start":{"line":251,"column":27},"end":{"line":257,"column":5}}]},"40":{"type":"branch","line":252,"loc":{"start":{"line":252,"column":19},"end":{"line":256,"column":7}},"locations":[{"start":{"line":252,"column":19},"end":{"line":256,"column":7}}]},"41":{"type":"branch","line":253,"loc":{"start":{"line":253,"column":32},"end":{"line":255,"column":9}},"locations":[{"start":{"line":253,"column":32},"end":{"line":255,"column":9}}]},"42":{"type":"branch","line":271,"loc":{"start":{"line":271,"column":0},"end":{"line":284,"column":1}},"locations":[{"start":{"line":271,"column":0},"end":{"line":284,"column":1}}]},"43":{"type":"branch","line":278,"loc":{"start":{"line":278,"column":76},"end":{"line":278,"column":101}},"locations":[{"start":{"line":278,"column":76},"end":{"line":278,"column":101}}]},"44":{"type":"branch","line":286,"loc":{"start":{"line":286,"column":62},"end":{"line":307,"column":2}},"locations":[{"start":{"line":286,"column":62},"end":{"line":307,"column":2}}]},"45":{"type":"branch","line":291,"loc":{"start":{"line":291,"column":12},"end":{"line":294,"column":5}},"locations":[{"start":{"line":291,"column":12},"end":{"line":294,"column":5}}]},"46":{"type":"branch","line":292,"loc":{"start":{"line":292,"column":41},"end":{"line":292,"column":54}},"locations":[{"start":{"line":292,"column":41},"end":{"line":292,"column":54}}]},"47":{"type":"branch","line":293,"loc":{"start":{"line":293,"column":31},"end":{"line":293,"column":64}},"locations":[{"start":{"line":293,"column":31},"end":{"line":293,"column":64}}]},"48":{"type":"branch","line":293,"loc":{"start":{"line":293,"column":65},"end":{"line":293,"column":77}},"locations":[{"start":{"line":293,"column":65},"end":{"line":293,"column":77}}]},"49":{"type":"branch","line":295,"loc":{"start":{"line":295,"column":13},"end":{"line":304,"column":5}},"locations":[{"start":{"line":295,"column":13},"end":{"line":304,"column":5}}]},"50":{"type":"branch","line":296,"loc":{"start":{"line":296,"column":34},"end":{"line":303,"column":7}},"locations":[{"start":{"line":296,"column":34},"end":{"line":303,"column":7}}]},"51":{"type":"branch","line":297,"loc":{"start":{"line":297,"column":40},"end":{"line":299,"column":9}},"locations":[{"start":{"line":297,"column":40},"end":{"line":299,"column":9}}]},"52":{"type":"branch","line":300,"loc":{"start":{"line":300,"column":42},"end":{"line":302,"column":9}},"locations":[{"start":{"line":300,"column":42},"end":{"line":302,"column":9}}]},"53":{"type":"branch","line":309,"loc":{"start":{"line":309,"column":54},"end":{"line":334,"column":2}},"locations":[{"start":{"line":309,"column":54},"end":{"line":334,"column":2}}]},"54":{"type":"branch","line":314,"loc":{"start":{"line":314,"column":12},"end":{"line":317,"column":5}},"locations":[{"start":{"line":314,"column":12},"end":{"line":317,"column":5}}]},"55":{"type":"branch","line":318,"loc":{"start":{"line":318,"column":13},"end":{"line":331,"column":5}},"locations":[{"start":{"line":318,"column":13},"end":{"line":331,"column":5}}]},"56":{"type":"branch","line":336,"loc":{"start":{"line":336,"column":7},"end":{"line":339,"column":1}},"locations":[{"start":{"line":336,"column":7},"end":{"line":339,"column":1}}]},"57":{"type":"branch","line":341,"loc":{"start":{"line":341,"column":0},"end":{"line":348,"column":1}},"locations":[{"start":{"line":341,"column":0},"end":{"line":348,"column":1}}]},"58":{"type":"branch","line":345,"loc":{"start":{"line":345,"column":3},"end":{"line":347,"column":3}},"locations":[{"start":{"line":345,"column":3},"end":{"line":347,"column":3}}]},"59":{"type":"branch","line":349,"loc":{"start":{"line":349,"column":7},"end":{"line":361,"column":1}},"locations":[{"start":{"line":349,"column":7},"end":{"line":361,"column":1}}]},"60":{"type":"branch","line":362,"loc":{"start":{"line":362,"column":7},"end":{"line":378,"column":1}},"locations":[{"start":{"line":362,"column":7},"end":{"line":378,"column":1}}]},"61":{"type":"branch","line":369,"loc":{"start":{"line":369,"column":39},"end":{"line":374,"column":9}},"locations":[{"start":{"line":369,"column":39},"end":{"line":374,"column":9}}]},"62":{"type":"branch","line":380,"loc":{"start":{"line":380,"column":0},"end":{"line":404,"column":1}},"locations":[{"start":{"line":380,"column":0},"end":{"line":404,"column":1}}]},"63":{"type":"branch","line":384,"loc":{"start":{"line":384,"column":20},"end":{"line":390,"column":3}},"locations":[{"start":{"line":384,"column":20},"end":{"line":390,"column":3}}]},"64":{"type":"branch","line":392,"loc":{"start":{"line":392,"column":17},"end":{"line":398,"column":3}},"locations":[{"start":{"line":392,"column":17},"end":{"line":398,"column":3}}]},"65":{"type":"branch","line":406,"loc":{"start":{"line":406,"column":7},"end":{"line":425,"column":1}},"locations":[{"start":{"line":406,"column":7},"end":{"line":425,"column":1}}]},"66":{"type":"branch","line":422,"loc":{"start":{"line":422,"column":4},"end":{"line":424,"column":3}},"locations":[{"start":{"line":422,"column":4},"end":{"line":424,"column":3}}]}},"b":{"0":[99],"1":[4],"2":[0],"3":[1],"4":[3],"5":[2],"6":[1],"7":[8],"8":[20],"9":[2],"10":[2],"11":[6],"12":[2],"13":[1],"14":[4],"15":[4],"16":[53],"17":[48],"18":[29],"19":[7],"20":[8],"21":[8],"22":[2],"23":[4],"24":[5],"25":[4],"26":[12],"27":[6],"28":[12],"29":[2],"30":[10],"31":[1],"32":[9],"33":[13],"34":[3],"35":[45],"36":[10],"37":[14],"38":[48],"39":[38],"40":[114],"41":[62],"42":[7],"43":[4],"44":[6],"45":[6],"46":[5],"47":[3],"48":[3],"49":[4],"50":[8],"51":[4],"52":[4],"53":[3],"54":[3],"55":[2],"56":[4],"57":[1],"58":[0],"59":[1],"60":[3],"61":[0],"62":[3],"63":[4],"64":[4],"65":[2],"66":[0]},"fnMap":{"0":{"name":"removeKeyword","decl":{"start":{"line":48,"column":0},"end":{"line":50,"column":1}},"loc":{"start":{"line":48,"column":0},"end":{"line":50,"column":1}},"line":48},"1":{"name":"prepareAbiDirectory","decl":{"start":{"line":52,"column":7},"end":{"line":74,"column":1}},"loc":{"start":{"line":52,"column":7},"end":{"line":74,"column":1}},"line":52},"2":{"name":"constructMethod","decl":{"start":{"line":76,"column":0},"end":{"line":85,"column":1}},"loc":{"start":{"line":76,"column":0},"end":{"line":85,"column":1}},"line":76},"3":{"name":"promptSelectables","decl":{"start":{"line":87,"column":7},"end":{"line":104,"column":1}},"loc":{"start":{"line":87,"column":7},"end":{"line":104,"column":1}},"line":87},"4":{"name":"getAbiInterface","decl":{"start":{"line":106,"column":0},"end":{"line":116,"column":1}},"loc":{"start":{"line":106,"column":0},"end":{"line":116,"column":1}},"line":106},"5":{"name":"filterObjectsByStateMutability","decl":{"start":{"line":118,"column":0},"end":{"line":122,"column":1}},"loc":{"start":{"line":118,"column":0},"end":{"line":122,"column":1}},"line":118},"6":{"name":"getFragmentFormats","decl":{"start":{"line":124,"column":0},"end":{"line":129,"column":1}},"loc":{"start":{"line":124,"column":0},"end":{"line":129,"column":1}},"line":124},"7":{"name":"generateHandlerName","decl":{"start":{"line":131,"column":0},"end":{"line":133,"column":1}},"loc":{"start":{"line":131,"column":0},"end":{"line":133,"column":1}},"line":131},"8":{"name":"generateFormattedHandlers","decl":{"start":{"line":135,"column":0},"end":{"line":165,"column":1}},"loc":{"start":{"line":135,"column":0},"end":{"line":165,"column":1}},"line":135},"9":{"name":"constructDatasourcesTs","decl":{"start":{"line":167,"column":0},"end":{"line":185,"column":1}},"loc":{"start":{"line":167,"column":0},"end":{"line":185,"column":1}},"line":167},"10":{"name":"constructDatasourcesYaml","decl":{"start":{"line":187,"column":0},"end":{"line":208,"column":1}},"loc":{"start":{"line":187,"column":0},"end":{"line":208,"column":1}},"line":187},"11":{"name":"prepareInputFragments","decl":{"start":{"line":211,"column":7},"end":{"line":242,"column":1}},"loc":{"start":{"line":211,"column":7},"end":{"line":242,"column":1}},"line":211},"12":{"name":"filterExistingFragments","decl":{"start":{"line":243,"column":0},"end":{"line":261,"column":1}},"loc":{"start":{"line":243,"column":0},"end":{"line":261,"column":1}},"line":243},"13":{"name":"filterExistingMethods","decl":{"start":{"line":271,"column":0},"end":{"line":284,"column":1}},"loc":{"start":{"line":271,"column":0},"end":{"line":284,"column":1}},"line":271},"14":{"name":"yamlExtractor","decl":{"start":{"line":286,"column":62},"end":{"line":307,"column":2}},"loc":{"start":{"line":286,"column":62},"end":{"line":307,"column":2}},"line":286},"15":{"name":"tsExtractor","decl":{"start":{"line":309,"column":54},"end":{"line":334,"column":2}},"loc":{"start":{"line":309,"column":54},"end":{"line":334,"column":2}},"line":309},"16":{"name":"getManifestData","decl":{"start":{"line":336,"column":7},"end":{"line":339,"column":1}},"loc":{"start":{"line":336,"column":7},"end":{"line":339,"column":1}},"line":336},"17":{"name":"prependDatasources","decl":{"start":{"line":341,"column":0},"end":{"line":348,"column":1}},"loc":{"start":{"line":341,"column":0},"end":{"line":348,"column":1}},"line":341},"18":{"name":"generateManifestTs","decl":{"start":{"line":349,"column":7},"end":{"line":361,"column":1}},"loc":{"start":{"line":349,"column":7},"end":{"line":361,"column":1}},"line":349},"19":{"name":"generateManifestYaml","decl":{"start":{"line":362,"column":7},"end":{"line":378,"column":1}},"loc":{"start":{"line":362,"column":7},"end":{"line":378,"column":1}},"line":362},"20":{"name":"constructHandlerProps","decl":{"start":{"line":380,"column":0},"end":{"line":404,"column":1}},"loc":{"start":{"line":380,"column":0},"end":{"line":404,"column":1}},"line":380},"21":{"name":"generateHandlers","decl":{"start":{"line":406,"column":7},"end":{"line":425,"column":1}},"loc":{"start":{"line":406,"column":7},"end":{"line":425,"column":1}},"line":406}},"f":{"0":99,"1":4,"2":8,"3":2,"4":6,"5":4,"6":48,"7":29,"8":7,"9":2,"10":5,"11":12,"12":14,"13":7,"14":6,"15":3,"16":4,"17":1,"18":1,"19":3,"20":3,"21":2}},"/Users/scotttwiname/Projects/subql-main/packages/cli/src/controller/init-controller.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/cli/src/controller/init-controller.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":53}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":20}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":29}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":31}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":101}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":68}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":56}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":26}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":34}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":28}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":29}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":53}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":61}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":62}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":8}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":24}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":26}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":14}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":16}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":14}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":17}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":32}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":29}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":18}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":0}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":42}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":15}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":22}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":17}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":15}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":1}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":0}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":26}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":15}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":15}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":19}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":22}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":15}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":1}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":0}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":27}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":15}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":15}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":22}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":15}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":13}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":17}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":17}},"51":{"start":{"line":52,"column":0},"end":{"line":52,"column":21}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":24}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":17}},"54":{"start":{"line":55,"column":0},"end":{"line":55,"column":40}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":6}},"56":{"start":{"line":57,"column":0},"end":{"line":57,"column":1}},"57":{"start":{"line":58,"column":0},"end":{"line":58,"column":0}},"58":{"start":{"line":59,"column":0},"end":{"line":59,"column":65}},"59":{"start":{"line":60,"column":0},"end":{"line":60,"column":0}},"60":{"start":{"line":61,"column":0},"end":{"line":61,"column":11}},"61":{"start":{"line":62,"column":0},"end":{"line":62,"column":41}},"62":{"start":{"line":63,"column":0},"end":{"line":63,"column":61}},"63":{"start":{"line":64,"column":0},"end":{"line":64,"column":7}},"64":{"start":{"line":65,"column":0},"end":{"line":65,"column":73}},"65":{"start":{"line":66,"column":0},"end":{"line":66,"column":0}},"66":{"start":{"line":67,"column":0},"end":{"line":67,"column":30}},"67":{"start":{"line":68,"column":0},"end":{"line":68,"column":15}},"68":{"start":{"line":69,"column":0},"end":{"line":69,"column":73}},"69":{"start":{"line":70,"column":0},"end":{"line":70,"column":3}},"70":{"start":{"line":71,"column":0},"end":{"line":71,"column":1}},"71":{"start":{"line":72,"column":0},"end":{"line":72,"column":0}},"72":{"start":{"line":73,"column":0},"end":{"line":73,"column":16}},"73":{"start":{"line":74,"column":0},"end":{"line":74,"column":46}},"74":{"start":{"line":75,"column":0},"end":{"line":75,"column":60}},"75":{"start":{"line":76,"column":0},"end":{"line":76,"column":7}},"76":{"start":{"line":77,"column":0},"end":{"line":77,"column":76}},"77":{"start":{"line":78,"column":0},"end":{"line":78,"column":28}},"78":{"start":{"line":79,"column":0},"end":{"line":79,"column":15}},"79":{"start":{"line":80,"column":0},"end":{"line":80,"column":78}},"80":{"start":{"line":81,"column":0},"end":{"line":81,"column":3}},"81":{"start":{"line":82,"column":0},"end":{"line":82,"column":1}},"82":{"start":{"line":83,"column":0},"end":{"line":83,"column":0}},"83":{"start":{"line":84,"column":0},"end":{"line":84,"column":108}},"84":{"start":{"line":85,"column":0},"end":{"line":85,"column":43}},"85":{"start":{"line":86,"column":0},"end":{"line":86,"column":21}},"86":{"start":{"line":87,"column":0},"end":{"line":87,"column":21}},"87":{"start":{"line":88,"column":0},"end":{"line":88,"column":39}},"88":{"start":{"line":89,"column":0},"end":{"line":89,"column":7}},"89":{"start":{"line":90,"column":0},"end":{"line":90,"column":120}},"90":{"start":{"line":91,"column":0},"end":{"line":91,"column":28}},"91":{"start":{"line":92,"column":0},"end":{"line":92,"column":15}},"92":{"start":{"line":93,"column":0},"end":{"line":93,"column":76}},"93":{"start":{"line":94,"column":0},"end":{"line":94,"column":3}},"94":{"start":{"line":95,"column":0},"end":{"line":95,"column":1}},"95":{"start":{"line":96,"column":0},"end":{"line":96,"column":0}},"96":{"start":{"line":97,"column":0},"end":{"line":97,"column":38}},"97":{"start":{"line":98,"column":0},"end":{"line":98,"column":20}},"98":{"start":{"line":99,"column":0},"end":{"line":99,"column":22}},"99":{"start":{"line":100,"column":0},"end":{"line":100,"column":24}},"100":{"start":{"line":101,"column":0},"end":{"line":101,"column":16}},"101":{"start":{"line":102,"column":0},"end":{"line":102,"column":20}},"102":{"start":{"line":103,"column":0},"end":{"line":103,"column":56}},"103":{"start":{"line":104,"column":0},"end":{"line":104,"column":7}},"104":{"start":{"line":105,"column":0},"end":{"line":105,"column":85}},"105":{"start":{"line":106,"column":0},"end":{"line":106,"column":15}},"106":{"start":{"line":107,"column":0},"end":{"line":107,"column":58}},"107":{"start":{"line":108,"column":0},"end":{"line":108,"column":9}},"108":{"start":{"line":109,"column":0},"end":{"line":109,"column":32}},"109":{"start":{"line":110,"column":0},"end":{"line":110,"column":17}},"110":{"start":{"line":111,"column":0},"end":{"line":111,"column":86}},"111":{"start":{"line":112,"column":0},"end":{"line":112,"column":5}},"112":{"start":{"line":113,"column":0},"end":{"line":113,"column":25}},"113":{"start":{"line":114,"column":0},"end":{"line":114,"column":3}},"114":{"start":{"line":115,"column":0},"end":{"line":115,"column":21}},"115":{"start":{"line":116,"column":0},"end":{"line":116,"column":1}},"116":{"start":{"line":117,"column":0},"end":{"line":117,"column":0}},"117":{"start":{"line":118,"column":0},"end":{"line":118,"column":43}},"118":{"start":{"line":119,"column":0},"end":{"line":119,"column":20}},"119":{"start":{"line":120,"column":0},"end":{"line":120,"column":22}},"120":{"start":{"line":121,"column":0},"end":{"line":121,"column":42}},"121":{"start":{"line":122,"column":0},"end":{"line":122,"column":20}},"122":{"start":{"line":123,"column":0},"end":{"line":123,"column":56}},"123":{"start":{"line":124,"column":0},"end":{"line":124,"column":40}},"124":{"start":{"line":125,"column":0},"end":{"line":125,"column":39}},"125":{"start":{"line":126,"column":0},"end":{"line":126,"column":58}},"126":{"start":{"line":127,"column":0},"end":{"line":127,"column":73}},"127":{"start":{"line":128,"column":0},"end":{"line":128,"column":79}},"128":{"start":{"line":129,"column":0},"end":{"line":129,"column":52}},"129":{"start":{"line":130,"column":0},"end":{"line":130,"column":33}},"130":{"start":{"line":131,"column":0},"end":{"line":131,"column":72}},"131":{"start":{"line":132,"column":0},"end":{"line":132,"column":22}},"132":{"start":{"line":133,"column":0},"end":{"line":133,"column":54}},"133":{"start":{"line":134,"column":0},"end":{"line":134,"column":21}},"134":{"start":{"line":135,"column":0},"end":{"line":135,"column":1}},"135":{"start":{"line":136,"column":0},"end":{"line":136,"column":0}},"136":{"start":{"line":137,"column":0},"end":{"line":137,"column":76}},"137":{"start":{"line":138,"column":0},"end":{"line":138,"column":80}},"138":{"start":{"line":139,"column":0},"end":{"line":139,"column":60}},"139":{"start":{"line":140,"column":0},"end":{"line":140,"column":34}},"140":{"start":{"line":141,"column":0},"end":{"line":141,"column":59}},"141":{"start":{"line":142,"column":0},"end":{"line":142,"column":63}},"142":{"start":{"line":143,"column":0},"end":{"line":143,"column":0}},"143":{"start":{"line":144,"column":0},"end":{"line":144,"column":37}},"144":{"start":{"line":145,"column":0},"end":{"line":145,"column":73}},"145":{"start":{"line":146,"column":0},"end":{"line":146,"column":68}},"146":{"start":{"line":147,"column":0},"end":{"line":147,"column":29}},"147":{"start":{"line":148,"column":0},"end":{"line":148,"column":7}},"148":{"start":{"line":149,"column":0},"end":{"line":149,"column":42}},"149":{"start":{"line":150,"column":0},"end":{"line":150,"column":10}},"150":{"start":{"line":151,"column":0},"end":{"line":151,"column":77}},"151":{"start":{"line":152,"column":0},"end":{"line":152,"column":92}},"152":{"start":{"line":153,"column":0},"end":{"line":153,"column":52}},"153":{"start":{"line":154,"column":0},"end":{"line":154,"column":3}},"154":{"start":{"line":155,"column":0},"end":{"line":155,"column":0}},"155":{"start":{"line":156,"column":0},"end":{"line":156,"column":71}},"156":{"start":{"line":157,"column":0},"end":{"line":157,"column":1}},"157":{"start":{"line":158,"column":0},"end":{"line":158,"column":0}},"158":{"start":{"line":159,"column":0},"end":{"line":159,"column":93}},"159":{"start":{"line":160,"column":0},"end":{"line":160,"column":7}},"160":{"start":{"line":161,"column":0},"end":{"line":161,"column":48}},"161":{"start":{"line":162,"column":0},"end":{"line":162,"column":15}},"162":{"start":{"line":163,"column":0},"end":{"line":163,"column":92}},"163":{"start":{"line":164,"column":0},"end":{"line":164,"column":3}},"164":{"start":{"line":165,"column":0},"end":{"line":165,"column":7}},"165":{"start":{"line":166,"column":0},"end":{"line":166,"column":47}},"166":{"start":{"line":167,"column":0},"end":{"line":167,"column":15}},"167":{"start":{"line":168,"column":0},"end":{"line":168,"column":96}},"168":{"start":{"line":169,"column":0},"end":{"line":169,"column":3}},"169":{"start":{"line":170,"column":0},"end":{"line":170,"column":7}},"170":{"start":{"line":171,"column":0},"end":{"line":171,"column":51}},"171":{"start":{"line":172,"column":0},"end":{"line":172,"column":15}},"172":{"start":{"line":173,"column":0},"end":{"line":173,"column":67}},"173":{"start":{"line":174,"column":0},"end":{"line":174,"column":3}},"174":{"start":{"line":175,"column":0},"end":{"line":175,"column":1}},"175":{"start":{"line":176,"column":0},"end":{"line":176,"column":0}},"176":{"start":{"line":177,"column":0},"end":{"line":177,"column":100}},"177":{"start":{"line":178,"column":0},"end":{"line":178,"column":31}},"178":{"start":{"line":179,"column":0},"end":{"line":179,"column":80}},"179":{"start":{"line":180,"column":0},"end":{"line":180,"column":60}},"180":{"start":{"line":181,"column":0},"end":{"line":181,"column":37}},"181":{"start":{"line":182,"column":0},"end":{"line":182,"column":81}},"182":{"start":{"line":183,"column":0},"end":{"line":183,"column":41}},"183":{"start":{"line":184,"column":0},"end":{"line":184,"column":61}},"184":{"start":{"line":185,"column":0},"end":{"line":185,"column":81}},"185":{"start":{"line":186,"column":0},"end":{"line":186,"column":1}},"186":{"start":{"line":187,"column":0},"end":{"line":187,"column":0}},"187":{"start":{"line":188,"column":0},"end":{"line":188,"column":101}},"188":{"start":{"line":189,"column":0},"end":{"line":189,"column":52}},"189":{"start":{"line":190,"column":0},"end":{"line":190,"column":52}},"190":{"start":{"line":191,"column":0},"end":{"line":191,"column":56}},"191":{"start":{"line":192,"column":0},"end":{"line":192,"column":27}},"192":{"start":{"line":193,"column":0},"end":{"line":193,"column":0}},"193":{"start":{"line":194,"column":0},"end":{"line":194,"column":37}},"194":{"start":{"line":195,"column":0},"end":{"line":195,"column":0}},"195":{"start":{"line":196,"column":0},"end":{"line":196,"column":13}},"196":{"start":{"line":197,"column":0},"end":{"line":197,"column":79}},"197":{"start":{"line":198,"column":0},"end":{"line":198,"column":52}},"198":{"start":{"line":199,"column":0},"end":{"line":199,"column":61}},"199":{"start":{"line":200,"column":0},"end":{"line":200,"column":40}},"200":{"start":{"line":201,"column":0},"end":{"line":201,"column":36}},"201":{"start":{"line":202,"column":0},"end":{"line":202,"column":0}},"202":{"start":{"line":203,"column":0},"end":{"line":203,"column":91}},"203":{"start":{"line":204,"column":0},"end":{"line":204,"column":10}},"204":{"start":{"line":205,"column":0},"end":{"line":205,"column":43}},"205":{"start":{"line":206,"column":0},"end":{"line":206,"column":70}},"206":{"start":{"line":207,"column":0},"end":{"line":207,"column":45}},"207":{"start":{"line":208,"column":0},"end":{"line":208,"column":36}},"208":{"start":{"line":209,"column":0},"end":{"line":209,"column":0}},"209":{"start":{"line":210,"column":0},"end":{"line":210,"column":57}},"210":{"start":{"line":211,"column":0},"end":{"line":211,"column":46}},"211":{"start":{"line":212,"column":0},"end":{"line":212,"column":41}},"212":{"start":{"line":213,"column":0},"end":{"line":213,"column":39}},"213":{"start":{"line":214,"column":0},"end":{"line":214,"column":46}},"214":{"start":{"line":215,"column":0},"end":{"line":215,"column":5}},"215":{"start":{"line":216,"column":0},"end":{"line":216,"column":41}},"216":{"start":{"line":217,"column":0},"end":{"line":217,"column":3}},"217":{"start":{"line":218,"column":0},"end":{"line":218,"column":78}},"218":{"start":{"line":219,"column":0},"end":{"line":219,"column":1}},"219":{"start":{"line":220,"column":0},"end":{"line":220,"column":0}},"220":{"start":{"line":221,"column":0},"end":{"line":221,"column":82}},"221":{"start":{"line":222,"column":0},"end":{"line":222,"column":31}},"222":{"start":{"line":223,"column":0},"end":{"line":223,"column":0}},"223":{"start":{"line":224,"column":0},"end":{"line":224,"column":37}},"224":{"start":{"line":225,"column":0},"end":{"line":225,"column":28}},"225":{"start":{"line":226,"column":0},"end":{"line":226,"column":3}},"226":{"start":{"line":227,"column":0},"end":{"line":227,"column":0}},"227":{"start":{"line":228,"column":0},"end":{"line":228,"column":53}},"228":{"start":{"line":229,"column":0},"end":{"line":229,"column":1}},"229":{"start":{"line":230,"column":0},"end":{"line":230,"column":0}},"230":{"start":{"line":231,"column":0},"end":{"line":231,"column":37}},"231":{"start":{"line":232,"column":0},"end":{"line":232,"column":7}},"232":{"start":{"line":233,"column":0},"end":{"line":233,"column":44}},"233":{"start":{"line":234,"column":0},"end":{"line":234,"column":16}},"234":{"start":{"line":235,"column":0},"end":{"line":235,"column":15}},"235":{"start":{"line":236,"column":0},"end":{"line":236,"column":17}},"236":{"start":{"line":237,"column":0},"end":{"line":237,"column":3}},"237":{"start":{"line":238,"column":0},"end":{"line":238,"column":1}},"238":{"start":{"line":239,"column":0},"end":{"line":239,"column":0}},"239":{"start":{"line":240,"column":0},"end":{"line":240,"column":82}},"240":{"start":{"line":241,"column":0},"end":{"line":241,"column":45}},"241":{"start":{"line":242,"column":0},"end":{"line":242,"column":63}},"242":{"start":{"line":243,"column":0},"end":{"line":243,"column":70}},"243":{"start":{"line":244,"column":0},"end":{"line":244,"column":0}},"244":{"start":{"line":245,"column":0},"end":{"line":245,"column":59}},"245":{"start":{"line":246,"column":0},"end":{"line":246,"column":0}},"246":{"start":{"line":247,"column":0},"end":{"line":247,"column":7}},"247":{"start":{"line":248,"column":0},"end":{"line":248,"column":25}},"248":{"start":{"line":249,"column":0},"end":{"line":249,"column":39}},"249":{"start":{"line":250,"column":0},"end":{"line":250,"column":33}},"250":{"start":{"line":251,"column":0},"end":{"line":251,"column":52}},"251":{"start":{"line":252,"column":0},"end":{"line":252,"column":12}},"252":{"start":{"line":253,"column":0},"end":{"line":253,"column":77}},"253":{"start":{"line":254,"column":0},"end":{"line":254,"column":5}},"254":{"start":{"line":255,"column":0},"end":{"line":255,"column":15}},"255":{"start":{"line":256,"column":0},"end":{"line":256,"column":58}},"256":{"start":{"line":257,"column":0},"end":{"line":257,"column":3}},"257":{"start":{"line":258,"column":0},"end":{"line":258,"column":0}},"258":{"start":{"line":259,"column":0},"end":{"line":259,"column":38}},"259":{"start":{"line":260,"column":0},"end":{"line":260,"column":61}},"260":{"start":{"line":261,"column":0},"end":{"line":261,"column":1}},"261":{"start":{"line":262,"column":0},"end":{"line":262,"column":0}},"262":{"start":{"line":263,"column":0},"end":{"line":263,"column":79}},"263":{"start":{"line":264,"column":0},"end":{"line":264,"column":69}},"264":{"start":{"line":265,"column":0},"end":{"line":265,"column":86}},"265":{"start":{"line":266,"column":0},"end":{"line":266,"column":69}},"266":{"start":{"line":267,"column":0},"end":{"line":267,"column":1}},"267":{"start":{"line":268,"column":0},"end":{"line":268,"column":0}},"268":{"start":{"line":269,"column":0},"end":{"line":269,"column":83}},"269":{"start":{"line":270,"column":0},"end":{"line":270,"column":86}},"270":{"start":{"line":271,"column":0},"end":{"line":271,"column":45}},"271":{"start":{"line":272,"column":0},"end":{"line":272,"column":76}},"272":{"start":{"line":273,"column":0},"end":{"line":273,"column":1}},"273":{"start":{"line":274,"column":0},"end":{"line":274,"column":0}},"274":{"start":{"line":275,"column":0},"end":{"line":275,"column":94}},"275":{"start":{"line":276,"column":0},"end":{"line":276,"column":20}},"276":{"start":{"line":277,"column":0},"end":{"line":277,"column":74}},"277":{"start":{"line":278,"column":0},"end":{"line":278,"column":13}},"278":{"start":{"line":279,"column":0},"end":{"line":279,"column":108}},"279":{"start":{"line":280,"column":0},"end":{"line":280,"column":10}},"280":{"start":{"line":281,"column":0},"end":{"line":281,"column":76}},"281":{"start":{"line":282,"column":0},"end":{"line":282,"column":3}},"282":{"start":{"line":283,"column":0},"end":{"line":283,"column":7}},"283":{"start":{"line":284,"column":0},"end":{"line":284,"column":98}},"284":{"start":{"line":285,"column":0},"end":{"line":285,"column":15}},"285":{"start":{"line":286,"column":0},"end":{"line":286,"column":17}},"286":{"start":{"line":287,"column":0},"end":{"line":287,"column":3}},"287":{"start":{"line":288,"column":0},"end":{"line":288,"column":1}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"38":1,"39":1,"40":1,"41":1,"42":1,"43":1,"44":1,"45":1,"46":1,"47":1,"48":1,"49":1,"50":1,"51":1,"52":1,"53":1,"54":1,"55":1,"56":1,"57":1,"58":1,"59":1,"60":1,"61":1,"62":1,"63":0,"64":0,"65":0,"66":0,"67":0,"68":0,"69":0,"70":0,"71":1,"72":1,"73":1,"74":1,"75":0,"76":0,"77":0,"78":0,"79":0,"80":0,"81":0,"82":1,"83":1,"84":1,"85":17,"86":17,"87":17,"88":17,"89":17,"90":17,"91":17,"92":0,"93":0,"94":17,"95":1,"96":1,"97":1,"98":1,"99":1,"100":1,"101":1,"102":1,"103":1,"104":1,"105":1,"106":0,"107":0,"108":0,"109":0,"110":0,"111":0,"112":0,"113":0,"114":1,"115":1,"116":1,"117":1,"118":17,"119":17,"120":17,"121":17,"122":17,"123":17,"124":17,"125":17,"126":17,"127":17,"128":17,"129":17,"130":17,"131":17,"132":17,"133":17,"134":17,"135":1,"136":1,"137":1,"138":1,"139":1,"140":1,"141":1,"142":1,"143":1,"144":1,"145":1,"146":1,"147":1,"148":1,"149":1,"150":0,"151":0,"152":0,"153":0,"154":1,"155":1,"156":1,"157":1,"158":1,"159":18,"160":18,"161":18,"162":0,"163":0,"164":18,"165":18,"166":18,"167":0,"168":0,"169":18,"170":18,"171":18,"172":0,"173":0,"174":18,"175":1,"176":1,"177":18,"178":18,"179":18,"180":18,"181":18,"182":18,"183":18,"184":18,"185":18,"186":1,"187":1,"188":18,"189":18,"190":18,"191":18,"192":18,"193":18,"194":18,"195":18,"196":17,"197":17,"198":17,"199":17,"200":17,"201":17,"202":17,"203":18,"204":1,"205":1,"206":1,"207":1,"208":1,"209":1,"210":1,"211":1,"212":1,"213":1,"214":1,"215":1,"216":1,"217":18,"218":18,"219":1,"220":0,"221":0,"222":0,"223":0,"224":0,"225":0,"226":0,"227":0,"228":0,"229":1,"230":0,"231":0,"232":0,"233":0,"234":0,"235":0,"236":0,"237":0,"238":1,"239":1,"240":0,"241":0,"242":0,"243":0,"244":0,"245":0,"246":0,"247":0,"248":0,"249":0,"250":0,"251":0,"252":0,"253":0,"254":0,"255":0,"256":0,"257":0,"258":0,"259":0,"260":0,"261":1,"262":0,"263":0,"264":0,"265":0,"266":0,"267":1,"268":0,"269":0,"270":0,"271":0,"272":0,"273":1,"274":1,"275":2,"276":2,"277":2,"278":1,"279":1,"280":1,"281":1,"282":2,"283":2,"284":2,"285":0,"286":0,"287":2},"branchMap":{"0":{"type":"branch","line":85,"loc":{"start":{"line":85,"column":7},"end":{"line":95,"column":1}},"locations":[{"start":{"line":85,"column":7},"end":{"line":95,"column":1}}]},"1":{"type":"branch","line":92,"loc":{"start":{"line":92,"column":4},"end":{"line":94,"column":3}},"locations":[{"start":{"line":92,"column":4},"end":{"line":94,"column":3}}]},"2":{"type":"branch","line":97,"loc":{"start":{"line":97,"column":7},"end":{"line":116,"column":1}},"locations":[{"start":{"line":97,"column":7},"end":{"line":116,"column":1}}]},"3":{"type":"branch","line":106,"loc":{"start":{"line":106,"column":4},"end":{"line":114,"column":3}},"locations":[{"start":{"line":106,"column":4},"end":{"line":114,"column":3}}]},"4":{"type":"branch","line":118,"loc":{"start":{"line":118,"column":7},"end":{"line":135,"column":1}},"locations":[{"start":{"line":118,"column":7},"end":{"line":135,"column":1}}]},"5":{"type":"branch","line":137,"loc":{"start":{"line":137,"column":7},"end":{"line":157,"column":1}},"locations":[{"start":{"line":137,"column":7},"end":{"line":157,"column":1}}]},"6":{"type":"branch","line":150,"loc":{"start":{"line":150,"column":3},"end":{"line":154,"column":3}},"locations":[{"start":{"line":150,"column":3},"end":{"line":154,"column":3}}]},"7":{"type":"branch","line":159,"loc":{"start":{"line":159,"column":7},"end":{"line":175,"column":1}},"locations":[{"start":{"line":159,"column":7},"end":{"line":175,"column":1}}]},"8":{"type":"branch","line":162,"loc":{"start":{"line":162,"column":4},"end":{"line":164,"column":3}},"locations":[{"start":{"line":162,"column":4},"end":{"line":164,"column":3}}]},"9":{"type":"branch","line":167,"loc":{"start":{"line":167,"column":4},"end":{"line":169,"column":3}},"locations":[{"start":{"line":167,"column":4},"end":{"line":169,"column":3}}]},"10":{"type":"branch","line":172,"loc":{"start":{"line":172,"column":4},"end":{"line":174,"column":3}},"locations":[{"start":{"line":172,"column":4},"end":{"line":174,"column":3}}]},"11":{"type":"branch","line":177,"loc":{"start":{"line":177,"column":7},"end":{"line":186,"column":1}},"locations":[{"start":{"line":177,"column":7},"end":{"line":186,"column":1}}]},"12":{"type":"branch","line":182,"loc":{"start":{"line":182,"column":50},"end":{"line":182,"column":80}},"locations":[{"start":{"line":182,"column":50},"end":{"line":182,"column":80}}]},"13":{"type":"branch","line":188,"loc":{"start":{"line":188,"column":7},"end":{"line":219,"column":1}},"locations":[{"start":{"line":188,"column":7},"end":{"line":219,"column":1}}]},"14":{"type":"branch","line":196,"loc":{"start":{"line":196,"column":12},"end":{"line":204,"column":9}},"locations":[{"start":{"line":196,"column":12},"end":{"line":204,"column":9}}]},"15":{"type":"branch","line":200,"loc":{"start":{"line":200,"column":6},"end":{"line":200,"column":40}},"locations":[{"start":{"line":200,"column":6},"end":{"line":200,"column":40}}]},"16":{"type":"branch","line":201,"loc":{"start":{"line":201,"column":6},"end":{"line":201,"column":35}},"locations":[{"start":{"line":201,"column":6},"end":{"line":201,"column":35}}]},"17":{"type":"branch","line":204,"loc":{"start":{"line":204,"column":3},"end":{"line":217,"column":3}},"locations":[{"start":{"line":204,"column":3},"end":{"line":217,"column":3}}]},"18":{"type":"branch","line":218,"loc":{"start":{"line":218,"column":35},"end":{"line":218,"column":43}},"locations":[{"start":{"line":218,"column":35},"end":{"line":218,"column":43}}]},"19":{"type":"branch","line":218,"loc":{"start":{"line":218,"column":44},"end":{"line":218,"column":54}},"locations":[{"start":{"line":218,"column":44},"end":{"line":218,"column":54}}]},"20":{"type":"branch","line":275,"loc":{"start":{"line":275,"column":7},"end":{"line":288,"column":1}},"locations":[{"start":{"line":275,"column":7},"end":{"line":288,"column":1}}]},"21":{"type":"branch","line":278,"loc":{"start":{"line":278,"column":12},"end":{"line":282,"column":3}},"locations":[{"start":{"line":278,"column":12},"end":{"line":282,"column":3}}]},"22":{"type":"branch","line":284,"loc":{"start":{"line":284,"column":16},"end":{"line":284,"column":54}},"locations":[{"start":{"line":284,"column":16},"end":{"line":284,"column":54}}]},"23":{"type":"branch","line":284,"loc":{"start":{"line":284,"column":55},"end":{"line":284,"column":97}},"locations":[{"start":{"line":284,"column":55},"end":{"line":284,"column":97}}]},"24":{"type":"branch","line":285,"loc":{"start":{"line":285,"column":4},"end":{"line":287,"column":3}},"locations":[{"start":{"line":285,"column":4},"end":{"line":287,"column":3}}]}},"b":{"0":[17],"1":[0],"2":[1],"3":[0],"4":[17],"5":[1],"6":[0],"7":[18],"8":[0],"9":[0],"10":[0],"11":[18],"12":[0],"13":[18],"14":[17],"15":[4],"16":[13],"17":[1],"18":[17],"19":[1],"20":[2],"21":[1],"22":[1],"23":[1],"24":[0]},"fnMap":{"0":{"name":"fetchTemplates","decl":{"start":{"line":63,"column":7},"end":{"line":71,"column":1}},"loc":{"start":{"line":63,"column":7},"end":{"line":71,"column":1}},"line":63},"1":{"name":"fetchNetworks","decl":{"start":{"line":75,"column":7},"end":{"line":82,"column":1}},"loc":{"start":{"line":75,"column":7},"end":{"line":82,"column":1}},"line":75},"2":{"name":"fetchExampleProjects","decl":{"start":{"line":85,"column":7},"end":{"line":95,"column":1}},"loc":{"start":{"line":85,"column":7},"end":{"line":95,"column":1}},"line":85},"3":{"name":"cloneProjectGit","decl":{"start":{"line":97,"column":7},"end":{"line":116,"column":1}},"loc":{"start":{"line":97,"column":7},"end":{"line":116,"column":1}},"line":97},"4":{"name":"cloneProjectTemplate","decl":{"start":{"line":118,"column":7},"end":{"line":135,"column":1}},"loc":{"start":{"line":118,"column":7},"end":{"line":135,"column":1}},"line":118},"5":{"name":"readDefaults","decl":{"start":{"line":137,"column":7},"end":{"line":157,"column":1}},"loc":{"start":{"line":137,"column":7},"end":{"line":157,"column":1}},"line":137},"6":{"name":"prepare","decl":{"start":{"line":159,"column":7},"end":{"line":175,"column":1}},"loc":{"start":{"line":159,"column":7},"end":{"line":175,"column":1}},"line":159},"7":{"name":"preparePackage","decl":{"start":{"line":177,"column":7},"end":{"line":186,"column":1}},"loc":{"start":{"line":177,"column":7},"end":{"line":186,"column":1}},"line":177},"8":{"name":"prepareManifest","decl":{"start":{"line":188,"column":7},"end":{"line":219,"column":1}},"loc":{"start":{"line":188,"column":7},"end":{"line":219,"column":1}},"line":188},"9":{"name":"installDependencies","decl":{"start":{"line":221,"column":0},"end":{"line":229,"column":1}},"loc":{"start":{"line":221,"column":0},"end":{"line":229,"column":1}},"line":221},"10":{"name":"checkYarnExists","decl":{"start":{"line":231,"column":0},"end":{"line":238,"column":1}},"loc":{"start":{"line":231,"column":0},"end":{"line":238,"column":1}},"line":231},"11":{"name":"prepareProjectScaffold","decl":{"start":{"line":240,"column":7},"end":{"line":261,"column":1}},"loc":{"start":{"line":240,"column":7},"end":{"line":261,"column":1}},"line":240},"12":{"name":"prepareProjectScaffoldTS","decl":{"start":{"line":263,"column":0},"end":{"line":267,"column":1}},"loc":{"start":{"line":263,"column":0},"end":{"line":267,"column":1}},"line":263},"13":{"name":"prepareProjectScaffoldYAML","decl":{"start":{"line":269,"column":0},"end":{"line":273,"column":1}},"loc":{"start":{"line":269,"column":0},"end":{"line":273,"column":1}},"line":269},"14":{"name":"validateEthereumProjectManifest","decl":{"start":{"line":275,"column":7},"end":{"line":288,"column":1}},"loc":{"start":{"line":275,"column":7},"end":{"line":288,"column":1}},"line":275}},"f":{"0":0,"1":0,"2":17,"3":1,"4":17,"5":1,"6":18,"7":18,"8":18,"9":0,"10":0,"11":0,"12":0,"13":0,"14":2}},"/Users/scotttwiname/Projects/subql-main/packages/cli/src/controller/project-controller.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/cli/src/controller/project-controller.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":26}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":37}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":0}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":33}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":14}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":1}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":48}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":14}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":34}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":25}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":19}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":2}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":36}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":23}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":19}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":18}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":23}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":20}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":24}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":22}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":21}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":33}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":13}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":35}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":7}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":52}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":16}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":45}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":8}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":21}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":24}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":19}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":13}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":37}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":33}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":37}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":61}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":25}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":27}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":27}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":34}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":8}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":7}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":56}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":15}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":48}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":3}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":1}},"51":{"start":{"line":52,"column":0},"end":{"line":52,"column":0}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":36}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":20}},"54":{"start":{"line":55,"column":0},"end":{"line":55,"column":23}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":23}},"56":{"start":{"line":57,"column":0},"end":{"line":57,"column":13}},"57":{"start":{"line":58,"column":0},"end":{"line":58,"column":20}},"58":{"start":{"line":59,"column":0},"end":{"line":59,"column":48}},"59":{"start":{"line":60,"column":0},"end":{"line":60,"column":7}},"60":{"start":{"line":61,"column":0},"end":{"line":61,"column":17}},"61":{"start":{"line":62,"column":0},"end":{"line":62,"column":16}},"62":{"start":{"line":63,"column":0},"end":{"line":63,"column":45}},"63":{"start":{"line":64,"column":0},"end":{"line":64,"column":8}},"64":{"start":{"line":65,"column":0},"end":{"line":65,"column":23}},"65":{"start":{"line":66,"column":0},"end":{"line":66,"column":31}},"66":{"start":{"line":67,"column":0},"end":{"line":67,"column":19}},"67":{"start":{"line":68,"column":0},"end":{"line":68,"column":7}},"68":{"start":{"line":69,"column":0},"end":{"line":69,"column":20}},"69":{"start":{"line":70,"column":0},"end":{"line":70,"column":15}},"70":{"start":{"line":71,"column":0},"end":{"line":71,"column":48}},"71":{"start":{"line":72,"column":0},"end":{"line":72,"column":3}},"72":{"start":{"line":73,"column":0},"end":{"line":73,"column":1}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"38":1,"39":1,"40":1,"41":1,"42":1,"43":1,"44":1,"45":1,"46":0,"47":1,"48":1,"49":1,"50":1,"51":1,"52":1,"53":1,"54":1,"55":1,"56":1,"57":1,"58":1,"59":1,"60":1,"61":1,"62":1,"63":1,"64":1,"65":1,"66":1,"67":1,"68":0,"69":1,"70":1,"71":1,"72":1},"branchMap":{"0":{"type":"branch","line":10,"loc":{"start":{"line":10,"column":28},"end":{"line":15,"column":2}},"locations":[{"start":{"line":10,"column":28},"end":{"line":15,"column":2}}]},"1":{"type":"branch","line":16,"loc":{"start":{"line":16,"column":7},"end":{"line":51,"column":1}},"locations":[{"start":{"line":16,"column":7},"end":{"line":51,"column":1}}]},"2":{"type":"branch","line":47,"loc":{"start":{"line":47,"column":-1},"end":{"line":48,"column":11}},"locations":[{"start":{"line":47,"column":-1},"end":{"line":48,"column":11}}]},"3":{"type":"branch","line":53,"loc":{"start":{"line":53,"column":7},"end":{"line":73,"column":1}},"locations":[{"start":{"line":53,"column":7},"end":{"line":73,"column":1}}]},"4":{"type":"branch","line":69,"loc":{"start":{"line":69,"column":-1},"end":{"line":70,"column":11}},"locations":[{"start":{"line":69,"column":-1},"end":{"line":70,"column":11}}]}},"b":{"0":[1],"1":[1],"2":[0],"3":[1],"4":[0]},"fnMap":{"0":{"name":"suffixFormat","decl":{"start":{"line":10,"column":28},"end":{"line":15,"column":2}},"loc":{"start":{"line":10,"column":28},"end":{"line":15,"column":2}},"line":10},"1":{"name":"createProject","decl":{"start":{"line":16,"column":7},"end":{"line":51,"column":1}},"loc":{"start":{"line":16,"column":7},"end":{"line":51,"column":1}},"line":16},"2":{"name":"deleteProject","decl":{"start":{"line":53,"column":7},"end":{"line":73,"column":1}},"loc":{"start":{"line":53,"column":7},"end":{"line":73,"column":1}},"line":53}},"f":{"0":1,"1":1,"2":1}},"/Users/scotttwiname/Projects/subql-main/packages/cli/src/controller/publish-controller.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/cli/src/controller/publish-controller.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":20}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":24}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":8}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":16}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":22}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":18}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":32}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":14}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":23}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":68}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":72}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":64}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":68}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":94}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":60}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":66}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":70}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":41}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":56}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":0}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":33}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":0}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":98}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":38}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":56}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":7}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":60}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":15}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":55}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":3}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":1}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":0}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":35}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":25}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":20}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":33}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":24}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":20}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":33}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":53}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":0}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":20}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":45}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":61}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":44}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":6}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":4}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":0}},"51":{"start":{"line":52,"column":0},"end":{"line":52,"column":57}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":0}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":27}},"54":{"start":{"line":55,"column":0},"end":{"line":55,"column":21}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":39}},"56":{"start":{"line":57,"column":0},"end":{"line":57,"column":3}},"57":{"start":{"line":58,"column":0},"end":{"line":58,"column":0}},"58":{"start":{"line":59,"column":0},"end":{"line":59,"column":42}},"59":{"start":{"line":60,"column":0},"end":{"line":60,"column":44}},"60":{"start":{"line":61,"column":0},"end":{"line":61,"column":51}},"61":{"start":{"line":62,"column":0},"end":{"line":62,"column":0}},"62":{"start":{"line":63,"column":0},"end":{"line":63,"column":42}},"63":{"start":{"line":64,"column":0},"end":{"line":64,"column":0}},"64":{"start":{"line":65,"column":0},"end":{"line":65,"column":30}},"65":{"start":{"line":66,"column":0},"end":{"line":66,"column":36}},"66":{"start":{"line":67,"column":0},"end":{"line":67,"column":33}},"67":{"start":{"line":68,"column":0},"end":{"line":68,"column":35}},"68":{"start":{"line":69,"column":0},"end":{"line":69,"column":35}},"69":{"start":{"line":70,"column":0},"end":{"line":70,"column":32}},"70":{"start":{"line":71,"column":0},"end":{"line":71,"column":31}},"71":{"start":{"line":72,"column":0},"end":{"line":72,"column":34}},"72":{"start":{"line":73,"column":0},"end":{"line":73,"column":37}},"73":{"start":{"line":74,"column":0},"end":{"line":74,"column":6}},"74":{"start":{"line":75,"column":0},"end":{"line":75,"column":0}},"75":{"start":{"line":76,"column":0},"end":{"line":76,"column":24}},"76":{"start":{"line":77,"column":0},"end":{"line":77,"column":51}},"77":{"start":{"line":78,"column":0},"end":{"line":78,"column":11}},"78":{"start":{"line":79,"column":0},"end":{"line":79,"column":48}},"79":{"start":{"line":80,"column":0},"end":{"line":80,"column":45}},"80":{"start":{"line":81,"column":0},"end":{"line":81,"column":19}},"81":{"start":{"line":82,"column":0},"end":{"line":82,"column":48}},"82":{"start":{"line":83,"column":0},"end":{"line":83,"column":7}},"83":{"start":{"line":84,"column":0},"end":{"line":84,"column":5}},"84":{"start":{"line":85,"column":0},"end":{"line":85,"column":0}},"85":{"start":{"line":86,"column":0},"end":{"line":86,"column":28}},"86":{"start":{"line":87,"column":0},"end":{"line":87,"column":58}},"87":{"start":{"line":88,"column":0},"end":{"line":88,"column":5}},"88":{"start":{"line":89,"column":0},"end":{"line":89,"column":0}},"89":{"start":{"line":90,"column":0},"end":{"line":90,"column":67}},"90":{"start":{"line":91,"column":0},"end":{"line":91,"column":102}},"91":{"start":{"line":92,"column":0},"end":{"line":92,"column":0}},"92":{"start":{"line":93,"column":0},"end":{"line":93,"column":42}},"93":{"start":{"line":94,"column":0},"end":{"line":94,"column":19}},"94":{"start":{"line":95,"column":0},"end":{"line":95,"column":63}},"95":{"start":{"line":96,"column":0},"end":{"line":96,"column":35}},"96":{"start":{"line":97,"column":0},"end":{"line":97,"column":7}},"97":{"start":{"line":98,"column":0},"end":{"line":98,"column":3}},"98":{"start":{"line":99,"column":0},"end":{"line":99,"column":0}},"99":{"start":{"line":100,"column":0},"end":{"line":100,"column":30}},"100":{"start":{"line":101,"column":0},"end":{"line":101,"column":59}},"101":{"start":{"line":102,"column":0},"end":{"line":102,"column":19}},"102":{"start":{"line":103,"column":0},"end":{"line":103,"column":77}},"103":{"start":{"line":104,"column":0},"end":{"line":104,"column":34}},"104":{"start":{"line":105,"column":0},"end":{"line":105,"column":7}},"105":{"start":{"line":106,"column":0},"end":{"line":106,"column":3}},"106":{"start":{"line":107,"column":0},"end":{"line":107,"column":0}},"107":{"start":{"line":108,"column":0},"end":{"line":108,"column":18}},"108":{"start":{"line":109,"column":0},"end":{"line":109,"column":85}},"109":{"start":{"line":110,"column":0},"end":{"line":110,"column":1}},"110":{"start":{"line":111,"column":0},"end":{"line":111,"column":0}},"111":{"start":{"line":112,"column":0},"end":{"line":112,"column":99}},"112":{"start":{"line":113,"column":0},"end":{"line":113,"column":40}},"113":{"start":{"line":114,"column":0},"end":{"line":114,"column":21}},"114":{"start":{"line":115,"column":0},"end":{"line":115,"column":11}},"115":{"start":{"line":116,"column":0},"end":{"line":116,"column":20}},"116":{"start":{"line":117,"column":0},"end":{"line":117,"column":23}},"117":{"start":{"line":118,"column":0},"end":{"line":118,"column":15}},"118":{"start":{"line":119,"column":0},"end":{"line":119,"column":29}},"119":{"start":{"line":120,"column":0},"end":{"line":120,"column":30}},"120":{"start":{"line":121,"column":0},"end":{"line":121,"column":81}},"121":{"start":{"line":122,"column":0},"end":{"line":122,"column":23}},"122":{"start":{"line":123,"column":0},"end":{"line":123,"column":59}},"123":{"start":{"line":124,"column":0},"end":{"line":124,"column":31}},"124":{"start":{"line":125,"column":0},"end":{"line":125,"column":38}},"125":{"start":{"line":126,"column":0},"end":{"line":126,"column":5}},"126":{"start":{"line":127,"column":0},"end":{"line":127,"column":33}},"127":{"start":{"line":128,"column":0},"end":{"line":128,"column":60}},"128":{"start":{"line":129,"column":0},"end":{"line":129,"column":76}},"129":{"start":{"line":130,"column":0},"end":{"line":130,"column":105}},"130":{"start":{"line":131,"column":0},"end":{"line":131,"column":32}},"131":{"start":{"line":132,"column":0},"end":{"line":132,"column":8}},"132":{"start":{"line":133,"column":0},"end":{"line":133,"column":5}},"133":{"start":{"line":134,"column":0},"end":{"line":134,"column":101}},"134":{"start":{"line":135,"column":0},"end":{"line":135,"column":22}},"135":{"start":{"line":136,"column":0},"end":{"line":136,"column":31}},"136":{"start":{"line":137,"column":0},"end":{"line":137,"column":27}},"137":{"start":{"line":138,"column":0},"end":{"line":138,"column":90}},"138":{"start":{"line":139,"column":0},"end":{"line":139,"column":8}},"139":{"start":{"line":140,"column":0},"end":{"line":140,"column":6}},"140":{"start":{"line":141,"column":0},"end":{"line":141,"column":3}},"141":{"start":{"line":142,"column":0},"end":{"line":142,"column":0}},"142":{"start":{"line":143,"column":0},"end":{"line":143,"column":15}},"143":{"start":{"line":144,"column":0},"end":{"line":144,"column":1}},"144":{"start":{"line":145,"column":0},"end":{"line":145,"column":0}},"145":{"start":{"line":146,"column":0},"end":{"line":146,"column":67}},"146":{"start":{"line":147,"column":0},"end":{"line":147,"column":0}},"147":{"start":{"line":148,"column":0},"end":{"line":148,"column":34}},"148":{"start":{"line":149,"column":0},"end":{"line":149,"column":46}},"149":{"start":{"line":150,"column":0},"end":{"line":150,"column":20}},"150":{"start":{"line":151,"column":0},"end":{"line":151,"column":25}},"151":{"start":{"line":152,"column":0},"end":{"line":152,"column":23}},"152":{"start":{"line":153,"column":0},"end":{"line":153,"column":33}},"153":{"start":{"line":154,"column":0},"end":{"line":154,"column":52}},"154":{"start":{"line":155,"column":0},"end":{"line":155,"column":0}},"155":{"start":{"line":156,"column":0},"end":{"line":156,"column":13}},"156":{"start":{"line":157,"column":0},"end":{"line":157,"column":9}},"157":{"start":{"line":158,"column":0},"end":{"line":158,"column":79}},"158":{"start":{"line":159,"column":0},"end":{"line":159,"column":0}},"159":{"start":{"line":160,"column":0},"end":{"line":160,"column":43}},"160":{"start":{"line":161,"column":0},"end":{"line":161,"column":59}},"161":{"start":{"line":162,"column":0},"end":{"line":162,"column":7}},"162":{"start":{"line":163,"column":0},"end":{"line":163,"column":17}},"163":{"start":{"line":164,"column":0},"end":{"line":164,"column":79}},"164":{"start":{"line":165,"column":0},"end":{"line":165,"column":5}},"165":{"start":{"line":166,"column":0},"end":{"line":166,"column":3}},"166":{"start":{"line":167,"column":0},"end":{"line":167,"column":0}},"167":{"start":{"line":168,"column":0},"end":{"line":168,"column":28}},"168":{"start":{"line":169,"column":0},"end":{"line":169,"column":29}},"169":{"start":{"line":170,"column":0},"end":{"line":170,"column":52}},"170":{"start":{"line":171,"column":0},"end":{"line":171,"column":5}},"171":{"start":{"line":172,"column":0},"end":{"line":172,"column":0}},"172":{"start":{"line":173,"column":0},"end":{"line":173,"column":7}},"173":{"start":{"line":174,"column":0},"end":{"line":174,"column":108}},"174":{"start":{"line":175,"column":0},"end":{"line":175,"column":41}},"175":{"start":{"line":176,"column":0},"end":{"line":176,"column":57}},"176":{"start":{"line":177,"column":0},"end":{"line":177,"column":0}},"177":{"start":{"line":178,"column":0},"end":{"line":178,"column":87}},"178":{"start":{"line":179,"column":0},"end":{"line":179,"column":21}},"179":{"start":{"line":180,"column":0},"end":{"line":180,"column":114}},"180":{"start":{"line":181,"column":0},"end":{"line":181,"column":10}},"181":{"start":{"line":182,"column":0},"end":{"line":182,"column":9}},"182":{"start":{"line":183,"column":0},"end":{"line":183,"column":5}},"183":{"start":{"line":184,"column":0},"end":{"line":184,"column":15}},"184":{"start":{"line":185,"column":0},"end":{"line":185,"column":63}},"185":{"start":{"line":186,"column":0},"end":{"line":186,"column":3}},"186":{"start":{"line":187,"column":0},"end":{"line":187,"column":0}},"187":{"start":{"line":188,"column":0},"end":{"line":188,"column":20}},"188":{"start":{"line":189,"column":0},"end":{"line":189,"column":1}},"189":{"start":{"line":190,"column":0},"end":{"line":190,"column":0}},"190":{"start":{"line":191,"column":0},"end":{"line":191,"column":33}},"191":{"start":{"line":192,"column":0},"end":{"line":192,"column":44}},"192":{"start":{"line":193,"column":0},"end":{"line":193,"column":20}},"193":{"start":{"line":194,"column":0},"end":{"line":194,"column":23}},"194":{"start":{"line":195,"column":0},"end":{"line":195,"column":20}},"195":{"start":{"line":196,"column":0},"end":{"line":196,"column":35}},"196":{"start":{"line":197,"column":0},"end":{"line":197,"column":38}},"197":{"start":{"line":198,"column":0},"end":{"line":198,"column":3}},"198":{"start":{"line":199,"column":0},"end":{"line":199,"column":0}},"199":{"start":{"line":200,"column":0},"end":{"line":200,"column":40}},"200":{"start":{"line":201,"column":0},"end":{"line":201,"column":13}},"201":{"start":{"line":202,"column":0},"end":{"line":202,"column":27}},"202":{"start":{"line":203,"column":0},"end":{"line":203,"column":56}},"203":{"start":{"line":204,"column":0},"end":{"line":204,"column":46}},"204":{"start":{"line":205,"column":0},"end":{"line":205,"column":21}},"205":{"start":{"line":206,"column":0},"end":{"line":206,"column":67}},"206":{"start":{"line":207,"column":0},"end":{"line":207,"column":9}},"207":{"start":{"line":208,"column":0},"end":{"line":208,"column":3}},"208":{"start":{"line":209,"column":0},"end":{"line":209,"column":0}},"209":{"start":{"line":210,"column":0},"end":{"line":210,"column":28}},"210":{"start":{"line":211,"column":0},"end":{"line":211,"column":29}},"211":{"start":{"line":212,"column":0},"end":{"line":212,"column":52}},"212":{"start":{"line":213,"column":0},"end":{"line":213,"column":5}},"213":{"start":{"line":214,"column":0},"end":{"line":214,"column":0}},"214":{"start":{"line":215,"column":0},"end":{"line":215,"column":30}},"215":{"start":{"line":216,"column":0},"end":{"line":216,"column":54}},"216":{"start":{"line":217,"column":0},"end":{"line":217,"column":33}},"217":{"start":{"line":218,"column":0},"end":{"line":218,"column":26}},"218":{"start":{"line":219,"column":0},"end":{"line":219,"column":11}},"219":{"start":{"line":220,"column":0},"end":{"line":220,"column":68}},"220":{"start":{"line":221,"column":0},"end":{"line":221,"column":30}},"221":{"start":{"line":222,"column":0},"end":{"line":222,"column":19}},"222":{"start":{"line":223,"column":0},"end":{"line":223,"column":21}},"223":{"start":{"line":224,"column":0},"end":{"line":224,"column":116}},"224":{"start":{"line":225,"column":0},"end":{"line":225,"column":10}},"225":{"start":{"line":226,"column":0},"end":{"line":226,"column":30}},"226":{"start":{"line":227,"column":0},"end":{"line":227,"column":7}},"227":{"start":{"line":228,"column":0},"end":{"line":228,"column":6}},"228":{"start":{"line":229,"column":0},"end":{"line":229,"column":19}},"229":{"start":{"line":230,"column":0},"end":{"line":230,"column":65}},"230":{"start":{"line":231,"column":0},"end":{"line":231,"column":7}},"231":{"start":{"line":232,"column":0},"end":{"line":232,"column":0}},"232":{"start":{"line":233,"column":0},"end":{"line":233,"column":41}},"233":{"start":{"line":234,"column":0},"end":{"line":234,"column":0}},"234":{"start":{"line":235,"column":0},"end":{"line":235,"column":77}},"235":{"start":{"line":236,"column":0},"end":{"line":236,"column":0}},"236":{"start":{"line":237,"column":0},"end":{"line":237,"column":39}},"237":{"start":{"line":238,"column":0},"end":{"line":238,"column":70}},"238":{"start":{"line":239,"column":0},"end":{"line":239,"column":46}},"239":{"start":{"line":240,"column":0},"end":{"line":240,"column":3}},"240":{"start":{"line":241,"column":0},"end":{"line":241,"column":0}},"241":{"start":{"line":242,"column":0},"end":{"line":242,"column":13}},"242":{"start":{"line":243,"column":0},"end":{"line":243,"column":1}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":5,"27":5,"28":5,"29":5,"30":5,"31":0,"32":0,"33":5,"34":1,"35":1,"36":9,"37":9,"38":9,"39":9,"40":9,"41":9,"42":9,"43":9,"44":9,"45":9,"46":9,"47":7,"48":9,"49":9,"50":7,"51":7,"52":7,"53":7,"54":9,"55":0,"56":0,"57":7,"58":7,"59":7,"60":7,"61":7,"62":7,"63":7,"64":7,"65":7,"66":7,"67":7,"68":7,"69":7,"70":7,"71":7,"72":7,"73":7,"74":7,"75":7,"76":7,"77":7,"78":7,"79":7,"80":7,"81":0,"82":0,"83":7,"84":7,"85":7,"86":0,"87":0,"88":7,"89":7,"90":7,"91":5,"92":5,"93":5,"94":7,"95":7,"96":7,"97":7,"98":5,"99":9,"100":0,"101":0,"102":0,"103":0,"104":0,"105":0,"106":5,"107":5,"108":5,"109":5,"110":1,"111":1,"112":164,"113":164,"114":164,"115":164,"116":164,"117":164,"118":164,"119":12,"120":12,"121":12,"122":164,"123":66,"124":0,"125":0,"126":66,"127":14,"128":14,"129":14,"130":14,"131":14,"132":10,"133":62,"134":62,"135":62,"136":145,"137":145,"138":62,"139":62,"140":58,"141":144,"142":144,"143":144,"144":1,"145":1,"146":1,"147":1,"148":5,"149":5,"150":5,"151":5,"152":5,"153":5,"154":5,"155":5,"156":0,"157":0,"158":0,"159":0,"160":0,"161":0,"162":0,"163":0,"164":0,"165":0,"166":5,"167":5,"168":5,"169":5,"170":5,"171":5,"172":5,"173":5,"174":5,"175":5,"176":5,"177":5,"178":0,"179":0,"180":0,"181":5,"182":5,"183":5,"184":0,"185":0,"186":5,"187":5,"188":5,"189":1,"190":1,"191":16,"192":16,"193":16,"194":16,"195":16,"196":0,"197":0,"198":16,"199":16,"200":16,"201":0,"202":0,"203":0,"204":0,"205":0,"206":0,"207":0,"208":16,"209":16,"210":16,"211":16,"212":16,"213":16,"214":16,"215":16,"216":16,"217":16,"218":10,"219":10,"220":10,"221":10,"222":0,"223":0,"224":0,"225":0,"226":0,"227":16,"228":16,"229":6,"230":16,"231":16,"232":16,"233":16,"234":16,"235":10,"236":16,"237":0,"238":0,"239":0,"240":10,"241":10,"242":10},"branchMap":{"0":{"type":"branch","line":26,"loc":{"start":{"line":26,"column":7},"end":{"line":34,"column":1}},"locations":[{"start":{"line":26,"column":7},"end":{"line":34,"column":1}}]},"1":{"type":"branch","line":31,"loc":{"start":{"line":31,"column":4},"end":{"line":33,"column":3}},"locations":[{"start":{"line":31,"column":4},"end":{"line":33,"column":3}}]},"2":{"type":"branch","line":36,"loc":{"start":{"line":36,"column":7},"end":{"line":110,"column":1}},"locations":[{"start":{"line":36,"column":7},"end":{"line":110,"column":1}}]},"3":{"type":"branch","line":51,"loc":{"start":{"line":51,"column":-1},"end":{"line":55,"column":20}},"locations":[{"start":{"line":51,"column":-1},"end":{"line":55,"column":20}}]},"4":{"type":"branch","line":55,"loc":{"start":{"line":55,"column":20},"end":{"line":57,"column":3}},"locations":[{"start":{"line":55,"column":20},"end":{"line":57,"column":3}}]},"5":{"type":"branch","line":58,"loc":{"start":{"line":58,"column":-1},"end":{"line":98,"column":3}},"locations":[{"start":{"line":58,"column":-1},"end":{"line":98,"column":3}}]},"6":{"type":"branch","line":81,"loc":{"start":{"line":81,"column":8},"end":{"line":83,"column":7}},"locations":[{"start":{"line":81,"column":8},"end":{"line":83,"column":7}}]},"7":{"type":"branch","line":86,"loc":{"start":{"line":86,"column":27},"end":{"line":88,"column":5}},"locations":[{"start":{"line":86,"column":27},"end":{"line":88,"column":5}}]},"8":{"type":"branch","line":92,"loc":{"start":{"line":92,"column":-1},"end":{"line":95,"column":37}},"locations":[{"start":{"line":92,"column":-1},"end":{"line":95,"column":37}}]},"9":{"type":"branch","line":99,"loc":{"start":{"line":99,"column":-1},"end":{"line":100,"column":29}},"locations":[{"start":{"line":99,"column":-1},"end":{"line":100,"column":29}}]},"10":{"type":"branch","line":100,"loc":{"start":{"line":100,"column":29},"end":{"line":106,"column":3}},"locations":[{"start":{"line":100,"column":29},"end":{"line":106,"column":3}}]},"11":{"type":"branch","line":107,"loc":{"start":{"line":107,"column":-1},"end":{"line":110,"column":1}},"locations":[{"start":{"line":107,"column":-1},"end":{"line":110,"column":1}}]},"12":{"type":"branch","line":46,"loc":{"start":{"line":46,"column":21},"end":{"line":49,"column":5}},"locations":[{"start":{"line":46,"column":21},"end":{"line":49,"column":5}}]},"13":{"type":"branch","line":48,"loc":{"start":{"line":48,"column":-1},"end":{"line":49,"column":5}},"locations":[{"start":{"line":48,"column":-1},"end":{"line":49,"column":5}}]},"14":{"type":"branch","line":113,"loc":{"start":{"line":113,"column":0},"end":{"line":144,"column":1}},"locations":[{"start":{"line":113,"column":0},"end":{"line":144,"column":1}}]},"15":{"type":"branch","line":119,"loc":{"start":{"line":119,"column":28},"end":{"line":123,"column":9}},"locations":[{"start":{"line":119,"column":28},"end":{"line":123,"column":9}}]},"16":{"type":"branch","line":122,"loc":{"start":{"line":122,"column":5},"end":{"line":123,"column":9}},"locations":[{"start":{"line":122,"column":5},"end":{"line":123,"column":9}}]},"17":{"type":"branch","line":123,"loc":{"start":{"line":123,"column":3},"end":{"line":141,"column":3}},"locations":[{"start":{"line":123,"column":3},"end":{"line":141,"column":3}}]},"18":{"type":"branch","line":123,"loc":{"start":{"line":123,"column":38},"end":{"line":123,"column":56}},"locations":[{"start":{"line":123,"column":38},"end":{"line":123,"column":56}}]},"19":{"type":"branch","line":123,"loc":{"start":{"line":123,"column":58},"end":{"line":141,"column":3}},"locations":[{"start":{"line":123,"column":58},"end":{"line":141,"column":3}}]},"20":{"type":"branch","line":124,"loc":{"start":{"line":124,"column":30},"end":{"line":126,"column":5}},"locations":[{"start":{"line":124,"column":30},"end":{"line":126,"column":5}}]},"21":{"type":"branch","line":127,"loc":{"start":{"line":127,"column":32},"end":{"line":133,"column":5}},"locations":[{"start":{"line":127,"column":32},"end":{"line":133,"column":5}}]},"22":{"type":"branch","line":133,"loc":{"start":{"line":133,"column":-1},"end":{"line":133,"column":5}},"locations":[{"start":{"line":133,"column":-1},"end":{"line":133,"column":5}}]},"23":{"type":"branch","line":134,"loc":{"start":{"line":134,"column":-1},"end":{"line":140,"column":6}},"locations":[{"start":{"line":134,"column":-1},"end":{"line":140,"column":6}}]},"24":{"type":"branch","line":141,"loc":{"start":{"line":141,"column":-1},"end":{"line":141,"column":3}},"locations":[{"start":{"line":141,"column":-1},"end":{"line":141,"column":3}}]},"25":{"type":"branch","line":142,"loc":{"start":{"line":142,"column":-1},"end":{"line":144,"column":1}},"locations":[{"start":{"line":142,"column":-1},"end":{"line":144,"column":1}}]},"26":{"type":"branch","line":121,"loc":{"start":{"line":121,"column":16},"end":{"line":121,"column":80}},"locations":[{"start":{"line":121,"column":16},"end":{"line":121,"column":80}}]},"27":{"type":"branch","line":131,"loc":{"start":{"line":131,"column":8},"end":{"line":131,"column":32}},"locations":[{"start":{"line":131,"column":8},"end":{"line":131,"column":32}}]},"28":{"type":"branch","line":134,"loc":{"start":{"line":134,"column":43},"end":{"line":134,"column":73}},"locations":[{"start":{"line":134,"column":43},"end":{"line":134,"column":73}}]},"29":{"type":"branch","line":136,"loc":{"start":{"line":136,"column":15},"end":{"line":139,"column":7}},"locations":[{"start":{"line":136,"column":15},"end":{"line":139,"column":7}}]},"30":{"type":"branch","line":139,"loc":{"start":{"line":139,"column":-1},"end":{"line":139,"column":7}},"locations":[{"start":{"line":139,"column":-1},"end":{"line":139,"column":7}}]},"31":{"type":"branch","line":148,"loc":{"start":{"line":148,"column":7},"end":{"line":189,"column":1}},"locations":[{"start":{"line":148,"column":7},"end":{"line":189,"column":1}}]},"32":{"type":"branch","line":156,"loc":{"start":{"line":156,"column":12},"end":{"line":166,"column":3}},"locations":[{"start":{"line":156,"column":12},"end":{"line":166,"column":3}}]},"33":{"type":"branch","line":184,"loc":{"start":{"line":184,"column":4},"end":{"line":186,"column":3}},"locations":[{"start":{"line":184,"column":4},"end":{"line":186,"column":3}}]},"34":{"type":"branch","line":191,"loc":{"start":{"line":191,"column":7},"end":{"line":243,"column":1}},"locations":[{"start":{"line":191,"column":7},"end":{"line":243,"column":1}}]},"35":{"type":"branch","line":196,"loc":{"start":{"line":196,"column":34},"end":{"line":198,"column":3}},"locations":[{"start":{"line":196,"column":34},"end":{"line":198,"column":3}}]},"36":{"type":"branch","line":201,"loc":{"start":{"line":201,"column":12},"end":{"line":208,"column":3}},"locations":[{"start":{"line":201,"column":12},"end":{"line":208,"column":3}}]},"37":{"type":"branch","line":236,"loc":{"start":{"line":236,"column":-1},"end":{"line":237,"column":19}},"locations":[{"start":{"line":236,"column":-1},"end":{"line":237,"column":19}}]},"38":{"type":"branch","line":237,"loc":{"start":{"line":237,"column":15},"end":{"line":237,"column":36}},"locations":[{"start":{"line":237,"column":15},"end":{"line":237,"column":36}}]},"39":{"type":"branch","line":237,"loc":{"start":{"line":237,"column":38},"end":{"line":240,"column":3}},"locations":[{"start":{"line":237,"column":38},"end":{"line":240,"column":3}}]},"40":{"type":"branch","line":241,"loc":{"start":{"line":241,"column":-1},"end":{"line":243,"column":1}},"locations":[{"start":{"line":241,"column":-1},"end":{"line":243,"column":1}}]},"41":{"type":"branch","line":217,"loc":{"start":{"line":217,"column":10},"end":{"line":217,"column":32}},"locations":[{"start":{"line":217,"column":10},"end":{"line":217,"column":32}}]},"42":{"type":"branch","line":218,"loc":{"start":{"line":218,"column":10},"end":{"line":228,"column":5}},"locations":[{"start":{"line":218,"column":10},"end":{"line":228,"column":5}}]},"43":{"type":"branch","line":222,"loc":{"start":{"line":222,"column":8},"end":{"line":227,"column":7}},"locations":[{"start":{"line":222,"column":8},"end":{"line":227,"column":7}}]},"44":{"type":"branch","line":229,"loc":{"start":{"line":229,"column":11},"end":{"line":231,"column":5}},"locations":[{"start":{"line":229,"column":11},"end":{"line":231,"column":5}}]}},"b":{"0":[5],"1":[0],"2":[9],"3":[7],"4":[0],"5":[7],"6":[0],"7":[0],"8":[5],"9":[5],"10":[0],"11":[5],"12":[9],"13":[7],"14":[164],"15":[12],"16":[10],"17":[152],"18":[66],"19":[66],"20":[0],"21":[14],"22":[10],"23":[62],"24":[58],"25":[144],"26":[12],"27":[10],"28":[145],"29":[145],"30":[139],"31":[5],"32":[0],"33":[0],"34":[16],"35":[0],"36":[0],"37":[10],"38":[0],"39":[0],"40":[10],"41":[10],"42":[10],"43":[0],"44":[6]},"fnMap":{"0":{"name":"createIPFSFile","decl":{"start":{"line":26,"column":7},"end":{"line":34,"column":1}},"loc":{"start":{"line":26,"column":7},"end":{"line":34,"column":1}},"line":26},"1":{"name":"uploadToIpfs","decl":{"start":{"line":36,"column":7},"end":{"line":110,"column":1}},"loc":{"start":{"line":36,"column":7},"end":{"line":110,"column":1}},"line":36},"2":{"name":"replaceFileReferences","decl":{"start":{"line":113,"column":0},"end":{"line":144,"column":1}},"loc":{"start":{"line":113,"column":0},"end":{"line":144,"column":1}},"line":113},"3":{"name":"uploadFiles","decl":{"start":{"line":148,"column":7},"end":{"line":189,"column":1}},"loc":{"start":{"line":148,"column":7},"end":{"line":189,"column":1}},"line":148},"4":{"name":"uploadFile","decl":{"start":{"line":191,"column":7},"end":{"line":243,"column":1}},"loc":{"start":{"line":191,"column":7},"end":{"line":243,"column":1}},"line":191}},"f":{"0":5,"1":9,"2":164,"3":5,"4":16}},"/Users/scotttwiname/Projects/subql-main/packages/cli/src/index.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/cli/src/index.ts","all":true,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":32}}},"s":{"0":0,"1":0,"2":0,"3":0},"branchMap":{"0":{"type":"branch","line":1,"loc":{"start":{"line":1,"column":0},"end":{"line":4,"column":32}},"locations":[{"start":{"line":1,"column":0},"end":{"line":4,"column":32}}]}},"b":{"0":[0]},"fnMap":{"0":{"name":"(empty-report)","decl":{"start":{"line":1,"column":0},"end":{"line":4,"column":32}},"loc":{"start":{"line":1,"column":0},"end":{"line":4,"column":32}},"line":1}},"f":{"0":0}},"/Users/scotttwiname/Projects/subql-main/packages/cli/src/jsonrpc/client/http.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/cli/src/jsonrpc/client/http.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":43}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":86}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":0}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":21}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":0}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":11}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":32}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":33}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":28}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":31}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":19}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":23}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":7}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":3}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":0}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":89}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":56}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":21}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":15}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":13}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":13}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":7}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":44}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":46}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":5}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":51}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":3}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":1}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":0,"27":0,"28":1,"29":1,"30":1},"branchMap":{"0":{"type":"branch","line":12,"loc":{"start":{"line":12,"column":2},"end":{"line":17,"column":3}},"locations":[{"start":{"line":12,"column":2},"end":{"line":17,"column":3}}]},"1":{"type":"branch","line":19,"loc":{"start":{"line":19,"column":2},"end":{"line":30,"column":3}},"locations":[{"start":{"line":19,"column":2},"end":{"line":30,"column":3}}]},"2":{"type":"branch","line":26,"loc":{"start":{"line":26,"column":43},"end":{"line":28,"column":5}},"locations":[{"start":{"line":26,"column":43},"end":{"line":28,"column":5}}]}},"b":{"0":[1],"1":[1],"2":[0]},"fnMap":{"0":{"name":"HttpJsonRpcClient","decl":{"start":{"line":12,"column":2},"end":{"line":17,"column":3}},"loc":{"start":{"line":12,"column":2},"end":{"line":17,"column":3}},"line":12},"1":{"name":"send","decl":{"start":{"line":19,"column":2},"end":{"line":30,"column":3}},"loc":{"start":{"line":19,"column":2},"end":{"line":30,"column":3}},"line":19}},"f":{"0":1,"1":1}},"/Users/scotttwiname/Projects/subql-main/packages/cli/src/jsonrpc/client/index.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/cli/src/jsonrpc/client/index.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":23}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":21}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1},"branchMap":{},"b":{},"fnMap":{},"f":{}},"/Users/scotttwiname/Projects/subql-main/packages/cli/src/jsonrpc/client/types.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/cli/src/jsonrpc/client/types.ts","all":true,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":29}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":17}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":17}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":13}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":1}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":0}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":54}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":22}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":1}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":0}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":47}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":0}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":65}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":29}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":12}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":1}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":0}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":76}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":0}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":32}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":29}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":10}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":17}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":20}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":15}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":4}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":1}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":0}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":89}}},"s":{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0},"branchMap":{"0":{"type":"branch","line":1,"loc":{"start":{"line":1,"column":0},"end":{"line":32,"column":89}},"locations":[{"start":{"line":1,"column":0},"end":{"line":32,"column":89}}]}},"b":{"0":[0]},"fnMap":{"0":{"name":"(empty-report)","decl":{"start":{"line":1,"column":0},"end":{"line":32,"column":89}},"loc":{"start":{"line":1,"column":0},"end":{"line":32,"column":89}},"line":1}},"f":{"0":0}},"/Users/scotttwiname/Projects/subql-main/packages/cli/src/jsonrpc/client/ws.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/cli/src/jsonrpc/client/ws.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":65}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":53}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":0}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":11}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":30}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":100}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":44}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":25}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":39}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":21}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":15}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":3}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":0}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":36}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":27}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":32}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":0}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":42}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":0}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":42}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":23}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":19}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":3}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":0}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":19}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":9}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":45}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":0}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":47}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":46}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":9}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":0}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":44}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":48}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":21}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":27}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":5}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":3}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":0}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":89}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":23}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":68}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":39}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":48}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":48}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":7}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":3}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":0}},"51":{"start":{"line":52,"column":0},"end":{"line":52,"column":19}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":28}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":21}},"54":{"start":{"line":55,"column":0},"end":{"line":55,"column":3}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":0}},"56":{"start":{"line":57,"column":0},"end":{"line":57,"column":57}},"57":{"start":{"line":58,"column":0},"end":{"line":58,"column":33}},"58":{"start":{"line":59,"column":0},"end":{"line":59,"column":0}},"59":{"start":{"line":60,"column":0},"end":{"line":60,"column":103}},"60":{"start":{"line":61,"column":0},"end":{"line":61,"column":28}},"61":{"start":{"line":62,"column":0},"end":{"line":62,"column":21}},"62":{"start":{"line":63,"column":0},"end":{"line":63,"column":13}},"63":{"start":{"line":64,"column":0},"end":{"line":64,"column":4}},"64":{"start":{"line":65,"column":0},"end":{"line":65,"column":0}},"65":{"start":{"line":66,"column":0},"end":{"line":66,"column":66}},"66":{"start":{"line":67,"column":0},"end":{"line":67,"column":9}},"67":{"start":{"line":68,"column":0},"end":{"line":68,"column":47}},"68":{"start":{"line":69,"column":0},"end":{"line":69,"column":80}},"69":{"start":{"line":70,"column":0},"end":{"line":70,"column":57}},"70":{"start":{"line":71,"column":0},"end":{"line":71,"column":38}},"71":{"start":{"line":72,"column":0},"end":{"line":72,"column":25}},"72":{"start":{"line":73,"column":0},"end":{"line":73,"column":29}},"73":{"start":{"line":74,"column":0},"end":{"line":74,"column":16}},"74":{"start":{"line":75,"column":0},"end":{"line":75,"column":31}},"75":{"start":{"line":76,"column":0},"end":{"line":76,"column":9}},"76":{"start":{"line":77,"column":0},"end":{"line":77,"column":7}},"77":{"start":{"line":78,"column":0},"end":{"line":78,"column":17}},"78":{"start":{"line":79,"column":0},"end":{"line":79,"column":23}},"79":{"start":{"line":80,"column":0},"end":{"line":80,"column":5}},"80":{"start":{"line":81,"column":0},"end":{"line":81,"column":4}},"81":{"start":{"line":82,"column":0},"end":{"line":82,"column":1}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"38":0,"39":0,"40":1,"41":1,"42":1,"43":1,"44":1,"45":1,"46":1,"47":1,"48":1,"49":1,"50":1,"51":1,"52":1,"53":1,"54":1,"55":1,"56":1,"57":1,"58":0,"59":0,"60":0,"61":0,"62":0,"63":1,"64":1,"65":1,"66":1,"67":1,"68":1,"69":1,"70":1,"71":1,"72":0,"73":1,"74":1,"75":1,"76":1,"77":1,"78":0,"79":0,"80":1,"81":1},"branchMap":{"0":{"type":"branch","line":23,"loc":{"start":{"line":23,"column":2},"end":{"line":26,"column":3}},"locations":[{"start":{"line":23,"column":2},"end":{"line":26,"column":3}}]},"1":{"type":"branch","line":57,"loc":{"start":{"line":57,"column":26},"end":{"line":64,"column":3}},"locations":[{"start":{"line":57,"column":26},"end":{"line":64,"column":3}}]},"2":{"type":"branch","line":59,"loc":{"start":{"line":59,"column":-1},"end":{"line":64,"column":3}},"locations":[{"start":{"line":59,"column":-1},"end":{"line":64,"column":3}}]},"3":{"type":"branch","line":66,"loc":{"start":{"line":66,"column":28},"end":{"line":81,"column":3}},"locations":[{"start":{"line":66,"column":28},"end":{"line":81,"column":3}}]},"4":{"type":"branch","line":72,"loc":{"start":{"line":72,"column":24},"end":{"line":74,"column":15}},"locations":[{"start":{"line":72,"column":24},"end":{"line":74,"column":15}}]},"5":{"type":"branch","line":78,"loc":{"start":{"line":78,"column":6},"end":{"line":80,"column":5}},"locations":[{"start":{"line":78,"column":6},"end":{"line":80,"column":5}}]},"6":{"type":"branch","line":28,"loc":{"start":{"line":28,"column":2},"end":{"line":41,"column":3}},"locations":[{"start":{"line":28,"column":2},"end":{"line":41,"column":3}}]},"7":{"type":"branch","line":38,"loc":{"start":{"line":38,"column":6},"end":{"line":40,"column":5}},"locations":[{"start":{"line":38,"column":6},"end":{"line":40,"column":5}}]},"8":{"type":"branch","line":32,"loc":{"start":{"line":32,"column":33},"end":{"line":34,"column":7}},"locations":[{"start":{"line":32,"column":33},"end":{"line":34,"column":7}}]},"9":{"type":"branch","line":33,"loc":{"start":{"line":33,"column":26},"end":{"line":33,"column":45}},"locations":[{"start":{"line":33,"column":26},"end":{"line":33,"column":45}}]},"10":{"type":"branch","line":43,"loc":{"start":{"line":43,"column":2},"end":{"line":50,"column":3}},"locations":[{"start":{"line":43,"column":2},"end":{"line":50,"column":3}}]},"11":{"type":"branch","line":47,"loc":{"start":{"line":47,"column":26},"end":{"line":49,"column":5}},"locations":[{"start":{"line":47,"column":26},"end":{"line":49,"column":5}}]},"12":{"type":"branch","line":52,"loc":{"start":{"line":52,"column":2},"end":{"line":55,"column":3}},"locations":[{"start":{"line":52,"column":2},"end":{"line":55,"column":3}}]}},"b":{"0":[1],"1":[1],"2":[0],"3":[1],"4":[0],"5":[0],"6":[1],"7":[0],"8":[1],"9":[1],"10":[1],"11":[1],"12":[1]},"fnMap":{"0":{"name":"with","decl":{"start":{"line":9,"column":9},"end":{"line":15,"column":3}},"loc":{"start":{"line":9,"column":9},"end":{"line":15,"column":3}},"line":9},"1":{"name":"WsJsonRpcClient","decl":{"start":{"line":23,"column":2},"end":{"line":26,"column":3}},"loc":{"start":{"line":23,"column":2},"end":{"line":26,"column":3}},"line":23},"2":{"name":"WsJsonRpcClient.onSocketClose","decl":{"start":{"line":57,"column":26},"end":{"line":64,"column":3}},"loc":{"start":{"line":57,"column":26},"end":{"line":64,"column":3}},"line":57},"3":{"name":"WsJsonRpcClient.onSocketMessage","decl":{"start":{"line":66,"column":28},"end":{"line":81,"column":3}},"loc":{"start":{"line":66,"column":28},"end":{"line":81,"column":3}},"line":66},"4":{"name":"connect","decl":{"start":{"line":28,"column":2},"end":{"line":41,"column":3}},"loc":{"start":{"line":28,"column":2},"end":{"line":41,"column":3}},"line":28},"5":{"name":"_ws.onopen","decl":{"start":{"line":33,"column":26},"end":{"line":33,"column":45}},"loc":{"start":{"line":33,"column":26},"end":{"line":33,"column":45}},"line":33},"6":{"name":"send","decl":{"start":{"line":43,"column":2},"end":{"line":50,"column":3}},"loc":{"start":{"line":43,"column":2},"end":{"line":50,"column":3}},"line":43},"7":{"name":"destroy","decl":{"start":{"line":52,"column":2},"end":{"line":55,"column":3}},"loc":{"start":{"line":52,"column":2},"end":{"line":55,"column":3}},"line":52}},"f":{"0":0,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1}},"/Users/scotttwiname/Projects/subql-main/packages/cli/src/jsonrpc/index.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/cli/src/jsonrpc/index.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":60}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":0}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":73}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":109}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":76}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":42}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":22}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":1}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":2,"7":2,"8":2,"9":2,"10":2},"branchMap":{"0":{"type":"branch","line":6,"loc":{"start":{"line":6,"column":7},"end":{"line":11,"column":1}},"locations":[{"start":{"line":6,"column":7},"end":{"line":11,"column":1}}]},"1":{"type":"branch","line":7,"loc":{"start":{"line":7,"column":43},"end":{"line":7,"column":74}},"locations":[{"start":{"line":7,"column":43},"end":{"line":7,"column":74}}]},"2":{"type":"branch","line":7,"loc":{"start":{"line":7,"column":75},"end":{"line":7,"column":108}},"locations":[{"start":{"line":7,"column":75},"end":{"line":7,"column":108}}]},"3":{"type":"branch","line":9,"loc":{"start":{"line":9,"column":37},"end":{"line":9,"column":41}},"locations":[{"start":{"line":9,"column":37},"end":{"line":9,"column":41}}]}},"b":{"0":[2],"1":[1],"2":[1],"3":[1]},"fnMap":{"0":{"name":"getGenesisHash","decl":{"start":{"line":6,"column":7},"end":{"line":11,"column":1}},"loc":{"start":{"line":6,"column":7},"end":{"line":11,"column":1}},"line":6}},"f":{"0":2}},"/Users/scotttwiname/Projects/subql-main/packages/cli/src/types.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/cli/src/types.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":46}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":0}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":34}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":15}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":17}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":23}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":30}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":1}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":0}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":36}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":19}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":25}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":24}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":25}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":22}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":1}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":38}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":19}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":21}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":25}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":27}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":30}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":25}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":31}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":35}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":1}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":0}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":48}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":0}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":60}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":18}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":22}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":1}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":0}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":60}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":22}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":1}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":0}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":101}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":43}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":1}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":0}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":101}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":58}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":1}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":0}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":101}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":54}},"51":{"start":{"line":52,"column":0},"end":{"line":52,"column":1}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":0}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":35}},"54":{"start":{"line":55,"column":0},"end":{"line":55,"column":17}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":30}},"56":{"start":{"line":57,"column":0},"end":{"line":57,"column":25}},"57":{"start":{"line":58,"column":0},"end":{"line":58,"column":30}},"58":{"start":{"line":59,"column":0},"end":{"line":59,"column":38}},"59":{"start":{"line":60,"column":0},"end":{"line":60,"column":24}},"60":{"start":{"line":61,"column":0},"end":{"line":61,"column":1}},"61":{"start":{"line":62,"column":0},"end":{"line":62,"column":0}},"62":{"start":{"line":63,"column":0},"end":{"line":63,"column":33}},"63":{"start":{"line":64,"column":0},"end":{"line":64,"column":14}},"64":{"start":{"line":65,"column":0},"end":{"line":65,"column":22}},"65":{"start":{"line":66,"column":0},"end":{"line":66,"column":21}},"66":{"start":{"line":67,"column":0},"end":{"line":67,"column":15}},"67":{"start":{"line":68,"column":0},"end":{"line":68,"column":19}},"68":{"start":{"line":69,"column":0},"end":{"line":69,"column":22}},"69":{"start":{"line":70,"column":0},"end":{"line":70,"column":18}},"70":{"start":{"line":71,"column":0},"end":{"line":71,"column":21}},"71":{"start":{"line":72,"column":0},"end":{"line":72,"column":15}},"72":{"start":{"line":73,"column":0},"end":{"line":73,"column":1}},"73":{"start":{"line":74,"column":0},"end":{"line":74,"column":37}},"74":{"start":{"line":75,"column":0},"end":{"line":75,"column":21}},"75":{"start":{"line":76,"column":0},"end":{"line":76,"column":18}},"76":{"start":{"line":77,"column":0},"end":{"line":77,"column":17}},"77":{"start":{"line":78,"column":0},"end":{"line":78,"column":23}},"78":{"start":{"line":79,"column":0},"end":{"line":79,"column":21}},"79":{"start":{"line":80,"column":0},"end":{"line":80,"column":19}},"80":{"start":{"line":81,"column":0},"end":{"line":81,"column":23}},"81":{"start":{"line":82,"column":0},"end":{"line":82,"column":15}},"82":{"start":{"line":83,"column":0},"end":{"line":83,"column":20}},"83":{"start":{"line":84,"column":0},"end":{"line":84,"column":20}},"84":{"start":{"line":85,"column":0},"end":{"line":85,"column":13}},"85":{"start":{"line":86,"column":0},"end":{"line":86,"column":20}},"86":{"start":{"line":87,"column":0},"end":{"line":87,"column":19}},"87":{"start":{"line":88,"column":0},"end":{"line":88,"column":18}},"88":{"start":{"line":89,"column":0},"end":{"line":89,"column":13}},"89":{"start":{"line":90,"column":0},"end":{"line":90,"column":37}},"90":{"start":{"line":91,"column":0},"end":{"line":91,"column":35}},"91":{"start":{"line":92,"column":0},"end":{"line":92,"column":19}},"92":{"start":{"line":93,"column":0},"end":{"line":93,"column":22}},"93":{"start":{"line":94,"column":0},"end":{"line":94,"column":6}},"94":{"start":{"line":95,"column":0},"end":{"line":95,"column":4}},"95":{"start":{"line":96,"column":0},"end":{"line":96,"column":1}},"96":{"start":{"line":97,"column":0},"end":{"line":97,"column":0}},"97":{"start":{"line":98,"column":0},"end":{"line":98,"column":34}},"98":{"start":{"line":99,"column":0},"end":{"line":99,"column":20}},"99":{"start":{"line":100,"column":0},"end":{"line":100,"column":20}},"100":{"start":{"line":101,"column":0},"end":{"line":101,"column":13}},"101":{"start":{"line":102,"column":0},"end":{"line":102,"column":21}},"102":{"start":{"line":103,"column":0},"end":{"line":103,"column":18}},"103":{"start":{"line":104,"column":0},"end":{"line":104,"column":17}},"104":{"start":{"line":105,"column":0},"end":{"line":105,"column":18}},"105":{"start":{"line":106,"column":0},"end":{"line":106,"column":23}},"106":{"start":{"line":107,"column":0},"end":{"line":107,"column":21}},"107":{"start":{"line":108,"column":0},"end":{"line":108,"column":20}},"108":{"start":{"line":109,"column":0},"end":{"line":109,"column":19}},"109":{"start":{"line":110,"column":0},"end":{"line":110,"column":23}},"110":{"start":{"line":111,"column":0},"end":{"line":111,"column":15}},"111":{"start":{"line":112,"column":0},"end":{"line":112,"column":19}},"112":{"start":{"line":113,"column":0},"end":{"line":113,"column":18}},"113":{"start":{"line":114,"column":0},"end":{"line":114,"column":13}},"114":{"start":{"line":115,"column":0},"end":{"line":115,"column":16}},"115":{"start":{"line":116,"column":0},"end":{"line":116,"column":18}},"116":{"start":{"line":117,"column":0},"end":{"line":117,"column":6}},"117":{"start":{"line":118,"column":0},"end":{"line":118,"column":4}},"118":{"start":{"line":119,"column":0},"end":{"line":119,"column":15}},"119":{"start":{"line":120,"column":0},"end":{"line":120,"column":18}},"120":{"start":{"line":121,"column":0},"end":{"line":121,"column":21}},"121":{"start":{"line":122,"column":0},"end":{"line":122,"column":1}},"122":{"start":{"line":123,"column":0},"end":{"line":123,"column":0}},"123":{"start":{"line":124,"column":0},"end":{"line":124,"column":36}},"124":{"start":{"line":125,"column":0},"end":{"line":125,"column":14}},"125":{"start":{"line":126,"column":0},"end":{"line":126,"column":28}},"126":{"start":{"line":127,"column":0},"end":{"line":127,"column":28}},"127":{"start":{"line":128,"column":0},"end":{"line":128,"column":26}},"128":{"start":{"line":129,"column":0},"end":{"line":129,"column":29}},"129":{"start":{"line":130,"column":0},"end":{"line":130,"column":4}},"130":{"start":{"line":131,"column":0},"end":{"line":131,"column":36}},"131":{"start":{"line":132,"column":0},"end":{"line":132,"column":1}},"132":{"start":{"line":133,"column":0},"end":{"line":133,"column":0}},"133":{"start":{"line":134,"column":0},"end":{"line":134,"column":42}},"134":{"start":{"line":135,"column":0},"end":{"line":135,"column":14}},"135":{"start":{"line":136,"column":0},"end":{"line":136,"column":23}},"136":{"start":{"line":137,"column":0},"end":{"line":137,"column":30}},"137":{"start":{"line":138,"column":0},"end":{"line":138,"column":30}},"138":{"start":{"line":139,"column":0},"end":{"line":139,"column":28}},"139":{"start":{"line":140,"column":0},"end":{"line":140,"column":33}},"140":{"start":{"line":141,"column":0},"end":{"line":141,"column":4}},"141":{"start":{"line":142,"column":0},"end":{"line":142,"column":17}},"142":{"start":{"line":143,"column":0},"end":{"line":143,"column":15}},"143":{"start":{"line":144,"column":0},"end":{"line":144,"column":19}},"144":{"start":{"line":145,"column":0},"end":{"line":145,"column":6}},"145":{"start":{"line":146,"column":0},"end":{"line":146,"column":4}},"146":{"start":{"line":147,"column":0},"end":{"line":147,"column":1}},"147":{"start":{"line":148,"column":0},"end":{"line":148,"column":0}},"148":{"start":{"line":149,"column":0},"end":{"line":149,"column":0}},"149":{"start":{"line":150,"column":0},"end":{"line":150,"column":42}},"150":{"start":{"line":151,"column":0},"end":{"line":151,"column":23}},"151":{"start":{"line":152,"column":0},"end":{"line":152,"column":1}},"152":{"start":{"line":153,"column":0},"end":{"line":153,"column":0}},"153":{"start":{"line":154,"column":0},"end":{"line":154,"column":0}},"154":{"start":{"line":155,"column":0},"end":{"line":155,"column":45}},"155":{"start":{"line":156,"column":0},"end":{"line":156,"column":14}},"156":{"start":{"line":157,"column":0},"end":{"line":157,"column":22}},"157":{"start":{"line":158,"column":0},"end":{"line":158,"column":36}},"158":{"start":{"line":159,"column":0},"end":{"line":159,"column":31}},"159":{"start":{"line":160,"column":0},"end":{"line":160,"column":34}},"160":{"start":{"line":161,"column":0},"end":{"line":161,"column":18}},"161":{"start":{"line":162,"column":0},"end":{"line":162,"column":23}},"162":{"start":{"line":163,"column":0},"end":{"line":163,"column":19}},"163":{"start":{"line":164,"column":0},"end":{"line":164,"column":10}},"164":{"start":{"line":165,"column":0},"end":{"line":165,"column":1}},"165":{"start":{"line":166,"column":0},"end":{"line":166,"column":0}},"166":{"start":{"line":167,"column":0},"end":{"line":167,"column":43}},"167":{"start":{"line":168,"column":0},"end":{"line":168,"column":16}},"168":{"start":{"line":169,"column":0},"end":{"line":169,"column":14}},"169":{"start":{"line":170,"column":0},"end":{"line":170,"column":22}},"170":{"start":{"line":171,"column":0},"end":{"line":171,"column":15}},"171":{"start":{"line":172,"column":0},"end":{"line":172,"column":25}},"172":{"start":{"line":173,"column":0},"end":{"line":173,"column":23}},"173":{"start":{"line":174,"column":0},"end":{"line":174,"column":15}},"174":{"start":{"line":175,"column":0},"end":{"line":175,"column":19}},"175":{"start":{"line":176,"column":0},"end":{"line":176,"column":25}},"176":{"start":{"line":177,"column":0},"end":{"line":177,"column":27}},"177":{"start":{"line":178,"column":0},"end":{"line":178,"column":31}},"178":{"start":{"line":179,"column":0},"end":{"line":179,"column":29}},"179":{"start":{"line":180,"column":0},"end":{"line":180,"column":30}},"180":{"start":{"line":181,"column":0},"end":{"line":181,"column":37}},"181":{"start":{"line":182,"column":0},"end":{"line":182,"column":41}},"182":{"start":{"line":183,"column":0},"end":{"line":183,"column":26}},"183":{"start":{"line":184,"column":0},"end":{"line":184,"column":19}},"184":{"start":{"line":185,"column":0},"end":{"line":185,"column":20}},"185":{"start":{"line":186,"column":0},"end":{"line":186,"column":23}},"186":{"start":{"line":187,"column":0},"end":{"line":187,"column":29}},"187":{"start":{"line":188,"column":0},"end":{"line":188,"column":23}},"188":{"start":{"line":189,"column":0},"end":{"line":189,"column":29}},"189":{"start":{"line":190,"column":0},"end":{"line":190,"column":26}},"190":{"start":{"line":191,"column":0},"end":{"line":191,"column":23}},"191":{"start":{"line":192,"column":0},"end":{"line":192,"column":1}},"192":{"start":{"line":193,"column":0},"end":{"line":193,"column":0}},"193":{"start":{"line":194,"column":0},"end":{"line":194,"column":51}},"194":{"start":{"line":195,"column":0},"end":{"line":195,"column":14}},"195":{"start":{"line":196,"column":0},"end":{"line":196,"column":23}},"196":{"start":{"line":197,"column":0},"end":{"line":197,"column":21}},"197":{"start":{"line":198,"column":0},"end":{"line":198,"column":30}},"198":{"start":{"line":199,"column":0},"end":{"line":199,"column":34}},"199":{"start":{"line":200,"column":0},"end":{"line":200,"column":1}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"38":1,"39":1,"40":1,"41":0,"42":0,"43":0,"44":1,"45":0,"46":0,"47":0,"48":1,"49":2,"50":2,"51":2,"52":1,"53":1,"54":1,"55":1,"56":1,"57":1,"58":1,"59":1,"60":1,"61":1,"62":1,"63":1,"64":1,"65":1,"66":1,"67":1,"68":1,"69":1,"70":1,"71":1,"72":1,"73":1,"74":1,"75":1,"76":1,"77":1,"78":1,"79":1,"80":1,"81":1,"82":1,"83":1,"84":1,"85":1,"86":1,"87":1,"88":1,"89":1,"90":1,"91":1,"92":1,"93":1,"94":1,"95":1,"96":1,"97":1,"98":1,"99":1,"100":1,"101":1,"102":1,"103":1,"104":1,"105":1,"106":1,"107":1,"108":1,"109":1,"110":1,"111":1,"112":1,"113":1,"114":1,"115":1,"116":1,"117":1,"118":1,"119":1,"120":1,"121":1,"122":1,"123":1,"124":1,"125":1,"126":1,"127":1,"128":1,"129":1,"130":1,"131":1,"132":1,"133":1,"134":1,"135":1,"136":1,"137":1,"138":1,"139":1,"140":1,"141":1,"142":1,"143":1,"144":1,"145":1,"146":1,"147":1,"148":1,"149":1,"150":1,"151":1,"152":1,"153":1,"154":1,"155":1,"156":1,"157":1,"158":1,"159":1,"160":1,"161":1,"162":1,"163":1,"164":1,"165":1,"166":1,"167":1,"168":1,"169":1,"170":1,"171":1,"172":1,"173":1,"174":1,"175":1,"176":1,"177":1,"178":1,"179":1,"180":1,"181":1,"182":1,"183":1,"184":1,"185":1,"186":1,"187":1,"188":1,"189":1,"190":1,"191":1,"192":1,"193":1,"194":1,"195":1,"196":1,"197":1,"198":1,"199":1},"branchMap":{"0":{"type":"branch","line":50,"loc":{"start":{"line":50,"column":0},"end":{"line":52,"column":1}},"locations":[{"start":{"line":50,"column":0},"end":{"line":52,"column":1}}]}},"b":{"0":[2]},"fnMap":{"0":{"name":"isProjectSpecV0_0_1","decl":{"start":{"line":42,"column":0},"end":{"line":44,"column":1}},"loc":{"start":{"line":42,"column":0},"end":{"line":44,"column":1}},"line":42},"1":{"name":"isProjectSpecV0_2_0","decl":{"start":{"line":46,"column":0},"end":{"line":48,"column":1}},"loc":{"start":{"line":46,"column":0},"end":{"line":48,"column":1}},"line":46},"2":{"name":"isProjectSpecV1_0_0","decl":{"start":{"line":50,"column":0},"end":{"line":52,"column":1}},"loc":{"start":{"line":50,"column":0},"end":{"line":52,"column":1}},"line":50}},"f":{"0":0,"1":0,"2":2}},"/Users/scotttwiname/Projects/subql-main/packages/cli/src/utils/build.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/cli/src/utils/build.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":28}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":70}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":24}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":8}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":30}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":33}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":22}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":20}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":23}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":60}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":32}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":34}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":0}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":80}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":49}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":44}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":38}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":71}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":44}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":89}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":0}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":61}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":40}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":31}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":1}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":0}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":115}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":24}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":35}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":47}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":42}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":25}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":69}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":44}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":39}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":36}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":10}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":76}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":3}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":0}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":153}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":7}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":64}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":64}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":63}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":29}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":0}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":40}},"51":{"start":{"line":52,"column":0},"end":{"line":52,"column":72}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":94}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":55}},"54":{"start":{"line":55,"column":0},"end":{"line":55,"column":5}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":15}},"56":{"start":{"line":57,"column":0},"end":{"line":57,"column":19}},"57":{"start":{"line":58,"column":0},"end":{"line":58,"column":105}},"58":{"start":{"line":59,"column":0},"end":{"line":59,"column":3}},"59":{"start":{"line":60,"column":0},"end":{"line":60,"column":19}},"60":{"start":{"line":61,"column":0},"end":{"line":61,"column":1}},"61":{"start":{"line":62,"column":0},"end":{"line":62,"column":0}},"62":{"start":{"line":63,"column":0},"end":{"line":63,"column":60}},"63":{"start":{"line":64,"column":0},"end":{"line":64,"column":45}},"64":{"start":{"line":65,"column":0},"end":{"line":65,"column":31}},"65":{"start":{"line":66,"column":0},"end":{"line":66,"column":31}},"66":{"start":{"line":67,"column":0},"end":{"line":67,"column":20}},"67":{"start":{"line":68,"column":0},"end":{"line":68,"column":85}},"68":{"start":{"line":69,"column":0},"end":{"line":69,"column":66}},"69":{"start":{"line":70,"column":0},"end":{"line":70,"column":7}},"70":{"start":{"line":71,"column":0},"end":{"line":71,"column":81}},"71":{"start":{"line":72,"column":0},"end":{"line":72,"column":65}},"72":{"start":{"line":73,"column":0},"end":{"line":73,"column":0}},"73":{"start":{"line":74,"column":0},"end":{"line":74,"column":31}},"74":{"start":{"line":75,"column":0},"end":{"line":75,"column":41}},"75":{"start":{"line":76,"column":0},"end":{"line":76,"column":90}},"76":{"start":{"line":77,"column":0},"end":{"line":77,"column":17}},"77":{"start":{"line":78,"column":0},"end":{"line":78,"column":6}},"78":{"start":{"line":79,"column":0},"end":{"line":79,"column":0}},"79":{"start":{"line":80,"column":0},"end":{"line":80,"column":24}},"80":{"start":{"line":81,"column":0},"end":{"line":81,"column":17}},"81":{"start":{"line":82,"column":0},"end":{"line":82,"column":0}},"82":{"start":{"line":83,"column":0},"end":{"line":83,"column":60}},"83":{"start":{"line":84,"column":0},"end":{"line":84,"column":0}},"84":{"start":{"line":85,"column":0},"end":{"line":85,"column":27}},"85":{"start":{"line":86,"column":0},"end":{"line":86,"column":19}},"86":{"start":{"line":87,"column":0},"end":{"line":87,"column":73}},"87":{"start":{"line":88,"column":0},"end":{"line":88,"column":3}},"88":{"start":{"line":89,"column":0},"end":{"line":89,"column":1}},"89":{"start":{"line":90,"column":0},"end":{"line":90,"column":0}},"90":{"start":{"line":91,"column":0},"end":{"line":91,"column":80}},"91":{"start":{"line":92,"column":0},"end":{"line":92,"column":57}},"92":{"start":{"line":93,"column":0},"end":{"line":93,"column":23}},"93":{"start":{"line":94,"column":0},"end":{"line":94,"column":0}},"94":{"start":{"line":95,"column":0},"end":{"line":95,"column":42}},"95":{"start":{"line":96,"column":0},"end":{"line":96,"column":25}},"96":{"start":{"line":97,"column":0},"end":{"line":97,"column":56}},"97":{"start":{"line":98,"column":0},"end":{"line":98,"column":31}},"98":{"start":{"line":99,"column":0},"end":{"line":99,"column":22}},"99":{"start":{"line":100,"column":0},"end":{"line":100,"column":12}},"100":{"start":{"line":101,"column":0},"end":{"line":101,"column":38}},"101":{"start":{"line":102,"column":0},"end":{"line":102,"column":69}},"102":{"start":{"line":103,"column":0},"end":{"line":103,"column":33}},"103":{"start":{"line":104,"column":0},"end":{"line":104,"column":24}},"104":{"start":{"line":105,"column":0},"end":{"line":105,"column":14}},"105":{"start":{"line":106,"column":0},"end":{"line":106,"column":42}},"106":{"start":{"line":107,"column":0},"end":{"line":107,"column":68}},"107":{"start":{"line":108,"column":0},"end":{"line":108,"column":35}},"108":{"start":{"line":109,"column":0},"end":{"line":109,"column":26}},"109":{"start":{"line":110,"column":0},"end":{"line":110,"column":9}},"110":{"start":{"line":111,"column":0},"end":{"line":111,"column":7}},"111":{"start":{"line":112,"column":0},"end":{"line":112,"column":5}},"112":{"start":{"line":113,"column":0},"end":{"line":113,"column":44}},"113":{"start":{"line":114,"column":0},"end":{"line":114,"column":61}},"114":{"start":{"line":115,"column":0},"end":{"line":115,"column":22}},"115":{"start":{"line":116,"column":0},"end":{"line":116,"column":5}},"116":{"start":{"line":117,"column":0},"end":{"line":117,"column":3}},"117":{"start":{"line":118,"column":0},"end":{"line":118,"column":0}},"118":{"start":{"line":119,"column":0},"end":{"line":119,"column":14}},"119":{"start":{"line":120,"column":0},"end":{"line":120,"column":1}},"120":{"start":{"line":121,"column":0},"end":{"line":121,"column":0}},"121":{"start":{"line":122,"column":0},"end":{"line":122,"column":67}},"122":{"start":{"line":123,"column":0},"end":{"line":123,"column":99}},"123":{"start":{"line":124,"column":0},"end":{"line":124,"column":0}},"124":{"start":{"line":125,"column":0},"end":{"line":125,"column":58}},"125":{"start":{"line":126,"column":0},"end":{"line":126,"column":14}},"126":{"start":{"line":127,"column":0},"end":{"line":127,"column":3}},"127":{"start":{"line":128,"column":0},"end":{"line":128,"column":0}},"128":{"start":{"line":129,"column":0},"end":{"line":129,"column":35}},"129":{"start":{"line":130,"column":0},"end":{"line":130,"column":49}},"130":{"start":{"line":131,"column":0},"end":{"line":131,"column":69}},"131":{"start":{"line":132,"column":0},"end":{"line":132,"column":1}},"132":{"start":{"line":133,"column":0},"end":{"line":133,"column":0}},"133":{"start":{"line":134,"column":0},"end":{"line":134,"column":50}},"134":{"start":{"line":135,"column":0},"end":{"line":135,"column":99}},"135":{"start":{"line":136,"column":0},"end":{"line":136,"column":0}},"136":{"start":{"line":137,"column":0},"end":{"line":137,"column":61}},"137":{"start":{"line":138,"column":0},"end":{"line":138,"column":1}},"138":{"start":{"line":139,"column":0},"end":{"line":139,"column":0}},"139":{"start":{"line":140,"column":0},"end":{"line":140,"column":66}},"140":{"start":{"line":141,"column":0},"end":{"line":141,"column":99}},"141":{"start":{"line":142,"column":0},"end":{"line":142,"column":103}},"142":{"start":{"line":143,"column":0},"end":{"line":143,"column":50}},"143":{"start":{"line":144,"column":0},"end":{"line":144,"column":38}},"144":{"start":{"line":145,"column":0},"end":{"line":145,"column":1}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":37,"18":37,"19":37,"20":37,"21":37,"22":1,"23":1,"24":1,"25":74,"26":74,"27":74,"28":1,"29":1,"30":32,"31":32,"32":32,"33":32,"34":0,"35":0,"36":32,"37":32,"38":32,"39":32,"40":0,"41":0,"42":32,"43":32,"44":32,"45":32,"46":32,"47":32,"48":32,"49":32,"50":32,"51":4,"52":4,"53":3,"54":3,"55":32,"56":1,"57":1,"58":1,"59":31,"60":31,"61":1,"62":1,"63":1,"64":38,"65":38,"66":38,"67":38,"68":38,"69":38,"70":38,"71":38,"72":38,"73":38,"74":38,"75":38,"76":38,"77":38,"78":38,"79":38,"80":38,"81":38,"82":38,"83":38,"84":38,"85":38,"86":0,"87":0,"88":38,"89":1,"90":1,"91":31,"92":31,"93":31,"94":31,"95":28,"96":28,"97":28,"98":28,"99":28,"100":0,"101":0,"102":0,"103":0,"104":0,"105":0,"106":0,"107":0,"108":0,"109":0,"110":0,"111":0,"112":31,"113":3,"114":0,"115":0,"116":3,"117":3,"118":3,"119":3,"120":1,"121":4,"122":4,"123":4,"124":4,"125":0,"126":0,"127":4,"128":4,"129":4,"130":4,"131":4,"132":1,"133":35,"134":35,"135":35,"136":35,"137":35,"138":1,"139":3,"140":3,"141":3,"142":3,"143":3,"144":3},"branchMap":{"0":{"type":"branch","line":17,"loc":{"start":{"line":17,"column":29},"end":{"line":23,"column":88}},"locations":[{"start":{"line":17,"column":29},"end":{"line":23,"column":88}}]},"1":{"type":"branch","line":26,"loc":{"start":{"line":26,"column":0},"end":{"line":28,"column":1}},"locations":[{"start":{"line":26,"column":0},"end":{"line":28,"column":1}}]},"2":{"type":"branch","line":30,"loc":{"start":{"line":30,"column":7},"end":{"line":61,"column":1}},"locations":[{"start":{"line":30,"column":7},"end":{"line":61,"column":1}}]},"3":{"type":"branch","line":34,"loc":{"start":{"line":34,"column":41},"end":{"line":37,"column":9}},"locations":[{"start":{"line":34,"column":41},"end":{"line":37,"column":9}}]},"4":{"type":"branch","line":40,"loc":{"start":{"line":40,"column":3},"end":{"line":42,"column":3}},"locations":[{"start":{"line":40,"column":3},"end":{"line":42,"column":3}}]},"5":{"type":"branch","line":48,"loc":{"start":{"line":48,"column":6},"end":{"line":49,"column":7}},"locations":[{"start":{"line":48,"column":6},"end":{"line":49,"column":7}}]},"6":{"type":"branch","line":49,"loc":{"start":{"line":49,"column":6},"end":{"line":49,"column":28}},"locations":[{"start":{"line":49,"column":6},"end":{"line":49,"column":28}}]},"7":{"type":"branch","line":51,"loc":{"start":{"line":51,"column":39},"end":{"line":55,"column":5}},"locations":[{"start":{"line":51,"column":39},"end":{"line":55,"column":5}}]},"8":{"type":"branch","line":54,"loc":{"start":{"line":54,"column":-1},"end":{"line":55,"column":5}},"locations":[{"start":{"line":54,"column":-1},"end":{"line":55,"column":5}}]},"9":{"type":"branch","line":56,"loc":{"start":{"line":56,"column":4},"end":{"line":59,"column":3}},"locations":[{"start":{"line":56,"column":4},"end":{"line":59,"column":3}}]},"10":{"type":"branch","line":60,"loc":{"start":{"line":60,"column":-1},"end":{"line":61,"column":1}},"locations":[{"start":{"line":60,"column":-1},"end":{"line":61,"column":1}}]},"11":{"type":"branch","line":53,"loc":{"start":{"line":53,"column":40},"end":{"line":53,"column":91}},"locations":[{"start":{"line":53,"column":40},"end":{"line":53,"column":91}}]},"12":{"type":"branch","line":64,"loc":{"start":{"line":64,"column":7},"end":{"line":89,"column":1}},"locations":[{"start":{"line":64,"column":7},"end":{"line":89,"column":1}}]},"13":{"type":"branch","line":86,"loc":{"start":{"line":86,"column":4},"end":{"line":88,"column":3}},"locations":[{"start":{"line":86,"column":4},"end":{"line":88,"column":3}}]},"14":{"type":"branch","line":92,"loc":{"start":{"line":92,"column":0},"end":{"line":120,"column":1}},"locations":[{"start":{"line":92,"column":0},"end":{"line":120,"column":1}}]},"15":{"type":"branch","line":95,"loc":{"start":{"line":95,"column":41},"end":{"line":113,"column":9}},"locations":[{"start":{"line":95,"column":41},"end":{"line":113,"column":9}}]},"16":{"type":"branch","line":100,"loc":{"start":{"line":100,"column":5},"end":{"line":112,"column":5}},"locations":[{"start":{"line":100,"column":5},"end":{"line":112,"column":5}}]},"17":{"type":"branch","line":113,"loc":{"start":{"line":113,"column":3},"end":{"line":120,"column":1}},"locations":[{"start":{"line":113,"column":3},"end":{"line":120,"column":1}}]},"18":{"type":"branch","line":114,"loc":{"start":{"line":114,"column":60},"end":{"line":116,"column":5}},"locations":[{"start":{"line":114,"column":60},"end":{"line":116,"column":5}}]},"19":{"type":"branch","line":122,"loc":{"start":{"line":122,"column":0},"end":{"line":132,"column":1}},"locations":[{"start":{"line":122,"column":0},"end":{"line":132,"column":1}}]},"20":{"type":"branch","line":125,"loc":{"start":{"line":125,"column":57},"end":{"line":127,"column":3}},"locations":[{"start":{"line":125,"column":57},"end":{"line":127,"column":3}}]},"21":{"type":"branch","line":130,"loc":{"start":{"line":130,"column":12},"end":{"line":130,"column":48}},"locations":[{"start":{"line":130,"column":12},"end":{"line":130,"column":48}}]},"22":{"type":"branch","line":131,"loc":{"start":{"line":131,"column":9},"end":{"line":131,"column":67}},"locations":[{"start":{"line":131,"column":9},"end":{"line":131,"column":67}}]},"23":{"type":"branch","line":134,"loc":{"start":{"line":134,"column":0},"end":{"line":138,"column":1}},"locations":[{"start":{"line":134,"column":0},"end":{"line":138,"column":1}}]},"24":{"type":"branch","line":140,"loc":{"start":{"line":140,"column":0},"end":{"line":145,"column":1}},"locations":[{"start":{"line":140,"column":0},"end":{"line":145,"column":1}}]},"25":{"type":"branch","line":142,"loc":{"start":{"line":142,"column":62},"end":{"line":142,"column":101}},"locations":[{"start":{"line":142,"column":62},"end":{"line":142,"column":101}}]}},"b":{"0":[37],"1":[74],"2":[32],"3":[0],"4":[0],"5":[31],"6":[1],"7":[4],"8":[3],"9":[1],"10":[31],"11":[7],"12":[38],"13":[0],"14":[31],"15":[28],"16":[0],"17":[3],"18":[0],"19":[4],"20":[0],"21":[8],"22":[7],"23":[35],"24":[3],"25":[6]},"fnMap":{"0":{"name":"requireScriptWrapper","decl":{"start":{"line":17,"column":29},"end":{"line":23,"column":88}},"loc":{"start":{"line":17,"column":29},"end":{"line":23,"column":88}},"line":17},"1":{"name":"formatPath","decl":{"start":{"line":26,"column":0},"end":{"line":28,"column":1}},"loc":{"start":{"line":26,"column":0},"end":{"line":28,"column":1}},"line":26},"2":{"name":"buildManifestFromLocation","decl":{"start":{"line":30,"column":7},"end":{"line":61,"column":1}},"loc":{"start":{"line":30,"column":7},"end":{"line":61,"column":1}},"line":30},"3":{"name":"generateManifestFromTs","decl":{"start":{"line":64,"column":7},"end":{"line":89,"column":1}},"loc":{"start":{"line":64,"column":7},"end":{"line":89,"column":1}},"line":64},"4":{"name":"getTsManifest","decl":{"start":{"line":92,"column":0},"end":{"line":120,"column":1}},"loc":{"start":{"line":92,"column":0},"end":{"line":120,"column":1}},"line":92},"5":{"name":"getTsManifestsFromMultichain","decl":{"start":{"line":122,"column":0},"end":{"line":132,"column":1}},"loc":{"start":{"line":122,"column":0},"end":{"line":132,"column":1}},"line":122},"6":{"name":"isMultichain","decl":{"start":{"line":134,"column":0},"end":{"line":138,"column":1}},"loc":{"start":{"line":134,"column":0},"end":{"line":138,"column":1}},"line":134},"7":{"name":"replaceTsReferencesInMultichain","decl":{"start":{"line":140,"column":0},"end":{"line":145,"column":1}},"loc":{"start":{"line":140,"column":0},"end":{"line":145,"column":1}},"line":140}},"f":{"0":37,"1":74,"2":32,"3":38,"4":31,"5":4,"6":35,"7":3}},"/Users/scotttwiname/Projects/subql-main/packages/cli/src/utils/index.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/cli/src/utils/index.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":24}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":24}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1},"branchMap":{},"b":{},"fnMap":{},"f":{}},"/Users/scotttwiname/Projects/subql-main/packages/cli/src/utils/utils.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/cli/src/utils/utils.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":48}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":20}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":24}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":31}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":68}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":59}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":26}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":31}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":22}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":44}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":26}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":28}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":47}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":0}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":57}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":35}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":36}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":5}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":1}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":0}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":90}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":26}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":7}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":33}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":15}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":27}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":3}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":1}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":0}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":55}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":37}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":30}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":21}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":3}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":13}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":1}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":0}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":46}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":35}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":14}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":24}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":21}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":20}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":20}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":21}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":27}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":9}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":35}},"51":{"start":{"line":52,"column":0},"end":{"line":52,"column":35}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":25}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":25}},"54":{"start":{"line":55,"column":0},"end":{"line":55,"column":29}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":12}},"56":{"start":{"line":57,"column":0},"end":{"line":57,"column":24}},"57":{"start":{"line":58,"column":0},"end":{"line":58,"column":82}},"58":{"start":{"line":59,"column":0},"end":{"line":59,"column":21}},"59":{"start":{"line":60,"column":0},"end":{"line":60,"column":1}},"60":{"start":{"line":61,"column":0},"end":{"line":61,"column":0}},"61":{"start":{"line":62,"column":0},"end":{"line":62,"column":91}},"62":{"start":{"line":63,"column":0},"end":{"line":63,"column":50}},"63":{"start":{"line":64,"column":0},"end":{"line":64,"column":32}},"64":{"start":{"line":65,"column":0},"end":{"line":65,"column":31}},"65":{"start":{"line":66,"column":0},"end":{"line":66,"column":9}},"66":{"start":{"line":67,"column":0},"end":{"line":67,"column":57}},"67":{"start":{"line":68,"column":0},"end":{"line":68,"column":23}},"68":{"start":{"line":69,"column":0},"end":{"line":69,"column":70}},"69":{"start":{"line":70,"column":0},"end":{"line":70,"column":7}},"70":{"start":{"line":71,"column":0},"end":{"line":71,"column":23}},"71":{"start":{"line":72,"column":0},"end":{"line":72,"column":17}},"72":{"start":{"line":73,"column":0},"end":{"line":73,"column":62}},"73":{"start":{"line":74,"column":0},"end":{"line":74,"column":5}},"74":{"start":{"line":75,"column":0},"end":{"line":75,"column":10}},"75":{"start":{"line":76,"column":0},"end":{"line":76,"column":60}},"76":{"start":{"line":77,"column":0},"end":{"line":77,"column":3}},"77":{"start":{"line":78,"column":0},"end":{"line":78,"column":1}},"78":{"start":{"line":79,"column":0},"end":{"line":79,"column":0}},"79":{"start":{"line":80,"column":0},"end":{"line":80,"column":57}},"80":{"start":{"line":81,"column":0},"end":{"line":81,"column":51}},"81":{"start":{"line":82,"column":0},"end":{"line":82,"column":76}},"82":{"start":{"line":83,"column":0},"end":{"line":83,"column":3}},"83":{"start":{"line":84,"column":0},"end":{"line":84,"column":0}},"84":{"start":{"line":85,"column":0},"end":{"line":85,"column":41}},"85":{"start":{"line":86,"column":0},"end":{"line":86,"column":1}},"86":{"start":{"line":87,"column":0},"end":{"line":87,"column":0}},"87":{"start":{"line":88,"column":0},"end":{"line":88,"column":75}},"88":{"start":{"line":89,"column":0},"end":{"line":89,"column":53}},"89":{"start":{"line":90,"column":0},"end":{"line":90,"column":1}},"90":{"start":{"line":91,"column":0},"end":{"line":91,"column":0}},"91":{"start":{"line":92,"column":0},"end":{"line":92,"column":119}},"92":{"start":{"line":93,"column":0},"end":{"line":93,"column":64}},"93":{"start":{"line":94,"column":0},"end":{"line":94,"column":48}},"94":{"start":{"line":95,"column":0},"end":{"line":95,"column":1}},"95":{"start":{"line":96,"column":0},"end":{"line":96,"column":0}},"96":{"start":{"line":97,"column":0},"end":{"line":97,"column":86}},"97":{"start":{"line":98,"column":0},"end":{"line":98,"column":7}},"98":{"start":{"line":99,"column":0},"end":{"line":99,"column":34}},"99":{"start":{"line":100,"column":0},"end":{"line":100,"column":19}},"100":{"start":{"line":101,"column":0},"end":{"line":101,"column":55}},"101":{"start":{"line":102,"column":0},"end":{"line":102,"column":5}},"102":{"start":{"line":103,"column":0},"end":{"line":103,"column":15}},"103":{"start":{"line":104,"column":0},"end":{"line":104,"column":63}},"104":{"start":{"line":105,"column":0},"end":{"line":105,"column":3}},"105":{"start":{"line":106,"column":0},"end":{"line":106,"column":1}},"106":{"start":{"line":107,"column":0},"end":{"line":107,"column":0}},"107":{"start":{"line":108,"column":0},"end":{"line":108,"column":74}},"108":{"start":{"line":109,"column":0},"end":{"line":109,"column":67}},"109":{"start":{"line":110,"column":0},"end":{"line":110,"column":66}},"110":{"start":{"line":111,"column":0},"end":{"line":111,"column":46}},"111":{"start":{"line":112,"column":0},"end":{"line":112,"column":62}},"112":{"start":{"line":113,"column":0},"end":{"line":113,"column":1}},"113":{"start":{"line":114,"column":0},"end":{"line":114,"column":0}},"114":{"start":{"line":115,"column":0},"end":{"line":115,"column":112}},"115":{"start":{"line":116,"column":0},"end":{"line":116,"column":49}},"116":{"start":{"line":117,"column":0},"end":{"line":117,"column":1}},"117":{"start":{"line":118,"column":0},"end":{"line":118,"column":0}},"118":{"start":{"line":119,"column":0},"end":{"line":119,"column":88}},"119":{"start":{"line":120,"column":0},"end":{"line":120,"column":43}},"120":{"start":{"line":121,"column":0},"end":{"line":121,"column":1}},"121":{"start":{"line":122,"column":0},"end":{"line":122,"column":0}},"122":{"start":{"line":123,"column":0},"end":{"line":123,"column":36}},"123":{"start":{"line":124,"column":0},"end":{"line":124,"column":18}},"124":{"start":{"line":125,"column":0},"end":{"line":125,"column":20}},"125":{"start":{"line":126,"column":0},"end":{"line":126,"column":18}},"126":{"start":{"line":127,"column":0},"end":{"line":127,"column":15}},"127":{"start":{"line":128,"column":0},"end":{"line":128,"column":23}},"128":{"start":{"line":129,"column":0},"end":{"line":129,"column":78}},"129":{"start":{"line":130,"column":0},"end":{"line":130,"column":114}},"130":{"start":{"line":131,"column":0},"end":{"line":131,"column":0}},"131":{"start":{"line":132,"column":0},"end":{"line":132,"column":20}},"132":{"start":{"line":133,"column":0},"end":{"line":133,"column":25}},"133":{"start":{"line":134,"column":0},"end":{"line":134,"column":39}},"134":{"start":{"line":135,"column":0},"end":{"line":135,"column":0}},"135":{"start":{"line":136,"column":0},"end":{"line":136,"column":52}},"136":{"start":{"line":137,"column":0},"end":{"line":137,"column":35}},"137":{"start":{"line":138,"column":0},"end":{"line":138,"column":42}},"138":{"start":{"line":139,"column":0},"end":{"line":139,"column":18}},"139":{"start":{"line":140,"column":0},"end":{"line":140,"column":40}},"140":{"start":{"line":141,"column":0},"end":{"line":141,"column":18}},"141":{"start":{"line":142,"column":0},"end":{"line":142,"column":28}},"142":{"start":{"line":143,"column":0},"end":{"line":143,"column":36}},"143":{"start":{"line":144,"column":0},"end":{"line":144,"column":14}},"144":{"start":{"line":145,"column":0},"end":{"line":145,"column":7}},"145":{"start":{"line":146,"column":0},"end":{"line":146,"column":5}},"146":{"start":{"line":147,"column":0},"end":{"line":147,"column":3}},"147":{"start":{"line":148,"column":0},"end":{"line":148,"column":81}},"148":{"start":{"line":149,"column":0},"end":{"line":149,"column":0}},"149":{"start":{"line":150,"column":0},"end":{"line":150,"column":15}},"150":{"start":{"line":151,"column":0},"end":{"line":151,"column":1}},"151":{"start":{"line":152,"column":0},"end":{"line":152,"column":92}},"152":{"start":{"line":153,"column":0},"end":{"line":153,"column":43}},"153":{"start":{"line":154,"column":0},"end":{"line":154,"column":56}},"154":{"start":{"line":155,"column":0},"end":{"line":155,"column":62}},"155":{"start":{"line":156,"column":0},"end":{"line":156,"column":0}},"156":{"start":{"line":157,"column":0},"end":{"line":157,"column":81}},"157":{"start":{"line":158,"column":0},"end":{"line":158,"column":0}},"158":{"start":{"line":159,"column":0},"end":{"line":159,"column":18}},"159":{"start":{"line":160,"column":0},"end":{"line":160,"column":1}},"160":{"start":{"line":161,"column":0},"end":{"line":161,"column":103}},"161":{"start":{"line":162,"column":0},"end":{"line":162,"column":74}},"162":{"start":{"line":163,"column":0},"end":{"line":163,"column":79}},"163":{"start":{"line":164,"column":0},"end":{"line":164,"column":1}},"164":{"start":{"line":165,"column":0},"end":{"line":165,"column":94}},"165":{"start":{"line":166,"column":0},"end":{"line":166,"column":74}},"166":{"start":{"line":167,"column":0},"end":{"line":167,"column":49}},"167":{"start":{"line":168,"column":0},"end":{"line":168,"column":1}},"168":{"start":{"line":169,"column":0},"end":{"line":169,"column":0}},"169":{"start":{"line":170,"column":0},"end":{"line":170,"column":28}},"170":{"start":{"line":171,"column":0},"end":{"line":171,"column":60}},"171":{"start":{"line":172,"column":0},"end":{"line":172,"column":13}},"172":{"start":{"line":173,"column":0},"end":{"line":173,"column":19}},"173":{"start":{"line":174,"column":0},"end":{"line":174,"column":11}},"174":{"start":{"line":175,"column":0},"end":{"line":175,"column":48}},"175":{"start":{"line":176,"column":0},"end":{"line":176,"column":73}},"176":{"start":{"line":177,"column":0},"end":{"line":177,"column":59}},"177":{"start":{"line":178,"column":0},"end":{"line":178,"column":5}},"178":{"start":{"line":179,"column":0},"end":{"line":179,"column":31}},"179":{"start":{"line":180,"column":0},"end":{"line":180,"column":3}},"180":{"start":{"line":181,"column":0},"end":{"line":181,"column":0}},"181":{"start":{"line":182,"column":0},"end":{"line":182,"column":27}},"182":{"start":{"line":183,"column":0},"end":{"line":183,"column":87}},"183":{"start":{"line":184,"column":0},"end":{"line":184,"column":107}},"184":{"start":{"line":185,"column":0},"end":{"line":185,"column":19}},"185":{"start":{"line":186,"column":0},"end":{"line":186,"column":9}},"186":{"start":{"line":187,"column":0},"end":{"line":187,"column":3}},"187":{"start":{"line":188,"column":0},"end":{"line":188,"column":0}},"188":{"start":{"line":189,"column":0},"end":{"line":189,"column":38}},"189":{"start":{"line":190,"column":0},"end":{"line":190,"column":48}},"190":{"start":{"line":191,"column":0},"end":{"line":191,"column":72}},"191":{"start":{"line":192,"column":0},"end":{"line":192,"column":70}},"192":{"start":{"line":193,"column":0},"end":{"line":193,"column":5}},"193":{"start":{"line":194,"column":0},"end":{"line":194,"column":0}},"194":{"start":{"line":195,"column":0},"end":{"line":195,"column":67}},"195":{"start":{"line":196,"column":0},"end":{"line":196,"column":1}},"196":{"start":{"line":197,"column":0},"end":{"line":197,"column":0}},"197":{"start":{"line":198,"column":0},"end":{"line":198,"column":30}},"198":{"start":{"line":199,"column":0},"end":{"line":199,"column":19}},"199":{"start":{"line":200,"column":0},"end":{"line":200,"column":47}},"200":{"start":{"line":201,"column":0},"end":{"line":201,"column":46}},"201":{"start":{"line":202,"column":0},"end":{"line":202,"column":63}},"202":{"start":{"line":203,"column":0},"end":{"line":203,"column":51}},"203":{"start":{"line":204,"column":0},"end":{"line":204,"column":47}},"204":{"start":{"line":205,"column":0},"end":{"line":205,"column":41}},"205":{"start":{"line":206,"column":0},"end":{"line":206,"column":46}},"206":{"start":{"line":207,"column":0},"end":{"line":207,"column":31}},"207":{"start":{"line":208,"column":0},"end":{"line":208,"column":33}},"208":{"start":{"line":209,"column":0},"end":{"line":209,"column":50}},"209":{"start":{"line":210,"column":0},"end":{"line":210,"column":0}},"210":{"start":{"line":211,"column":0},"end":{"line":211,"column":43}},"211":{"start":{"line":212,"column":0},"end":{"line":212,"column":53}},"212":{"start":{"line":213,"column":0},"end":{"line":213,"column":49}},"213":{"start":{"line":214,"column":0},"end":{"line":214,"column":76}},"214":{"start":{"line":215,"column":0},"end":{"line":215,"column":14}},"215":{"start":{"line":216,"column":0},"end":{"line":216,"column":46}},"216":{"start":{"line":217,"column":0},"end":{"line":217,"column":7}},"217":{"start":{"line":218,"column":0},"end":{"line":218,"column":12}},"218":{"start":{"line":219,"column":0},"end":{"line":219,"column":67}},"219":{"start":{"line":220,"column":0},"end":{"line":220,"column":5}},"220":{"start":{"line":221,"column":0},"end":{"line":221,"column":3}},"221":{"start":{"line":222,"column":0},"end":{"line":222,"column":0}},"222":{"start":{"line":223,"column":0},"end":{"line":223,"column":16}},"223":{"start":{"line":224,"column":0},"end":{"line":224,"column":1}},"224":{"start":{"line":225,"column":0},"end":{"line":225,"column":0}},"225":{"start":{"line":226,"column":0},"end":{"line":226,"column":62}},"226":{"start":{"line":227,"column":0},"end":{"line":227,"column":51}},"227":{"start":{"line":228,"column":0},"end":{"line":228,"column":54}},"228":{"start":{"line":229,"column":0},"end":{"line":229,"column":39}},"229":{"start":{"line":230,"column":0},"end":{"line":230,"column":23}},"230":{"start":{"line":231,"column":0},"end":{"line":231,"column":0}},"231":{"start":{"line":232,"column":0},"end":{"line":232,"column":41}},"232":{"start":{"line":233,"column":0},"end":{"line":233,"column":74}},"233":{"start":{"line":234,"column":0},"end":{"line":234,"column":37}},"234":{"start":{"line":235,"column":0},"end":{"line":235,"column":28}},"235":{"start":{"line":236,"column":0},"end":{"line":236,"column":38}},"236":{"start":{"line":237,"column":0},"end":{"line":237,"column":3}},"237":{"start":{"line":238,"column":0},"end":{"line":238,"column":0}},"238":{"start":{"line":239,"column":0},"end":{"line":239,"column":38}},"239":{"start":{"line":240,"column":0},"end":{"line":240,"column":73}},"240":{"start":{"line":241,"column":0},"end":{"line":241,"column":59}},"241":{"start":{"line":242,"column":0},"end":{"line":242,"column":42}},"242":{"start":{"line":243,"column":0},"end":{"line":243,"column":5}},"243":{"start":{"line":244,"column":0},"end":{"line":244,"column":1}},"244":{"start":{"line":245,"column":0},"end":{"line":245,"column":0}},"245":{"start":{"line":246,"column":0},"end":{"line":246,"column":62}},"246":{"start":{"line":247,"column":0},"end":{"line":247,"column":71}},"247":{"start":{"line":248,"column":0},"end":{"line":248,"column":47}},"248":{"start":{"line":249,"column":0},"end":{"line":249,"column":46}},"249":{"start":{"line":250,"column":0},"end":{"line":250,"column":70}},"250":{"start":{"line":251,"column":0},"end":{"line":251,"column":1}},"251":{"start":{"line":252,"column":0},"end":{"line":252,"column":0}},"252":{"start":{"line":253,"column":0},"end":{"line":253,"column":70}},"253":{"start":{"line":254,"column":0},"end":{"line":254,"column":50}},"254":{"start":{"line":255,"column":0},"end":{"line":255,"column":1}},"255":{"start":{"line":256,"column":0},"end":{"line":256,"column":0}},"256":{"start":{"line":257,"column":0},"end":{"line":257,"column":68}},"257":{"start":{"line":258,"column":0},"end":{"line":258,"column":53}},"258":{"start":{"line":259,"column":0},"end":{"line":259,"column":1}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":0,"19":0,"20":0,"21":0,"22":1,"23":1,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":1,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":1,"40":1,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"59":0,"60":1,"61":1,"62":5,"63":5,"64":5,"65":5,"66":5,"67":5,"68":0,"69":0,"70":5,"71":5,"72":0,"73":0,"74":5,"75":0,"76":0,"77":5,"78":1,"79":7,"80":7,"81":7,"82":7,"83":0,"84":0,"85":0,"86":1,"87":0,"88":0,"89":0,"90":1,"91":1,"92":109,"93":109,"94":109,"95":1,"96":1,"97":142,"98":142,"99":142,"100":55,"101":54,"102":142,"103":1,"104":1,"105":142,"106":1,"107":1,"108":1,"109":42,"110":42,"111":42,"112":42,"113":1,"114":2,"115":2,"116":2,"117":1,"118":17,"119":17,"120":17,"121":1,"122":31,"123":31,"124":31,"125":31,"126":31,"127":31,"128":31,"129":31,"130":31,"131":31,"132":31,"133":31,"134":31,"135":31,"136":16110,"137":90,"138":90,"139":16110,"140":90,"141":90,"142":25,"143":25,"144":25,"145":90,"146":16110,"147":31,"148":31,"149":31,"150":31,"151":8,"152":8,"153":8,"154":8,"155":8,"156":8,"157":8,"158":8,"159":8,"160":2,"161":2,"162":2,"163":2,"164":6,"165":6,"166":6,"167":6,"168":1,"169":36,"170":36,"171":36,"172":36,"173":36,"174":36,"175":18,"176":4,"177":4,"178":14,"179":14,"180":18,"181":36,"182":6,"183":6,"184":6,"185":6,"186":6,"187":12,"188":12,"189":12,"190":24,"191":24,"192":12,"193":12,"194":12,"195":12,"196":1,"197":6,"198":6,"199":6,"200":6,"201":6,"202":6,"203":6,"204":6,"205":6,"206":6,"207":12,"208":8,"209":8,"210":8,"211":5,"212":5,"213":5,"214":8,"215":3,"216":3,"217":12,"218":4,"219":4,"220":12,"221":6,"222":6,"223":6,"224":1,"225":8,"226":8,"227":8,"228":8,"229":8,"230":8,"231":8,"232":21,"233":21,"234":15,"235":15,"236":15,"237":8,"238":8,"239":15,"240":15,"241":15,"242":8,"243":8,"244":1,"245":1,"246":3,"247":3,"248":3,"249":3,"250":3,"251":1,"252":19,"253":19,"254":19,"255":1,"256":19,"257":19,"258":19},"branchMap":{"0":{"type":"branch","line":62,"loc":{"start":{"line":62,"column":7},"end":{"line":78,"column":1}},"locations":[{"start":{"line":62,"column":7},"end":{"line":78,"column":1}}]},"1":{"type":"branch","line":64,"loc":{"start":{"line":64,"column":16},"end":{"line":64,"column":32}},"locations":[{"start":{"line":64,"column":16},"end":{"line":64,"column":32}}]},"2":{"type":"branch","line":68,"loc":{"start":{"line":68,"column":22},"end":{"line":70,"column":7}},"locations":[{"start":{"line":68,"column":22},"end":{"line":70,"column":7}}]},"3":{"type":"branch","line":72,"loc":{"start":{"line":72,"column":6},"end":{"line":74,"column":5}},"locations":[{"start":{"line":72,"column":6},"end":{"line":74,"column":5}}]},"4":{"type":"branch","line":75,"loc":{"start":{"line":75,"column":3},"end":{"line":77,"column":3}},"locations":[{"start":{"line":75,"column":3},"end":{"line":77,"column":3}}]},"5":{"type":"branch","line":80,"loc":{"start":{"line":80,"column":0},"end":{"line":86,"column":1}},"locations":[{"start":{"line":80,"column":0},"end":{"line":86,"column":1}}]},"6":{"type":"branch","line":82,"loc":{"start":{"line":82,"column":53},"end":{"line":82,"column":72}},"locations":[{"start":{"line":82,"column":53},"end":{"line":82,"column":72}}]},"7":{"type":"branch","line":84,"loc":{"start":{"line":84,"column":-1},"end":{"line":86,"column":1}},"locations":[{"start":{"line":84,"column":-1},"end":{"line":86,"column":1}}]},"8":{"type":"branch","line":92,"loc":{"start":{"line":92,"column":7},"end":{"line":95,"column":1}},"locations":[{"start":{"line":92,"column":7},"end":{"line":95,"column":1}}]},"9":{"type":"branch","line":97,"loc":{"start":{"line":97,"column":7},"end":{"line":106,"column":1}},"locations":[{"start":{"line":97,"column":7},"end":{"line":106,"column":1}}]},"10":{"type":"branch","line":100,"loc":{"start":{"line":100,"column":18},"end":{"line":102,"column":5}},"locations":[{"start":{"line":100,"column":18},"end":{"line":102,"column":5}}]},"11":{"type":"branch","line":102,"loc":{"start":{"line":102,"column":-1},"end":{"line":102,"column":5}},"locations":[{"start":{"line":102,"column":-1},"end":{"line":102,"column":5}}]},"12":{"type":"branch","line":103,"loc":{"start":{"line":103,"column":4},"end":{"line":105,"column":3}},"locations":[{"start":{"line":103,"column":4},"end":{"line":105,"column":3}}]},"13":{"type":"branch","line":110,"loc":{"start":{"line":110,"column":0},"end":{"line":113,"column":1}},"locations":[{"start":{"line":110,"column":0},"end":{"line":113,"column":1}}]},"14":{"type":"branch","line":115,"loc":{"start":{"line":115,"column":0},"end":{"line":117,"column":1}},"locations":[{"start":{"line":115,"column":0},"end":{"line":117,"column":1}}]},"15":{"type":"branch","line":119,"loc":{"start":{"line":119,"column":0},"end":{"line":121,"column":1}},"locations":[{"start":{"line":119,"column":0},"end":{"line":121,"column":1}}]},"16":{"type":"branch","line":123,"loc":{"start":{"line":123,"column":0},"end":{"line":151,"column":1}},"locations":[{"start":{"line":123,"column":0},"end":{"line":151,"column":1}}]},"17":{"type":"branch","line":136,"loc":{"start":{"line":136,"column":51},"end":{"line":147,"column":3}},"locations":[{"start":{"line":136,"column":51},"end":{"line":147,"column":3}}]},"18":{"type":"branch","line":137,"loc":{"start":{"line":137,"column":34},"end":{"line":140,"column":11}},"locations":[{"start":{"line":137,"column":34},"end":{"line":140,"column":11}}]},"19":{"type":"branch","line":138,"loc":{"start":{"line":138,"column":27},"end":{"line":138,"column":42}},"locations":[{"start":{"line":138,"column":27},"end":{"line":138,"column":42}}]},"20":{"type":"branch","line":140,"loc":{"start":{"line":140,"column":5},"end":{"line":146,"column":5}},"locations":[{"start":{"line":140,"column":5},"end":{"line":146,"column":5}}]},"21":{"type":"branch","line":140,"loc":{"start":{"line":140,"column":39},"end":{"line":146,"column":5}},"locations":[{"start":{"line":140,"column":39},"end":{"line":146,"column":5}}]},"22":{"type":"branch","line":142,"loc":{"start":{"line":142,"column":27},"end":{"line":145,"column":7}},"locations":[{"start":{"line":142,"column":27},"end":{"line":145,"column":7}}]},"23":{"type":"branch","line":148,"loc":{"start":{"line":148,"column":23},"end":{"line":148,"column":81}},"locations":[{"start":{"line":148,"column":23},"end":{"line":148,"column":81}}]},"24":{"type":"branch","line":152,"loc":{"start":{"line":152,"column":0},"end":{"line":160,"column":1}},"locations":[{"start":{"line":152,"column":0},"end":{"line":160,"column":1}}]},"25":{"type":"branch","line":154,"loc":{"start":{"line":154,"column":20},"end":{"line":154,"column":56}},"locations":[{"start":{"line":154,"column":20},"end":{"line":154,"column":56}}]},"26":{"type":"branch","line":157,"loc":{"start":{"line":157,"column":26},"end":{"line":157,"column":81}},"locations":[{"start":{"line":157,"column":26},"end":{"line":157,"column":81}}]},"27":{"type":"branch","line":161,"loc":{"start":{"line":161,"column":0},"end":{"line":164,"column":1}},"locations":[{"start":{"line":161,"column":0},"end":{"line":164,"column":1}}]},"28":{"type":"branch","line":165,"loc":{"start":{"line":165,"column":0},"end":{"line":168,"column":1}},"locations":[{"start":{"line":165,"column":0},"end":{"line":168,"column":1}}]},"29":{"type":"branch","line":170,"loc":{"start":{"line":170,"column":0},"end":{"line":196,"column":1}},"locations":[{"start":{"line":170,"column":0},"end":{"line":196,"column":1}}]},"30":{"type":"branch","line":175,"loc":{"start":{"line":175,"column":29},"end":{"line":175,"column":45}},"locations":[{"start":{"line":175,"column":29},"end":{"line":175,"column":45}}]},"31":{"type":"branch","line":175,"loc":{"start":{"line":175,"column":47},"end":{"line":182,"column":26}},"locations":[{"start":{"line":175,"column":47},"end":{"line":182,"column":26}}]},"32":{"type":"branch","line":176,"loc":{"start":{"line":176,"column":72},"end":{"line":178,"column":5}},"locations":[{"start":{"line":176,"column":72},"end":{"line":178,"column":5}}]},"33":{"type":"branch","line":179,"loc":{"start":{"line":179,"column":-1},"end":{"line":180,"column":3}},"locations":[{"start":{"line":179,"column":-1},"end":{"line":180,"column":3}}]},"34":{"type":"branch","line":182,"loc":{"start":{"line":182,"column":26},"end":{"line":187,"column":3}},"locations":[{"start":{"line":182,"column":26},"end":{"line":187,"column":3}}]},"35":{"type":"branch","line":188,"loc":{"start":{"line":188,"column":-1},"end":{"line":196,"column":1}},"locations":[{"start":{"line":188,"column":-1},"end":{"line":196,"column":1}}]},"36":{"type":"branch","line":183,"loc":{"start":{"line":183,"column":26},"end":{"line":183,"column":85}},"locations":[{"start":{"line":183,"column":26},"end":{"line":183,"column":85}}]},"37":{"type":"branch","line":184,"loc":{"start":{"line":184,"column":27},"end":{"line":184,"column":78}},"locations":[{"start":{"line":184,"column":27},"end":{"line":184,"column":78}}]},"38":{"type":"branch","line":190,"loc":{"start":{"line":190,"column":29},"end":{"line":193,"column":3}},"locations":[{"start":{"line":190,"column":29},"end":{"line":193,"column":3}}]},"39":{"type":"branch","line":198,"loc":{"start":{"line":198,"column":0},"end":{"line":224,"column":1}},"locations":[{"start":{"line":198,"column":0},"end":{"line":224,"column":1}}]},"40":{"type":"branch","line":207,"loc":{"start":{"line":207,"column":30},"end":{"line":221,"column":3}},"locations":[{"start":{"line":207,"column":30},"end":{"line":221,"column":3}}]},"41":{"type":"branch","line":208,"loc":{"start":{"line":208,"column":32},"end":{"line":218,"column":11}},"locations":[{"start":{"line":208,"column":32},"end":{"line":218,"column":11}}]},"42":{"type":"branch","line":211,"loc":{"start":{"line":211,"column":31},"end":{"line":211,"column":40}},"locations":[{"start":{"line":211,"column":31},"end":{"line":211,"column":40}}]},"43":{"type":"branch","line":211,"loc":{"start":{"line":211,"column":42},"end":{"line":215,"column":13}},"locations":[{"start":{"line":211,"column":42},"end":{"line":215,"column":13}}]},"44":{"type":"branch","line":214,"loc":{"start":{"line":214,"column":61},"end":{"line":214,"column":75}},"locations":[{"start":{"line":214,"column":61},"end":{"line":214,"column":75}}]},"45":{"type":"branch","line":215,"loc":{"start":{"line":215,"column":7},"end":{"line":217,"column":7}},"locations":[{"start":{"line":215,"column":7},"end":{"line":217,"column":7}}]},"46":{"type":"branch","line":216,"loc":{"start":{"line":216,"column":39},"end":{"line":216,"column":45}},"locations":[{"start":{"line":216,"column":39},"end":{"line":216,"column":45}}]},"47":{"type":"branch","line":218,"loc":{"start":{"line":218,"column":5},"end":{"line":220,"column":5}},"locations":[{"start":{"line":218,"column":5},"end":{"line":220,"column":5}}]},"48":{"type":"branch","line":226,"loc":{"start":{"line":226,"column":0},"end":{"line":244,"column":1}},"locations":[{"start":{"line":226,"column":0},"end":{"line":244,"column":1}}]},"49":{"type":"branch","line":232,"loc":{"start":{"line":232,"column":40},"end":{"line":237,"column":3}},"locations":[{"start":{"line":232,"column":40},"end":{"line":237,"column":3}}]},"50":{"type":"branch","line":234,"loc":{"start":{"line":234,"column":31},"end":{"line":234,"column":37}},"locations":[{"start":{"line":234,"column":31},"end":{"line":234,"column":37}}]},"51":{"type":"branch","line":235,"loc":{"start":{"line":235,"column":-1},"end":{"line":237,"column":3}},"locations":[{"start":{"line":235,"column":-1},"end":{"line":237,"column":3}}]},"52":{"type":"branch","line":239,"loc":{"start":{"line":239,"column":19},"end":{"line":243,"column":3}},"locations":[{"start":{"line":239,"column":19},"end":{"line":243,"column":3}}]},"53":{"type":"branch","line":247,"loc":{"start":{"line":247,"column":0},"end":{"line":251,"column":1}},"locations":[{"start":{"line":247,"column":0},"end":{"line":251,"column":1}}]},"54":{"type":"branch","line":250,"loc":{"start":{"line":250,"column":37},"end":{"line":250,"column":69}},"locations":[{"start":{"line":250,"column":37},"end":{"line":250,"column":69}}]},"55":{"type":"branch","line":253,"loc":{"start":{"line":253,"column":0},"end":{"line":255,"column":1}},"locations":[{"start":{"line":253,"column":0},"end":{"line":255,"column":1}}]},"56":{"type":"branch","line":257,"loc":{"start":{"line":257,"column":0},"end":{"line":259,"column":1}},"locations":[{"start":{"line":257,"column":0},"end":{"line":259,"column":1}}]}},"b":{"0":[5],"1":[0],"2":[0],"3":[0],"4":[0],"5":[7],"6":[0],"7":[0],"8":[109],"9":[142],"10":[55],"11":[54],"12":[1],"13":[42],"14":[2],"15":[17],"16":[31],"17":[16110],"18":[90],"19":[25],"20":[16020],"21":[90],"22":[25],"23":[0],"24":[8],"25":[0],"26":[0],"27":[2],"28":[6],"29":[36],"30":[18],"31":[18],"32":[4],"33":[14],"34":[6],"35":[12],"36":[9],"37":[9],"38":[24],"39":[6],"40":[12],"41":[8],"42":[5],"43":[5],"44":[0],"45":[3],"46":[0],"47":[4],"48":[8],"49":[21],"50":[6],"51":[15],"52":[15],"53":[3],"54":[1],"55":[19],"56":[19]},"fnMap":{"0":{"name":"delay","decl":{"start":{"line":18,"column":7},"end":{"line":22,"column":1}},"loc":{"start":{"line":18,"column":7},"end":{"line":22,"column":1}},"line":18},"1":{"name":"valueOrPrompt","decl":{"start":{"line":24,"column":7},"end":{"line":31,"column":1}},"loc":{"start":{"line":24,"column":7},"end":{"line":31,"column":1}},"line":24},"2":{"name":"addV","decl":{"start":{"line":33,"column":0},"end":{"line":39,"column":1}},"loc":{"start":{"line":33,"column":0},"end":{"line":39,"column":1}},"line":33},"3":{"name":"promptWithDefaultValues","decl":{"start":{"line":41,"column":7},"end":{"line":60,"column":1}},"loc":{"start":{"line":41,"column":7},"end":{"line":60,"column":1}},"line":41},"4":{"name":"checkToken","decl":{"start":{"line":62,"column":7},"end":{"line":78,"column":1}},"loc":{"start":{"line":62,"column":7},"end":{"line":78,"column":1}},"line":62},"5":{"name":"errorHandle","decl":{"start":{"line":80,"column":0},"end":{"line":86,"column":1}},"loc":{"start":{"line":80,"column":0},"end":{"line":86,"column":1}},"line":80},"6":{"name":"buildProjectKey","decl":{"start":{"line":88,"column":0},"end":{"line":90,"column":1}},"loc":{"start":{"line":88,"column":0},"end":{"line":90,"column":1}},"line":88},"7":{"name":"renderTemplate","decl":{"start":{"line":92,"column":7},"end":{"line":95,"column":1}},"loc":{"start":{"line":92,"column":7},"end":{"line":95,"column":1}},"line":92},"8":{"name":"prepareDirPath","decl":{"start":{"line":97,"column":7},"end":{"line":106,"column":1}},"loc":{"start":{"line":97,"column":7},"end":{"line":106,"column":1}},"line":97},"9":{"name":"resolveToAbsolutePath","decl":{"start":{"line":110,"column":0},"end":{"line":113,"column":1}},"loc":{"start":{"line":110,"column":0},"end":{"line":113,"column":1}},"line":110},"10":{"name":"isValidEnum","decl":{"start":{"line":115,"column":0},"end":{"line":117,"column":1}},"loc":{"start":{"line":115,"column":0},"end":{"line":117,"column":1}},"line":115},"11":{"name":"findReplace","decl":{"start":{"line":119,"column":0},"end":{"line":121,"column":1}},"loc":{"start":{"line":119,"column":0},"end":{"line":121,"column":1}},"line":119},"12":{"name":"findMatchingIndices","decl":{"start":{"line":123,"column":0},"end":{"line":151,"column":1}},"loc":{"start":{"line":123,"column":0},"end":{"line":151,"column":1}},"line":123},"13":{"name":"findArrayIndicesTsManifest","decl":{"start":{"line":152,"column":0},"end":{"line":160,"column":1}},"loc":{"start":{"line":152,"column":0},"end":{"line":160,"column":1}},"line":152},"14":{"name":"replaceArrayValueInTsManifest","decl":{"start":{"line":161,"column":0},"end":{"line":164,"column":1}},"loc":{"start":{"line":161,"column":0},"end":{"line":164,"column":1}},"line":161},"15":{"name":"extractArrayValueFromTsManifest","decl":{"start":{"line":165,"column":0},"end":{"line":168,"column":1}},"loc":{"start":{"line":165,"column":0},"end":{"line":168,"column":1}},"line":165},"16":{"name":"tsStringify","decl":{"start":{"line":170,"column":0},"end":{"line":196,"column":1}},"loc":{"start":{"line":170,"column":0},"end":{"line":196,"column":1}},"line":170},"17":{"name":"extractFromTs","decl":{"start":{"line":198,"column":0},"end":{"line":224,"column":1}},"loc":{"start":{"line":198,"column":0},"end":{"line":224,"column":1}},"line":198},"18":{"name":"splitArrayString","decl":{"start":{"line":226,"column":0},"end":{"line":244,"column":1}},"loc":{"start":{"line":226,"column":0},"end":{"line":244,"column":1}},"line":226},"19":{"name":"validateEthereumTsManifest","decl":{"start":{"line":247,"column":0},"end":{"line":251,"column":1}},"loc":{"start":{"line":247,"column":0},"end":{"line":251,"column":1}},"line":247},"20":{"name":"defaultYamlManifestPath","decl":{"start":{"line":253,"column":0},"end":{"line":255,"column":1}},"loc":{"start":{"line":253,"column":0},"end":{"line":255,"column":1}},"line":253},"21":{"name":"defaultTSManifestPath","decl":{"start":{"line":257,"column":0},"end":{"line":259,"column":1}},"loc":{"start":{"line":257,"column":0},"end":{"line":259,"column":1}},"line":257}},"f":{"0":0,"1":0,"2":0,"3":0,"4":5,"5":7,"6":0,"7":109,"8":142,"9":42,"10":2,"11":17,"12":31,"13":8,"14":2,"15":6,"16":36,"17":6,"18":8,"19":3,"20":19,"21":19}},"/Users/scotttwiname/Projects/subql-main/packages/common-substrate/src/index.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/common-substrate/src/index.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":26}}},"s":{"0":1,"1":1,"2":1,"3":1},"branchMap":{},"b":{},"fnMap":{},"f":{}},"/Users/scotttwiname/Projects/subql-main/packages/common-substrate/src/project/index.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/common-substrate/src/project/index.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":23}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":25}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":24}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":24}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":28}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1},"branchMap":{},"b":{},"fnMap":{},"f":{}},"/Users/scotttwiname/Projects/subql-main/packages/common-substrate/src/project/load.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/common-substrate/src/project/load.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":47}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":45}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":36}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":88}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":0}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":96}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":97}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":29}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":25}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":1}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":0}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":59}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":51}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":6}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":25}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":30}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":31}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":30}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":26}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":5}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":91}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":25}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":34}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":67}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":68}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":5}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":22}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":10}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":47}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":3}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":1}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":52,"9":52,"10":52,"11":52,"12":52,"13":1,"14":3,"15":3,"16":3,"17":3,"18":3,"19":3,"20":3,"21":1,"22":3,"23":2,"24":2,"25":0,"26":0,"27":0,"28":0,"29":2,"30":3,"31":1,"32":1,"33":3},"branchMap":{"0":{"type":"branch","line":9,"loc":{"start":{"line":9,"column":0},"end":{"line":13,"column":1}},"locations":[{"start":{"line":9,"column":0},"end":{"line":13,"column":1}}]},"1":{"type":"branch","line":15,"loc":{"start":{"line":15,"column":0},"end":{"line":34,"column":1}},"locations":[{"start":{"line":15,"column":0},"end":{"line":34,"column":1}}]},"2":{"type":"branch","line":20,"loc":{"start":{"line":20,"column":28},"end":{"line":21,"column":27}},"locations":[{"start":{"line":20,"column":28},"end":{"line":21,"column":27}}]},"3":{"type":"branch","line":21,"loc":{"start":{"line":21,"column":27},"end":{"line":22,"column":26}},"locations":[{"start":{"line":21,"column":27},"end":{"line":22,"column":26}}]},"4":{"type":"branch","line":23,"loc":{"start":{"line":23,"column":4},"end":{"line":31,"column":9}},"locations":[{"start":{"line":23,"column":4},"end":{"line":31,"column":9}}]},"5":{"type":"branch","line":25,"loc":{"start":{"line":25,"column":24},"end":{"line":29,"column":5}},"locations":[{"start":{"line":25,"column":24},"end":{"line":29,"column":5}}]},"6":{"type":"branch","line":31,"loc":{"start":{"line":31,"column":3},"end":{"line":33,"column":3}},"locations":[{"start":{"line":31,"column":3},"end":{"line":33,"column":3}}]}},"b":{"0":[52],"1":[3],"2":[1],"3":[1],"4":[2],"5":[0],"6":[1]},"fnMap":{"0":{"name":"parseSubstrateProjectManifest","decl":{"start":{"line":9,"column":0},"end":{"line":13,"column":1}},"loc":{"start":{"line":9,"column":0},"end":{"line":13,"column":1}},"line":9},"1":{"name":"parseChainTypes","decl":{"start":{"line":15,"column":0},"end":{"line":34,"column":1}},"loc":{"start":{"line":15,"column":0},"end":{"line":34,"column":1}},"line":15}},"f":{"0":52,"1":3}},"/Users/scotttwiname/Projects/subql-main/packages/common-substrate/src/project/models.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/common-substrate/src/project/models.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":109}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":77}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":8}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":23}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":24}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":22}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":23}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":25}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":26}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":23}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":24}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":23}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":29}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":26}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":28}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":22}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":72}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":64}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":8}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":15}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":10}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":12}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":9}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":13}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":11}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":11}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":17}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":25}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":0}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":82}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":15}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":12}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":18}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":33}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":1}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":0}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":78}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":15}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":13}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":18}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":15}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":13}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":18}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":1}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":0}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":52}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":13}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":15}},"51":{"start":{"line":52,"column":0},"end":{"line":52,"column":24}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":13}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":15}},"54":{"start":{"line":55,"column":0},"end":{"line":55,"column":50}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":13}},"56":{"start":{"line":57,"column":0},"end":{"line":57,"column":15}},"57":{"start":{"line":58,"column":0},"end":{"line":58,"column":35}},"58":{"start":{"line":59,"column":0},"end":{"line":59,"column":13}},"59":{"start":{"line":60,"column":0},"end":{"line":60,"column":15}},"60":{"start":{"line":61,"column":0},"end":{"line":61,"column":45}},"61":{"start":{"line":62,"column":0},"end":{"line":62,"column":13}},"62":{"start":{"line":63,"column":0},"end":{"line":63,"column":15}},"63":{"start":{"line":64,"column":0},"end":{"line":64,"column":44}},"64":{"start":{"line":65,"column":0},"end":{"line":65,"column":1}},"65":{"start":{"line":66,"column":0},"end":{"line":66,"column":0}},"66":{"start":{"line":67,"column":0},"end":{"line":67,"column":76}},"67":{"start":{"line":68,"column":0},"end":{"line":68,"column":15}},"68":{"start":{"line":69,"column":0},"end":{"line":69,"column":14}},"69":{"start":{"line":70,"column":0},"end":{"line":70,"column":20}},"70":{"start":{"line":71,"column":0},"end":{"line":71,"column":15}},"71":{"start":{"line":72,"column":0},"end":{"line":72,"column":14}},"72":{"start":{"line":73,"column":0},"end":{"line":73,"column":21}},"73":{"start":{"line":74,"column":0},"end":{"line":74,"column":1}},"74":{"start":{"line":75,"column":0},"end":{"line":75,"column":0}},"75":{"start":{"line":76,"column":0},"end":{"line":76,"column":60}},"76":{"start":{"line":77,"column":0},"end":{"line":77,"column":15}},"77":{"start":{"line":78,"column":0},"end":{"line":78,"column":19}},"78":{"start":{"line":79,"column":0},"end":{"line":79,"column":26}},"79":{"start":{"line":80,"column":0},"end":{"line":80,"column":32}},"80":{"start":{"line":81,"column":0},"end":{"line":81,"column":71}},"81":{"start":{"line":82,"column":0},"end":{"line":82,"column":35}},"82":{"start":{"line":83,"column":0},"end":{"line":83,"column":13}},"83":{"start":{"line":84,"column":0},"end":{"line":84,"column":18}},"84":{"start":{"line":85,"column":0},"end":{"line":85,"column":1}},"85":{"start":{"line":86,"column":0},"end":{"line":86,"column":0}},"86":{"start":{"line":87,"column":0},"end":{"line":87,"column":58}},"87":{"start":{"line":88,"column":0},"end":{"line":88,"column":15}},"88":{"start":{"line":89,"column":0},"end":{"line":89,"column":19}},"89":{"start":{"line":90,"column":0},"end":{"line":90,"column":25}},"90":{"start":{"line":91,"column":0},"end":{"line":91,"column":31}},"91":{"start":{"line":92,"column":0},"end":{"line":92,"column":70}},"92":{"start":{"line":93,"column":0},"end":{"line":93,"column":34}},"93":{"start":{"line":94,"column":0},"end":{"line":94,"column":13}},"94":{"start":{"line":95,"column":0},"end":{"line":95,"column":18}},"95":{"start":{"line":96,"column":0},"end":{"line":96,"column":1}},"96":{"start":{"line":97,"column":0},"end":{"line":97,"column":0}},"97":{"start":{"line":98,"column":0},"end":{"line":98,"column":60}},"98":{"start":{"line":99,"column":0},"end":{"line":99,"column":15}},"99":{"start":{"line":100,"column":0},"end":{"line":100,"column":19}},"100":{"start":{"line":101,"column":0},"end":{"line":101,"column":26}},"101":{"start":{"line":102,"column":0},"end":{"line":102,"column":32}},"102":{"start":{"line":103,"column":0},"end":{"line":103,"column":71}},"103":{"start":{"line":104,"column":0},"end":{"line":104,"column":35}},"104":{"start":{"line":105,"column":0},"end":{"line":105,"column":13}},"105":{"start":{"line":106,"column":0},"end":{"line":106,"column":18}},"106":{"start":{"line":107,"column":0},"end":{"line":107,"column":1}},"107":{"start":{"line":108,"column":0},"end":{"line":108,"column":0}},"108":{"start":{"line":109,"column":0},"end":{"line":109,"column":62}},"109":{"start":{"line":110,"column":0},"end":{"line":110,"column":13}},"110":{"start":{"line":111,"column":0},"end":{"line":111,"column":15}},"111":{"start":{"line":112,"column":0},"end":{"line":112,"column":13}},"112":{"start":{"line":113,"column":0},"end":{"line":113,"column":18}},"113":{"start":{"line":114,"column":0},"end":{"line":114,"column":13}},"114":{"start":{"line":115,"column":0},"end":{"line":115,"column":15}},"115":{"start":{"line":116,"column":0},"end":{"line":116,"column":35}},"116":{"start":{"line":117,"column":0},"end":{"line":117,"column":1}},"117":{"start":{"line":118,"column":0},"end":{"line":118,"column":0}},"118":{"start":{"line":119,"column":0},"end":{"line":119,"column":77}},"119":{"start":{"line":120,"column":0},"end":{"line":120,"column":26}},"120":{"start":{"line":121,"column":0},"end":{"line":121,"column":61}},"121":{"start":{"line":122,"column":0},"end":{"line":122,"column":38}},"122":{"start":{"line":123,"column":0},"end":{"line":123,"column":29}},"123":{"start":{"line":124,"column":0},"end":{"line":124,"column":40}},"124":{"start":{"line":125,"column":0},"end":{"line":125,"column":53}},"125":{"start":{"line":126,"column":0},"end":{"line":126,"column":39}},"126":{"start":{"line":127,"column":0},"end":{"line":127,"column":52}},"127":{"start":{"line":128,"column":0},"end":{"line":128,"column":40}},"128":{"start":{"line":129,"column":0},"end":{"line":129,"column":53}},"129":{"start":{"line":130,"column":0},"end":{"line":130,"column":16}},"130":{"start":{"line":131,"column":0},"end":{"line":131,"column":76}},"131":{"start":{"line":132,"column":0},"end":{"line":132,"column":7}},"132":{"start":{"line":133,"column":0},"end":{"line":133,"column":7}},"133":{"start":{"line":134,"column":0},"end":{"line":134,"column":4}},"134":{"start":{"line":135,"column":0},"end":{"line":135,"column":12}},"135":{"start":{"line":136,"column":0},"end":{"line":136,"column":19}},"136":{"start":{"line":137,"column":0},"end":{"line":137,"column":38}},"137":{"start":{"line":138,"column":0},"end":{"line":138,"column":13}},"138":{"start":{"line":139,"column":0},"end":{"line":139,"column":15}},"139":{"start":{"line":140,"column":0},"end":{"line":140,"column":1}},"140":{"start":{"line":141,"column":0},"end":{"line":141,"column":0}},"141":{"start":{"line":142,"column":0},"end":{"line":142,"column":75}},"142":{"start":{"line":143,"column":0},"end":{"line":143,"column":12}},"143":{"start":{"line":144,"column":0},"end":{"line":144,"column":28}},"144":{"start":{"line":145,"column":0},"end":{"line":145,"column":19}},"145":{"start":{"line":146,"column":0},"end":{"line":146,"column":28}},"146":{"start":{"line":147,"column":0},"end":{"line":147,"column":13}},"147":{"start":{"line":148,"column":0},"end":{"line":148,"column":15}},"148":{"start":{"line":149,"column":0},"end":{"line":149,"column":1}},"149":{"start":{"line":150,"column":0},"end":{"line":150,"column":0}},"150":{"start":{"line":151,"column":0},"end":{"line":151,"column":97}},"151":{"start":{"line":152,"column":0},"end":{"line":152,"column":79}},"152":{"start":{"line":153,"column":0},"end":{"line":153,"column":40}},"153":{"start":{"line":154,"column":0},"end":{"line":154,"column":29}},"154":{"start":{"line":155,"column":0},"end":{"line":155,"column":19}},"155":{"start":{"line":156,"column":0},"end":{"line":156,"column":26}},"156":{"start":{"line":157,"column":0},"end":{"line":157,"column":1}},"157":{"start":{"line":158,"column":0},"end":{"line":158,"column":0}},"158":{"start":{"line":159,"column":0},"end":{"line":159,"column":57}},"159":{"start":{"line":160,"column":0},"end":{"line":160,"column":13}},"160":{"start":{"line":161,"column":0},"end":{"line":161,"column":15}},"161":{"start":{"line":162,"column":0},"end":{"line":162,"column":1}},"162":{"start":{"line":163,"column":0},"end":{"line":163,"column":0}},"163":{"start":{"line":164,"column":0},"end":{"line":164,"column":85}},"164":{"start":{"line":165,"column":0},"end":{"line":165,"column":24}},"165":{"start":{"line":166,"column":0},"end":{"line":166,"column":47}},"166":{"start":{"line":167,"column":0},"end":{"line":167,"column":1}},"167":{"start":{"line":168,"column":0},"end":{"line":168,"column":13}},"168":{"start":{"line":169,"column":0},"end":{"line":169,"column":10}},"169":{"start":{"line":170,"column":0},"end":{"line":170,"column":28}},"170":{"start":{"line":171,"column":0},"end":{"line":171,"column":19}},"171":{"start":{"line":172,"column":0},"end":{"line":172,"column":13}},"172":{"start":{"line":173,"column":0},"end":{"line":173,"column":32}},"173":{"start":{"line":174,"column":0},"end":{"line":174,"column":31}},"174":{"start":{"line":175,"column":0},"end":{"line":175,"column":37}},"175":{"start":{"line":176,"column":0},"end":{"line":176,"column":28}},"176":{"start":{"line":177,"column":0},"end":{"line":177,"column":13}},"177":{"start":{"line":178,"column":0},"end":{"line":178,"column":19}},"178":{"start":{"line":179,"column":0},"end":{"line":179,"column":26}},"179":{"start":{"line":180,"column":0},"end":{"line":180,"column":1}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"38":1,"39":1,"40":1,"41":1,"42":1,"43":1,"44":1,"45":1,"46":1,"47":1,"48":1,"49":1,"50":1,"51":1,"52":1,"53":1,"54":1,"55":1,"56":1,"57":1,"58":1,"59":1,"60":1,"61":1,"62":1,"63":1,"64":1,"65":1,"66":1,"67":1,"68":1,"69":1,"70":1,"71":1,"72":1,"73":1,"74":1,"75":1,"76":1,"77":1,"78":1,"79":1,"80":1,"81":1,"82":1,"83":1,"84":1,"85":1,"86":1,"87":1,"88":1,"89":1,"90":1,"91":1,"92":1,"93":1,"94":1,"95":1,"96":1,"97":1,"98":1,"99":1,"100":1,"101":1,"102":1,"103":1,"104":1,"105":1,"106":1,"107":1,"108":1,"109":1,"110":1,"111":1,"112":1,"113":1,"114":1,"115":1,"116":1,"117":1,"118":1,"119":1,"120":108,"121":108,"122":130,"123":130,"124":106,"125":130,"126":14,"127":130,"128":10,"129":130,"130":0,"131":130,"132":108,"133":1,"134":1,"135":1,"136":1,"137":1,"138":1,"139":1,"140":1,"141":1,"142":1,"143":1,"144":1,"145":1,"146":1,"147":1,"148":1,"149":1,"150":1,"151":1,"152":1,"153":1,"154":1,"155":1,"156":1,"157":1,"158":1,"159":1,"160":1,"161":1,"162":1,"163":1,"164":1,"165":1,"166":1,"167":1,"168":1,"169":1,"170":1,"171":1,"172":1,"173":1,"174":1,"175":1,"176":1,"177":1,"178":1,"179":1},"branchMap":{"0":{"type":"branch","line":90,"loc":{"start":{"line":90,"column":8},"end":{"line":90,"column":24}},"locations":[{"start":{"line":90,"column":8},"end":{"line":90,"column":24}}]},"1":{"type":"branch","line":101,"loc":{"start":{"line":101,"column":8},"end":{"line":101,"column":25}},"locations":[{"start":{"line":101,"column":8},"end":{"line":101,"column":25}}]},"2":{"type":"branch","line":120,"loc":{"start":{"line":120,"column":13},"end":{"line":134,"column":3}},"locations":[{"start":{"line":120,"column":13},"end":{"line":134,"column":3}}]},"3":{"type":"branch","line":122,"loc":{"start":{"line":122,"column":24},"end":{"line":133,"column":5}},"locations":[{"start":{"line":122,"column":24},"end":{"line":133,"column":5}}]},"4":{"type":"branch","line":124,"loc":{"start":{"line":124,"column":8},"end":{"line":125,"column":53}},"locations":[{"start":{"line":124,"column":8},"end":{"line":125,"column":53}}]},"5":{"type":"branch","line":126,"loc":{"start":{"line":126,"column":8},"end":{"line":127,"column":52}},"locations":[{"start":{"line":126,"column":8},"end":{"line":127,"column":52}}]},"6":{"type":"branch","line":128,"loc":{"start":{"line":128,"column":8},"end":{"line":129,"column":53}},"locations":[{"start":{"line":128,"column":8},"end":{"line":129,"column":53}}]},"7":{"type":"branch","line":130,"loc":{"start":{"line":130,"column":8},"end":{"line":131,"column":76}},"locations":[{"start":{"line":130,"column":8},"end":{"line":131,"column":76}}]},"8":{"type":"branch","line":144,"loc":{"start":{"line":144,"column":8},"end":{"line":144,"column":27}},"locations":[{"start":{"line":144,"column":8},"end":{"line":144,"column":27}}]},"9":{"type":"branch","line":154,"loc":{"start":{"line":154,"column":8},"end":{"line":154,"column":28}},"locations":[{"start":{"line":154,"column":8},"end":{"line":154,"column":28}}]},"10":{"type":"branch","line":170,"loc":{"start":{"line":170,"column":8},"end":{"line":170,"column":27}},"locations":[{"start":{"line":170,"column":8},"end":{"line":170,"column":27}}]},"11":{"type":"branch","line":173,"loc":{"start":{"line":173,"column":8},"end":{"line":173,"column":31}},"locations":[{"start":{"line":173,"column":8},"end":{"line":173,"column":31}}]},"12":{"type":"branch","line":176,"loc":{"start":{"line":176,"column":8},"end":{"line":176,"column":27}},"locations":[{"start":{"line":176,"column":8},"end":{"line":176,"column":27}}]}},"b":{"0":[6],"1":[106],"2":[108],"3":[130],"4":[106],"5":[14],"6":[10],"7":[0],"8":[50],"9":[108],"10":[50],"11":[46],"12":[48]},"fnMap":{},"f":{}},"/Users/scotttwiname/Projects/subql-main/packages/common-substrate/src/project/types.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/common-substrate/src/project/types.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":49}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":51}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":0}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":78}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":8}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":26}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":25}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":19}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":23}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":45}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":57}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":23}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":22}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":23}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":31}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":32}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":26}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":60}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":22}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":0}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":45}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":78}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1},"branchMap":{"0":{"type":"branch","line":12,"loc":{"start":{"line":12,"column":2},"end":{"line":12,"column":23}},"locations":[{"start":{"line":12,"column":2},"end":{"line":12,"column":23}}]}},"b":{"0":[21]},"fnMap":{"0":{"name":"get","decl":{"start":{"line":12,"column":2},"end":{"line":12,"column":23}},"loc":{"start":{"line":12,"column":2},"end":{"line":12,"column":23}},"line":12},"1":{"name":"get","decl":{"start":{"line":20,"column":2},"end":{"line":20,"column":26}},"loc":{"start":{"line":20,"column":2},"end":{"line":20,"column":26}},"line":20}},"f":{"0":21,"1":0}},"/Users/scotttwiname/Projects/subql-main/packages/common-substrate/src/project/utils.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/common-substrate/src/project/utils.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":8}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":30}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":28}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":22}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":26}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":23}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":29}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":27}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":28}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":19}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":25}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":22}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":57}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":27}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":0}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":78}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":67}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":72}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":59}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":1}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":0}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":78}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":67}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":72}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":59}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":1}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":0}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":77}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":67}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":71}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":58}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":1}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":0}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":79}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":71}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":47}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":113}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":1}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":0}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":88}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":53}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":1}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":0}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":37}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":21}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":21}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":78}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":102}},"51":{"start":{"line":52,"column":0},"end":{"line":52,"column":1}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":0,"19":0,"20":0,"21":0,"22":0,"23":1,"24":0,"25":0,"26":0,"27":0,"28":0,"29":1,"30":0,"31":0,"32":0,"33":0,"34":0,"35":1,"36":39,"37":39,"38":39,"39":39,"40":39,"41":1,"42":24,"43":24,"44":24,"45":1,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0},"branchMap":{"0":{"type":"branch","line":37,"loc":{"start":{"line":37,"column":0},"end":{"line":41,"column":1}},"locations":[{"start":{"line":37,"column":0},"end":{"line":41,"column":1}}]},"1":{"type":"branch","line":40,"loc":{"start":{"line":40,"column":52},"end":{"line":40,"column":112}},"locations":[{"start":{"line":40,"column":52},"end":{"line":40,"column":112}}]},"2":{"type":"branch","line":43,"loc":{"start":{"line":43,"column":0},"end":{"line":45,"column":1}},"locations":[{"start":{"line":43,"column":0},"end":{"line":45,"column":1}}]}},"b":{"0":[39],"1":[11],"2":[24]},"fnMap":{"0":{"name":"isBlockHandlerProcessor","decl":{"start":{"line":19,"column":0},"end":{"line":23,"column":1}},"loc":{"start":{"line":19,"column":0},"end":{"line":23,"column":1}},"line":19},"1":{"name":"isEventHandlerProcessor","decl":{"start":{"line":25,"column":0},"end":{"line":29,"column":1}},"loc":{"start":{"line":25,"column":0},"end":{"line":29,"column":1}},"line":25},"2":{"name":"isCallHandlerProcessor","decl":{"start":{"line":31,"column":0},"end":{"line":35,"column":1}},"loc":{"start":{"line":31,"column":0},"end":{"line":35,"column":1}},"line":31},"3":{"name":"isCustomDs","decl":{"start":{"line":37,"column":0},"end":{"line":41,"column":1}},"loc":{"start":{"line":37,"column":0},"end":{"line":41,"column":1}},"line":37},"4":{"name":"isRuntimeDs","decl":{"start":{"line":43,"column":0},"end":{"line":45,"column":1}},"loc":{"start":{"line":43,"column":0},"end":{"line":45,"column":1}},"line":43},"5":{"name":"isSubstrateTemplates","decl":{"start":{"line":47,"column":0},"end":{"line":52,"column":1}},"loc":{"start":{"line":47,"column":0},"end":{"line":52,"column":1}},"line":47}},"f":{"0":0,"1":0,"2":0,"3":39,"4":24,"5":0}},"/Users/scotttwiname/Projects/subql-main/packages/common-substrate/src/project/versioned/ProjectManifestVersioned.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/common-substrate/src/project/versioned/ProjectManifestVersioned.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":49}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":47}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":51}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":51}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":61}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":0}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":77}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":38}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":37}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":2}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":0}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":58}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":0}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":95}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":0}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":110}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":42}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":1}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":0}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":85}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":38}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":0}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":58}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":88}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":17}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":77}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":5}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":102}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":3}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":0}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":38}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":22}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":3}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":0}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":27}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":40}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":3}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":0}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":45}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":51}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":3}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":0}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":38}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":42}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":3}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":0}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":20}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":33}},"51":{"start":{"line":52,"column":0},"end":{"line":52,"column":3}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":0}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":44}},"54":{"start":{"line":55,"column":0},"end":{"line":55,"column":34}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":3}},"56":{"start":{"line":57,"column":0},"end":{"line":57,"column":0}},"57":{"start":{"line":58,"column":0},"end":{"line":58,"column":24}},"58":{"start":{"line":59,"column":0},"end":{"line":59,"column":34}},"59":{"start":{"line":60,"column":0},"end":{"line":60,"column":3}},"60":{"start":{"line":61,"column":0},"end":{"line":61,"column":0}},"61":{"start":{"line":62,"column":0},"end":{"line":62,"column":29}},"62":{"start":{"line":63,"column":0},"end":{"line":63,"column":34}},"63":{"start":{"line":64,"column":0},"end":{"line":64,"column":3}},"64":{"start":{"line":65,"column":0},"end":{"line":65,"column":0}},"65":{"start":{"line":66,"column":0},"end":{"line":66,"column":29}},"66":{"start":{"line":67,"column":0},"end":{"line":67,"column":34}},"67":{"start":{"line":68,"column":0},"end":{"line":68,"column":3}},"68":{"start":{"line":69,"column":0},"end":{"line":69,"column":0}},"69":{"start":{"line":70,"column":0},"end":{"line":70,"column":28}},"70":{"start":{"line":71,"column":0},"end":{"line":71,"column":33}},"71":{"start":{"line":72,"column":0},"end":{"line":72,"column":3}},"72":{"start":{"line":73,"column":0},"end":{"line":73,"column":1}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":0,"19":0,"20":0,"21":1,"22":1,"23":1,"24":1,"25":1,"26":67,"27":67,"28":1,"29":1,"30":66,"31":66,"32":1,"33":1,"34":10,"35":10,"36":1,"37":1,"38":42,"39":42,"40":1,"41":1,"42":46,"43":46,"44":1,"45":1,"46":3,"47":3,"48":1,"49":1,"50":66,"51":66,"52":1,"53":1,"54":0,"55":0,"56":1,"57":1,"58":0,"59":0,"60":1,"61":1,"62":42,"63":42,"64":1,"65":1,"66":0,"67":0,"68":1,"69":1,"70":0,"71":0,"72":1},"branchMap":{"0":{"type":"branch","line":26,"loc":{"start":{"line":26,"column":2},"end":{"line":32,"column":3}},"locations":[{"start":{"line":26,"column":2},"end":{"line":32,"column":3}}]},"1":{"type":"branch","line":28,"loc":{"start":{"line":28,"column":16},"end":{"line":30,"column":5}},"locations":[{"start":{"line":28,"column":16},"end":{"line":30,"column":5}}]},"2":{"type":"branch","line":31,"loc":{"start":{"line":31,"column":-1},"end":{"line":32,"column":3}},"locations":[{"start":{"line":31,"column":-1},"end":{"line":32,"column":3}}]},"3":{"type":"branch","line":34,"loc":{"start":{"line":34,"column":2},"end":{"line":36,"column":3}},"locations":[{"start":{"line":34,"column":2},"end":{"line":36,"column":3}}]},"4":{"type":"branch","line":38,"loc":{"start":{"line":38,"column":2},"end":{"line":40,"column":3}},"locations":[{"start":{"line":38,"column":2},"end":{"line":40,"column":3}}]},"5":{"type":"branch","line":42,"loc":{"start":{"line":42,"column":2},"end":{"line":44,"column":3}},"locations":[{"start":{"line":42,"column":2},"end":{"line":44,"column":3}}]},"6":{"type":"branch","line":46,"loc":{"start":{"line":46,"column":2},"end":{"line":48,"column":3}},"locations":[{"start":{"line":46,"column":2},"end":{"line":48,"column":3}}]},"7":{"type":"branch","line":50,"loc":{"start":{"line":50,"column":2},"end":{"line":52,"column":3}},"locations":[{"start":{"line":50,"column":2},"end":{"line":52,"column":3}}]},"8":{"type":"branch","line":62,"loc":{"start":{"line":62,"column":2},"end":{"line":64,"column":3}},"locations":[{"start":{"line":62,"column":2},"end":{"line":64,"column":3}}]}},"b":{"0":[67],"1":[1],"2":[66],"3":[10],"4":[42],"5":[46],"6":[3],"7":[66],"8":[42]},"fnMap":{"0":{"name":"manifestIsV1_0_0","decl":{"start":{"line":19,"column":0},"end":{"line":21,"column":1}},"loc":{"start":{"line":19,"column":0},"end":{"line":21,"column":1}},"line":19},"1":{"name":"SubstrateProjectManifestVersioned","decl":{"start":{"line":26,"column":2},"end":{"line":32,"column":3}},"loc":{"start":{"line":26,"column":2},"end":{"line":32,"column":3}},"line":26},"2":{"name":"get asImpl","decl":{"start":{"line":34,"column":2},"end":{"line":36,"column":3}},"loc":{"start":{"line":34,"column":2},"end":{"line":36,"column":3}},"line":34},"3":{"name":"get isV1_0_0","decl":{"start":{"line":38,"column":2},"end":{"line":40,"column":3}},"loc":{"start":{"line":38,"column":2},"end":{"line":40,"column":3}},"line":38},"4":{"name":"get asV1_0_0","decl":{"start":{"line":42,"column":2},"end":{"line":44,"column":3}},"loc":{"start":{"line":42,"column":2},"end":{"line":44,"column":3}},"line":42},"5":{"name":"toDeployment","decl":{"start":{"line":46,"column":2},"end":{"line":48,"column":3}},"loc":{"start":{"line":46,"column":2},"end":{"line":48,"column":3}},"line":46},"6":{"name":"validate","decl":{"start":{"line":50,"column":2},"end":{"line":52,"column":3}},"loc":{"start":{"line":50,"column":2},"end":{"line":52,"column":3}},"line":50},"7":{"name":"get dataSources","decl":{"start":{"line":54,"column":2},"end":{"line":56,"column":3}},"loc":{"start":{"line":54,"column":2},"end":{"line":56,"column":3}},"line":54},"8":{"name":"get schema","decl":{"start":{"line":58,"column":2},"end":{"line":60,"column":3}},"loc":{"start":{"line":58,"column":2},"end":{"line":60,"column":3}},"line":58},"9":{"name":"get specVersion","decl":{"start":{"line":62,"column":2},"end":{"line":64,"column":3}},"loc":{"start":{"line":62,"column":2},"end":{"line":64,"column":3}},"line":62},"10":{"name":"get description","decl":{"start":{"line":66,"column":2},"end":{"line":68,"column":3}},"loc":{"start":{"line":66,"column":2},"end":{"line":68,"column":3}},"line":66},"11":{"name":"get repository","decl":{"start":{"line":70,"column":2},"end":{"line":72,"column":3}},"loc":{"start":{"line":70,"column":2},"end":{"line":72,"column":3}},"line":70}},"f":{"0":0,"1":67,"2":10,"3":42,"4":46,"5":3,"6":66,"7":0,"8":0,"9":42,"10":0,"11":0}},"/Users/scotttwiname/Projects/subql-main/packages/common-substrate/src/project/versioned/index.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/common-substrate/src/project/versioned/index.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":43}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":25}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1},"branchMap":{},"b":{},"fnMap":{},"f":{}},"/Users/scotttwiname/Projects/subql-main/packages/common-substrate/src/project/versioned/v1_0_0/index.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/common-substrate/src/project/versioned/v1_0_0/index.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":24}}},"s":{"0":1,"1":1,"2":1,"3":1},"branchMap":{},"b":{},"fnMap":{},"f":{}},"/Users/scotttwiname/Projects/subql-main/packages/common-substrate/src/project/versioned/v1_0_0/model.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/common-substrate/src/project/versioned/v1_0_0/model.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":8}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":23}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":11}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":21}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":26}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":17}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":23}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":17}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":29}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":23}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":8}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":28}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":29}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":27}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":28}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":33}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":22}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":95}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":86}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":108}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":73}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":0}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":42}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":0}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":61}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":118}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":15}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":1}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":0}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":113}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":20}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":74}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":3}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":1}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":0}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":116}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":36}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":44}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":1}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":20}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":73}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":3}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":1}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":0}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":120}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":13}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":15}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":1}},"51":{"start":{"line":52,"column":0},"end":{"line":52,"column":0}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":117}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":13}},"54":{"start":{"line":55,"column":0},"end":{"line":55,"column":15}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":1}},"56":{"start":{"line":57,"column":0},"end":{"line":57,"column":0}},"57":{"start":{"line":58,"column":0},"end":{"line":58,"column":62}},"58":{"start":{"line":59,"column":0},"end":{"line":59,"column":13}},"59":{"start":{"line":60,"column":0},"end":{"line":60,"column":19}},"60":{"start":{"line":61,"column":0},"end":{"line":61,"column":38}},"61":{"start":{"line":62,"column":0},"end":{"line":62,"column":17}},"62":{"start":{"line":63,"column":0},"end":{"line":63,"column":13}},"63":{"start":{"line":64,"column":0},"end":{"line":64,"column":19}},"64":{"start":{"line":65,"column":0},"end":{"line":65,"column":35}},"65":{"start":{"line":66,"column":0},"end":{"line":66,"column":19}},"66":{"start":{"line":67,"column":0},"end":{"line":67,"column":1}},"67":{"start":{"line":68,"column":0},"end":{"line":68,"column":0}},"68":{"start":{"line":69,"column":0},"end":{"line":69,"column":45}},"69":{"start":{"line":70,"column":0},"end":{"line":70,"column":45}},"70":{"start":{"line":71,"column":0},"end":{"line":71,"column":15}},"71":{"start":{"line":72,"column":0},"end":{"line":72,"column":58}},"72":{"start":{"line":73,"column":0},"end":{"line":73,"column":13}},"73":{"start":{"line":74,"column":0},"end":{"line":74,"column":18}},"74":{"start":{"line":75,"column":0},"end":{"line":75,"column":19}},"75":{"start":{"line":76,"column":0},"end":{"line":76,"column":23}},"76":{"start":{"line":77,"column":0},"end":{"line":77,"column":15}},"77":{"start":{"line":78,"column":0},"end":{"line":78,"column":24}},"78":{"start":{"line":79,"column":0},"end":{"line":79,"column":15}},"79":{"start":{"line":80,"column":0},"end":{"line":80,"column":12}},"80":{"start":{"line":81,"column":0},"end":{"line":81,"column":37}},"81":{"start":{"line":82,"column":0},"end":{"line":82,"column":1}},"82":{"start":{"line":83,"column":0},"end":{"line":83,"column":0}},"83":{"start":{"line":84,"column":0},"end":{"line":84,"column":80}},"84":{"start":{"line":85,"column":0},"end":{"line":85,"column":23}},"85":{"start":{"line":86,"column":0},"end":{"line":86,"column":15}},"86":{"start":{"line":87,"column":0},"end":{"line":87,"column":24}},"87":{"start":{"line":88,"column":0},"end":{"line":88,"column":1}},"88":{"start":{"line":89,"column":0},"end":{"line":89,"column":0}},"89":{"start":{"line":90,"column":0},"end":{"line":90,"column":60}},"90":{"start":{"line":91,"column":0},"end":{"line":91,"column":26}},"91":{"start":{"line":92,"column":0},"end":{"line":92,"column":60}},"92":{"start":{"line":93,"column":0},"end":{"line":93,"column":54}},"93":{"start":{"line":94,"column":0},"end":{"line":94,"column":5}},"94":{"start":{"line":95,"column":0},"end":{"line":95,"column":73}},"95":{"start":{"line":96,"column":0},"end":{"line":96,"column":4}},"96":{"start":{"line":97,"column":0},"end":{"line":97,"column":19}},"97":{"start":{"line":98,"column":0},"end":{"line":98,"column":45}},"98":{"start":{"line":99,"column":0},"end":{"line":99,"column":42}},"99":{"start":{"line":100,"column":0},"end":{"line":100,"column":13}},"100":{"start":{"line":101,"column":0},"end":{"line":101,"column":19}},"101":{"start":{"line":102,"column":0},"end":{"line":102,"column":39}},"102":{"start":{"line":103,"column":0},"end":{"line":103,"column":22}},"103":{"start":{"line":104,"column":0},"end":{"line":104,"column":12}},"104":{"start":{"line":105,"column":0},"end":{"line":105,"column":19}},"105":{"start":{"line":106,"column":0},"end":{"line":106,"column":46}},"106":{"start":{"line":107,"column":0},"end":{"line":107,"column":20}},"107":{"start":{"line":108,"column":0},"end":{"line":108,"column":23}},"108":{"start":{"line":109,"column":0},"end":{"line":109,"column":85}},"109":{"start":{"line":110,"column":0},"end":{"line":110,"column":6}},"110":{"start":{"line":111,"column":0},"end":{"line":111,"column":36}},"111":{"start":{"line":112,"column":0},"end":{"line":112,"column":4}},"112":{"start":{"line":113,"column":0},"end":{"line":113,"column":74}},"113":{"start":{"line":114,"column":0},"end":{"line":114,"column":15}},"114":{"start":{"line":115,"column":0},"end":{"line":115,"column":12}},"115":{"start":{"line":116,"column":0},"end":{"line":116,"column":19}},"116":{"start":{"line":117,"column":0},"end":{"line":117,"column":45}},"117":{"start":{"line":118,"column":0},"end":{"line":118,"column":20}},"118":{"start":{"line":119,"column":0},"end":{"line":119,"column":23}},"119":{"start":{"line":120,"column":0},"end":{"line":120,"column":84}},"120":{"start":{"line":121,"column":0},"end":{"line":121,"column":6}},"121":{"start":{"line":122,"column":0},"end":{"line":122,"column":36}},"122":{"start":{"line":123,"column":0},"end":{"line":123,"column":4}},"123":{"start":{"line":124,"column":0},"end":{"line":124,"column":71}},"124":{"start":{"line":125,"column":0},"end":{"line":125,"column":1}},"125":{"start":{"line":126,"column":0},"end":{"line":126,"column":0}},"126":{"start":{"line":127,"column":0},"end":{"line":127,"column":38}},"127":{"start":{"line":128,"column":0},"end":{"line":128,"column":51}},"128":{"start":{"line":129,"column":0},"end":{"line":129,"column":43}},"129":{"start":{"line":130,"column":0},"end":{"line":130,"column":1}},"130":{"start":{"line":131,"column":0},"end":{"line":131,"column":17}},"131":{"start":{"line":132,"column":0},"end":{"line":132,"column":28}},"132":{"start":{"line":133,"column":0},"end":{"line":133,"column":3}},"133":{"start":{"line":134,"column":0},"end":{"line":134,"column":0}},"134":{"start":{"line":135,"column":0},"end":{"line":135,"column":18}},"135":{"start":{"line":136,"column":0},"end":{"line":136,"column":22}},"136":{"start":{"line":137,"column":0},"end":{"line":137,"column":46}},"137":{"start":{"line":138,"column":0},"end":{"line":138,"column":20}},"138":{"start":{"line":139,"column":0},"end":{"line":139,"column":23}},"139":{"start":{"line":140,"column":0},"end":{"line":140,"column":85}},"140":{"start":{"line":141,"column":0},"end":{"line":141,"column":6}},"141":{"start":{"line":142,"column":0},"end":{"line":142,"column":36}},"142":{"start":{"line":143,"column":0},"end":{"line":143,"column":4}},"143":{"start":{"line":144,"column":0},"end":{"line":144,"column":74}},"144":{"start":{"line":145,"column":0},"end":{"line":145,"column":35}},"145":{"start":{"line":146,"column":0},"end":{"line":146,"column":32}},"146":{"start":{"line":147,"column":0},"end":{"line":147,"column":15}},"147":{"start":{"line":148,"column":0},"end":{"line":148,"column":13}},"148":{"start":{"line":149,"column":0},"end":{"line":149,"column":16}},"149":{"start":{"line":150,"column":0},"end":{"line":150,"column":13}},"150":{"start":{"line":151,"column":0},"end":{"line":151,"column":18}},"151":{"start":{"line":152,"column":0},"end":{"line":152,"column":19}},"152":{"start":{"line":153,"column":0},"end":{"line":153,"column":23}},"153":{"start":{"line":154,"column":0},"end":{"line":154,"column":19}},"154":{"start":{"line":155,"column":0},"end":{"line":155,"column":15}},"155":{"start":{"line":156,"column":0},"end":{"line":156,"column":12}},"156":{"start":{"line":157,"column":0},"end":{"line":157,"column":19}},"157":{"start":{"line":158,"column":0},"end":{"line":158,"column":45}},"158":{"start":{"line":159,"column":0},"end":{"line":159,"column":20}},"159":{"start":{"line":160,"column":0},"end":{"line":160,"column":23}},"160":{"start":{"line":161,"column":0},"end":{"line":161,"column":84}},"161":{"start":{"line":162,"column":0},"end":{"line":162,"column":6}},"162":{"start":{"line":163,"column":0},"end":{"line":163,"column":36}},"163":{"start":{"line":164,"column":0},"end":{"line":164,"column":4}},"164":{"start":{"line":165,"column":0},"end":{"line":165,"column":71}},"165":{"start":{"line":166,"column":0},"end":{"line":166,"column":13}},"166":{"start":{"line":167,"column":0},"end":{"line":167,"column":19}},"167":{"start":{"line":168,"column":0},"end":{"line":168,"column":39}},"168":{"start":{"line":169,"column":0},"end":{"line":169,"column":22}},"169":{"start":{"line":170,"column":0},"end":{"line":170,"column":0}},"170":{"start":{"line":171,"column":0},"end":{"line":171,"column":15}},"171":{"start":{"line":172,"column":0},"end":{"line":172,"column":13}},"172":{"start":{"line":173,"column":0},"end":{"line":173,"column":33}},"173":{"start":{"line":174,"column":0},"end":{"line":174,"column":25}},"174":{"start":{"line":175,"column":0},"end":{"line":175,"column":1}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":0,"35":0,"36":1,"37":1,"38":1,"39":1,"40":1,"41":1,"42":1,"43":0,"44":0,"45":1,"46":1,"47":1,"48":1,"49":1,"50":1,"51":1,"52":1,"53":1,"54":1,"55":1,"56":1,"57":1,"58":1,"59":1,"60":1,"61":1,"62":1,"63":1,"64":1,"65":1,"66":1,"67":1,"68":1,"69":1,"70":1,"71":1,"72":1,"73":1,"74":1,"75":1,"76":1,"77":1,"78":1,"79":1,"80":1,"81":1,"82":1,"83":1,"84":1,"85":1,"86":1,"87":1,"88":1,"89":1,"90":1,"91":66,"92":9,"93":9,"94":66,"95":1,"96":1,"97":1,"98":1,"99":1,"100":1,"101":1,"102":1,"103":1,"104":1,"105":1,"106":1,"107":1,"108":1,"109":1,"110":1,"111":1,"112":1,"113":1,"114":1,"115":1,"116":1,"117":1,"118":1,"119":1,"120":1,"121":1,"122":1,"123":1,"124":1,"125":1,"126":1,"127":1,"128":1,"129":1,"130":1,"131":66,"132":66,"133":1,"134":1,"135":1,"136":1,"137":1,"138":1,"139":1,"140":1,"141":1,"142":1,"143":1,"144":1,"145":1,"146":1,"147":1,"148":1,"149":1,"150":1,"151":1,"152":1,"153":1,"154":1,"155":1,"156":1,"157":1,"158":1,"159":1,"160":1,"161":1,"162":1,"163":1,"164":1,"165":1,"166":1,"167":1,"168":1,"169":1,"170":1,"171":1,"172":1,"173":1,"174":1},"branchMap":{"0":{"type":"branch","line":61,"loc":{"start":{"line":61,"column":8},"end":{"line":61,"column":37}},"locations":[{"start":{"line":61,"column":8},"end":{"line":61,"column":37}}]},"1":{"type":"branch","line":65,"loc":{"start":{"line":65,"column":8},"end":{"line":65,"column":34}},"locations":[{"start":{"line":65,"column":8},"end":{"line":65,"column":34}}]},"2":{"type":"branch","line":72,"loc":{"start":{"line":72,"column":13},"end":{"line":72,"column":57}},"locations":[{"start":{"line":72,"column":13},"end":{"line":72,"column":57}}]},"3":{"type":"branch","line":76,"loc":{"start":{"line":76,"column":8},"end":{"line":76,"column":22}},"locations":[{"start":{"line":76,"column":8},"end":{"line":76,"column":22}}]},"4":{"type":"branch","line":85,"loc":{"start":{"line":85,"column":8},"end":{"line":85,"column":22}},"locations":[{"start":{"line":85,"column":8},"end":{"line":85,"column":22}}]},"5":{"type":"branch","line":91,"loc":{"start":{"line":91,"column":13},"end":{"line":96,"column":3}},"locations":[{"start":{"line":91,"column":13},"end":{"line":96,"column":3}}]},"6":{"type":"branch","line":92,"loc":{"start":{"line":92,"column":32},"end":{"line":92,"column":57}},"locations":[{"start":{"line":92,"column":32},"end":{"line":92,"column":57}}]},"7":{"type":"branch","line":92,"loc":{"start":{"line":92,"column":59},"end":{"line":94,"column":5}},"locations":[{"start":{"line":92,"column":59},"end":{"line":94,"column":5}}]},"8":{"type":"branch","line":98,"loc":{"start":{"line":98,"column":8},"end":{"line":98,"column":44}},"locations":[{"start":{"line":98,"column":8},"end":{"line":98,"column":44}}]},"9":{"type":"branch","line":102,"loc":{"start":{"line":102,"column":8},"end":{"line":102,"column":38}},"locations":[{"start":{"line":102,"column":8},"end":{"line":102,"column":38}}]},"10":{"type":"branch","line":106,"loc":{"start":{"line":106,"column":8},"end":{"line":106,"column":43}},"locations":[{"start":{"line":106,"column":8},"end":{"line":106,"column":43}}]},"11":{"type":"branch","line":117,"loc":{"start":{"line":117,"column":8},"end":{"line":117,"column":42}},"locations":[{"start":{"line":117,"column":8},"end":{"line":117,"column":42}}]},"12":{"type":"branch","line":131,"loc":{"start":{"line":131,"column":2},"end":{"line":133,"column":3}},"locations":[{"start":{"line":131,"column":2},"end":{"line":133,"column":3}}]},"13":{"type":"branch","line":137,"loc":{"start":{"line":137,"column":8},"end":{"line":137,"column":43}},"locations":[{"start":{"line":137,"column":8},"end":{"line":137,"column":43}}]},"14":{"type":"branch","line":145,"loc":{"start":{"line":145,"column":8},"end":{"line":145,"column":34}},"locations":[{"start":{"line":145,"column":8},"end":{"line":145,"column":34}}]},"15":{"type":"branch","line":153,"loc":{"start":{"line":153,"column":8},"end":{"line":153,"column":22}},"locations":[{"start":{"line":153,"column":8},"end":{"line":153,"column":22}}]},"16":{"type":"branch","line":158,"loc":{"start":{"line":158,"column":8},"end":{"line":158,"column":42}},"locations":[{"start":{"line":158,"column":8},"end":{"line":158,"column":42}}]},"17":{"type":"branch","line":168,"loc":{"start":{"line":168,"column":8},"end":{"line":168,"column":38}},"locations":[{"start":{"line":168,"column":8},"end":{"line":168,"column":38}}]},"18":{"type":"branch","line":173,"loc":{"start":{"line":173,"column":8},"end":{"line":173,"column":32}},"locations":[{"start":{"line":173,"column":8},"end":{"line":173,"column":32}}]}},"b":{"0":[132],"1":[132],"2":[123],"3":[32],"4":[16],"5":[66],"6":[11],"7":[9],"8":[66],"9":[66],"10":[135],"11":[20],"12":[66],"13":[135],"14":[66],"15":[66],"16":[20],"17":[66],"18":[15]},"fnMap":{"0":{"name":"validate","decl":{"start":{"line":34,"column":2},"end":{"line":36,"column":3}},"loc":{"start":{"line":34,"column":2},"end":{"line":36,"column":3}},"line":34},"1":{"name":"validate","decl":{"start":{"line":43,"column":2},"end":{"line":45,"column":3}},"loc":{"start":{"line":43,"column":2},"end":{"line":45,"column":3}},"line":43},"2":{"name":"Object..__decorate.discriminator.property","decl":{"start":{"line":106,"column":8},"end":{"line":106,"column":43}},"loc":{"start":{"line":106,"column":8},"end":{"line":106,"column":43}},"line":106},"3":{"name":"Object..__decorate.discriminator.property","decl":{"start":{"line":117,"column":8},"end":{"line":117,"column":42}},"loc":{"start":{"line":117,"column":8},"end":{"line":117,"column":42}},"line":117},"4":{"name":"ProjectManifestV1_0_0Impl","decl":{"start":{"line":131,"column":2},"end":{"line":133,"column":3}},"loc":{"start":{"line":131,"column":2},"end":{"line":133,"column":3}},"line":131},"5":{"name":"Object..__decorate.discriminator.property","decl":{"start":{"line":137,"column":8},"end":{"line":137,"column":43}},"loc":{"start":{"line":137,"column":8},"end":{"line":137,"column":43}},"line":137},"6":{"name":"Object..__decorate.discriminator.property","decl":{"start":{"line":158,"column":8},"end":{"line":158,"column":42}},"loc":{"start":{"line":158,"column":8},"end":{"line":158,"column":42}},"line":158}},"f":{"0":0,"1":0,"2":135,"3":20,"4":66,"5":135,"6":20}},"/Users/scotttwiname/Projects/subql-main/packages/common/src/constants.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/common/src/constants.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":15}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":33}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":0}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":6}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":63}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":62}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":61}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":63}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":40}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":0}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":11}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":70}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":0}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":6}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":43}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":0}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":10}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":28}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":26}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":20}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":24}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":24}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":18}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":16}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":22}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":28}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":1}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":0}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":30}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":42}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":52}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":46}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":50}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":50}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":44}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":42}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":48}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":54}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":2}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":0}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":16}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":24}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":28}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":26}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":1}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":0}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":23}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":60}},"51":{"start":{"line":52,"column":0},"end":{"line":52,"column":0}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":62}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":42}},"54":{"start":{"line":55,"column":0},"end":{"line":55,"column":0}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":28}},"56":{"start":{"line":57,"column":0},"end":{"line":57,"column":39}},"57":{"start":{"line":58,"column":0},"end":{"line":58,"column":0}},"58":{"start":{"line":59,"column":0},"end":{"line":59,"column":21}},"59":{"start":{"line":60,"column":0},"end":{"line":60,"column":107}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":8,"21":8,"22":8,"23":8,"24":8,"25":8,"26":8,"27":8,"28":8,"29":8,"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"38":1,"39":1,"40":1,"41":1,"42":1,"43":1,"44":8,"45":8,"46":8,"47":8,"48":1,"49":1,"50":1,"51":1,"52":1,"53":1,"54":1,"55":1,"56":1,"57":1,"58":1,"59":1},"branchMap":{"0":{"type":"branch","line":21,"loc":{"start":{"line":21,"column":0},"end":{"line":30,"column":1}},"locations":[{"start":{"line":21,"column":0},"end":{"line":30,"column":1}}]},"1":{"type":"branch","line":45,"loc":{"start":{"line":45,"column":0},"end":{"line":48,"column":1}},"locations":[{"start":{"line":45,"column":0},"end":{"line":48,"column":1}}]}},"b":{"0":[8],"1":[8]},"fnMap":{},"f":{}},"/Users/scotttwiname/Projects/subql-main/packages/common/src/index.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/common/src/index.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":26}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":0}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":26}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":28}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":29}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1},"branchMap":{},"b":{},"fnMap":{},"f":{}},"/Users/scotttwiname/Projects/subql-main/packages/common/src/multichain/index.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/common/src/multichain/index.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":25}}},"s":{"0":1,"1":1,"2":1,"3":1},"branchMap":{},"b":{},"fnMap":{},"f":{}},"/Users/scotttwiname/Projects/subql-main/packages/common/src/multichain/models.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/common/src/multichain/models.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":71}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":39}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":59}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":48}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":0}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":82}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":18}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":22}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":25}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":21}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":13}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":35}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":19}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":1}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1},"branchMap":{},"b":{},"fnMap":{},"f":{}},"/Users/scotttwiname/Projects/subql-main/packages/common/src/project/database/databaseUtil.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/common/src/project/database/databaseUtil.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":45}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":24}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":43}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":0}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":83}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":68}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":62}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":52}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":78}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":114}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":17}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":66}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":3}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":17}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":1}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":20,"9":20,"10":20,"11":20,"12":20,"13":20,"14":0,"15":0,"16":20,"17":20},"branchMap":{"0":{"type":"branch","line":8,"loc":{"start":{"line":8,"column":7},"end":{"line":18,"column":1}},"locations":[{"start":{"line":8,"column":7},"end":{"line":18,"column":1}}]},"1":{"type":"branch","line":12,"loc":{"start":{"line":12,"column":61},"end":{"line":12,"column":77}},"locations":[{"start":{"line":12,"column":61},"end":{"line":12,"column":77}}]},"2":{"type":"branch","line":14,"loc":{"start":{"line":14,"column":16},"end":{"line":16,"column":3}},"locations":[{"start":{"line":14,"column":16},"end":{"line":16,"column":3}}]},"3":{"type":"branch","line":13,"loc":{"start":{"line":13,"column":49},"end":{"line":13,"column":112}},"locations":[{"start":{"line":13,"column":49},"end":{"line":13,"column":112}}]}},"b":{"0":[20],"1":[0],"2":[0],"3":[40]},"fnMap":{"0":{"name":"getDbType","decl":{"start":{"line":8,"column":7},"end":{"line":18,"column":1}},"loc":{"start":{"line":8,"column":7},"end":{"line":18,"column":1}},"line":8}},"f":{"0":20}},"/Users/scotttwiname/Projects/subql-main/packages/common/src/project/database/index.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/common/src/project/database/index.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":31}}},"s":{"0":1,"1":1,"2":1,"3":1},"branchMap":{},"b":{},"fnMap":{},"f":{}},"/Users/scotttwiname/Projects/subql-main/packages/common/src/project/index.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/common/src/project/index.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":23}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":28}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":26}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":27}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":24}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1},"branchMap":{},"b":{},"fnMap":{},"f":{}},"/Users/scotttwiname/Projects/subql-main/packages/common/src/project/load.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/common/src/project/load.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":20}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":24}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":62}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":56}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":47}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":45}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":27}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":27}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":59}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":85}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":59}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":33}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":36}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":54}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":3}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":52}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":31}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":1}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":0}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":81}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":33}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":78}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":79}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":78}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":76}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":36}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":32}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":45}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":34}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":45}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":34}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":12}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":82}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":5}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":3}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":22}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":1}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":0}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":79}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":80}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":52}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":62}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":3}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":54}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":24}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":53}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":3}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":29}},"51":{"start":{"line":52,"column":0},"end":{"line":52,"column":59}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":3}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":53}},"54":{"start":{"line":55,"column":0},"end":{"line":55,"column":1}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":0}},"56":{"start":{"line":57,"column":0},"end":{"line":57,"column":46}},"57":{"start":{"line":58,"column":0},"end":{"line":58,"column":73}},"58":{"start":{"line":59,"column":0},"end":{"line":59,"column":55}},"59":{"start":{"line":60,"column":0},"end":{"line":60,"column":103}},"60":{"start":{"line":61,"column":0},"end":{"line":61,"column":32}},"61":{"start":{"line":62,"column":0},"end":{"line":62,"column":116}},"62":{"start":{"line":63,"column":0},"end":{"line":63,"column":5}},"63":{"start":{"line":64,"column":0},"end":{"line":64,"column":19}},"64":{"start":{"line":65,"column":0},"end":{"line":65,"column":10}},"65":{"start":{"line":66,"column":0},"end":{"line":66,"column":81}},"66":{"start":{"line":67,"column":0},"end":{"line":67,"column":3}},"67":{"start":{"line":68,"column":0},"end":{"line":68,"column":1}},"68":{"start":{"line":69,"column":0},"end":{"line":69,"column":0}},"69":{"start":{"line":70,"column":0},"end":{"line":70,"column":3}},"70":{"start":{"line":71,"column":0},"end":{"line":71,"column":31}},"71":{"start":{"line":72,"column":0},"end":{"line":72,"column":56}},"72":{"start":{"line":73,"column":0},"end":{"line":73,"column":24}},"73":{"start":{"line":74,"column":0},"end":{"line":74,"column":3}},"74":{"start":{"line":75,"column":0},"end":{"line":75,"column":74}},"75":{"start":{"line":76,"column":0},"end":{"line":76,"column":29}},"76":{"start":{"line":77,"column":0},"end":{"line":77,"column":67}},"77":{"start":{"line":78,"column":0},"end":{"line":78,"column":29}},"78":{"start":{"line":79,"column":0},"end":{"line":79,"column":3}},"79":{"start":{"line":80,"column":0},"end":{"line":80,"column":0}},"80":{"start":{"line":81,"column":0},"end":{"line":81,"column":7}},"81":{"start":{"line":82,"column":0},"end":{"line":82,"column":44}},"82":{"start":{"line":83,"column":0},"end":{"line":83,"column":19}},"83":{"start":{"line":84,"column":0},"end":{"line":84,"column":66}},"84":{"start":{"line":85,"column":0},"end":{"line":85,"column":29}},"85":{"start":{"line":86,"column":0},"end":{"line":86,"column":3}},"86":{"start":{"line":87,"column":0},"end":{"line":87,"column":1}},"87":{"start":{"line":88,"column":0},"end":{"line":88,"column":0}},"88":{"start":{"line":89,"column":0},"end":{"line":89,"column":56}},"89":{"start":{"line":90,"column":0},"end":{"line":90,"column":67}},"90":{"start":{"line":91,"column":0},"end":{"line":91,"column":119}},"91":{"start":{"line":92,"column":0},"end":{"line":92,"column":66}},"92":{"start":{"line":93,"column":0},"end":{"line":93,"column":23}},"93":{"start":{"line":94,"column":0},"end":{"line":94,"column":32}},"94":{"start":{"line":95,"column":0},"end":{"line":95,"column":65}},"95":{"start":{"line":96,"column":0},"end":{"line":96,"column":64}},"96":{"start":{"line":97,"column":0},"end":{"line":97,"column":3}},"97":{"start":{"line":98,"column":0},"end":{"line":98,"column":1}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":72,"14":72,"15":72,"16":0,"17":0,"18":72,"19":72,"20":72,"21":1,"22":83,"23":83,"24":83,"25":65,"26":65,"27":65,"28":65,"29":65,"30":65,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":65,"38":83,"39":83,"40":1,"41":41,"42":41,"43":41,"44":2,"45":2,"46":39,"47":41,"48":0,"49":0,"50":41,"51":0,"52":0,"53":39,"54":39,"55":1,"56":1,"57":0,"58":0,"59":0,"60":0,"61":0,"62":0,"63":0,"64":0,"65":0,"66":0,"67":0,"68":1,"69":1,"70":1,"71":1,"72":1,"73":1,"74":0,"75":0,"76":0,"77":0,"78":0,"79":0,"80":0,"81":0,"82":0,"83":0,"84":0,"85":0,"86":0,"87":1,"88":1,"89":7,"90":7,"91":7,"92":7,"93":0,"94":0,"95":0,"96":0,"97":7},"branchMap":{"0":{"type":"branch","line":14,"loc":{"start":{"line":14,"column":0},"end":{"line":21,"column":1}},"locations":[{"start":{"line":14,"column":0},"end":{"line":21,"column":1}}]},"1":{"type":"branch","line":16,"loc":{"start":{"line":16,"column":35},"end":{"line":18,"column":3}},"locations":[{"start":{"line":16,"column":35},"end":{"line":18,"column":3}}]},"2":{"type":"branch","line":23,"loc":{"start":{"line":23,"column":0},"end":{"line":40,"column":1}},"locations":[{"start":{"line":23,"column":0},"end":{"line":40,"column":1}}]},"3":{"type":"branch","line":25,"loc":{"start":{"line":25,"column":32},"end":{"line":25,"column":75}},"locations":[{"start":{"line":25,"column":32},"end":{"line":25,"column":75}}]},"4":{"type":"branch","line":25,"loc":{"start":{"line":25,"column":77},"end":{"line":38,"column":3}},"locations":[{"start":{"line":25,"column":77},"end":{"line":38,"column":3}}]},"5":{"type":"branch","line":26,"loc":{"start":{"line":26,"column":54},"end":{"line":26,"column":77}},"locations":[{"start":{"line":26,"column":54},"end":{"line":26,"column":77}}]},"6":{"type":"branch","line":27,"loc":{"start":{"line":27,"column":56},"end":{"line":27,"column":76}},"locations":[{"start":{"line":27,"column":56},"end":{"line":27,"column":76}}]},"7":{"type":"branch","line":28,"loc":{"start":{"line":28,"column":56},"end":{"line":28,"column":74}},"locations":[{"start":{"line":28,"column":56},"end":{"line":28,"column":74}}]},"8":{"type":"branch","line":31,"loc":{"start":{"line":31,"column":5},"end":{"line":37,"column":5}},"locations":[{"start":{"line":31,"column":5},"end":{"line":37,"column":5}}]},"9":{"type":"branch","line":42,"loc":{"start":{"line":42,"column":0},"end":{"line":55,"column":1}},"locations":[{"start":{"line":42,"column":0},"end":{"line":55,"column":1}}]},"10":{"type":"branch","line":44,"loc":{"start":{"line":44,"column":51},"end":{"line":46,"column":3}},"locations":[{"start":{"line":44,"column":51},"end":{"line":46,"column":3}}]},"11":{"type":"branch","line":47,"loc":{"start":{"line":47,"column":-1},"end":{"line":48,"column":23}},"locations":[{"start":{"line":47,"column":-1},"end":{"line":48,"column":23}}]},"12":{"type":"branch","line":48,"loc":{"start":{"line":48,"column":23},"end":{"line":50,"column":3}},"locations":[{"start":{"line":48,"column":23},"end":{"line":50,"column":3}}]},"13":{"type":"branch","line":51,"loc":{"start":{"line":51,"column":-1},"end":{"line":51,"column":28}},"locations":[{"start":{"line":51,"column":-1},"end":{"line":51,"column":28}}]},"14":{"type":"branch","line":51,"loc":{"start":{"line":51,"column":28},"end":{"line":53,"column":3}},"locations":[{"start":{"line":51,"column":28},"end":{"line":53,"column":3}}]},"15":{"type":"branch","line":54,"loc":{"start":{"line":54,"column":-1},"end":{"line":55,"column":1}},"locations":[{"start":{"line":54,"column":-1},"end":{"line":55,"column":1}}]},"16":{"type":"branch","line":90,"loc":{"start":{"line":90,"column":0},"end":{"line":98,"column":1}},"locations":[{"start":{"line":90,"column":0},"end":{"line":98,"column":1}}]},"17":{"type":"branch","line":93,"loc":{"start":{"line":93,"column":22},"end":{"line":97,"column":3}},"locations":[{"start":{"line":93,"column":22},"end":{"line":97,"column":3}}]}},"b":{"0":[72],"1":[0],"2":[83],"3":[80],"4":[65],"5":[0],"6":[0],"7":[0],"8":[0],"9":[41],"10":[2],"11":[39],"12":[0],"13":[39],"14":[0],"15":[39],"16":[7],"17":[0]},"fnMap":{"0":{"name":"loadFromJsonOrYaml","decl":{"start":{"line":14,"column":0},"end":{"line":21,"column":1}},"loc":{"start":{"line":14,"column":0},"end":{"line":21,"column":1}},"line":14},"1":{"name":"getManifestPath","decl":{"start":{"line":23,"column":0},"end":{"line":40,"column":1}},"loc":{"start":{"line":23,"column":0},"end":{"line":40,"column":1}},"line":23},"2":{"name":"getSchemaPath","decl":{"start":{"line":42,"column":0},"end":{"line":55,"column":1}},"loc":{"start":{"line":42,"column":0},"end":{"line":55,"column":1}},"line":42},"3":{"name":"getProjectNetwork","decl":{"start":{"line":58,"column":0},"end":{"line":68,"column":1}},"loc":{"start":{"line":58,"column":0},"end":{"line":68,"column":1}},"line":58},"4":{"name":"getFileContent","decl":{"start":{"line":75,"column":0},"end":{"line":87,"column":1}},"loc":{"start":{"line":75,"column":0},"end":{"line":87,"column":1}},"line":75},"5":{"name":"validateCommonProjectManifest","decl":{"start":{"line":90,"column":0},"end":{"line":98,"column":1}},"loc":{"start":{"line":90,"column":0},"end":{"line":98,"column":1}},"line":90}},"f":{"0":72,"1":83,"2":41,"3":0,"4":0,"5":7}},"/Users/scotttwiname/Projects/subql-main/packages/common/src/project/readers/github-reader.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/common/src/project/readers/github-reader.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":24}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":41}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":43}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":27}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":47}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":42}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":0}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":45}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":38}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":32}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":0}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":45}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":29}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":58}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":7}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":3}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":0}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":25}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":21}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":3}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":0}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":53}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":97}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":3}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":0}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":58}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":45}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":61}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":36}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":65}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":5}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":34}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":3}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":0}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":64}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":9}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":51}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":69}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":18}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":19}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":23}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":5}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":3}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":0}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":53}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":29}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":32}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":5}},"51":{"start":{"line":52,"column":0},"end":{"line":52,"column":79}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":45}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":30}},"54":{"start":{"line":55,"column":0},"end":{"line":55,"column":3}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":1}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":2,"16":2,"17":2,"18":2,"19":1,"20":1,"21":0,"22":0,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":0,"33":0,"34":1,"35":1,"36":1,"37":1,"38":2,"39":2,"40":2,"41":2,"42":2,"43":0,"44":0,"45":2,"46":1,"47":1,"48":2,"49":1,"50":1,"51":1,"52":1,"53":1,"54":1,"55":1},"branchMap":{"0":{"type":"branch","line":15,"loc":{"start":{"line":15,"column":2},"end":{"line":19,"column":3}},"locations":[{"start":{"line":15,"column":2},"end":{"line":19,"column":3}}]},"1":{"type":"branch","line":25,"loc":{"start":{"line":25,"column":2},"end":{"line":27,"column":3}},"locations":[{"start":{"line":25,"column":2},"end":{"line":27,"column":3}}]},"2":{"type":"branch","line":29,"loc":{"start":{"line":29,"column":2},"end":{"line":36,"column":3}},"locations":[{"start":{"line":29,"column":2},"end":{"line":36,"column":3}}]},"3":{"type":"branch","line":32,"loc":{"start":{"line":32,"column":35},"end":{"line":34,"column":5}},"locations":[{"start":{"line":32,"column":35},"end":{"line":34,"column":5}}]},"4":{"type":"branch","line":38,"loc":{"start":{"line":38,"column":2},"end":{"line":46,"column":3}},"locations":[{"start":{"line":38,"column":2},"end":{"line":46,"column":3}}]},"5":{"type":"branch","line":43,"loc":{"start":{"line":43,"column":6},"end":{"line":45,"column":5}},"locations":[{"start":{"line":43,"column":6},"end":{"line":45,"column":5}}]},"6":{"type":"branch","line":48,"loc":{"start":{"line":48,"column":10},"end":{"line":55,"column":3}},"locations":[{"start":{"line":48,"column":10},"end":{"line":55,"column":3}}]},"7":{"type":"branch","line":49,"loc":{"start":{"line":49,"column":28},"end":{"line":55,"column":3}},"locations":[{"start":{"line":49,"column":28},"end":{"line":55,"column":3}}]}},"b":{"0":[2],"1":[1],"2":[1],"3":[0],"4":[2],"5":[0],"6":[2],"7":[1]},"fnMap":{"0":{"name":"GithubReader","decl":{"start":{"line":15,"column":2},"end":{"line":19,"column":3}},"loc":{"start":{"line":15,"column":2},"end":{"line":19,"column":3}},"line":15},"1":{"name":"get root","decl":{"start":{"line":21,"column":2},"end":{"line":23,"column":3}},"loc":{"start":{"line":21,"column":2},"end":{"line":23,"column":3}},"line":21},"2":{"name":"getPkg","decl":{"start":{"line":25,"column":2},"end":{"line":27,"column":3}},"loc":{"start":{"line":25,"column":2},"end":{"line":27,"column":3}},"line":25},"3":{"name":"getProjectSchema","decl":{"start":{"line":29,"column":2},"end":{"line":36,"column":3}},"loc":{"start":{"line":29,"column":2},"end":{"line":36,"column":3}},"line":29},"4":{"name":"getFile","decl":{"start":{"line":38,"column":2},"end":{"line":46,"column":3}},"loc":{"start":{"line":38,"column":2},"end":{"line":46,"column":3}},"line":38},"5":{"name":"getDefaultBranch","decl":{"start":{"line":48,"column":10},"end":{"line":55,"column":3}},"loc":{"start":{"line":48,"column":10},"end":{"line":55,"column":3}},"line":48}},"f":{"0":2,"1":0,"2":1,"3":1,"4":2,"5":2}},"/Users/scotttwiname/Projects/subql-main/packages/common/src/project/readers/index.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/common/src/project/readers/index.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":25}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":32}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":30}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":31}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1},"branchMap":{},"b":{},"fnMap":{},"f":{}},"/Users/scotttwiname/Projects/subql-main/packages/common/src/project/readers/ipfs-reader.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/common/src/project/readers/ipfs-reader.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":41}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":41}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":56}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":27}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":47}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":51}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":0}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":53}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":25}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":107}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":2}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":0}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":43}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":31}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":54}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":0}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":63}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":47}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":60}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":5}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":61}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":3}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":0}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":25}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":21}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":3}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":0}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":53}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":38}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":3}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":0}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":58}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":53}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":36}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":72}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":5}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":34}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":3}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":0}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":64}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":9}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":47}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":65}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":84}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":7}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":40}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":17}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":70}},"51":{"start":{"line":52,"column":0},"end":{"line":52,"column":23}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":5}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":3}},"54":{"start":{"line":55,"column":0},"end":{"line":55,"column":0}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":81}},"56":{"start":{"line":57,"column":0},"end":{"line":57,"column":47}},"57":{"start":{"line":58,"column":0},"end":{"line":58,"column":34}},"58":{"start":{"line":59,"column":0},"end":{"line":59,"column":34}},"59":{"start":{"line":60,"column":0},"end":{"line":60,"column":5}},"60":{"start":{"line":61,"column":0},"end":{"line":61,"column":73}},"61":{"start":{"line":62,"column":0},"end":{"line":62,"column":3}},"62":{"start":{"line":63,"column":0},"end":{"line":63,"column":1}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":10,"21":0,"22":0,"23":10,"24":10,"25":1,"26":1,"27":37,"28":37,"29":1,"30":1,"31":0,"32":0,"33":1,"34":1,"35":11,"36":11,"37":0,"38":0,"39":11,"40":11,"41":1,"42":1,"43":35,"44":35,"45":30,"46":30,"47":30,"48":35,"49":35,"50":0,"51":0,"52":0,"53":35,"54":1,"55":1,"56":30,"57":30,"58":4034,"59":4034,"60":30,"61":30,"62":1},"branchMap":{"0":{"type":"branch","line":20,"loc":{"start":{"line":20,"column":2},"end":{"line":25,"column":3}},"locations":[{"start":{"line":20,"column":2},"end":{"line":25,"column":3}}]},"1":{"type":"branch","line":21,"loc":{"start":{"line":21,"column":46},"end":{"line":23,"column":5}},"locations":[{"start":{"line":21,"column":46},"end":{"line":23,"column":5}}]},"2":{"type":"branch","line":24,"loc":{"start":{"line":24,"column":36},"end":{"line":24,"column":58}},"locations":[{"start":{"line":24,"column":36},"end":{"line":24,"column":58}}]},"3":{"type":"branch","line":27,"loc":{"start":{"line":27,"column":2},"end":{"line":29,"column":3}},"locations":[{"start":{"line":27,"column":2},"end":{"line":29,"column":3}}]},"4":{"type":"branch","line":35,"loc":{"start":{"line":35,"column":2},"end":{"line":41,"column":3}},"locations":[{"start":{"line":35,"column":2},"end":{"line":41,"column":3}}]},"5":{"type":"branch","line":37,"loc":{"start":{"line":37,"column":35},"end":{"line":39,"column":5}},"locations":[{"start":{"line":37,"column":35},"end":{"line":39,"column":5}}]},"6":{"type":"branch","line":43,"loc":{"start":{"line":43,"column":2},"end":{"line":54,"column":3}},"locations":[{"start":{"line":43,"column":2},"end":{"line":54,"column":3}}]},"7":{"type":"branch","line":45,"loc":{"start":{"line":45,"column":46},"end":{"line":48,"column":7}},"locations":[{"start":{"line":45,"column":46},"end":{"line":48,"column":7}}]},"8":{"type":"branch","line":50,"loc":{"start":{"line":50,"column":6},"end":{"line":53,"column":5}},"locations":[{"start":{"line":50,"column":6},"end":{"line":53,"column":5}}]},"9":{"type":"branch","line":56,"loc":{"start":{"line":56,"column":10},"end":{"line":62,"column":3}},"locations":[{"start":{"line":56,"column":10},"end":{"line":62,"column":3}}]},"10":{"type":"branch","line":58,"loc":{"start":{"line":58,"column":33},"end":{"line":60,"column":5}},"locations":[{"start":{"line":58,"column":33},"end":{"line":60,"column":5}}]}},"b":{"0":[10],"1":[0],"2":[0],"3":[37],"4":[11],"5":[0],"6":[35],"7":[30],"8":[0],"9":[30],"10":[4034]},"fnMap":{"0":{"name":"IPFSReader","decl":{"start":{"line":20,"column":2},"end":{"line":25,"column":3}},"loc":{"start":{"line":20,"column":2},"end":{"line":25,"column":3}},"line":20},"1":{"name":"get root","decl":{"start":{"line":27,"column":2},"end":{"line":29,"column":3}},"loc":{"start":{"line":27,"column":2},"end":{"line":29,"column":3}},"line":27},"2":{"name":"getPkg","decl":{"start":{"line":31,"column":2},"end":{"line":33,"column":3}},"loc":{"start":{"line":31,"column":2},"end":{"line":33,"column":3}},"line":31},"3":{"name":"getProjectSchema","decl":{"start":{"line":35,"column":2},"end":{"line":41,"column":3}},"loc":{"start":{"line":35,"column":2},"end":{"line":41,"column":3}},"line":35},"4":{"name":"getFile","decl":{"start":{"line":43,"column":2},"end":{"line":54,"column":3}},"loc":{"start":{"line":43,"column":2},"end":{"line":54,"column":3}},"line":43},"5":{"name":"resultToBuffer","decl":{"start":{"line":56,"column":10},"end":{"line":62,"column":3}},"loc":{"start":{"line":56,"column":10},"end":{"line":62,"column":3}},"line":56}},"f":{"0":10,"1":37,"2":0,"3":11,"4":35,"5":30}},"/Users/scotttwiname/Projects/subql-main/packages/common/src/project/readers/local-reader.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/common/src/project/readers/local-reader.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":25}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":29}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":41}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":27}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":47}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":52}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":0}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":44}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":93}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":0}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":22}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":42}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":3}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":0}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":53}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":73}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":3}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":0}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":72}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":44}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":40}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":5}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":48}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":37}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":68}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":5}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":3}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":0}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":64}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":58}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":31}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":40}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":5}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":9}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":44}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":17}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":23}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":5}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":3}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":1}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":19,"15":19,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":16,"23":0,"24":0,"25":16,"26":16,"27":16,"28":16,"29":16,"30":1,"31":1,"32":13,"33":13,"34":0,"35":0,"36":13,"37":13,"38":13,"39":0,"40":0,"41":13,"42":1},"branchMap":{"0":{"type":"branch","line":12,"loc":{"start":{"line":12,"column":2},"end":{"line":12,"column":93}},"locations":[{"start":{"line":12,"column":2},"end":{"line":12,"column":93}}]},"1":{"type":"branch","line":14,"loc":{"start":{"line":14,"column":2},"end":{"line":16,"column":3}},"locations":[{"start":{"line":14,"column":2},"end":{"line":16,"column":3}}]},"2":{"type":"branch","line":18,"loc":{"start":{"line":18,"column":2},"end":{"line":20,"column":3}},"locations":[{"start":{"line":18,"column":2},"end":{"line":20,"column":3}}]},"3":{"type":"branch","line":22,"loc":{"start":{"line":22,"column":2},"end":{"line":30,"column":3}},"locations":[{"start":{"line":22,"column":2},"end":{"line":30,"column":3}}]},"4":{"type":"branch","line":23,"loc":{"start":{"line":23,"column":43},"end":{"line":25,"column":5}},"locations":[{"start":{"line":23,"column":43},"end":{"line":25,"column":5}}]},"5":{"type":"branch","line":32,"loc":{"start":{"line":32,"column":2},"end":{"line":42,"column":3}},"locations":[{"start":{"line":32,"column":2},"end":{"line":42,"column":3}}]},"6":{"type":"branch","line":34,"loc":{"start":{"line":34,"column":30},"end":{"line":36,"column":5}},"locations":[{"start":{"line":34,"column":30},"end":{"line":36,"column":5}}]},"7":{"type":"branch","line":39,"loc":{"start":{"line":39,"column":6},"end":{"line":41,"column":5}},"locations":[{"start":{"line":39,"column":6},"end":{"line":41,"column":5}}]}},"b":{"0":[16],"1":[19],"2":[1],"3":[16],"4":[0],"5":[13],"6":[0],"7":[0]},"fnMap":{"0":{"name":"LocalReader","decl":{"start":{"line":12,"column":2},"end":{"line":12,"column":93}},"loc":{"start":{"line":12,"column":2},"end":{"line":12,"column":93}},"line":12},"1":{"name":"get root","decl":{"start":{"line":14,"column":2},"end":{"line":16,"column":3}},"loc":{"start":{"line":14,"column":2},"end":{"line":16,"column":3}},"line":14},"2":{"name":"getPkg","decl":{"start":{"line":18,"column":2},"end":{"line":20,"column":3}},"loc":{"start":{"line":18,"column":2},"end":{"line":20,"column":3}},"line":18},"3":{"name":"getProjectSchema","decl":{"start":{"line":22,"column":2},"end":{"line":30,"column":3}},"loc":{"start":{"line":22,"column":2},"end":{"line":30,"column":3}},"line":22},"4":{"name":"getFile","decl":{"start":{"line":32,"column":2},"end":{"line":42,"column":3}},"loc":{"start":{"line":32,"column":2},"end":{"line":42,"column":3}},"line":32}},"f":{"0":16,"1":19,"2":1,"3":16,"4":13}},"/Users/scotttwiname/Projects/subql-main/packages/common/src/project/readers/reader.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/common/src/project/readers/reader.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":20}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":24}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":56}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":43}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":56}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":45}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":41}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":43}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":0}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":28}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":62}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":83}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":69}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":84}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":22}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":46}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":5}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":0}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":49}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":20}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":75}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":5}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":0}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":16}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":34}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":58}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":41}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":71}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":7}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":90}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":5}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":0}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":53}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":3}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":1}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":55,"16":55,"17":55,"18":0,"19":0,"20":55,"21":55,"22":55,"23":38,"24":38,"25":17,"26":17,"27":17,"28":15,"29":15,"30":0,"31":0,"32":15,"33":15,"34":2,"35":2,"36":2,"37":1},"branchMap":{"0":{"type":"branch","line":15,"loc":{"start":{"line":15,"column":9},"end":{"line":37,"column":3}},"locations":[{"start":{"line":15,"column":9},"end":{"line":37,"column":3}}]},"1":{"type":"branch","line":18,"loc":{"start":{"line":18,"column":21},"end":{"line":20,"column":5}},"locations":[{"start":{"line":18,"column":21},"end":{"line":20,"column":5}}]},"2":{"type":"branch","line":23,"loc":{"start":{"line":23,"column":19},"end":{"line":25,"column":5}},"locations":[{"start":{"line":23,"column":19},"end":{"line":25,"column":5}}]},"3":{"type":"branch","line":26,"loc":{"start":{"line":26,"column":-1},"end":{"line":37,"column":3}},"locations":[{"start":{"line":26,"column":-1},"end":{"line":37,"column":3}}]},"4":{"type":"branch","line":26,"loc":{"start":{"line":26,"column":-1},"end":{"line":34,"column":5}},"locations":[{"start":{"line":26,"column":-1},"end":{"line":34,"column":5}}]},"5":{"type":"branch","line":28,"loc":{"start":{"line":28,"column":33},"end":{"line":34,"column":5}},"locations":[{"start":{"line":28,"column":33},"end":{"line":34,"column":5}}]},"6":{"type":"branch","line":30,"loc":{"start":{"line":30,"column":40},"end":{"line":32,"column":7}},"locations":[{"start":{"line":30,"column":40},"end":{"line":32,"column":7}}]},"7":{"type":"branch","line":35,"loc":{"start":{"line":35,"column":-1},"end":{"line":37,"column":3}},"locations":[{"start":{"line":35,"column":-1},"end":{"line":37,"column":3}}]}},"b":{"0":[55],"1":[0],"2":[38],"3":[20],"4":[17],"5":[15],"6":[0],"7":[2]},"fnMap":{"0":{"name":"create","decl":{"start":{"line":15,"column":9},"end":{"line":37,"column":3}},"loc":{"start":{"line":15,"column":9},"end":{"line":37,"column":3}},"line":15}},"f":{"0":55}},"/Users/scotttwiname/Projects/subql-main/packages/common/src/project/utils.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/common/src/project/utils.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":20}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":20}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":24}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":115}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":8}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":20}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":15}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":22}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":20}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":22}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":31}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":25}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":37}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":32}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":24}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":68}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":56}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":48}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":0}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":70}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":71}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":47}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":48}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":0}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":69}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":55}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":1}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":0}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":69}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":113}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":65}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":114}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":10}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":73}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":3}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":1}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":0}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":54}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":23}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":29}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":64}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":18}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":1}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":0}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":89}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":65}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":9}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":43}},"51":{"start":{"line":52,"column":0},"end":{"line":52,"column":27}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":20}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":7}},"54":{"start":{"line":55,"column":0},"end":{"line":55,"column":17}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":18}},"56":{"start":{"line":57,"column":0},"end":{"line":57,"column":5}},"57":{"start":{"line":58,"column":0},"end":{"line":58,"column":3}},"58":{"start":{"line":59,"column":0},"end":{"line":59,"column":0}},"59":{"start":{"line":60,"column":0},"end":{"line":60,"column":14}},"60":{"start":{"line":61,"column":0},"end":{"line":61,"column":1}},"61":{"start":{"line":62,"column":0},"end":{"line":62,"column":0}},"62":{"start":{"line":63,"column":0},"end":{"line":63,"column":85}},"63":{"start":{"line":64,"column":0},"end":{"line":64,"column":43}},"64":{"start":{"line":65,"column":0},"end":{"line":65,"column":13}},"65":{"start":{"line":66,"column":0},"end":{"line":66,"column":18}},"66":{"start":{"line":67,"column":0},"end":{"line":67,"column":4}},"67":{"start":{"line":68,"column":0},"end":{"line":68,"column":0}},"68":{"start":{"line":69,"column":0},"end":{"line":69,"column":38}},"69":{"start":{"line":70,"column":0},"end":{"line":70,"column":0}},"70":{"start":{"line":71,"column":0},"end":{"line":71,"column":28}},"71":{"start":{"line":72,"column":0},"end":{"line":72,"column":28}},"72":{"start":{"line":73,"column":0},"end":{"line":73,"column":0}},"73":{"start":{"line":74,"column":0},"end":{"line":74,"column":66}},"74":{"start":{"line":75,"column":0},"end":{"line":75,"column":71}},"75":{"start":{"line":76,"column":0},"end":{"line":76,"column":5}},"76":{"start":{"line":77,"column":0},"end":{"line":77,"column":45}},"77":{"start":{"line":78,"column":0},"end":{"line":78,"column":82}},"78":{"start":{"line":79,"column":0},"end":{"line":79,"column":77}},"79":{"start":{"line":80,"column":0},"end":{"line":80,"column":84}},"80":{"start":{"line":81,"column":0},"end":{"line":81,"column":37}},"81":{"start":{"line":82,"column":0},"end":{"line":82,"column":0}},"82":{"start":{"line":83,"column":0},"end":{"line":83,"column":102}},"83":{"start":{"line":84,"column":0},"end":{"line":84,"column":89}},"84":{"start":{"line":85,"column":0},"end":{"line":85,"column":7}},"85":{"start":{"line":86,"column":0},"end":{"line":86,"column":0}},"86":{"start":{"line":87,"column":0},"end":{"line":87,"column":82}},"87":{"start":{"line":88,"column":0},"end":{"line":88,"column":12}},"88":{"start":{"line":89,"column":0},"end":{"line":89,"column":91}},"89":{"start":{"line":90,"column":0},"end":{"line":90,"column":5}},"90":{"start":{"line":91,"column":0},"end":{"line":91,"column":30}},"91":{"start":{"line":92,"column":0},"end":{"line":92,"column":44}},"92":{"start":{"line":93,"column":0},"end":{"line":93,"column":61}},"93":{"start":{"line":94,"column":0},"end":{"line":94,"column":80}},"94":{"start":{"line":95,"column":0},"end":{"line":95,"column":5}},"95":{"start":{"line":96,"column":0},"end":{"line":96,"column":23}},"96":{"start":{"line":97,"column":0},"end":{"line":97,"column":35}},"97":{"start":{"line":98,"column":0},"end":{"line":98,"column":0}},"98":{"start":{"line":99,"column":0},"end":{"line":99,"column":29}},"99":{"start":{"line":100,"column":0},"end":{"line":100,"column":52}},"100":{"start":{"line":101,"column":0},"end":{"line":101,"column":44}},"101":{"start":{"line":102,"column":0},"end":{"line":102,"column":24}},"102":{"start":{"line":103,"column":0},"end":{"line":103,"column":126}},"103":{"start":{"line":104,"column":0},"end":{"line":104,"column":10}},"104":{"start":{"line":105,"column":0},"end":{"line":105,"column":7}},"105":{"start":{"line":106,"column":0},"end":{"line":106,"column":5}},"106":{"start":{"line":107,"column":0},"end":{"line":107,"column":0}},"107":{"start":{"line":108,"column":0},"end":{"line":108,"column":119}},"108":{"start":{"line":109,"column":0},"end":{"line":109,"column":42}},"109":{"start":{"line":110,"column":0},"end":{"line":110,"column":45}},"110":{"start":{"line":111,"column":0},"end":{"line":111,"column":75}},"111":{"start":{"line":112,"column":0},"end":{"line":112,"column":105}},"112":{"start":{"line":113,"column":0},"end":{"line":113,"column":77}},"113":{"start":{"line":114,"column":0},"end":{"line":114,"column":12}},"114":{"start":{"line":115,"column":0},"end":{"line":115,"column":46}},"115":{"start":{"line":116,"column":0},"end":{"line":116,"column":5}},"116":{"start":{"line":117,"column":0},"end":{"line":117,"column":3}},"117":{"start":{"line":118,"column":0},"end":{"line":118,"column":0}},"118":{"start":{"line":119,"column":0},"end":{"line":119,"column":44}},"119":{"start":{"line":120,"column":0},"end":{"line":120,"column":0}},"120":{"start":{"line":121,"column":0},"end":{"line":121,"column":62}},"121":{"start":{"line":122,"column":0},"end":{"line":122,"column":63}},"122":{"start":{"line":123,"column":0},"end":{"line":123,"column":53}},"123":{"start":{"line":124,"column":0},"end":{"line":124,"column":5}},"124":{"start":{"line":125,"column":0},"end":{"line":125,"column":0}},"125":{"start":{"line":126,"column":0},"end":{"line":126,"column":17}},"126":{"start":{"line":127,"column":0},"end":{"line":127,"column":1}},"127":{"start":{"line":128,"column":0},"end":{"line":128,"column":0}},"128":{"start":{"line":129,"column":0},"end":{"line":129,"column":39}},"129":{"start":{"line":130,"column":0},"end":{"line":130,"column":20}},"130":{"start":{"line":131,"column":0},"end":{"line":131,"column":33}},"131":{"start":{"line":132,"column":0},"end":{"line":132,"column":33}},"132":{"start":{"line":133,"column":0},"end":{"line":133,"column":3}},"133":{"start":{"line":134,"column":0},"end":{"line":134,"column":65}},"134":{"start":{"line":135,"column":0},"end":{"line":135,"column":42}},"135":{"start":{"line":136,"column":0},"end":{"line":136,"column":38}},"136":{"start":{"line":137,"column":0},"end":{"line":137,"column":83}},"137":{"start":{"line":138,"column":0},"end":{"line":138,"column":5}},"138":{"start":{"line":139,"column":0},"end":{"line":139,"column":0}},"139":{"start":{"line":140,"column":0},"end":{"line":140,"column":62}},"140":{"start":{"line":141,"column":0},"end":{"line":141,"column":67}},"141":{"start":{"line":142,"column":0},"end":{"line":142,"column":12}},"142":{"start":{"line":143,"column":0},"end":{"line":143,"column":58}},"143":{"start":{"line":144,"column":0},"end":{"line":144,"column":5}},"144":{"start":{"line":145,"column":0},"end":{"line":145,"column":3}},"145":{"start":{"line":146,"column":0},"end":{"line":146,"column":0}},"146":{"start":{"line":147,"column":0},"end":{"line":147,"column":39}},"147":{"start":{"line":148,"column":0},"end":{"line":148,"column":101}},"148":{"start":{"line":149,"column":0},"end":{"line":149,"column":3}},"149":{"start":{"line":150,"column":0},"end":{"line":150,"column":1}},"150":{"start":{"line":151,"column":0},"end":{"line":151,"column":0}},"151":{"start":{"line":152,"column":0},"end":{"line":152,"column":81}},"152":{"start":{"line":153,"column":0},"end":{"line":153,"column":38}},"153":{"start":{"line":154,"column":0},"end":{"line":154,"column":49}},"154":{"start":{"line":155,"column":0},"end":{"line":155,"column":38}},"155":{"start":{"line":156,"column":0},"end":{"line":156,"column":0}},"156":{"start":{"line":157,"column":0},"end":{"line":157,"column":28}},"157":{"start":{"line":158,"column":0},"end":{"line":158,"column":27}},"158":{"start":{"line":159,"column":0},"end":{"line":159,"column":92}},"159":{"start":{"line":160,"column":0},"end":{"line":160,"column":53}},"160":{"start":{"line":161,"column":0},"end":{"line":161,"column":59}},"161":{"start":{"line":162,"column":0},"end":{"line":162,"column":5}},"162":{"start":{"line":163,"column":0},"end":{"line":163,"column":30}},"163":{"start":{"line":164,"column":0},"end":{"line":164,"column":44}},"164":{"start":{"line":165,"column":0},"end":{"line":165,"column":22}},"165":{"start":{"line":166,"column":0},"end":{"line":166,"column":37}},"166":{"start":{"line":167,"column":0},"end":{"line":167,"column":114}},"167":{"start":{"line":168,"column":0},"end":{"line":168,"column":100}},"168":{"start":{"line":169,"column":0},"end":{"line":169,"column":61}},"169":{"start":{"line":170,"column":0},"end":{"line":170,"column":7}},"170":{"start":{"line":171,"column":0},"end":{"line":171,"column":5}},"171":{"start":{"line":172,"column":0},"end":{"line":172,"column":3}},"172":{"start":{"line":173,"column":0},"end":{"line":173,"column":0}},"173":{"start":{"line":174,"column":0},"end":{"line":174,"column":46}},"174":{"start":{"line":175,"column":0},"end":{"line":175,"column":62}},"175":{"start":{"line":176,"column":0},"end":{"line":176,"column":3}},"176":{"start":{"line":177,"column":0},"end":{"line":177,"column":0}},"177":{"start":{"line":178,"column":0},"end":{"line":178,"column":19}},"178":{"start":{"line":179,"column":0},"end":{"line":179,"column":1}},"179":{"start":{"line":180,"column":0},"end":{"line":180,"column":0}},"180":{"start":{"line":181,"column":0},"end":{"line":181,"column":76}},"181":{"start":{"line":182,"column":0},"end":{"line":182,"column":65}},"182":{"start":{"line":183,"column":0},"end":{"line":183,"column":1}},"183":{"start":{"line":184,"column":0},"end":{"line":184,"column":0}},"184":{"start":{"line":185,"column":0},"end":{"line":185,"column":52}},"185":{"start":{"line":186,"column":0},"end":{"line":186,"column":77}},"186":{"start":{"line":187,"column":0},"end":{"line":187,"column":55}},"187":{"start":{"line":188,"column":0},"end":{"line":188,"column":32}},"188":{"start":{"line":189,"column":0},"end":{"line":189,"column":68}},"189":{"start":{"line":190,"column":0},"end":{"line":190,"column":12}},"190":{"start":{"line":191,"column":0},"end":{"line":191,"column":40}},"191":{"start":{"line":192,"column":0},"end":{"line":192,"column":5}},"192":{"start":{"line":193,"column":0},"end":{"line":193,"column":3}},"193":{"start":{"line":194,"column":0},"end":{"line":194,"column":53}},"194":{"start":{"line":195,"column":0},"end":{"line":195,"column":83}},"195":{"start":{"line":196,"column":0},"end":{"line":196,"column":3}},"196":{"start":{"line":197,"column":0},"end":{"line":197,"column":1}},"197":{"start":{"line":198,"column":0},"end":{"line":198,"column":0}},"198":{"start":{"line":199,"column":0},"end":{"line":199,"column":57}},"199":{"start":{"line":200,"column":0},"end":{"line":200,"column":35}},"200":{"start":{"line":201,"column":0},"end":{"line":201,"column":36}},"201":{"start":{"line":202,"column":0},"end":{"line":202,"column":5}},"202":{"start":{"line":203,"column":0},"end":{"line":203,"column":1}},"203":{"start":{"line":204,"column":0},"end":{"line":204,"column":0}},"204":{"start":{"line":205,"column":0},"end":{"line":205,"column":96}},"205":{"start":{"line":206,"column":0},"end":{"line":206,"column":85}},"206":{"start":{"line":207,"column":0},"end":{"line":207,"column":23}},"207":{"start":{"line":208,"column":0},"end":{"line":208,"column":65}},"208":{"start":{"line":209,"column":0},"end":{"line":209,"column":53}},"209":{"start":{"line":210,"column":0},"end":{"line":210,"column":3}},"210":{"start":{"line":211,"column":0},"end":{"line":211,"column":1}},"211":{"start":{"line":212,"column":0},"end":{"line":212,"column":0}},"212":{"start":{"line":213,"column":0},"end":{"line":213,"column":53}},"213":{"start":{"line":214,"column":0},"end":{"line":214,"column":23}},"214":{"start":{"line":215,"column":0},"end":{"line":215,"column":1}},"215":{"start":{"line":216,"column":0},"end":{"line":216,"column":0}},"216":{"start":{"line":217,"column":0},"end":{"line":217,"column":61}},"217":{"start":{"line":218,"column":0},"end":{"line":218,"column":62}},"218":{"start":{"line":219,"column":0},"end":{"line":219,"column":1}},"219":{"start":{"line":220,"column":0},"end":{"line":220,"column":0}},"220":{"start":{"line":221,"column":0},"end":{"line":221,"column":88}},"221":{"start":{"line":222,"column":0},"end":{"line":222,"column":58}},"222":{"start":{"line":223,"column":0},"end":{"line":223,"column":23}},"223":{"start":{"line":224,"column":0},"end":{"line":224,"column":35}},"224":{"start":{"line":225,"column":0},"end":{"line":225,"column":33}},"225":{"start":{"line":226,"column":0},"end":{"line":226,"column":33}},"226":{"start":{"line":227,"column":0},"end":{"line":227,"column":22}},"227":{"start":{"line":228,"column":0},"end":{"line":228,"column":33}},"228":{"start":{"line":229,"column":0},"end":{"line":229,"column":18}},"229":{"start":{"line":230,"column":0},"end":{"line":230,"column":57}},"230":{"start":{"line":231,"column":0},"end":{"line":231,"column":76}},"231":{"start":{"line":232,"column":0},"end":{"line":232,"column":25}},"232":{"start":{"line":233,"column":0},"end":{"line":233,"column":28}},"233":{"start":{"line":234,"column":0},"end":{"line":234,"column":107}},"234":{"start":{"line":235,"column":0},"end":{"line":235,"column":33}},"235":{"start":{"line":236,"column":0},"end":{"line":236,"column":17}},"236":{"start":{"line":237,"column":0},"end":{"line":237,"column":14}},"237":{"start":{"line":238,"column":0},"end":{"line":238,"column":11}},"238":{"start":{"line":239,"column":0},"end":{"line":239,"column":25}},"239":{"start":{"line":240,"column":0},"end":{"line":240,"column":10}},"240":{"start":{"line":241,"column":0},"end":{"line":241,"column":8}},"241":{"start":{"line":242,"column":0},"end":{"line":242,"column":7}},"242":{"start":{"line":243,"column":0},"end":{"line":243,"column":4}},"243":{"start":{"line":244,"column":0},"end":{"line":244,"column":1}},"244":{"start":{"line":245,"column":0},"end":{"line":245,"column":0}},"245":{"start":{"line":246,"column":0},"end":{"line":246,"column":74}},"246":{"start":{"line":247,"column":0},"end":{"line":247,"column":72}},"247":{"start":{"line":248,"column":0},"end":{"line":248,"column":0}},"248":{"start":{"line":249,"column":0},"end":{"line":249,"column":81}},"249":{"start":{"line":250,"column":0},"end":{"line":250,"column":0}},"250":{"start":{"line":251,"column":0},"end":{"line":251,"column":60}},"251":{"start":{"line":252,"column":0},"end":{"line":252,"column":73}},"252":{"start":{"line":253,"column":0},"end":{"line":253,"column":10}},"253":{"start":{"line":254,"column":0},"end":{"line":254,"column":69}},"254":{"start":{"line":255,"column":0},"end":{"line":255,"column":3}},"255":{"start":{"line":256,"column":0},"end":{"line":256,"column":1}},"256":{"start":{"line":257,"column":0},"end":{"line":257,"column":0}},"257":{"start":{"line":258,"column":0},"end":{"line":258,"column":56}},"258":{"start":{"line":259,"column":0},"end":{"line":259,"column":101}},"259":{"start":{"line":260,"column":0},"end":{"line":260,"column":87}},"260":{"start":{"line":261,"column":0},"end":{"line":261,"column":20}},"261":{"start":{"line":262,"column":0},"end":{"line":262,"column":51}},"262":{"start":{"line":263,"column":0},"end":{"line":263,"column":33}},"263":{"start":{"line":264,"column":0},"end":{"line":264,"column":34}},"264":{"start":{"line":265,"column":0},"end":{"line":265,"column":7}},"265":{"start":{"line":266,"column":0},"end":{"line":266,"column":19}},"266":{"start":{"line":267,"column":0},"end":{"line":267,"column":6}},"267":{"start":{"line":268,"column":0},"end":{"line":268,"column":4}},"268":{"start":{"line":269,"column":0},"end":{"line":269,"column":1}},"269":{"start":{"line":270,"column":0},"end":{"line":270,"column":0}},"270":{"start":{"line":271,"column":0},"end":{"line":271,"column":99}},"271":{"start":{"line":272,"column":0},"end":{"line":272,"column":62}},"272":{"start":{"line":273,"column":0},"end":{"line":273,"column":48}},"273":{"start":{"line":274,"column":0},"end":{"line":274,"column":33}},"274":{"start":{"line":275,"column":0},"end":{"line":275,"column":34}},"275":{"start":{"line":276,"column":0},"end":{"line":276,"column":3}},"276":{"start":{"line":277,"column":0},"end":{"line":277,"column":19}},"277":{"start":{"line":278,"column":0},"end":{"line":278,"column":1}},"278":{"start":{"line":279,"column":0},"end":{"line":279,"column":0}},"279":{"start":{"line":280,"column":0},"end":{"line":280,"column":61}},"280":{"start":{"line":281,"column":0},"end":{"line":281,"column":74}},"281":{"start":{"line":282,"column":0},"end":{"line":282,"column":44}},"282":{"start":{"line":283,"column":0},"end":{"line":283,"column":17}},"283":{"start":{"line":284,"column":0},"end":{"line":284,"column":19}},"284":{"start":{"line":285,"column":0},"end":{"line":285,"column":5}},"285":{"start":{"line":286,"column":0},"end":{"line":286,"column":103}},"286":{"start":{"line":287,"column":0},"end":{"line":287,"column":3}},"287":{"start":{"line":288,"column":0},"end":{"line":288,"column":53}},"288":{"start":{"line":289,"column":0},"end":{"line":289,"column":72}},"289":{"start":{"line":290,"column":0},"end":{"line":290,"column":3}},"290":{"start":{"line":291,"column":0},"end":{"line":291,"column":0}},"291":{"start":{"line":292,"column":0},"end":{"line":292,"column":59}},"292":{"start":{"line":293,"column":0},"end":{"line":293,"column":114}},"293":{"start":{"line":294,"column":0},"end":{"line":294,"column":3}},"294":{"start":{"line":295,"column":0},"end":{"line":295,"column":1}},"295":{"start":{"line":296,"column":0},"end":{"line":296,"column":0}},"296":{"start":{"line":297,"column":0},"end":{"line":297,"column":102}},"297":{"start":{"line":298,"column":0},"end":{"line":298,"column":0}},"298":{"start":{"line":299,"column":0},"end":{"line":299,"column":36}},"299":{"start":{"line":300,"column":0},"end":{"line":300,"column":72}},"300":{"start":{"line":301,"column":0},"end":{"line":301,"column":57}},"301":{"start":{"line":302,"column":0},"end":{"line":302,"column":49}},"302":{"start":{"line":303,"column":0},"end":{"line":303,"column":75}},"303":{"start":{"line":304,"column":0},"end":{"line":304,"column":44}},"304":{"start":{"line":305,"column":0},"end":{"line":305,"column":13}},"305":{"start":{"line":306,"column":0},"end":{"line":306,"column":3}},"306":{"start":{"line":307,"column":0},"end":{"line":307,"column":0}},"307":{"start":{"line":308,"column":0},"end":{"line":308,"column":45}},"308":{"start":{"line":309,"column":0},"end":{"line":309,"column":68}},"309":{"start":{"line":310,"column":0},"end":{"line":310,"column":3}},"310":{"start":{"line":311,"column":0},"end":{"line":311,"column":1}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":66,"28":66,"29":66,"30":1,"31":1,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":1,"40":1,"41":28,"42":28,"43":28,"44":28,"45":28,"46":1,"47":1,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"59":0,"60":0,"61":1,"62":34,"63":34,"64":34,"65":34,"66":34,"67":34,"68":34,"69":34,"70":34,"71":25,"72":25,"73":25,"74":25,"75":25,"76":0,"77":0,"78":0,"79":0,"80":0,"81":0,"82":0,"83":0,"84":0,"85":0,"86":0,"87":0,"88":0,"89":0,"90":34,"91":9,"92":9,"93":0,"94":0,"95":9,"96":9,"97":9,"98":9,"99":0,"100":0,"101":0,"102":0,"103":0,"104":0,"105":0,"106":9,"107":9,"108":9,"109":9,"110":0,"111":9,"112":0,"113":9,"114":9,"115":9,"116":9,"117":34,"118":34,"119":34,"120":34,"121":34,"122":34,"123":34,"124":34,"125":34,"126":34,"127":1,"128":0,"129":0,"130":0,"131":0,"132":0,"133":0,"134":0,"135":0,"136":0,"137":0,"138":0,"139":0,"140":0,"141":0,"142":0,"143":0,"144":0,"145":0,"146":0,"147":0,"148":0,"149":0,"150":1,"151":5,"152":5,"153":5,"154":5,"155":5,"156":5,"157":2,"158":2,"159":2,"160":0,"161":0,"162":5,"163":3,"164":3,"165":3,"166":3,"167":3,"168":0,"169":0,"170":3,"171":3,"172":5,"173":5,"174":0,"175":0,"176":5,"177":5,"178":5,"179":1,"180":41,"181":41,"182":41,"183":1,"184":1,"185":1,"186":1,"187":232,"188":210,"189":232,"190":22,"191":22,"192":232,"193":1,"194":4,"195":4,"196":1,"197":1,"198":1,"199":24,"200":24,"201":24,"202":24,"203":1,"204":0,"205":0,"206":0,"207":0,"208":0,"209":0,"210":0,"211":1,"212":20,"213":20,"214":20,"215":1,"216":94,"217":94,"218":94,"219":1,"220":25,"221":25,"222":25,"223":25,"224":25,"225":25,"226":25,"227":25,"228":25,"229":25,"230":0,"231":0,"232":0,"233":0,"234":0,"235":0,"236":0,"237":0,"238":0,"239":25,"240":25,"241":25,"242":25,"243":25,"244":1,"245":0,"246":0,"247":0,"248":0,"249":0,"250":0,"251":0,"252":0,"253":0,"254":0,"255":0,"256":1,"257":89,"258":89,"259":89,"260":89,"261":89,"262":3536,"263":28,"264":28,"265":3508,"266":89,"267":89,"268":89,"269":1,"270":30,"271":30,"272":30,"273":30,"274":34,"275":34,"276":30,"277":30,"278":1,"279":1,"280":1,"281":1,"282":0,"283":0,"284":0,"285":0,"286":0,"287":1,"288":0,"289":0,"290":1,"291":1,"292":0,"293":0,"294":1,"295":1,"296":1,"297":1,"298":1,"299":1,"300":1,"301":0,"302":0,"303":0,"304":0,"305":0,"306":1,"307":1,"308":0,"309":0,"310":1},"branchMap":{"0":{"type":"branch","line":28,"loc":{"start":{"line":28,"column":0},"end":{"line":30,"column":1}},"locations":[{"start":{"line":28,"column":0},"end":{"line":30,"column":1}}]},"1":{"type":"branch","line":29,"loc":{"start":{"line":29,"column":20},"end":{"line":29,"column":54}},"locations":[{"start":{"line":29,"column":20},"end":{"line":29,"column":54}}]},"2":{"type":"branch","line":41,"loc":{"start":{"line":41,"column":7},"end":{"line":46,"column":1}},"locations":[{"start":{"line":41,"column":7},"end":{"line":46,"column":1}}]},"3":{"type":"branch","line":63,"loc":{"start":{"line":63,"column":0},"end":{"line":127,"column":1}},"locations":[{"start":{"line":63,"column":0},"end":{"line":127,"column":1}}]},"4":{"type":"branch","line":71,"loc":{"start":{"line":71,"column":27},"end":{"line":91,"column":9}},"locations":[{"start":{"line":71,"column":27},"end":{"line":91,"column":9}}]},"5":{"type":"branch","line":77,"loc":{"start":{"line":77,"column":-1},"end":{"line":90,"column":5}},"locations":[{"start":{"line":77,"column":-1},"end":{"line":90,"column":5}}]},"6":{"type":"branch","line":91,"loc":{"start":{"line":91,"column":3},"end":{"line":117,"column":3}},"locations":[{"start":{"line":91,"column":3},"end":{"line":117,"column":3}}]},"7":{"type":"branch","line":93,"loc":{"start":{"line":93,"column":60},"end":{"line":95,"column":5}},"locations":[{"start":{"line":93,"column":60},"end":{"line":95,"column":5}}]},"8":{"type":"branch","line":99,"loc":{"start":{"line":99,"column":28},"end":{"line":106,"column":5}},"locations":[{"start":{"line":99,"column":28},"end":{"line":106,"column":5}}]},"9":{"type":"branch","line":110,"loc":{"start":{"line":110,"column":44},"end":{"line":112,"column":11}},"locations":[{"start":{"line":110,"column":44},"end":{"line":112,"column":11}}]},"10":{"type":"branch","line":112,"loc":{"start":{"line":112,"column":49},"end":{"line":112,"column":102}},"locations":[{"start":{"line":112,"column":49},"end":{"line":112,"column":102}}]},"11":{"type":"branch","line":112,"loc":{"start":{"line":112,"column":104},"end":{"line":114,"column":11}},"locations":[{"start":{"line":112,"column":104},"end":{"line":114,"column":11}}]},"12":{"type":"branch","line":122,"loc":{"start":{"line":122,"column":44},"end":{"line":124,"column":3}},"locations":[{"start":{"line":122,"column":44},"end":{"line":124,"column":3}}]},"13":{"type":"branch","line":152,"loc":{"start":{"line":152,"column":0},"end":{"line":179,"column":1}},"locations":[{"start":{"line":152,"column":0},"end":{"line":179,"column":1}}]},"14":{"type":"branch","line":157,"loc":{"start":{"line":157,"column":27},"end":{"line":163,"column":9}},"locations":[{"start":{"line":157,"column":27},"end":{"line":163,"column":9}}]},"15":{"type":"branch","line":160,"loc":{"start":{"line":160,"column":52},"end":{"line":162,"column":5}},"locations":[{"start":{"line":160,"column":52},"end":{"line":162,"column":5}}]},"16":{"type":"branch","line":163,"loc":{"start":{"line":163,"column":3},"end":{"line":172,"column":3}},"locations":[{"start":{"line":163,"column":3},"end":{"line":172,"column":3}}]},"17":{"type":"branch","line":168,"loc":{"start":{"line":168,"column":44},"end":{"line":168,"column":97}},"locations":[{"start":{"line":168,"column":44},"end":{"line":168,"column":97}}]},"18":{"type":"branch","line":168,"loc":{"start":{"line":168,"column":99},"end":{"line":170,"column":7}},"locations":[{"start":{"line":168,"column":99},"end":{"line":170,"column":7}}]},"19":{"type":"branch","line":174,"loc":{"start":{"line":174,"column":28},"end":{"line":174,"column":43}},"locations":[{"start":{"line":174,"column":28},"end":{"line":174,"column":43}}]},"20":{"type":"branch","line":174,"loc":{"start":{"line":174,"column":45},"end":{"line":176,"column":3}},"locations":[{"start":{"line":174,"column":45},"end":{"line":176,"column":3}}]},"21":{"type":"branch","line":181,"loc":{"start":{"line":181,"column":0},"end":{"line":183,"column":1}},"locations":[{"start":{"line":181,"column":0},"end":{"line":183,"column":1}}]},"22":{"type":"branch","line":187,"loc":{"start":{"line":187,"column":2},"end":{"line":193,"column":3}},"locations":[{"start":{"line":187,"column":2},"end":{"line":193,"column":3}}]},"23":{"type":"branch","line":188,"loc":{"start":{"line":188,"column":31},"end":{"line":190,"column":11}},"locations":[{"start":{"line":188,"column":31},"end":{"line":190,"column":11}}]},"24":{"type":"branch","line":190,"loc":{"start":{"line":190,"column":5},"end":{"line":192,"column":5}},"locations":[{"start":{"line":190,"column":5},"end":{"line":192,"column":5}}]},"25":{"type":"branch","line":194,"loc":{"start":{"line":194,"column":2},"end":{"line":196,"column":3}},"locations":[{"start":{"line":194,"column":2},"end":{"line":196,"column":3}}]},"26":{"type":"branch","line":199,"loc":{"start":{"line":199,"column":7},"end":{"line":203,"column":1}},"locations":[{"start":{"line":199,"column":7},"end":{"line":203,"column":1}}]},"27":{"type":"branch","line":200,"loc":{"start":{"line":200,"column":21},"end":{"line":202,"column":3}},"locations":[{"start":{"line":200,"column":21},"end":{"line":202,"column":3}}]},"28":{"type":"branch","line":213,"loc":{"start":{"line":213,"column":0},"end":{"line":215,"column":1}},"locations":[{"start":{"line":213,"column":0},"end":{"line":215,"column":1}}]},"29":{"type":"branch","line":217,"loc":{"start":{"line":217,"column":0},"end":{"line":219,"column":1}},"locations":[{"start":{"line":217,"column":0},"end":{"line":219,"column":1}}]},"30":{"type":"branch","line":218,"loc":{"start":{"line":218,"column":24},"end":{"line":218,"column":42}},"locations":[{"start":{"line":218,"column":24},"end":{"line":218,"column":42}}]},"31":{"type":"branch","line":218,"loc":{"start":{"line":218,"column":42},"end":{"line":218,"column":61}},"locations":[{"start":{"line":218,"column":42},"end":{"line":218,"column":61}}]},"32":{"type":"branch","line":221,"loc":{"start":{"line":221,"column":0},"end":{"line":244,"column":1}},"locations":[{"start":{"line":221,"column":0},"end":{"line":244,"column":1}}]},"33":{"type":"branch","line":222,"loc":{"start":{"line":222,"column":9},"end":{"line":243,"column":3}},"locations":[{"start":{"line":222,"column":9},"end":{"line":243,"column":3}}]},"34":{"type":"branch","line":258,"loc":{"start":{"line":258,"column":0},"end":{"line":269,"column":1}},"locations":[{"start":{"line":258,"column":0},"end":{"line":269,"column":1}}]},"35":{"type":"branch","line":262,"loc":{"start":{"line":262,"column":27},"end":{"line":267,"column":5}},"locations":[{"start":{"line":262,"column":27},"end":{"line":267,"column":5}}]},"36":{"type":"branch","line":263,"loc":{"start":{"line":263,"column":32},"end":{"line":265,"column":7}},"locations":[{"start":{"line":263,"column":32},"end":{"line":265,"column":7}}]},"37":{"type":"branch","line":266,"loc":{"start":{"line":266,"column":-1},"end":{"line":267,"column":5}},"locations":[{"start":{"line":266,"column":-1},"end":{"line":267,"column":5}}]},"38":{"type":"branch","line":271,"loc":{"start":{"line":271,"column":0},"end":{"line":278,"column":1}},"locations":[{"start":{"line":271,"column":0},"end":{"line":278,"column":1}}]},"39":{"type":"branch","line":274,"loc":{"start":{"line":274,"column":32},"end":{"line":276,"column":3}},"locations":[{"start":{"line":274,"column":32},"end":{"line":276,"column":3}}]},"40":{"type":"branch","line":297,"loc":{"start":{"line":297,"column":33},"end":{"line":297,"column":101}},"locations":[{"start":{"line":297,"column":33},"end":{"line":297,"column":101}}]}},"b":{"0":[66],"1":[14],"2":[28],"3":[34],"4":[25],"5":[0],"6":[9],"7":[0],"8":[0],"9":[0],"10":[0],"11":[0],"12":[34],"13":[5],"14":[2],"15":[0],"16":[3],"17":[0],"18":[0],"19":[0],"20":[0],"21":[41],"22":[232],"23":[210],"24":[22],"25":[4],"26":[24],"27":[24],"28":[20],"29":[94],"30":[6],"31":[6],"32":[25],"33":[25],"34":[89],"35":[3536],"36":[28],"37":[3508],"38":[30],"39":[34],"40":[43]},"fnMap":{"0":{"name":"isFileReference","decl":{"start":{"line":28,"column":0},"end":{"line":30,"column":1}},"loc":{"start":{"line":28,"column":0},"end":{"line":30,"column":1}},"line":28},"1":{"name":"handleCreateSubqueryProjectError","decl":{"start":{"line":33,"column":0},"end":{"line":39,"column":1}},"loc":{"start":{"line":33,"column":0},"end":{"line":39,"column":1}},"line":33},"2":{"name":"makeTempDir","decl":{"start":{"line":41,"column":7},"end":{"line":46,"column":1}},"loc":{"start":{"line":41,"column":7},"end":{"line":46,"column":1}},"line":41},"3":{"name":"findAvailablePort","decl":{"start":{"line":48,"column":7},"end":{"line":61,"column":1}},"loc":{"start":{"line":48,"column":7},"end":{"line":61,"column":1}},"line":48},"4":{"name":"getProjectRootAndManifest","decl":{"start":{"line":63,"column":0},"end":{"line":127,"column":1}},"loc":{"start":{"line":63,"column":0},"end":{"line":127,"column":1}},"line":63},"5":{"name":"addMultichainManifestProjects","decl":{"start":{"line":129,"column":0},"end":{"line":150,"column":1}},"loc":{"start":{"line":129,"column":0},"end":{"line":150,"column":1}},"line":129},"6":{"name":"getMultichainManifestPath","decl":{"start":{"line":152,"column":0},"end":{"line":179,"column":1}},"loc":{"start":{"line":152,"column":0},"end":{"line":179,"column":1}},"line":152},"7":{"name":"validateSemver","decl":{"start":{"line":181,"column":0},"end":{"line":183,"column":1}},"loc":{"start":{"line":181,"column":0},"end":{"line":183,"column":1}},"line":181},"8":{"name":"validate","decl":{"start":{"line":187,"column":2},"end":{"line":193,"column":3}},"loc":{"start":{"line":187,"column":2},"end":{"line":193,"column":3}},"line":187},"9":{"name":"defaultMessage","decl":{"start":{"line":194,"column":2},"end":{"line":196,"column":3}},"loc":{"start":{"line":194,"column":2},"end":{"line":196,"column":3}},"line":194},"10":{"name":"delay","decl":{"start":{"line":199,"column":7},"end":{"line":203,"column":1}},"loc":{"start":{"line":199,"column":7},"end":{"line":203,"column":1}},"line":199},"11":{"name":"validateObject","decl":{"start":{"line":205,"column":0},"end":{"line":211,"column":1}},"loc":{"start":{"line":205,"column":0},"end":{"line":211,"column":1}},"line":205},"12":{"name":"extensionIsTs","decl":{"start":{"line":213,"column":0},"end":{"line":215,"column":1}},"loc":{"start":{"line":213,"column":0},"end":{"line":215,"column":1}},"line":213},"13":{"name":"extensionIsYamlOrJSON","decl":{"start":{"line":217,"column":0},"end":{"line":219,"column":1}},"loc":{"start":{"line":217,"column":0},"end":{"line":219,"column":1}},"line":217},"14":{"name":"forbidNonWhitelisted","decl":{"start":{"line":221,"column":0},"end":{"line":244,"column":1}},"loc":{"start":{"line":221,"column":0},"end":{"line":244,"column":1}},"line":221},"15":{"name":"validate","decl":{"start":{"line":230,"column":8},"end":{"line":240,"column":9}},"loc":{"start":{"line":230,"column":8},"end":{"line":240,"column":9}},"line":230},"16":{"name":"notifyUpdates","decl":{"start":{"line":246,"column":0},"end":{"line":256,"column":1}},"loc":{"start":{"line":246,"column":0},"end":{"line":256,"column":1}},"line":246},"17":{"name":"toJsonObject","decl":{"start":{"line":258,"column":0},"end":{"line":269,"column":1}},"loc":{"start":{"line":258,"column":0},"end":{"line":269,"column":1}},"line":258},"18":{"name":"mapToObject","decl":{"start":{"line":271,"column":0},"end":{"line":278,"column":1}},"loc":{"start":{"line":271,"column":0},"end":{"line":278,"column":1}},"line":271},"19":{"name":"validate","decl":{"start":{"line":282,"column":2},"end":{"line":287,"column":3}},"loc":{"start":{"line":282,"column":2},"end":{"line":287,"column":3}},"line":282},"20":{"name":"defaultMessage","decl":{"start":{"line":288,"column":2},"end":{"line":290,"column":3}},"loc":{"start":{"line":288,"column":2},"end":{"line":290,"column":3}},"line":288},"21":{"name":"isValidFileReference","decl":{"start":{"line":292,"column":10},"end":{"line":294,"column":3}},"loc":{"start":{"line":292,"column":10},"end":{"line":294,"column":3}},"line":292},"22":{"name":"tsProjectYamlPath","decl":{"start":{"line":297,"column":33},"end":{"line":297,"column":101}},"loc":{"start":{"line":297,"column":33},"end":{"line":297,"column":101}},"line":297},"23":{"name":"validate","decl":{"start":{"line":301,"column":2},"end":{"line":306,"column":3}},"loc":{"start":{"line":301,"column":2},"end":{"line":306,"column":3}},"line":301},"24":{"name":"defaultMessage","decl":{"start":{"line":308,"column":2},"end":{"line":310,"column":3}},"loc":{"start":{"line":308,"column":2},"end":{"line":310,"column":3}},"line":308}},"f":{"0":66,"1":0,"2":28,"3":0,"4":34,"5":0,"6":5,"7":41,"8":232,"9":4,"10":24,"11":0,"12":20,"13":94,"14":25,"15":0,"16":0,"17":89,"18":30,"19":0,"20":0,"21":0,"22":43,"23":0,"24":0}},"/Users/scotttwiname/Projects/subql-main/packages/common/src/project/versioned/base.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/common/src/project/versioned/base.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":74}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":56}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":8}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":8}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":9}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":8}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":11}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":13}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":11}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":11}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":17}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":15}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":25}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":27}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":57}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":51}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":0}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":79}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":10}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":22}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":15}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":13}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":23}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":15}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":13}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":22}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":13}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":22}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":0}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":27}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":0}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":74}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":0}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":23}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":28}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":84}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":56}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":5}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":28}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":3}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":0}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":20}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":96}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":25}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":34}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":67}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":69}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":5}},"51":{"start":{"line":52,"column":0},"end":{"line":52,"column":3}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":0}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":26}},"54":{"start":{"line":55,"column":0},"end":{"line":55,"column":36}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":3}},"56":{"start":{"line":57,"column":0},"end":{"line":57,"column":1}},"57":{"start":{"line":58,"column":0},"end":{"line":58,"column":0}},"58":{"start":{"line":59,"column":0},"end":{"line":59,"column":48}},"59":{"start":{"line":60,"column":0},"end":{"line":60,"column":13}},"60":{"start":{"line":61,"column":0},"end":{"line":61,"column":15}},"61":{"start":{"line":62,"column":0},"end":{"line":62,"column":1}},"62":{"start":{"line":63,"column":0},"end":{"line":63,"column":0}},"63":{"start":{"line":64,"column":0},"end":{"line":64,"column":78}},"64":{"start":{"line":65,"column":0},"end":{"line":65,"column":15}},"65":{"start":{"line":66,"column":0},"end":{"line":66,"column":13}},"66":{"start":{"line":67,"column":0},"end":{"line":67,"column":14}},"67":{"start":{"line":68,"column":0},"end":{"line":68,"column":1}},"68":{"start":{"line":69,"column":0},"end":{"line":69,"column":0}},"69":{"start":{"line":70,"column":0},"end":{"line":70,"column":35}},"70":{"start":{"line":71,"column":0},"end":{"line":71,"column":18}},"71":{"start":{"line":72,"column":0},"end":{"line":72,"column":13}},"72":{"start":{"line":73,"column":0},"end":{"line":73,"column":22}},"73":{"start":{"line":74,"column":0},"end":{"line":74,"column":19}},"74":{"start":{"line":75,"column":0},"end":{"line":75,"column":23}},"75":{"start":{"line":76,"column":0},"end":{"line":76,"column":19}},"76":{"start":{"line":77,"column":0},"end":{"line":77,"column":15}},"77":{"start":{"line":78,"column":0},"end":{"line":78,"column":13}},"78":{"start":{"line":79,"column":0},"end":{"line":79,"column":33}},"79":{"start":{"line":80,"column":0},"end":{"line":80,"column":25}},"80":{"start":{"line":81,"column":0},"end":{"line":81,"column":0}},"81":{"start":{"line":82,"column":0},"end":{"line":82,"column":20}},"82":{"start":{"line":83,"column":0},"end":{"line":83,"column":48}},"83":{"start":{"line":84,"column":0},"end":{"line":84,"column":79}},"84":{"start":{"line":85,"column":0},"end":{"line":85,"column":42}},"85":{"start":{"line":86,"column":0},"end":{"line":86,"column":21}},"86":{"start":{"line":87,"column":0},"end":{"line":87,"column":25}},"87":{"start":{"line":88,"column":0},"end":{"line":88,"column":7}},"88":{"start":{"line":89,"column":0},"end":{"line":89,"column":3}},"89":{"start":{"line":90,"column":0},"end":{"line":90,"column":1}},"90":{"start":{"line":91,"column":0},"end":{"line":91,"column":0}},"91":{"start":{"line":92,"column":0},"end":{"line":92,"column":29}},"92":{"start":{"line":93,"column":0},"end":{"line":93,"column":15}},"93":{"start":{"line":94,"column":0},"end":{"line":94,"column":10}},"94":{"start":{"line":95,"column":0},"end":{"line":95,"column":22}},"95":{"start":{"line":96,"column":0},"end":{"line":96,"column":30}},"96":{"start":{"line":97,"column":0},"end":{"line":97,"column":15}},"97":{"start":{"line":98,"column":0},"end":{"line":98,"column":10}},"98":{"start":{"line":99,"column":0},"end":{"line":99,"column":20}},"99":{"start":{"line":100,"column":0},"end":{"line":100,"column":1}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":66,"38":50,"39":50,"40":50,"41":66,"42":66,"43":1,"44":1,"45":50,"46":50,"47":16,"48":16,"49":16,"50":16,"51":50,"52":1,"53":1,"54":0,"55":0,"56":1,"57":1,"58":1,"59":1,"60":1,"61":1,"62":1,"63":1,"64":1,"65":1,"66":1,"67":1,"68":1,"69":1,"70":1,"71":1,"72":1,"73":1,"74":1,"75":1,"76":1,"77":1,"78":1,"79":1,"80":1,"81":1,"82":8,"83":8,"84":8,"85":8,"86":8,"87":8,"88":8,"89":1,"90":1,"91":1,"92":1,"93":1,"94":1,"95":1,"96":1,"97":1,"98":1,"99":1},"branchMap":{"0":{"type":"branch","line":35,"loc":{"start":{"line":35,"column":2},"end":{"line":35,"column":74}},"locations":[{"start":{"line":35,"column":2},"end":{"line":35,"column":74}}]},"1":{"type":"branch","line":37,"loc":{"start":{"line":37,"column":2},"end":{"line":43,"column":3}},"locations":[{"start":{"line":37,"column":2},"end":{"line":43,"column":3}}]},"2":{"type":"branch","line":38,"loc":{"start":{"line":38,"column":27},"end":{"line":41,"column":5}},"locations":[{"start":{"line":38,"column":27},"end":{"line":41,"column":5}}]},"3":{"type":"branch","line":45,"loc":{"start":{"line":45,"column":2},"end":{"line":52,"column":3}},"locations":[{"start":{"line":45,"column":2},"end":{"line":52,"column":3}}]},"4":{"type":"branch","line":47,"loc":{"start":{"line":47,"column":24},"end":{"line":51,"column":5}},"locations":[{"start":{"line":47,"column":24},"end":{"line":51,"column":5}}]},"5":{"type":"branch","line":49,"loc":{"start":{"line":49,"column":35},"end":{"line":49,"column":54}},"locations":[{"start":{"line":49,"column":35},"end":{"line":49,"column":54}}]},"6":{"type":"branch","line":82,"loc":{"start":{"line":82,"column":2},"end":{"line":89,"column":3}},"locations":[{"start":{"line":82,"column":2},"end":{"line":89,"column":3}}]},"7":{"type":"branch","line":75,"loc":{"start":{"line":75,"column":8},"end":{"line":75,"column":22}},"locations":[{"start":{"line":75,"column":8},"end":{"line":75,"column":22}}]},"8":{"type":"branch","line":79,"loc":{"start":{"line":79,"column":8},"end":{"line":79,"column":32}},"locations":[{"start":{"line":79,"column":8},"end":{"line":79,"column":32}}]}},"b":{"0":[50],"1":[66],"2":[50],"3":[50],"4":[16],"5":[47],"6":[8],"7":[50],"8":[15]},"fnMap":{"0":{"name":"ProjectManifestBaseImpl","decl":{"start":{"line":35,"column":2},"end":{"line":35,"column":74}},"loc":{"start":{"line":35,"column":2},"end":{"line":35,"column":74}},"line":35},"1":{"name":"get deployment","decl":{"start":{"line":37,"column":2},"end":{"line":43,"column":3}},"loc":{"start":{"line":37,"column":2},"end":{"line":43,"column":3}},"line":37},"2":{"name":"validate","decl":{"start":{"line":45,"column":2},"end":{"line":52,"column":3}},"loc":{"start":{"line":45,"column":2},"end":{"line":52,"column":3}},"line":45},"3":{"name":"toDeployment","decl":{"start":{"line":54,"column":2},"end":{"line":56,"column":3}},"loc":{"start":{"line":54,"column":2},"end":{"line":56,"column":3}},"line":54},"4":{"name":"toYaml","decl":{"start":{"line":82,"column":2},"end":{"line":89,"column":3}},"loc":{"start":{"line":82,"column":2},"end":{"line":89,"column":3}},"line":82}},"f":{"0":50,"1":66,"2":50,"3":0,"4":8}},"/Users/scotttwiname/Projects/subql-main/packages/common/src/project/versioned/index.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/common/src/project/versioned/index.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":23}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":25}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1},"branchMap":{},"b":{},"fnMap":{},"f":{}},"/Users/scotttwiname/Projects/subql-main/packages/common/src/project/versioned/v1_0_0/index.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/common/src/project/versioned/v1_0_0/index.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":25}}},"s":{"0":1,"1":1,"2":1,"3":1},"branchMap":{},"b":{},"fnMap":{},"f":{}},"/Users/scotttwiname/Projects/subql-main/packages/common/src/project/versioned/v1_0_0/models.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/common/src/project/versioned/v1_0_0/models.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":8}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":14}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":24}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":24}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":14}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":11}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":16}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":12}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":14}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":27}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":69}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":8}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":9}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":12}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":11}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":11}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":13}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":11}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":8}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":11}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":17}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":10}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":13}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":8}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":13}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":25}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":51}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":33}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":0}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":56}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":25}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":15}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":13}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":35}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":27}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":18}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":1}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":0}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":49}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":13}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":15}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":13}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":35}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":70}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":18}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":15}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":13}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":19}},"51":{"start":{"line":52,"column":0},"end":{"line":52,"column":37}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":24}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":1}},"54":{"start":{"line":55,"column":0},"end":{"line":55,"column":0}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":60}},"56":{"start":{"line":57,"column":0},"end":{"line":57,"column":15}},"57":{"start":{"line":58,"column":0},"end":{"line":58,"column":14}},"58":{"start":{"line":59,"column":0},"end":{"line":59,"column":23}},"59":{"start":{"line":60,"column":0},"end":{"line":60,"column":15}},"60":{"start":{"line":61,"column":0},"end":{"line":61,"column":14}},"61":{"start":{"line":62,"column":0},"end":{"line":62,"column":19}},"62":{"start":{"line":63,"column":0},"end":{"line":63,"column":15}},"63":{"start":{"line":64,"column":0},"end":{"line":64,"column":14}},"64":{"start":{"line":65,"column":0},"end":{"line":65,"column":30}},"65":{"start":{"line":66,"column":0},"end":{"line":66,"column":15}},"66":{"start":{"line":67,"column":0},"end":{"line":67,"column":14}},"67":{"start":{"line":68,"column":0},"end":{"line":68,"column":29}},"68":{"start":{"line":69,"column":0},"end":{"line":69,"column":1}},"69":{"start":{"line":70,"column":0},"end":{"line":70,"column":0}},"70":{"start":{"line":71,"column":0},"end":{"line":71,"column":53}},"71":{"start":{"line":72,"column":0},"end":{"line":72,"column":15}},"72":{"start":{"line":73,"column":0},"end":{"line":73,"column":10}},"73":{"start":{"line":74,"column":0},"end":{"line":74,"column":18}},"74":{"start":{"line":75,"column":0},"end":{"line":75,"column":15}},"75":{"start":{"line":76,"column":0},"end":{"line":76,"column":13}},"76":{"start":{"line":77,"column":0},"end":{"line":77,"column":21}},"77":{"start":{"line":78,"column":0},"end":{"line":78,"column":1}},"78":{"start":{"line":79,"column":0},"end":{"line":79,"column":0}},"79":{"start":{"line":80,"column":0},"end":{"line":80,"column":58}},"80":{"start":{"line":81,"column":0},"end":{"line":81,"column":13}},"81":{"start":{"line":82,"column":0},"end":{"line":82,"column":103}},"82":{"start":{"line":83,"column":0},"end":{"line":83,"column":16}},"83":{"start":{"line":84,"column":0},"end":{"line":84,"column":13}},"84":{"start":{"line":85,"column":0},"end":{"line":85,"column":93}},"85":{"start":{"line":86,"column":0},"end":{"line":86,"column":21}},"86":{"start":{"line":87,"column":0},"end":{"line":87,"column":13}},"87":{"start":{"line":88,"column":0},"end":{"line":88,"column":20}},"88":{"start":{"line":89,"column":0},"end":{"line":89,"column":1}},"89":{"start":{"line":90,"column":0},"end":{"line":90,"column":0}},"90":{"start":{"line":91,"column":0},"end":{"line":91,"column":42}},"91":{"start":{"line":92,"column":0},"end":{"line":92,"column":103}},"92":{"start":{"line":93,"column":0},"end":{"line":93,"column":10}},"93":{"start":{"line":94,"column":0},"end":{"line":94,"column":22}},"94":{"start":{"line":95,"column":0},"end":{"line":95,"column":13}},"95":{"start":{"line":96,"column":0},"end":{"line":96,"column":15}},"96":{"start":{"line":97,"column":0},"end":{"line":97,"column":23}},"97":{"start":{"line":98,"column":0},"end":{"line":98,"column":15}},"98":{"start":{"line":99,"column":0},"end":{"line":99,"column":13}},"99":{"start":{"line":100,"column":0},"end":{"line":100,"column":22}},"100":{"start":{"line":101,"column":0},"end":{"line":101,"column":18}},"101":{"start":{"line":102,"column":0},"end":{"line":102,"column":22}},"102":{"start":{"line":103,"column":0},"end":{"line":103,"column":46}},"103":{"start":{"line":104,"column":0},"end":{"line":104,"column":12}},"104":{"start":{"line":105,"column":0},"end":{"line":105,"column":21}},"105":{"start":{"line":106,"column":0},"end":{"line":106,"column":19}},"106":{"start":{"line":107,"column":0},"end":{"line":107,"column":41}},"107":{"start":{"line":108,"column":0},"end":{"line":108,"column":33}},"108":{"start":{"line":109,"column":0},"end":{"line":109,"column":13}},"109":{"start":{"line":110,"column":0},"end":{"line":110,"column":15}},"110":{"start":{"line":111,"column":0},"end":{"line":111,"column":16}},"111":{"start":{"line":112,"column":0},"end":{"line":112,"column":13}},"112":{"start":{"line":113,"column":0},"end":{"line":113,"column":18}},"113":{"start":{"line":114,"column":0},"end":{"line":114,"column":19}},"114":{"start":{"line":115,"column":0},"end":{"line":115,"column":23}},"115":{"start":{"line":116,"column":0},"end":{"line":116,"column":19}},"116":{"start":{"line":117,"column":0},"end":{"line":117,"column":15}},"117":{"start":{"line":118,"column":0},"end":{"line":118,"column":12}},"118":{"start":{"line":119,"column":0},"end":{"line":119,"column":20}},"119":{"start":{"line":120,"column":0},"end":{"line":120,"column":13}},"120":{"start":{"line":121,"column":0},"end":{"line":121,"column":19}},"121":{"start":{"line":122,"column":0},"end":{"line":122,"column":36}},"122":{"start":{"line":123,"column":0},"end":{"line":123,"column":22}},"123":{"start":{"line":124,"column":0},"end":{"line":124,"column":15}},"124":{"start":{"line":125,"column":0},"end":{"line":125,"column":13}},"125":{"start":{"line":126,"column":0},"end":{"line":126,"column":33}},"126":{"start":{"line":127,"column":0},"end":{"line":127,"column":25}},"127":{"start":{"line":128,"column":0},"end":{"line":128,"column":25}},"128":{"start":{"line":129,"column":0},"end":{"line":129,"column":1}},"129":{"start":{"line":130,"column":0},"end":{"line":130,"column":0}},"130":{"start":{"line":131,"column":0},"end":{"line":131,"column":59}},"131":{"start":{"line":132,"column":0},"end":{"line":132,"column":13}},"132":{"start":{"line":133,"column":0},"end":{"line":133,"column":19}},"133":{"start":{"line":134,"column":0},"end":{"line":134,"column":29}},"134":{"start":{"line":135,"column":0},"end":{"line":135,"column":17}},"135":{"start":{"line":136,"column":0},"end":{"line":136,"column":13}},"136":{"start":{"line":137,"column":0},"end":{"line":137,"column":19}},"137":{"start":{"line":138,"column":0},"end":{"line":138,"column":35}},"138":{"start":{"line":139,"column":0},"end":{"line":139,"column":19}},"139":{"start":{"line":140,"column":0},"end":{"line":140,"column":1}},"140":{"start":{"line":141,"column":0},"end":{"line":141,"column":0}},"141":{"start":{"line":142,"column":0},"end":{"line":142,"column":83}},"142":{"start":{"line":143,"column":0},"end":{"line":143,"column":25}},"143":{"start":{"line":144,"column":0},"end":{"line":144,"column":15}},"144":{"start":{"line":145,"column":0},"end":{"line":145,"column":30}},"145":{"start":{"line":146,"column":0},"end":{"line":146,"column":25}},"146":{"start":{"line":147,"column":0},"end":{"line":147,"column":15}},"147":{"start":{"line":148,"column":0},"end":{"line":148,"column":32}},"148":{"start":{"line":149,"column":0},"end":{"line":149,"column":15}},"149":{"start":{"line":150,"column":0},"end":{"line":150,"column":58}},"150":{"start":{"line":151,"column":0},"end":{"line":151,"column":13}},"151":{"start":{"line":152,"column":0},"end":{"line":152,"column":18}},"152":{"start":{"line":153,"column":0},"end":{"line":153,"column":15}},"153":{"start":{"line":154,"column":0},"end":{"line":154,"column":57}},"154":{"start":{"line":155,"column":0},"end":{"line":155,"column":15}},"155":{"start":{"line":156,"column":0},"end":{"line":156,"column":12}},"156":{"start":{"line":157,"column":0},"end":{"line":157,"column":52}},"157":{"start":{"line":158,"column":0},"end":{"line":158,"column":1}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"38":1,"39":1,"40":1,"41":1,"42":1,"43":1,"44":1,"45":1,"46":1,"47":1,"48":1,"49":1,"50":1,"51":1,"52":1,"53":1,"54":1,"55":1,"56":1,"57":1,"58":1,"59":1,"60":1,"61":1,"62":1,"63":1,"64":1,"65":1,"66":1,"67":1,"68":1,"69":1,"70":1,"71":1,"72":1,"73":1,"74":1,"75":1,"76":1,"77":1,"78":1,"79":1,"80":1,"81":1,"82":1,"83":1,"84":1,"85":1,"86":1,"87":1,"88":1,"89":1,"90":1,"91":1,"92":1,"93":1,"94":1,"95":1,"96":1,"97":1,"98":1,"99":1,"100":1,"101":1,"102":1,"103":1,"104":1,"105":1,"106":1,"107":1,"108":1,"109":1,"110":1,"111":1,"112":1,"113":1,"114":1,"115":1,"116":1,"117":1,"118":1,"119":1,"120":1,"121":1,"122":1,"123":1,"124":1,"125":1,"126":1,"127":1,"128":1,"129":1,"130":1,"131":1,"132":1,"133":1,"134":1,"135":1,"136":1,"137":1,"138":1,"139":1,"140":1,"141":1,"142":1,"143":1,"144":1,"145":1,"146":1,"147":1,"148":1,"149":1,"150":1,"151":1,"152":1,"153":1,"154":1,"155":1,"156":1,"157":1},"branchMap":{"0":{"type":"branch","line":52,"loc":{"start":{"line":52,"column":8},"end":{"line":52,"column":36}},"locations":[{"start":{"line":52,"column":8},"end":{"line":52,"column":36}}]},"1":{"type":"branch","line":107,"loc":{"start":{"line":107,"column":8},"end":{"line":107,"column":40}},"locations":[{"start":{"line":107,"column":8},"end":{"line":107,"column":40}}]},"2":{"type":"branch","line":115,"loc":{"start":{"line":115,"column":8},"end":{"line":115,"column":22}},"locations":[{"start":{"line":115,"column":8},"end":{"line":115,"column":22}}]},"3":{"type":"branch","line":122,"loc":{"start":{"line":122,"column":8},"end":{"line":122,"column":35}},"locations":[{"start":{"line":122,"column":8},"end":{"line":122,"column":35}}]},"4":{"type":"branch","line":134,"loc":{"start":{"line":134,"column":8},"end":{"line":134,"column":28}},"locations":[{"start":{"line":134,"column":8},"end":{"line":134,"column":28}}]},"5":{"type":"branch","line":138,"loc":{"start":{"line":138,"column":8},"end":{"line":138,"column":34}},"locations":[{"start":{"line":138,"column":8},"end":{"line":138,"column":34}}]},"6":{"type":"branch","line":150,"loc":{"start":{"line":150,"column":13},"end":{"line":150,"column":57}},"locations":[{"start":{"line":150,"column":13},"end":{"line":150,"column":57}}]}},"b":{"0":[2],"1":[7],"2":[7],"3":[7],"4":[7],"5":[7],"6":[77]},"fnMap":{},"f":{}},"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/api.connection.error.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/api.connection.error.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":26}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":22}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":28}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":26}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":22}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":1}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":0}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":47}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":26}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":0}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":71}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":19}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":21}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":31}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":3}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":1}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":0}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":56}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":25}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":58}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":3}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":1}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":0}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":54}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":25}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":59}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":3}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":1}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":0}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":60}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":25}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":65}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":3}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":1}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":0}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":60}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":25}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":232}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":0}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":64}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":3}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":1}}},"s":{"0":1,"1":1,"2":1,"3":5,"4":5,"5":5,"6":5,"7":5,"8":5,"9":1,"10":1,"11":1,"12":1,"13":1,"14":0,"15":0,"16":0,"17":0,"18":1,"19":1,"20":1,"21":1,"22":0,"23":0,"24":1,"25":1,"26":1,"27":1,"28":0,"29":0,"30":1,"31":1,"32":1,"33":1,"34":0,"35":0,"36":1,"37":1,"38":1,"39":1,"40":0,"41":0,"42":0,"43":0,"44":1},"branchMap":{"0":{"type":"branch","line":4,"loc":{"start":{"line":4,"column":0},"end":{"line":9,"column":1}},"locations":[{"start":{"line":4,"column":0},"end":{"line":9,"column":1}}]}},"b":{"0":[5]},"fnMap":{"0":{"name":"ApiConnectionError","decl":{"start":{"line":14,"column":2},"end":{"line":18,"column":3}},"loc":{"start":{"line":14,"column":2},"end":{"line":18,"column":3}},"line":14},"1":{"name":"RateLimitError","decl":{"start":{"line":22,"column":2},"end":{"line":24,"column":3}},"loc":{"start":{"line":22,"column":2},"end":{"line":24,"column":3}},"line":22},"2":{"name":"TimeoutError","decl":{"start":{"line":28,"column":2},"end":{"line":30,"column":3}},"loc":{"start":{"line":28,"column":2},"end":{"line":30,"column":3}},"line":28},"3":{"name":"DisconnectionError","decl":{"start":{"line":34,"column":2},"end":{"line":36,"column":3}},"loc":{"start":{"line":34,"column":2},"end":{"line":36,"column":3}},"line":34},"4":{"name":"LargeResponseError","decl":{"start":{"line":40,"column":2},"end":{"line":44,"column":3}},"loc":{"start":{"line":40,"column":2},"end":{"line":44,"column":3}},"line":40}},"f":{"0":0,"1":0,"2":0,"3":0,"4":0}},"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/api.service.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/api.service.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":28}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":52}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":55}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":72}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":62}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":48}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":35}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":68}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":0}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":32}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":0}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":33}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":0}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":72}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":59}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":30}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":15}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":47}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":1}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":0}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":113}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":48}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":30}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":33}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":1}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":0}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":109}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":14}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":93}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":41}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":6}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":0}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":48}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":0}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":45}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":62}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":29}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":3}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":0}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":75}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":0}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":90}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":40}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":56}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":57}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":46}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":20}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":3}},"51":{"start":{"line":52,"column":0},"end":{"line":52,"column":0}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":102}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":9}},"54":{"start":{"line":55,"column":0},"end":{"line":55,"column":49}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":17}},"56":{"start":{"line":57,"column":0},"end":{"line":57,"column":30}},"57":{"start":{"line":58,"column":0},"end":{"line":58,"column":32}},"58":{"start":{"line":59,"column":0},"end":{"line":59,"column":26}},"59":{"start":{"line":60,"column":0},"end":{"line":60,"column":7}},"60":{"start":{"line":61,"column":0},"end":{"line":61,"column":14}},"61":{"start":{"line":62,"column":0},"end":{"line":62,"column":5}},"62":{"start":{"line":63,"column":0},"end":{"line":63,"column":3}},"63":{"start":{"line":64,"column":0},"end":{"line":64,"column":0}},"64":{"start":{"line":65,"column":0},"end":{"line":65,"column":16}},"65":{"start":{"line":66,"column":0},"end":{"line":66,"column":26}},"66":{"start":{"line":67,"column":0},"end":{"line":67,"column":3}},"67":{"start":{"line":68,"column":0},"end":{"line":68,"column":0}},"68":{"start":{"line":69,"column":0},"end":{"line":69,"column":31}},"69":{"start":{"line":70,"column":0},"end":{"line":70,"column":55}},"70":{"start":{"line":71,"column":0},"end":{"line":71,"column":39}},"71":{"start":{"line":72,"column":0},"end":{"line":72,"column":3}},"72":{"start":{"line":73,"column":0},"end":{"line":73,"column":0}},"73":{"start":{"line":74,"column":0},"end":{"line":74,"column":22}},"74":{"start":{"line":75,"column":0},"end":{"line":75,"column":55}},"75":{"start":{"line":76,"column":0},"end":{"line":76,"column":33}},"76":{"start":{"line":77,"column":0},"end":{"line":77,"column":3}},"77":{"start":{"line":78,"column":0},"end":{"line":78,"column":0}},"78":{"start":{"line":79,"column":0},"end":{"line":79,"column":26}},"79":{"start":{"line":80,"column":0},"end":{"line":80,"column":54}},"80":{"start":{"line":81,"column":0},"end":{"line":81,"column":86}},"81":{"start":{"line":82,"column":0},"end":{"line":82,"column":72}},"82":{"start":{"line":83,"column":0},"end":{"line":83,"column":101}},"83":{"start":{"line":84,"column":0},"end":{"line":84,"column":20}},"84":{"start":{"line":85,"column":0},"end":{"line":85,"column":84}},"85":{"start":{"line":86,"column":0},"end":{"line":86,"column":0}},"86":{"start":{"line":87,"column":0},"end":{"line":87,"column":61}},"87":{"start":{"line":88,"column":0},"end":{"line":88,"column":0}},"88":{"start":{"line":89,"column":0},"end":{"line":89,"column":90}},"89":{"start":{"line":90,"column":0},"end":{"line":90,"column":11}},"90":{"start":{"line":91,"column":0},"end":{"line":91,"column":60}},"91":{"start":{"line":92,"column":0},"end":{"line":92,"column":59}},"92":{"start":{"line":93,"column":0},"end":{"line":93,"column":19}},"93":{"start":{"line":94,"column":0},"end":{"line":94,"column":22}},"94":{"start":{"line":95,"column":0},"end":{"line":95,"column":29}},"95":{"start":{"line":96,"column":0},"end":{"line":96,"column":11}},"96":{"start":{"line":97,"column":0},"end":{"line":97,"column":0}},"97":{"start":{"line":98,"column":0},"end":{"line":98,"column":32}},"98":{"start":{"line":99,"column":0},"end":{"line":99,"column":53}},"99":{"start":{"line":100,"column":0},"end":{"line":100,"column":9}},"100":{"start":{"line":101,"column":0},"end":{"line":101,"column":0}},"101":{"start":{"line":102,"column":0},"end":{"line":102,"column":33}},"102":{"start":{"line":103,"column":0},"end":{"line":103,"column":53}},"103":{"start":{"line":104,"column":0},"end":{"line":104,"column":9}},"104":{"start":{"line":105,"column":0},"end":{"line":105,"column":0}},"105":{"start":{"line":106,"column":0},"end":{"line":106,"column":53}},"106":{"start":{"line":107,"column":0},"end":{"line":107,"column":0}},"107":{"start":{"line":108,"column":0},"end":{"line":108,"column":42}},"108":{"start":{"line":109,"column":0},"end":{"line":109,"column":80}},"109":{"start":{"line":110,"column":0},"end":{"line":110,"column":9}},"110":{"start":{"line":111,"column":0},"end":{"line":111,"column":0}},"111":{"start":{"line":112,"column":0},"end":{"line":112,"column":79}},"112":{"start":{"line":113,"column":0},"end":{"line":113,"column":19}},"113":{"start":{"line":114,"column":0},"end":{"line":114,"column":57}},"114":{"start":{"line":115,"column":0},"end":{"line":115,"column":91}},"115":{"start":{"line":116,"column":0},"end":{"line":116,"column":43}},"116":{"start":{"line":117,"column":0},"end":{"line":117,"column":16}},"117":{"start":{"line":118,"column":0},"end":{"line":118,"column":7}},"118":{"start":{"line":119,"column":0},"end":{"line":119,"column":7}},"119":{"start":{"line":120,"column":0},"end":{"line":120,"column":0}},"120":{"start":{"line":121,"column":0},"end":{"line":121,"column":9}},"121":{"start":{"line":122,"column":0},"end":{"line":122,"column":85}},"122":{"start":{"line":123,"column":0},"end":{"line":123,"column":21}},"123":{"start":{"line":124,"column":0},"end":{"line":124,"column":31}},"124":{"start":{"line":125,"column":0},"end":{"line":125,"column":8}},"125":{"start":{"line":126,"column":0},"end":{"line":126,"column":51}},"126":{"start":{"line":127,"column":0},"end":{"line":127,"column":17}},"127":{"start":{"line":128,"column":0},"end":{"line":128,"column":92}},"128":{"start":{"line":129,"column":0},"end":{"line":129,"column":5}},"129":{"start":{"line":130,"column":0},"end":{"line":130,"column":0}},"130":{"start":{"line":131,"column":0},"end":{"line":131,"column":63}},"131":{"start":{"line":132,"column":0},"end":{"line":132,"column":51}},"132":{"start":{"line":133,"column":0},"end":{"line":133,"column":58}},"133":{"start":{"line":134,"column":0},"end":{"line":134,"column":104}},"134":{"start":{"line":135,"column":0},"end":{"line":135,"column":7}},"135":{"start":{"line":136,"column":0},"end":{"line":136,"column":7}},"136":{"start":{"line":137,"column":0},"end":{"line":137,"column":3}},"137":{"start":{"line":138,"column":0},"end":{"line":138,"column":0}},"138":{"start":{"line":139,"column":0},"end":{"line":139,"column":26}},"139":{"start":{"line":140,"column":0},"end":{"line":140,"column":86}},"140":{"start":{"line":141,"column":0},"end":{"line":141,"column":72}},"141":{"start":{"line":142,"column":0},"end":{"line":142,"column":54}},"142":{"start":{"line":143,"column":0},"end":{"line":143,"column":18}},"143":{"start":{"line":144,"column":0},"end":{"line":144,"column":21}},"144":{"start":{"line":145,"column":0},"end":{"line":145,"column":101}},"145":{"start":{"line":146,"column":0},"end":{"line":146,"column":20}},"146":{"start":{"line":147,"column":0},"end":{"line":147,"column":56}},"147":{"start":{"line":148,"column":0},"end":{"line":148,"column":49}},"148":{"start":{"line":149,"column":0},"end":{"line":149,"column":0}},"149":{"start":{"line":150,"column":0},"end":{"line":150,"column":28}},"150":{"start":{"line":151,"column":0},"end":{"line":151,"column":53}},"151":{"start":{"line":152,"column":0},"end":{"line":152,"column":5}},"152":{"start":{"line":153,"column":0},"end":{"line":153,"column":0}},"153":{"start":{"line":154,"column":0},"end":{"line":154,"column":38}},"154":{"start":{"line":155,"column":0},"end":{"line":155,"column":56}},"155":{"start":{"line":156,"column":0},"end":{"line":156,"column":78}},"156":{"start":{"line":157,"column":0},"end":{"line":157,"column":56}},"157":{"start":{"line":158,"column":0},"end":{"line":158,"column":12}},"158":{"start":{"line":159,"column":0},"end":{"line":159,"column":76}},"159":{"start":{"line":160,"column":0},"end":{"line":160,"column":5}},"160":{"start":{"line":161,"column":0},"end":{"line":161,"column":3}},"161":{"start":{"line":162,"column":0},"end":{"line":162,"column":0}},"162":{"start":{"line":163,"column":0},"end":{"line":163,"column":18}},"163":{"start":{"line":164,"column":0},"end":{"line":164,"column":86}},"164":{"start":{"line":165,"column":0},"end":{"line":165,"column":72}},"165":{"start":{"line":166,"column":0},"end":{"line":166,"column":54}},"166":{"start":{"line":167,"column":0},"end":{"line":167,"column":18}},"167":{"start":{"line":168,"column":0},"end":{"line":168,"column":21}},"168":{"start":{"line":169,"column":0},"end":{"line":169,"column":101}},"169":{"start":{"line":170,"column":0},"end":{"line":170,"column":11}},"170":{"start":{"line":171,"column":0},"end":{"line":171,"column":64}},"171":{"start":{"line":172,"column":0},"end":{"line":172,"column":11}},"172":{"start":{"line":173,"column":0},"end":{"line":173,"column":112}},"173":{"start":{"line":174,"column":0},"end":{"line":174,"column":19}},"174":{"start":{"line":175,"column":0},"end":{"line":175,"column":74}},"175":{"start":{"line":176,"column":0},"end":{"line":176,"column":16}},"176":{"start":{"line":177,"column":0},"end":{"line":177,"column":7}},"177":{"start":{"line":178,"column":0},"end":{"line":178,"column":24}},"178":{"start":{"line":179,"column":0},"end":{"line":179,"column":81}},"179":{"start":{"line":180,"column":0},"end":{"line":180,"column":7}},"180":{"start":{"line":181,"column":0},"end":{"line":181,"column":3}},"181":{"start":{"line":182,"column":0},"end":{"line":182,"column":0}},"182":{"start":{"line":183,"column":0},"end":{"line":183,"column":94}},"183":{"start":{"line":184,"column":0},"end":{"line":184,"column":17}},"184":{"start":{"line":185,"column":0},"end":{"line":185,"column":65}},"185":{"start":{"line":186,"column":0},"end":{"line":186,"column":28}},"186":{"start":{"line":187,"column":0},"end":{"line":187,"column":25}},"187":{"start":{"line":188,"column":0},"end":{"line":188,"column":6}},"188":{"start":{"line":189,"column":0},"end":{"line":189,"column":3}},"189":{"start":{"line":190,"column":0},"end":{"line":190,"column":0}},"190":{"start":{"line":191,"column":0},"end":{"line":191,"column":49}},"191":{"start":{"line":192,"column":0},"end":{"line":192,"column":83}},"192":{"start":{"line":193,"column":0},"end":{"line":193,"column":3}},"193":{"start":{"line":194,"column":0},"end":{"line":194,"column":1}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":26,"32":26,"33":26,"34":1,"35":1,"36":1,"37":1,"38":40,"39":40,"40":40,"41":1,"42":1,"43":1,"44":1,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":1,"52":1,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"59":0,"60":0,"61":0,"62":0,"63":1,"64":1,"65":0,"66":0,"67":1,"68":1,"69":0,"70":0,"71":0,"72":1,"73":1,"74":51,"75":51,"76":51,"77":1,"78":1,"79":26,"80":26,"81":26,"82":26,"83":26,"84":26,"85":26,"86":26,"87":26,"88":26,"89":26,"90":26,"91":25,"92":25,"93":25,"94":25,"95":25,"96":25,"97":25,"98":25,"99":25,"100":25,"101":25,"102":25,"103":25,"104":25,"105":25,"106":25,"107":26,"108":0,"109":0,"110":25,"111":25,"112":26,"113":0,"114":0,"115":0,"116":0,"117":0,"118":26,"119":26,"120":26,"121":26,"122":25,"123":25,"124":25,"125":25,"126":26,"127":0,"128":0,"129":25,"130":25,"131":25,"132":25,"133":0,"134":0,"135":25,"136":25,"137":1,"138":1,"139":0,"140":0,"141":0,"142":0,"143":0,"144":0,"145":0,"146":0,"147":0,"148":0,"149":0,"150":0,"151":0,"152":0,"153":0,"154":0,"155":0,"156":0,"157":0,"158":0,"159":0,"160":0,"161":1,"162":1,"163":0,"164":0,"165":0,"166":0,"167":0,"168":0,"169":0,"170":0,"171":0,"172":0,"173":0,"174":0,"175":0,"176":0,"177":0,"178":0,"179":0,"180":0,"181":1,"182":1,"183":1,"184":1,"185":1,"186":1,"187":1,"188":1,"189":1,"190":1,"191":0,"192":0,"193":1},"branchMap":{"0":{"type":"branch","line":31,"loc":{"start":{"line":31,"column":2},"end":{"line":34,"column":6}},"locations":[{"start":{"line":31,"column":2},"end":{"line":34,"column":6}}]},"1":{"type":"branch","line":38,"loc":{"start":{"line":38,"column":2},"end":{"line":41,"column":3}},"locations":[{"start":{"line":38,"column":2},"end":{"line":41,"column":3}}]},"2":{"type":"branch","line":74,"loc":{"start":{"line":74,"column":2},"end":{"line":77,"column":3}},"locations":[{"start":{"line":74,"column":2},"end":{"line":77,"column":3}}]},"3":{"type":"branch","line":79,"loc":{"start":{"line":79,"column":2},"end":{"line":137,"column":3}},"locations":[{"start":{"line":79,"column":2},"end":{"line":137,"column":3}}]},"4":{"type":"branch","line":122,"loc":{"start":{"line":122,"column":79},"end":{"line":127,"column":13}},"locations":[{"start":{"line":122,"column":79},"end":{"line":127,"column":13}}]},"5":{"type":"branch","line":127,"loc":{"start":{"line":127,"column":6},"end":{"line":129,"column":5}},"locations":[{"start":{"line":127,"column":6},"end":{"line":129,"column":5}}]},"6":{"type":"branch","line":130,"loc":{"start":{"line":130,"column":-1},"end":{"line":137,"column":3}},"locations":[{"start":{"line":130,"column":-1},"end":{"line":137,"column":3}}]},"7":{"type":"branch","line":89,"loc":{"start":{"line":89,"column":66},"end":{"line":119,"column":5}},"locations":[{"start":{"line":89,"column":66},"end":{"line":119,"column":5}}]},"8":{"type":"branch","line":92,"loc":{"start":{"line":92,"column":-1},"end":{"line":108,"column":41}},"locations":[{"start":{"line":92,"column":-1},"end":{"line":108,"column":41}}]},"9":{"type":"branch","line":108,"loc":{"start":{"line":108,"column":41},"end":{"line":110,"column":9}},"locations":[{"start":{"line":108,"column":41},"end":{"line":110,"column":9}}]},"10":{"type":"branch","line":111,"loc":{"start":{"line":111,"column":-1},"end":{"line":113,"column":15}},"locations":[{"start":{"line":111,"column":-1},"end":{"line":113,"column":15}}]},"11":{"type":"branch","line":113,"loc":{"start":{"line":113,"column":8},"end":{"line":118,"column":7}},"locations":[{"start":{"line":113,"column":8},"end":{"line":118,"column":7}}]},"12":{"type":"branch","line":131,"loc":{"start":{"line":131,"column":53},"end":{"line":136,"column":5}},"locations":[{"start":{"line":131,"column":53},"end":{"line":136,"column":5}}]},"13":{"type":"branch","line":133,"loc":{"start":{"line":133,"column":57},"end":{"line":135,"column":7}},"locations":[{"start":{"line":133,"column":57},"end":{"line":135,"column":7}}]},"14":{"type":"branch","line":183,"loc":{"start":{"line":183,"column":12},"end":{"line":189,"column":3}},"locations":[{"start":{"line":183,"column":12},"end":{"line":189,"column":3}}]}},"b":{"0":[26],"1":[40],"2":[51],"3":[26],"4":[25],"5":[0],"6":[25],"7":[26],"8":[25],"9":[0],"10":[25],"11":[0],"12":[25],"13":[0],"14":[1]},"fnMap":{"0":{"name":"ApiService","decl":{"start":{"line":31,"column":2},"end":{"line":34,"column":6}},"loc":{"start":{"line":31,"column":2},"end":{"line":34,"column":6}},"line":31},"1":{"name":"get networkMeta","decl":{"start":{"line":38,"column":2},"end":{"line":41,"column":3}},"loc":{"start":{"line":38,"column":2},"end":{"line":41,"column":3}},"line":38},"2":{"name":"fetchBlocks","decl":{"start":{"line":45,"column":2},"end":{"line":51,"column":3}},"loc":{"start":{"line":45,"column":2},"end":{"line":51,"column":3}},"line":45},"3":{"name":"retryFetch","decl":{"start":{"line":53,"column":12},"end":{"line":63,"column":3}},"loc":{"start":{"line":53,"column":12},"end":{"line":63,"column":3}},"line":53},"4":{"name":"get api","decl":{"start":{"line":65,"column":2},"end":{"line":67,"column":3}},"loc":{"start":{"line":65,"column":2},"end":{"line":67,"column":3}},"line":65},"5":{"name":"safeApi","decl":{"start":{"line":69,"column":2},"end":{"line":72,"column":3}},"loc":{"start":{"line":69,"column":2},"end":{"line":72,"column":3}},"line":69},"6":{"name":"get unsafeApi","decl":{"start":{"line":74,"column":2},"end":{"line":77,"column":3}},"loc":{"start":{"line":74,"column":2},"end":{"line":77,"column":3}},"line":74},"7":{"name":"createConnections","decl":{"start":{"line":79,"column":2},"end":{"line":137,"column":3}},"loc":{"start":{"line":79,"column":2},"end":{"line":137,"column":3}},"line":79},"8":{"name":"performConnection","decl":{"start":{"line":139,"column":2},"end":{"line":161,"column":3}},"loc":{"start":{"line":139,"column":2},"end":{"line":161,"column":3}},"line":139},"9":{"name":"retryConnection","decl":{"start":{"line":163,"column":2},"end":{"line":181,"column":3}},"loc":{"start":{"line":163,"column":2},"end":{"line":181,"column":3}},"line":163},"10":{"name":"metadataMismatchError","decl":{"start":{"line":183,"column":12},"end":{"line":189,"column":3}},"loc":{"start":{"line":183,"column":12},"end":{"line":189,"column":3}},"line":183},"11":{"name":"handleError","decl":{"start":{"line":191,"column":2},"end":{"line":193,"column":3}},"loc":{"start":{"line":191,"column":2},"end":{"line":193,"column":3}},"line":191}},"f":{"0":26,"1":40,"2":0,"3":0,"4":0,"5":0,"6":51,"7":26,"8":0,"9":0,"10":1,"11":0}},"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/configure/NodeConfig.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/configure/NodeConfig.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":28}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":20}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":24}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":65}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":28}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":37}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":36}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":39}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":0}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":38}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":0}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":26}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":28}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":33}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":29}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":29}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":27}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":29}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":26}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":32}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":38}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":43}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":40}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":38}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":30}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":37}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":30}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":35}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":33}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":25}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":37}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":39}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":28}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":30}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":28}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":33}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":38}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":31}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":28}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":39}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":25}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":26}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":27}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":39}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":40}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":37}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":36}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":38}},"51":{"start":{"line":52,"column":0},"end":{"line":52,"column":28}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":25}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":41}},"54":{"start":{"line":55,"column":0},"end":{"line":55,"column":30}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":1}},"56":{"start":{"line":57,"column":0},"end":{"line":57,"column":0}},"57":{"start":{"line":58,"column":0},"end":{"line":58,"column":87}},"58":{"start":{"line":59,"column":0},"end":{"line":59,"column":0}},"59":{"start":{"line":60,"column":0},"end":{"line":60,"column":24}},"60":{"start":{"line":61,"column":0},"end":{"line":61,"column":19}},"61":{"start":{"line":62,"column":0},"end":{"line":62,"column":17}},"62":{"start":{"line":63,"column":0},"end":{"line":63,"column":15}},"63":{"start":{"line":64,"column":0},"end":{"line":64,"column":18}},"64":{"start":{"line":65,"column":0},"end":{"line":65,"column":21}},"65":{"start":{"line":66,"column":0},"end":{"line":66,"column":19}},"66":{"start":{"line":67,"column":0},"end":{"line":67,"column":18}},"67":{"start":{"line":68,"column":0},"end":{"line":68,"column":22}},"68":{"start":{"line":69,"column":0},"end":{"line":69,"column":22}},"69":{"start":{"line":70,"column":0},"end":{"line":70,"column":24}},"70":{"start":{"line":71,"column":0},"end":{"line":71,"column":29}},"71":{"start":{"line":72,"column":0},"end":{"line":72,"column":18}},"72":{"start":{"line":73,"column":0},"end":{"line":73,"column":22}},"73":{"start":{"line":74,"column":0},"end":{"line":74,"column":27}},"74":{"start":{"line":75,"column":0},"end":{"line":75,"column":20}},"75":{"start":{"line":76,"column":0},"end":{"line":76,"column":27}},"76":{"start":{"line":77,"column":0},"end":{"line":77,"column":28}},"77":{"start":{"line":78,"column":0},"end":{"line":78,"column":30}},"78":{"start":{"line":79,"column":0},"end":{"line":79,"column":25}},"79":{"start":{"line":80,"column":0},"end":{"line":80,"column":24}},"80":{"start":{"line":81,"column":0},"end":{"line":81,"column":24}},"81":{"start":{"line":82,"column":0},"end":{"line":82,"column":30}},"82":{"start":{"line":83,"column":0},"end":{"line":83,"column":2}},"83":{"start":{"line":84,"column":0},"end":{"line":84,"column":0}},"84":{"start":{"line":85,"column":0},"end":{"line":85,"column":73}},"85":{"start":{"line":86,"column":0},"end":{"line":86,"column":32}},"86":{"start":{"line":87,"column":0},"end":{"line":87,"column":38}},"87":{"start":{"line":88,"column":0},"end":{"line":88,"column":0}},"88":{"start":{"line":89,"column":0},"end":{"line":89,"column":102}},"89":{"start":{"line":90,"column":0},"end":{"line":90,"column":35}},"90":{"start":{"line":91,"column":0},"end":{"line":91,"column":72}},"91":{"start":{"line":92,"column":0},"end":{"line":92,"column":5}},"92":{"start":{"line":93,"column":0},"end":{"line":93,"column":32}},"93":{"start":{"line":94,"column":0},"end":{"line":94,"column":9}},"94":{"start":{"line":95,"column":0},"end":{"line":95,"column":52}},"95":{"start":{"line":96,"column":0},"end":{"line":96,"column":17}},"96":{"start":{"line":97,"column":0},"end":{"line":97,"column":55}},"97":{"start":{"line":98,"column":0},"end":{"line":98,"column":14}},"98":{"start":{"line":99,"column":0},"end":{"line":99,"column":5}},"99":{"start":{"line":100,"column":0},"end":{"line":100,"column":0}},"100":{"start":{"line":101,"column":0},"end":{"line":101,"column":69}},"101":{"start":{"line":102,"column":0},"end":{"line":102,"column":42}},"102":{"start":{"line":103,"column":0},"end":{"line":103,"column":3}},"103":{"start":{"line":104,"column":0},"end":{"line":104,"column":0}},"104":{"start":{"line":105,"column":0},"end":{"line":105,"column":92}},"105":{"start":{"line":106,"column":0},"end":{"line":106,"column":72}},"106":{"start":{"line":107,"column":0},"end":{"line":107,"column":60}},"107":{"start":{"line":108,"column":0},"end":{"line":108,"column":3}},"108":{"start":{"line":109,"column":0},"end":{"line":109,"column":0}},"109":{"start":{"line":110,"column":0},"end":{"line":110,"column":52}},"110":{"start":{"line":111,"column":0},"end":{"line":111,"column":59}},"111":{"start":{"line":112,"column":0},"end":{"line":112,"column":35}},"112":{"start":{"line":113,"column":0},"end":{"line":113,"column":3}},"113":{"start":{"line":114,"column":0},"end":{"line":114,"column":0}},"114":{"start":{"line":115,"column":0},"end":{"line":115,"column":26}},"115":{"start":{"line":116,"column":0},"end":{"line":116,"column":34}},"116":{"start":{"line":117,"column":0},"end":{"line":117,"column":33}},"117":{"start":{"line":118,"column":0},"end":{"line":118,"column":3}},"118":{"start":{"line":119,"column":0},"end":{"line":119,"column":0}},"119":{"start":{"line":120,"column":0},"end":{"line":120,"column":30}},"120":{"start":{"line":121,"column":0},"end":{"line":121,"column":34}},"121":{"start":{"line":122,"column":0},"end":{"line":122,"column":82}},"122":{"start":{"line":123,"column":0},"end":{"line":123,"column":16}},"123":{"start":{"line":124,"column":0},"end":{"line":124,"column":53}},"124":{"start":{"line":125,"column":0},"end":{"line":125,"column":5}},"125":{"start":{"line":126,"column":0},"end":{"line":126,"column":16}},"126":{"start":{"line":127,"column":0},"end":{"line":127,"column":3}},"127":{"start":{"line":128,"column":0},"end":{"line":128,"column":0}},"128":{"start":{"line":129,"column":0},"end":{"line":129,"column":27}},"129":{"start":{"line":130,"column":0},"end":{"line":130,"column":34}},"130":{"start":{"line":131,"column":0},"end":{"line":131,"column":3}},"131":{"start":{"line":132,"column":0},"end":{"line":132,"column":0}},"132":{"start":{"line":133,"column":0},"end":{"line":133,"column":48}},"133":{"start":{"line":134,"column":0},"end":{"line":134,"column":59}},"134":{"start":{"line":135,"column":0},"end":{"line":135,"column":38}},"135":{"start":{"line":136,"column":0},"end":{"line":136,"column":37}},"136":{"start":{"line":137,"column":0},"end":{"line":137,"column":3}},"137":{"start":{"line":138,"column":0},"end":{"line":138,"column":0}},"138":{"start":{"line":139,"column":0},"end":{"line":139,"column":52}},"139":{"start":{"line":140,"column":0},"end":{"line":140,"column":47}},"140":{"start":{"line":141,"column":0},"end":{"line":141,"column":3}},"141":{"start":{"line":142,"column":0},"end":{"line":142,"column":0}},"142":{"start":{"line":143,"column":0},"end":{"line":143,"column":59}},"143":{"start":{"line":144,"column":0},"end":{"line":144,"column":61}},"144":{"start":{"line":145,"column":0},"end":{"line":145,"column":50}},"145":{"start":{"line":146,"column":0},"end":{"line":146,"column":15}},"146":{"start":{"line":147,"column":0},"end":{"line":147,"column":42}},"147":{"start":{"line":148,"column":0},"end":{"line":148,"column":39}},"148":{"start":{"line":149,"column":0},"end":{"line":149,"column":3}},"149":{"start":{"line":150,"column":0},"end":{"line":150,"column":0}},"150":{"start":{"line":151,"column":0},"end":{"line":151,"column":39}},"151":{"start":{"line":152,"column":0},"end":{"line":152,"column":45}},"152":{"start":{"line":153,"column":0},"end":{"line":153,"column":3}},"153":{"start":{"line":154,"column":0},"end":{"line":154,"column":37}},"154":{"start":{"line":155,"column":0},"end":{"line":155,"column":44}},"155":{"start":{"line":156,"column":0},"end":{"line":156,"column":3}},"156":{"start":{"line":157,"column":0},"end":{"line":157,"column":0}},"157":{"start":{"line":158,"column":0},"end":{"line":158,"column":38}},"158":{"start":{"line":159,"column":0},"end":{"line":159,"column":45}},"159":{"start":{"line":160,"column":0},"end":{"line":160,"column":3}},"160":{"start":{"line":161,"column":0},"end":{"line":161,"column":0}},"161":{"start":{"line":162,"column":0},"end":{"line":162,"column":35}},"162":{"start":{"line":163,"column":0},"end":{"line":163,"column":42}},"163":{"start":{"line":164,"column":0},"end":{"line":164,"column":3}},"164":{"start":{"line":165,"column":0},"end":{"line":165,"column":0}},"165":{"start":{"line":166,"column":0},"end":{"line":166,"column":34}},"166":{"start":{"line":167,"column":0},"end":{"line":167,"column":42}},"167":{"start":{"line":168,"column":0},"end":{"line":168,"column":3}},"168":{"start":{"line":169,"column":0},"end":{"line":169,"column":0}},"169":{"start":{"line":170,"column":0},"end":{"line":170,"column":36}},"170":{"start":{"line":171,"column":0},"end":{"line":171,"column":43}},"171":{"start":{"line":172,"column":0},"end":{"line":172,"column":3}},"172":{"start":{"line":173,"column":0},"end":{"line":173,"column":0}},"173":{"start":{"line":174,"column":0},"end":{"line":174,"column":36}},"174":{"start":{"line":175,"column":0},"end":{"line":175,"column":42}},"175":{"start":{"line":176,"column":0},"end":{"line":176,"column":45}},"176":{"start":{"line":177,"column":0},"end":{"line":177,"column":5}},"177":{"start":{"line":178,"column":0},"end":{"line":178,"column":0}},"178":{"start":{"line":179,"column":0},"end":{"line":179,"column":81}},"179":{"start":{"line":180,"column":0},"end":{"line":180,"column":3}},"180":{"start":{"line":181,"column":0},"end":{"line":181,"column":0}},"181":{"start":{"line":182,"column":0},"end":{"line":182,"column":25}},"182":{"start":{"line":183,"column":0},"end":{"line":183,"column":32}},"183":{"start":{"line":184,"column":0},"end":{"line":184,"column":3}},"184":{"start":{"line":185,"column":0},"end":{"line":185,"column":0}},"185":{"start":{"line":186,"column":0},"end":{"line":186,"column":27}},"186":{"start":{"line":187,"column":0},"end":{"line":187,"column":34}},"187":{"start":{"line":188,"column":0},"end":{"line":188,"column":3}},"188":{"start":{"line":189,"column":0},"end":{"line":189,"column":0}},"189":{"start":{"line":190,"column":0},"end":{"line":190,"column":35}},"190":{"start":{"line":191,"column":0},"end":{"line":191,"column":30}},"191":{"start":{"line":192,"column":0},"end":{"line":192,"column":3}},"192":{"start":{"line":193,"column":0},"end":{"line":193,"column":0}},"193":{"start":{"line":194,"column":0},"end":{"line":194,"column":30}},"194":{"start":{"line":195,"column":0},"end":{"line":195,"column":36}},"195":{"start":{"line":196,"column":0},"end":{"line":196,"column":3}},"196":{"start":{"line":197,"column":0},"end":{"line":197,"column":0}},"197":{"start":{"line":198,"column":0},"end":{"line":198,"column":39}},"198":{"start":{"line":199,"column":0},"end":{"line":199,"column":34}},"199":{"start":{"line":200,"column":0},"end":{"line":200,"column":3}},"200":{"start":{"line":201,"column":0},"end":{"line":201,"column":0}},"201":{"start":{"line":202,"column":0},"end":{"line":202,"column":35}},"202":{"start":{"line":203,"column":0},"end":{"line":203,"column":56}},"203":{"start":{"line":204,"column":0},"end":{"line":204,"column":3}},"204":{"start":{"line":205,"column":0},"end":{"line":205,"column":0}},"205":{"start":{"line":206,"column":0},"end":{"line":206,"column":28}},"206":{"start":{"line":207,"column":0},"end":{"line":207,"column":35}},"207":{"start":{"line":208,"column":0},"end":{"line":208,"column":3}},"208":{"start":{"line":209,"column":0},"end":{"line":209,"column":0}},"209":{"start":{"line":210,"column":0},"end":{"line":210,"column":33}},"210":{"start":{"line":211,"column":0},"end":{"line":211,"column":40}},"211":{"start":{"line":212,"column":0},"end":{"line":212,"column":3}},"212":{"start":{"line":213,"column":0},"end":{"line":213,"column":0}},"213":{"start":{"line":214,"column":0},"end":{"line":214,"column":31}},"214":{"start":{"line":215,"column":0},"end":{"line":215,"column":37}},"215":{"start":{"line":216,"column":0},"end":{"line":216,"column":3}},"216":{"start":{"line":217,"column":0},"end":{"line":217,"column":0}},"217":{"start":{"line":218,"column":0},"end":{"line":218,"column":35}},"218":{"start":{"line":219,"column":0},"end":{"line":219,"column":42}},"219":{"start":{"line":220,"column":0},"end":{"line":220,"column":3}},"220":{"start":{"line":221,"column":0},"end":{"line":221,"column":0}},"221":{"start":{"line":222,"column":0},"end":{"line":222,"column":37}},"222":{"start":{"line":223,"column":0},"end":{"line":223,"column":44}},"223":{"start":{"line":224,"column":0},"end":{"line":224,"column":3}},"224":{"start":{"line":225,"column":0},"end":{"line":225,"column":0}},"225":{"start":{"line":226,"column":0},"end":{"line":226,"column":34}},"226":{"start":{"line":227,"column":0},"end":{"line":227,"column":29}},"227":{"start":{"line":228,"column":0},"end":{"line":228,"column":3}},"228":{"start":{"line":229,"column":0},"end":{"line":229,"column":0}},"229":{"start":{"line":230,"column":0},"end":{"line":230,"column":26}},"230":{"start":{"line":231,"column":0},"end":{"line":231,"column":62}},"231":{"start":{"line":232,"column":0},"end":{"line":232,"column":52}},"232":{"start":{"line":233,"column":0},"end":{"line":233,"column":3}},"233":{"start":{"line":234,"column":0},"end":{"line":234,"column":0}},"234":{"start":{"line":235,"column":0},"end":{"line":235,"column":37}},"235":{"start":{"line":236,"column":0},"end":{"line":236,"column":32}},"236":{"start":{"line":237,"column":0},"end":{"line":237,"column":3}},"237":{"start":{"line":238,"column":0},"end":{"line":238,"column":0}},"238":{"start":{"line":239,"column":0},"end":{"line":239,"column":27}},"239":{"start":{"line":240,"column":0},"end":{"line":240,"column":35}},"240":{"start":{"line":241,"column":0},"end":{"line":241,"column":3}},"241":{"start":{"line":242,"column":0},"end":{"line":242,"column":0}},"242":{"start":{"line":243,"column":0},"end":{"line":243,"column":25}},"243":{"start":{"line":244,"column":0},"end":{"line":244,"column":33}},"244":{"start":{"line":245,"column":0},"end":{"line":245,"column":3}},"245":{"start":{"line":246,"column":0},"end":{"line":246,"column":0}},"246":{"start":{"line":247,"column":0},"end":{"line":247,"column":31}},"247":{"start":{"line":248,"column":0},"end":{"line":248,"column":37}},"248":{"start":{"line":249,"column":0},"end":{"line":249,"column":3}},"249":{"start":{"line":250,"column":0},"end":{"line":250,"column":0}},"250":{"start":{"line":251,"column":0},"end":{"line":251,"column":36}},"251":{"start":{"line":252,"column":0},"end":{"line":252,"column":64}},"252":{"start":{"line":253,"column":0},"end":{"line":253,"column":3}},"253":{"start":{"line":254,"column":0},"end":{"line":254,"column":0}},"254":{"start":{"line":255,"column":0},"end":{"line":255,"column":29}},"255":{"start":{"line":256,"column":0},"end":{"line":256,"column":35}},"256":{"start":{"line":257,"column":0},"end":{"line":257,"column":3}},"257":{"start":{"line":258,"column":0},"end":{"line":258,"column":0}},"258":{"start":{"line":259,"column":0},"end":{"line":259,"column":36}},"259":{"start":{"line":260,"column":0},"end":{"line":260,"column":67}},"260":{"start":{"line":261,"column":0},"end":{"line":261,"column":3}},"261":{"start":{"line":262,"column":0},"end":{"line":262,"column":0}},"262":{"start":{"line":263,"column":0},"end":{"line":263,"column":45}},"263":{"start":{"line":264,"column":0},"end":{"line":264,"column":31}},"264":{"start":{"line":265,"column":0},"end":{"line":265,"column":3}},"265":{"start":{"line":266,"column":0},"end":{"line":266,"column":0}},"266":{"start":{"line":267,"column":0},"end":{"line":267,"column":44}},"267":{"start":{"line":268,"column":0},"end":{"line":268,"column":29}},"268":{"start":{"line":269,"column":0},"end":{"line":269,"column":23}},"269":{"start":{"line":270,"column":0},"end":{"line":270,"column":5}},"270":{"start":{"line":271,"column":0},"end":{"line":271,"column":9}},"271":{"start":{"line":272,"column":0},"end":{"line":272,"column":67}},"272":{"start":{"line":273,"column":0},"end":{"line":273,"column":22}},"273":{"start":{"line":274,"column":0},"end":{"line":274,"column":55}},"274":{"start":{"line":275,"column":0},"end":{"line":275,"column":14}},"275":{"start":{"line":276,"column":0},"end":{"line":276,"column":5}},"276":{"start":{"line":277,"column":0},"end":{"line":277,"column":3}},"277":{"start":{"line":278,"column":0},"end":{"line":278,"column":0}},"278":{"start":{"line":279,"column":0},"end":{"line":279,"column":47}},"279":{"start":{"line":280,"column":0},"end":{"line":280,"column":30}},"280":{"start":{"line":281,"column":0},"end":{"line":281,"column":23}},"281":{"start":{"line":282,"column":0},"end":{"line":282,"column":5}},"282":{"start":{"line":283,"column":0},"end":{"line":283,"column":0}},"283":{"start":{"line":284,"column":0},"end":{"line":284,"column":9}},"284":{"start":{"line":285,"column":0},"end":{"line":285,"column":71}},"285":{"start":{"line":286,"column":0},"end":{"line":286,"column":22}},"286":{"start":{"line":287,"column":0},"end":{"line":287,"column":59}},"287":{"start":{"line":288,"column":0},"end":{"line":288,"column":14}},"288":{"start":{"line":289,"column":0},"end":{"line":289,"column":5}},"289":{"start":{"line":290,"column":0},"end":{"line":290,"column":3}},"290":{"start":{"line":291,"column":0},"end":{"line":291,"column":0}},"291":{"start":{"line":292,"column":0},"end":{"line":292,"column":48}},"292":{"start":{"line":293,"column":0},"end":{"line":293,"column":31}},"293":{"start":{"line":294,"column":0},"end":{"line":294,"column":23}},"294":{"start":{"line":295,"column":0},"end":{"line":295,"column":5}},"295":{"start":{"line":296,"column":0},"end":{"line":296,"column":9}},"296":{"start":{"line":297,"column":0},"end":{"line":297,"column":73}},"297":{"start":{"line":298,"column":0},"end":{"line":298,"column":22}},"298":{"start":{"line":299,"column":0},"end":{"line":299,"column":60}},"299":{"start":{"line":300,"column":0},"end":{"line":300,"column":14}},"300":{"start":{"line":301,"column":0},"end":{"line":301,"column":5}},"301":{"start":{"line":302,"column":0},"end":{"line":302,"column":3}},"302":{"start":{"line":303,"column":0},"end":{"line":303,"column":0}},"303":{"start":{"line":304,"column":0},"end":{"line":304,"column":34}},"304":{"start":{"line":305,"column":0},"end":{"line":305,"column":29}},"305":{"start":{"line":306,"column":0},"end":{"line":306,"column":3}},"306":{"start":{"line":307,"column":0},"end":{"line":307,"column":0}},"307":{"start":{"line":308,"column":0},"end":{"line":308,"column":39}},"308":{"start":{"line":309,"column":0},"end":{"line":309,"column":34}},"309":{"start":{"line":310,"column":0},"end":{"line":310,"column":3}},"310":{"start":{"line":311,"column":0},"end":{"line":311,"column":0}},"311":{"start":{"line":312,"column":0},"end":{"line":312,"column":41}},"312":{"start":{"line":313,"column":0},"end":{"line":313,"column":33}},"313":{"start":{"line":314,"column":0},"end":{"line":314,"column":16}},"314":{"start":{"line":315,"column":0},"end":{"line":315,"column":3}},"315":{"start":{"line":316,"column":0},"end":{"line":316,"column":1}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"38":1,"39":1,"40":1,"41":1,"42":1,"43":1,"44":1,"45":1,"46":1,"47":1,"48":1,"49":1,"50":1,"51":1,"52":1,"53":1,"54":1,"55":1,"56":1,"57":1,"58":1,"59":1,"60":1,"61":1,"62":1,"63":1,"64":1,"65":1,"66":1,"67":1,"68":1,"69":1,"70":1,"71":1,"72":1,"73":1,"74":1,"75":1,"76":1,"77":1,"78":1,"79":1,"80":1,"81":1,"82":1,"83":1,"84":1,"85":1,"86":1,"87":1,"88":1,"89":5,"90":1,"91":1,"92":4,"93":4,"94":4,"95":5,"96":1,"97":1,"98":1,"99":3,"100":3,"101":3,"102":3,"103":1,"104":1,"105":1,"106":1,"107":1,"108":1,"109":1,"110":17,"111":17,"112":17,"113":1,"114":1,"115":8,"116":8,"117":8,"118":1,"119":1,"120":2,"121":2,"122":2,"123":0,"124":0,"125":2,"126":2,"127":1,"128":1,"129":34,"130":34,"131":1,"132":1,"133":35,"134":35,"135":35,"136":35,"137":1,"138":1,"139":46,"140":46,"141":1,"142":1,"143":35,"144":35,"145":0,"146":0,"147":35,"148":35,"149":1,"150":1,"151":26,"152":26,"153":1,"154":20,"155":20,"156":1,"157":1,"158":20,"159":20,"160":1,"161":1,"162":50,"163":50,"164":1,"165":1,"166":0,"167":0,"168":1,"169":1,"170":40,"171":40,"172":1,"173":1,"174":3,"175":2,"176":2,"177":1,"178":1,"179":1,"180":1,"181":1,"182":16,"183":16,"184":1,"185":1,"186":20,"187":20,"188":1,"189":1,"190":70,"191":70,"192":1,"193":1,"194":0,"195":0,"196":1,"197":1,"198":0,"199":0,"200":1,"201":1,"202":0,"203":0,"204":1,"205":1,"206":0,"207":0,"208":1,"209":1,"210":102,"211":102,"212":1,"213":1,"214":60,"215":60,"216":1,"217":1,"218":166,"219":166,"220":1,"221":1,"222":5,"223":5,"224":1,"225":1,"226":15,"227":15,"228":1,"229":1,"230":59,"231":59,"232":59,"233":1,"234":1,"235":21,"236":21,"237":1,"238":1,"239":79,"240":79,"241":1,"242":1,"243":7,"244":7,"245":1,"246":1,"247":33,"248":33,"249":1,"250":1,"251":53,"252":53,"253":1,"254":1,"255":40,"256":40,"257":1,"258":1,"259":120,"260":120,"261":1,"262":1,"263":7,"264":7,"265":1,"266":1,"267":7,"268":7,"269":7,"270":0,"271":0,"272":0,"273":0,"274":0,"275":0,"276":7,"277":1,"278":1,"279":7,"280":7,"281":7,"282":0,"283":0,"284":0,"285":0,"286":0,"287":0,"288":0,"289":7,"290":1,"291":1,"292":7,"293":7,"294":7,"295":0,"296":0,"297":0,"298":0,"299":0,"300":0,"301":7,"302":1,"303":1,"304":35,"305":35,"306":1,"307":1,"308":25,"309":25,"310":1,"311":1,"312":0,"313":0,"314":0,"315":1},"branchMap":{"0":{"type":"branch","line":89,"loc":{"start":{"line":89,"column":9},"end":{"line":103,"column":3}},"locations":[{"start":{"line":89,"column":9},"end":{"line":103,"column":3}}]},"1":{"type":"branch","line":90,"loc":{"start":{"line":90,"column":34},"end":{"line":92,"column":5}},"locations":[{"start":{"line":90,"column":34},"end":{"line":92,"column":5}}]},"2":{"type":"branch","line":93,"loc":{"start":{"line":93,"column":-1},"end":{"line":96,"column":13}},"locations":[{"start":{"line":93,"column":-1},"end":{"line":96,"column":13}}]},"3":{"type":"branch","line":96,"loc":{"start":{"line":96,"column":6},"end":{"line":99,"column":5}},"locations":[{"start":{"line":96,"column":6},"end":{"line":99,"column":5}}]},"4":{"type":"branch","line":100,"loc":{"start":{"line":100,"column":-1},"end":{"line":103,"column":3}},"locations":[{"start":{"line":100,"column":-1},"end":{"line":103,"column":3}}]},"5":{"type":"branch","line":105,"loc":{"start":{"line":105,"column":9},"end":{"line":108,"column":3}},"locations":[{"start":{"line":105,"column":9},"end":{"line":108,"column":3}}]},"6":{"type":"branch","line":110,"loc":{"start":{"line":110,"column":2},"end":{"line":113,"column":3}},"locations":[{"start":{"line":110,"column":2},"end":{"line":113,"column":3}}]},"7":{"type":"branch","line":115,"loc":{"start":{"line":115,"column":2},"end":{"line":118,"column":3}},"locations":[{"start":{"line":115,"column":2},"end":{"line":118,"column":3}}]},"8":{"type":"branch","line":120,"loc":{"start":{"line":120,"column":2},"end":{"line":127,"column":3}},"locations":[{"start":{"line":120,"column":2},"end":{"line":127,"column":3}}]},"9":{"type":"branch","line":122,"loc":{"start":{"line":122,"column":42},"end":{"line":122,"column":81}},"locations":[{"start":{"line":122,"column":42},"end":{"line":122,"column":81}}]},"10":{"type":"branch","line":123,"loc":{"start":{"line":123,"column":15},"end":{"line":125,"column":5}},"locations":[{"start":{"line":123,"column":15},"end":{"line":125,"column":5}}]},"11":{"type":"branch","line":129,"loc":{"start":{"line":129,"column":2},"end":{"line":131,"column":3}},"locations":[{"start":{"line":129,"column":2},"end":{"line":131,"column":3}}]},"12":{"type":"branch","line":133,"loc":{"start":{"line":133,"column":2},"end":{"line":137,"column":3}},"locations":[{"start":{"line":133,"column":2},"end":{"line":137,"column":3}}]},"13":{"type":"branch","line":136,"loc":{"start":{"line":136,"column":6},"end":{"line":136,"column":36}},"locations":[{"start":{"line":136,"column":6},"end":{"line":136,"column":36}}]},"14":{"type":"branch","line":139,"loc":{"start":{"line":139,"column":2},"end":{"line":141,"column":3}},"locations":[{"start":{"line":139,"column":2},"end":{"line":141,"column":3}}]},"15":{"type":"branch","line":143,"loc":{"start":{"line":143,"column":2},"end":{"line":149,"column":3}},"locations":[{"start":{"line":143,"column":2},"end":{"line":149,"column":3}}]},"16":{"type":"branch","line":145,"loc":{"start":{"line":145,"column":6},"end":{"line":147,"column":42}},"locations":[{"start":{"line":145,"column":6},"end":{"line":147,"column":42}}]},"17":{"type":"branch","line":151,"loc":{"start":{"line":151,"column":2},"end":{"line":153,"column":3}},"locations":[{"start":{"line":151,"column":2},"end":{"line":153,"column":3}}]},"18":{"type":"branch","line":154,"loc":{"start":{"line":154,"column":2},"end":{"line":156,"column":3}},"locations":[{"start":{"line":154,"column":2},"end":{"line":156,"column":3}}]},"19":{"type":"branch","line":158,"loc":{"start":{"line":158,"column":2},"end":{"line":160,"column":3}},"locations":[{"start":{"line":158,"column":2},"end":{"line":160,"column":3}}]},"20":{"type":"branch","line":162,"loc":{"start":{"line":162,"column":2},"end":{"line":164,"column":3}},"locations":[{"start":{"line":162,"column":2},"end":{"line":164,"column":3}}]},"21":{"type":"branch","line":170,"loc":{"start":{"line":170,"column":2},"end":{"line":172,"column":3}},"locations":[{"start":{"line":170,"column":2},"end":{"line":172,"column":3}}]},"22":{"type":"branch","line":174,"loc":{"start":{"line":174,"column":2},"end":{"line":180,"column":3}},"locations":[{"start":{"line":174,"column":2},"end":{"line":180,"column":3}}]},"23":{"type":"branch","line":175,"loc":{"start":{"line":175,"column":41},"end":{"line":177,"column":5}},"locations":[{"start":{"line":175,"column":41},"end":{"line":177,"column":5}}]},"24":{"type":"branch","line":178,"loc":{"start":{"line":178,"column":-1},"end":{"line":180,"column":3}},"locations":[{"start":{"line":178,"column":-1},"end":{"line":180,"column":3}}]},"25":{"type":"branch","line":182,"loc":{"start":{"line":182,"column":2},"end":{"line":184,"column":3}},"locations":[{"start":{"line":182,"column":2},"end":{"line":184,"column":3}}]},"26":{"type":"branch","line":186,"loc":{"start":{"line":186,"column":2},"end":{"line":188,"column":3}},"locations":[{"start":{"line":186,"column":2},"end":{"line":188,"column":3}}]},"27":{"type":"branch","line":190,"loc":{"start":{"line":190,"column":2},"end":{"line":192,"column":3}},"locations":[{"start":{"line":190,"column":2},"end":{"line":192,"column":3}}]},"28":{"type":"branch","line":210,"loc":{"start":{"line":210,"column":2},"end":{"line":212,"column":3}},"locations":[{"start":{"line":210,"column":2},"end":{"line":212,"column":3}}]},"29":{"type":"branch","line":214,"loc":{"start":{"line":214,"column":2},"end":{"line":216,"column":3}},"locations":[{"start":{"line":214,"column":2},"end":{"line":216,"column":3}}]},"30":{"type":"branch","line":218,"loc":{"start":{"line":218,"column":2},"end":{"line":220,"column":3}},"locations":[{"start":{"line":218,"column":2},"end":{"line":220,"column":3}}]},"31":{"type":"branch","line":222,"loc":{"start":{"line":222,"column":2},"end":{"line":224,"column":3}},"locations":[{"start":{"line":222,"column":2},"end":{"line":224,"column":3}}]},"32":{"type":"branch","line":226,"loc":{"start":{"line":226,"column":2},"end":{"line":228,"column":3}},"locations":[{"start":{"line":226,"column":2},"end":{"line":228,"column":3}}]},"33":{"type":"branch","line":230,"loc":{"start":{"line":230,"column":2},"end":{"line":233,"column":3}},"locations":[{"start":{"line":230,"column":2},"end":{"line":233,"column":3}}]},"34":{"type":"branch","line":231,"loc":{"start":{"line":231,"column":40},"end":{"line":231,"column":61}},"locations":[{"start":{"line":231,"column":40},"end":{"line":231,"column":61}}]},"35":{"type":"branch","line":232,"loc":{"start":{"line":232,"column":24},"end":{"line":232,"column":42}},"locations":[{"start":{"line":232,"column":24},"end":{"line":232,"column":42}}]},"36":{"type":"branch","line":235,"loc":{"start":{"line":235,"column":2},"end":{"line":237,"column":3}},"locations":[{"start":{"line":235,"column":2},"end":{"line":237,"column":3}}]},"37":{"type":"branch","line":239,"loc":{"start":{"line":239,"column":2},"end":{"line":241,"column":3}},"locations":[{"start":{"line":239,"column":2},"end":{"line":241,"column":3}}]},"38":{"type":"branch","line":243,"loc":{"start":{"line":243,"column":2},"end":{"line":245,"column":3}},"locations":[{"start":{"line":243,"column":2},"end":{"line":245,"column":3}}]},"39":{"type":"branch","line":247,"loc":{"start":{"line":247,"column":2},"end":{"line":249,"column":3}},"locations":[{"start":{"line":247,"column":2},"end":{"line":249,"column":3}}]},"40":{"type":"branch","line":251,"loc":{"start":{"line":251,"column":2},"end":{"line":253,"column":3}},"locations":[{"start":{"line":251,"column":2},"end":{"line":253,"column":3}}]},"41":{"type":"branch","line":252,"loc":{"start":{"line":252,"column":24},"end":{"line":252,"column":30}},"locations":[{"start":{"line":252,"column":24},"end":{"line":252,"column":30}}]},"42":{"type":"branch","line":255,"loc":{"start":{"line":255,"column":2},"end":{"line":257,"column":3}},"locations":[{"start":{"line":255,"column":2},"end":{"line":257,"column":3}}]},"43":{"type":"branch","line":259,"loc":{"start":{"line":259,"column":2},"end":{"line":261,"column":3}},"locations":[{"start":{"line":259,"column":2},"end":{"line":261,"column":3}}]},"44":{"type":"branch","line":260,"loc":{"start":{"line":260,"column":24},"end":{"line":260,"column":31}},"locations":[{"start":{"line":260,"column":24},"end":{"line":260,"column":31}}]},"45":{"type":"branch","line":263,"loc":{"start":{"line":263,"column":2},"end":{"line":265,"column":3}},"locations":[{"start":{"line":263,"column":2},"end":{"line":265,"column":3}}]},"46":{"type":"branch","line":267,"loc":{"start":{"line":267,"column":2},"end":{"line":277,"column":3}},"locations":[{"start":{"line":267,"column":2},"end":{"line":277,"column":3}}]},"47":{"type":"branch","line":271,"loc":{"start":{"line":271,"column":-1},"end":{"line":276,"column":5}},"locations":[{"start":{"line":271,"column":-1},"end":{"line":276,"column":5}}]},"48":{"type":"branch","line":279,"loc":{"start":{"line":279,"column":2},"end":{"line":290,"column":3}},"locations":[{"start":{"line":279,"column":2},"end":{"line":290,"column":3}}]},"49":{"type":"branch","line":283,"loc":{"start":{"line":283,"column":-1},"end":{"line":289,"column":5}},"locations":[{"start":{"line":283,"column":-1},"end":{"line":289,"column":5}}]},"50":{"type":"branch","line":292,"loc":{"start":{"line":292,"column":2},"end":{"line":302,"column":3}},"locations":[{"start":{"line":292,"column":2},"end":{"line":302,"column":3}}]},"51":{"type":"branch","line":296,"loc":{"start":{"line":296,"column":-1},"end":{"line":301,"column":5}},"locations":[{"start":{"line":296,"column":-1},"end":{"line":301,"column":5}}]},"52":{"type":"branch","line":304,"loc":{"start":{"line":304,"column":2},"end":{"line":306,"column":3}},"locations":[{"start":{"line":304,"column":2},"end":{"line":306,"column":3}}]},"53":{"type":"branch","line":308,"loc":{"start":{"line":308,"column":2},"end":{"line":310,"column":3}},"locations":[{"start":{"line":308,"column":2},"end":{"line":310,"column":3}}]}},"b":{"0":[5],"1":[1],"2":[4],"3":[1],"4":[3],"5":[1],"6":[17],"7":[8],"8":[2],"9":[0],"10":[0],"11":[34],"12":[35],"13":[0],"14":[46],"15":[35],"16":[0],"17":[26],"18":[20],"19":[20],"20":[50],"21":[40],"22":[3],"23":[2],"24":[1],"25":[16],"26":[20],"27":[70],"28":[102],"29":[60],"30":[166],"31":[5],"32":[15],"33":[59],"34":[0],"35":[0],"36":[21],"37":[79],"38":[7],"39":[33],"40":[53],"41":[0],"42":[40],"43":[120],"44":[0],"45":[7],"46":[7],"47":[0],"48":[7],"49":[0],"50":[7],"51":[0],"52":[35],"53":[25]},"fnMap":{"0":{"name":"fromFile","decl":{"start":{"line":89,"column":9},"end":{"line":103,"column":3}},"loc":{"start":{"line":89,"column":9},"end":{"line":103,"column":3}},"line":89},"1":{"name":"rebaseWithArgs","decl":{"start":{"line":105,"column":9},"end":{"line":108,"column":3}},"loc":{"start":{"line":105,"column":9},"end":{"line":108,"column":3}},"line":105},"2":{"name":"NodeConfig","decl":{"start":{"line":110,"column":2},"end":{"line":113,"column":3}},"loc":{"start":{"line":110,"column":2},"end":{"line":113,"column":3}},"line":110},"3":{"name":"get subquery","decl":{"start":{"line":115,"column":2},"end":{"line":118,"column":3}},"loc":{"start":{"line":115,"column":2},"end":{"line":118,"column":3}},"line":115},"4":{"name":"get subqueryName","decl":{"start":{"line":120,"column":2},"end":{"line":127,"column":3}},"loc":{"start":{"line":120,"column":2},"end":{"line":127,"column":3}},"line":120},"5":{"name":"get batchSize","decl":{"start":{"line":129,"column":2},"end":{"line":131,"column":3}},"loc":{"start":{"line":129,"column":2},"end":{"line":131,"column":3}},"line":129},"6":{"name":"get networkEndpoints","decl":{"start":{"line":133,"column":2},"end":{"line":137,"column":3}},"loc":{"start":{"line":133,"column":2},"end":{"line":137,"column":3}},"line":133},"7":{"name":"get primaryNetworkEndpoint","decl":{"start":{"line":139,"column":2},"end":{"line":141,"column":3}},"loc":{"start":{"line":139,"column":2},"end":{"line":141,"column":3}},"line":139},"8":{"name":"get networkDictionaries","decl":{"start":{"line":143,"column":2},"end":{"line":149,"column":3}},"loc":{"start":{"line":143,"column":2},"end":{"line":149,"column":3}},"line":143},"9":{"name":"get allowSchemaMigration","decl":{"start":{"line":151,"column":2},"end":{"line":153,"column":3}},"loc":{"start":{"line":151,"column":2},"end":{"line":153,"column":3}},"line":151},"10":{"name":"get storeCacheThreshold","decl":{"start":{"line":154,"column":2},"end":{"line":156,"column":3}},"loc":{"start":{"line":154,"column":2},"end":{"line":156,"column":3}},"line":154},"11":{"name":"get storeCacheUpperLimit","decl":{"start":{"line":158,"column":2},"end":{"line":160,"column":3}},"loc":{"start":{"line":158,"column":2},"end":{"line":160,"column":3}},"line":158},"12":{"name":"get storeGetCacheSize","decl":{"start":{"line":162,"column":2},"end":{"line":164,"column":3}},"loc":{"start":{"line":162,"column":2},"end":{"line":164,"column":3}},"line":162},"13":{"name":"get storeCacheAsync","decl":{"start":{"line":166,"column":2},"end":{"line":168,"column":3}},"loc":{"start":{"line":166,"column":2},"end":{"line":168,"column":3}},"line":166},"14":{"name":"get storeFlushInterval","decl":{"start":{"line":170,"column":2},"end":{"line":172,"column":3}},"loc":{"start":{"line":170,"column":2},"end":{"line":172,"column":3}},"line":170},"15":{"name":"get dictionaryRegistry","decl":{"start":{"line":174,"column":2},"end":{"line":180,"column":3}},"loc":{"start":{"line":174,"column":2},"end":{"line":180,"column":3}},"line":174},"16":{"name":"get timeout","decl":{"start":{"line":182,"column":2},"end":{"line":184,"column":3}},"loc":{"start":{"line":182,"column":2},"end":{"line":184,"column":3}},"line":182},"17":{"name":"get blockTime","decl":{"start":{"line":186,"column":2},"end":{"line":188,"column":3}},"loc":{"start":{"line":186,"column":2},"end":{"line":188,"column":3}},"line":186},"18":{"name":"get debug","decl":{"start":{"line":190,"column":2},"end":{"line":192,"column":3}},"loc":{"start":{"line":190,"column":2},"end":{"line":192,"column":3}},"line":190},"19":{"name":"get preferRange","decl":{"start":{"line":194,"column":2},"end":{"line":196,"column":3}},"loc":{"start":{"line":194,"column":2},"end":{"line":196,"column":3}},"line":194},"20":{"name":"get outputFmt","decl":{"start":{"line":198,"column":2},"end":{"line":200,"column":3}},"loc":{"start":{"line":198,"column":2},"end":{"line":200,"column":3}},"line":198},"21":{"name":"get logLevel","decl":{"start":{"line":202,"column":2},"end":{"line":204,"column":3}},"loc":{"start":{"line":202,"column":2},"end":{"line":204,"column":3}},"line":202},"22":{"name":"get queryLimit","decl":{"start":{"line":206,"column":2},"end":{"line":208,"column":3}},"loc":{"start":{"line":206,"column":2},"end":{"line":208,"column":3}},"line":206},"23":{"name":"get indexCountLimit","decl":{"start":{"line":210,"column":2},"end":{"line":212,"column":3}},"loc":{"start":{"line":210,"column":2},"end":{"line":212,"column":3}},"line":210},"24":{"name":"get proofOfIndex","decl":{"start":{"line":214,"column":2},"end":{"line":216,"column":3}},"loc":{"start":{"line":214,"column":2},"end":{"line":216,"column":3}},"line":214},"25":{"name":"get dictionaryTimeout","decl":{"start":{"line":218,"column":2},"end":{"line":220,"column":3}},"loc":{"start":{"line":218,"column":2},"end":{"line":220,"column":3}},"line":218},"26":{"name":"get dictionaryQuerySize","decl":{"start":{"line":222,"column":2},"end":{"line":224,"column":3}},"loc":{"start":{"line":222,"column":2},"end":{"line":224,"column":3}},"line":222},"27":{"name":"get ipfs","decl":{"start":{"line":226,"column":2},"end":{"line":228,"column":3}},"loc":{"start":{"line":226,"column":2},"end":{"line":228,"column":3}},"line":226},"28":{"name":"get dbSchema","decl":{"start":{"line":230,"column":2},"end":{"line":233,"column":3}},"loc":{"start":{"line":230,"column":2},"end":{"line":233,"column":3}},"line":230},"29":{"name":"get workers","decl":{"start":{"line":235,"column":2},"end":{"line":237,"column":3}},"loc":{"start":{"line":235,"column":2},"end":{"line":237,"column":3}},"line":235},"30":{"name":"get profiler","decl":{"start":{"line":239,"column":2},"end":{"line":241,"column":3}},"loc":{"start":{"line":239,"column":2},"end":{"line":241,"column":3}},"line":239},"31":{"name":"get unsafe","decl":{"start":{"line":243,"column":2},"end":{"line":245,"column":3}},"loc":{"start":{"line":243,"column":2},"end":{"line":245,"column":3}},"line":243},"32":{"name":"get subscription","decl":{"start":{"line":247,"column":2},"end":{"line":249,"column":3}},"loc":{"start":{"line":247,"column":2},"end":{"line":249,"column":3}},"line":247},"33":{"name":"get disableHistorical","decl":{"start":{"line":251,"column":2},"end":{"line":253,"column":3}},"loc":{"start":{"line":251,"column":2},"end":{"line":253,"column":3}},"line":251},"34":{"name":"get multiChain","decl":{"start":{"line":255,"column":2},"end":{"line":257,"column":3}},"loc":{"start":{"line":255,"column":2},"end":{"line":257,"column":3}},"line":255},"35":{"name":"get unfinalizedBlocks","decl":{"start":{"line":259,"column":2},"end":{"line":261,"column":3}},"loc":{"start":{"line":259,"column":2},"end":{"line":261,"column":3}},"line":259},"36":{"name":"get isPostgresSecureConnection","decl":{"start":{"line":263,"column":2},"end":{"line":265,"column":3}},"loc":{"start":{"line":263,"column":2},"end":{"line":265,"column":3}},"line":263},"37":{"name":"get postgresCACert","decl":{"start":{"line":267,"column":2},"end":{"line":277,"column":3}},"loc":{"start":{"line":267,"column":2},"end":{"line":277,"column":3}},"line":267},"38":{"name":"get postgresClientKey","decl":{"start":{"line":279,"column":2},"end":{"line":290,"column":3}},"loc":{"start":{"line":279,"column":2},"end":{"line":290,"column":3}},"line":279},"39":{"name":"get postgresClientCert","decl":{"start":{"line":292,"column":2},"end":{"line":302,"column":3}},"loc":{"start":{"line":292,"column":2},"end":{"line":302,"column":3}},"line":292},"40":{"name":"get root","decl":{"start":{"line":304,"column":2},"end":{"line":306,"column":3}},"loc":{"start":{"line":304,"column":2},"end":{"line":306,"column":3}},"line":304},"41":{"name":"get csvOutDir","decl":{"start":{"line":308,"column":2},"end":{"line":310,"column":3}},"loc":{"start":{"line":308,"column":2},"end":{"line":310,"column":3}},"line":308},"42":{"name":"merge","decl":{"start":{"line":312,"column":2},"end":{"line":315,"column":3}},"loc":{"start":{"line":312,"column":2},"end":{"line":315,"column":3}},"line":312}},"f":{"0":5,"1":1,"2":17,"3":8,"4":2,"5":34,"6":35,"7":46,"8":35,"9":26,"10":20,"11":20,"12":50,"13":0,"14":40,"15":3,"16":16,"17":20,"18":70,"19":0,"20":0,"21":0,"22":0,"23":102,"24":60,"25":166,"26":5,"27":15,"28":59,"29":21,"30":79,"31":7,"32":33,"33":53,"34":40,"35":120,"36":7,"37":7,"38":7,"39":7,"40":35,"41":25,"42":0}},"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/configure/ProjectUpgrade.service.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/configure/ProjectUpgrade.service.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":28}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":44}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":48}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":53}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":58}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":48}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":45}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":77}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":36}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":56}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":55}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":40}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":0}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":88}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":0}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":88}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":9}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":31}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":26}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":23}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":25}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":19}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":50}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":35}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":5}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":97}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":7}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":90}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":79}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":33}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":57}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":24}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":20}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":27}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":36}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":11}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":30}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":32}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":29}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":30}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":21}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":1}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":0}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":58}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":15}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":18}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":19}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":13}},"51":{"start":{"line":52,"column":0},"end":{"line":52,"column":9}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":29}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":17}},"54":{"start":{"line":55,"column":0},"end":{"line":55,"column":2}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":0}},"56":{"start":{"line":57,"column":0},"end":{"line":57,"column":61}},"57":{"start":{"line":58,"column":0},"end":{"line":58,"column":105}},"58":{"start":{"line":59,"column":0},"end":{"line":59,"column":1}},"59":{"start":{"line":60,"column":0},"end":{"line":60,"column":0}},"60":{"start":{"line":61,"column":0},"end":{"line":61,"column":56}},"61":{"start":{"line":62,"column":0},"end":{"line":62,"column":43}},"62":{"start":{"line":63,"column":0},"end":{"line":63,"column":1}},"63":{"start":{"line":64,"column":0},"end":{"line":64,"column":0}},"64":{"start":{"line":65,"column":0},"end":{"line":65,"column":50}},"65":{"start":{"line":66,"column":0},"end":{"line":66,"column":0}},"66":{"start":{"line":67,"column":0},"end":{"line":67,"column":2}},"67":{"start":{"line":68,"column":0},"end":{"line":68,"column":152}},"68":{"start":{"line":69,"column":0},"end":{"line":69,"column":2}},"69":{"start":{"line":70,"column":0},"end":{"line":70,"column":70}},"70":{"start":{"line":71,"column":0},"end":{"line":71,"column":42}},"71":{"start":{"line":72,"column":0},"end":{"line":72,"column":34}},"72":{"start":{"line":73,"column":0},"end":{"line":73,"column":74}},"73":{"start":{"line":74,"column":0},"end":{"line":74,"column":11}},"74":{"start":{"line":75,"column":0},"end":{"line":75,"column":60}},"75":{"start":{"line":76,"column":0},"end":{"line":76,"column":19}},"76":{"start":{"line":77,"column":0},"end":{"line":77,"column":6}},"77":{"start":{"line":78,"column":0},"end":{"line":78,"column":33}},"78":{"start":{"line":79,"column":0},"end":{"line":79,"column":44}},"79":{"start":{"line":80,"column":0},"end":{"line":80,"column":37}},"80":{"start":{"line":81,"column":0},"end":{"line":81,"column":47}},"81":{"start":{"line":82,"column":0},"end":{"line":82,"column":40}},"82":{"start":{"line":83,"column":0},"end":{"line":83,"column":37}},"83":{"start":{"line":84,"column":0},"end":{"line":84,"column":9}},"84":{"start":{"line":85,"column":0},"end":{"line":85,"column":0}},"85":{"start":{"line":86,"column":0},"end":{"line":86,"column":21}},"86":{"start":{"line":87,"column":0},"end":{"line":87,"column":7}},"87":{"start":{"line":88,"column":0},"end":{"line":88,"column":8}},"88":{"start":{"line":89,"column":0},"end":{"line":89,"column":82}},"89":{"start":{"line":90,"column":0},"end":{"line":90,"column":67}},"90":{"start":{"line":91,"column":0},"end":{"line":91,"column":77}},"91":{"start":{"line":92,"column":0},"end":{"line":92,"column":9}},"92":{"start":{"line":93,"column":0},"end":{"line":93,"column":86}},"93":{"start":{"line":94,"column":0},"end":{"line":94,"column":71}},"94":{"start":{"line":95,"column":0},"end":{"line":95,"column":0}},"95":{"start":{"line":96,"column":0},"end":{"line":96,"column":41}},"96":{"start":{"line":97,"column":0},"end":{"line":97,"column":37}},"97":{"start":{"line":98,"column":0},"end":{"line":98,"column":9}},"98":{"start":{"line":99,"column":0},"end":{"line":99,"column":0}},"99":{"start":{"line":100,"column":0},"end":{"line":100,"column":22}},"100":{"start":{"line":101,"column":0},"end":{"line":101,"column":7}},"101":{"start":{"line":102,"column":0},"end":{"line":102,"column":6}},"102":{"start":{"line":103,"column":0},"end":{"line":103,"column":5}},"103":{"start":{"line":104,"column":0},"end":{"line":104,"column":1}},"104":{"start":{"line":105,"column":0},"end":{"line":105,"column":0}},"105":{"start":{"line":106,"column":0},"end":{"line":106,"column":120}},"106":{"start":{"line":107,"column":0},"end":{"line":107,"column":25}},"107":{"start":{"line":108,"column":0},"end":{"line":108,"column":21}},"108":{"start":{"line":109,"column":0},"end":{"line":109,"column":0}},"109":{"start":{"line":110,"column":0},"end":{"line":110,"column":34}},"110":{"start":{"line":111,"column":0},"end":{"line":111,"column":31}},"111":{"start":{"line":112,"column":0},"end":{"line":112,"column":19}},"112":{"start":{"line":113,"column":0},"end":{"line":113,"column":23}},"113":{"start":{"line":114,"column":0},"end":{"line":114,"column":0}},"114":{"start":{"line":115,"column":0},"end":{"line":115,"column":30}},"115":{"start":{"line":116,"column":0},"end":{"line":116,"column":57}},"116":{"start":{"line":117,"column":0},"end":{"line":117,"column":52}},"117":{"start":{"line":118,"column":0},"end":{"line":118,"column":0}},"118":{"start":{"line":119,"column":0},"end":{"line":119,"column":114}},"119":{"start":{"line":120,"column":0},"end":{"line":120,"column":16}},"120":{"start":{"line":121,"column":0},"end":{"line":121,"column":34}},"121":{"start":{"line":122,"column":0},"end":{"line":122,"column":65}},"122":{"start":{"line":123,"column":0},"end":{"line":123,"column":36}},"123":{"start":{"line":124,"column":0},"end":{"line":124,"column":21}},"124":{"start":{"line":125,"column":0},"end":{"line":125,"column":41}},"125":{"start":{"line":126,"column":0},"end":{"line":126,"column":18}},"126":{"start":{"line":127,"column":0},"end":{"line":127,"column":9}},"127":{"start":{"line":128,"column":0},"end":{"line":128,"column":9}},"128":{"start":{"line":129,"column":0},"end":{"line":129,"column":6}},"129":{"start":{"line":130,"column":0},"end":{"line":130,"column":63}},"130":{"start":{"line":131,"column":0},"end":{"line":131,"column":40}},"131":{"start":{"line":132,"column":0},"end":{"line":132,"column":64}},"132":{"start":{"line":133,"column":0},"end":{"line":133,"column":3}},"133":{"start":{"line":134,"column":0},"end":{"line":134,"column":0}},"134":{"start":{"line":135,"column":0},"end":{"line":135,"column":13}},"135":{"start":{"line":136,"column":0},"end":{"line":136,"column":31}},"136":{"start":{"line":137,"column":0},"end":{"line":137,"column":26}},"137":{"start":{"line":138,"column":0},"end":{"line":138,"column":23}},"138":{"start":{"line":139,"column":0},"end":{"line":139,"column":25}},"139":{"start":{"line":140,"column":0},"end":{"line":140,"column":19}},"140":{"start":{"line":141,"column":0},"end":{"line":141,"column":50}},"141":{"start":{"line":142,"column":0},"end":{"line":142,"column":34}},"142":{"start":{"line":143,"column":0},"end":{"line":143,"column":28}},"143":{"start":{"line":144,"column":0},"end":{"line":144,"column":89}},"144":{"start":{"line":145,"column":0},"end":{"line":145,"column":13}},"145":{"start":{"line":146,"column":0},"end":{"line":146,"column":5}},"146":{"start":{"line":147,"column":0},"end":{"line":147,"column":29}},"147":{"start":{"line":148,"column":0},"end":{"line":148,"column":47}},"148":{"start":{"line":149,"column":0},"end":{"line":149,"column":38}},"149":{"start":{"line":150,"column":0},"end":{"line":150,"column":26}},"150":{"start":{"line":151,"column":0},"end":{"line":151,"column":25}},"151":{"start":{"line":152,"column":0},"end":{"line":152,"column":0}},"152":{"start":{"line":153,"column":0},"end":{"line":153,"column":55}},"153":{"start":{"line":154,"column":0},"end":{"line":154,"column":16}},"154":{"start":{"line":155,"column":0},"end":{"line":155,"column":19}},"155":{"start":{"line":156,"column":0},"end":{"line":156,"column":72}},"156":{"start":{"line":157,"column":0},"end":{"line":157,"column":13}},"157":{"start":{"line":158,"column":0},"end":{"line":158,"column":12}},"158":{"start":{"line":159,"column":0},"end":{"line":159,"column":6}},"159":{"start":{"line":160,"column":0},"end":{"line":160,"column":0}},"160":{"start":{"line":161,"column":0},"end":{"line":161,"column":67}},"161":{"start":{"line":162,"column":0},"end":{"line":162,"column":0}},"162":{"start":{"line":163,"column":0},"end":{"line":163,"column":75}},"163":{"start":{"line":164,"column":0},"end":{"line":164,"column":0}},"164":{"start":{"line":165,"column":0},"end":{"line":165,"column":61}},"165":{"start":{"line":166,"column":0},"end":{"line":166,"column":64}},"166":{"start":{"line":167,"column":0},"end":{"line":167,"column":0}},"167":{"start":{"line":168,"column":0},"end":{"line":168,"column":68}},"168":{"start":{"line":169,"column":0},"end":{"line":169,"column":45}},"169":{"start":{"line":170,"column":0},"end":{"line":170,"column":29}},"170":{"start":{"line":171,"column":0},"end":{"line":171,"column":3}},"171":{"start":{"line":172,"column":0},"end":{"line":172,"column":0}},"172":{"start":{"line":173,"column":0},"end":{"line":173,"column":91}},"173":{"start":{"line":174,"column":0},"end":{"line":174,"column":85}},"174":{"start":{"line":175,"column":0},"end":{"line":175,"column":40}},"175":{"start":{"line":176,"column":0},"end":{"line":176,"column":64}},"176":{"start":{"line":177,"column":0},"end":{"line":177,"column":45}},"177":{"start":{"line":178,"column":0},"end":{"line":178,"column":3}},"178":{"start":{"line":179,"column":0},"end":{"line":179,"column":0}},"179":{"start":{"line":180,"column":0},"end":{"line":180,"column":31}},"180":{"start":{"line":181,"column":0},"end":{"line":181,"column":30}},"181":{"start":{"line":182,"column":0},"end":{"line":182,"column":3}},"182":{"start":{"line":183,"column":0},"end":{"line":183,"column":0}},"183":{"start":{"line":184,"column":0},"end":{"line":184,"column":34}},"184":{"start":{"line":185,"column":0},"end":{"line":185,"column":35}},"185":{"start":{"line":186,"column":0},"end":{"line":186,"column":3}},"186":{"start":{"line":187,"column":0},"end":{"line":187,"column":0}},"187":{"start":{"line":188,"column":0},"end":{"line":188,"column":27}},"188":{"start":{"line":189,"column":0},"end":{"line":189,"column":32}},"189":{"start":{"line":190,"column":0},"end":{"line":190,"column":3}},"190":{"start":{"line":191,"column":0},"end":{"line":191,"column":0}},"191":{"start":{"line":192,"column":0},"end":{"line":192,"column":31}},"192":{"start":{"line":193,"column":0},"end":{"line":193,"column":31}},"193":{"start":{"line":194,"column":0},"end":{"line":194,"column":3}},"194":{"start":{"line":195,"column":0},"end":{"line":195,"column":0}},"195":{"start":{"line":196,"column":0},"end":{"line":196,"column":15}},"196":{"start":{"line":197,"column":0},"end":{"line":197,"column":30}},"197":{"start":{"line":198,"column":0},"end":{"line":198,"column":32}},"198":{"start":{"line":199,"column":0},"end":{"line":199,"column":29}},"199":{"start":{"line":200,"column":0},"end":{"line":200,"column":30}},"200":{"start":{"line":201,"column":0},"end":{"line":201,"column":20}},"201":{"start":{"line":202,"column":0},"end":{"line":202,"column":81}},"202":{"start":{"line":203,"column":0},"end":{"line":203,"column":24}},"203":{"start":{"line":204,"column":0},"end":{"line":204,"column":25}},"204":{"start":{"line":205,"column":0},"end":{"line":205,"column":6}},"205":{"start":{"line":206,"column":0},"end":{"line":206,"column":68}},"206":{"start":{"line":207,"column":0},"end":{"line":207,"column":57}},"207":{"start":{"line":208,"column":0},"end":{"line":208,"column":0}},"208":{"start":{"line":209,"column":0},"end":{"line":209,"column":36}},"209":{"start":{"line":210,"column":0},"end":{"line":210,"column":33}},"210":{"start":{"line":211,"column":0},"end":{"line":211,"column":0}},"211":{"start":{"line":212,"column":0},"end":{"line":212,"column":26}},"212":{"start":{"line":213,"column":0},"end":{"line":213,"column":70}},"213":{"start":{"line":214,"column":0},"end":{"line":214,"column":64}},"214":{"start":{"line":215,"column":0},"end":{"line":215,"column":0}},"215":{"start":{"line":216,"column":0},"end":{"line":216,"column":42}},"216":{"start":{"line":217,"column":0},"end":{"line":217,"column":36}},"217":{"start":{"line":218,"column":0},"end":{"line":218,"column":104}},"218":{"start":{"line":219,"column":0},"end":{"line":219,"column":9}},"219":{"start":{"line":220,"column":0},"end":{"line":220,"column":69}},"220":{"start":{"line":221,"column":0},"end":{"line":221,"column":7}},"221":{"start":{"line":222,"column":0},"end":{"line":222,"column":0}},"222":{"start":{"line":223,"column":0},"end":{"line":223,"column":25}},"223":{"start":{"line":224,"column":0},"end":{"line":224,"column":46}},"224":{"start":{"line":225,"column":0},"end":{"line":225,"column":31}},"225":{"start":{"line":226,"column":0},"end":{"line":226,"column":5}},"226":{"start":{"line":227,"column":0},"end":{"line":227,"column":3}},"227":{"start":{"line":228,"column":0},"end":{"line":228,"column":0}},"228":{"start":{"line":229,"column":0},"end":{"line":229,"column":24}},"229":{"start":{"line":230,"column":0},"end":{"line":230,"column":30}},"230":{"start":{"line":231,"column":0},"end":{"line":231,"column":33}},"231":{"start":{"line":232,"column":0},"end":{"line":232,"column":40}},"232":{"start":{"line":233,"column":0},"end":{"line":233,"column":20}},"233":{"start":{"line":234,"column":0},"end":{"line":234,"column":51}},"234":{"start":{"line":235,"column":0},"end":{"line":235,"column":41}},"235":{"start":{"line":236,"column":0},"end":{"line":236,"column":69}},"236":{"start":{"line":237,"column":0},"end":{"line":237,"column":45}},"237":{"start":{"line":238,"column":0},"end":{"line":238,"column":111}},"238":{"start":{"line":239,"column":0},"end":{"line":239,"column":29}},"239":{"start":{"line":240,"column":0},"end":{"line":240,"column":57}},"240":{"start":{"line":241,"column":0},"end":{"line":241,"column":54}},"241":{"start":{"line":242,"column":0},"end":{"line":242,"column":107}},"242":{"start":{"line":243,"column":0},"end":{"line":243,"column":9}},"243":{"start":{"line":244,"column":0},"end":{"line":244,"column":7}},"244":{"start":{"line":245,"column":0},"end":{"line":245,"column":5}},"245":{"start":{"line":246,"column":0},"end":{"line":246,"column":3}},"246":{"start":{"line":247,"column":0},"end":{"line":247,"column":0}},"247":{"start":{"line":248,"column":0},"end":{"line":248,"column":5}},"248":{"start":{"line":249,"column":0},"end":{"line":249,"column":57}},"249":{"start":{"line":250,"column":0},"end":{"line":250,"column":66}},"250":{"start":{"line":251,"column":0},"end":{"line":251,"column":7}},"251":{"start":{"line":252,"column":0},"end":{"line":252,"column":57}},"252":{"start":{"line":253,"column":0},"end":{"line":253,"column":33}},"253":{"start":{"line":254,"column":0},"end":{"line":254,"column":64}},"254":{"start":{"line":255,"column":0},"end":{"line":255,"column":77}},"255":{"start":{"line":256,"column":0},"end":{"line":256,"column":63}},"256":{"start":{"line":257,"column":0},"end":{"line":257,"column":0}},"257":{"start":{"line":258,"column":0},"end":{"line":258,"column":59}},"258":{"start":{"line":259,"column":0},"end":{"line":259,"column":79}},"259":{"start":{"line":260,"column":0},"end":{"line":260,"column":41}},"260":{"start":{"line":261,"column":0},"end":{"line":261,"column":38}},"261":{"start":{"line":262,"column":0},"end":{"line":262,"column":0}},"262":{"start":{"line":263,"column":0},"end":{"line":263,"column":42}},"263":{"start":{"line":264,"column":0},"end":{"line":264,"column":25}},"264":{"start":{"line":265,"column":0},"end":{"line":265,"column":13}},"265":{"start":{"line":266,"column":0},"end":{"line":266,"column":74}},"266":{"start":{"line":267,"column":0},"end":{"line":267,"column":26}},"267":{"start":{"line":268,"column":0},"end":{"line":268,"column":57}},"268":{"start":{"line":269,"column":0},"end":{"line":269,"column":18}},"269":{"start":{"line":270,"column":0},"end":{"line":270,"column":9}},"270":{"start":{"line":271,"column":0},"end":{"line":271,"column":7}},"271":{"start":{"line":272,"column":0},"end":{"line":272,"column":0}},"272":{"start":{"line":273,"column":0},"end":{"line":273,"column":11}},"273":{"start":{"line":274,"column":0},"end":{"line":274,"column":63}},"274":{"start":{"line":275,"column":0},"end":{"line":275,"column":27}},"275":{"start":{"line":276,"column":0},"end":{"line":276,"column":61}},"276":{"start":{"line":277,"column":0},"end":{"line":277,"column":9}},"277":{"start":{"line":278,"column":0},"end":{"line":278,"column":24}},"278":{"start":{"line":279,"column":0},"end":{"line":279,"column":64}},"279":{"start":{"line":280,"column":0},"end":{"line":280,"column":24}},"280":{"start":{"line":281,"column":0},"end":{"line":281,"column":7}},"281":{"start":{"line":282,"column":0},"end":{"line":282,"column":0}},"282":{"start":{"line":283,"column":0},"end":{"line":283,"column":78}},"283":{"start":{"line":284,"column":0},"end":{"line":284,"column":5}},"284":{"start":{"line":285,"column":0},"end":{"line":285,"column":3}},"285":{"start":{"line":286,"column":0},"end":{"line":286,"column":0}},"286":{"start":{"line":287,"column":0},"end":{"line":287,"column":50}},"287":{"start":{"line":288,"column":0},"end":{"line":288,"column":67}},"288":{"start":{"line":289,"column":0},"end":{"line":289,"column":49}},"289":{"start":{"line":290,"column":0},"end":{"line":290,"column":72}},"290":{"start":{"line":291,"column":0},"end":{"line":291,"column":40}},"291":{"start":{"line":292,"column":0},"end":{"line":292,"column":47}},"292":{"start":{"line":293,"column":0},"end":{"line":293,"column":0}},"293":{"start":{"line":294,"column":0},"end":{"line":294,"column":38}},"294":{"start":{"line":295,"column":0},"end":{"line":295,"column":42}},"295":{"start":{"line":296,"column":0},"end":{"line":296,"column":0}},"296":{"start":{"line":297,"column":0},"end":{"line":297,"column":35}},"297":{"start":{"line":298,"column":0},"end":{"line":298,"column":0}},"298":{"start":{"line":299,"column":0},"end":{"line":299,"column":56}},"299":{"start":{"line":300,"column":0},"end":{"line":300,"column":33}},"300":{"start":{"line":301,"column":0},"end":{"line":301,"column":70}},"301":{"start":{"line":302,"column":0},"end":{"line":302,"column":7}},"302":{"start":{"line":303,"column":0},"end":{"line":303,"column":50}},"303":{"start":{"line":304,"column":0},"end":{"line":304,"column":36}},"304":{"start":{"line":305,"column":0},"end":{"line":305,"column":6}},"305":{"start":{"line":306,"column":0},"end":{"line":306,"column":0}},"306":{"start":{"line":307,"column":0},"end":{"line":307,"column":53}},"307":{"start":{"line":308,"column":0},"end":{"line":308,"column":18}},"308":{"start":{"line":309,"column":0},"end":{"line":309,"column":76}},"309":{"start":{"line":310,"column":0},"end":{"line":310,"column":0}},"310":{"start":{"line":311,"column":0},"end":{"line":311,"column":80}},"311":{"start":{"line":312,"column":0},"end":{"line":312,"column":40}},"312":{"start":{"line":313,"column":0},"end":{"line":313,"column":107}},"313":{"start":{"line":314,"column":0},"end":{"line":314,"column":7}},"314":{"start":{"line":315,"column":0},"end":{"line":315,"column":0}},"315":{"start":{"line":316,"column":0},"end":{"line":316,"column":32}},"316":{"start":{"line":317,"column":0},"end":{"line":317,"column":35}},"317":{"start":{"line":318,"column":0},"end":{"line":318,"column":50}},"318":{"start":{"line":319,"column":0},"end":{"line":319,"column":76}},"319":{"start":{"line":320,"column":0},"end":{"line":320,"column":16}},"320":{"start":{"line":321,"column":0},"end":{"line":321,"column":9}},"321":{"start":{"line":322,"column":0},"end":{"line":322,"column":55}},"322":{"start":{"line":323,"column":0},"end":{"line":323,"column":14}},"323":{"start":{"line":324,"column":0},"end":{"line":324,"column":7}},"324":{"start":{"line":325,"column":0},"end":{"line":325,"column":75}},"325":{"start":{"line":326,"column":0},"end":{"line":326,"column":74}},"326":{"start":{"line":327,"column":0},"end":{"line":327,"column":7}},"327":{"start":{"line":328,"column":0},"end":{"line":328,"column":52}},"328":{"start":{"line":329,"column":0},"end":{"line":329,"column":94}},"329":{"start":{"line":330,"column":0},"end":{"line":330,"column":14}},"330":{"start":{"line":331,"column":0},"end":{"line":331,"column":7}},"331":{"start":{"line":332,"column":0},"end":{"line":332,"column":0}},"332":{"start":{"line":333,"column":0},"end":{"line":333,"column":41}},"333":{"start":{"line":334,"column":0},"end":{"line":334,"column":85}},"334":{"start":{"line":335,"column":0},"end":{"line":335,"column":109}},"335":{"start":{"line":336,"column":0},"end":{"line":336,"column":9}},"336":{"start":{"line":337,"column":0},"end":{"line":337,"column":109}},"337":{"start":{"line":338,"column":0},"end":{"line":338,"column":24}},"338":{"start":{"line":339,"column":0},"end":{"line":339,"column":121}},"339":{"start":{"line":340,"column":0},"end":{"line":340,"column":10}},"340":{"start":{"line":341,"column":0},"end":{"line":341,"column":7}},"341":{"start":{"line":342,"column":0},"end":{"line":342,"column":35}},"342":{"start":{"line":343,"column":0},"end":{"line":343,"column":5}},"343":{"start":{"line":344,"column":0},"end":{"line":344,"column":0}},"344":{"start":{"line":345,"column":0},"end":{"line":345,"column":25}},"345":{"start":{"line":346,"column":0},"end":{"line":346,"column":88}},"346":{"start":{"line":347,"column":0},"end":{"line":347,"column":5}},"347":{"start":{"line":348,"column":0},"end":{"line":348,"column":0}},"348":{"start":{"line":349,"column":0},"end":{"line":349,"column":56}},"349":{"start":{"line":350,"column":0},"end":{"line":350,"column":0}},"350":{"start":{"line":351,"column":0},"end":{"line":351,"column":60}},"351":{"start":{"line":352,"column":0},"end":{"line":352,"column":101}},"352":{"start":{"line":353,"column":0},"end":{"line":353,"column":3}},"353":{"start":{"line":354,"column":0},"end":{"line":354,"column":0}},"354":{"start":{"line":355,"column":0},"end":{"line":355,"column":33}},"355":{"start":{"line":356,"column":0},"end":{"line":356,"column":38}},"356":{"start":{"line":357,"column":0},"end":{"line":357,"column":3}},"357":{"start":{"line":358,"column":0},"end":{"line":358,"column":0}},"358":{"start":{"line":359,"column":0},"end":{"line":359,"column":97}},"359":{"start":{"line":360,"column":0},"end":{"line":360,"column":88}},"360":{"start":{"line":361,"column":0},"end":{"line":361,"column":52}},"361":{"start":{"line":362,"column":0},"end":{"line":362,"column":55}},"362":{"start":{"line":363,"column":0},"end":{"line":363,"column":44}},"363":{"start":{"line":364,"column":0},"end":{"line":364,"column":98}},"364":{"start":{"line":365,"column":0},"end":{"line":365,"column":21}},"365":{"start":{"line":366,"column":0},"end":{"line":366,"column":7}},"366":{"start":{"line":367,"column":0},"end":{"line":367,"column":32}},"367":{"start":{"line":368,"column":0},"end":{"line":368,"column":5}},"368":{"start":{"line":369,"column":0},"end":{"line":369,"column":16}},"369":{"start":{"line":370,"column":0},"end":{"line":370,"column":3}},"370":{"start":{"line":371,"column":0},"end":{"line":371,"column":0}},"371":{"start":{"line":372,"column":0},"end":{"line":372,"column":103}},"372":{"start":{"line":373,"column":0},"end":{"line":373,"column":88}},"373":{"start":{"line":374,"column":0},"end":{"line":374,"column":98}},"374":{"start":{"line":375,"column":0},"end":{"line":375,"column":0}},"375":{"start":{"line":376,"column":0},"end":{"line":376,"column":27}},"376":{"start":{"line":377,"column":0},"end":{"line":377,"column":3}},"377":{"start":{"line":378,"column":0},"end":{"line":378,"column":0}},"378":{"start":{"line":379,"column":0},"end":{"line":379,"column":81}},"379":{"start":{"line":380,"column":0},"end":{"line":380,"column":88}},"380":{"start":{"line":381,"column":0},"end":{"line":381,"column":37}},"381":{"start":{"line":382,"column":0},"end":{"line":382,"column":33}},"382":{"start":{"line":383,"column":0},"end":{"line":383,"column":65}},"383":{"start":{"line":384,"column":0},"end":{"line":384,"column":106}},"384":{"start":{"line":385,"column":0},"end":{"line":385,"column":15}},"385":{"start":{"line":386,"column":0},"end":{"line":386,"column":19}},"386":{"start":{"line":387,"column":0},"end":{"line":387,"column":9}},"387":{"start":{"line":388,"column":0},"end":{"line":388,"column":0}},"388":{"start":{"line":389,"column":0},"end":{"line":389,"column":33}},"389":{"start":{"line":390,"column":0},"end":{"line":390,"column":35}},"390":{"start":{"line":391,"column":0},"end":{"line":391,"column":25}},"391":{"start":{"line":392,"column":0},"end":{"line":392,"column":7}},"392":{"start":{"line":393,"column":0},"end":{"line":393,"column":0}},"393":{"start":{"line":394,"column":0},"end":{"line":394,"column":44}},"394":{"start":{"line":395,"column":0},"end":{"line":395,"column":41}},"395":{"start":{"line":396,"column":0},"end":{"line":396,"column":23}},"396":{"start":{"line":397,"column":0},"end":{"line":397,"column":92}},"397":{"start":{"line":398,"column":0},"end":{"line":398,"column":8}},"398":{"start":{"line":399,"column":0},"end":{"line":399,"column":0}},"399":{"start":{"line":400,"column":0},"end":{"line":400,"column":31}},"400":{"start":{"line":401,"column":0},"end":{"line":401,"column":105}},"401":{"start":{"line":402,"column":0},"end":{"line":402,"column":7}},"402":{"start":{"line":403,"column":0},"end":{"line":403,"column":0}},"403":{"start":{"line":404,"column":0},"end":{"line":404,"column":72}},"404":{"start":{"line":405,"column":0},"end":{"line":405,"column":5}},"405":{"start":{"line":406,"column":0},"end":{"line":406,"column":0}},"406":{"start":{"line":407,"column":0},"end":{"line":407,"column":21}},"407":{"start":{"line":408,"column":0},"end":{"line":408,"column":3}},"408":{"start":{"line":409,"column":0},"end":{"line":409,"column":0}},"409":{"start":{"line":410,"column":0},"end":{"line":410,"column":75}},"410":{"start":{"line":411,"column":0},"end":{"line":411,"column":119}},"411":{"start":{"line":412,"column":0},"end":{"line":412,"column":80}},"412":{"start":{"line":413,"column":0},"end":{"line":413,"column":0}},"413":{"start":{"line":414,"column":0},"end":{"line":414,"column":35}},"414":{"start":{"line":415,"column":0},"end":{"line":415,"column":0}},"415":{"start":{"line":416,"column":0},"end":{"line":416,"column":38}},"416":{"start":{"line":417,"column":0},"end":{"line":417,"column":3}},"417":{"start":{"line":418,"column":0},"end":{"line":418,"column":0}},"418":{"start":{"line":419,"column":0},"end":{"line":419,"column":19}},"419":{"start":{"line":420,"column":0},"end":{"line":420,"column":82}},"420":{"start":{"line":421,"column":0},"end":{"line":421,"column":119}},"421":{"start":{"line":422,"column":0},"end":{"line":422,"column":60}},"422":{"start":{"line":423,"column":0},"end":{"line":423,"column":0}},"423":{"start":{"line":424,"column":0},"end":{"line":424,"column":100}},"424":{"start":{"line":425,"column":0},"end":{"line":425,"column":50}},"425":{"start":{"line":426,"column":0},"end":{"line":426,"column":13}},"426":{"start":{"line":427,"column":0},"end":{"line":427,"column":5}},"427":{"start":{"line":428,"column":0},"end":{"line":428,"column":0}},"428":{"start":{"line":429,"column":0},"end":{"line":429,"column":62}},"429":{"start":{"line":430,"column":0},"end":{"line":430,"column":47}},"430":{"start":{"line":431,"column":0},"end":{"line":431,"column":39}},"431":{"start":{"line":432,"column":0},"end":{"line":432,"column":34}},"432":{"start":{"line":433,"column":0},"end":{"line":433,"column":35}},"433":{"start":{"line":434,"column":0},"end":{"line":434,"column":7}},"434":{"start":{"line":435,"column":0},"end":{"line":435,"column":7}},"435":{"start":{"line":436,"column":0},"end":{"line":436,"column":0}},"436":{"start":{"line":437,"column":0},"end":{"line":437,"column":34}},"437":{"start":{"line":438,"column":0},"end":{"line":438,"column":0}},"438":{"start":{"line":439,"column":0},"end":{"line":439,"column":79}},"439":{"start":{"line":440,"column":0},"end":{"line":440,"column":3}},"440":{"start":{"line":441,"column":0},"end":{"line":441,"column":1}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"38":1,"39":1,"40":1,"41":1,"42":1,"43":1,"44":1,"45":1,"46":1,"47":1,"48":1,"49":1,"50":1,"51":1,"52":1,"53":1,"54":1,"55":1,"56":217,"57":217,"58":217,"59":1,"60":406,"61":406,"62":406,"63":1,"64":1,"65":1,"66":1,"67":1,"68":1,"69":10,"70":10,"71":10,"72":10,"73":10,"74":1,"75":1,"76":10,"77":10,"78":505,"79":505,"80":86,"81":86,"82":0,"83":0,"84":86,"85":86,"86":86,"87":419,"88":419,"89":419,"90":419,"91":419,"92":504,"93":284,"94":284,"95":284,"96":192,"97":192,"98":92,"99":92,"100":92,"101":10,"102":10,"103":10,"104":1,"105":1,"106":1,"107":1,"108":1,"109":1,"110":1,"111":1,"112":1,"113":1,"114":1,"115":1,"116":1,"117":1,"118":1,"119":24,"120":24,"121":24,"122":101,"123":101,"124":24,"125":24,"126":24,"127":24,"128":24,"129":24,"130":24,"131":24,"132":24,"133":1,"134":1,"135":10,"136":10,"137":10,"138":10,"139":10,"140":10,"141":10,"142":10,"143":0,"144":0,"145":0,"146":10,"147":10,"148":10,"149":10,"150":10,"151":10,"152":10,"153":10,"154":10,"155":10,"156":10,"157":10,"158":10,"159":10,"160":10,"161":10,"162":10,"163":10,"164":10,"165":10,"166":10,"167":10,"168":10,"169":10,"170":10,"171":1,"172":1,"173":0,"174":0,"175":0,"176":0,"177":0,"178":1,"179":1,"180":1,"181":1,"182":1,"183":1,"184":38,"185":38,"186":1,"187":1,"188":505,"189":505,"190":1,"191":1,"192":9,"193":9,"194":1,"195":1,"196":0,"197":0,"198":0,"199":0,"200":0,"201":0,"202":0,"203":0,"204":0,"205":0,"206":0,"207":0,"208":0,"209":0,"210":0,"211":0,"212":0,"213":0,"214":0,"215":0,"216":0,"217":0,"218":0,"219":0,"220":0,"221":0,"222":0,"223":0,"224":0,"225":0,"226":0,"227":1,"228":1,"229":3,"230":3,"231":3,"232":3,"233":3,"234":3,"235":3,"236":3,"237":0,"238":0,"239":0,"240":0,"241":0,"242":0,"243":0,"244":3,"245":3,"246":1,"247":1,"248":1,"249":1,"250":1,"251":1,"252":3,"253":3,"254":3,"255":3,"256":3,"257":3,"258":3,"259":3,"260":3,"261":3,"262":3,"263":3,"264":3,"265":3,"266":3,"267":0,"268":0,"269":0,"270":3,"271":3,"272":3,"273":3,"274":3,"275":3,"276":3,"277":3,"278":0,"279":0,"280":0,"281":3,"282":3,"283":3,"284":3,"285":1,"286":1,"287":30,"288":30,"289":30,"290":30,"291":30,"292":30,"293":30,"294":30,"295":30,"296":30,"297":30,"298":30,"299":110,"300":1,"301":1,"302":109,"303":109,"304":30,"305":30,"306":30,"307":30,"308":111,"309":111,"310":111,"311":111,"312":30,"313":30,"314":111,"315":111,"316":111,"317":26,"318":26,"319":1,"320":1,"321":25,"322":25,"323":25,"324":111,"325":85,"326":85,"327":85,"328":111,"329":2,"330":2,"331":83,"332":83,"333":83,"334":0,"335":83,"336":111,"337":2,"338":2,"339":2,"340":2,"341":81,"342":81,"343":25,"344":30,"345":1,"346":1,"347":24,"348":24,"349":24,"350":24,"351":24,"352":24,"353":1,"354":1,"355":37,"356":37,"357":1,"358":1,"359":6,"360":6,"361":6,"362":6,"363":1,"364":1,"365":1,"366":0,"367":0,"368":5,"369":5,"370":1,"371":1,"372":109,"373":109,"374":109,"375":109,"376":109,"377":1,"378":1,"379":1,"380":17,"381":17,"382":11,"383":11,"384":66,"385":66,"386":11,"387":11,"388":11,"389":11,"390":6,"391":6,"392":5,"393":5,"394":5,"395":5,"396":5,"397":5,"398":5,"399":11,"400":1,"401":1,"402":4,"403":11,"404":11,"405":6,"406":6,"407":6,"408":1,"409":1,"410":26,"411":26,"412":26,"413":26,"414":16,"415":16,"416":16,"417":1,"418":1,"419":1,"420":13,"421":13,"422":13,"423":13,"424":13,"425":4,"426":4,"427":9,"428":9,"429":9,"430":6,"431":6,"432":1,"433":1,"434":9,"435":9,"436":9,"437":9,"438":13,"439":13,"440":1},"branchMap":{"0":{"type":"branch","line":57,"loc":{"start":{"line":57,"column":0},"end":{"line":59,"column":1}},"locations":[{"start":{"line":57,"column":0},"end":{"line":59,"column":1}}]},"1":{"type":"branch","line":61,"loc":{"start":{"line":61,"column":0},"end":{"line":63,"column":1}},"locations":[{"start":{"line":61,"column":0},"end":{"line":63,"column":1}}]},"2":{"type":"branch","line":62,"loc":{"start":{"line":62,"column":26},"end":{"line":62,"column":42}},"locations":[{"start":{"line":62,"column":26},"end":{"line":62,"column":42}}]},"3":{"type":"branch","line":70,"loc":{"start":{"line":70,"column":0},"end":{"line":104,"column":1}},"locations":[{"start":{"line":70,"column":0},"end":{"line":104,"column":1}}]},"4":{"type":"branch","line":74,"loc":{"start":{"line":74,"column":4},"end":{"line":77,"column":5}},"locations":[{"start":{"line":74,"column":4},"end":{"line":77,"column":5}}]},"5":{"type":"branch","line":78,"loc":{"start":{"line":78,"column":4},"end":{"line":102,"column":5}},"locations":[{"start":{"line":78,"column":4},"end":{"line":102,"column":5}}]},"6":{"type":"branch","line":80,"loc":{"start":{"line":80,"column":36},"end":{"line":87,"column":7}},"locations":[{"start":{"line":80,"column":36},"end":{"line":87,"column":7}}]},"7":{"type":"branch","line":82,"loc":{"start":{"line":82,"column":39},"end":{"line":84,"column":9}},"locations":[{"start":{"line":82,"column":39},"end":{"line":84,"column":9}}]},"8":{"type":"branch","line":88,"loc":{"start":{"line":88,"column":-1},"end":{"line":101,"column":7}},"locations":[{"start":{"line":88,"column":-1},"end":{"line":101,"column":7}}]},"9":{"type":"branch","line":88,"loc":{"start":{"line":88,"column":-1},"end":{"line":93,"column":85}},"locations":[{"start":{"line":88,"column":-1},"end":{"line":93,"column":85}}]},"10":{"type":"branch","line":93,"loc":{"start":{"line":93,"column":85},"end":{"line":101,"column":7}},"locations":[{"start":{"line":93,"column":85},"end":{"line":101,"column":7}}]},"11":{"type":"branch","line":96,"loc":{"start":{"line":96,"column":40},"end":{"line":101,"column":7}},"locations":[{"start":{"line":96,"column":40},"end":{"line":101,"column":7}}]},"12":{"type":"branch","line":96,"loc":{"start":{"line":96,"column":40},"end":{"line":98,"column":9}},"locations":[{"start":{"line":96,"column":40},"end":{"line":98,"column":9}}]},"13":{"type":"branch","line":99,"loc":{"start":{"line":99,"column":-1},"end":{"line":101,"column":7}},"locations":[{"start":{"line":99,"column":-1},"end":{"line":101,"column":7}}]},"14":{"type":"branch","line":119,"loc":{"start":{"line":119,"column":2},"end":{"line":133,"column":3}},"locations":[{"start":{"line":119,"column":2},"end":{"line":133,"column":3}}]},"15":{"type":"branch","line":122,"loc":{"start":{"line":122,"column":49},"end":{"line":125,"column":9}},"locations":[{"start":{"line":122,"column":49},"end":{"line":125,"column":9}}]},"16":{"type":"branch","line":135,"loc":{"start":{"line":135,"column":2},"end":{"line":171,"column":3}},"locations":[{"start":{"line":135,"column":2},"end":{"line":171,"column":3}}]},"17":{"type":"branch","line":143,"loc":{"start":{"line":143,"column":27},"end":{"line":146,"column":5}},"locations":[{"start":{"line":143,"column":27},"end":{"line":146,"column":5}}]},"18":{"type":"branch","line":180,"loc":{"start":{"line":180,"column":2},"end":{"line":182,"column":3}},"locations":[{"start":{"line":180,"column":2},"end":{"line":182,"column":3}}]},"19":{"type":"branch","line":184,"loc":{"start":{"line":184,"column":2},"end":{"line":186,"column":3}},"locations":[{"start":{"line":184,"column":2},"end":{"line":186,"column":3}}]},"20":{"type":"branch","line":188,"loc":{"start":{"line":188,"column":2},"end":{"line":190,"column":3}},"locations":[{"start":{"line":188,"column":2},"end":{"line":190,"column":3}}]},"21":{"type":"branch","line":192,"loc":{"start":{"line":192,"column":2},"end":{"line":194,"column":3}},"locations":[{"start":{"line":192,"column":2},"end":{"line":194,"column":3}}]},"22":{"type":"branch","line":229,"loc":{"start":{"line":229,"column":10},"end":{"line":246,"column":3}},"locations":[{"start":{"line":229,"column":10},"end":{"line":246,"column":3}}]},"23":{"type":"branch","line":237,"loc":{"start":{"line":237,"column":44},"end":{"line":244,"column":7}},"locations":[{"start":{"line":237,"column":44},"end":{"line":244,"column":7}}]},"24":{"type":"branch","line":252,"loc":{"start":{"line":252,"column":2},"end":{"line":285,"column":3}},"locations":[{"start":{"line":252,"column":2},"end":{"line":285,"column":3}}]},"25":{"type":"branch","line":267,"loc":{"start":{"line":267,"column":10},"end":{"line":270,"column":9}},"locations":[{"start":{"line":267,"column":10},"end":{"line":270,"column":9}}]},"26":{"type":"branch","line":274,"loc":{"start":{"line":274,"column":35},"end":{"line":274,"column":62}},"locations":[{"start":{"line":274,"column":35},"end":{"line":274,"column":62}}]},"27":{"type":"branch","line":278,"loc":{"start":{"line":278,"column":8},"end":{"line":281,"column":7}},"locations":[{"start":{"line":278,"column":8},"end":{"line":281,"column":7}}]},"28":{"type":"branch","line":287,"loc":{"start":{"line":287,"column":9},"end":{"line":353,"column":3}},"locations":[{"start":{"line":287,"column":9},"end":{"line":353,"column":3}}]},"29":{"type":"branch","line":308,"loc":{"start":{"line":308,"column":17},"end":{"line":343,"column":5}},"locations":[{"start":{"line":308,"column":17},"end":{"line":343,"column":5}}]},"30":{"type":"branch","line":312,"loc":{"start":{"line":312,"column":39},"end":{"line":314,"column":7}},"locations":[{"start":{"line":312,"column":39},"end":{"line":314,"column":7}}]},"31":{"type":"branch","line":313,"loc":{"start":{"line":313,"column":44},"end":{"line":313,"column":83}},"locations":[{"start":{"line":313,"column":44},"end":{"line":313,"column":83}}]},"32":{"type":"branch","line":313,"loc":{"start":{"line":313,"column":84},"end":{"line":313,"column":106}},"locations":[{"start":{"line":313,"column":84},"end":{"line":313,"column":106}}]},"33":{"type":"branch","line":317,"loc":{"start":{"line":317,"column":34},"end":{"line":324,"column":7}},"locations":[{"start":{"line":317,"column":34},"end":{"line":324,"column":7}}]},"34":{"type":"branch","line":319,"loc":{"start":{"line":319,"column":37},"end":{"line":319,"column":73}},"locations":[{"start":{"line":319,"column":37},"end":{"line":319,"column":73}}]},"35":{"type":"branch","line":319,"loc":{"start":{"line":319,"column":75},"end":{"line":321,"column":9}},"locations":[{"start":{"line":319,"column":75},"end":{"line":321,"column":9}}]},"36":{"type":"branch","line":322,"loc":{"start":{"line":322,"column":-1},"end":{"line":324,"column":7}},"locations":[{"start":{"line":322,"column":-1},"end":{"line":324,"column":7}}]},"37":{"type":"branch","line":325,"loc":{"start":{"line":325,"column":-1},"end":{"line":325,"column":72}},"locations":[{"start":{"line":325,"column":-1},"end":{"line":325,"column":72}}]},"38":{"type":"branch","line":325,"loc":{"start":{"line":325,"column":74},"end":{"line":329,"column":91}},"locations":[{"start":{"line":325,"column":74},"end":{"line":329,"column":91}}]},"39":{"type":"branch","line":325,"loc":{"start":{"line":325,"column":74},"end":{"line":329,"column":39}},"locations":[{"start":{"line":325,"column":74},"end":{"line":329,"column":39}}]},"40":{"type":"branch","line":329,"loc":{"start":{"line":329,"column":35},"end":{"line":329,"column":91}},"locations":[{"start":{"line":329,"column":35},"end":{"line":329,"column":91}}]},"41":{"type":"branch","line":329,"loc":{"start":{"line":329,"column":93},"end":{"line":337,"column":106}},"locations":[{"start":{"line":329,"column":93},"end":{"line":337,"column":106}}]},"42":{"type":"branch","line":329,"loc":{"start":{"line":329,"column":93},"end":{"line":331,"column":7}},"locations":[{"start":{"line":329,"column":93},"end":{"line":331,"column":7}}]},"43":{"type":"branch","line":332,"loc":{"start":{"line":332,"column":-1},"end":{"line":337,"column":32}},"locations":[{"start":{"line":332,"column":-1},"end":{"line":337,"column":32}}]},"44":{"type":"branch","line":337,"loc":{"start":{"line":337,"column":28},"end":{"line":337,"column":106}},"locations":[{"start":{"line":337,"column":28},"end":{"line":337,"column":106}}]},"45":{"type":"branch","line":337,"loc":{"start":{"line":337,"column":108},"end":{"line":343,"column":5}},"locations":[{"start":{"line":337,"column":108},"end":{"line":343,"column":5}}]},"46":{"type":"branch","line":337,"loc":{"start":{"line":337,"column":108},"end":{"line":341,"column":7}},"locations":[{"start":{"line":337,"column":108},"end":{"line":341,"column":7}}]},"47":{"type":"branch","line":342,"loc":{"start":{"line":342,"column":-1},"end":{"line":343,"column":5}},"locations":[{"start":{"line":342,"column":-1},"end":{"line":343,"column":5}}]},"48":{"type":"branch","line":344,"loc":{"start":{"line":344,"column":-1},"end":{"line":345,"column":24}},"locations":[{"start":{"line":344,"column":-1},"end":{"line":345,"column":24}}]},"49":{"type":"branch","line":345,"loc":{"start":{"line":345,"column":24},"end":{"line":347,"column":5}},"locations":[{"start":{"line":345,"column":24},"end":{"line":347,"column":5}}]},"50":{"type":"branch","line":348,"loc":{"start":{"line":348,"column":-1},"end":{"line":353,"column":3}},"locations":[{"start":{"line":348,"column":-1},"end":{"line":353,"column":3}}]},"51":{"type":"branch","line":299,"loc":{"start":{"line":299,"column":23},"end":{"line":305,"column":5}},"locations":[{"start":{"line":299,"column":23},"end":{"line":305,"column":5}}]},"52":{"type":"branch","line":300,"loc":{"start":{"line":300,"column":32},"end":{"line":302,"column":7}},"locations":[{"start":{"line":300,"column":32},"end":{"line":302,"column":7}}]},"53":{"type":"branch","line":303,"loc":{"start":{"line":303,"column":-1},"end":{"line":305,"column":5}},"locations":[{"start":{"line":303,"column":-1},"end":{"line":305,"column":5}}]},"54":{"type":"branch","line":355,"loc":{"start":{"line":355,"column":2},"end":{"line":357,"column":3}},"locations":[{"start":{"line":355,"column":2},"end":{"line":357,"column":3}}]},"55":{"type":"branch","line":359,"loc":{"start":{"line":359,"column":17},"end":{"line":370,"column":3}},"locations":[{"start":{"line":359,"column":17},"end":{"line":370,"column":3}}]},"56":{"type":"branch","line":363,"loc":{"start":{"line":363,"column":43},"end":{"line":368,"column":5}},"locations":[{"start":{"line":363,"column":43},"end":{"line":368,"column":5}}]},"57":{"type":"branch","line":367,"loc":{"start":{"line":367,"column":-1},"end":{"line":368,"column":5}},"locations":[{"start":{"line":367,"column":-1},"end":{"line":368,"column":5}}]},"58":{"type":"branch","line":369,"loc":{"start":{"line":369,"column":-1},"end":{"line":370,"column":3}},"locations":[{"start":{"line":369,"column":-1},"end":{"line":370,"column":3}}]},"59":{"type":"branch","line":360,"loc":{"start":{"line":360,"column":64},"end":{"line":360,"column":85}},"locations":[{"start":{"line":360,"column":64},"end":{"line":360,"column":85}}]},"60":{"type":"branch","line":372,"loc":{"start":{"line":372,"column":17},"end":{"line":377,"column":3}},"locations":[{"start":{"line":372,"column":17},"end":{"line":377,"column":3}}]},"61":{"type":"branch","line":374,"loc":{"start":{"line":374,"column":35},"end":{"line":374,"column":41}},"locations":[{"start":{"line":374,"column":35},"end":{"line":374,"column":41}}]},"62":{"type":"branch","line":374,"loc":{"start":{"line":374,"column":68},"end":{"line":374,"column":74}},"locations":[{"start":{"line":374,"column":68},"end":{"line":374,"column":74}}]},"63":{"type":"branch","line":380,"loc":{"start":{"line":380,"column":2},"end":{"line":408,"column":3}},"locations":[{"start":{"line":380,"column":2},"end":{"line":408,"column":3}}]},"64":{"type":"branch","line":382,"loc":{"start":{"line":382,"column":32},"end":{"line":405,"column":5}},"locations":[{"start":{"line":382,"column":32},"end":{"line":405,"column":5}}]},"65":{"type":"branch","line":390,"loc":{"start":{"line":390,"column":34},"end":{"line":392,"column":7}},"locations":[{"start":{"line":390,"column":34},"end":{"line":392,"column":7}}]},"66":{"type":"branch","line":393,"loc":{"start":{"line":393,"column":-1},"end":{"line":400,"column":30}},"locations":[{"start":{"line":393,"column":-1},"end":{"line":400,"column":30}}]},"67":{"type":"branch","line":400,"loc":{"start":{"line":400,"column":30},"end":{"line":402,"column":7}},"locations":[{"start":{"line":400,"column":30},"end":{"line":402,"column":7}}]},"68":{"type":"branch","line":403,"loc":{"start":{"line":403,"column":-1},"end":{"line":404,"column":71}},"locations":[{"start":{"line":403,"column":-1},"end":{"line":404,"column":71}}]},"69":{"type":"branch","line":406,"loc":{"start":{"line":406,"column":-1},"end":{"line":408,"column":3}},"locations":[{"start":{"line":406,"column":-1},"end":{"line":408,"column":3}}]},"70":{"type":"branch","line":384,"loc":{"start":{"line":384,"column":82},"end":{"line":387,"column":8}},"locations":[{"start":{"line":384,"column":82},"end":{"line":387,"column":8}}]},"71":{"type":"branch","line":397,"loc":{"start":{"line":397,"column":8},"end":{"line":397,"column":92}},"locations":[{"start":{"line":397,"column":8},"end":{"line":397,"column":92}}]},"72":{"type":"branch","line":397,"loc":{"start":{"line":397,"column":49},"end":{"line":397,"column":91}},"locations":[{"start":{"line":397,"column":49},"end":{"line":397,"column":91}}]},"73":{"type":"branch","line":410,"loc":{"start":{"line":410,"column":10},"end":{"line":417,"column":3}},"locations":[{"start":{"line":410,"column":10},"end":{"line":417,"column":3}}]},"74":{"type":"branch","line":414,"loc":{"start":{"line":414,"column":25},"end":{"line":414,"column":35}},"locations":[{"start":{"line":414,"column":25},"end":{"line":414,"column":35}}]},"75":{"type":"branch","line":415,"loc":{"start":{"line":415,"column":-1},"end":{"line":417,"column":3}},"locations":[{"start":{"line":415,"column":-1},"end":{"line":417,"column":3}}]},"76":{"type":"branch","line":420,"loc":{"start":{"line":420,"column":8},"end":{"line":440,"column":3}},"locations":[{"start":{"line":420,"column":8},"end":{"line":440,"column":3}}]},"77":{"type":"branch","line":425,"loc":{"start":{"line":425,"column":49},"end":{"line":439,"column":30}},"locations":[{"start":{"line":425,"column":49},"end":{"line":439,"column":30}}]},"78":{"type":"branch","line":425,"loc":{"start":{"line":425,"column":49},"end":{"line":427,"column":5}},"locations":[{"start":{"line":425,"column":49},"end":{"line":427,"column":5}}]},"79":{"type":"branch","line":430,"loc":{"start":{"line":430,"column":37},"end":{"line":435,"column":5}},"locations":[{"start":{"line":430,"column":37},"end":{"line":435,"column":5}}]},"80":{"type":"branch","line":432,"loc":{"start":{"line":432,"column":33},"end":{"line":434,"column":7}},"locations":[{"start":{"line":432,"column":33},"end":{"line":434,"column":7}}]}},"b":{"0":[217],"1":[406],"2":[402],"3":[10],"4":[1],"5":[505],"6":[86],"7":[0],"8":[504],"9":[419],"10":[284],"11":[282],"12":[192],"13":[92],"14":[24],"15":[101],"16":[10],"17":[0],"18":[1],"19":[38],"20":[505],"21":[9],"22":[3],"23":[0],"24":[3],"25":[0],"26":[0],"27":[0],"28":[30],"29":[111],"30":[30],"31":[22],"32":[8],"33":[26],"34":[20],"35":[1],"36":[25],"37":[85],"38":[106],"39":[85],"40":[84],"41":[106],"42":[2],"43":[83],"44":[65],"45":[106],"46":[2],"47":[81],"48":[25],"49":[1],"50":[24],"51":[110],"52":[1],"53":[109],"54":[37],"55":[6],"56":[1],"57":[0],"58":[5],"59":[5],"60":[109],"61":[5],"62":[6],"63":[17],"64":[11],"65":[6],"66":[5],"67":[1],"68":[4],"69":[6],"70":[66],"71":[14],"72":[53],"73":[26],"74":[10],"75":[16],"76":[13],"77":[9],"78":[4],"79":[6],"80":[1]},"fnMap":{"0":{"name":"assertEqual","decl":{"start":{"line":57,"column":0},"end":{"line":59,"column":1}},"loc":{"start":{"line":57,"column":0},"end":{"line":59,"column":1}},"line":57},"1":{"name":"getParentBlock","decl":{"start":{"line":61,"column":0},"end":{"line":63,"column":1}},"loc":{"start":{"line":61,"column":0},"end":{"line":63,"column":1}},"line":61},"2":{"name":"upgradableSubqueryProject","decl":{"start":{"line":70,"column":0},"end":{"line":104,"column":1}},"loc":{"start":{"line":70,"column":0},"end":{"line":104,"column":1}},"line":70},"3":{"name":"set","decl":{"start":{"line":74,"column":4},"end":{"line":77,"column":5}},"loc":{"start":{"line":74,"column":4},"end":{"line":77,"column":5}},"line":74},"4":{"name":"get","decl":{"start":{"line":78,"column":4},"end":{"line":102,"column":5}},"loc":{"start":{"line":78,"column":4},"end":{"line":102,"column":5}},"line":78},"5":{"name":"ProjectUpgradeService","decl":{"start":{"line":119,"column":2},"end":{"line":133,"column":3}},"loc":{"start":{"line":119,"column":2},"end":{"line":133,"column":3}},"line":119},"6":{"name":"init","decl":{"start":{"line":135,"column":2},"end":{"line":171,"column":3}},"loc":{"start":{"line":135,"column":2},"end":{"line":171,"column":3}},"line":135},"7":{"name":"initWorker","decl":{"start":{"line":173,"column":2},"end":{"line":178,"column":3}},"loc":{"start":{"line":173,"column":2},"end":{"line":178,"column":3}},"line":173},"8":{"name":"get isRewindable","decl":{"start":{"line":180,"column":2},"end":{"line":182,"column":3}},"loc":{"start":{"line":180,"column":2},"end":{"line":182,"column":3}},"line":180},"9":{"name":"get projects","decl":{"start":{"line":184,"column":2},"end":{"line":186,"column":3}},"loc":{"start":{"line":184,"column":2},"end":{"line":186,"column":3}},"line":184},"10":{"name":"get currentProject","decl":{"start":{"line":188,"column":2},"end":{"line":190,"column":3}},"loc":{"start":{"line":188,"column":2},"end":{"line":190,"column":3}},"line":188},"11":{"name":"get currentHeight","decl":{"start":{"line":192,"column":2},"end":{"line":194,"column":3}},"loc":{"start":{"line":192,"column":2},"end":{"line":194,"column":3}},"line":192},"12":{"name":"rewind","decl":{"start":{"line":196,"column":2},"end":{"line":227,"column":3}},"loc":{"start":{"line":196,"column":2},"end":{"line":227,"column":3}},"line":196},"13":{"name":"migrate","decl":{"start":{"line":229,"column":10},"end":{"line":246,"column":3}},"loc":{"start":{"line":229,"column":10},"end":{"line":246,"column":3}},"line":229},"14":{"name":"setCurrentHeight","decl":{"start":{"line":252,"column":2},"end":{"line":285,"column":3}},"loc":{"start":{"line":252,"column":2},"end":{"line":285,"column":3}},"line":252},"15":{"name":"create","decl":{"start":{"line":287,"column":9},"end":{"line":353,"column":3}},"loc":{"start":{"line":287,"column":9},"end":{"line":353,"column":3}},"line":287},"16":{"name":"addProject","decl":{"start":{"line":299,"column":23},"end":{"line":305,"column":5}},"loc":{"start":{"line":299,"column":23},"end":{"line":305,"column":5}},"line":299},"17":{"name":"getProject","decl":{"start":{"line":355,"column":2},"end":{"line":357,"column":3}},"loc":{"start":{"line":355,"column":2},"end":{"line":357,"column":3}},"line":355},"18":{"name":"rewindableCheck","decl":{"start":{"line":359,"column":17},"end":{"line":370,"column":3}},"loc":{"start":{"line":359,"column":17},"end":{"line":370,"column":3}},"line":359},"19":{"name":"validateProject","decl":{"start":{"line":372,"column":17},"end":{"line":377,"column":3}},"loc":{"start":{"line":372,"column":17},"end":{"line":377,"column":3}},"line":372},"20":{"name":"validateIndexedData","decl":{"start":{"line":380,"column":2},"end":{"line":408,"column":3}},"loc":{"start":{"line":380,"column":2},"end":{"line":408,"column":3}},"line":380},"21":{"name":"getDeploymentsMetadata","decl":{"start":{"line":410,"column":10},"end":{"line":417,"column":3}},"loc":{"start":{"line":410,"column":10},"end":{"line":417,"column":3}},"line":410},"22":{"name":"updateIndexedDeployments","decl":{"start":{"line":420,"column":8},"end":{"line":440,"column":3}},"loc":{"start":{"line":420,"column":8},"end":{"line":440,"column":3}},"line":420}},"f":{"0":217,"1":406,"2":10,"3":1,"4":505,"5":24,"6":10,"7":0,"8":1,"9":38,"10":505,"11":9,"12":0,"13":3,"14":3,"15":30,"16":110,"17":37,"18":6,"19":109,"20":17,"21":26,"22":13}},"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/configure/configure.module.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/configure/configure.module.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":104}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":41}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":48}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":44}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":52}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":69}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":49}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":114}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":0}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":38}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":0}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":50}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":58}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":26}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":17}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":10}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":30}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":69}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":65}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":79}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":17}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":97}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":5}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":17}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":19}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":91}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":114}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":8}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":5}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":26}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":3}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":1}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":0}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":48}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":68}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":0}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":98}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":62}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":46}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":0}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":37}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":11}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":44}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":19}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":73}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":7}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":5}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":52}},"51":{"start":{"line":52,"column":0},"end":{"line":52,"column":15}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":16}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":1}},"54":{"start":{"line":55,"column":0},"end":{"line":55,"column":0}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":39}},"56":{"start":{"line":57,"column":0},"end":{"line":57,"column":30}},"57":{"start":{"line":58,"column":0},"end":{"line":58,"column":99}},"58":{"start":{"line":59,"column":0},"end":{"line":59,"column":3}},"59":{"start":{"line":60,"column":0},"end":{"line":60,"column":1}},"60":{"start":{"line":61,"column":0},"end":{"line":61,"column":0}},"61":{"start":{"line":62,"column":0},"end":{"line":62,"column":87}},"62":{"start":{"line":63,"column":0},"end":{"line":63,"column":20}},"63":{"start":{"line":64,"column":0},"end":{"line":64,"column":84}},"64":{"start":{"line":65,"column":0},"end":{"line":65,"column":56}},"65":{"start":{"line":66,"column":0},"end":{"line":66,"column":0}},"66":{"start":{"line":67,"column":0},"end":{"line":67,"column":36}},"67":{"start":{"line":68,"column":0},"end":{"line":68,"column":0}},"68":{"start":{"line":69,"column":0},"end":{"line":69,"column":17}},"69":{"start":{"line":70,"column":0},"end":{"line":70,"column":34}},"70":{"start":{"line":71,"column":0},"end":{"line":71,"column":3}},"71":{"start":{"line":72,"column":0},"end":{"line":72,"column":0}},"72":{"start":{"line":73,"column":0},"end":{"line":73,"column":17}},"73":{"start":{"line":74,"column":0},"end":{"line":74,"column":1}},"74":{"start":{"line":75,"column":0},"end":{"line":75,"column":0}},"75":{"start":{"line":76,"column":0},"end":{"line":76,"column":62}},"76":{"start":{"line":77,"column":0},"end":{"line":77,"column":13}},"77":{"start":{"line":78,"column":0},"end":{"line":78,"column":18}},"78":{"start":{"line":79,"column":0},"end":{"line":79,"column":17}},"79":{"start":{"line":80,"column":0},"end":{"line":80,"column":25}},"80":{"start":{"line":81,"column":0},"end":{"line":81,"column":19}},"81":{"start":{"line":82,"column":0},"end":{"line":82,"column":17}},"82":{"start":{"line":83,"column":0},"end":{"line":83,"column":45}},"83":{"start":{"line":84,"column":0},"end":{"line":84,"column":18}},"84":{"start":{"line":85,"column":0},"end":{"line":85,"column":23}},"85":{"start":{"line":86,"column":0},"end":{"line":86,"column":13}},"86":{"start":{"line":87,"column":0},"end":{"line":87,"column":70}},"87":{"start":{"line":88,"column":0},"end":{"line":88,"column":78}},"88":{"start":{"line":89,"column":0},"end":{"line":89,"column":25}},"89":{"start":{"line":90,"column":0},"end":{"line":90,"column":27}},"90":{"start":{"line":91,"column":0},"end":{"line":91,"column":21}},"91":{"start":{"line":92,"column":0},"end":{"line":92,"column":0}},"92":{"start":{"line":93,"column":0},"end":{"line":93,"column":38}},"93":{"start":{"line":94,"column":0},"end":{"line":94,"column":0}},"94":{"start":{"line":95,"column":0},"end":{"line":95,"column":88}},"95":{"start":{"line":96,"column":0},"end":{"line":96,"column":106}},"96":{"start":{"line":97,"column":0},"end":{"line":97,"column":20}},"97":{"start":{"line":98,"column":0},"end":{"line":98,"column":27}},"98":{"start":{"line":99,"column":0},"end":{"line":99,"column":89}},"99":{"start":{"line":100,"column":0},"end":{"line":100,"column":58}},"100":{"start":{"line":101,"column":0},"end":{"line":101,"column":24}},"101":{"start":{"line":102,"column":0},"end":{"line":102,"column":7}},"102":{"start":{"line":103,"column":0},"end":{"line":103,"column":50}},"103":{"start":{"line":104,"column":0},"end":{"line":104,"column":46}},"104":{"start":{"line":105,"column":0},"end":{"line":105,"column":66}},"105":{"start":{"line":106,"column":0},"end":{"line":106,"column":82}},"106":{"start":{"line":107,"column":0},"end":{"line":107,"column":10}},"107":{"start":{"line":108,"column":0},"end":{"line":108,"column":25}},"108":{"start":{"line":109,"column":0},"end":{"line":109,"column":83}},"109":{"start":{"line":110,"column":0},"end":{"line":110,"column":17}},"110":{"start":{"line":111,"column":0},"end":{"line":111,"column":22}},"111":{"start":{"line":112,"column":0},"end":{"line":112,"column":5}},"112":{"start":{"line":113,"column":0},"end":{"line":113,"column":0}},"113":{"start":{"line":114,"column":0},"end":{"line":114,"column":27}},"114":{"start":{"line":115,"column":0},"end":{"line":115,"column":56}},"115":{"start":{"line":116,"column":0},"end":{"line":116,"column":22}},"116":{"start":{"line":117,"column":0},"end":{"line":117,"column":7}},"117":{"start":{"line":118,"column":0},"end":{"line":118,"column":50}},"118":{"start":{"line":119,"column":0},"end":{"line":119,"column":46}},"119":{"start":{"line":120,"column":0},"end":{"line":120,"column":46}},"120":{"start":{"line":121,"column":0},"end":{"line":121,"column":92}},"121":{"start":{"line":122,"column":0},"end":{"line":122,"column":3}},"122":{"start":{"line":123,"column":0},"end":{"line":123,"column":0}},"123":{"start":{"line":124,"column":0},"end":{"line":124,"column":44}},"124":{"start":{"line":125,"column":0},"end":{"line":125,"column":20}},"125":{"start":{"line":126,"column":0},"end":{"line":126,"column":3}},"126":{"start":{"line":127,"column":0},"end":{"line":127,"column":0}},"127":{"start":{"line":128,"column":0},"end":{"line":128,"column":21}},"128":{"start":{"line":129,"column":0},"end":{"line":129,"column":33}},"129":{"start":{"line":130,"column":0},"end":{"line":130,"column":3}},"130":{"start":{"line":131,"column":0},"end":{"line":131,"column":0}},"131":{"start":{"line":132,"column":0},"end":{"line":132,"column":38}},"132":{"start":{"line":133,"column":0},"end":{"line":133,"column":20}},"133":{"start":{"line":134,"column":0},"end":{"line":134,"column":16}},"134":{"start":{"line":135,"column":0},"end":{"line":135,"column":11}},"135":{"start":{"line":136,"column":0},"end":{"line":136,"column":45}},"136":{"start":{"line":137,"column":0},"end":{"line":137,"column":11}},"137":{"start":{"line":138,"column":0},"end":{"line":138,"column":7}},"138":{"start":{"line":139,"column":0},"end":{"line":139,"column":42}},"139":{"start":{"line":140,"column":0},"end":{"line":140,"column":47}},"140":{"start":{"line":141,"column":0},"end":{"line":141,"column":8}},"141":{"start":{"line":142,"column":0},"end":{"line":142,"column":11}},"142":{"start":{"line":143,"column":0},"end":{"line":143,"column":5}},"143":{"start":{"line":144,"column":0},"end":{"line":144,"column":25}},"144":{"start":{"line":145,"column":0},"end":{"line":145,"column":70}},"145":{"start":{"line":146,"column":0},"end":{"line":146,"column":20}},"146":{"start":{"line":147,"column":0},"end":{"line":147,"column":5}},"147":{"start":{"line":148,"column":0},"end":{"line":148,"column":0}},"148":{"start":{"line":149,"column":0},"end":{"line":149,"column":66}},"149":{"start":{"line":150,"column":0},"end":{"line":150,"column":26}},"150":{"start":{"line":151,"column":0},"end":{"line":151,"column":52}},"151":{"start":{"line":152,"column":0},"end":{"line":152,"column":24}},"152":{"start":{"line":153,"column":0},"end":{"line":153,"column":7}},"153":{"start":{"line":154,"column":0},"end":{"line":154,"column":25}},"154":{"start":{"line":155,"column":0},"end":{"line":155,"column":10}},"155":{"start":{"line":156,"column":0},"end":{"line":156,"column":38}},"156":{"start":{"line":157,"column":0},"end":{"line":157,"column":13}},"157":{"start":{"line":158,"column":0},"end":{"line":158,"column":47}},"158":{"start":{"line":159,"column":0},"end":{"line":159,"column":13}},"159":{"start":{"line":160,"column":0},"end":{"line":160,"column":137}},"160":{"start":{"line":161,"column":0},"end":{"line":161,"column":9}},"161":{"start":{"line":162,"column":0},"end":{"line":162,"column":72}},"162":{"start":{"line":163,"column":0},"end":{"line":163,"column":79}},"163":{"start":{"line":164,"column":0},"end":{"line":164,"column":10}},"164":{"start":{"line":165,"column":0},"end":{"line":165,"column":13}},"165":{"start":{"line":166,"column":0},"end":{"line":166,"column":7}},"166":{"start":{"line":167,"column":0},"end":{"line":167,"column":6}},"167":{"start":{"line":168,"column":0},"end":{"line":168,"column":4}},"168":{"start":{"line":169,"column":0},"end":{"line":169,"column":0}},"169":{"start":{"line":170,"column":0},"end":{"line":170,"column":97}},"170":{"start":{"line":171,"column":0},"end":{"line":171,"column":0}},"171":{"start":{"line":172,"column":0},"end":{"line":172,"column":78}},"172":{"start":{"line":173,"column":0},"end":{"line":173,"column":0}},"173":{"start":{"line":174,"column":0},"end":{"line":174,"column":59}},"174":{"start":{"line":175,"column":0},"end":{"line":175,"column":1}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":26,"16":26,"17":1,"18":26,"19":25,"20":25,"21":25,"22":25,"23":25,"24":1,"25":1,"26":25,"27":2,"28":2,"29":2,"30":2,"31":2,"32":25,"33":25,"34":26,"35":1,"36":1,"37":1,"38":1,"39":20,"40":20,"41":180,"42":160,"43":180,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":180,"51":180,"52":20,"53":20,"54":1,"55":20,"56":20,"57":0,"58":0,"59":20,"60":1,"61":1,"62":1,"63":35,"64":35,"65":35,"66":35,"67":35,"68":35,"69":2,"70":2,"71":35,"72":35,"73":35,"74":1,"75":1,"76":20,"77":20,"78":20,"79":20,"80":20,"81":20,"82":20,"83":20,"84":20,"85":20,"86":20,"87":20,"88":20,"89":20,"90":20,"91":20,"92":20,"93":20,"94":20,"95":20,"96":20,"97":0,"98":0,"99":0,"100":0,"101":0,"102":0,"103":0,"104":0,"105":0,"106":20,"107":20,"108":0,"109":0,"110":0,"111":0,"112":20,"113":20,"114":20,"115":20,"116":20,"117":20,"118":20,"119":20,"120":20,"121":20,"122":20,"123":20,"124":0,"125":0,"126":20,"127":20,"128":0,"129":0,"130":20,"131":20,"132":20,"133":20,"134":20,"135":20,"136":20,"137":20,"138":20,"139":20,"140":20,"141":20,"142":20,"143":20,"144":0,"145":0,"146":20,"147":20,"148":20,"149":15,"150":15,"151":15,"152":15,"153":15,"154":15,"155":15,"156":15,"157":15,"158":15,"159":15,"160":15,"161":15,"162":15,"163":15,"164":15,"165":15,"166":15,"167":20,"168":20,"169":20,"170":20,"171":20,"172":20,"173":20,"174":20},"branchMap":{"0":{"type":"branch","line":16,"loc":{"start":{"line":16,"column":0},"end":{"line":35,"column":1}},"locations":[{"start":{"line":16,"column":0},"end":{"line":35,"column":1}}]},"1":{"type":"branch","line":17,"loc":{"start":{"line":17,"column":25},"end":{"line":19,"column":9}},"locations":[{"start":{"line":17,"column":25},"end":{"line":19,"column":9}}]},"2":{"type":"branch","line":19,"loc":{"start":{"line":19,"column":3},"end":{"line":34,"column":3}},"locations":[{"start":{"line":19,"column":3},"end":{"line":34,"column":3}}]},"3":{"type":"branch","line":24,"loc":{"start":{"line":24,"column":16},"end":{"line":26,"column":5}},"locations":[{"start":{"line":24,"column":16},"end":{"line":26,"column":5}}]},"4":{"type":"branch","line":27,"loc":{"start":{"line":27,"column":16},"end":{"line":32,"column":5}},"locations":[{"start":{"line":27,"column":16},"end":{"line":32,"column":5}}]},"5":{"type":"branch","line":33,"loc":{"start":{"line":33,"column":16},"end":{"line":33,"column":25}},"locations":[{"start":{"line":33,"column":16},"end":{"line":33,"column":25}}]},"6":{"type":"branch","line":40,"loc":{"start":{"line":40,"column":0},"end":{"line":54,"column":1}},"locations":[{"start":{"line":40,"column":0},"end":{"line":54,"column":1}}]},"7":{"type":"branch","line":41,"loc":{"start":{"line":41,"column":38},"end":{"line":53,"column":3}},"locations":[{"start":{"line":41,"column":38},"end":{"line":53,"column":3}}]},"8":{"type":"branch","line":42,"loc":{"start":{"line":42,"column":35},"end":{"line":42,"column":46}},"locations":[{"start":{"line":42,"column":35},"end":{"line":42,"column":46}}]},"9":{"type":"branch","line":43,"loc":{"start":{"line":43,"column":-1},"end":{"line":44,"column":36}},"locations":[{"start":{"line":43,"column":-1},"end":{"line":44,"column":36}}]},"10":{"type":"branch","line":44,"loc":{"start":{"line":44,"column":36},"end":{"line":50,"column":5}},"locations":[{"start":{"line":44,"column":36},"end":{"line":50,"column":5}}]},"11":{"type":"branch","line":51,"loc":{"start":{"line":51,"column":-1},"end":{"line":51,"column":42}},"locations":[{"start":{"line":51,"column":-1},"end":{"line":51,"column":42}}]},"12":{"type":"branch","line":56,"loc":{"start":{"line":56,"column":0},"end":{"line":60,"column":1}},"locations":[{"start":{"line":56,"column":0},"end":{"line":60,"column":1}}]},"13":{"type":"branch","line":57,"loc":{"start":{"line":57,"column":29},"end":{"line":59,"column":3}},"locations":[{"start":{"line":57,"column":29},"end":{"line":59,"column":3}}]},"14":{"type":"branch","line":64,"loc":{"start":{"line":64,"column":0},"end":{"line":74,"column":1}},"locations":[{"start":{"line":64,"column":0},"end":{"line":74,"column":1}}]},"15":{"type":"branch","line":65,"loc":{"start":{"line":65,"column":37},"end":{"line":65,"column":56}},"locations":[{"start":{"line":65,"column":37},"end":{"line":65,"column":56}}]},"16":{"type":"branch","line":67,"loc":{"start":{"line":67,"column":18},"end":{"line":67,"column":36}},"locations":[{"start":{"line":67,"column":18},"end":{"line":67,"column":36}}]},"17":{"type":"branch","line":69,"loc":{"start":{"line":69,"column":16},"end":{"line":71,"column":3}},"locations":[{"start":{"line":69,"column":16},"end":{"line":71,"column":3}}]},"18":{"type":"branch","line":76,"loc":{"start":{"line":76,"column":7},"end":{"line":175,"column":1}},"locations":[{"start":{"line":76,"column":7},"end":{"line":175,"column":1}}]},"19":{"type":"branch","line":97,"loc":{"start":{"line":97,"column":19},"end":{"line":107,"column":9}},"locations":[{"start":{"line":97,"column":19},"end":{"line":107,"column":9}}]},"20":{"type":"branch","line":108,"loc":{"start":{"line":108,"column":24},"end":{"line":112,"column":5}},"locations":[{"start":{"line":108,"column":24},"end":{"line":112,"column":5}}]},"21":{"type":"branch","line":124,"loc":{"start":{"line":124,"column":43},"end":{"line":126,"column":3}},"locations":[{"start":{"line":124,"column":43},"end":{"line":126,"column":3}}]},"22":{"type":"branch","line":128,"loc":{"start":{"line":128,"column":20},"end":{"line":130,"column":3}},"locations":[{"start":{"line":128,"column":20},"end":{"line":130,"column":3}}]},"23":{"type":"branch","line":149,"loc":{"start":{"line":149,"column":30},"end":{"line":168,"column":3}},"locations":[{"start":{"line":149,"column":30},"end":{"line":168,"column":3}}]},"24":{"type":"branch","line":162,"loc":{"start":{"line":162,"column":43},"end":{"line":162,"column":71}},"locations":[{"start":{"line":162,"column":43},"end":{"line":162,"column":71}}]}},"b":{"0":[26],"1":[1],"2":[25],"3":[1],"4":[2],"5":[24],"6":[20],"7":[180],"8":[20],"9":[160],"10":[0],"11":[160],"12":[20],"13":[0],"14":[35],"15":[0],"16":[0],"17":[2],"18":[20],"19":[0],"20":[0],"21":[0],"22":[0],"23":[15],"24":[0]},"fnMap":{"0":{"name":"validDbSchemaName","decl":{"start":{"line":16,"column":0},"end":{"line":35,"column":1}},"loc":{"start":{"line":16,"column":0},"end":{"line":35,"column":1}},"line":16},"1":{"name":"yargsToIConfig","decl":{"start":{"line":40,"column":0},"end":{"line":54,"column":1}},"loc":{"start":{"line":40,"column":0},"end":{"line":54,"column":1}},"line":40},"2":{"name":"warnDeprecations","decl":{"start":{"line":56,"column":0},"end":{"line":60,"column":1}},"loc":{"start":{"line":56,"column":0},"end":{"line":60,"column":1}},"line":56},"3":{"name":"getCachedRoot","decl":{"start":{"line":64,"column":0},"end":{"line":74,"column":1}},"loc":{"start":{"line":64,"column":0},"end":{"line":74,"column":1}},"line":64},"4":{"name":"registerApp","decl":{"start":{"line":76,"column":7},"end":{"line":175,"column":1}},"loc":{"start":{"line":76,"column":7},"end":{"line":175,"column":1}},"line":76},"5":{"name":"createParentProject","decl":{"start":{"line":149,"column":30},"end":{"line":168,"column":3}},"loc":{"start":{"line":149,"column":30},"end":{"line":168,"column":3}},"line":149}},"f":{"0":26,"1":20,"2":20,"3":35,"4":20,"5":15}},"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/configure/index.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/configure/index.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":35}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":29}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":41}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1},"branchMap":{},"b":{},"fnMap":{},"f":{}},"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/db/db.module.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/db/db.module.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":53}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":73}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":51}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":36}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":39}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":0}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":27}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":15}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":15}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":19}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":19}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":19}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":19}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":1}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":0}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":31}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":0}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":37}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":43}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":65}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":46}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":46}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":50}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":18}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":2}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":0}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":53}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":0}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":110}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":116}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":0}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":47}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":7}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":35}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":24}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":77}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":94}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":40}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":5}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":25}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":21}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":66}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":12}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":63}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":22}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":5}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":3}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":19}},"51":{"start":{"line":52,"column":0},"end":{"line":52,"column":1}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":0}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":67}},"54":{"start":{"line":55,"column":0},"end":{"line":55,"column":23}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":75}},"56":{"start":{"line":57,"column":0},"end":{"line":57,"column":25}},"57":{"start":{"line":58,"column":0},"end":{"line":58,"column":19}},"58":{"start":{"line":59,"column":0},"end":{"line":59,"column":2}},"59":{"start":{"line":60,"column":0},"end":{"line":60,"column":0}},"60":{"start":{"line":61,"column":0},"end":{"line":61,"column":94}},"61":{"start":{"line":62,"column":0},"end":{"line":62,"column":34}},"62":{"start":{"line":63,"column":0},"end":{"line":63,"column":0}},"63":{"start":{"line":64,"column":0},"end":{"line":64,"column":10}},"64":{"start":{"line":65,"column":0},"end":{"line":65,"column":14}},"65":{"start":{"line":66,"column":0},"end":{"line":66,"column":24}},"66":{"start":{"line":67,"column":0},"end":{"line":67,"column":47}},"67":{"start":{"line":68,"column":0},"end":{"line":68,"column":21}},"68":{"start":{"line":69,"column":0},"end":{"line":69,"column":12}},"69":{"start":{"line":70,"column":0},"end":{"line":70,"column":34}},"70":{"start":{"line":71,"column":0},"end":{"line":71,"column":38}},"71":{"start":{"line":72,"column":0},"end":{"line":72,"column":42}},"72":{"start":{"line":73,"column":0},"end":{"line":73,"column":44}},"73":{"start":{"line":74,"column":0},"end":{"line":74,"column":8}},"74":{"start":{"line":75,"column":0},"end":{"line":75,"column":6}},"75":{"start":{"line":76,"column":0},"end":{"line":76,"column":48}},"76":{"start":{"line":77,"column":0},"end":{"line":77,"column":24}},"77":{"start":{"line":78,"column":0},"end":{"line":78,"column":6}},"78":{"start":{"line":79,"column":0},"end":{"line":79,"column":4}},"79":{"start":{"line":80,"column":0},"end":{"line":80,"column":2}},"80":{"start":{"line":81,"column":0},"end":{"line":81,"column":0}},"81":{"start":{"line":82,"column":0},"end":{"line":82,"column":89}},"82":{"start":{"line":83,"column":0},"end":{"line":83,"column":82}},"83":{"start":{"line":84,"column":0},"end":{"line":84,"column":1}},"84":{"start":{"line":85,"column":0},"end":{"line":85,"column":0}},"85":{"start":{"line":86,"column":0},"end":{"line":86,"column":9}},"86":{"start":{"line":87,"column":0},"end":{"line":87,"column":23}},"87":{"start":{"line":88,"column":0},"end":{"line":88,"column":105}},"88":{"start":{"line":89,"column":0},"end":{"line":89,"column":82}},"89":{"start":{"line":90,"column":0},"end":{"line":90,"column":0}},"90":{"start":{"line":91,"column":0},"end":{"line":91,"column":12}},"91":{"start":{"line":92,"column":0},"end":{"line":92,"column":23}},"92":{"start":{"line":93,"column":0},"end":{"line":93,"column":18}},"93":{"start":{"line":94,"column":0},"end":{"line":94,"column":9}},"94":{"start":{"line":95,"column":0},"end":{"line":95,"column":29}},"95":{"start":{"line":96,"column":0},"end":{"line":96,"column":36}},"96":{"start":{"line":97,"column":0},"end":{"line":97,"column":10}},"97":{"start":{"line":98,"column":0},"end":{"line":98,"column":8}},"98":{"start":{"line":99,"column":0},"end":{"line":99,"column":27}},"99":{"start":{"line":100,"column":0},"end":{"line":100,"column":6}},"100":{"start":{"line":101,"column":0},"end":{"line":101,"column":3}},"101":{"start":{"line":102,"column":0},"end":{"line":102,"column":0}},"102":{"start":{"line":103,"column":0},"end":{"line":103,"column":71}},"103":{"start":{"line":104,"column":0},"end":{"line":104,"column":12}},"104":{"start":{"line":105,"column":0},"end":{"line":105,"column":23}},"105":{"start":{"line":106,"column":0},"end":{"line":106,"column":18}},"106":{"start":{"line":107,"column":0},"end":{"line":107,"column":9}},"107":{"start":{"line":108,"column":0},"end":{"line":108,"column":29}},"108":{"start":{"line":109,"column":0},"end":{"line":109,"column":112}},"109":{"start":{"line":110,"column":0},"end":{"line":110,"column":31}},"110":{"start":{"line":111,"column":0},"end":{"line":111,"column":10}},"111":{"start":{"line":112,"column":0},"end":{"line":112,"column":8}},"112":{"start":{"line":113,"column":0},"end":{"line":113,"column":27}},"113":{"start":{"line":114,"column":0},"end":{"line":114,"column":6}},"114":{"start":{"line":115,"column":0},"end":{"line":115,"column":3}},"115":{"start":{"line":116,"column":0},"end":{"line":116,"column":0}},"116":{"start":{"line":117,"column":0},"end":{"line":117,"column":54}},"117":{"start":{"line":118,"column":0},"end":{"line":118,"column":12}},"118":{"start":{"line":119,"column":0},"end":{"line":119,"column":23}},"119":{"start":{"line":120,"column":0},"end":{"line":120,"column":41}},"120":{"start":{"line":121,"column":0},"end":{"line":121,"column":23}},"121":{"start":{"line":122,"column":0},"end":{"line":122,"column":28}},"122":{"start":{"line":123,"column":0},"end":{"line":123,"column":69}},"123":{"start":{"line":124,"column":0},"end":{"line":124,"column":10}},"124":{"start":{"line":125,"column":0},"end":{"line":125,"column":22}},"125":{"start":{"line":126,"column":0},"end":{"line":126,"column":6}},"126":{"start":{"line":127,"column":0},"end":{"line":127,"column":3}},"127":{"start":{"line":128,"column":0},"end":{"line":128,"column":1}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":14,"32":14,"33":14,"34":14,"35":14,"36":14,"37":7,"38":7,"39":7,"40":7,"41":7,"42":7,"43":7,"44":7,"45":7,"46":0,"47":0,"48":0,"49":7,"50":7,"51":7,"52":1,"53":1,"54":7,"55":7,"56":7,"57":7,"58":7,"59":1,"60":1,"61":7,"62":7,"63":7,"64":7,"65":7,"66":7,"67":7,"68":7,"69":7,"70":7,"71":7,"72":7,"73":7,"74":7,"75":7,"76":594,"77":7,"78":7,"79":7,"80":1,"81":1,"82":0,"83":0,"84":1,"85":1,"86":1,"87":1,"88":2,"89":2,"90":2,"91":2,"92":2,"93":2,"94":2,"95":2,"96":2,"97":2,"98":2,"99":2,"100":2,"101":1,"102":1,"103":20,"104":20,"105":20,"106":20,"107":20,"108":20,"109":20,"110":20,"111":20,"112":20,"113":20,"114":20,"115":1,"116":1,"117":0,"118":0,"119":0,"120":0,"121":0,"122":0,"123":0,"124":0,"125":0,"126":0,"127":1},"branchMap":{"0":{"type":"branch","line":23,"loc":{"start":{"line":23,"column":28},"end":{"line":23,"column":57}},"locations":[{"start":{"line":23,"column":28},"end":{"line":23,"column":57}}]},"1":{"type":"branch","line":32,"loc":{"start":{"line":32,"column":0},"end":{"line":52,"column":1}},"locations":[{"start":{"line":32,"column":0},"end":{"line":52,"column":1}}]},"2":{"type":"branch","line":38,"loc":{"start":{"line":38,"column":-1},"end":{"line":52,"column":1}},"locations":[{"start":{"line":38,"column":-1},"end":{"line":52,"column":1}}]},"3":{"type":"branch","line":46,"loc":{"start":{"line":46,"column":5},"end":{"line":49,"column":5}},"locations":[{"start":{"line":46,"column":5},"end":{"line":49,"column":5}}]},"4":{"type":"branch","line":54,"loc":{"start":{"line":54,"column":25},"end":{"line":59,"column":2}},"locations":[{"start":{"line":54,"column":25},"end":{"line":59,"column":2}}]},"5":{"type":"branch","line":54,"loc":{"start":{"line":54,"column":54},"end":{"line":59,"column":2}},"locations":[{"start":{"line":54,"column":54},"end":{"line":59,"column":2}}]},"6":{"type":"branch","line":61,"loc":{"start":{"line":61,"column":30},"end":{"line":80,"column":2}},"locations":[{"start":{"line":61,"column":30},"end":{"line":80,"column":2}}]},"7":{"type":"branch","line":76,"loc":{"start":{"line":76,"column":13},"end":{"line":78,"column":5}},"locations":[{"start":{"line":76,"column":13},"end":{"line":78,"column":5}}]},"8":{"type":"branch","line":88,"loc":{"start":{"line":88,"column":9},"end":{"line":101,"column":3}},"locations":[{"start":{"line":88,"column":9},"end":{"line":101,"column":3}}]},"9":{"type":"branch","line":96,"loc":{"start":{"line":96,"column":22},"end":{"line":96,"column":35}},"locations":[{"start":{"line":96,"column":22},"end":{"line":96,"column":35}}]},"10":{"type":"branch","line":103,"loc":{"start":{"line":103,"column":9},"end":{"line":115,"column":3}},"locations":[{"start":{"line":103,"column":9},"end":{"line":115,"column":3}}]},"11":{"type":"branch","line":109,"loc":{"start":{"line":109,"column":22},"end":{"line":109,"column":111}},"locations":[{"start":{"line":109,"column":22},"end":{"line":109,"column":111}}]}},"b":{"0":[0],"1":[14],"2":[7],"3":[0],"4":[7],"5":[7],"6":[7],"7":[594],"8":[2],"9":[2],"10":[20],"11":[20]},"fnMap":{"0":{"name":"establishConnectionSequelize","decl":{"start":{"line":32,"column":0},"end":{"line":52,"column":1}},"loc":{"start":{"line":32,"column":0},"end":{"line":52,"column":1}},"line":32},"1":{"name":"sequelizeFactory","decl":{"start":{"line":54,"column":25},"end":{"line":59,"column":2}},"loc":{"start":{"line":54,"column":25},"end":{"line":59,"column":2}},"line":54},"2":{"name":"buildSequelizeOptions","decl":{"start":{"line":61,"column":30},"end":{"line":80,"column":2}},"loc":{"start":{"line":61,"column":30},"end":{"line":80,"column":2}},"line":61},"3":{"name":"logging","decl":{"start":{"line":76,"column":13},"end":{"line":78,"column":5}},"loc":{"start":{"line":76,"column":13},"end":{"line":78,"column":5}},"line":76},"4":{"name":"establishNewSequelize","decl":{"start":{"line":82,"column":7},"end":{"line":84,"column":1}},"loc":{"start":{"line":82,"column":7},"end":{"line":84,"column":1}},"line":82},"5":{"name":"forRootWithConfig","decl":{"start":{"line":88,"column":9},"end":{"line":101,"column":3}},"loc":{"start":{"line":88,"column":9},"end":{"line":101,"column":3}},"line":88},"6":{"name":"useFactory","decl":{"start":{"line":96,"column":22},"end":{"line":96,"column":35}},"loc":{"start":{"line":96,"column":22},"end":{"line":96,"column":35}},"line":96},"7":{"name":"forRoot","decl":{"start":{"line":103,"column":9},"end":{"line":115,"column":3}},"loc":{"start":{"line":103,"column":9},"end":{"line":115,"column":3}},"line":103},"8":{"name":"useFactory","decl":{"start":{"line":109,"column":22},"end":{"line":109,"column":111}},"loc":{"start":{"line":109,"column":22},"end":{"line":109,"column":111}},"line":109},"9":{"name":"forFeature","decl":{"start":{"line":117,"column":9},"end":{"line":127,"column":3}},"loc":{"start":{"line":117,"column":9},"end":{"line":127,"column":3}},"line":117}},"f":{"0":14,"1":7,"2":7,"3":594,"4":0,"5":2,"6":2,"7":20,"8":20,"9":0}},"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/db/index.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/db/index.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":28}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":36}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":30}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1},"branchMap":{},"b":{},"fnMap":{},"f":{}},"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/db/migration-service/SchemaMigration.service.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/db/migration-service/SchemaMigration.service.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":41}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":94}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":71}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":38}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":43}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":43}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":39}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":42}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":38}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":8}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":18}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":15}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":16}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":19}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":13}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":17}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":29}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":20}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":29}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":0}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":51}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":0}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":37}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":37}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":0}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":14}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":33}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":39}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":62}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":29}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":31}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":52}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":6}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":0}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":98}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":111}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":47}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":0}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":66}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":37}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":21}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":7}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":5}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":0}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":16}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":3}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":0}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":110}},"51":{"start":{"line":52,"column":0},"end":{"line":52,"column":63}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":57}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":0}},"54":{"start":{"line":55,"column":0},"end":{"line":55,"column":40}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":22}},"56":{"start":{"line":57,"column":0},"end":{"line":57,"column":24}},"57":{"start":{"line":58,"column":0},"end":{"line":58,"column":25}},"58":{"start":{"line":59,"column":0},"end":{"line":59,"column":25}},"59":{"start":{"line":60,"column":0},"end":{"line":60,"column":27}},"60":{"start":{"line":61,"column":0},"end":{"line":61,"column":21}},"61":{"start":{"line":62,"column":0},"end":{"line":62,"column":23}},"62":{"start":{"line":63,"column":0},"end":{"line":63,"column":24}},"63":{"start":{"line":64,"column":0},"end":{"line":64,"column":6}},"64":{"start":{"line":65,"column":0},"end":{"line":65,"column":0}},"65":{"start":{"line":66,"column":0},"end":{"line":66,"column":61}},"66":{"start":{"line":67,"column":0},"end":{"line":67,"column":73}},"67":{"start":{"line":68,"column":0},"end":{"line":68,"column":64}},"68":{"start":{"line":69,"column":0},"end":{"line":69,"column":0}},"69":{"start":{"line":70,"column":0},"end":{"line":70,"column":19}},"70":{"start":{"line":71,"column":0},"end":{"line":71,"column":3}},"71":{"start":{"line":72,"column":0},"end":{"line":72,"column":0}},"72":{"start":{"line":73,"column":0},"end":{"line":73,"column":119}},"73":{"start":{"line":74,"column":0},"end":{"line":74,"column":55}},"74":{"start":{"line":75,"column":0},"end":{"line":75,"column":32}},"75":{"start":{"line":76,"column":0},"end":{"line":76,"column":37}},"76":{"start":{"line":77,"column":0},"end":{"line":77,"column":20}},"77":{"start":{"line":78,"column":0},"end":{"line":78,"column":12}},"78":{"start":{"line":79,"column":0},"end":{"line":79,"column":38}},"79":{"start":{"line":80,"column":0},"end":{"line":80,"column":36}},"80":{"start":{"line":81,"column":0},"end":{"line":81,"column":5}},"81":{"start":{"line":82,"column":0},"end":{"line":82,"column":3}},"82":{"start":{"line":83,"column":0},"end":{"line":83,"column":0}},"83":{"start":{"line":84,"column":0},"end":{"line":84,"column":12}},"84":{"start":{"line":85,"column":0},"end":{"line":85,"column":40}},"85":{"start":{"line":86,"column":0},"end":{"line":86,"column":30}},"86":{"start":{"line":87,"column":0},"end":{"line":87,"column":40}},"87":{"start":{"line":88,"column":0},"end":{"line":88,"column":41}},"88":{"start":{"line":89,"column":0},"end":{"line":89,"column":96}},"89":{"start":{"line":90,"column":0},"end":{"line":90,"column":11}},"90":{"start":{"line":91,"column":0},"end":{"line":91,"column":17}},"91":{"start":{"line":92,"column":0},"end":{"line":92,"column":18}},"92":{"start":{"line":93,"column":0},"end":{"line":93,"column":21}},"93":{"start":{"line":94,"column":0},"end":{"line":94,"column":20}},"94":{"start":{"line":95,"column":0},"end":{"line":95,"column":21}},"95":{"start":{"line":96,"column":0},"end":{"line":96,"column":19}},"96":{"start":{"line":97,"column":0},"end":{"line":97,"column":20}},"97":{"start":{"line":98,"column":0},"end":{"line":98,"column":23}},"98":{"start":{"line":99,"column":0},"end":{"line":99,"column":25}},"99":{"start":{"line":100,"column":0},"end":{"line":100,"column":0}},"100":{"start":{"line":101,"column":0},"end":{"line":101,"column":40}},"101":{"start":{"line":102,"column":0},"end":{"line":102,"column":39}},"102":{"start":{"line":103,"column":0},"end":{"line":103,"column":13}},"103":{"start":{"line":104,"column":0},"end":{"line":104,"column":5}},"104":{"start":{"line":105,"column":0},"end":{"line":105,"column":0}},"105":{"start":{"line":106,"column":0},"end":{"line":106,"column":35}},"106":{"start":{"line":107,"column":0},"end":{"line":107,"column":22}},"107":{"start":{"line":108,"column":0},"end":{"line":108,"column":118}},"108":{"start":{"line":109,"column":0},"end":{"line":109,"column":29}},"109":{"start":{"line":110,"column":0},"end":{"line":110,"column":23}},"110":{"start":{"line":111,"column":0},"end":{"line":111,"column":8}},"111":{"start":{"line":112,"column":0},"end":{"line":112,"column":5}},"112":{"start":{"line":113,"column":0},"end":{"line":113,"column":0}},"113":{"start":{"line":114,"column":0},"end":{"line":114,"column":59}},"114":{"start":{"line":115,"column":0},"end":{"line":115,"column":49}},"115":{"start":{"line":116,"column":0},"end":{"line":116,"column":51}},"116":{"start":{"line":117,"column":0},"end":{"line":117,"column":6}},"117":{"start":{"line":118,"column":0},"end":{"line":118,"column":0}},"118":{"start":{"line":119,"column":0},"end":{"line":119,"column":100}},"119":{"start":{"line":120,"column":0},"end":{"line":120,"column":101}},"120":{"start":{"line":121,"column":0},"end":{"line":121,"column":0}},"121":{"start":{"line":122,"column":0},"end":{"line":122,"column":32}},"122":{"start":{"line":123,"column":0},"end":{"line":123,"column":51}},"123":{"start":{"line":124,"column":0},"end":{"line":124,"column":21}},"124":{"start":{"line":125,"column":0},"end":{"line":125,"column":24}},"125":{"start":{"line":126,"column":0},"end":{"line":126,"column":20}},"126":{"start":{"line":127,"column":0},"end":{"line":127,"column":18}},"127":{"start":{"line":128,"column":0},"end":{"line":128,"column":17}},"128":{"start":{"line":129,"column":0},"end":{"line":129,"column":6}},"129":{"start":{"line":130,"column":0},"end":{"line":130,"column":0}},"130":{"start":{"line":131,"column":0},"end":{"line":131,"column":28}},"131":{"start":{"line":132,"column":0},"end":{"line":132,"column":70}},"132":{"start":{"line":133,"column":0},"end":{"line":133,"column":5}},"133":{"start":{"line":134,"column":0},"end":{"line":134,"column":0}},"134":{"start":{"line":135,"column":0},"end":{"line":135,"column":9}},"135":{"start":{"line":136,"column":0},"end":{"line":136,"column":43}},"136":{"start":{"line":137,"column":0},"end":{"line":137,"column":46}},"137":{"start":{"line":138,"column":0},"end":{"line":138,"column":7}},"138":{"start":{"line":139,"column":0},"end":{"line":139,"column":0}},"139":{"start":{"line":140,"column":0},"end":{"line":140,"column":42}},"140":{"start":{"line":141,"column":0},"end":{"line":141,"column":41}},"141":{"start":{"line":142,"column":0},"end":{"line":142,"column":7}},"142":{"start":{"line":143,"column":0},"end":{"line":143,"column":0}},"143":{"start":{"line":144,"column":0},"end":{"line":144,"column":46}},"144":{"start":{"line":145,"column":0},"end":{"line":145,"column":74}},"145":{"start":{"line":146,"column":0},"end":{"line":146,"column":7}},"146":{"start":{"line":147,"column":0},"end":{"line":147,"column":0}},"147":{"start":{"line":148,"column":0},"end":{"line":148,"column":57}},"148":{"start":{"line":149,"column":0},"end":{"line":149,"column":37}},"149":{"start":{"line":150,"column":0},"end":{"line":150,"column":55}},"150":{"start":{"line":151,"column":0},"end":{"line":151,"column":0}},"151":{"start":{"line":152,"column":0},"end":{"line":152,"column":56}},"152":{"start":{"line":153,"column":0},"end":{"line":153,"column":61}},"153":{"start":{"line":154,"column":0},"end":{"line":154,"column":9}},"154":{"start":{"line":155,"column":0},"end":{"line":155,"column":0}},"155":{"start":{"line":156,"column":0},"end":{"line":156,"column":55}},"156":{"start":{"line":157,"column":0},"end":{"line":157,"column":62}},"157":{"start":{"line":158,"column":0},"end":{"line":158,"column":9}},"158":{"start":{"line":159,"column":0},"end":{"line":159,"column":0}},"159":{"start":{"line":160,"column":0},"end":{"line":160,"column":53}},"160":{"start":{"line":161,"column":0},"end":{"line":161,"column":64}},"161":{"start":{"line":162,"column":0},"end":{"line":162,"column":9}},"162":{"start":{"line":163,"column":0},"end":{"line":163,"column":0}},"163":{"start":{"line":164,"column":0},"end":{"line":164,"column":54}},"164":{"start":{"line":165,"column":0},"end":{"line":165,"column":63}},"165":{"start":{"line":166,"column":0},"end":{"line":166,"column":9}},"166":{"start":{"line":167,"column":0},"end":{"line":167,"column":0}},"167":{"start":{"line":168,"column":0},"end":{"line":168,"column":41}},"168":{"start":{"line":169,"column":0},"end":{"line":169,"column":57}},"169":{"start":{"line":170,"column":0},"end":{"line":170,"column":9}},"170":{"start":{"line":171,"column":0},"end":{"line":171,"column":0}},"171":{"start":{"line":172,"column":0},"end":{"line":172,"column":39}},"172":{"start":{"line":173,"column":0},"end":{"line":173,"column":59}},"173":{"start":{"line":174,"column":0},"end":{"line":174,"column":9}},"174":{"start":{"line":175,"column":0},"end":{"line":175,"column":7}},"175":{"start":{"line":176,"column":0},"end":{"line":176,"column":0}},"176":{"start":{"line":177,"column":0},"end":{"line":177,"column":51}},"177":{"start":{"line":178,"column":0},"end":{"line":178,"column":54}},"178":{"start":{"line":179,"column":0},"end":{"line":179,"column":7}},"179":{"start":{"line":180,"column":0},"end":{"line":180,"column":0}},"180":{"start":{"line":181,"column":0},"end":{"line":181,"column":53}},"181":{"start":{"line":182,"column":0},"end":{"line":182,"column":52}},"182":{"start":{"line":183,"column":0},"end":{"line":183,"column":7}},"183":{"start":{"line":184,"column":0},"end":{"line":184,"column":45}},"184":{"start":{"line":185,"column":0},"end":{"line":185,"column":44}},"185":{"start":{"line":186,"column":0},"end":{"line":186,"column":7}},"186":{"start":{"line":187,"column":0},"end":{"line":187,"column":46}},"187":{"start":{"line":188,"column":0},"end":{"line":188,"column":22}},"188":{"start":{"line":189,"column":0},"end":{"line":189,"column":60}},"189":{"start":{"line":190,"column":0},"end":{"line":190,"column":14}},"190":{"start":{"line":191,"column":0},"end":{"line":191,"column":5}},"191":{"start":{"line":192,"column":0},"end":{"line":192,"column":3}},"192":{"start":{"line":193,"column":0},"end":{"line":193,"column":1}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":15,"30":15,"31":15,"32":15,"33":15,"34":15,"35":15,"36":1,"37":1,"38":2,"39":2,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":1,"50":1,"51":8,"52":8,"53":8,"54":8,"55":8,"56":8,"57":8,"58":8,"59":8,"60":8,"61":8,"62":8,"63":8,"64":8,"65":8,"66":8,"67":8,"68":8,"69":8,"70":8,"71":1,"72":1,"73":33,"74":33,"75":28,"76":28,"77":33,"78":5,"79":5,"80":5,"81":33,"82":1,"83":1,"84":33,"85":33,"86":33,"87":33,"88":33,"89":33,"90":33,"91":33,"92":33,"93":33,"94":33,"95":33,"96":33,"97":33,"98":33,"99":33,"100":33,"101":0,"102":0,"103":0,"104":33,"105":33,"106":0,"107":0,"108":0,"109":0,"110":0,"111":0,"112":33,"113":33,"114":33,"115":33,"116":33,"117":33,"118":33,"119":33,"120":33,"121":33,"122":33,"123":33,"124":33,"125":33,"126":33,"127":33,"128":33,"129":33,"130":33,"131":0,"132":0,"133":33,"134":33,"135":33,"136":4,"137":4,"138":33,"139":33,"140":8,"141":8,"142":33,"143":33,"144":102,"145":102,"146":33,"147":33,"148":33,"149":13,"150":13,"151":13,"152":7,"153":7,"154":13,"155":13,"156":11,"157":11,"158":13,"159":13,"160":17,"161":17,"162":12,"163":13,"164":4,"165":4,"166":12,"167":13,"168":0,"169":0,"170":12,"171":13,"172":0,"173":0,"174":13,"175":32,"176":33,"177":188,"178":188,"179":32,"180":33,"181":13,"182":13,"183":33,"184":1,"185":1,"186":32,"187":33,"188":1,"189":1,"190":1,"191":33,"192":1},"branchMap":{"0":{"type":"branch","line":29,"loc":{"start":{"line":29,"column":2},"end":{"line":36,"column":6}},"locations":[{"start":{"line":29,"column":2},"end":{"line":36,"column":6}}]},"1":{"type":"branch","line":38,"loc":{"start":{"line":38,"column":9},"end":{"line":49,"column":3}},"locations":[{"start":{"line":38,"column":9},"end":{"line":49,"column":3}}]},"2":{"type":"branch","line":41,"loc":{"start":{"line":41,"column":-1},"end":{"line":49,"column":3}},"locations":[{"start":{"line":41,"column":-1},"end":{"line":49,"column":3}}]},"3":{"type":"branch","line":51,"loc":{"start":{"line":51,"column":9},"end":{"line":71,"column":3}},"locations":[{"start":{"line":51,"column":9},"end":{"line":71,"column":3}}]},"4":{"type":"branch","line":73,"loc":{"start":{"line":73,"column":10},"end":{"line":82,"column":3}},"locations":[{"start":{"line":73,"column":10},"end":{"line":82,"column":3}}]},"5":{"type":"branch","line":75,"loc":{"start":{"line":75,"column":31},"end":{"line":78,"column":11}},"locations":[{"start":{"line":75,"column":31},"end":{"line":78,"column":11}}]},"6":{"type":"branch","line":78,"loc":{"start":{"line":78,"column":5},"end":{"line":81,"column":5}},"locations":[{"start":{"line":78,"column":5},"end":{"line":81,"column":5}}]},"7":{"type":"branch","line":84,"loc":{"start":{"line":84,"column":2},"end":{"line":192,"column":3}},"locations":[{"start":{"line":84,"column":2},"end":{"line":192,"column":3}}]},"8":{"type":"branch","line":101,"loc":{"start":{"line":101,"column":39},"end":{"line":104,"column":5}},"locations":[{"start":{"line":101,"column":39},"end":{"line":104,"column":5}}]},"9":{"type":"branch","line":106,"loc":{"start":{"line":106,"column":34},"end":{"line":112,"column":5}},"locations":[{"start":{"line":106,"column":34},"end":{"line":112,"column":5}}]},"10":{"type":"branch","line":131,"loc":{"start":{"line":131,"column":27},"end":{"line":133,"column":5}},"locations":[{"start":{"line":131,"column":27},"end":{"line":133,"column":5}}]},"11":{"type":"branch","line":136,"loc":{"start":{"line":136,"column":42},"end":{"line":138,"column":7}},"locations":[{"start":{"line":136,"column":42},"end":{"line":138,"column":7}}]},"12":{"type":"branch","line":140,"loc":{"start":{"line":140,"column":41},"end":{"line":142,"column":7}},"locations":[{"start":{"line":140,"column":41},"end":{"line":142,"column":7}}]},"13":{"type":"branch","line":144,"loc":{"start":{"line":144,"column":45},"end":{"line":146,"column":7}},"locations":[{"start":{"line":144,"column":45},"end":{"line":146,"column":7}}]},"14":{"type":"branch","line":149,"loc":{"start":{"line":149,"column":36},"end":{"line":175,"column":7}},"locations":[{"start":{"line":149,"column":36},"end":{"line":175,"column":7}}]},"15":{"type":"branch","line":152,"loc":{"start":{"line":152,"column":55},"end":{"line":154,"column":9}},"locations":[{"start":{"line":152,"column":55},"end":{"line":154,"column":9}}]},"16":{"type":"branch","line":156,"loc":{"start":{"line":156,"column":54},"end":{"line":158,"column":9}},"locations":[{"start":{"line":156,"column":54},"end":{"line":158,"column":9}}]},"17":{"type":"branch","line":160,"loc":{"start":{"line":160,"column":52},"end":{"line":162,"column":9}},"locations":[{"start":{"line":160,"column":52},"end":{"line":162,"column":9}}]},"18":{"type":"branch","line":163,"loc":{"start":{"line":163,"column":-1},"end":{"line":164,"column":53}},"locations":[{"start":{"line":163,"column":-1},"end":{"line":164,"column":53}}]},"19":{"type":"branch","line":164,"loc":{"start":{"line":164,"column":53},"end":{"line":166,"column":9}},"locations":[{"start":{"line":164,"column":53},"end":{"line":166,"column":9}}]},"20":{"type":"branch","line":167,"loc":{"start":{"line":167,"column":-1},"end":{"line":168,"column":40}},"locations":[{"start":{"line":167,"column":-1},"end":{"line":168,"column":40}}]},"21":{"type":"branch","line":168,"loc":{"start":{"line":168,"column":40},"end":{"line":170,"column":9}},"locations":[{"start":{"line":168,"column":40},"end":{"line":170,"column":9}}]},"22":{"type":"branch","line":171,"loc":{"start":{"line":171,"column":-1},"end":{"line":172,"column":38}},"locations":[{"start":{"line":171,"column":-1},"end":{"line":172,"column":38}}]},"23":{"type":"branch","line":172,"loc":{"start":{"line":172,"column":38},"end":{"line":174,"column":9}},"locations":[{"start":{"line":172,"column":38},"end":{"line":174,"column":9}}]},"24":{"type":"branch","line":176,"loc":{"start":{"line":176,"column":-1},"end":{"line":177,"column":50}},"locations":[{"start":{"line":176,"column":-1},"end":{"line":177,"column":50}}]},"25":{"type":"branch","line":177,"loc":{"start":{"line":177,"column":50},"end":{"line":179,"column":7}},"locations":[{"start":{"line":177,"column":50},"end":{"line":179,"column":7}}]},"26":{"type":"branch","line":180,"loc":{"start":{"line":180,"column":-1},"end":{"line":181,"column":52}},"locations":[{"start":{"line":180,"column":-1},"end":{"line":181,"column":52}}]},"27":{"type":"branch","line":181,"loc":{"start":{"line":181,"column":52},"end":{"line":183,"column":7}},"locations":[{"start":{"line":181,"column":52},"end":{"line":183,"column":7}}]},"28":{"type":"branch","line":184,"loc":{"start":{"line":184,"column":-1},"end":{"line":184,"column":44}},"locations":[{"start":{"line":184,"column":-1},"end":{"line":184,"column":44}}]},"29":{"type":"branch","line":184,"loc":{"start":{"line":184,"column":44},"end":{"line":186,"column":7}},"locations":[{"start":{"line":184,"column":44},"end":{"line":186,"column":7}}]},"30":{"type":"branch","line":187,"loc":{"start":{"line":187,"column":-1},"end":{"line":188,"column":13}},"locations":[{"start":{"line":187,"column":-1},"end":{"line":188,"column":13}}]},"31":{"type":"branch","line":188,"loc":{"start":{"line":188,"column":6},"end":{"line":191,"column":5}},"locations":[{"start":{"line":188,"column":6},"end":{"line":191,"column":5}}]}},"b":{"0":[15],"1":[2],"2":[0],"3":[8],"4":[33],"5":[28],"6":[5],"7":[33],"8":[0],"9":[0],"10":[0],"11":[4],"12":[8],"13":[102],"14":[13],"15":[7],"16":[11],"17":[17],"18":[12],"19":[4],"20":[12],"21":[0],"22":[12],"23":[0],"24":[32],"25":[188],"26":[32],"27":[13],"28":[32],"29":[1],"30":[32],"31":[1]},"fnMap":{"0":{"name":"SchemaMigrationService","decl":{"start":{"line":29,"column":2},"end":{"line":36,"column":6}},"loc":{"start":{"line":29,"column":2},"end":{"line":36,"column":6}},"line":29},"1":{"name":"validateSchemaChanges","decl":{"start":{"line":38,"column":9},"end":{"line":49,"column":3}},"loc":{"start":{"line":38,"column":9},"end":{"line":49,"column":3}},"line":38},"2":{"name":"schemaComparator","decl":{"start":{"line":51,"column":9},"end":{"line":71,"column":3}},"loc":{"start":{"line":51,"column":9},"end":{"line":71,"column":3}},"line":51},"3":{"name":"orderModelsByRelations","decl":{"start":{"line":73,"column":10},"end":{"line":82,"column":3}},"loc":{"start":{"line":73,"column":10},"end":{"line":82,"column":3}},"line":73},"4":{"name":"run","decl":{"start":{"line":84,"column":2},"end":{"line":192,"column":3}},"loc":{"start":{"line":84,"column":2},"end":{"line":192,"column":3}},"line":84}},"f":{"0":15,"1":2,"2":8,"3":33,"4":33}},"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/db/migration-service/index.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/db/migration-service/index.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":28}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":42}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1},"branchMap":{},"b":{},"fnMap":{},"f":{}},"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/db/migration-service/migration-helpers.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/db/migration-service/migration-helpers.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":8}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":21}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":21}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":19}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":22}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":20}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":23}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":22}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":31}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":0}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":36}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":9}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":3}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":29}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":38}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":40}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":0}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":39}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":41}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":0}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":40}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":42}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":3}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":2}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":0}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":36}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":35}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":37}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":0}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":33}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":0}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":41}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":43}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":0}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":33}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":35}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":36}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":1}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":0}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":3}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":65}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":5}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":67}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":53}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":1}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":0}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":88}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":10}},"51":{"start":{"line":52,"column":0},"end":{"line":52,"column":56}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":38}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":33}},"54":{"start":{"line":55,"column":0},"end":{"line":55,"column":4}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":1}},"56":{"start":{"line":57,"column":0},"end":{"line":57,"column":0}},"57":{"start":{"line":58,"column":0},"end":{"line":58,"column":83}},"58":{"start":{"line":59,"column":0},"end":{"line":59,"column":82}},"59":{"start":{"line":60,"column":0},"end":{"line":60,"column":1}},"60":{"start":{"line":61,"column":0},"end":{"line":61,"column":0}},"61":{"start":{"line":62,"column":0},"end":{"line":62,"column":65}},"62":{"start":{"line":63,"column":0},"end":{"line":63,"column":48}},"63":{"start":{"line":64,"column":0},"end":{"line":64,"column":78}},"64":{"start":{"line":65,"column":0},"end":{"line":65,"column":4}},"65":{"start":{"line":66,"column":0},"end":{"line":66,"column":1}},"66":{"start":{"line":67,"column":0},"end":{"line":67,"column":0}},"67":{"start":{"line":68,"column":0},"end":{"line":68,"column":29}},"68":{"start":{"line":69,"column":0},"end":{"line":69,"column":35}},"69":{"start":{"line":70,"column":0},"end":{"line":70,"column":32}},"70":{"start":{"line":71,"column":0},"end":{"line":71,"column":28}},"71":{"start":{"line":72,"column":0},"end":{"line":72,"column":9}},"72":{"start":{"line":73,"column":0},"end":{"line":73,"column":68}},"73":{"start":{"line":74,"column":0},"end":{"line":74,"column":62}},"74":{"start":{"line":75,"column":0},"end":{"line":75,"column":0}},"75":{"start":{"line":76,"column":0},"end":{"line":76,"column":78}},"76":{"start":{"line":77,"column":0},"end":{"line":77,"column":80}},"77":{"start":{"line":78,"column":0},"end":{"line":78,"column":0}},"78":{"start":{"line":79,"column":0},"end":{"line":79,"column":41}},"79":{"start":{"line":80,"column":0},"end":{"line":80,"column":46}},"80":{"start":{"line":81,"column":0},"end":{"line":81,"column":74}},"81":{"start":{"line":82,"column":0},"end":{"line":82,"column":59}},"82":{"start":{"line":83,"column":0},"end":{"line":83,"column":70}},"83":{"start":{"line":84,"column":0},"end":{"line":84,"column":82}},"84":{"start":{"line":85,"column":0},"end":{"line":85,"column":7}},"85":{"start":{"line":86,"column":0},"end":{"line":86,"column":5}},"86":{"start":{"line":87,"column":0},"end":{"line":87,"column":5}},"87":{"start":{"line":88,"column":0},"end":{"line":88,"column":1}},"88":{"start":{"line":89,"column":0},"end":{"line":89,"column":0}},"89":{"start":{"line":90,"column":0},"end":{"line":90,"column":33}},"90":{"start":{"line":91,"column":0},"end":{"line":91,"column":43}},"91":{"start":{"line":92,"column":0},"end":{"line":92,"column":40}},"92":{"start":{"line":93,"column":0},"end":{"line":93,"column":28}},"93":{"start":{"line":94,"column":0},"end":{"line":94,"column":9}},"94":{"start":{"line":95,"column":0},"end":{"line":95,"column":57}},"95":{"start":{"line":96,"column":0},"end":{"line":96,"column":78}},"96":{"start":{"line":97,"column":0},"end":{"line":97,"column":0}},"97":{"start":{"line":98,"column":0},"end":{"line":98,"column":94}},"98":{"start":{"line":99,"column":0},"end":{"line":99,"column":88}},"99":{"start":{"line":100,"column":0},"end":{"line":100,"column":0}},"100":{"start":{"line":101,"column":0},"end":{"line":101,"column":34}},"101":{"start":{"line":102,"column":0},"end":{"line":102,"column":53}},"102":{"start":{"line":103,"column":0},"end":{"line":103,"column":39}},"103":{"start":{"line":104,"column":0},"end":{"line":104,"column":5}},"104":{"start":{"line":105,"column":0},"end":{"line":105,"column":5}},"105":{"start":{"line":106,"column":0},"end":{"line":106,"column":0}},"106":{"start":{"line":107,"column":0},"end":{"line":107,"column":37}},"107":{"start":{"line":108,"column":0},"end":{"line":108,"column":50}},"108":{"start":{"line":109,"column":0},"end":{"line":109,"column":41}},"109":{"start":{"line":110,"column":0},"end":{"line":110,"column":5}},"110":{"start":{"line":111,"column":0},"end":{"line":111,"column":5}},"111":{"start":{"line":112,"column":0},"end":{"line":112,"column":1}},"112":{"start":{"line":113,"column":0},"end":{"line":113,"column":0}},"113":{"start":{"line":114,"column":0},"end":{"line":114,"column":90}},"114":{"start":{"line":115,"column":0},"end":{"line":115,"column":10}},"115":{"start":{"line":116,"column":0},"end":{"line":116,"column":34}},"116":{"start":{"line":117,"column":0},"end":{"line":117,"column":34}},"117":{"start":{"line":118,"column":0},"end":{"line":118,"column":42}},"118":{"start":{"line":119,"column":0},"end":{"line":119,"column":37}},"119":{"start":{"line":120,"column":0},"end":{"line":120,"column":4}},"120":{"start":{"line":121,"column":0},"end":{"line":121,"column":1}},"121":{"start":{"line":122,"column":0},"end":{"line":122,"column":0}},"122":{"start":{"line":123,"column":0},"end":{"line":123,"column":30}},"123":{"start":{"line":124,"column":0},"end":{"line":124,"column":37}},"124":{"start":{"line":125,"column":0},"end":{"line":125,"column":34}},"125":{"start":{"line":126,"column":0},"end":{"line":126,"column":28}},"126":{"start":{"line":127,"column":0},"end":{"line":127,"column":9}},"127":{"start":{"line":128,"column":0},"end":{"line":128,"column":86}},"128":{"start":{"line":129,"column":0},"end":{"line":129,"column":80}},"129":{"start":{"line":130,"column":0},"end":{"line":130,"column":0}},"130":{"start":{"line":131,"column":0},"end":{"line":131,"column":36}},"131":{"start":{"line":132,"column":0},"end":{"line":132,"column":41}},"132":{"start":{"line":133,"column":0},"end":{"line":133,"column":40}},"133":{"start":{"line":134,"column":0},"end":{"line":134,"column":5}},"134":{"start":{"line":135,"column":0},"end":{"line":135,"column":5}},"135":{"start":{"line":136,"column":0},"end":{"line":136,"column":0}},"136":{"start":{"line":137,"column":0},"end":{"line":137,"column":33}},"137":{"start":{"line":138,"column":0},"end":{"line":138,"column":44}},"138":{"start":{"line":139,"column":0},"end":{"line":139,"column":38}},"139":{"start":{"line":140,"column":0},"end":{"line":140,"column":5}},"140":{"start":{"line":141,"column":0},"end":{"line":141,"column":5}},"141":{"start":{"line":142,"column":0},"end":{"line":142,"column":0}},"142":{"start":{"line":143,"column":0},"end":{"line":143,"column":33}},"143":{"start":{"line":144,"column":0},"end":{"line":144,"column":58}},"144":{"start":{"line":145,"column":0},"end":{"line":145,"column":23}},"145":{"start":{"line":146,"column":0},"end":{"line":146,"column":117}},"146":{"start":{"line":147,"column":0},"end":{"line":147,"column":119}},"147":{"start":{"line":148,"column":0},"end":{"line":148,"column":0}},"148":{"start":{"line":149,"column":0},"end":{"line":149,"column":118}},"149":{"start":{"line":150,"column":0},"end":{"line":150,"column":120}},"150":{"start":{"line":151,"column":0},"end":{"line":151,"column":0}},"151":{"start":{"line":152,"column":0},"end":{"line":152,"column":111}},"152":{"start":{"line":153,"column":0},"end":{"line":153,"column":120}},"153":{"start":{"line":154,"column":0},"end":{"line":154,"column":0}},"154":{"start":{"line":155,"column":0},"end":{"line":155,"column":10}},"155":{"start":{"line":156,"column":0},"end":{"line":156,"column":29}},"156":{"start":{"line":157,"column":0},"end":{"line":157,"column":31}},"157":{"start":{"line":158,"column":0},"end":{"line":158,"column":30}},"158":{"start":{"line":159,"column":0},"end":{"line":159,"column":32}},"159":{"start":{"line":160,"column":0},"end":{"line":160,"column":24}},"160":{"start":{"line":161,"column":0},"end":{"line":161,"column":23}},"161":{"start":{"line":162,"column":0},"end":{"line":162,"column":9}},"162":{"start":{"line":163,"column":0},"end":{"line":163,"column":46}},"163":{"start":{"line":164,"column":0},"end":{"line":164,"column":16}},"164":{"start":{"line":165,"column":0},"end":{"line":165,"column":22}},"165":{"start":{"line":166,"column":0},"end":{"line":166,"column":24}},"166":{"start":{"line":167,"column":0},"end":{"line":167,"column":23}},"167":{"start":{"line":168,"column":0},"end":{"line":168,"column":25}},"168":{"start":{"line":169,"column":0},"end":{"line":169,"column":24}},"169":{"start":{"line":170,"column":0},"end":{"line":170,"column":26}},"170":{"start":{"line":171,"column":0},"end":{"line":171,"column":10}},"171":{"start":{"line":172,"column":0},"end":{"line":172,"column":7}},"172":{"start":{"line":173,"column":0},"end":{"line":173,"column":5}},"173":{"start":{"line":174,"column":0},"end":{"line":174,"column":5}},"174":{"start":{"line":175,"column":0},"end":{"line":175,"column":1}},"175":{"start":{"line":176,"column":0},"end":{"line":176,"column":0}},"176":{"start":{"line":177,"column":0},"end":{"line":177,"column":86}},"177":{"start":{"line":178,"column":0},"end":{"line":178,"column":24}},"178":{"start":{"line":179,"column":0},"end":{"line":179,"column":0}},"179":{"start":{"line":180,"column":0},"end":{"line":180,"column":120}},"180":{"start":{"line":181,"column":0},"end":{"line":181,"column":58}},"181":{"start":{"line":182,"column":0},"end":{"line":182,"column":11}},"182":{"start":{"line":183,"column":0},"end":{"line":183,"column":11}},"183":{"start":{"line":184,"column":0},"end":{"line":184,"column":38}},"184":{"start":{"line":185,"column":0},"end":{"line":185,"column":118}},"185":{"start":{"line":186,"column":0},"end":{"line":186,"column":7}},"186":{"start":{"line":187,"column":0},"end":{"line":187,"column":18}},"187":{"start":{"line":188,"column":0},"end":{"line":188,"column":64}},"188":{"start":{"line":189,"column":0},"end":{"line":189,"column":77}},"189":{"start":{"line":190,"column":0},"end":{"line":190,"column":52}},"190":{"start":{"line":191,"column":0},"end":{"line":191,"column":80}},"191":{"start":{"line":192,"column":0},"end":{"line":192,"column":0}},"192":{"start":{"line":193,"column":0},"end":{"line":193,"column":41}},"193":{"start":{"line":194,"column":0},"end":{"line":194,"column":81}},"194":{"start":{"line":195,"column":0},"end":{"line":195,"column":3}},"195":{"start":{"line":196,"column":0},"end":{"line":196,"column":0}},"196":{"start":{"line":197,"column":0},"end":{"line":197,"column":43}},"197":{"start":{"line":198,"column":0},"end":{"line":198,"column":85}},"198":{"start":{"line":199,"column":0},"end":{"line":199,"column":3}},"199":{"start":{"line":200,"column":0},"end":{"line":200,"column":0}},"200":{"start":{"line":201,"column":0},"end":{"line":201,"column":44}},"201":{"start":{"line":202,"column":0},"end":{"line":202,"column":88}},"202":{"start":{"line":203,"column":0},"end":{"line":203,"column":3}},"203":{"start":{"line":204,"column":0},"end":{"line":204,"column":0}},"204":{"start":{"line":205,"column":0},"end":{"line":205,"column":46}},"205":{"start":{"line":206,"column":0},"end":{"line":206,"column":92}},"206":{"start":{"line":207,"column":0},"end":{"line":207,"column":3}},"207":{"start":{"line":208,"column":0},"end":{"line":208,"column":0}},"208":{"start":{"line":209,"column":0},"end":{"line":209,"column":82}},"209":{"start":{"line":210,"column":0},"end":{"line":210,"column":54}},"210":{"start":{"line":211,"column":0},"end":{"line":211,"column":0}},"211":{"start":{"line":212,"column":0},"end":{"line":212,"column":37}},"212":{"start":{"line":213,"column":0},"end":{"line":213,"column":101}},"213":{"start":{"line":214,"column":0},"end":{"line":214,"column":5}},"214":{"start":{"line":215,"column":0},"end":{"line":215,"column":39}},"215":{"start":{"line":216,"column":0},"end":{"line":216,"column":105}},"216":{"start":{"line":217,"column":0},"end":{"line":217,"column":5}},"217":{"start":{"line":218,"column":0},"end":{"line":218,"column":0}},"218":{"start":{"line":219,"column":0},"end":{"line":219,"column":38}},"219":{"start":{"line":220,"column":0},"end":{"line":220,"column":80}},"220":{"start":{"line":221,"column":0},"end":{"line":221,"column":5}},"221":{"start":{"line":222,"column":0},"end":{"line":222,"column":40}},"222":{"start":{"line":223,"column":0},"end":{"line":223,"column":84}},"223":{"start":{"line":224,"column":0},"end":{"line":224,"column":5}},"224":{"start":{"line":225,"column":0},"end":{"line":225,"column":0}},"225":{"start":{"line":226,"column":0},"end":{"line":226,"column":32}},"226":{"start":{"line":227,"column":0},"end":{"line":227,"column":85}},"227":{"start":{"line":228,"column":0},"end":{"line":228,"column":5}},"228":{"start":{"line":229,"column":0},"end":{"line":229,"column":34}},"229":{"start":{"line":230,"column":0},"end":{"line":230,"column":43}},"230":{"start":{"line":231,"column":0},"end":{"line":231,"column":5}},"231":{"start":{"line":232,"column":0},"end":{"line":232,"column":5}},"232":{"start":{"line":233,"column":0},"end":{"line":233,"column":40}},"233":{"start":{"line":234,"column":0},"end":{"line":234,"column":76}},"234":{"start":{"line":235,"column":0},"end":{"line":235,"column":3}},"235":{"start":{"line":236,"column":0},"end":{"line":236,"column":42}},"236":{"start":{"line":237,"column":0},"end":{"line":237,"column":80}},"237":{"start":{"line":238,"column":0},"end":{"line":238,"column":3}},"238":{"start":{"line":239,"column":0},"end":{"line":239,"column":20}},"239":{"start":{"line":240,"column":0},"end":{"line":240,"column":1}},"240":{"start":{"line":241,"column":0},"end":{"line":241,"column":80}},"241":{"start":{"line":242,"column":0},"end":{"line":242,"column":36}},"242":{"start":{"line":243,"column":0},"end":{"line":243,"column":11}},"243":{"start":{"line":244,"column":0},"end":{"line":244,"column":6}},"244":{"start":{"line":245,"column":0},"end":{"line":245,"column":89}},"245":{"start":{"line":246,"column":0},"end":{"line":246,"column":28}},"246":{"start":{"line":247,"column":0},"end":{"line":247,"column":15}},"247":{"start":{"line":248,"column":0},"end":{"line":248,"column":9}},"248":{"start":{"line":249,"column":0},"end":{"line":249,"column":0}},"249":{"start":{"line":250,"column":0},"end":{"line":250,"column":30}},"250":{"start":{"line":251,"column":0},"end":{"line":251,"column":34}},"251":{"start":{"line":252,"column":0},"end":{"line":252,"column":95}},"252":{"start":{"line":253,"column":0},"end":{"line":253,"column":60}},"253":{"start":{"line":254,"column":0},"end":{"line":254,"column":29}},"254":{"start":{"line":255,"column":0},"end":{"line":255,"column":12}},"255":{"start":{"line":256,"column":0},"end":{"line":256,"column":10}},"256":{"start":{"line":257,"column":0},"end":{"line":257,"column":43}},"257":{"start":{"line":258,"column":0},"end":{"line":258,"column":56}},"258":{"start":{"line":259,"column":0},"end":{"line":259,"column":55}},"259":{"start":{"line":260,"column":0},"end":{"line":260,"column":55}},"260":{"start":{"line":261,"column":0},"end":{"line":261,"column":29}},"261":{"start":{"line":262,"column":0},"end":{"line":262,"column":7}},"262":{"start":{"line":263,"column":0},"end":{"line":263,"column":0}},"263":{"start":{"line":264,"column":0},"end":{"line":264,"column":52}},"264":{"start":{"line":265,"column":0},"end":{"line":265,"column":45}},"265":{"start":{"line":266,"column":0},"end":{"line":266,"column":58}},"266":{"start":{"line":267,"column":0},"end":{"line":267,"column":7}},"267":{"start":{"line":268,"column":0},"end":{"line":268,"column":0}},"268":{"start":{"line":269,"column":0},"end":{"line":269,"column":37}},"269":{"start":{"line":270,"column":0},"end":{"line":270,"column":3}},"270":{"start":{"line":271,"column":0},"end":{"line":271,"column":1}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"38":1,"39":1,"40":1,"41":1,"42":1,"43":1,"44":1,"45":24,"46":24,"47":24,"48":1,"49":12,"50":12,"51":12,"52":12,"53":6,"54":12,"55":12,"56":1,"57":12,"58":12,"59":12,"60":1,"61":33,"62":33,"63":39,"64":33,"65":33,"66":1,"67":9,"68":9,"69":9,"70":9,"71":9,"72":9,"73":9,"74":9,"75":9,"76":9,"77":9,"78":9,"79":7,"80":4,"81":4,"82":4,"83":4,"84":4,"85":4,"86":9,"87":9,"88":1,"89":8,"90":8,"91":8,"92":8,"93":8,"94":8,"95":8,"96":8,"97":8,"98":8,"99":8,"100":8,"101":121,"102":121,"103":121,"104":8,"105":8,"106":8,"107":3,"108":3,"109":3,"110":8,"111":8,"112":1,"113":163,"114":163,"115":163,"116":163,"117":163,"118":26,"119":163,"120":163,"121":1,"122":8,"123":8,"124":8,"125":8,"126":8,"127":8,"128":8,"129":8,"130":8,"131":9,"132":3,"133":3,"134":8,"135":8,"136":8,"137":57,"138":51,"139":51,"140":8,"141":8,"142":8,"143":57,"144":57,"145":6,"146":6,"147":6,"148":6,"149":6,"150":6,"151":6,"152":6,"153":6,"154":6,"155":6,"156":6,"157":6,"158":6,"159":6,"160":0,"161":6,"162":6,"163":6,"164":6,"165":6,"166":6,"167":6,"168":6,"169":6,"170":6,"171":6,"172":6,"173":8,"174":8,"175":1,"176":0,"177":0,"178":0,"179":0,"180":0,"181":0,"182":0,"183":0,"184":0,"185":0,"186":0,"187":0,"188":0,"189":0,"190":0,"191":0,"192":0,"193":0,"194":0,"195":0,"196":0,"197":0,"198":0,"199":0,"200":0,"201":0,"202":0,"203":0,"204":0,"205":0,"206":0,"207":0,"208":0,"209":0,"210":0,"211":0,"212":0,"213":0,"214":0,"215":0,"216":0,"217":0,"218":0,"219":0,"220":0,"221":0,"222":0,"223":0,"224":0,"225":0,"226":0,"227":0,"228":0,"229":0,"230":0,"231":0,"232":0,"233":0,"234":0,"235":0,"236":0,"237":0,"238":0,"239":0,"240":66,"241":66,"242":66,"243":66,"244":66,"245":258,"246":258,"247":66,"248":66,"249":66,"250":33,"251":73,"252":73,"253":73,"254":33,"255":33,"256":33,"257":33,"258":1,"259":1,"260":1,"261":33,"262":33,"263":33,"264":33,"265":13,"266":33,"267":33,"268":33,"269":33,"270":66},"branchMap":{"0":{"type":"branch","line":46,"loc":{"start":{"line":46,"column":0},"end":{"line":48,"column":1}},"locations":[{"start":{"line":46,"column":0},"end":{"line":48,"column":1}}]},"1":{"type":"branch","line":47,"loc":{"start":{"line":47,"column":10},"end":{"line":47,"column":16}},"locations":[{"start":{"line":47,"column":10},"end":{"line":47,"column":16}}]},"2":{"type":"branch","line":47,"loc":{"start":{"line":47,"column":34},"end":{"line":47,"column":40}},"locations":[{"start":{"line":47,"column":34},"end":{"line":47,"column":40}}]},"3":{"type":"branch","line":50,"loc":{"start":{"line":50,"column":0},"end":{"line":56,"column":1}},"locations":[{"start":{"line":50,"column":0},"end":{"line":56,"column":1}}]},"4":{"type":"branch","line":52,"loc":{"start":{"line":52,"column":53},"end":{"line":53,"column":35}},"locations":[{"start":{"line":52,"column":53},"end":{"line":53,"column":35}}]},"5":{"type":"branch","line":53,"loc":{"start":{"line":53,"column":35},"end":{"line":54,"column":33}},"locations":[{"start":{"line":53,"column":35},"end":{"line":54,"column":33}}]},"6":{"type":"branch","line":58,"loc":{"start":{"line":58,"column":0},"end":{"line":60,"column":1}},"locations":[{"start":{"line":58,"column":0},"end":{"line":60,"column":1}}]},"7":{"type":"branch","line":59,"loc":{"start":{"line":59,"column":30},"end":{"line":59,"column":38}},"locations":[{"start":{"line":59,"column":30},"end":{"line":59,"column":38}}]},"8":{"type":"branch","line":59,"loc":{"start":{"line":59,"column":41},"end":{"line":59,"column":49}},"locations":[{"start":{"line":59,"column":41},"end":{"line":59,"column":49}}]},"9":{"type":"branch","line":59,"loc":{"start":{"line":59,"column":55},"end":{"line":59,"column":65}},"locations":[{"start":{"line":59,"column":55},"end":{"line":59,"column":65}}]},"10":{"type":"branch","line":59,"loc":{"start":{"line":59,"column":71},"end":{"line":59,"column":81}},"locations":[{"start":{"line":59,"column":71},"end":{"line":59,"column":81}}]},"11":{"type":"branch","line":62,"loc":{"start":{"line":62,"column":0},"end":{"line":66,"column":1}},"locations":[{"start":{"line":62,"column":0},"end":{"line":66,"column":1}}]},"12":{"type":"branch","line":63,"loc":{"start":{"line":63,"column":37},"end":{"line":64,"column":78}},"locations":[{"start":{"line":63,"column":37},"end":{"line":64,"column":78}}]},"13":{"type":"branch","line":64,"loc":{"start":{"line":64,"column":26},"end":{"line":64,"column":45}},"locations":[{"start":{"line":64,"column":26},"end":{"line":64,"column":45}}]},"14":{"type":"branch","line":64,"loc":{"start":{"line":64,"column":46},"end":{"line":64,"column":78}},"locations":[{"start":{"line":64,"column":46},"end":{"line":64,"column":78}}]},"15":{"type":"branch","line":68,"loc":{"start":{"line":68,"column":0},"end":{"line":88,"column":1}},"locations":[{"start":{"line":68,"column":0},"end":{"line":88,"column":1}}]},"16":{"type":"branch","line":73,"loc":{"start":{"line":73,"column":52},"end":{"line":73,"column":65}},"locations":[{"start":{"line":73,"column":52},"end":{"line":73,"column":65}}]},"17":{"type":"branch","line":74,"loc":{"start":{"line":74,"column":46},"end":{"line":74,"column":59}},"locations":[{"start":{"line":74,"column":46},"end":{"line":74,"column":59}}]},"18":{"type":"branch","line":76,"loc":{"start":{"line":76,"column":40},"end":{"line":76,"column":76}},"locations":[{"start":{"line":76,"column":40},"end":{"line":76,"column":76}}]},"19":{"type":"branch","line":77,"loc":{"start":{"line":77,"column":45},"end":{"line":77,"column":78}},"locations":[{"start":{"line":77,"column":45},"end":{"line":77,"column":78}}]},"20":{"type":"branch","line":79,"loc":{"start":{"line":79,"column":23},"end":{"line":87,"column":3}},"locations":[{"start":{"line":79,"column":23},"end":{"line":87,"column":3}}]},"21":{"type":"branch","line":80,"loc":{"start":{"line":80,"column":45},"end":{"line":86,"column":5}},"locations":[{"start":{"line":80,"column":45},"end":{"line":86,"column":5}}]},"22":{"type":"branch","line":81,"loc":{"start":{"line":81,"column":38},"end":{"line":81,"column":72}},"locations":[{"start":{"line":81,"column":38},"end":{"line":81,"column":72}}]},"23":{"type":"branch","line":90,"loc":{"start":{"line":90,"column":0},"end":{"line":112,"column":1}},"locations":[{"start":{"line":90,"column":0},"end":{"line":112,"column":1}}]},"24":{"type":"branch","line":95,"loc":{"start":{"line":95,"column":22},"end":{"line":96,"column":77}},"locations":[{"start":{"line":95,"column":22},"end":{"line":96,"column":77}}]},"25":{"type":"branch","line":98,"loc":{"start":{"line":98,"column":59},"end":{"line":98,"column":91}},"locations":[{"start":{"line":98,"column":59},"end":{"line":98,"column":91}}]},"26":{"type":"branch","line":99,"loc":{"start":{"line":99,"column":53},"end":{"line":99,"column":85}},"locations":[{"start":{"line":99,"column":53},"end":{"line":99,"column":85}}]},"27":{"type":"branch","line":101,"loc":{"start":{"line":101,"column":24},"end":{"line":105,"column":3}},"locations":[{"start":{"line":101,"column":24},"end":{"line":105,"column":3}}]},"28":{"type":"branch","line":107,"loc":{"start":{"line":107,"column":27},"end":{"line":111,"column":3}},"locations":[{"start":{"line":107,"column":27},"end":{"line":111,"column":3}}]},"29":{"type":"branch","line":114,"loc":{"start":{"line":114,"column":0},"end":{"line":121,"column":1}},"locations":[{"start":{"line":114,"column":0},"end":{"line":121,"column":1}}]},"30":{"type":"branch","line":116,"loc":{"start":{"line":116,"column":31},"end":{"line":117,"column":31}},"locations":[{"start":{"line":116,"column":31},"end":{"line":117,"column":31}}]},"31":{"type":"branch","line":117,"loc":{"start":{"line":117,"column":31},"end":{"line":118,"column":39}},"locations":[{"start":{"line":117,"column":31},"end":{"line":118,"column":39}}]},"32":{"type":"branch","line":118,"loc":{"start":{"line":118,"column":39},"end":{"line":119,"column":37}},"locations":[{"start":{"line":118,"column":39},"end":{"line":119,"column":37}}]},"33":{"type":"branch","line":123,"loc":{"start":{"line":123,"column":0},"end":{"line":175,"column":1}},"locations":[{"start":{"line":123,"column":0},"end":{"line":175,"column":1}}]},"34":{"type":"branch","line":128,"loc":{"start":{"line":128,"column":53},"end":{"line":128,"column":83}},"locations":[{"start":{"line":128,"column":53},"end":{"line":128,"column":83}}]},"35":{"type":"branch","line":129,"loc":{"start":{"line":129,"column":47},"end":{"line":129,"column":77}},"locations":[{"start":{"line":129,"column":47},"end":{"line":129,"column":77}}]},"36":{"type":"branch","line":131,"loc":{"start":{"line":131,"column":24},"end":{"line":135,"column":3}},"locations":[{"start":{"line":131,"column":24},"end":{"line":135,"column":3}}]},"37":{"type":"branch","line":132,"loc":{"start":{"line":132,"column":40},"end":{"line":134,"column":5}},"locations":[{"start":{"line":132,"column":40},"end":{"line":134,"column":5}}]},"38":{"type":"branch","line":137,"loc":{"start":{"line":137,"column":21},"end":{"line":141,"column":3}},"locations":[{"start":{"line":137,"column":21},"end":{"line":141,"column":3}}]},"39":{"type":"branch","line":138,"loc":{"start":{"line":138,"column":43},"end":{"line":140,"column":5}},"locations":[{"start":{"line":138,"column":43},"end":{"line":140,"column":5}}]},"40":{"type":"branch","line":143,"loc":{"start":{"line":143,"column":21},"end":{"line":174,"column":3}},"locations":[{"start":{"line":143,"column":21},"end":{"line":174,"column":3}}]},"41":{"type":"branch","line":145,"loc":{"start":{"line":145,"column":22},"end":{"line":173,"column":5}},"locations":[{"start":{"line":145,"column":22},"end":{"line":173,"column":5}}]},"42":{"type":"branch","line":152,"loc":{"start":{"line":152,"column":82},"end":{"line":152,"column":98}},"locations":[{"start":{"line":152,"column":82},"end":{"line":152,"column":98}}]},"43":{"type":"branch","line":153,"loc":{"start":{"line":153,"column":84},"end":{"line":153,"column":107}},"locations":[{"start":{"line":153,"column":84},"end":{"line":153,"column":107}}]},"44":{"type":"branch","line":156,"loc":{"start":{"line":156,"column":26},"end":{"line":157,"column":28}},"locations":[{"start":{"line":156,"column":26},"end":{"line":157,"column":28}}]},"45":{"type":"branch","line":157,"loc":{"start":{"line":157,"column":28},"end":{"line":158,"column":27}},"locations":[{"start":{"line":157,"column":28},"end":{"line":158,"column":27}}]},"46":{"type":"branch","line":158,"loc":{"start":{"line":158,"column":27},"end":{"line":159,"column":29}},"locations":[{"start":{"line":158,"column":27},"end":{"line":159,"column":29}}]},"47":{"type":"branch","line":159,"loc":{"start":{"line":159,"column":29},"end":{"line":160,"column":21}},"locations":[{"start":{"line":159,"column":29},"end":{"line":160,"column":21}}]},"48":{"type":"branch","line":160,"loc":{"start":{"line":160,"column":21},"end":{"line":161,"column":23}},"locations":[{"start":{"line":160,"column":21},"end":{"line":161,"column":23}}]},"49":{"type":"branch","line":146,"loc":{"start":{"line":146,"column":46},"end":{"line":146,"column":115}},"locations":[{"start":{"line":146,"column":46},"end":{"line":146,"column":115}}]},"50":{"type":"branch","line":146,"loc":{"start":{"line":146,"column":83},"end":{"line":146,"column":114}},"locations":[{"start":{"line":146,"column":83},"end":{"line":146,"column":114}}]},"51":{"type":"branch","line":147,"loc":{"start":{"line":147,"column":55},"end":{"line":147,"column":117}},"locations":[{"start":{"line":147,"column":55},"end":{"line":147,"column":117}}]},"52":{"type":"branch","line":147,"loc":{"start":{"line":147,"column":85},"end":{"line":147,"column":116}},"locations":[{"start":{"line":147,"column":85},"end":{"line":147,"column":116}}]},"53":{"type":"branch","line":149,"loc":{"start":{"line":149,"column":48},"end":{"line":149,"column":116}},"locations":[{"start":{"line":149,"column":48},"end":{"line":149,"column":116}}]},"54":{"type":"branch","line":149,"loc":{"start":{"line":149,"column":86},"end":{"line":149,"column":115}},"locations":[{"start":{"line":149,"column":86},"end":{"line":149,"column":115}}]},"55":{"type":"branch","line":150,"loc":{"start":{"line":150,"column":57},"end":{"line":150,"column":118}},"locations":[{"start":{"line":150,"column":57},"end":{"line":150,"column":118}}]},"56":{"type":"branch","line":150,"loc":{"start":{"line":150,"column":88},"end":{"line":150,"column":117}},"locations":[{"start":{"line":150,"column":88},"end":{"line":150,"column":117}}]},"57":{"type":"branch","line":241,"loc":{"start":{"line":241,"column":0},"end":{"line":271,"column":1}},"locations":[{"start":{"line":241,"column":0},"end":{"line":271,"column":1}}]},"58":{"type":"branch","line":250,"loc":{"start":{"line":250,"column":29},"end":{"line":270,"column":3}},"locations":[{"start":{"line":250,"column":29},"end":{"line":270,"column":3}}]},"59":{"type":"branch","line":245,"loc":{"start":{"line":245,"column":41},"end":{"line":248,"column":3}},"locations":[{"start":{"line":245,"column":41},"end":{"line":248,"column":3}}]},"60":{"type":"branch","line":251,"loc":{"start":{"line":251,"column":23},"end":{"line":255,"column":5}},"locations":[{"start":{"line":251,"column":23},"end":{"line":255,"column":5}}]},"61":{"type":"branch","line":252,"loc":{"start":{"line":252,"column":39},"end":{"line":252,"column":59}},"locations":[{"start":{"line":252,"column":39},"end":{"line":252,"column":59}}]},"62":{"type":"branch","line":253,"loc":{"start":{"line":253,"column":39},"end":{"line":253,"column":59}},"locations":[{"start":{"line":253,"column":39},"end":{"line":253,"column":59}}]},"63":{"type":"branch","line":258,"loc":{"start":{"line":258,"column":45},"end":{"line":262,"column":5}},"locations":[{"start":{"line":258,"column":45},"end":{"line":262,"column":5}}]},"64":{"type":"branch","line":259,"loc":{"start":{"line":259,"column":34},"end":{"line":259,"column":54}},"locations":[{"start":{"line":259,"column":34},"end":{"line":259,"column":54}}]},"65":{"type":"branch","line":260,"loc":{"start":{"line":260,"column":34},"end":{"line":260,"column":54}},"locations":[{"start":{"line":260,"column":34},"end":{"line":260,"column":54}}]},"66":{"type":"branch","line":265,"loc":{"start":{"line":265,"column":29},"end":{"line":267,"column":5}},"locations":[{"start":{"line":265,"column":29},"end":{"line":267,"column":5}}]}},"b":{"0":[24],"1":[12],"2":[12],"3":[12],"4":[6],"5":[6],"6":[12],"7":[0],"8":[0],"9":[0],"10":[0],"11":[33],"12":[39],"13":[37],"14":[2],"15":[9],"16":[7],"17":[8],"18":[8],"19":[7],"20":[7],"21":[4],"22":[7],"23":[8],"24":[248],"25":[3],"26":[121],"27":[121],"28":[3],"29":[163],"30":[42],"31":[30],"32":[26],"33":[8],"34":[9],"35":[57],"36":[9],"37":[3],"38":[57],"39":[51],"40":[57],"41":[6],"42":[0],"43":[0],"44":[1],"45":[1],"46":[0],"47":[0],"48":[0],"49":[24],"50":[80],"51":[27],"52":[83],"53":[12],"54":[6],"55":[3],"56":[6],"57":[66],"58":[33],"59":[258],"60":[73],"61":[0],"62":[0],"63":[1],"64":[0],"65":[0],"66":[13]},"fnMap":{"0":{"name":"arrayUnorderedMatch","decl":{"start":{"line":46,"column":0},"end":{"line":48,"column":1}},"loc":{"start":{"line":46,"column":0},"end":{"line":48,"column":1}},"line":46},"1":{"name":"indexesEqual","decl":{"start":{"line":50,"column":0},"end":{"line":56,"column":1}},"loc":{"start":{"line":50,"column":0},"end":{"line":56,"column":1}},"line":50},"2":{"name":"fullTextEqual","decl":{"start":{"line":58,"column":0},"end":{"line":60,"column":1}},"loc":{"start":{"line":58,"column":0},"end":{"line":60,"column":1}},"line":58},"3":{"name":"hasChanged","decl":{"start":{"line":62,"column":0},"end":{"line":66,"column":1}},"loc":{"start":{"line":62,"column":0},"end":{"line":66,"column":1}},"line":62},"4":{"name":"compareEnums","decl":{"start":{"line":68,"column":0},"end":{"line":88,"column":1}},"loc":{"start":{"line":68,"column":0},"end":{"line":88,"column":1}},"line":68},"5":{"name":"compareRelations","decl":{"start":{"line":90,"column":0},"end":{"line":112,"column":1}},"loc":{"start":{"line":90,"column":0},"end":{"line":112,"column":1}},"line":90},"6":{"name":"relationKey","decl":{"start":{"line":95,"column":22},"end":{"line":96,"column":77}},"loc":{"start":{"line":95,"column":22},"end":{"line":96,"column":77}},"line":95},"7":{"name":"fieldsAreEqual","decl":{"start":{"line":114,"column":0},"end":{"line":121,"column":1}},"loc":{"start":{"line":114,"column":0},"end":{"line":121,"column":1}},"line":114},"8":{"name":"compareModels","decl":{"start":{"line":123,"column":0},"end":{"line":175,"column":1}},"loc":{"start":{"line":123,"column":0},"end":{"line":175,"column":1}},"line":123},"9":{"name":"schemaChangesLoggerMessage","decl":{"start":{"line":177,"column":0},"end":{"line":240,"column":1}},"loc":{"start":{"line":177,"column":0},"end":{"line":240,"column":1}},"line":177},"10":{"name":"alignModelOrder","decl":{"start":{"line":241,"column":0},"end":{"line":271,"column":1}},"loc":{"start":{"line":241,"column":0},"end":{"line":271,"column":1}},"line":241}},"f":{"0":24,"1":12,"2":12,"3":33,"4":9,"5":8,"6":248,"7":163,"8":8,"9":0,"10":66}},"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/db/migration-service/migration.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/db/migration-service/migration.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":33}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":41}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":8}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":21}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":21}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":19}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":20}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":23}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":11}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":12}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":22}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":8}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":17}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":18}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":14}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":13}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":12}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":14}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":8}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":28}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":37}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":54}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":43}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":39}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":83}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":86}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":45}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":0}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":55}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":0}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":39}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":0}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":24}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":51}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":4}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":86}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":182}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":5}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":53}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":54}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":39}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":44}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":82}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":11}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":37}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":6}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":45}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":46}},"51":{"start":{"line":52,"column":0},"end":{"line":52,"column":0}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":22}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":33}},"54":{"start":{"line":55,"column":0},"end":{"line":55,"column":39}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":40}},"56":{"start":{"line":57,"column":0},"end":{"line":57,"column":40}},"57":{"start":{"line":58,"column":0},"end":{"line":58,"column":40}},"58":{"start":{"line":59,"column":0},"end":{"line":59,"column":91}},"59":{"start":{"line":60,"column":0},"end":{"line":60,"column":51}},"60":{"start":{"line":61,"column":0},"end":{"line":61,"column":50}},"61":{"start":{"line":62,"column":0},"end":{"line":62,"column":5}},"62":{"start":{"line":63,"column":0},"end":{"line":63,"column":48}},"63":{"start":{"line":64,"column":0},"end":{"line":64,"column":47}},"64":{"start":{"line":65,"column":0},"end":{"line":65,"column":0}},"65":{"start":{"line":66,"column":0},"end":{"line":66,"column":66}},"66":{"start":{"line":67,"column":0},"end":{"line":67,"column":35}},"67":{"start":{"line":68,"column":0},"end":{"line":68,"column":69}},"68":{"start":{"line":69,"column":0},"end":{"line":69,"column":5}},"69":{"start":{"line":70,"column":0},"end":{"line":70,"column":0}},"70":{"start":{"line":71,"column":0},"end":{"line":71,"column":44}},"71":{"start":{"line":72,"column":0},"end":{"line":72,"column":0}},"72":{"start":{"line":73,"column":0},"end":{"line":73,"column":31}},"73":{"start":{"line":74,"column":0},"end":{"line":74,"column":91}},"74":{"start":{"line":75,"column":0},"end":{"line":75,"column":5}},"75":{"start":{"line":76,"column":0},"end":{"line":76,"column":3}},"76":{"start":{"line":77,"column":0},"end":{"line":77,"column":0}},"77":{"start":{"line":78,"column":0},"end":{"line":78,"column":22}},"78":{"start":{"line":79,"column":0},"end":{"line":79,"column":25}},"79":{"start":{"line":80,"column":0},"end":{"line":80,"column":31}},"80":{"start":{"line":81,"column":0},"end":{"line":81,"column":23}},"81":{"start":{"line":82,"column":0},"end":{"line":82,"column":23}},"82":{"start":{"line":83,"column":0},"end":{"line":83,"column":22}},"83":{"start":{"line":84,"column":0},"end":{"line":84,"column":25}},"84":{"start":{"line":85,"column":0},"end":{"line":85,"column":95}},"85":{"start":{"line":86,"column":0},"end":{"line":86,"column":81}},"86":{"start":{"line":87,"column":0},"end":{"line":87,"column":97}},"87":{"start":{"line":88,"column":0},"end":{"line":88,"column":30}},"88":{"start":{"line":89,"column":0},"end":{"line":89,"column":12}},"89":{"start":{"line":90,"column":0},"end":{"line":90,"column":24}},"90":{"start":{"line":91,"column":0},"end":{"line":91,"column":8}},"91":{"start":{"line":92,"column":0},"end":{"line":92,"column":25}},"92":{"start":{"line":93,"column":0},"end":{"line":93,"column":16}},"93":{"start":{"line":94,"column":0},"end":{"line":94,"column":19}},"94":{"start":{"line":95,"column":0},"end":{"line":95,"column":17}},"95":{"start":{"line":96,"column":0},"end":{"line":96,"column":13}},"96":{"start":{"line":97,"column":0},"end":{"line":97,"column":13}},"97":{"start":{"line":98,"column":0},"end":{"line":98,"column":26}},"98":{"start":{"line":99,"column":0},"end":{"line":99,"column":18}},"99":{"start":{"line":100,"column":0},"end":{"line":100,"column":19}},"100":{"start":{"line":101,"column":0},"end":{"line":101,"column":6}},"101":{"start":{"line":102,"column":0},"end":{"line":102,"column":3}},"102":{"start":{"line":103,"column":0},"end":{"line":103,"column":0}},"103":{"start":{"line":104,"column":0},"end":{"line":104,"column":80}},"104":{"start":{"line":105,"column":0},"end":{"line":105,"column":85}},"105":{"start":{"line":106,"column":0},"end":{"line":106,"column":0}},"106":{"start":{"line":107,"column":0},"end":{"line":107,"column":26}},"107":{"start":{"line":108,"column":0},"end":{"line":108,"column":39}},"108":{"start":{"line":109,"column":0},"end":{"line":109,"column":33}},"109":{"start":{"line":110,"column":0},"end":{"line":110,"column":5}},"110":{"start":{"line":111,"column":0},"end":{"line":111,"column":0}},"111":{"start":{"line":112,"column":0},"end":{"line":112,"column":9}},"112":{"start":{"line":113,"column":0},"end":{"line":113,"column":45}},"113":{"start":{"line":114,"column":0},"end":{"line":114,"column":40}},"114":{"start":{"line":115,"column":0},"end":{"line":115,"column":119}},"115":{"start":{"line":116,"column":0},"end":{"line":116,"column":16}},"116":{"start":{"line":117,"column":0},"end":{"line":117,"column":81}},"117":{"start":{"line":118,"column":0},"end":{"line":118,"column":9}},"118":{"start":{"line":119,"column":0},"end":{"line":119,"column":7}},"119":{"start":{"line":120,"column":0},"end":{"line":120,"column":0}},"120":{"start":{"line":121,"column":0},"end":{"line":121,"column":52}},"121":{"start":{"line":122,"column":0},"end":{"line":122,"column":40}},"122":{"start":{"line":123,"column":0},"end":{"line":123,"column":119}},"123":{"start":{"line":124,"column":0},"end":{"line":124,"column":16}},"124":{"start":{"line":125,"column":0},"end":{"line":125,"column":81}},"125":{"start":{"line":126,"column":0},"end":{"line":126,"column":9}},"126":{"start":{"line":127,"column":0},"end":{"line":127,"column":7}},"127":{"start":{"line":128,"column":0},"end":{"line":128,"column":0}},"128":{"start":{"line":129,"column":0},"end":{"line":129,"column":42}},"129":{"start":{"line":130,"column":0},"end":{"line":130,"column":17}},"130":{"start":{"line":131,"column":0},"end":{"line":131,"column":44}},"131":{"start":{"line":132,"column":0},"end":{"line":132,"column":0}},"132":{"start":{"line":133,"column":0},"end":{"line":133,"column":14}},"133":{"start":{"line":134,"column":0},"end":{"line":134,"column":5}},"134":{"start":{"line":135,"column":0},"end":{"line":135,"column":0}},"135":{"start":{"line":136,"column":0},"end":{"line":136,"column":37}},"136":{"start":{"line":137,"column":0},"end":{"line":137,"column":0}},"137":{"start":{"line":138,"column":0},"end":{"line":138,"column":32}},"138":{"start":{"line":139,"column":0},"end":{"line":139,"column":3}},"139":{"start":{"line":140,"column":0},"end":{"line":140,"column":0}},"140":{"start":{"line":141,"column":0},"end":{"line":141,"column":71}},"141":{"start":{"line":142,"column":0},"end":{"line":142,"column":37}},"142":{"start":{"line":143,"column":0},"end":{"line":143,"column":30}},"143":{"start":{"line":144,"column":0},"end":{"line":144,"column":5}},"144":{"start":{"line":145,"column":0},"end":{"line":145,"column":93}},"145":{"start":{"line":146,"column":0},"end":{"line":146,"column":26}},"146":{"start":{"line":147,"column":0},"end":{"line":147,"column":58}},"147":{"start":{"line":148,"column":0},"end":{"line":148,"column":5}},"148":{"start":{"line":149,"column":0},"end":{"line":149,"column":0}},"149":{"start":{"line":150,"column":0},"end":{"line":150,"column":69}},"150":{"start":{"line":151,"column":0},"end":{"line":151,"column":70}},"151":{"start":{"line":152,"column":0},"end":{"line":152,"column":13}},"152":{"start":{"line":153,"column":0},"end":{"line":153,"column":12}},"153":{"start":{"line":154,"column":0},"end":{"line":154,"column":8}},"154":{"start":{"line":155,"column":0},"end":{"line":155,"column":0}},"155":{"start":{"line":156,"column":0},"end":{"line":156,"column":33}},"156":{"start":{"line":157,"column":0},"end":{"line":157,"column":3}},"157":{"start":{"line":158,"column":0},"end":{"line":158,"column":0}},"158":{"start":{"line":159,"column":0},"end":{"line":159,"column":76}},"159":{"start":{"line":160,"column":0},"end":{"line":160,"column":42}},"160":{"start":{"line":161,"column":0},"end":{"line":161,"column":66}},"161":{"start":{"line":162,"column":0},"end":{"line":162,"column":48}},"162":{"start":{"line":163,"column":0},"end":{"line":163,"column":5}},"163":{"start":{"line":164,"column":0},"end":{"line":164,"column":3}},"164":{"start":{"line":165,"column":0},"end":{"line":165,"column":0}},"165":{"start":{"line":166,"column":0},"end":{"line":166,"column":76}},"166":{"start":{"line":167,"column":0},"end":{"line":167,"column":79}},"167":{"start":{"line":168,"column":0},"end":{"line":168,"column":86}},"168":{"start":{"line":169,"column":0},"end":{"line":169,"column":3}},"169":{"start":{"line":170,"column":0},"end":{"line":170,"column":0}},"170":{"start":{"line":171,"column":0},"end":{"line":171,"column":90}},"171":{"start":{"line":172,"column":0},"end":{"line":172,"column":79}},"172":{"start":{"line":173,"column":0},"end":{"line":173,"column":81}},"173":{"start":{"line":174,"column":0},"end":{"line":174,"column":0}},"174":{"start":{"line":175,"column":0},"end":{"line":175,"column":55}},"175":{"start":{"line":176,"column":0},"end":{"line":176,"column":66}},"176":{"start":{"line":177,"column":0},"end":{"line":177,"column":5}},"177":{"start":{"line":178,"column":0},"end":{"line":178,"column":0}},"178":{"start":{"line":179,"column":0},"end":{"line":179,"column":26}},"179":{"start":{"line":180,"column":0},"end":{"line":180,"column":55}},"180":{"start":{"line":181,"column":0},"end":{"line":181,"column":54}},"181":{"start":{"line":182,"column":0},"end":{"line":182,"column":5}},"182":{"start":{"line":183,"column":0},"end":{"line":183,"column":0}},"183":{"start":{"line":184,"column":0},"end":{"line":184,"column":82}},"184":{"start":{"line":185,"column":0},"end":{"line":185,"column":42}},"185":{"start":{"line":186,"column":0},"end":{"line":186,"column":85}},"186":{"start":{"line":187,"column":0},"end":{"line":187,"column":0}},"187":{"start":{"line":188,"column":0},"end":{"line":188,"column":102}},"188":{"start":{"line":189,"column":0},"end":{"line":189,"column":0}},"189":{"start":{"line":190,"column":0},"end":{"line":190,"column":118}},"190":{"start":{"line":191,"column":0},"end":{"line":191,"column":0}},"191":{"start":{"line":192,"column":0},"end":{"line":192,"column":41}},"192":{"start":{"line":193,"column":0},"end":{"line":193,"column":28}},"193":{"start":{"line":194,"column":0},"end":{"line":194,"column":47}},"194":{"start":{"line":195,"column":0},"end":{"line":195,"column":41}},"195":{"start":{"line":196,"column":0},"end":{"line":196,"column":26}},"196":{"start":{"line":197,"column":0},"end":{"line":197,"column":34}},"197":{"start":{"line":198,"column":0},"end":{"line":198,"column":9}},"198":{"start":{"line":199,"column":0},"end":{"line":199,"column":8}},"199":{"start":{"line":200,"column":0},"end":{"line":200,"column":5}},"200":{"start":{"line":201,"column":0},"end":{"line":201,"column":0}},"201":{"start":{"line":202,"column":0},"end":{"line":202,"column":25}},"202":{"start":{"line":203,"column":0},"end":{"line":203,"column":33}},"203":{"start":{"line":204,"column":0},"end":{"line":204,"column":5}},"204":{"start":{"line":205,"column":0},"end":{"line":205,"column":0}},"205":{"start":{"line":206,"column":0},"end":{"line":206,"column":31}},"206":{"start":{"line":207,"column":0},"end":{"line":207,"column":96}},"207":{"start":{"line":208,"column":0},"end":{"line":208,"column":87}},"208":{"start":{"line":209,"column":0},"end":{"line":209,"column":32}},"209":{"start":{"line":210,"column":0},"end":{"line":210,"column":40}},"210":{"start":{"line":211,"column":0},"end":{"line":211,"column":106}},"211":{"start":{"line":212,"column":0},"end":{"line":212,"column":14}},"212":{"start":{"line":213,"column":0},"end":{"line":213,"column":108}},"213":{"start":{"line":214,"column":0},"end":{"line":214,"column":7}},"214":{"start":{"line":215,"column":0},"end":{"line":215,"column":12}},"215":{"start":{"line":216,"column":0},"end":{"line":216,"column":107}},"216":{"start":{"line":217,"column":0},"end":{"line":217,"column":49}},"217":{"start":{"line":218,"column":0},"end":{"line":218,"column":45}},"218":{"start":{"line":219,"column":0},"end":{"line":219,"column":107}},"219":{"start":{"line":220,"column":0},"end":{"line":220,"column":7}},"220":{"start":{"line":221,"column":0},"end":{"line":221,"column":5}},"221":{"start":{"line":222,"column":0},"end":{"line":222,"column":0}},"222":{"start":{"line":223,"column":0},"end":{"line":223,"column":72}},"223":{"start":{"line":224,"column":0},"end":{"line":224,"column":77}},"224":{"start":{"line":225,"column":0},"end":{"line":225,"column":5}},"225":{"start":{"line":226,"column":0},"end":{"line":226,"column":0}},"226":{"start":{"line":227,"column":0},"end":{"line":227,"column":50}},"227":{"start":{"line":228,"column":0},"end":{"line":228,"column":3}},"228":{"start":{"line":229,"column":0},"end":{"line":229,"column":0}},"229":{"start":{"line":230,"column":0},"end":{"line":230,"column":45}},"230":{"start":{"line":231,"column":0},"end":{"line":231,"column":51}},"231":{"start":{"line":232,"column":0},"end":{"line":232,"column":0}},"232":{"start":{"line":233,"column":0},"end":{"line":233,"column":46}},"233":{"start":{"line":234,"column":0},"end":{"line":234,"column":87}},"234":{"start":{"line":235,"column":0},"end":{"line":235,"column":87}},"235":{"start":{"line":236,"column":0},"end":{"line":236,"column":3}},"236":{"start":{"line":237,"column":0},"end":{"line":237,"column":0}},"237":{"start":{"line":238,"column":0},"end":{"line":238,"column":75}},"238":{"start":{"line":239,"column":0},"end":{"line":239,"column":60}},"239":{"start":{"line":240,"column":0},"end":{"line":240,"column":0}},"240":{"start":{"line":241,"column":0},"end":{"line":241,"column":84}},"241":{"start":{"line":242,"column":0},"end":{"line":242,"column":35}},"242":{"start":{"line":243,"column":0},"end":{"line":243,"column":70}},"243":{"start":{"line":244,"column":0},"end":{"line":244,"column":5}},"244":{"start":{"line":245,"column":0},"end":{"line":245,"column":0}},"245":{"start":{"line":246,"column":0},"end":{"line":246,"column":35}},"246":{"start":{"line":247,"column":0},"end":{"line":247,"column":102}},"247":{"start":{"line":248,"column":0},"end":{"line":248,"column":5}},"248":{"start":{"line":249,"column":0},"end":{"line":249,"column":0}},"249":{"start":{"line":250,"column":0},"end":{"line":250,"column":53}},"250":{"start":{"line":251,"column":0},"end":{"line":251,"column":54}},"251":{"start":{"line":252,"column":0},"end":{"line":252,"column":0}},"252":{"start":{"line":253,"column":0},"end":{"line":253,"column":88}},"253":{"start":{"line":254,"column":0},"end":{"line":254,"column":26}},"254":{"start":{"line":255,"column":0},"end":{"line":255,"column":99}},"255":{"start":{"line":256,"column":0},"end":{"line":256,"column":6}},"256":{"start":{"line":257,"column":0},"end":{"line":257,"column":0}},"257":{"start":{"line":258,"column":0},"end":{"line":258,"column":32}},"258":{"start":{"line":259,"column":0},"end":{"line":259,"column":29}},"259":{"start":{"line":260,"column":0},"end":{"line":260,"column":104}},"260":{"start":{"line":261,"column":0},"end":{"line":261,"column":8}},"261":{"start":{"line":262,"column":0},"end":{"line":262,"column":5}},"262":{"start":{"line":263,"column":0},"end":{"line":263,"column":0}},"263":{"start":{"line":264,"column":0},"end":{"line":264,"column":50}},"264":{"start":{"line":265,"column":0},"end":{"line":265,"column":3}},"265":{"start":{"line":266,"column":0},"end":{"line":266,"column":0}},"266":{"start":{"line":267,"column":0},"end":{"line":267,"column":73}},"267":{"start":{"line":268,"column":0},"end":{"line":268,"column":52}},"268":{"start":{"line":269,"column":0},"end":{"line":269,"column":51}},"269":{"start":{"line":270,"column":0},"end":{"line":270,"column":94}},"270":{"start":{"line":271,"column":0},"end":{"line":271,"column":68}},"271":{"start":{"line":272,"column":0},"end":{"line":272,"column":3}},"272":{"start":{"line":273,"column":0},"end":{"line":273,"column":0}},"273":{"start":{"line":274,"column":0},"end":{"line":274,"column":74}},"274":{"start":{"line":275,"column":0},"end":{"line":275,"column":60}},"275":{"start":{"line":276,"column":0},"end":{"line":276,"column":106}},"276":{"start":{"line":277,"column":0},"end":{"line":277,"column":0}},"277":{"start":{"line":278,"column":0},"end":{"line":278,"column":26}},"278":{"start":{"line":279,"column":0},"end":{"line":279,"column":62}},"279":{"start":{"line":280,"column":0},"end":{"line":280,"column":61}},"280":{"start":{"line":281,"column":0},"end":{"line":281,"column":5}},"281":{"start":{"line":282,"column":0},"end":{"line":282,"column":0}},"282":{"start":{"line":283,"column":0},"end":{"line":283,"column":85}},"283":{"start":{"line":284,"column":0},"end":{"line":284,"column":0}},"284":{"start":{"line":285,"column":0},"end":{"line":285,"column":106}},"285":{"start":{"line":286,"column":0},"end":{"line":286,"column":3}},"286":{"start":{"line":287,"column":0},"end":{"line":287,"column":0}},"287":{"start":{"line":288,"column":0},"end":{"line":288,"column":72}},"288":{"start":{"line":289,"column":0},"end":{"line":289,"column":82}},"289":{"start":{"line":290,"column":0},"end":{"line":290,"column":87}},"290":{"start":{"line":291,"column":0},"end":{"line":291,"column":3}},"291":{"start":{"line":292,"column":0},"end":{"line":292,"column":0}},"292":{"start":{"line":293,"column":0},"end":{"line":293,"column":56}},"293":{"start":{"line":294,"column":0},"end":{"line":294,"column":54}},"294":{"start":{"line":295,"column":0},"end":{"line":295,"column":59}},"295":{"start":{"line":296,"column":0},"end":{"line":296,"column":26}},"296":{"start":{"line":297,"column":0},"end":{"line":297,"column":85}},"297":{"start":{"line":298,"column":0},"end":{"line":298,"column":12}},"298":{"start":{"line":299,"column":0},"end":{"line":299,"column":30}},"299":{"start":{"line":300,"column":0},"end":{"line":300,"column":27}},"300":{"start":{"line":301,"column":0},"end":{"line":301,"column":75}},"301":{"start":{"line":302,"column":0},"end":{"line":302,"column":89}},"302":{"start":{"line":303,"column":0},"end":{"line":303,"column":87}},"303":{"start":{"line":304,"column":0},"end":{"line":304,"column":96}},"304":{"start":{"line":305,"column":0},"end":{"line":305,"column":69}},"305":{"start":{"line":306,"column":0},"end":{"line":306,"column":53}},"306":{"start":{"line":307,"column":0},"end":{"line":307,"column":120}},"307":{"start":{"line":308,"column":0},"end":{"line":308,"column":11}},"308":{"start":{"line":309,"column":0},"end":{"line":309,"column":16}},"309":{"start":{"line":310,"column":0},"end":{"line":310,"column":9}},"310":{"start":{"line":311,"column":0},"end":{"line":311,"column":24}},"311":{"start":{"line":312,"column":0},"end":{"line":312,"column":50}},"312":{"start":{"line":313,"column":0},"end":{"line":313,"column":44}},"313":{"start":{"line":314,"column":0},"end":{"line":314,"column":13}},"314":{"start":{"line":315,"column":0},"end":{"line":315,"column":96}},"315":{"start":{"line":316,"column":0},"end":{"line":316,"column":69}},"316":{"start":{"line":317,"column":0},"end":{"line":317,"column":45}},"317":{"start":{"line":318,"column":0},"end":{"line":318,"column":55}},"318":{"start":{"line":319,"column":0},"end":{"line":319,"column":13}},"319":{"start":{"line":320,"column":0},"end":{"line":320,"column":33}},"320":{"start":{"line":321,"column":0},"end":{"line":321,"column":105}},"321":{"start":{"line":322,"column":0},"end":{"line":322,"column":107}},"322":{"start":{"line":323,"column":0},"end":{"line":323,"column":12}},"323":{"start":{"line":324,"column":0},"end":{"line":324,"column":16}},"324":{"start":{"line":325,"column":0},"end":{"line":325,"column":9}},"325":{"start":{"line":326,"column":0},"end":{"line":326,"column":25}},"326":{"start":{"line":327,"column":0},"end":{"line":327,"column":51}},"327":{"start":{"line":328,"column":0},"end":{"line":328,"column":44}},"328":{"start":{"line":329,"column":0},"end":{"line":329,"column":13}},"329":{"start":{"line":330,"column":0},"end":{"line":330,"column":96}},"330":{"start":{"line":331,"column":0},"end":{"line":331,"column":69}},"331":{"start":{"line":332,"column":0},"end":{"line":332,"column":45}},"332":{"start":{"line":333,"column":0},"end":{"line":333,"column":49}},"333":{"start":{"line":334,"column":0},"end":{"line":334,"column":13}},"334":{"start":{"line":335,"column":0},"end":{"line":335,"column":33}},"335":{"start":{"line":336,"column":0},"end":{"line":336,"column":104}},"336":{"start":{"line":337,"column":0},"end":{"line":337,"column":12}},"337":{"start":{"line":338,"column":0},"end":{"line":338,"column":16}},"338":{"start":{"line":339,"column":0},"end":{"line":339,"column":9}},"339":{"start":{"line":340,"column":0},"end":{"line":340,"column":16}},"340":{"start":{"line":341,"column":0},"end":{"line":341,"column":60}},"341":{"start":{"line":342,"column":0},"end":{"line":342,"column":7}},"342":{"start":{"line":343,"column":0},"end":{"line":343,"column":63}},"343":{"start":{"line":344,"column":0},"end":{"line":344,"column":51}},"344":{"start":{"line":345,"column":0},"end":{"line":345,"column":23}},"345":{"start":{"line":346,"column":0},"end":{"line":346,"column":8}},"346":{"start":{"line":347,"column":0},"end":{"line":347,"column":26}},"347":{"start":{"line":348,"column":0},"end":{"line":348,"column":45}},"348":{"start":{"line":349,"column":0},"end":{"line":349,"column":7}},"349":{"start":{"line":350,"column":0},"end":{"line":350,"column":5}},"350":{"start":{"line":351,"column":0},"end":{"line":351,"column":0}},"351":{"start":{"line":352,"column":0},"end":{"line":352,"column":41}},"352":{"start":{"line":353,"column":0},"end":{"line":353,"column":3}},"353":{"start":{"line":354,"column":0},"end":{"line":354,"column":0}},"354":{"start":{"line":355,"column":0},"end":{"line":355,"column":39}},"355":{"start":{"line":356,"column":0},"end":{"line":356,"column":53}},"356":{"start":{"line":357,"column":0},"end":{"line":357,"column":47}},"357":{"start":{"line":358,"column":0},"end":{"line":358,"column":55}},"358":{"start":{"line":359,"column":0},"end":{"line":359,"column":20}},"359":{"start":{"line":360,"column":0},"end":{"line":360,"column":86}},"360":{"start":{"line":361,"column":0},"end":{"line":361,"column":36}},"361":{"start":{"line":362,"column":0},"end":{"line":362,"column":7}},"362":{"start":{"line":363,"column":0},"end":{"line":363,"column":3}},"363":{"start":{"line":364,"column":0},"end":{"line":364,"column":0}},"364":{"start":{"line":365,"column":0},"end":{"line":365,"column":54}},"365":{"start":{"line":366,"column":0},"end":{"line":366,"column":40}},"366":{"start":{"line":367,"column":0},"end":{"line":367,"column":13}},"367":{"start":{"line":368,"column":0},"end":{"line":368,"column":5}},"368":{"start":{"line":369,"column":0},"end":{"line":369,"column":54}},"369":{"start":{"line":370,"column":0},"end":{"line":370,"column":84}},"370":{"start":{"line":371,"column":0},"end":{"line":371,"column":0}},"371":{"start":{"line":372,"column":0},"end":{"line":372,"column":101}},"372":{"start":{"line":373,"column":0},"end":{"line":373,"column":3}},"373":{"start":{"line":374,"column":0},"end":{"line":374,"column":0}},"374":{"start":{"line":375,"column":0},"end":{"line":375,"column":41}},"375":{"start":{"line":376,"column":0},"end":{"line":376,"column":33}},"376":{"start":{"line":377,"column":0},"end":{"line":377,"column":0}},"377":{"start":{"line":378,"column":0},"end":{"line":378,"column":56}},"378":{"start":{"line":379,"column":0},"end":{"line":379,"column":118}},"379":{"start":{"line":380,"column":0},"end":{"line":380,"column":94}},"380":{"start":{"line":381,"column":0},"end":{"line":381,"column":104}},"381":{"start":{"line":382,"column":0},"end":{"line":382,"column":64}},"382":{"start":{"line":383,"column":0},"end":{"line":383,"column":59}},"383":{"start":{"line":384,"column":0},"end":{"line":384,"column":98}},"384":{"start":{"line":385,"column":0},"end":{"line":385,"column":0}},"385":{"start":{"line":386,"column":0},"end":{"line":386,"column":35}},"386":{"start":{"line":387,"column":0},"end":{"line":387,"column":0}},"387":{"start":{"line":388,"column":0},"end":{"line":388,"column":61}},"388":{"start":{"line":389,"column":0},"end":{"line":389,"column":0}},"389":{"start":{"line":390,"column":0},"end":{"line":390,"column":30}},"390":{"start":{"line":391,"column":0},"end":{"line":391,"column":36}},"391":{"start":{"line":392,"column":0},"end":{"line":392,"column":70}},"392":{"start":{"line":393,"column":0},"end":{"line":393,"column":52}},"393":{"start":{"line":394,"column":0},"end":{"line":394,"column":26}},"394":{"start":{"line":395,"column":0},"end":{"line":395,"column":102}},"395":{"start":{"line":396,"column":0},"end":{"line":396,"column":17}},"396":{"start":{"line":397,"column":0},"end":{"line":397,"column":105}},"397":{"start":{"line":398,"column":0},"end":{"line":398,"column":12}},"398":{"start":{"line":399,"column":0},"end":{"line":399,"column":9}},"399":{"start":{"line":400,"column":0},"end":{"line":400,"column":98}},"400":{"start":{"line":401,"column":0},"end":{"line":401,"column":7}},"401":{"start":{"line":402,"column":0},"end":{"line":402,"column":7}},"402":{"start":{"line":403,"column":0},"end":{"line":403,"column":0}},"403":{"start":{"line":404,"column":0},"end":{"line":404,"column":16}},"404":{"start":{"line":405,"column":0},"end":{"line":405,"column":54}},"405":{"start":{"line":406,"column":0},"end":{"line":406,"column":96}},"406":{"start":{"line":407,"column":0},"end":{"line":407,"column":75}},"407":{"start":{"line":408,"column":0},"end":{"line":408,"column":5}},"408":{"start":{"line":409,"column":0},"end":{"line":409,"column":0}},"409":{"start":{"line":410,"column":0},"end":{"line":410,"column":47}},"410":{"start":{"line":411,"column":0},"end":{"line":411,"column":18}},"411":{"start":{"line":412,"column":0},"end":{"line":412,"column":131}},"412":{"start":{"line":413,"column":0},"end":{"line":413,"column":8}},"413":{"start":{"line":414,"column":0},"end":{"line":414,"column":12}},"414":{"start":{"line":415,"column":0},"end":{"line":415,"column":44}},"415":{"start":{"line":416,"column":0},"end":{"line":416,"column":83}},"416":{"start":{"line":417,"column":0},"end":{"line":417,"column":8}},"417":{"start":{"line":418,"column":0},"end":{"line":418,"column":0}},"418":{"start":{"line":419,"column":0},"end":{"line":419,"column":65}},"419":{"start":{"line":420,"column":0},"end":{"line":420,"column":5}},"420":{"start":{"line":421,"column":0},"end":{"line":421,"column":41}},"421":{"start":{"line":422,"column":0},"end":{"line":422,"column":40}},"422":{"start":{"line":423,"column":0},"end":{"line":423,"column":27}},"423":{"start":{"line":424,"column":0},"end":{"line":424,"column":17}},"424":{"start":{"line":425,"column":0},"end":{"line":425,"column":19}},"425":{"start":{"line":426,"column":0},"end":{"line":426,"column":7}},"426":{"start":{"line":427,"column":0},"end":{"line":427,"column":3}},"427":{"start":{"line":428,"column":0},"end":{"line":428,"column":0}},"428":{"start":{"line":429,"column":0},"end":{"line":429,"column":39}},"429":{"start":{"line":430,"column":0},"end":{"line":430,"column":59}},"430":{"start":{"line":431,"column":0},"end":{"line":431,"column":98}},"431":{"start":{"line":432,"column":0},"end":{"line":432,"column":0}},"432":{"start":{"line":433,"column":0},"end":{"line":433,"column":66}},"433":{"start":{"line":434,"column":0},"end":{"line":434,"column":43}},"434":{"start":{"line":435,"column":0},"end":{"line":435,"column":83}},"435":{"start":{"line":436,"column":0},"end":{"line":436,"column":42}},"436":{"start":{"line":437,"column":0},"end":{"line":437,"column":7}},"437":{"start":{"line":438,"column":0},"end":{"line":438,"column":7}},"438":{"start":{"line":439,"column":0},"end":{"line":439,"column":3}},"439":{"start":{"line":440,"column":0},"end":{"line":440,"column":0}},"440":{"start":{"line":441,"column":0},"end":{"line":441,"column":50}},"441":{"start":{"line":442,"column":0},"end":{"line":442,"column":80}},"442":{"start":{"line":443,"column":0},"end":{"line":443,"column":0}},"443":{"start":{"line":444,"column":0},"end":{"line":444,"column":47}},"444":{"start":{"line":445,"column":0},"end":{"line":445,"column":0}},"445":{"start":{"line":446,"column":0},"end":{"line":446,"column":21}},"446":{"start":{"line":447,"column":0},"end":{"line":447,"column":115}},"447":{"start":{"line":448,"column":0},"end":{"line":448,"column":68}},"448":{"start":{"line":449,"column":0},"end":{"line":449,"column":66}},"449":{"start":{"line":450,"column":0},"end":{"line":450,"column":67}},"450":{"start":{"line":451,"column":0},"end":{"line":451,"column":68}},"451":{"start":{"line":452,"column":0},"end":{"line":452,"column":6}},"452":{"start":{"line":453,"column":0},"end":{"line":453,"column":0}},"453":{"start":{"line":454,"column":0},"end":{"line":454,"column":38}},"454":{"start":{"line":455,"column":0},"end":{"line":455,"column":3}},"455":{"start":{"line":456,"column":0},"end":{"line":456,"column":0}},"456":{"start":{"line":457,"column":0},"end":{"line":457,"column":48}},"457":{"start":{"line":458,"column":0},"end":{"line":458,"column":47}},"458":{"start":{"line":459,"column":0},"end":{"line":459,"column":0}},"459":{"start":{"line":460,"column":0},"end":{"line":460,"column":21}},"460":{"start":{"line":461,"column":0},"end":{"line":461,"column":65}},"461":{"start":{"line":462,"column":0},"end":{"line":462,"column":64}},"462":{"start":{"line":463,"column":0},"end":{"line":463,"column":65}},"463":{"start":{"line":464,"column":0},"end":{"line":464,"column":6}},"464":{"start":{"line":465,"column":0},"end":{"line":465,"column":0}},"465":{"start":{"line":466,"column":0},"end":{"line":466,"column":38}},"466":{"start":{"line":467,"column":0},"end":{"line":467,"column":3}},"467":{"start":{"line":468,"column":0},"end":{"line":468,"column":0}},"468":{"start":{"line":469,"column":0},"end":{"line":469,"column":70}},"469":{"start":{"line":470,"column":0},"end":{"line":470,"column":110}},"470":{"start":{"line":471,"column":0},"end":{"line":471,"column":64}},"471":{"start":{"line":472,"column":0},"end":{"line":472,"column":106}},"472":{"start":{"line":473,"column":0},"end":{"line":473,"column":116}},"473":{"start":{"line":474,"column":0},"end":{"line":474,"column":47}},"474":{"start":{"line":475,"column":0},"end":{"line":475,"column":13}},"475":{"start":{"line":476,"column":0},"end":{"line":476,"column":5}},"476":{"start":{"line":477,"column":0},"end":{"line":477,"column":35}},"477":{"start":{"line":478,"column":0},"end":{"line":478,"column":74}},"478":{"start":{"line":479,"column":0},"end":{"line":479,"column":84}},"479":{"start":{"line":480,"column":0},"end":{"line":480,"column":57}},"480":{"start":{"line":481,"column":0},"end":{"line":481,"column":112}},"481":{"start":{"line":482,"column":0},"end":{"line":482,"column":19}},"482":{"start":{"line":483,"column":0},"end":{"line":483,"column":42}},"483":{"start":{"line":484,"column":0},"end":{"line":484,"column":54}},"484":{"start":{"line":485,"column":0},"end":{"line":485,"column":59}},"485":{"start":{"line":486,"column":0},"end":{"line":486,"column":46}},"486":{"start":{"line":487,"column":0},"end":{"line":487,"column":9}},"487":{"start":{"line":488,"column":0},"end":{"line":488,"column":56}},"488":{"start":{"line":489,"column":0},"end":{"line":489,"column":26}},"489":{"start":{"line":490,"column":0},"end":{"line":490,"column":7}},"490":{"start":{"line":491,"column":0},"end":{"line":491,"column":7}},"491":{"start":{"line":492,"column":0},"end":{"line":492,"column":3}},"492":{"start":{"line":493,"column":0},"end":{"line":493,"column":0}},"493":{"start":{"line":494,"column":0},"end":{"line":494,"column":124}},"494":{"start":{"line":495,"column":0},"end":{"line":495,"column":89}},"495":{"start":{"line":496,"column":0},"end":{"line":496,"column":45}},"496":{"start":{"line":497,"column":0},"end":{"line":497,"column":47}},"497":{"start":{"line":498,"column":0},"end":{"line":498,"column":13}},"498":{"start":{"line":499,"column":0},"end":{"line":499,"column":5}},"499":{"start":{"line":500,"column":0},"end":{"line":500,"column":63}},"500":{"start":{"line":501,"column":0},"end":{"line":501,"column":36}},"501":{"start":{"line":502,"column":0},"end":{"line":502,"column":54}},"502":{"start":{"line":503,"column":0},"end":{"line":503,"column":52}},"503":{"start":{"line":504,"column":0},"end":{"line":504,"column":78}},"504":{"start":{"line":505,"column":0},"end":{"line":505,"column":7}},"505":{"start":{"line":506,"column":0},"end":{"line":506,"column":5}},"506":{"start":{"line":507,"column":0},"end":{"line":507,"column":3}},"507":{"start":{"line":508,"column":0},"end":{"line":508,"column":1}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"38":1,"39":1,"40":1,"41":1,"42":1,"43":1,"44":1,"45":1,"46":1,"47":1,"48":1,"49":1,"50":1,"51":1,"52":1,"53":33,"54":33,"55":33,"56":33,"57":33,"58":33,"59":33,"60":33,"61":33,"62":33,"63":33,"64":33,"65":33,"66":0,"67":0,"68":0,"69":33,"70":33,"71":33,"72":33,"73":2,"74":2,"75":33,"76":1,"77":1,"78":33,"79":33,"80":33,"81":33,"82":33,"83":33,"84":33,"85":33,"86":33,"87":33,"88":33,"89":33,"90":33,"91":33,"92":33,"93":33,"94":33,"95":33,"96":33,"97":33,"98":33,"99":33,"100":33,"101":33,"102":1,"103":1,"104":32,"105":32,"106":32,"107":19,"108":19,"109":19,"110":32,"111":32,"112":32,"113":594,"114":172,"115":594,"116":422,"117":422,"118":594,"119":32,"120":32,"121":251,"122":59,"123":251,"124":192,"125":192,"126":251,"127":32,"128":32,"129":32,"130":0,"131":0,"132":0,"133":0,"134":32,"135":32,"136":32,"137":32,"138":32,"139":1,"140":1,"141":130,"142":130,"143":130,"144":130,"145":130,"146":75,"147":75,"148":130,"149":130,"150":138,"151":138,"152":138,"153":130,"154":130,"155":130,"156":130,"157":1,"158":1,"159":317,"160":317,"161":115,"162":115,"163":317,"164":1,"165":1,"166":28,"167":28,"168":28,"169":1,"170":1,"171":102,"172":102,"173":102,"174":102,"175":0,"176":0,"177":102,"178":102,"179":59,"180":59,"181":59,"182":102,"183":102,"184":102,"185":102,"186":102,"187":102,"188":102,"189":102,"190":102,"191":102,"192":102,"193":102,"194":102,"195":102,"196":102,"197":102,"198":102,"199":102,"200":102,"201":102,"202":0,"203":0,"204":102,"205":102,"206":3,"207":3,"208":3,"209":3,"210":3,"211":3,"212":0,"213":0,"214":102,"215":99,"216":99,"217":99,"218":99,"219":99,"220":99,"221":102,"222":102,"223":99,"224":99,"225":102,"226":102,"227":102,"228":1,"229":1,"230":8,"231":8,"232":8,"233":8,"234":8,"235":8,"236":1,"237":1,"238":17,"239":17,"240":17,"241":17,"242":0,"243":0,"244":17,"245":17,"246":1,"247":1,"248":16,"249":16,"250":16,"251":16,"252":16,"253":16,"254":16,"255":16,"256":16,"257":17,"258":2,"259":2,"260":2,"261":2,"262":16,"263":16,"264":16,"265":1,"266":1,"267":11,"268":11,"269":11,"270":11,"271":11,"272":1,"273":1,"274":4,"275":4,"276":4,"277":4,"278":2,"279":2,"280":2,"281":4,"282":4,"283":4,"284":4,"285":4,"286":1,"287":1,"288":7,"289":7,"290":7,"291":1,"292":1,"293":188,"294":188,"295":188,"296":97,"297":188,"298":91,"299":91,"300":63,"301":63,"302":63,"303":63,"304":63,"305":63,"306":63,"307":63,"308":63,"309":63,"310":91,"311":0,"312":0,"313":0,"314":0,"315":0,"316":0,"317":0,"318":0,"319":0,"320":0,"321":0,"322":0,"323":0,"324":0,"325":91,"326":28,"327":28,"328":28,"329":28,"330":28,"331":28,"332":28,"333":28,"334":28,"335":28,"336":28,"337":28,"338":28,"339":91,"340":0,"341":91,"342":91,"343":91,"344":91,"345":91,"346":91,"347":63,"348":63,"349":91,"350":188,"351":188,"352":188,"353":1,"354":1,"355":19,"356":29,"357":29,"358":29,"359":29,"360":29,"361":19,"362":19,"363":1,"364":1,"365":13,"366":5,"367":5,"368":8,"369":8,"370":8,"371":8,"372":8,"373":1,"374":1,"375":4,"376":4,"377":4,"378":4,"379":4,"380":4,"381":4,"382":4,"383":4,"384":4,"385":4,"386":4,"387":4,"388":4,"389":4,"390":8,"391":0,"392":0,"393":0,"394":0,"395":0,"396":0,"397":0,"398":0,"399":0,"400":0,"401":4,"402":4,"403":4,"404":4,"405":4,"406":4,"407":4,"408":4,"409":4,"410":0,"411":0,"412":0,"413":4,"414":4,"415":4,"416":4,"417":4,"418":4,"419":4,"420":4,"421":4,"422":4,"423":4,"424":4,"425":4,"426":4,"427":1,"428":1,"429":1,"430":1,"431":1,"432":1,"433":2,"434":1,"435":1,"436":1,"437":1,"438":1,"439":1,"440":1,"441":0,"442":0,"443":0,"444":0,"445":0,"446":0,"447":0,"448":0,"449":0,"450":0,"451":0,"452":0,"453":0,"454":0,"455":1,"456":1,"457":0,"458":0,"459":0,"460":0,"461":0,"462":0,"463":0,"464":0,"465":0,"466":0,"467":1,"468":1,"469":1,"470":1,"471":1,"472":1,"473":102,"474":102,"475":102,"476":0,"477":0,"478":0,"479":0,"480":0,"481":0,"482":0,"483":0,"484":0,"485":0,"486":0,"487":0,"488":0,"489":0,"490":0,"491":0,"492":1,"493":1,"494":1,"495":1,"496":32,"497":32,"498":32,"499":0,"500":0,"501":0,"502":0,"503":0,"504":0,"505":0,"506":32,"507":1},"branchMap":{"0":{"type":"branch","line":53,"loc":{"start":{"line":53,"column":2},"end":{"line":76,"column":3}},"locations":[{"start":{"line":53,"column":2},"end":{"line":76,"column":3}}]},"1":{"type":"branch","line":66,"loc":{"start":{"line":66,"column":28},"end":{"line":66,"column":63}},"locations":[{"start":{"line":66,"column":28},"end":{"line":66,"column":63}}]},"2":{"type":"branch","line":66,"loc":{"start":{"line":66,"column":65},"end":{"line":69,"column":5}},"locations":[{"start":{"line":66,"column":65},"end":{"line":69,"column":5}}]},"3":{"type":"branch","line":73,"loc":{"start":{"line":73,"column":30},"end":{"line":75,"column":5}},"locations":[{"start":{"line":73,"column":30},"end":{"line":75,"column":5}}]},"4":{"type":"branch","line":78,"loc":{"start":{"line":78,"column":9},"end":{"line":102,"column":3}},"locations":[{"start":{"line":78,"column":9},"end":{"line":102,"column":3}}]},"5":{"type":"branch","line":104,"loc":{"start":{"line":104,"column":2},"end":{"line":139,"column":3}},"locations":[{"start":{"line":104,"column":2},"end":{"line":139,"column":3}}]},"6":{"type":"branch","line":105,"loc":{"start":{"line":105,"column":44},"end":{"line":105,"column":84}},"locations":[{"start":{"line":105,"column":44},"end":{"line":105,"column":84}}]},"7":{"type":"branch","line":107,"loc":{"start":{"line":107,"column":25},"end":{"line":110,"column":5}},"locations":[{"start":{"line":107,"column":25},"end":{"line":110,"column":5}}]},"8":{"type":"branch","line":113,"loc":{"start":{"line":113,"column":44},"end":{"line":119,"column":7}},"locations":[{"start":{"line":113,"column":44},"end":{"line":119,"column":7}}]},"9":{"type":"branch","line":114,"loc":{"start":{"line":114,"column":39},"end":{"line":116,"column":15}},"locations":[{"start":{"line":114,"column":39},"end":{"line":116,"column":15}}]},"10":{"type":"branch","line":116,"loc":{"start":{"line":116,"column":9},"end":{"line":118,"column":9}},"locations":[{"start":{"line":116,"column":9},"end":{"line":118,"column":9}}]},"11":{"type":"branch","line":121,"loc":{"start":{"line":121,"column":51},"end":{"line":127,"column":7}},"locations":[{"start":{"line":121,"column":51},"end":{"line":127,"column":7}}]},"12":{"type":"branch","line":122,"loc":{"start":{"line":122,"column":39},"end":{"line":124,"column":15}},"locations":[{"start":{"line":122,"column":39},"end":{"line":124,"column":15}}]},"13":{"type":"branch","line":124,"loc":{"start":{"line":124,"column":9},"end":{"line":126,"column":9}},"locations":[{"start":{"line":124,"column":9},"end":{"line":126,"column":9}}]},"14":{"type":"branch","line":130,"loc":{"start":{"line":130,"column":6},"end":{"line":134,"column":5}},"locations":[{"start":{"line":130,"column":6},"end":{"line":134,"column":5}}]},"15":{"type":"branch","line":141,"loc":{"start":{"line":141,"column":10},"end":{"line":157,"column":3}},"locations":[{"start":{"line":141,"column":10},"end":{"line":157,"column":3}}]},"16":{"type":"branch","line":146,"loc":{"start":{"line":146,"column":25},"end":{"line":148,"column":5}},"locations":[{"start":{"line":146,"column":25},"end":{"line":148,"column":5}}]},"17":{"type":"branch","line":150,"loc":{"start":{"line":150,"column":38},"end":{"line":154,"column":6}},"locations":[{"start":{"line":150,"column":38},"end":{"line":154,"column":6}}]},"18":{"type":"branch","line":151,"loc":{"start":{"line":151,"column":25},"end":{"line":151,"column":68}},"locations":[{"start":{"line":151,"column":25},"end":{"line":151,"column":68}}]},"19":{"type":"branch","line":159,"loc":{"start":{"line":159,"column":10},"end":{"line":164,"column":3}},"locations":[{"start":{"line":159,"column":10},"end":{"line":164,"column":3}}]},"20":{"type":"branch","line":161,"loc":{"start":{"line":161,"column":65},"end":{"line":163,"column":5}},"locations":[{"start":{"line":161,"column":65},"end":{"line":163,"column":5}}]},"21":{"type":"branch","line":161,"loc":{"start":{"line":161,"column":35},"end":{"line":161,"column":62}},"locations":[{"start":{"line":161,"column":35},"end":{"line":161,"column":62}}]},"22":{"type":"branch","line":166,"loc":{"start":{"line":166,"column":10},"end":{"line":169,"column":3}},"locations":[{"start":{"line":166,"column":10},"end":{"line":169,"column":3}}]},"23":{"type":"branch","line":171,"loc":{"start":{"line":171,"column":2},"end":{"line":228,"column":3}},"locations":[{"start":{"line":171,"column":2},"end":{"line":228,"column":3}}]},"24":{"type":"branch","line":175,"loc":{"start":{"line":175,"column":54},"end":{"line":177,"column":5}},"locations":[{"start":{"line":175,"column":54},"end":{"line":177,"column":5}}]},"25":{"type":"branch","line":179,"loc":{"start":{"line":179,"column":25},"end":{"line":182,"column":5}},"locations":[{"start":{"line":179,"column":25},"end":{"line":182,"column":5}}]},"26":{"type":"branch","line":202,"loc":{"start":{"line":202,"column":24},"end":{"line":204,"column":5}},"locations":[{"start":{"line":202,"column":24},"end":{"line":204,"column":5}}]},"27":{"type":"branch","line":206,"loc":{"start":{"line":206,"column":30},"end":{"line":215,"column":11}},"locations":[{"start":{"line":206,"column":30},"end":{"line":215,"column":11}}]},"28":{"type":"branch","line":212,"loc":{"start":{"line":212,"column":7},"end":{"line":214,"column":7}},"locations":[{"start":{"line":212,"column":7},"end":{"line":214,"column":7}}]},"29":{"type":"branch","line":215,"loc":{"start":{"line":215,"column":5},"end":{"line":221,"column":5}},"locations":[{"start":{"line":215,"column":5},"end":{"line":221,"column":5}}]},"30":{"type":"branch","line":223,"loc":{"start":{"line":223,"column":29},"end":{"line":223,"column":69}},"locations":[{"start":{"line":223,"column":29},"end":{"line":223,"column":69}}]},"31":{"type":"branch","line":223,"loc":{"start":{"line":223,"column":71},"end":{"line":225,"column":5}},"locations":[{"start":{"line":223,"column":71},"end":{"line":225,"column":5}}]},"32":{"type":"branch","line":173,"loc":{"start":{"line":173,"column":52},"end":{"line":173,"column":79}},"locations":[{"start":{"line":173,"column":52},"end":{"line":173,"column":79}}]},"33":{"type":"branch","line":230,"loc":{"start":{"line":230,"column":2},"end":{"line":236,"column":3}},"locations":[{"start":{"line":230,"column":2},"end":{"line":236,"column":3}}]},"34":{"type":"branch","line":238,"loc":{"start":{"line":238,"column":2},"end":{"line":265,"column":3}},"locations":[{"start":{"line":238,"column":2},"end":{"line":265,"column":3}}]},"35":{"type":"branch","line":242,"loc":{"start":{"line":242,"column":34},"end":{"line":244,"column":5}},"locations":[{"start":{"line":242,"column":34},"end":{"line":244,"column":5}}]},"36":{"type":"branch","line":246,"loc":{"start":{"line":246,"column":34},"end":{"line":248,"column":5}},"locations":[{"start":{"line":246,"column":34},"end":{"line":248,"column":5}}]},"37":{"type":"branch","line":249,"loc":{"start":{"line":249,"column":-1},"end":{"line":258,"column":31}},"locations":[{"start":{"line":249,"column":-1},"end":{"line":258,"column":31}}]},"38":{"type":"branch","line":258,"loc":{"start":{"line":258,"column":31},"end":{"line":262,"column":5}},"locations":[{"start":{"line":258,"column":31},"end":{"line":262,"column":5}}]},"39":{"type":"branch","line":263,"loc":{"start":{"line":263,"column":-1},"end":{"line":265,"column":3}},"locations":[{"start":{"line":263,"column":-1},"end":{"line":265,"column":3}}]},"40":{"type":"branch","line":267,"loc":{"start":{"line":267,"column":2},"end":{"line":272,"column":3}},"locations":[{"start":{"line":267,"column":2},"end":{"line":272,"column":3}}]},"41":{"type":"branch","line":274,"loc":{"start":{"line":274,"column":2},"end":{"line":286,"column":3}},"locations":[{"start":{"line":274,"column":2},"end":{"line":286,"column":3}}]},"42":{"type":"branch","line":278,"loc":{"start":{"line":278,"column":25},"end":{"line":281,"column":5}},"locations":[{"start":{"line":278,"column":25},"end":{"line":281,"column":5}}]},"43":{"type":"branch","line":276,"loc":{"start":{"line":276,"column":77},"end":{"line":276,"column":103}},"locations":[{"start":{"line":276,"column":77},"end":{"line":276,"column":103}}]},"44":{"type":"branch","line":288,"loc":{"start":{"line":288,"column":2},"end":{"line":291,"column":3}},"locations":[{"start":{"line":288,"column":2},"end":{"line":291,"column":3}}]},"45":{"type":"branch","line":293,"loc":{"start":{"line":293,"column":2},"end":{"line":353,"column":3}},"locations":[{"start":{"line":293,"column":2},"end":{"line":353,"column":3}}]},"46":{"type":"branch","line":296,"loc":{"start":{"line":296,"column":25},"end":{"line":298,"column":11}},"locations":[{"start":{"line":296,"column":25},"end":{"line":298,"column":11}}]},"47":{"type":"branch","line":298,"loc":{"start":{"line":298,"column":5},"end":{"line":350,"column":5}},"locations":[{"start":{"line":298,"column":5},"end":{"line":350,"column":5}}]},"48":{"type":"branch","line":300,"loc":{"start":{"line":300,"column":8},"end":{"line":310,"column":9}},"locations":[{"start":{"line":300,"column":8},"end":{"line":310,"column":9}}]},"49":{"type":"branch","line":305,"loc":{"start":{"line":305,"column":63},"end":{"line":305,"column":69}},"locations":[{"start":{"line":305,"column":63},"end":{"line":305,"column":69}}]},"50":{"type":"branch","line":311,"loc":{"start":{"line":311,"column":8},"end":{"line":325,"column":9}},"locations":[{"start":{"line":311,"column":8},"end":{"line":325,"column":9}}]},"51":{"type":"branch","line":326,"loc":{"start":{"line":326,"column":8},"end":{"line":339,"column":9}},"locations":[{"start":{"line":326,"column":8},"end":{"line":339,"column":9}}]},"52":{"type":"branch","line":331,"loc":{"start":{"line":331,"column":63},"end":{"line":331,"column":69}},"locations":[{"start":{"line":331,"column":63},"end":{"line":331,"column":69}}]},"53":{"type":"branch","line":340,"loc":{"start":{"line":340,"column":8},"end":{"line":341,"column":60}},"locations":[{"start":{"line":340,"column":8},"end":{"line":341,"column":60}}]},"54":{"type":"branch","line":347,"loc":{"start":{"line":347,"column":25},"end":{"line":349,"column":7}},"locations":[{"start":{"line":347,"column":25},"end":{"line":349,"column":7}}]},"55":{"type":"branch","line":355,"loc":{"start":{"line":355,"column":10},"end":{"line":363,"column":3}},"locations":[{"start":{"line":355,"column":10},"end":{"line":363,"column":3}}]},"56":{"type":"branch","line":356,"loc":{"start":{"line":356,"column":31},"end":{"line":362,"column":5}},"locations":[{"start":{"line":356,"column":31},"end":{"line":362,"column":5}}]},"57":{"type":"branch","line":358,"loc":{"start":{"line":358,"column":13},"end":{"line":358,"column":54}},"locations":[{"start":{"line":358,"column":13},"end":{"line":358,"column":54}}]},"58":{"type":"branch","line":365,"loc":{"start":{"line":365,"column":2},"end":{"line":373,"column":3}},"locations":[{"start":{"line":365,"column":2},"end":{"line":373,"column":3}}]},"59":{"type":"branch","line":366,"loc":{"start":{"line":366,"column":39},"end":{"line":368,"column":5}},"locations":[{"start":{"line":366,"column":39},"end":{"line":368,"column":5}}]},"60":{"type":"branch","line":369,"loc":{"start":{"line":369,"column":-1},"end":{"line":373,"column":3}},"locations":[{"start":{"line":369,"column":-1},"end":{"line":373,"column":3}}]},"61":{"type":"branch","line":375,"loc":{"start":{"line":375,"column":2},"end":{"line":427,"column":3}},"locations":[{"start":{"line":375,"column":2},"end":{"line":427,"column":3}}]},"62":{"type":"branch","line":410,"loc":{"start":{"line":410,"column":46},"end":{"line":414,"column":11}},"locations":[{"start":{"line":410,"column":46},"end":{"line":414,"column":11}}]},"63":{"type":"branch","line":416,"loc":{"start":{"line":416,"column":52},"end":{"line":416,"column":76}},"locations":[{"start":{"line":416,"column":52},"end":{"line":416,"column":76}}]},"64":{"type":"branch","line":390,"loc":{"start":{"line":390,"column":22},"end":{"line":402,"column":5}},"locations":[{"start":{"line":390,"column":22},"end":{"line":402,"column":5}}]},"65":{"type":"branch","line":391,"loc":{"start":{"line":391,"column":35},"end":{"line":401,"column":7}},"locations":[{"start":{"line":391,"column":35},"end":{"line":401,"column":7}}]},"66":{"type":"branch","line":406,"loc":{"start":{"line":406,"column":45},"end":{"line":406,"column":84}},"locations":[{"start":{"line":406,"column":45},"end":{"line":406,"column":84}}]},"67":{"type":"branch","line":429,"loc":{"start":{"line":429,"column":2},"end":{"line":439,"column":3}},"locations":[{"start":{"line":429,"column":2},"end":{"line":439,"column":3}}]},"68":{"type":"branch","line":433,"loc":{"start":{"line":433,"column":51},"end":{"line":438,"column":5}},"locations":[{"start":{"line":433,"column":51},"end":{"line":438,"column":5}}]},"69":{"type":"branch","line":434,"loc":{"start":{"line":434,"column":42},"end":{"line":437,"column":7}},"locations":[{"start":{"line":434,"column":42},"end":{"line":437,"column":7}}]},"70":{"type":"branch","line":473,"loc":{"start":{"line":473,"column":10},"end":{"line":492,"column":3}},"locations":[{"start":{"line":473,"column":10},"end":{"line":492,"column":3}}]},"71":{"type":"branch","line":477,"loc":{"start":{"line":477,"column":-1},"end":{"line":492,"column":3}},"locations":[{"start":{"line":477,"column":-1},"end":{"line":492,"column":3}}]},"72":{"type":"branch","line":496,"loc":{"start":{"line":496,"column":10},"end":{"line":507,"column":3}},"locations":[{"start":{"line":496,"column":10},"end":{"line":507,"column":3}}]},"73":{"type":"branch","line":500,"loc":{"start":{"line":500,"column":-1},"end":{"line":506,"column":5}},"locations":[{"start":{"line":500,"column":-1},"end":{"line":506,"column":5}}]}},"b":{"0":[33],"1":[2],"2":[0],"3":[2],"4":[33],"5":[32],"6":[12],"7":[19],"8":[594],"9":[172],"10":[422],"11":[251],"12":[59],"13":[192],"14":[0],"15":[130],"16":[75],"17":[138],"18":[140],"19":[317],"20":[115],"21":[1641],"22":[28],"23":[102],"24":[0],"25":[59],"26":[0],"27":[3],"28":[0],"29":[99],"30":[99],"31":[99],"32":[208],"33":[8],"34":[17],"35":[0],"36":[1],"37":[16],"38":[2],"39":[16],"40":[11],"41":[4],"42":[2],"43":[4],"44":[7],"45":[188],"46":[97],"47":[91],"48":[63],"49":[0],"50":[0],"51":[28],"52":[0],"53":[0],"54":[63],"55":[19],"56":[29],"57":[63],"58":[13],"59":[5],"60":[8],"61":[4],"62":[0],"63":[0],"64":[8],"65":[0],"66":[9],"67":[1],"68":[2],"69":[1],"70":[102],"71":[0],"72":[32],"73":[0]},"fnMap":{"0":{"name":"Migration","decl":{"start":{"line":53,"column":2},"end":{"line":76,"column":3}},"loc":{"start":{"line":53,"column":2},"end":{"line":76,"column":3}},"line":53},"1":{"name":"create","decl":{"start":{"line":78,"column":9},"end":{"line":102,"column":3}},"loc":{"start":{"line":78,"column":9},"end":{"line":102,"column":3}},"line":78},"2":{"name":"run","decl":{"start":{"line":104,"column":2},"end":{"line":139,"column":3}},"loc":{"start":{"line":104,"column":2},"end":{"line":139,"column":3}},"line":104},"3":{"name":"prepareModelAttributesAndIndexes","decl":{"start":{"line":141,"column":10},"end":{"line":157,"column":3}},"loc":{"start":{"line":141,"column":10},"end":{"line":157,"column":3}},"line":141},"4":{"name":"addModelToSequelizeCache","decl":{"start":{"line":159,"column":10},"end":{"line":164,"column":3}},"loc":{"start":{"line":159,"column":10},"end":{"line":164,"column":3}},"line":159},"5":{"name":"createSequelizeModel","decl":{"start":{"line":166,"column":10},"end":{"line":169,"column":3}},"loc":{"start":{"line":166,"column":10},"end":{"line":169,"column":3}},"line":166},"6":{"name":"createTable","decl":{"start":{"line":171,"column":2},"end":{"line":228,"column":3}},"loc":{"start":{"line":171,"column":2},"end":{"line":228,"column":3}},"line":171},"7":{"name":"dropTable","decl":{"start":{"line":230,"column":2},"end":{"line":236,"column":3}},"loc":{"start":{"line":230,"column":2},"end":{"line":236,"column":3}},"line":230},"8":{"name":"createColumn","decl":{"start":{"line":238,"column":2},"end":{"line":265,"column":3}},"loc":{"start":{"line":238,"column":2},"end":{"line":265,"column":3}},"line":238},"9":{"name":"dropColumn","decl":{"start":{"line":267,"column":2},"end":{"line":272,"column":3}},"loc":{"start":{"line":267,"column":2},"end":{"line":272,"column":3}},"line":267},"10":{"name":"createIndex","decl":{"start":{"line":274,"column":2},"end":{"line":286,"column":3}},"loc":{"start":{"line":274,"column":2},"end":{"line":286,"column":3}},"line":274},"11":{"name":"dropIndex","decl":{"start":{"line":288,"column":2},"end":{"line":291,"column":3}},"loc":{"start":{"line":288,"column":2},"end":{"line":291,"column":3}},"line":288},"12":{"name":"createRelation","decl":{"start":{"line":293,"column":2},"end":{"line":353,"column":3}},"loc":{"start":{"line":293,"column":2},"end":{"line":353,"column":3}},"line":293},"13":{"name":"addRelationComments","decl":{"start":{"line":355,"column":10},"end":{"line":363,"column":3}},"loc":{"start":{"line":355,"column":10},"end":{"line":363,"column":3}},"line":355},"14":{"name":"dropRelation","decl":{"start":{"line":365,"column":2},"end":{"line":373,"column":3}},"loc":{"start":{"line":365,"column":2},"end":{"line":373,"column":3}},"line":365},"15":{"name":"createEnum","decl":{"start":{"line":375,"column":2},"end":{"line":427,"column":3}},"loc":{"start":{"line":375,"column":2},"end":{"line":427,"column":3}},"line":375},"16":{"name":"dropEnum","decl":{"start":{"line":429,"column":2},"end":{"line":439,"column":3}},"loc":{"start":{"line":429,"column":2},"end":{"line":439,"column":3}},"line":429},"17":{"name":"createFullText","decl":{"start":{"line":441,"column":2},"end":{"line":455,"column":3}},"loc":{"start":{"line":441,"column":2},"end":{"line":455,"column":3}},"line":441},"18":{"name":"dropFullText","decl":{"start":{"line":457,"column":2},"end":{"line":467,"column":3}},"loc":{"start":{"line":457,"column":2},"end":{"line":467,"column":3}},"line":457},"19":{"name":"beforeHandleCockroachIndex","decl":{"start":{"line":473,"column":10},"end":{"line":492,"column":3}},"loc":{"start":{"line":473,"column":10},"end":{"line":492,"column":3}},"line":473},"20":{"name":"afterHandleCockroachIndex","decl":{"start":{"line":496,"column":10},"end":{"line":507,"column":3}},"loc":{"start":{"line":496,"column":10},"end":{"line":507,"column":3}},"line":496}},"f":{"0":33,"1":33,"2":32,"3":130,"4":317,"5":28,"6":102,"7":8,"8":17,"9":11,"10":4,"11":7,"12":188,"13":19,"14":13,"15":4,"16":1,"17":0,"18":0,"19":102,"20":32}},"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/db/sequelizeUtil.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/db/sequelizeUtil.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":28}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":33}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":96}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":8}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":11}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":12}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":17}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":30}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":12}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":8}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":22}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":28}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":42}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":0}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":161}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":61}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":69}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":63}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":1}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":0}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":62}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":47}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":1}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":0}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":55}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":150}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":88}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":61}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":36}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":3}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":22}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":64}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":29}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":3}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":0}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":46}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":45}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":36}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":19}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":5}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":99}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":5}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":0}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":47}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":0}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":21}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":21}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":3}},"51":{"start":{"line":52,"column":0},"end":{"line":52,"column":26}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":1}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":0}},"54":{"start":{"line":55,"column":0},"end":{"line":55,"column":102}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":34}},"56":{"start":{"line":57,"column":0},"end":{"line":57,"column":14}},"57":{"start":{"line":58,"column":0},"end":{"line":58,"column":3}},"58":{"start":{"line":59,"column":0},"end":{"line":59,"column":83}},"59":{"start":{"line":60,"column":0},"end":{"line":60,"column":95}},"60":{"start":{"line":61,"column":0},"end":{"line":61,"column":54}},"61":{"start":{"line":62,"column":0},"end":{"line":62,"column":69}},"62":{"start":{"line":63,"column":0},"end":{"line":63,"column":42}},"63":{"start":{"line":64,"column":0},"end":{"line":64,"column":31}},"64":{"start":{"line":65,"column":0},"end":{"line":65,"column":65}},"65":{"start":{"line":66,"column":0},"end":{"line":66,"column":3}},"66":{"start":{"line":67,"column":0},"end":{"line":67,"column":31}},"67":{"start":{"line":68,"column":0},"end":{"line":68,"column":65}},"68":{"start":{"line":69,"column":0},"end":{"line":69,"column":3}},"69":{"start":{"line":70,"column":0},"end":{"line":70,"column":28}},"70":{"start":{"line":71,"column":0},"end":{"line":71,"column":1}},"71":{"start":{"line":72,"column":0},"end":{"line":72,"column":0}},"72":{"start":{"line":73,"column":0},"end":{"line":73,"column":33}},"73":{"start":{"line":74,"column":0},"end":{"line":74,"column":45}},"74":{"start":{"line":75,"column":0},"end":{"line":75,"column":17}},"75":{"start":{"line":76,"column":0},"end":{"line":76,"column":28}},"76":{"start":{"line":77,"column":0},"end":{"line":77,"column":11}},"77":{"start":{"line":78,"column":0},"end":{"line":78,"column":50}},"78":{"start":{"line":79,"column":0},"end":{"line":79,"column":72}},"79":{"start":{"line":80,"column":0},"end":{"line":80,"column":54}},"80":{"start":{"line":81,"column":0},"end":{"line":81,"column":91}},"81":{"start":{"line":82,"column":0},"end":{"line":82,"column":0}},"82":{"start":{"line":83,"column":0},"end":{"line":83,"column":61}},"83":{"start":{"line":84,"column":0},"end":{"line":84,"column":0}},"84":{"start":{"line":85,"column":0},"end":{"line":85,"column":105}},"85":{"start":{"line":86,"column":0},"end":{"line":86,"column":1}},"86":{"start":{"line":87,"column":0},"end":{"line":87,"column":0}},"87":{"start":{"line":88,"column":0},"end":{"line":88,"column":79}},"88":{"start":{"line":89,"column":0},"end":{"line":89,"column":36}},"89":{"start":{"line":90,"column":0},"end":{"line":90,"column":72}},"90":{"start":{"line":91,"column":0},"end":{"line":91,"column":52}},"91":{"start":{"line":92,"column":0},"end":{"line":92,"column":54}},"92":{"start":{"line":93,"column":0},"end":{"line":93,"column":46}},"93":{"start":{"line":94,"column":0},"end":{"line":94,"column":56}},"94":{"start":{"line":95,"column":0},"end":{"line":95,"column":99}},"95":{"start":{"line":96,"column":0},"end":{"line":96,"column":53}},"96":{"start":{"line":97,"column":0},"end":{"line":97,"column":51}},"97":{"start":{"line":98,"column":0},"end":{"line":98,"column":44}},"98":{"start":{"line":99,"column":0},"end":{"line":99,"column":39}},"99":{"start":{"line":100,"column":0},"end":{"line":100,"column":2}},"100":{"start":{"line":101,"column":0},"end":{"line":101,"column":0}},"101":{"start":{"line":102,"column":0},"end":{"line":102,"column":68}},"102":{"start":{"line":103,"column":0},"end":{"line":103,"column":37}},"103":{"start":{"line":104,"column":0},"end":{"line":104,"column":20}},"104":{"start":{"line":105,"column":0},"end":{"line":105,"column":10}},"105":{"start":{"line":106,"column":0},"end":{"line":106,"column":63}},"106":{"start":{"line":107,"column":0},"end":{"line":107,"column":21}},"107":{"start":{"line":108,"column":0},"end":{"line":108,"column":64}},"108":{"start":{"line":109,"column":0},"end":{"line":109,"column":5}},"109":{"start":{"line":110,"column":0},"end":{"line":110,"column":31}},"110":{"start":{"line":111,"column":0},"end":{"line":111,"column":3}},"111":{"start":{"line":112,"column":0},"end":{"line":112,"column":1}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":247,"19":247,"20":247,"21":247,"22":1,"23":31,"24":31,"25":31,"26":1,"27":1,"28":1,"29":189,"30":189,"31":0,"32":0,"33":189,"34":0,"35":0,"36":0,"37":189,"38":189,"39":260,"40":260,"41":260,"42":260,"43":0,"44":189,"45":189,"46":189,"47":189,"48":189,"49":0,"50":0,"51":189,"52":189,"53":1,"54":959,"55":959,"56":958,"57":958,"58":1,"59":1,"60":1,"61":1,"62":1,"63":1,"64":1,"65":1,"66":1,"67":1,"68":1,"69":1,"70":1,"71":1,"72":958,"73":958,"74":958,"75":958,"76":958,"77":958,"78":958,"79":958,"80":958,"81":958,"82":958,"83":958,"84":958,"85":958,"86":1,"87":1,"88":1,"89":1,"90":1,"91":1,"92":1,"93":1,"94":1,"95":1,"96":1,"97":1,"98":1,"99":1,"100":1,"101":959,"102":959,"103":579,"104":959,"105":380,"106":380,"107":0,"108":0,"109":380,"110":380,"111":959},"branchMap":{"0":{"type":"branch","line":19,"loc":{"start":{"line":19,"column":0},"end":{"line":22,"column":1}},"locations":[{"start":{"line":19,"column":0},"end":{"line":22,"column":1}}]},"1":{"type":"branch","line":24,"loc":{"start":{"line":24,"column":0},"end":{"line":26,"column":1}},"locations":[{"start":{"line":24,"column":0},"end":{"line":26,"column":1}}]},"2":{"type":"branch","line":30,"loc":{"start":{"line":30,"column":0},"end":{"line":53,"column":1}},"locations":[{"start":{"line":30,"column":0},"end":{"line":53,"column":1}}]},"3":{"type":"branch","line":31,"loc":{"start":{"line":31,"column":35},"end":{"line":31,"column":58}},"locations":[{"start":{"line":31,"column":35},"end":{"line":31,"column":58}}]},"4":{"type":"branch","line":31,"loc":{"start":{"line":31,"column":60},"end":{"line":33,"column":3}},"locations":[{"start":{"line":31,"column":60},"end":{"line":33,"column":3}}]},"5":{"type":"branch","line":34,"loc":{"start":{"line":34,"column":21},"end":{"line":37,"column":3}},"locations":[{"start":{"line":34,"column":21},"end":{"line":37,"column":3}}]},"6":{"type":"branch","line":49,"loc":{"start":{"line":49,"column":20},"end":{"line":51,"column":3}},"locations":[{"start":{"line":49,"column":20},"end":{"line":51,"column":3}}]},"7":{"type":"branch","line":39,"loc":{"start":{"line":39,"column":34},"end":{"line":45,"column":3}},"locations":[{"start":{"line":39,"column":34},"end":{"line":45,"column":3}}]},"8":{"type":"branch","line":44,"loc":{"start":{"line":44,"column":-1},"end":{"line":45,"column":3}},"locations":[{"start":{"line":44,"column":-1},"end":{"line":45,"column":3}}]},"9":{"type":"branch","line":55,"loc":{"start":{"line":55,"column":0},"end":{"line":71,"column":1}},"locations":[{"start":{"line":55,"column":0},"end":{"line":71,"column":1}}]},"10":{"type":"branch","line":56,"loc":{"start":{"line":56,"column":33},"end":{"line":58,"column":3}},"locations":[{"start":{"line":56,"column":33},"end":{"line":58,"column":3}}]},"11":{"type":"branch","line":59,"loc":{"start":{"line":59,"column":-1},"end":{"line":71,"column":1}},"locations":[{"start":{"line":59,"column":-1},"end":{"line":71,"column":1}}]},"12":{"type":"branch","line":73,"loc":{"start":{"line":73,"column":0},"end":{"line":86,"column":1}},"locations":[{"start":{"line":73,"column":0},"end":{"line":86,"column":1}}]},"13":{"type":"branch","line":79,"loc":{"start":{"line":79,"column":54},"end":{"line":79,"column":66}},"locations":[{"start":{"line":79,"column":54},"end":{"line":79,"column":66}}]},"14":{"type":"branch","line":79,"loc":{"start":{"line":79,"column":67},"end":{"line":79,"column":71}},"locations":[{"start":{"line":79,"column":67},"end":{"line":79,"column":71}}]},"15":{"type":"branch","line":80,"loc":{"start":{"line":80,"column":38},"end":{"line":80,"column":48}},"locations":[{"start":{"line":80,"column":38},"end":{"line":80,"column":48}}]},"16":{"type":"branch","line":81,"loc":{"start":{"line":81,"column":52},"end":{"line":81,"column":70}},"locations":[{"start":{"line":81,"column":52},"end":{"line":81,"column":70}}]},"17":{"type":"branch","line":85,"loc":{"start":{"line":85,"column":78},"end":{"line":85,"column":82}},"locations":[{"start":{"line":85,"column":78},"end":{"line":85,"column":82}}]},"18":{"type":"branch","line":85,"loc":{"start":{"line":85,"column":83},"end":{"line":85,"column":95}},"locations":[{"start":{"line":85,"column":83},"end":{"line":85,"column":95}}]},"19":{"type":"branch","line":93,"loc":{"start":{"line":93,"column":25},"end":{"line":93,"column":45}},"locations":[{"start":{"line":93,"column":25},"end":{"line":93,"column":45}}]},"20":{"type":"branch","line":95,"loc":{"start":{"line":95,"column":26},"end":{"line":95,"column":50}},"locations":[{"start":{"line":95,"column":26},"end":{"line":95,"column":50}}]},"21":{"type":"branch","line":97,"loc":{"start":{"line":97,"column":26},"end":{"line":97,"column":50}},"locations":[{"start":{"line":97,"column":26},"end":{"line":97,"column":50}}]},"22":{"type":"branch","line":98,"loc":{"start":{"line":98,"column":26},"end":{"line":98,"column":43}},"locations":[{"start":{"line":98,"column":26},"end":{"line":98,"column":43}}]},"23":{"type":"branch","line":102,"loc":{"start":{"line":102,"column":0},"end":{"line":112,"column":1}},"locations":[{"start":{"line":102,"column":0},"end":{"line":112,"column":1}}]},"24":{"type":"branch","line":103,"loc":{"start":{"line":103,"column":36},"end":{"line":105,"column":9}},"locations":[{"start":{"line":103,"column":36},"end":{"line":105,"column":9}}]},"25":{"type":"branch","line":105,"loc":{"start":{"line":105,"column":3},"end":{"line":111,"column":3}},"locations":[{"start":{"line":105,"column":3},"end":{"line":111,"column":3}}]},"26":{"type":"branch","line":107,"loc":{"start":{"line":107,"column":20},"end":{"line":109,"column":5}},"locations":[{"start":{"line":107,"column":20},"end":{"line":109,"column":5}}]}},"b":{"0":[247],"1":[31],"2":[189],"3":[0],"4":[0],"5":[0],"6":[0],"7":[260],"8":[0],"9":[959],"10":[958],"11":[1],"12":[958],"13":[857],"14":[101],"15":[0],"16":[0],"17":[909],"18":[49],"19":[60],"20":[258],"21":[2],"22":[60],"23":[959],"24":[579],"25":[380],"26":[0]},"fnMap":{"0":{"name":"modelToTableName","decl":{"start":{"line":19,"column":0},"end":{"line":22,"column":1}},"loc":{"start":{"line":19,"column":0},"end":{"line":22,"column":1}},"line":19},"1":{"name":"formatColumnName","decl":{"start":{"line":24,"column":0},"end":{"line":26,"column":1}},"loc":{"start":{"line":24,"column":0},"end":{"line":26,"column":1}},"line":24},"2":{"name":"generateIndexName","decl":{"start":{"line":30,"column":0},"end":{"line":53,"column":1}},"loc":{"start":{"line":30,"column":0},"end":{"line":53,"column":1}},"line":30},"3":{"name":"formatReferences","decl":{"start":{"line":55,"column":0},"end":{"line":71,"column":1}},"loc":{"start":{"line":55,"column":0},"end":{"line":71,"column":1}},"line":55},"4":{"name":"formatAttributes","decl":{"start":{"line":73,"column":0},"end":{"line":86,"column":1}},"loc":{"start":{"line":73,"column":0},"end":{"line":86,"column":1}},"line":73},"5":{"name":"Object..sequelizeToPostgresTypeMap","decl":{"start":{"line":90,"column":27},"end":{"line":90,"column":71}},"loc":{"start":{"line":90,"column":27},"end":{"line":90,"column":71}},"line":90},"6":{"name":"Object..sequelizeToPostgresTypeMap","decl":{"start":{"line":91,"column":28},"end":{"line":91,"column":51}},"loc":{"start":{"line":91,"column":28},"end":{"line":91,"column":51}},"line":91},"7":{"name":"Object..sequelizeToPostgresTypeMap","decl":{"start":{"line":92,"column":27},"end":{"line":92,"column":53}},"loc":{"start":{"line":92,"column":27},"end":{"line":92,"column":53}},"line":92},"8":{"name":"Object..sequelizeToPostgresTypeMap","decl":{"start":{"line":93,"column":25},"end":{"line":93,"column":45}},"loc":{"start":{"line":93,"column":25},"end":{"line":93,"column":45}},"line":93},"9":{"name":"Object..sequelizeToPostgresTypeMap","decl":{"start":{"line":94,"column":28},"end":{"line":94,"column":55}},"loc":{"start":{"line":94,"column":28},"end":{"line":94,"column":55}},"line":94},"10":{"name":"Object..sequelizeToPostgresTypeMap","decl":{"start":{"line":95,"column":26},"end":{"line":95,"column":50}},"loc":{"start":{"line":95,"column":26},"end":{"line":95,"column":50}},"line":95},"11":{"name":"Object..sequelizeToPostgresTypeMap","decl":{"start":{"line":96,"column":25},"end":{"line":96,"column":52}},"loc":{"start":{"line":96,"column":25},"end":{"line":96,"column":52}},"line":96},"12":{"name":"Object..sequelizeToPostgresTypeMap","decl":{"start":{"line":97,"column":26},"end":{"line":97,"column":50}},"loc":{"start":{"line":97,"column":26},"end":{"line":97,"column":50}},"line":97},"13":{"name":"Object..sequelizeToPostgresTypeMap","decl":{"start":{"line":98,"column":26},"end":{"line":98,"column":43}},"loc":{"start":{"line":98,"column":26},"end":{"line":98,"column":43}},"line":98},"14":{"name":"Object..sequelizeToPostgresTypeMap","decl":{"start":{"line":99,"column":25},"end":{"line":99,"column":38}},"loc":{"start":{"line":99,"column":25},"end":{"line":99,"column":38}},"line":99},"15":{"name":"formatDataType","decl":{"start":{"line":102,"column":0},"end":{"line":112,"column":1}},"loc":{"start":{"line":102,"column":0},"end":{"line":112,"column":1}},"line":102}},"f":{"0":247,"1":31,"2":189,"3":959,"4":958,"5":0,"6":0,"7":0,"8":60,"9":0,"10":258,"11":0,"12":2,"13":60,"14":0,"15":959}},"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/db/sync-helper.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/db/sync-helper.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":28}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":103}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":8}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":12}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":17}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":8}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":30}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":18}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":14}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":13}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":12}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":22}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":8}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":28}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":106}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":34}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":86}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":62}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":43}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":0}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":21}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":14}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":53}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":2}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":0}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":3}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":55}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":5}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":41}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":0}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":61}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":28}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":1}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":0}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":28}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":22}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":28}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":34}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":1}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":0}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":18}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":16}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":22}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":28}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":2}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":0}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":39}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":22}},"51":{"start":{"line":52,"column":0},"end":{"line":52,"column":28}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":1}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":0}},"54":{"start":{"line":55,"column":0},"end":{"line":55,"column":69}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":0}},"56":{"start":{"line":57,"column":0},"end":{"line":57,"column":78}},"57":{"start":{"line":58,"column":0},"end":{"line":58,"column":41}},"58":{"start":{"line":59,"column":0},"end":{"line":59,"column":2}},"59":{"start":{"line":60,"column":0},"end":{"line":60,"column":0}},"60":{"start":{"line":61,"column":0},"end":{"line":61,"column":70}},"61":{"start":{"line":62,"column":0},"end":{"line":62,"column":59}},"62":{"start":{"line":63,"column":0},"end":{"line":63,"column":21}},"63":{"start":{"line":64,"column":0},"end":{"line":64,"column":34}},"64":{"start":{"line":65,"column":0},"end":{"line":65,"column":21}},"65":{"start":{"line":66,"column":0},"end":{"line":66,"column":1}},"66":{"start":{"line":67,"column":0},"end":{"line":67,"column":0}},"67":{"start":{"line":68,"column":0},"end":{"line":68,"column":68}},"68":{"start":{"line":69,"column":0},"end":{"line":69,"column":57}},"69":{"start":{"line":70,"column":0},"end":{"line":70,"column":1}},"70":{"start":{"line":71,"column":0},"end":{"line":71,"column":0}},"71":{"start":{"line":72,"column":0},"end":{"line":72,"column":79}},"72":{"start":{"line":73,"column":0},"end":{"line":73,"column":0}},"73":{"start":{"line":74,"column":0},"end":{"line":74,"column":80}},"74":{"start":{"line":75,"column":0},"end":{"line":75,"column":68}},"75":{"start":{"line":76,"column":0},"end":{"line":76,"column":1}},"76":{"start":{"line":77,"column":0},"end":{"line":77,"column":0}},"77":{"start":{"line":78,"column":0},"end":{"line":78,"column":77}},"78":{"start":{"line":79,"column":0},"end":{"line":79,"column":65}},"79":{"start":{"line":80,"column":0},"end":{"line":80,"column":1}},"80":{"start":{"line":81,"column":0},"end":{"line":81,"column":0}},"81":{"start":{"line":82,"column":0},"end":{"line":82,"column":49}},"82":{"start":{"line":83,"column":0},"end":{"line":83,"column":45}},"83":{"start":{"line":84,"column":0},"end":{"line":84,"column":1}},"84":{"start":{"line":85,"column":0},"end":{"line":85,"column":0}},"85":{"start":{"line":86,"column":0},"end":{"line":86,"column":19}},"86":{"start":{"line":87,"column":0},"end":{"line":87,"column":55}},"87":{"start":{"line":88,"column":0},"end":{"line":88,"column":17}},"88":{"start":{"line":89,"column":0},"end":{"line":89,"column":18}},"89":{"start":{"line":90,"column":0},"end":{"line":90,"column":21}},"90":{"start":{"line":91,"column":0},"end":{"line":91,"column":10}},"91":{"start":{"line":92,"column":0},"end":{"line":92,"column":63}},"92":{"start":{"line":93,"column":0},"end":{"line":93,"column":95}},"93":{"start":{"line":94,"column":0},"end":{"line":94,"column":1}},"94":{"start":{"line":95,"column":0},"end":{"line":95,"column":0}},"95":{"start":{"line":96,"column":0},"end":{"line":96,"column":115}},"96":{"start":{"line":97,"column":0},"end":{"line":97,"column":82}},"97":{"start":{"line":98,"column":0},"end":{"line":98,"column":1}},"98":{"start":{"line":99,"column":0},"end":{"line":99,"column":0}},"99":{"start":{"line":100,"column":0},"end":{"line":100,"column":90}},"100":{"start":{"line":101,"column":0},"end":{"line":101,"column":65}},"101":{"start":{"line":102,"column":0},"end":{"line":102,"column":1}},"102":{"start":{"line":103,"column":0},"end":{"line":103,"column":0}},"103":{"start":{"line":104,"column":0},"end":{"line":104,"column":107}},"104":{"start":{"line":105,"column":0},"end":{"line":105,"column":74}},"105":{"start":{"line":106,"column":0},"end":{"line":106,"column":1}},"106":{"start":{"line":107,"column":0},"end":{"line":107,"column":0}},"107":{"start":{"line":108,"column":0},"end":{"line":108,"column":97}},"108":{"start":{"line":109,"column":0},"end":{"line":109,"column":75}},"109":{"start":{"line":110,"column":0},"end":{"line":110,"column":1}},"110":{"start":{"line":111,"column":0},"end":{"line":111,"column":0}},"111":{"start":{"line":112,"column":0},"end":{"line":112,"column":79}},"112":{"start":{"line":113,"column":0},"end":{"line":113,"column":86}},"113":{"start":{"line":114,"column":0},"end":{"line":114,"column":94}},"114":{"start":{"line":115,"column":0},"end":{"line":115,"column":1}},"115":{"start":{"line":116,"column":0},"end":{"line":116,"column":0}},"116":{"start":{"line":117,"column":0},"end":{"line":117,"column":39}},"117":{"start":{"line":118,"column":0},"end":{"line":118,"column":43}},"118":{"start":{"line":119,"column":0},"end":{"line":119,"column":20}},"119":{"start":{"line":120,"column":0},"end":{"line":120,"column":21}},"120":{"start":{"line":121,"column":0},"end":{"line":121,"column":20}},"121":{"start":{"line":122,"column":0},"end":{"line":122,"column":9}},"122":{"start":{"line":123,"column":0},"end":{"line":123,"column":28}},"123":{"start":{"line":124,"column":0},"end":{"line":124,"column":53}},"124":{"start":{"line":125,"column":0},"end":{"line":125,"column":3}},"125":{"start":{"line":126,"column":0},"end":{"line":126,"column":39}},"126":{"start":{"line":127,"column":0},"end":{"line":127,"column":71}},"127":{"start":{"line":128,"column":0},"end":{"line":128,"column":58}},"128":{"start":{"line":129,"column":0},"end":{"line":129,"column":45}},"129":{"start":{"line":130,"column":0},"end":{"line":130,"column":1}},"130":{"start":{"line":131,"column":0},"end":{"line":131,"column":0}},"131":{"start":{"line":132,"column":0},"end":{"line":132,"column":106}},"132":{"start":{"line":133,"column":0},"end":{"line":133,"column":0}},"133":{"start":{"line":134,"column":0},"end":{"line":134,"column":94}},"134":{"start":{"line":135,"column":0},"end":{"line":135,"column":65}},"135":{"start":{"line":136,"column":0},"end":{"line":136,"column":10}},"136":{"start":{"line":137,"column":0},"end":{"line":137,"column":9}},"137":{"start":{"line":138,"column":0},"end":{"line":138,"column":57}},"138":{"start":{"line":139,"column":0},"end":{"line":139,"column":1}},"139":{"start":{"line":140,"column":0},"end":{"line":140,"column":0}},"140":{"start":{"line":141,"column":0},"end":{"line":141,"column":16}},"141":{"start":{"line":142,"column":0},"end":{"line":142,"column":94}},"142":{"start":{"line":143,"column":0},"end":{"line":143,"column":25}},"143":{"start":{"line":144,"column":0},"end":{"line":144,"column":117}},"144":{"start":{"line":145,"column":0},"end":{"line":145,"column":45}},"145":{"start":{"line":146,"column":0},"end":{"line":146,"column":5}},"146":{"start":{"line":147,"column":0},"end":{"line":147,"column":34}},"147":{"start":{"line":148,"column":0},"end":{"line":148,"column":30}},"148":{"start":{"line":149,"column":0},"end":{"line":149,"column":5}},"149":{"start":{"line":150,"column":0},"end":{"line":150,"column":4}},"150":{"start":{"line":151,"column":0},"end":{"line":151,"column":1}},"151":{"start":{"line":152,"column":0},"end":{"line":152,"column":0}},"152":{"start":{"line":153,"column":0},"end":{"line":153,"column":112}},"153":{"start":{"line":154,"column":0},"end":{"line":154,"column":25}},"154":{"start":{"line":155,"column":0},"end":{"line":155,"column":11}},"155":{"start":{"line":156,"column":0},"end":{"line":156,"column":43}},"156":{"start":{"line":157,"column":0},"end":{"line":157,"column":38}},"157":{"start":{"line":158,"column":0},"end":{"line":158,"column":9}},"158":{"start":{"line":159,"column":0},"end":{"line":159,"column":36}},"159":{"start":{"line":160,"column":0},"end":{"line":160,"column":10}},"160":{"start":{"line":161,"column":0},"end":{"line":161,"column":68}},"161":{"start":{"line":162,"column":0},"end":{"line":162,"column":37}},"162":{"start":{"line":163,"column":0},"end":{"line":163,"column":36}},"163":{"start":{"line":164,"column":0},"end":{"line":164,"column":40}},"164":{"start":{"line":165,"column":0},"end":{"line":165,"column":6}},"165":{"start":{"line":166,"column":0},"end":{"line":166,"column":5}},"166":{"start":{"line":167,"column":0},"end":{"line":167,"column":43}},"167":{"start":{"line":168,"column":0},"end":{"line":168,"column":30}},"168":{"start":{"line":169,"column":0},"end":{"line":169,"column":5}},"169":{"start":{"line":170,"column":0},"end":{"line":170,"column":4}},"170":{"start":{"line":171,"column":0},"end":{"line":171,"column":1}},"171":{"start":{"line":172,"column":0},"end":{"line":172,"column":0}},"172":{"start":{"line":173,"column":0},"end":{"line":173,"column":71}},"173":{"start":{"line":174,"column":0},"end":{"line":174,"column":10}},"174":{"start":{"line":175,"column":0},"end":{"line":175,"column":58}},"175":{"start":{"line":176,"column":0},"end":{"line":176,"column":25}},"176":{"start":{"line":177,"column":0},"end":{"line":177,"column":7}},"177":{"start":{"line":178,"column":0},"end":{"line":178,"column":17}},"178":{"start":{"line":179,"column":0},"end":{"line":179,"column":15}},"179":{"start":{"line":180,"column":0},"end":{"line":180,"column":18}},"180":{"start":{"line":181,"column":0},"end":{"line":181,"column":5}},"181":{"start":{"line":182,"column":0},"end":{"line":182,"column":25}},"182":{"start":{"line":183,"column":0},"end":{"line":183,"column":30}},"183":{"start":{"line":184,"column":0},"end":{"line":184,"column":18}},"184":{"start":{"line":185,"column":0},"end":{"line":185,"column":8}},"185":{"start":{"line":186,"column":0},"end":{"line":186,"column":18}},"186":{"start":{"line":187,"column":0},"end":{"line":187,"column":11}},"187":{"start":{"line":188,"column":0},"end":{"line":188,"column":33}},"188":{"start":{"line":189,"column":0},"end":{"line":189,"column":25}},"189":{"start":{"line":190,"column":0},"end":{"line":190,"column":35}},"190":{"start":{"line":191,"column":0},"end":{"line":191,"column":28}},"191":{"start":{"line":192,"column":0},"end":{"line":192,"column":49}},"192":{"start":{"line":193,"column":0},"end":{"line":193,"column":47}},"193":{"start":{"line":194,"column":0},"end":{"line":194,"column":24}},"194":{"start":{"line":195,"column":0},"end":{"line":195,"column":15}},"195":{"start":{"line":196,"column":0},"end":{"line":196,"column":59}},"196":{"start":{"line":197,"column":0},"end":{"line":197,"column":49}},"197":{"start":{"line":198,"column":0},"end":{"line":198,"column":58}},"198":{"start":{"line":199,"column":0},"end":{"line":199,"column":11}},"199":{"start":{"line":200,"column":0},"end":{"line":200,"column":49}},"200":{"start":{"line":201,"column":0},"end":{"line":201,"column":49}},"201":{"start":{"line":202,"column":0},"end":{"line":202,"column":11}},"202":{"start":{"line":203,"column":0},"end":{"line":203,"column":22}},"203":{"start":{"line":204,"column":0},"end":{"line":204,"column":26}},"204":{"start":{"line":205,"column":0},"end":{"line":205,"column":27}},"205":{"start":{"line":206,"column":0},"end":{"line":206,"column":16}},"206":{"start":{"line":207,"column":0},"end":{"line":207,"column":4}},"207":{"start":{"line":208,"column":0},"end":{"line":208,"column":22}},"208":{"start":{"line":209,"column":0},"end":{"line":209,"column":1}},"209":{"start":{"line":210,"column":0},"end":{"line":210,"column":0}},"210":{"start":{"line":211,"column":0},"end":{"line":211,"column":76}},"211":{"start":{"line":212,"column":0},"end":{"line":212,"column":64}},"212":{"start":{"line":213,"column":0},"end":{"line":213,"column":64}},"213":{"start":{"line":214,"column":0},"end":{"line":214,"column":10}},"214":{"start":{"line":215,"column":0},"end":{"line":215,"column":5}},"215":{"start":{"line":216,"column":0},"end":{"line":216,"column":5}},"216":{"start":{"line":217,"column":0},"end":{"line":217,"column":69}},"217":{"start":{"line":218,"column":0},"end":{"line":218,"column":30}},"218":{"start":{"line":219,"column":0},"end":{"line":219,"column":82}},"219":{"start":{"line":220,"column":0},"end":{"line":220,"column":12}},"220":{"start":{"line":221,"column":0},"end":{"line":221,"column":30}},"221":{"start":{"line":222,"column":0},"end":{"line":222,"column":59}},"222":{"start":{"line":223,"column":0},"end":{"line":223,"column":6}},"223":{"start":{"line":224,"column":0},"end":{"line":224,"column":4}},"224":{"start":{"line":225,"column":0},"end":{"line":225,"column":1}},"225":{"start":{"line":226,"column":0},"end":{"line":226,"column":0}},"226":{"start":{"line":227,"column":0},"end":{"line":227,"column":82}},"227":{"start":{"line":228,"column":0},"end":{"line":228,"column":49}},"228":{"start":{"line":229,"column":0},"end":{"line":229,"column":32}},"229":{"start":{"line":230,"column":0},"end":{"line":230,"column":1}},"230":{"start":{"line":231,"column":0},"end":{"line":231,"column":0}},"231":{"start":{"line":232,"column":0},"end":{"line":232,"column":74}},"232":{"start":{"line":233,"column":0},"end":{"line":233,"column":64}},"233":{"start":{"line":234,"column":0},"end":{"line":234,"column":49}},"234":{"start":{"line":235,"column":0},"end":{"line":235,"column":1}},"235":{"start":{"line":236,"column":0},"end":{"line":236,"column":0}},"236":{"start":{"line":237,"column":0},"end":{"line":237,"column":69}},"237":{"start":{"line":238,"column":0},"end":{"line":238,"column":66}},"238":{"start":{"line":239,"column":0},"end":{"line":239,"column":1}},"239":{"start":{"line":240,"column":0},"end":{"line":240,"column":0}},"240":{"start":{"line":241,"column":0},"end":{"line":241,"column":60}},"241":{"start":{"line":242,"column":0},"end":{"line":242,"column":51}},"242":{"start":{"line":243,"column":0},"end":{"line":243,"column":1}},"243":{"start":{"line":244,"column":0},"end":{"line":244,"column":0}},"244":{"start":{"line":245,"column":0},"end":{"line":245,"column":37}},"245":{"start":{"line":246,"column":0},"end":{"line":246,"column":29}},"246":{"start":{"line":247,"column":0},"end":{"line":247,"column":88}},"247":{"start":{"line":248,"column":0},"end":{"line":248,"column":76}},"248":{"start":{"line":249,"column":0},"end":{"line":249,"column":10}},"249":{"start":{"line":250,"column":0},"end":{"line":250,"column":33}},"250":{"start":{"line":251,"column":0},"end":{"line":251,"column":16}},"251":{"start":{"line":252,"column":0},"end":{"line":252,"column":41}},"252":{"start":{"line":253,"column":0},"end":{"line":253,"column":16}},"253":{"start":{"line":254,"column":0},"end":{"line":254,"column":44}},"254":{"start":{"line":255,"column":0},"end":{"line":255,"column":57}},"255":{"start":{"line":256,"column":0},"end":{"line":256,"column":1}},"256":{"start":{"line":257,"column":0},"end":{"line":257,"column":0}},"257":{"start":{"line":258,"column":0},"end":{"line":258,"column":69}},"258":{"start":{"line":259,"column":0},"end":{"line":259,"column":10}},"259":{"start":{"line":260,"column":0},"end":{"line":260,"column":62}},"260":{"start":{"line":261,"column":0},"end":{"line":261,"column":25}},"261":{"start":{"line":262,"column":0},"end":{"line":262,"column":7}},"262":{"start":{"line":263,"column":0},"end":{"line":263,"column":22}},"263":{"start":{"line":264,"column":0},"end":{"line":264,"column":65}},"264":{"start":{"line":265,"column":0},"end":{"line":265,"column":30}},"265":{"start":{"line":266,"column":0},"end":{"line":266,"column":16}},"266":{"start":{"line":267,"column":0},"end":{"line":267,"column":6}},"267":{"start":{"line":268,"column":0},"end":{"line":268,"column":24}},"268":{"start":{"line":269,"column":0},"end":{"line":269,"column":1}},"269":{"start":{"line":270,"column":0},"end":{"line":270,"column":0}},"270":{"start":{"line":271,"column":0},"end":{"line":271,"column":58}},"271":{"start":{"line":272,"column":0},"end":{"line":272,"column":45}},"272":{"start":{"line":273,"column":0},"end":{"line":273,"column":1}},"273":{"start":{"line":274,"column":0},"end":{"line":274,"column":0}},"274":{"start":{"line":275,"column":0},"end":{"line":275,"column":64}},"275":{"start":{"line":276,"column":0},"end":{"line":276,"column":75}},"276":{"start":{"line":277,"column":0},"end":{"line":277,"column":1}},"277":{"start":{"line":278,"column":0},"end":{"line":278,"column":0}},"278":{"start":{"line":279,"column":0},"end":{"line":279,"column":18}},"279":{"start":{"line":280,"column":0},"end":{"line":280,"column":35}},"280":{"start":{"line":281,"column":0},"end":{"line":281,"column":0}},"281":{"start":{"line":282,"column":0},"end":{"line":282,"column":3}},"282":{"start":{"line":283,"column":0},"end":{"line":283,"column":68}},"283":{"start":{"line":284,"column":0},"end":{"line":284,"column":54}},"284":{"start":{"line":285,"column":0},"end":{"line":285,"column":4}},"285":{"start":{"line":286,"column":0},"end":{"line":286,"column":111}},"286":{"start":{"line":287,"column":0},"end":{"line":287,"column":10}},"287":{"start":{"line":288,"column":0},"end":{"line":288,"column":7}},"288":{"start":{"line":289,"column":0},"end":{"line":289,"column":9}},"289":{"start":{"line":290,"column":0},"end":{"line":290,"column":17}},"290":{"start":{"line":291,"column":0},"end":{"line":291,"column":15}},"291":{"start":{"line":292,"column":0},"end":{"line":292,"column":31}},"292":{"start":{"line":293,"column":0},"end":{"line":293,"column":19}},"293":{"start":{"line":294,"column":0},"end":{"line":294,"column":7}},"294":{"start":{"line":295,"column":0},"end":{"line":295,"column":68}},"295":{"start":{"line":296,"column":0},"end":{"line":296,"column":4}},"296":{"start":{"line":297,"column":0},"end":{"line":297,"column":55}},"297":{"start":{"line":298,"column":0},"end":{"line":298,"column":61}},"298":{"start":{"line":299,"column":0},"end":{"line":299,"column":19}},"299":{"start":{"line":300,"column":0},"end":{"line":300,"column":17}},"300":{"start":{"line":301,"column":0},"end":{"line":301,"column":11}},"301":{"start":{"line":302,"column":0},"end":{"line":302,"column":8}},"302":{"start":{"line":303,"column":0},"end":{"line":303,"column":4}},"303":{"start":{"line":304,"column":0},"end":{"line":304,"column":2}},"304":{"start":{"line":305,"column":0},"end":{"line":305,"column":0}},"305":{"start":{"line":306,"column":0},"end":{"line":306,"column":85}},"306":{"start":{"line":307,"column":0},"end":{"line":307,"column":97}},"307":{"start":{"line":308,"column":0},"end":{"line":308,"column":78}},"308":{"start":{"line":309,"column":0},"end":{"line":309,"column":81}},"309":{"start":{"line":310,"column":0},"end":{"line":310,"column":18}},"310":{"start":{"line":311,"column":0},"end":{"line":311,"column":55}},"311":{"start":{"line":312,"column":0},"end":{"line":312,"column":20}},"312":{"start":{"line":313,"column":0},"end":{"line":313,"column":7}},"313":{"start":{"line":314,"column":0},"end":{"line":314,"column":3}},"314":{"start":{"line":315,"column":0},"end":{"line":315,"column":1}},"315":{"start":{"line":316,"column":0},"end":{"line":316,"column":0}},"316":{"start":{"line":317,"column":0},"end":{"line":317,"column":98}},"317":{"start":{"line":318,"column":0},"end":{"line":318,"column":99}},"318":{"start":{"line":319,"column":0},"end":{"line":319,"column":1}},"319":{"start":{"line":320,"column":0},"end":{"line":320,"column":0}},"320":{"start":{"line":321,"column":0},"end":{"line":321,"column":113}},"321":{"start":{"line":322,"column":0},"end":{"line":322,"column":30}},"322":{"start":{"line":323,"column":0},"end":{"line":323,"column":48}},"323":{"start":{"line":324,"column":0},"end":{"line":324,"column":50}},"324":{"start":{"line":325,"column":0},"end":{"line":325,"column":59}},"325":{"start":{"line":326,"column":0},"end":{"line":326,"column":0}},"326":{"start":{"line":327,"column":0},"end":{"line":327,"column":47}},"327":{"start":{"line":328,"column":0},"end":{"line":328,"column":61}},"328":{"start":{"line":329,"column":0},"end":{"line":329,"column":5}},"329":{"start":{"line":330,"column":0},"end":{"line":330,"column":5}},"330":{"start":{"line":331,"column":0},"end":{"line":331,"column":1}},"331":{"start":{"line":332,"column":0},"end":{"line":332,"column":0}},"332":{"start":{"line":333,"column":0},"end":{"line":333,"column":103}},"333":{"start":{"line":334,"column":0},"end":{"line":334,"column":68}},"334":{"start":{"line":335,"column":0},"end":{"line":335,"column":21}},"335":{"start":{"line":336,"column":0},"end":{"line":336,"column":25}},"336":{"start":{"line":337,"column":0},"end":{"line":337,"column":35}},"337":{"start":{"line":338,"column":0},"end":{"line":338,"column":21}},"338":{"start":{"line":339,"column":0},"end":{"line":339,"column":21}},"339":{"start":{"line":340,"column":0},"end":{"line":340,"column":35}},"340":{"start":{"line":341,"column":0},"end":{"line":341,"column":30}},"341":{"start":{"line":342,"column":0},"end":{"line":342,"column":44}},"342":{"start":{"line":343,"column":0},"end":{"line":343,"column":21}},"343":{"start":{"line":344,"column":0},"end":{"line":344,"column":35}},"344":{"start":{"line":345,"column":0},"end":{"line":345,"column":1}},"345":{"start":{"line":346,"column":0},"end":{"line":346,"column":0}},"346":{"start":{"line":347,"column":0},"end":{"line":347,"column":79}},"347":{"start":{"line":348,"column":0},"end":{"line":348,"column":30}},"348":{"start":{"line":349,"column":0},"end":{"line":349,"column":40}},"349":{"start":{"line":350,"column":0},"end":{"line":350,"column":13}},"350":{"start":{"line":351,"column":0},"end":{"line":351,"column":5}},"351":{"start":{"line":352,"column":0},"end":{"line":352,"column":24}},"352":{"start":{"line":353,"column":0},"end":{"line":353,"column":24}},"353":{"start":{"line":354,"column":0},"end":{"line":354,"column":5}},"354":{"start":{"line":355,"column":0},"end":{"line":355,"column":38}},"355":{"start":{"line":356,"column":0},"end":{"line":356,"column":33}},"356":{"start":{"line":357,"column":0},"end":{"line":357,"column":43}},"357":{"start":{"line":358,"column":0},"end":{"line":358,"column":25}},"358":{"start":{"line":359,"column":0},"end":{"line":359,"column":5}},"359":{"start":{"line":360,"column":0},"end":{"line":360,"column":1}},"360":{"start":{"line":361,"column":0},"end":{"line":361,"column":0}},"361":{"start":{"line":362,"column":0},"end":{"line":362,"column":33}},"362":{"start":{"line":363,"column":0},"end":{"line":363,"column":33}},"363":{"start":{"line":364,"column":0},"end":{"line":364,"column":51}},"364":{"start":{"line":365,"column":0},"end":{"line":365,"column":26}},"365":{"start":{"line":366,"column":0},"end":{"line":366,"column":32}},"366":{"start":{"line":367,"column":0},"end":{"line":367,"column":9}},"367":{"start":{"line":368,"column":0},"end":{"line":368,"column":26}},"368":{"start":{"line":369,"column":0},"end":{"line":369,"column":23}},"369":{"start":{"line":370,"column":0},"end":{"line":370,"column":81}},"370":{"start":{"line":371,"column":0},"end":{"line":371,"column":81}},"371":{"start":{"line":372,"column":0},"end":{"line":372,"column":9}},"372":{"start":{"line":373,"column":0},"end":{"line":373,"column":12}},"373":{"start":{"line":374,"column":0},"end":{"line":374,"column":5}},"374":{"start":{"line":375,"column":0},"end":{"line":375,"column":20}},"375":{"start":{"line":376,"column":0},"end":{"line":376,"column":88}},"376":{"start":{"line":377,"column":0},"end":{"line":377,"column":51}},"377":{"start":{"line":378,"column":0},"end":{"line":378,"column":9}},"378":{"start":{"line":379,"column":0},"end":{"line":379,"column":12}},"379":{"start":{"line":380,"column":0},"end":{"line":380,"column":5}},"380":{"start":{"line":381,"column":0},"end":{"line":381,"column":21}},"381":{"start":{"line":382,"column":0},"end":{"line":382,"column":88}},"382":{"start":{"line":383,"column":0},"end":{"line":383,"column":45}},"383":{"start":{"line":384,"column":0},"end":{"line":384,"column":9}},"384":{"start":{"line":385,"column":0},"end":{"line":385,"column":12}},"385":{"start":{"line":386,"column":0},"end":{"line":386,"column":5}},"386":{"start":{"line":387,"column":0},"end":{"line":387,"column":12}},"387":{"start":{"line":388,"column":0},"end":{"line":388,"column":56}},"388":{"start":{"line":389,"column":0},"end":{"line":389,"column":3}},"389":{"start":{"line":390,"column":0},"end":{"line":390,"column":1}},"390":{"start":{"line":391,"column":0},"end":{"line":391,"column":0}},"391":{"start":{"line":392,"column":0},"end":{"line":392,"column":41}},"392":{"start":{"line":393,"column":0},"end":{"line":393,"column":38}},"393":{"start":{"line":394,"column":0},"end":{"line":394,"column":17}},"394":{"start":{"line":395,"column":0},"end":{"line":395,"column":28}},"395":{"start":{"line":396,"column":0},"end":{"line":396,"column":18}},"396":{"start":{"line":397,"column":0},"end":{"line":397,"column":36}},"397":{"start":{"line":398,"column":0},"end":{"line":398,"column":0}},"398":{"start":{"line":399,"column":0},"end":{"line":399,"column":43}},"399":{"start":{"line":400,"column":0},"end":{"line":400,"column":41}},"400":{"start":{"line":401,"column":0},"end":{"line":401,"column":41}},"401":{"start":{"line":402,"column":0},"end":{"line":402,"column":31}},"402":{"start":{"line":403,"column":0},"end":{"line":403,"column":0}},"403":{"start":{"line":404,"column":0},"end":{"line":404,"column":44}},"404":{"start":{"line":405,"column":0},"end":{"line":405,"column":33}},"405":{"start":{"line":406,"column":0},"end":{"line":406,"column":0}},"406":{"start":{"line":407,"column":0},"end":{"line":407,"column":64}},"407":{"start":{"line":408,"column":0},"end":{"line":408,"column":0}},"408":{"start":{"line":409,"column":0},"end":{"line":409,"column":100}},"409":{"start":{"line":410,"column":0},"end":{"line":410,"column":0}},"410":{"start":{"line":411,"column":0},"end":{"line":411,"column":45}},"411":{"start":{"line":412,"column":0},"end":{"line":412,"column":23}},"412":{"start":{"line":413,"column":0},"end":{"line":413,"column":85}},"413":{"start":{"line":414,"column":0},"end":{"line":414,"column":5}},"414":{"start":{"line":415,"column":0},"end":{"line":415,"column":26}},"415":{"start":{"line":416,"column":0},"end":{"line":416,"column":48}},"416":{"start":{"line":417,"column":0},"end":{"line":417,"column":5}},"417":{"start":{"line":418,"column":0},"end":{"line":418,"column":5}},"418":{"start":{"line":419,"column":0},"end":{"line":419,"column":0}},"419":{"start":{"line":420,"column":0},"end":{"line":420,"column":81}},"420":{"start":{"line":421,"column":0},"end":{"line":421,"column":0}},"421":{"start":{"line":422,"column":0},"end":{"line":422,"column":102}},"422":{"start":{"line":423,"column":0},"end":{"line":423,"column":15}},"423":{"start":{"line":424,"column":0},"end":{"line":424,"column":31}},"424":{"start":{"line":425,"column":0},"end":{"line":425,"column":0}},"425":{"start":{"line":426,"column":0},"end":{"line":426,"column":35}},"426":{"start":{"line":427,"column":0},"end":{"line":427,"column":1}},"427":{"start":{"line":428,"column":0},"end":{"line":428,"column":0}},"428":{"start":{"line":429,"column":0},"end":{"line":429,"column":41}},"429":{"start":{"line":430,"column":0},"end":{"line":430,"column":42}},"430":{"start":{"line":431,"column":0},"end":{"line":431,"column":17}},"431":{"start":{"line":432,"column":0},"end":{"line":432,"column":19}},"432":{"start":{"line":433,"column":0},"end":{"line":433,"column":13}},"433":{"start":{"line":434,"column":0},"end":{"line":434,"column":36}},"434":{"start":{"line":435,"column":0},"end":{"line":435,"column":30}},"435":{"start":{"line":436,"column":0},"end":{"line":436,"column":77}},"436":{"start":{"line":437,"column":0},"end":{"line":437,"column":48}},"437":{"start":{"line":438,"column":0},"end":{"line":438,"column":64}},"438":{"start":{"line":439,"column":0},"end":{"line":439,"column":33}},"439":{"start":{"line":440,"column":0},"end":{"line":440,"column":0}},"440":{"start":{"line":441,"column":0},"end":{"line":441,"column":132}},"441":{"start":{"line":442,"column":0},"end":{"line":442,"column":29}},"442":{"start":{"line":443,"column":0},"end":{"line":443,"column":5}},"443":{"start":{"line":444,"column":0},"end":{"line":444,"column":0}},"444":{"start":{"line":445,"column":0},"end":{"line":445,"column":22}},"445":{"start":{"line":446,"column":0},"end":{"line":446,"column":1}},"446":{"start":{"line":447,"column":0},"end":{"line":447,"column":0}},"447":{"start":{"line":448,"column":0},"end":{"line":448,"column":120}},"448":{"start":{"line":449,"column":0},"end":{"line":449,"column":32}},"449":{"start":{"line":450,"column":0},"end":{"line":450,"column":0}},"450":{"start":{"line":451,"column":0},"end":{"line":451,"column":29}},"451":{"start":{"line":452,"column":0},"end":{"line":452,"column":31}},"452":{"start":{"line":453,"column":0},"end":{"line":453,"column":5}},"453":{"start":{"line":454,"column":0},"end":{"line":454,"column":0}},"454":{"start":{"line":455,"column":0},"end":{"line":455,"column":37}},"455":{"start":{"line":456,"column":0},"end":{"line":456,"column":25}},"456":{"start":{"line":457,"column":0},"end":{"line":457,"column":5}},"457":{"start":{"line":458,"column":0},"end":{"line":458,"column":0}},"458":{"start":{"line":459,"column":0},"end":{"line":459,"column":33}},"459":{"start":{"line":460,"column":0},"end":{"line":460,"column":7}},"460":{"start":{"line":461,"column":0},"end":{"line":461,"column":37}},"461":{"start":{"line":462,"column":0},"end":{"line":462,"column":19}},"462":{"start":{"line":463,"column":0},"end":{"line":463,"column":55}},"463":{"start":{"line":464,"column":0},"end":{"line":464,"column":89}},"464":{"start":{"line":465,"column":0},"end":{"line":465,"column":18}},"465":{"start":{"line":466,"column":0},"end":{"line":466,"column":12}},"466":{"start":{"line":467,"column":0},"end":{"line":467,"column":18}},"467":{"start":{"line":468,"column":0},"end":{"line":468,"column":5}},"468":{"start":{"line":469,"column":0},"end":{"line":469,"column":3}},"469":{"start":{"line":470,"column":0},"end":{"line":470,"column":0}},"470":{"start":{"line":471,"column":0},"end":{"line":471,"column":39}},"471":{"start":{"line":472,"column":0},"end":{"line":472,"column":73}},"472":{"start":{"line":473,"column":0},"end":{"line":473,"column":44}},"473":{"start":{"line":474,"column":0},"end":{"line":474,"column":0}},"474":{"start":{"line":475,"column":0},"end":{"line":475,"column":55}},"475":{"start":{"line":476,"column":0},"end":{"line":476,"column":1}},"476":{"start":{"line":477,"column":0},"end":{"line":477,"column":0}},"477":{"start":{"line":478,"column":0},"end":{"line":478,"column":101}},"478":{"start":{"line":479,"column":0},"end":{"line":479,"column":65}},"479":{"start":{"line":480,"column":0},"end":{"line":480,"column":20}},"480":{"start":{"line":481,"column":0},"end":{"line":481,"column":115}},"481":{"start":{"line":482,"column":0},"end":{"line":482,"column":6}},"482":{"start":{"line":483,"column":0},"end":{"line":483,"column":3}},"483":{"start":{"line":484,"column":0},"end":{"line":484,"column":23}},"484":{"start":{"line":485,"column":0},"end":{"line":485,"column":71}},"485":{"start":{"line":486,"column":0},"end":{"line":486,"column":108}},"486":{"start":{"line":487,"column":0},"end":{"line":487,"column":5}},"487":{"start":{"line":488,"column":0},"end":{"line":488,"column":5}},"488":{"start":{"line":489,"column":0},"end":{"line":489,"column":1}},"489":{"start":{"line":490,"column":0},"end":{"line":490,"column":0}},"490":{"start":{"line":491,"column":0},"end":{"line":491,"column":103}},"491":{"start":{"line":492,"column":0},"end":{"line":492,"column":41}},"492":{"start":{"line":493,"column":0},"end":{"line":493,"column":5}},"493":{"start":{"line":494,"column":0},"end":{"line":494,"column":14}},"494":{"start":{"line":495,"column":0},"end":{"line":495,"column":28}},"495":{"start":{"line":496,"column":0},"end":{"line":496,"column":12}},"496":{"start":{"line":497,"column":0},"end":{"line":497,"column":52}},"497":{"start":{"line":498,"column":0},"end":{"line":498,"column":59}},"498":{"start":{"line":499,"column":0},"end":{"line":499,"column":60}},"499":{"start":{"line":500,"column":0},"end":{"line":500,"column":57}},"500":{"start":{"line":501,"column":0},"end":{"line":501,"column":66}},"501":{"start":{"line":502,"column":0},"end":{"line":502,"column":60}},"502":{"start":{"line":503,"column":0},"end":{"line":503,"column":57}},"503":{"start":{"line":504,"column":0},"end":{"line":504,"column":48}},"504":{"start":{"line":505,"column":0},"end":{"line":505,"column":40}},"505":{"start":{"line":506,"column":0},"end":{"line":506,"column":6}},"506":{"start":{"line":507,"column":0},"end":{"line":507,"column":5}},"507":{"start":{"line":508,"column":0},"end":{"line":508,"column":37}},"508":{"start":{"line":509,"column":0},"end":{"line":509,"column":30}},"509":{"start":{"line":510,"column":0},"end":{"line":510,"column":5}},"510":{"start":{"line":511,"column":0},"end":{"line":511,"column":36}},"511":{"start":{"line":512,"column":0},"end":{"line":512,"column":47}},"512":{"start":{"line":513,"column":0},"end":{"line":513,"column":1}},"513":{"start":{"line":514,"column":0},"end":{"line":514,"column":0}},"514":{"start":{"line":515,"column":0},"end":{"line":515,"column":110}},"515":{"start":{"line":516,"column":0},"end":{"line":516,"column":50}},"516":{"start":{"line":517,"column":0},"end":{"line":517,"column":0}},"517":{"start":{"line":518,"column":0},"end":{"line":518,"column":41}},"518":{"start":{"line":519,"column":0},"end":{"line":519,"column":5}},"519":{"start":{"line":520,"column":0},"end":{"line":520,"column":70}},"520":{"start":{"line":521,"column":0},"end":{"line":521,"column":22}},"521":{"start":{"line":522,"column":0},"end":{"line":522,"column":56}},"522":{"start":{"line":523,"column":0},"end":{"line":523,"column":71}},"523":{"start":{"line":524,"column":0},"end":{"line":524,"column":33}},"524":{"start":{"line":525,"column":0},"end":{"line":525,"column":42}},"525":{"start":{"line":526,"column":0},"end":{"line":526,"column":6}},"526":{"start":{"line":527,"column":0},"end":{"line":527,"column":5}},"527":{"start":{"line":528,"column":0},"end":{"line":528,"column":37}},"528":{"start":{"line":529,"column":0},"end":{"line":529,"column":30}},"529":{"start":{"line":530,"column":0},"end":{"line":530,"column":5}},"530":{"start":{"line":531,"column":0},"end":{"line":531,"column":50}},"531":{"start":{"line":532,"column":0},"end":{"line":532,"column":0}},"532":{"start":{"line":533,"column":0},"end":{"line":533,"column":48}},"533":{"start":{"line":534,"column":0},"end":{"line":534,"column":38}},"534":{"start":{"line":535,"column":0},"end":{"line":535,"column":61}},"535":{"start":{"line":536,"column":0},"end":{"line":536,"column":12}},"536":{"start":{"line":537,"column":0},"end":{"line":537,"column":62}},"537":{"start":{"line":538,"column":0},"end":{"line":538,"column":5}},"538":{"start":{"line":539,"column":0},"end":{"line":539,"column":5}},"539":{"start":{"line":540,"column":0},"end":{"line":540,"column":0}},"540":{"start":{"line":541,"column":0},"end":{"line":541,"column":21}},"541":{"start":{"line":542,"column":0},"end":{"line":542,"column":1}},"542":{"start":{"line":543,"column":0},"end":{"line":543,"column":0}},"543":{"start":{"line":544,"column":0},"end":{"line":544,"column":8}},"544":{"start":{"line":545,"column":0},"end":{"line":545,"column":79}},"545":{"start":{"line":546,"column":0},"end":{"line":546,"column":56}},"546":{"start":{"line":547,"column":0},"end":{"line":547,"column":119}},"547":{"start":{"line":548,"column":0},"end":{"line":548,"column":76}},"548":{"start":{"line":549,"column":0},"end":{"line":549,"column":49}},"549":{"start":{"line":550,"column":0},"end":{"line":550,"column":0}},"550":{"start":{"line":551,"column":0},"end":{"line":551,"column":12}},"551":{"start":{"line":552,"column":0},"end":{"line":552,"column":105}},"552":{"start":{"line":553,"column":0},"end":{"line":553,"column":90}},"553":{"start":{"line":554,"column":0},"end":{"line":554,"column":0}},"554":{"start":{"line":555,"column":0},"end":{"line":555,"column":115}},"555":{"start":{"line":556,"column":0},"end":{"line":556,"column":84}},"556":{"start":{"line":557,"column":0},"end":{"line":557,"column":20}},"557":{"start":{"line":558,"column":0},"end":{"line":558,"column":11}},"558":{"start":{"line":559,"column":0},"end":{"line":559,"column":3}},"559":{"start":{"line":560,"column":0},"end":{"line":560,"column":63}},"560":{"start":{"line":561,"column":0},"end":{"line":561,"column":56}},"561":{"start":{"line":562,"column":0},"end":{"line":562,"column":59}},"562":{"start":{"line":563,"column":0},"end":{"line":563,"column":15}},"563":{"start":{"line":564,"column":0},"end":{"line":564,"column":7}},"564":{"start":{"line":565,"column":0},"end":{"line":565,"column":7}},"565":{"start":{"line":566,"column":0},"end":{"line":566,"column":55}},"566":{"start":{"line":567,"column":0},"end":{"line":567,"column":10}},"567":{"start":{"line":568,"column":0},"end":{"line":568,"column":24}},"568":{"start":{"line":569,"column":0},"end":{"line":569,"column":39}},"569":{"start":{"line":570,"column":0},"end":{"line":570,"column":91}},"570":{"start":{"line":571,"column":0},"end":{"line":571,"column":27}},"571":{"start":{"line":572,"column":0},"end":{"line":572,"column":48}},"572":{"start":{"line":573,"column":0},"end":{"line":573,"column":3}},"573":{"start":{"line":574,"column":0},"end":{"line":574,"column":27}},"574":{"start":{"line":575,"column":0},"end":{"line":575,"column":48}},"575":{"start":{"line":576,"column":0},"end":{"line":576,"column":3}},"576":{"start":{"line":577,"column":0},"end":{"line":577,"column":30}},"577":{"start":{"line":578,"column":0},"end":{"line":578,"column":27}},"578":{"start":{"line":579,"column":0},"end":{"line":579,"column":3}},"579":{"start":{"line":580,"column":0},"end":{"line":580,"column":13}},"580":{"start":{"line":581,"column":0},"end":{"line":581,"column":11}},"581":{"start":{"line":582,"column":0},"end":{"line":582,"column":30}},"582":{"start":{"line":583,"column":0},"end":{"line":583,"column":62}},"583":{"start":{"line":584,"column":0},"end":{"line":584,"column":8}},"584":{"start":{"line":585,"column":0},"end":{"line":585,"column":2}},"585":{"start":{"line":586,"column":0},"end":{"line":586,"column":28}},"586":{"start":{"line":587,"column":0},"end":{"line":587,"column":1}},"587":{"start":{"line":588,"column":0},"end":{"line":588,"column":0}},"588":{"start":{"line":589,"column":0},"end":{"line":589,"column":10}},"589":{"start":{"line":590,"column":0},"end":{"line":590,"column":82}},"590":{"start":{"line":591,"column":0},"end":{"line":591,"column":59}},"591":{"start":{"line":592,"column":0},"end":{"line":592,"column":110}},"592":{"start":{"line":593,"column":0},"end":{"line":593,"column":65}},"593":{"start":{"line":594,"column":0},"end":{"line":594,"column":78}},"594":{"start":{"line":595,"column":0},"end":{"line":595,"column":3}},"595":{"start":{"line":596,"column":0},"end":{"line":596,"column":10}},"596":{"start":{"line":597,"column":0},"end":{"line":597,"column":97}},"597":{"start":{"line":598,"column":0},"end":{"line":598,"column":38}},"598":{"start":{"line":599,"column":0},"end":{"line":599,"column":67}},"599":{"start":{"line":600,"column":0},"end":{"line":600,"column":42}},"600":{"start":{"line":601,"column":0},"end":{"line":601,"column":4}},"601":{"start":{"line":602,"column":0},"end":{"line":602,"column":2}},"602":{"start":{"line":603,"column":0},"end":{"line":603,"column":0}},"603":{"start":{"line":604,"column":0},"end":{"line":604,"column":10}},"604":{"start":{"line":605,"column":0},"end":{"line":605,"column":97}},"605":{"start":{"line":606,"column":0},"end":{"line":606,"column":99}},"606":{"start":{"line":607,"column":0},"end":{"line":607,"column":0}},"607":{"start":{"line":608,"column":0},"end":{"line":608,"column":115}},"608":{"start":{"line":609,"column":0},"end":{"line":609,"column":102}},"609":{"start":{"line":610,"column":0},"end":{"line":610,"column":0}},"610":{"start":{"line":611,"column":0},"end":{"line":611,"column":17}},"611":{"start":{"line":612,"column":0},"end":{"line":612,"column":29}},"612":{"start":{"line":613,"column":0},"end":{"line":613,"column":0}},"613":{"start":{"line":614,"column":0},"end":{"line":614,"column":81}},"614":{"start":{"line":615,"column":0},"end":{"line":615,"column":48}},"615":{"start":{"line":616,"column":0},"end":{"line":616,"column":42}},"616":{"start":{"line":617,"column":0},"end":{"line":617,"column":17}},"617":{"start":{"line":618,"column":0},"end":{"line":618,"column":16}},"618":{"start":{"line":619,"column":0},"end":{"line":619,"column":19}},"619":{"start":{"line":620,"column":0},"end":{"line":620,"column":22}},"620":{"start":{"line":621,"column":0},"end":{"line":621,"column":14}},"621":{"start":{"line":622,"column":0},"end":{"line":622,"column":88}},"622":{"start":{"line":623,"column":0},"end":{"line":623,"column":58}},"623":{"start":{"line":624,"column":0},"end":{"line":624,"column":36}},"624":{"start":{"line":625,"column":0},"end":{"line":625,"column":82}},"625":{"start":{"line":626,"column":0},"end":{"line":626,"column":2}},"626":{"start":{"line":627,"column":0},"end":{"line":627,"column":0}},"627":{"start":{"line":628,"column":0},"end":{"line":628,"column":83}},"628":{"start":{"line":629,"column":0},"end":{"line":629,"column":64}},"629":{"start":{"line":630,"column":0},"end":{"line":630,"column":0}},"630":{"start":{"line":631,"column":0},"end":{"line":631,"column":101}},"631":{"start":{"line":632,"column":0},"end":{"line":632,"column":80}},"632":{"start":{"line":633,"column":0},"end":{"line":633,"column":59}},"633":{"start":{"line":634,"column":0},"end":{"line":634,"column":0}},"634":{"start":{"line":635,"column":0},"end":{"line":635,"column":82}},"635":{"start":{"line":636,"column":0},"end":{"line":636,"column":116}},"636":{"start":{"line":637,"column":0},"end":{"line":637,"column":0}},"637":{"start":{"line":638,"column":0},"end":{"line":638,"column":104}},"638":{"start":{"line":639,"column":0},"end":{"line":639,"column":81}},"639":{"start":{"line":640,"column":0},"end":{"line":640,"column":58}},"640":{"start":{"line":641,"column":0},"end":{"line":641,"column":85}},"641":{"start":{"line":642,"column":0},"end":{"line":642,"column":57}},"642":{"start":{"line":643,"column":0},"end":{"line":643,"column":10}},"643":{"start":{"line":644,"column":0},"end":{"line":644,"column":76}},"644":{"start":{"line":645,"column":0},"end":{"line":645,"column":51}},"645":{"start":{"line":646,"column":0},"end":{"line":646,"column":12}},"646":{"start":{"line":647,"column":0},"end":{"line":647,"column":49}},"647":{"start":{"line":648,"column":0},"end":{"line":648,"column":58}},"648":{"start":{"line":649,"column":0},"end":{"line":649,"column":25}},"649":{"start":{"line":650,"column":0},"end":{"line":650,"column":4}},"650":{"start":{"line":651,"column":0},"end":{"line":651,"column":2}},"651":{"start":{"line":652,"column":0},"end":{"line":652,"column":0}},"652":{"start":{"line":653,"column":0},"end":{"line":653,"column":83}},"653":{"start":{"line":654,"column":0},"end":{"line":654,"column":88}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":845,"34":845,"35":845,"36":1,"37":1,"38":1,"39":1,"40":1,"41":1,"42":1,"43":1,"44":1,"45":1,"46":1,"47":1,"48":1,"49":1,"50":1,"51":1,"52":1,"53":1,"54":1,"55":1,"56":1,"57":34,"58":34,"59":1,"60":91,"61":91,"62":91,"63":91,"64":91,"65":91,"66":1,"67":126,"68":126,"69":126,"70":1,"71":1,"72":1,"73":165,"74":165,"75":165,"76":1,"77":0,"78":0,"79":0,"80":1,"81":253,"82":253,"83":253,"84":1,"85":237,"86":237,"87":237,"88":237,"89":237,"90":237,"91":237,"92":237,"93":237,"94":1,"95":28,"96":28,"97":28,"98":1,"99":29,"100":29,"101":29,"102":1,"103":180,"104":180,"105":180,"106":1,"107":0,"108":0,"109":0,"110":1,"111":1,"112":63,"113":63,"114":63,"115":1,"116":160,"117":160,"118":160,"119":160,"120":160,"121":160,"122":160,"123":58,"124":58,"125":160,"126":160,"127":160,"128":160,"129":160,"130":1,"131":1,"132":1,"133":0,"134":0,"135":0,"136":0,"137":0,"138":0,"139":1,"140":1,"141":1,"142":25,"143":25,"144":25,"145":25,"146":25,"147":25,"148":25,"149":25,"150":25,"151":1,"152":1,"153":1,"154":1,"155":1,"156":1,"157":1,"158":1,"159":1,"160":1,"161":1,"162":1,"163":1,"164":1,"165":1,"166":1,"167":1,"168":1,"169":1,"170":1,"171":1,"172":3,"173":3,"174":3,"175":3,"176":3,"177":3,"178":3,"179":3,"180":3,"181":3,"182":3,"183":3,"184":3,"185":3,"186":3,"187":3,"188":3,"189":3,"190":3,"191":3,"192":3,"193":3,"194":3,"195":3,"196":3,"197":3,"198":3,"199":3,"200":3,"201":3,"202":3,"203":3,"204":3,"205":3,"206":3,"207":3,"208":3,"209":1,"210":5,"211":5,"212":5,"213":5,"214":5,"215":5,"216":5,"217":5,"218":5,"219":5,"220":5,"221":5,"222":5,"223":5,"224":5,"225":1,"226":107,"227":107,"228":107,"229":107,"230":1,"231":107,"232":107,"233":107,"234":107,"235":1,"236":99,"237":99,"238":99,"239":1,"240":99,"241":99,"242":99,"243":1,"244":1,"245":1,"246":20,"247":20,"248":20,"249":20,"250":20,"251":20,"252":20,"253":20,"254":20,"255":20,"256":1,"257":20,"258":20,"259":20,"260":20,"261":20,"262":20,"263":20,"264":20,"265":20,"266":20,"267":20,"268":20,"269":1,"270":26,"271":26,"272":26,"273":1,"274":33,"275":33,"276":33,"277":1,"278":1,"279":1,"280":1,"281":1,"282":1,"283":1,"284":1,"285":1,"286":0,"287":0,"288":0,"289":0,"290":0,"291":0,"292":0,"293":0,"294":0,"295":0,"296":0,"297":0,"298":0,"299":0,"300":0,"301":0,"302":0,"303":0,"304":1,"305":1,"306":61,"307":61,"308":61,"309":61,"310":61,"311":61,"312":61,"313":61,"314":61,"315":1,"316":269,"317":269,"318":269,"319":1,"320":102,"321":102,"322":189,"323":189,"324":189,"325":189,"326":189,"327":189,"328":189,"329":102,"330":102,"331":1,"332":76,"333":76,"334":76,"335":76,"336":76,"337":76,"338":76,"339":76,"340":76,"341":76,"342":76,"343":76,"344":76,"345":1,"346":61,"347":61,"348":71,"349":1,"350":1,"351":71,"352":0,"353":0,"354":70,"355":70,"356":70,"357":70,"358":61,"359":61,"360":1,"361":160,"362":160,"363":160,"364":160,"365":160,"366":160,"367":160,"368":160,"369":126,"370":126,"371":126,"372":126,"373":126,"374":160,"375":0,"376":0,"377":0,"378":0,"379":0,"380":160,"381":34,"382":34,"383":34,"384":34,"385":34,"386":160,"387":0,"388":160,"389":160,"390":1,"391":104,"392":104,"393":104,"394":104,"395":104,"396":104,"397":104,"398":104,"399":104,"400":104,"401":104,"402":104,"403":104,"404":942,"405":942,"406":942,"407":942,"408":942,"409":942,"410":942,"411":942,"412":178,"413":178,"414":942,"415":106,"416":106,"417":104,"418":104,"419":104,"420":104,"421":104,"422":104,"423":104,"424":104,"425":104,"426":104,"427":1,"428":103,"429":103,"430":103,"431":103,"432":103,"433":103,"434":103,"435":191,"436":191,"437":191,"438":191,"439":191,"440":191,"441":191,"442":103,"443":103,"444":103,"445":103,"446":1,"447":35,"448":35,"449":35,"450":35,"451":135,"452":35,"453":35,"454":35,"455":240,"456":35,"457":35,"458":35,"459":35,"460":35,"461":35,"462":29,"463":29,"464":29,"465":29,"466":0,"467":0,"468":29,"469":6,"470":6,"471":6,"472":6,"473":6,"474":35,"475":35,"476":1,"477":0,"478":0,"479":0,"480":0,"481":0,"482":0,"483":0,"484":0,"485":0,"486":0,"487":0,"488":0,"489":1,"490":1,"491":33,"492":33,"493":33,"494":33,"495":33,"496":33,"497":33,"498":33,"499":33,"500":33,"501":33,"502":33,"503":33,"504":33,"505":33,"506":33,"507":33,"508":33,"509":33,"510":33,"511":33,"512":33,"513":1,"514":1,"515":34,"516":34,"517":34,"518":34,"519":34,"520":34,"521":34,"522":34,"523":34,"524":34,"525":34,"526":34,"527":34,"528":34,"529":34,"530":34,"531":34,"532":34,"533":10,"534":4,"535":10,"536":6,"537":6,"538":34,"539":34,"540":34,"541":34,"542":1,"543":1,"544":1,"545":1,"546":1,"547":1,"548":1,"549":1,"550":1,"551":1,"552":1,"553":1,"554":92,"555":92,"556":92,"557":28,"558":28,"559":64,"560":64,"561":64,"562":64,"563":64,"564":64,"565":64,"566":64,"567":64,"568":64,"569":64,"570":64,"571":64,"572":64,"573":64,"574":64,"575":64,"576":92,"577":0,"578":0,"579":64,"580":64,"581":64,"582":64,"583":64,"584":64,"585":64,"586":64,"587":1,"588":1,"589":1,"590":1,"591":1,"592":4,"593":0,"594":0,"595":4,"596":4,"597":4,"598":4,"599":4,"600":4,"601":4,"602":1,"603":1,"604":1,"605":1,"606":1,"607":1,"608":1,"609":1,"610":1,"611":1,"612":1,"613":1,"614":1,"615":1,"616":0,"617":0,"618":0,"619":0,"620":0,"621":0,"622":0,"623":0,"624":0,"625":0,"626":1,"627":1,"628":1,"629":1,"630":1,"631":1,"632":1,"633":1,"634":1,"635":1,"636":1,"637":1,"638":1,"639":1,"640":1,"641":0,"642":0,"643":0,"644":0,"645":0,"646":0,"647":0,"648":0,"649":0,"650":0,"651":1,"652":1,"653":1},"branchMap":{"0":{"type":"branch","line":34,"loc":{"start":{"line":34,"column":0},"end":{"line":36,"column":1}},"locations":[{"start":{"line":34,"column":0},"end":{"line":36,"column":1}}]},"1":{"type":"branch","line":57,"loc":{"start":{"line":57,"column":19},"end":{"line":59,"column":2}},"locations":[{"start":{"line":57,"column":19},"end":{"line":59,"column":2}}]},"2":{"type":"branch","line":61,"loc":{"start":{"line":61,"column":0},"end":{"line":66,"column":1}},"locations":[{"start":{"line":61,"column":0},"end":{"line":66,"column":1}}]},"3":{"type":"branch","line":64,"loc":{"start":{"line":64,"column":9},"end":{"line":64,"column":33}},"locations":[{"start":{"line":64,"column":9},"end":{"line":64,"column":33}}]},"4":{"type":"branch","line":68,"loc":{"start":{"line":68,"column":0},"end":{"line":70,"column":1}},"locations":[{"start":{"line":68,"column":0},"end":{"line":70,"column":1}}]},"5":{"type":"branch","line":72,"loc":{"start":{"line":72,"column":27},"end":{"line":72,"column":78}},"locations":[{"start":{"line":72,"column":27},"end":{"line":72,"column":78}}]},"6":{"type":"branch","line":74,"loc":{"start":{"line":74,"column":0},"end":{"line":76,"column":1}},"locations":[{"start":{"line":74,"column":0},"end":{"line":76,"column":1}}]},"7":{"type":"branch","line":82,"loc":{"start":{"line":82,"column":0},"end":{"line":84,"column":1}},"locations":[{"start":{"line":82,"column":0},"end":{"line":84,"column":1}}]},"8":{"type":"branch","line":83,"loc":{"start":{"line":83,"column":18},"end":{"line":83,"column":33}},"locations":[{"start":{"line":83,"column":18},"end":{"line":83,"column":33}}]},"9":{"type":"branch","line":86,"loc":{"start":{"line":86,"column":0},"end":{"line":94,"column":1}},"locations":[{"start":{"line":86,"column":0},"end":{"line":94,"column":1}}]},"10":{"type":"branch","line":92,"loc":{"start":{"line":92,"column":36},"end":{"line":92,"column":57}},"locations":[{"start":{"line":92,"column":36},"end":{"line":92,"column":57}}]},"11":{"type":"branch","line":92,"loc":{"start":{"line":92,"column":58},"end":{"line":92,"column":62}},"locations":[{"start":{"line":92,"column":58},"end":{"line":92,"column":62}}]},"12":{"type":"branch","line":96,"loc":{"start":{"line":96,"column":0},"end":{"line":98,"column":1}},"locations":[{"start":{"line":96,"column":0},"end":{"line":98,"column":1}}]},"13":{"type":"branch","line":100,"loc":{"start":{"line":100,"column":0},"end":{"line":102,"column":1}},"locations":[{"start":{"line":100,"column":0},"end":{"line":102,"column":1}}]},"14":{"type":"branch","line":104,"loc":{"start":{"line":104,"column":0},"end":{"line":106,"column":1}},"locations":[{"start":{"line":104,"column":0},"end":{"line":106,"column":1}}]},"15":{"type":"branch","line":113,"loc":{"start":{"line":113,"column":0},"end":{"line":115,"column":1}},"locations":[{"start":{"line":113,"column":0},"end":{"line":115,"column":1}}]},"16":{"type":"branch","line":117,"loc":{"start":{"line":117,"column":0},"end":{"line":130,"column":1}},"locations":[{"start":{"line":117,"column":0},"end":{"line":130,"column":1}}]},"17":{"type":"branch","line":123,"loc":{"start":{"line":123,"column":27},"end":{"line":125,"column":3}},"locations":[{"start":{"line":123,"column":27},"end":{"line":125,"column":3}}]},"18":{"type":"branch","line":127,"loc":{"start":{"line":127,"column":49},"end":{"line":127,"column":70}},"locations":[{"start":{"line":127,"column":49},"end":{"line":127,"column":70}}]},"19":{"type":"branch","line":142,"loc":{"start":{"line":142,"column":7},"end":{"line":151,"column":1}},"locations":[{"start":{"line":142,"column":7},"end":{"line":151,"column":1}}]},"20":{"type":"branch","line":153,"loc":{"start":{"line":153,"column":7},"end":{"line":171,"column":1}},"locations":[{"start":{"line":153,"column":7},"end":{"line":171,"column":1}}]},"21":{"type":"branch","line":173,"loc":{"start":{"line":173,"column":0},"end":{"line":209,"column":1}},"locations":[{"start":{"line":173,"column":0},"end":{"line":209,"column":1}}]},"22":{"type":"branch","line":211,"loc":{"start":{"line":211,"column":0},"end":{"line":225,"column":1}},"locations":[{"start":{"line":211,"column":0},"end":{"line":225,"column":1}}]},"23":{"type":"branch","line":227,"loc":{"start":{"line":227,"column":0},"end":{"line":230,"column":1}},"locations":[{"start":{"line":227,"column":0},"end":{"line":230,"column":1}}]},"24":{"type":"branch","line":232,"loc":{"start":{"line":232,"column":0},"end":{"line":235,"column":1}},"locations":[{"start":{"line":232,"column":0},"end":{"line":235,"column":1}}]},"25":{"type":"branch","line":237,"loc":{"start":{"line":237,"column":0},"end":{"line":239,"column":1}},"locations":[{"start":{"line":237,"column":0},"end":{"line":239,"column":1}}]},"26":{"type":"branch","line":241,"loc":{"start":{"line":241,"column":0},"end":{"line":243,"column":1}},"locations":[{"start":{"line":241,"column":0},"end":{"line":243,"column":1}}]},"27":{"type":"branch","line":247,"loc":{"start":{"line":247,"column":0},"end":{"line":256,"column":1}},"locations":[{"start":{"line":247,"column":0},"end":{"line":256,"column":1}}]},"28":{"type":"branch","line":258,"loc":{"start":{"line":258,"column":0},"end":{"line":269,"column":1}},"locations":[{"start":{"line":258,"column":0},"end":{"line":269,"column":1}}]},"29":{"type":"branch","line":271,"loc":{"start":{"line":271,"column":0},"end":{"line":273,"column":1}},"locations":[{"start":{"line":271,"column":0},"end":{"line":273,"column":1}}]},"30":{"type":"branch","line":275,"loc":{"start":{"line":275,"column":0},"end":{"line":277,"column":1}},"locations":[{"start":{"line":275,"column":0},"end":{"line":277,"column":1}}]},"31":{"type":"branch","line":307,"loc":{"start":{"line":307,"column":0},"end":{"line":315,"column":1}},"locations":[{"start":{"line":307,"column":0},"end":{"line":315,"column":1}}]},"32":{"type":"branch","line":308,"loc":{"start":{"line":308,"column":40},"end":{"line":308,"column":70}},"locations":[{"start":{"line":308,"column":40},"end":{"line":308,"column":70}}]},"33":{"type":"branch","line":309,"loc":{"start":{"line":309,"column":35},"end":{"line":309,"column":77}},"locations":[{"start":{"line":309,"column":35},"end":{"line":309,"column":77}}]},"34":{"type":"branch","line":317,"loc":{"start":{"line":317,"column":0},"end":{"line":319,"column":1}},"locations":[{"start":{"line":317,"column":0},"end":{"line":319,"column":1}}]},"35":{"type":"branch","line":318,"loc":{"start":{"line":318,"column":57},"end":{"line":318,"column":63}},"locations":[{"start":{"line":318,"column":57},"end":{"line":318,"column":63}}]},"36":{"type":"branch","line":321,"loc":{"start":{"line":321,"column":0},"end":{"line":331,"column":1}},"locations":[{"start":{"line":321,"column":0},"end":{"line":331,"column":1}}]},"37":{"type":"branch","line":322,"loc":{"start":{"line":322,"column":18},"end":{"line":330,"column":3}},"locations":[{"start":{"line":322,"column":18},"end":{"line":330,"column":3}}]},"38":{"type":"branch","line":333,"loc":{"start":{"line":333,"column":0},"end":{"line":345,"column":1}},"locations":[{"start":{"line":333,"column":0},"end":{"line":345,"column":1}}]},"39":{"type":"branch","line":347,"loc":{"start":{"line":347,"column":0},"end":{"line":360,"column":1}},"locations":[{"start":{"line":347,"column":0},"end":{"line":360,"column":1}}]},"40":{"type":"branch","line":348,"loc":{"start":{"line":348,"column":18},"end":{"line":359,"column":3}},"locations":[{"start":{"line":348,"column":18},"end":{"line":359,"column":3}}]},"41":{"type":"branch","line":349,"loc":{"start":{"line":349,"column":39},"end":{"line":351,"column":5}},"locations":[{"start":{"line":349,"column":39},"end":{"line":351,"column":5}}]},"42":{"type":"branch","line":352,"loc":{"start":{"line":352,"column":-1},"end":{"line":352,"column":23}},"locations":[{"start":{"line":352,"column":-1},"end":{"line":352,"column":23}}]},"43":{"type":"branch","line":352,"loc":{"start":{"line":352,"column":23},"end":{"line":354,"column":5}},"locations":[{"start":{"line":352,"column":23},"end":{"line":354,"column":5}}]},"44":{"type":"branch","line":355,"loc":{"start":{"line":355,"column":-1},"end":{"line":359,"column":3}},"locations":[{"start":{"line":355,"column":-1},"end":{"line":359,"column":3}}]},"45":{"type":"branch","line":362,"loc":{"start":{"line":362,"column":0},"end":{"line":390,"column":1}},"locations":[{"start":{"line":362,"column":0},"end":{"line":390,"column":1}}]},"46":{"type":"branch","line":369,"loc":{"start":{"line":369,"column":4},"end":{"line":374,"column":5}},"locations":[{"start":{"line":369,"column":4},"end":{"line":374,"column":5}}]},"47":{"type":"branch","line":375,"loc":{"start":{"line":375,"column":4},"end":{"line":380,"column":5}},"locations":[{"start":{"line":375,"column":4},"end":{"line":380,"column":5}}]},"48":{"type":"branch","line":381,"loc":{"start":{"line":381,"column":4},"end":{"line":386,"column":5}},"locations":[{"start":{"line":381,"column":4},"end":{"line":386,"column":5}}]},"49":{"type":"branch","line":387,"loc":{"start":{"line":387,"column":4},"end":{"line":388,"column":56}},"locations":[{"start":{"line":387,"column":4},"end":{"line":388,"column":56}}]},"50":{"type":"branch","line":392,"loc":{"start":{"line":392,"column":0},"end":{"line":427,"column":1}},"locations":[{"start":{"line":392,"column":0},"end":{"line":427,"column":1}}]},"51":{"type":"branch","line":404,"loc":{"start":{"line":404,"column":34},"end":{"line":418,"column":3}},"locations":[{"start":{"line":404,"column":34},"end":{"line":418,"column":3}}]},"52":{"type":"branch","line":412,"loc":{"start":{"line":412,"column":22},"end":{"line":414,"column":5}},"locations":[{"start":{"line":412,"column":22},"end":{"line":414,"column":5}}]},"53":{"type":"branch","line":415,"loc":{"start":{"line":415,"column":25},"end":{"line":417,"column":5}},"locations":[{"start":{"line":415,"column":25},"end":{"line":417,"column":5}}]},"54":{"type":"branch","line":429,"loc":{"start":{"line":429,"column":0},"end":{"line":446,"column":1}},"locations":[{"start":{"line":429,"column":0},"end":{"line":446,"column":1}}]},"55":{"type":"branch","line":435,"loc":{"start":{"line":435,"column":18},"end":{"line":443,"column":3}},"locations":[{"start":{"line":435,"column":18},"end":{"line":443,"column":3}}]},"56":{"type":"branch","line":437,"loc":{"start":{"line":437,"column":32},"end":{"line":437,"column":42}},"locations":[{"start":{"line":437,"column":32},"end":{"line":437,"column":42}}]},"57":{"type":"branch","line":438,"loc":{"start":{"line":438,"column":34},"end":{"line":438,"column":58}},"locations":[{"start":{"line":438,"column":34},"end":{"line":438,"column":58}}]},"58":{"type":"branch","line":438,"loc":{"start":{"line":438,"column":59},"end":{"line":438,"column":63}},"locations":[{"start":{"line":438,"column":59},"end":{"line":438,"column":63}}]},"59":{"type":"branch","line":436,"loc":{"start":{"line":436,"column":41},"end":{"line":436,"column":64}},"locations":[{"start":{"line":436,"column":41},"end":{"line":436,"column":64}}]},"60":{"type":"branch","line":448,"loc":{"start":{"line":448,"column":0},"end":{"line":476,"column":1}},"locations":[{"start":{"line":448,"column":0},"end":{"line":476,"column":1}}]},"61":{"type":"branch","line":462,"loc":{"start":{"line":462,"column":4},"end":{"line":469,"column":3}},"locations":[{"start":{"line":462,"column":4},"end":{"line":469,"column":3}}]},"62":{"type":"branch","line":466,"loc":{"start":{"line":466,"column":5},"end":{"line":468,"column":5}},"locations":[{"start":{"line":466,"column":5},"end":{"line":468,"column":5}}]},"63":{"type":"branch","line":470,"loc":{"start":{"line":470,"column":-1},"end":{"line":475,"column":47}},"locations":[{"start":{"line":470,"column":-1},"end":{"line":475,"column":47}}]},"64":{"type":"branch","line":475,"loc":{"start":{"line":475,"column":48},"end":{"line":475,"column":54}},"locations":[{"start":{"line":475,"column":48},"end":{"line":475,"column":54}}]},"65":{"type":"branch","line":451,"loc":{"start":{"line":451,"column":17},"end":{"line":453,"column":3}},"locations":[{"start":{"line":451,"column":17},"end":{"line":453,"column":3}}]},"66":{"type":"branch","line":455,"loc":{"start":{"line":455,"column":20},"end":{"line":457,"column":3}},"locations":[{"start":{"line":455,"column":20},"end":{"line":457,"column":3}}]},"67":{"type":"branch","line":472,"loc":{"start":{"line":472,"column":9},"end":{"line":472,"column":72}},"locations":[{"start":{"line":472,"column":9},"end":{"line":472,"column":72}}]},"68":{"type":"branch","line":472,"loc":{"start":{"line":472,"column":36},"end":{"line":472,"column":71}},"locations":[{"start":{"line":472,"column":36},"end":{"line":472,"column":71}}]},"69":{"type":"branch","line":491,"loc":{"start":{"line":491,"column":7},"end":{"line":513,"column":1}},"locations":[{"start":{"line":491,"column":7},"end":{"line":513,"column":1}}]},"70":{"type":"branch","line":512,"loc":{"start":{"line":512,"column":21},"end":{"line":512,"column":45}},"locations":[{"start":{"line":512,"column":21},"end":{"line":512,"column":45}}]},"71":{"type":"branch","line":515,"loc":{"start":{"line":515,"column":7},"end":{"line":542,"column":1}},"locations":[{"start":{"line":515,"column":7},"end":{"line":542,"column":1}}]},"72":{"type":"branch","line":533,"loc":{"start":{"line":533,"column":18},"end":{"line":539,"column":3}},"locations":[{"start":{"line":533,"column":18},"end":{"line":539,"column":3}}]},"73":{"type":"branch","line":534,"loc":{"start":{"line":534,"column":37},"end":{"line":536,"column":11}},"locations":[{"start":{"line":534,"column":37},"end":{"line":536,"column":11}}]},"74":{"type":"branch","line":536,"loc":{"start":{"line":536,"column":5},"end":{"line":538,"column":5}},"locations":[{"start":{"line":536,"column":5},"end":{"line":538,"column":5}}]},"75":{"type":"branch","line":545,"loc":{"start":{"line":545,"column":29},"end":{"line":546,"column":55}},"locations":[{"start":{"line":545,"column":29},"end":{"line":546,"column":55}}]},"76":{"type":"branch","line":547,"loc":{"start":{"line":547,"column":34},"end":{"line":547,"column":118}},"locations":[{"start":{"line":547,"column":34},"end":{"line":547,"column":118}}]},"77":{"type":"branch","line":548,"loc":{"start":{"line":548,"column":31},"end":{"line":549,"column":48}},"locations":[{"start":{"line":548,"column":31},"end":{"line":549,"column":48}}]},"78":{"type":"branch","line":552,"loc":{"start":{"line":552,"column":33},"end":{"line":553,"column":89}},"locations":[{"start":{"line":552,"column":33},"end":{"line":553,"column":89}}]},"79":{"type":"branch","line":555,"loc":{"start":{"line":555,"column":0},"end":{"line":587,"column":1}},"locations":[{"start":{"line":555,"column":0},"end":{"line":587,"column":1}}]},"80":{"type":"branch","line":556,"loc":{"start":{"line":556,"column":30},"end":{"line":556,"column":83}},"locations":[{"start":{"line":556,"column":30},"end":{"line":556,"column":83}}]},"81":{"type":"branch","line":557,"loc":{"start":{"line":557,"column":19},"end":{"line":559,"column":3}},"locations":[{"start":{"line":557,"column":19},"end":{"line":559,"column":3}}]},"82":{"type":"branch","line":560,"loc":{"start":{"line":560,"column":-1},"end":{"line":577,"column":29}},"locations":[{"start":{"line":560,"column":-1},"end":{"line":577,"column":29}}]},"83":{"type":"branch","line":577,"loc":{"start":{"line":577,"column":29},"end":{"line":579,"column":3}},"locations":[{"start":{"line":577,"column":29},"end":{"line":579,"column":3}}]},"84":{"type":"branch","line":580,"loc":{"start":{"line":580,"column":-1},"end":{"line":587,"column":1}},"locations":[{"start":{"line":580,"column":-1},"end":{"line":587,"column":1}}]},"85":{"type":"branch","line":590,"loc":{"start":{"line":590,"column":30},"end":{"line":591,"column":58}},"locations":[{"start":{"line":590,"column":30},"end":{"line":591,"column":58}}]},"86":{"type":"branch","line":592,"loc":{"start":{"line":592,"column":32},"end":{"line":602,"column":2}},"locations":[{"start":{"line":592,"column":32},"end":{"line":602,"column":2}}]},"87":{"type":"branch","line":593,"loc":{"start":{"line":593,"column":64},"end":{"line":595,"column":3}},"locations":[{"start":{"line":593,"column":64},"end":{"line":595,"column":3}}]},"88":{"type":"branch","line":597,"loc":{"start":{"line":597,"column":34},"end":{"line":597,"column":45}},"locations":[{"start":{"line":597,"column":34},"end":{"line":597,"column":45}}]},"89":{"type":"branch","line":599,"loc":{"start":{"line":599,"column":59},"end":{"line":599,"column":63}},"locations":[{"start":{"line":599,"column":59},"end":{"line":599,"column":63}}]},"90":{"type":"branch","line":605,"loc":{"start":{"line":605,"column":31},"end":{"line":606,"column":98}},"locations":[{"start":{"line":605,"column":31},"end":{"line":606,"column":98}}]},"91":{"type":"branch","line":608,"loc":{"start":{"line":608,"column":33},"end":{"line":609,"column":101}},"locations":[{"start":{"line":608,"column":33},"end":{"line":609,"column":101}}]}},"b":{"0":[845],"1":[34],"2":[91],"3":[125],"4":[126],"5":[810],"6":[165],"7":[253],"8":[686],"9":[237],"10":[28],"11":[209],"12":[28],"13":[29],"14":[180],"15":[63],"16":[160],"17":[58],"18":[126],"19":[25],"20":[1],"21":[3],"22":[5],"23":[107],"24":[107],"25":[99],"26":[99],"27":[20],"28":[20],"29":[26],"30":[33],"31":[61],"32":[61],"33":[71],"34":[269],"35":[0],"36":[102],"37":[189],"38":[76],"39":[61],"40":[71],"41":[1],"42":[70],"43":[0],"44":[70],"45":[160],"46":[126],"47":[0],"48":[34],"49":[0],"50":[104],"51":[942],"52":[178],"53":[106],"54":[103],"55":[191],"56":[0],"57":[131],"58":[60],"59":[263],"60":[35],"61":[29],"62":[0],"63":[6],"64":[0],"65":[135],"66":[240],"67":[15],"68":[28],"69":[33],"70":[17],"71":[34],"72":[10],"73":[4],"74":[6],"75":[1],"76":[4],"77":[4],"78":[8],"79":[92],"80":[64],"81":[28],"82":[64],"83":[0],"84":[64],"85":[7],"86":[4],"87":[0],"88":[0],"89":[0],"90":[11],"91":[16]},"fnMap":{"0":{"name":"isQuery","decl":{"start":{"line":34,"column":0},"end":{"line":36,"column":1}},"loc":{"start":{"line":34,"column":0},"end":{"line":36,"column":1}},"line":34},"1":{"name":"byTagOrder","decl":{"start":{"line":57,"column":19},"end":{"line":59,"column":2}},"loc":{"start":{"line":57,"column":19},"end":{"line":59,"column":2}},"line":57},"2":{"name":"smartTags","decl":{"start":{"line":61,"column":0},"end":{"line":66,"column":1}},"loc":{"start":{"line":61,"column":0},"end":{"line":66,"column":1}},"line":61},"3":{"name":"getVirtualFkTag","decl":{"start":{"line":68,"column":0},"end":{"line":70,"column":1}},"loc":{"start":{"line":68,"column":0},"end":{"line":70,"column":1}},"line":68},"4":{"name":"underscored","decl":{"start":{"line":72,"column":27},"end":{"line":72,"column":78}},"loc":{"start":{"line":72,"column":27},"end":{"line":72,"column":78}},"line":72},"5":{"name":"getFkConstraint","decl":{"start":{"line":74,"column":0},"end":{"line":76,"column":1}},"loc":{"start":{"line":74,"column":0},"end":{"line":76,"column":1}},"line":74},"6":{"name":"getUniqConstraint","decl":{"start":{"line":78,"column":0},"end":{"line":80,"column":1}},"loc":{"start":{"line":78,"column":0},"end":{"line":80,"column":1}},"line":78},"7":{"name":"escapedName","decl":{"start":{"line":82,"column":0},"end":{"line":84,"column":1}},"loc":{"start":{"line":82,"column":0},"end":{"line":84,"column":1}},"line":82},"8":{"name":"commentOn","decl":{"start":{"line":86,"column":0},"end":{"line":94,"column":1}},"loc":{"start":{"line":86,"column":0},"end":{"line":94,"column":1}},"line":86},"9":{"name":"commentConstraintQuery","decl":{"start":{"line":96,"column":0},"end":{"line":98,"column":1}},"loc":{"start":{"line":96,"column":0},"end":{"line":98,"column":1}},"line":96},"10":{"name":"commentTableQuery","decl":{"start":{"line":100,"column":0},"end":{"line":102,"column":1}},"loc":{"start":{"line":100,"column":0},"end":{"line":102,"column":1}},"line":100},"11":{"name":"commentColumnQuery","decl":{"start":{"line":104,"column":0},"end":{"line":106,"column":1}},"loc":{"start":{"line":104,"column":0},"end":{"line":106,"column":1}},"line":104},"12":{"name":"commentOnFunction","decl":{"start":{"line":108,"column":0},"end":{"line":110,"column":1}},"loc":{"start":{"line":108,"column":0},"end":{"line":110,"column":1}},"line":108},"13":{"name":"constraintDeferrableQuery","decl":{"start":{"line":113,"column":0},"end":{"line":115,"column":1}},"loc":{"start":{"line":113,"column":0},"end":{"line":115,"column":1}},"line":113},"14":{"name":"addTagsToForeignKeyMap","decl":{"start":{"line":117,"column":0},"end":{"line":130,"column":1}},"loc":{"start":{"line":117,"column":0},"end":{"line":130,"column":1}},"line":117},"15":{"name":"createUniqueIndexQuery","decl":{"start":{"line":134,"column":0},"end":{"line":139,"column":1}},"loc":{"start":{"line":134,"column":0},"end":{"line":139,"column":1}},"line":134},"16":{"name":"getTriggers","decl":{"start":{"line":142,"column":7},"end":{"line":151,"column":1}},"loc":{"start":{"line":142,"column":7},"end":{"line":151,"column":1}},"line":142},"17":{"name":"getFunctions","decl":{"start":{"line":153,"column":7},"end":{"line":171,"column":1}},"loc":{"start":{"line":153,"column":7},"end":{"line":171,"column":1}},"line":153},"18":{"name":"createSendNotificationTriggerFunction","decl":{"start":{"line":173,"column":0},"end":{"line":209,"column":1}},"loc":{"start":{"line":173,"column":0},"end":{"line":209,"column":1}},"line":173},"19":{"name":"createNotifyTrigger","decl":{"start":{"line":211,"column":0},"end":{"line":225,"column":1}},"loc":{"start":{"line":211,"column":0},"end":{"line":225,"column":1}},"line":211},"20":{"name":"dropTrigger","decl":{"start":{"line":227,"column":0},"end":{"line":230,"column":1}},"loc":{"start":{"line":227,"column":0},"end":{"line":230,"column":1}},"line":227},"21":{"name":"dropNotifyTrigger","decl":{"start":{"line":232,"column":0},"end":{"line":235,"column":1}},"loc":{"start":{"line":232,"column":0},"end":{"line":235,"column":1}},"line":232},"22":{"name":"dropFunction","decl":{"start":{"line":237,"column":0},"end":{"line":239,"column":1}},"loc":{"start":{"line":237,"column":0},"end":{"line":239,"column":1}},"line":237},"23":{"name":"dropNotifyFunction","decl":{"start":{"line":241,"column":0},"end":{"line":243,"column":1}},"loc":{"start":{"line":241,"column":0},"end":{"line":243,"column":1}},"line":241},"24":{"name":"createSchemaTrigger","decl":{"start":{"line":247,"column":0},"end":{"line":256,"column":1}},"loc":{"start":{"line":247,"column":0},"end":{"line":256,"column":1}},"line":247},"25":{"name":"createSchemaTriggerFunction","decl":{"start":{"line":258,"column":0},"end":{"line":269,"column":1}},"loc":{"start":{"line":258,"column":0},"end":{"line":269,"column":1}},"line":258},"26":{"name":"enumNameToHash","decl":{"start":{"line":271,"column":0},"end":{"line":273,"column":1}},"loc":{"start":{"line":271,"column":0},"end":{"line":273,"column":1}},"line":271},"27":{"name":"getExistedIndexesQuery","decl":{"start":{"line":275,"column":0},"end":{"line":277,"column":1}},"loc":{"start":{"line":275,"column":0},"end":{"line":277,"column":1}},"line":275},"28":{"name":"sqlIterator","decl":{"start":{"line":286,"column":27},"end":{"line":304,"column":2}},"loc":{"start":{"line":286,"column":27},"end":{"line":304,"column":2}},"line":286},"29":{"name":"addHistoricalIdIndex","decl":{"start":{"line":307,"column":0},"end":{"line":315,"column":1}},"loc":{"start":{"line":307,"column":0},"end":{"line":315,"column":1}},"line":307},"30":{"name":"generateHashedIndexName","decl":{"start":{"line":317,"column":0},"end":{"line":319,"column":1}},"loc":{"start":{"line":317,"column":0},"end":{"line":319,"column":1}},"line":317},"31":{"name":"updateIndexesName","decl":{"start":{"line":321,"column":0},"end":{"line":331,"column":1}},"loc":{"start":{"line":321,"column":0},"end":{"line":331,"column":1}},"line":321},"32":{"name":"addIdAndBlockRangeAttributes","decl":{"start":{"line":333,"column":0},"end":{"line":345,"column":1}},"loc":{"start":{"line":333,"column":0},"end":{"line":345,"column":1}},"line":333},"33":{"name":"addBlockRangeColumnToIndexes","decl":{"start":{"line":347,"column":0},"end":{"line":360,"column":1}},"loc":{"start":{"line":347,"column":0},"end":{"line":360,"column":1}},"line":347},"34":{"name":"addRelationToMap","decl":{"start":{"line":362,"column":0},"end":{"line":390,"column":1}},"loc":{"start":{"line":362,"column":0},"end":{"line":390,"column":1}},"line":362},"35":{"name":"generateCreateTableQuery","decl":{"start":{"line":392,"column":0},"end":{"line":427,"column":1}},"loc":{"start":{"line":392,"column":0},"end":{"line":427,"column":1}},"line":392},"36":{"name":"generateCreateIndexQuery","decl":{"start":{"line":429,"column":0},"end":{"line":446,"column":1}},"loc":{"start":{"line":429,"column":0},"end":{"line":446,"column":1}},"line":429},"37":{"name":"sortModels","decl":{"start":{"line":448,"column":0},"end":{"line":476,"column":1}},"loc":{"start":{"line":448,"column":0},"end":{"line":476,"column":1}},"line":448},"38":{"name":"validateNotifyTriggers","decl":{"start":{"line":478,"column":0},"end":{"line":489,"column":1}},"loc":{"start":{"line":478,"column":0},"end":{"line":489,"column":1}},"line":478},"39":{"name":"getExistingForeignKeys","decl":{"start":{"line":491,"column":7},"end":{"line":513,"column":1}},"loc":{"start":{"line":491,"column":7},"end":{"line":513,"column":1}},"line":491},"40":{"name":"getExistingEnums","decl":{"start":{"line":515,"column":7},"end":{"line":542,"column":1}},"loc":{"start":{"line":515,"column":7},"end":{"line":542,"column":1}},"line":515},"41":{"name":"dropEnumQuery","decl":{"start":{"line":545,"column":29},"end":{"line":546,"column":55}},"loc":{"start":{"line":545,"column":29},"end":{"line":546,"column":55}},"line":545},"42":{"name":"commentOnEnumQuery","decl":{"start":{"line":547,"column":34},"end":{"line":547,"column":118}},"loc":{"start":{"line":547,"column":34},"end":{"line":547,"column":118}},"line":547},"43":{"name":"createEnumQuery","decl":{"start":{"line":548,"column":31},"end":{"line":549,"column":48}},"loc":{"start":{"line":548,"column":31},"end":{"line":549,"column":48}},"line":548},"44":{"name":"dropRelationQuery","decl":{"start":{"line":552,"column":33},"end":{"line":553,"column":89}},"loc":{"start":{"line":552,"column":33},"end":{"line":553,"column":89}},"line":552},"45":{"name":"generateForeignKeyQuery","decl":{"start":{"line":555,"column":0},"end":{"line":587,"column":1}},"loc":{"start":{"line":555,"column":0},"end":{"line":587,"column":1}},"line":555},"46":{"name":"dropIndexQuery","decl":{"start":{"line":590,"column":30},"end":{"line":591,"column":58}},"loc":{"start":{"line":590,"column":30},"end":{"line":591,"column":58}},"line":590},"47":{"name":"createIndexQuery","decl":{"start":{"line":592,"column":32},"end":{"line":602,"column":2}},"loc":{"start":{"line":592,"column":32},"end":{"line":602,"column":2}},"line":592},"48":{"name":"dropColumnQuery","decl":{"start":{"line":605,"column":31},"end":{"line":606,"column":98}},"loc":{"start":{"line":605,"column":31},"end":{"line":606,"column":98}},"line":605},"49":{"name":"createColumnQuery","decl":{"start":{"line":608,"column":33},"end":{"line":609,"column":101}},"loc":{"start":{"line":608,"column":33},"end":{"line":609,"column":101}},"line":608},"50":{"name":"dropTsVectorColumnQuery","decl":{"start":{"line":614,"column":39},"end":{"line":615,"column":47}},"loc":{"start":{"line":614,"column":39},"end":{"line":615,"column":47}},"line":614},"51":{"name":"createTsVectorColumnQuery","decl":{"start":{"line":616,"column":41},"end":{"line":626,"column":2}},"loc":{"start":{"line":616,"column":41},"end":{"line":626,"column":2}},"line":616},"52":{"name":"createTsVectorCommentQuery","decl":{"start":{"line":628,"column":42},"end":{"line":629,"column":63}},"loc":{"start":{"line":628,"column":42},"end":{"line":629,"column":63}},"line":628},"53":{"name":"tsVectorIndexName","decl":{"start":{"line":631,"column":26},"end":{"line":631,"column":100}},"loc":{"start":{"line":631,"column":26},"end":{"line":631,"column":100}},"line":631},"54":{"name":"dropTsVectorIndexQuery","decl":{"start":{"line":632,"column":38},"end":{"line":633,"column":58}},"loc":{"start":{"line":632,"column":38},"end":{"line":633,"column":58}},"line":632},"55":{"name":"createTsVectorIndexQuery","decl":{"start":{"line":635,"column":40},"end":{"line":636,"column":115}},"loc":{"start":{"line":635,"column":40},"end":{"line":636,"column":115}},"line":635},"56":{"name":"searchFunctionName","decl":{"start":{"line":638,"column":27},"end":{"line":638,"column":103}},"loc":{"start":{"line":638,"column":27},"end":{"line":638,"column":103}},"line":638},"57":{"name":"dropSearchFunctionQuery","decl":{"start":{"line":639,"column":39},"end":{"line":640,"column":57}},"loc":{"start":{"line":639,"column":39},"end":{"line":640,"column":57}},"line":639},"58":{"name":"createSearchFunctionQuery","decl":{"start":{"line":641,"column":41},"end":{"line":651,"column":2}},"loc":{"start":{"line":641,"column":41},"end":{"line":651,"column":2}},"line":641},"59":{"name":"commentSearchFunctionQuery","decl":{"start":{"line":653,"column":42},"end":{"line":654,"column":87}},"loc":{"start":{"line":653,"column":42},"end":{"line":654,"column":87}},"line":653}},"f":{"0":845,"1":34,"2":91,"3":126,"4":810,"5":165,"6":0,"7":253,"8":237,"9":28,"10":29,"11":180,"12":0,"13":63,"14":160,"15":0,"16":25,"17":1,"18":3,"19":5,"20":107,"21":107,"22":99,"23":99,"24":20,"25":20,"26":26,"27":33,"28":0,"29":61,"30":269,"31":102,"32":76,"33":61,"34":160,"35":104,"36":103,"37":35,"38":0,"39":33,"40":34,"41":1,"42":4,"43":4,"44":8,"45":92,"46":7,"47":4,"48":11,"49":16,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"59":0}},"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/events.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/events.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":26}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":33}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":38}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":34}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":46}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":48}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":38}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":50}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":39}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":39}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":37}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":48}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":53}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":18}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":1}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":0}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":22}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":33}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":27}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":1}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":0}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":38}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":17}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":20}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":1}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":0}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":45}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":30}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":20}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":1}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":0}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":37}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":17}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":1}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":0}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":35}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":17}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":1}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":34}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":11}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":1}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":0}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":41}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":16}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":19}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":22}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":1}}},"s":{"0":1,"1":1,"2":1,"3":5,"4":5,"5":5,"6":5,"7":5,"8":5,"9":5,"10":5,"11":5,"12":5,"13":5,"14":5,"15":5,"16":5,"17":5,"18":1,"19":5,"20":5,"21":5,"22":5,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"38":1,"39":1,"40":1,"41":1,"42":1,"43":1,"44":1,"45":1,"46":1,"47":1,"48":1,"49":1},"branchMap":{"0":{"type":"branch","line":4,"loc":{"start":{"line":4,"column":0},"end":{"line":18,"column":1}},"locations":[{"start":{"line":4,"column":0},"end":{"line":18,"column":1}}]},"1":{"type":"branch","line":20,"loc":{"start":{"line":20,"column":0},"end":{"line":23,"column":1}},"locations":[{"start":{"line":20,"column":0},"end":{"line":23,"column":1}}]}},"b":{"0":[5],"1":[5]},"fnMap":{},"f":{}},"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/index.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/index.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":24}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":0}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":30}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":39}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":25}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":27}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":25}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":28}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":21}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":23}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":24}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":26}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":30}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":24}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1},"branchMap":{},"b":{},"fnMap":{},"f":{}},"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/indexer/StoreOperations.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/indexer/StoreOperations.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":41}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":102}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":39}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":55}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":0}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":30}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":35}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":0}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":52}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":40}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":25}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":7}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":3}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":0}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":79}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":45}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":55}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":19}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":37}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":58}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":14}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":76}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":7}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":12}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":89}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":28}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":82}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":7}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":50}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":88}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":54}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":0}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":62}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":102}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":22}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":65}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":11}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":0}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":58}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":9}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":7}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":5}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":110}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":3}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":0}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":78}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":46}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":27}},"51":{"start":{"line":52,"column":0},"end":{"line":52,"column":25}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":17}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":6}},"54":{"start":{"line":55,"column":0},"end":{"line":55,"column":99}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":3}},"56":{"start":{"line":57,"column":0},"end":{"line":57,"column":0}},"57":{"start":{"line":58,"column":0},"end":{"line":58,"column":17}},"58":{"start":{"line":59,"column":0},"end":{"line":59,"column":16}},"59":{"start":{"line":60,"column":0},"end":{"line":60,"column":42}},"60":{"start":{"line":61,"column":0},"end":{"line":61,"column":3}},"61":{"start":{"line":62,"column":0},"end":{"line":62,"column":0}},"62":{"start":{"line":63,"column":0},"end":{"line":63,"column":35}},"63":{"start":{"line":64,"column":0},"end":{"line":64,"column":32}},"64":{"start":{"line":65,"column":0},"end":{"line":65,"column":3}},"65":{"start":{"line":66,"column":0},"end":{"line":66,"column":0}},"66":{"start":{"line":67,"column":0},"end":{"line":67,"column":47}},"67":{"start":{"line":68,"column":0},"end":{"line":68,"column":47}},"68":{"start":{"line":69,"column":0},"end":{"line":69,"column":46}},"69":{"start":{"line":70,"column":0},"end":{"line":70,"column":12}},"70":{"start":{"line":71,"column":0},"end":{"line":71,"column":90}},"71":{"start":{"line":72,"column":0},"end":{"line":72,"column":5}},"72":{"start":{"line":73,"column":0},"end":{"line":73,"column":3}},"73":{"start":{"line":74,"column":0},"end":{"line":74,"column":0}},"74":{"start":{"line":75,"column":0},"end":{"line":75,"column":32}},"75":{"start":{"line":76,"column":0},"end":{"line":76,"column":43}},"76":{"start":{"line":77,"column":0},"end":{"line":77,"column":3}},"77":{"start":{"line":78,"column":0},"end":{"line":78,"column":1}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":4,"13":4,"14":4,"15":4,"16":1,"17":1,"18":8,"19":8,"20":2,"21":2,"22":1,"23":1,"24":1,"25":1,"26":8,"27":6,"28":6,"29":0,"30":0,"31":6,"32":47,"33":47,"34":47,"35":47,"36":21,"37":21,"38":0,"39":0,"40":21,"41":21,"42":21,"43":47,"44":6,"45":7,"46":7,"47":1,"48":1,"49":8,"50":8,"51":8,"52":8,"53":8,"54":8,"55":8,"56":1,"57":1,"58":2,"59":2,"60":2,"61":1,"62":1,"63":3,"64":3,"65":1,"66":1,"67":2,"68":2,"69":2,"70":0,"71":0,"72":2,"73":1,"74":1,"75":4,"76":4,"77":1},"branchMap":{"0":{"type":"branch","line":12,"loc":{"start":{"line":12,"column":2},"end":{"line":16,"column":3}},"locations":[{"start":{"line":12,"column":2},"end":{"line":16,"column":3}}]},"1":{"type":"branch","line":18,"loc":{"start":{"line":18,"column":10},"end":{"line":47,"column":3}},"locations":[{"start":{"line":18,"column":10},"end":{"line":47,"column":3}}]},"2":{"type":"branch","line":20,"loc":{"start":{"line":20,"column":54},"end":{"line":27,"column":11}},"locations":[{"start":{"line":20,"column":54},"end":{"line":27,"column":11}}]},"3":{"type":"branch","line":22,"loc":{"start":{"line":22,"column":36},"end":{"line":26,"column":7}},"locations":[{"start":{"line":22,"column":36},"end":{"line":26,"column":7}}]},"4":{"type":"branch","line":27,"loc":{"start":{"line":27,"column":5},"end":{"line":45,"column":5}},"locations":[{"start":{"line":27,"column":5},"end":{"line":45,"column":5}}]},"5":{"type":"branch","line":29,"loc":{"start":{"line":29,"column":27},"end":{"line":31,"column":7}},"locations":[{"start":{"line":29,"column":27},"end":{"line":31,"column":7}}]},"6":{"type":"branch","line":32,"loc":{"start":{"line":32,"column":49},"end":{"line":44,"column":7}},"locations":[{"start":{"line":32,"column":49},"end":{"line":44,"column":7}}]},"7":{"type":"branch","line":36,"loc":{"start":{"line":36,"column":36},"end":{"line":36,"column":59}},"locations":[{"start":{"line":36,"column":36},"end":{"line":36,"column":59}}]},"8":{"type":"branch","line":36,"loc":{"start":{"line":36,"column":61},"end":{"line":43,"column":9}},"locations":[{"start":{"line":36,"column":61},"end":{"line":43,"column":9}}]},"9":{"type":"branch","line":37,"loc":{"start":{"line":37,"column":36},"end":{"line":37,"column":67}},"locations":[{"start":{"line":37,"column":36},"end":{"line":37,"column":67}}]},"10":{"type":"branch","line":37,"loc":{"start":{"line":37,"column":68},"end":{"line":37,"column":101}},"locations":[{"start":{"line":37,"column":68},"end":{"line":37,"column":101}}]},"11":{"type":"branch","line":38,"loc":{"start":{"line":38,"column":21},"end":{"line":40,"column":11}},"locations":[{"start":{"line":38,"column":21},"end":{"line":40,"column":11}}]},"12":{"type":"branch","line":46,"loc":{"start":{"line":46,"column":-1},"end":{"line":47,"column":3}},"locations":[{"start":{"line":46,"column":-1},"end":{"line":47,"column":3}}]},"13":{"type":"branch","line":28,"loc":{"start":{"line":28,"column":46},"end":{"line":28,"column":87}},"locations":[{"start":{"line":28,"column":46},"end":{"line":28,"column":87}}]},"14":{"type":"branch","line":49,"loc":{"start":{"line":49,"column":2},"end":{"line":56,"column":3}},"locations":[{"start":{"line":49,"column":2},"end":{"line":56,"column":3}}]},"15":{"type":"branch","line":58,"loc":{"start":{"line":58,"column":2},"end":{"line":61,"column":3}},"locations":[{"start":{"line":58,"column":2},"end":{"line":61,"column":3}}]},"16":{"type":"branch","line":63,"loc":{"start":{"line":63,"column":2},"end":{"line":65,"column":3}},"locations":[{"start":{"line":63,"column":2},"end":{"line":65,"column":3}}]},"17":{"type":"branch","line":67,"loc":{"start":{"line":67,"column":2},"end":{"line":73,"column":3}},"locations":[{"start":{"line":67,"column":2},"end":{"line":73,"column":3}}]},"18":{"type":"branch","line":70,"loc":{"start":{"line":70,"column":5},"end":{"line":72,"column":5}},"locations":[{"start":{"line":70,"column":5},"end":{"line":72,"column":5}}]},"19":{"type":"branch","line":75,"loc":{"start":{"line":75,"column":2},"end":{"line":77,"column":3}},"locations":[{"start":{"line":75,"column":2},"end":{"line":77,"column":3}}]}},"b":{"0":[4],"1":[8],"2":[2],"3":[1],"4":[6],"5":[0],"6":[47],"7":[21],"8":[21],"9":[1],"10":[20],"11":[0],"12":[7],"13":[7],"14":[8],"15":[2],"16":[3],"17":[2],"18":[0],"19":[4]},"fnMap":{"0":{"name":"StoreOperations","decl":{"start":{"line":12,"column":2},"end":{"line":16,"column":3}},"loc":{"start":{"line":12,"column":2},"end":{"line":16,"column":3}},"line":12},"1":{"name":"operationEntityToUint8Array","decl":{"start":{"line":18,"column":10},"end":{"line":47,"column":3}},"loc":{"start":{"line":18,"column":10},"end":{"line":47,"column":3}},"line":18},"2":{"name":"put","decl":{"start":{"line":49,"column":2},"end":{"line":56,"column":3}},"loc":{"start":{"line":49,"column":2},"end":{"line":56,"column":3}},"line":49},"3":{"name":"reset","decl":{"start":{"line":58,"column":2},"end":{"line":61,"column":3}},"loc":{"start":{"line":58,"column":2},"end":{"line":61,"column":3}},"line":58},"4":{"name":"makeOperationMerkleTree","decl":{"start":{"line":63,"column":2},"end":{"line":65,"column":3}},"loc":{"start":{"line":63,"column":2},"end":{"line":65,"column":3}},"line":63},"5":{"name":"getOperationMerkleRoot","decl":{"start":{"line":67,"column":2},"end":{"line":73,"column":3}},"loc":{"start":{"line":67,"column":2},"end":{"line":73,"column":3}},"line":67},"6":{"name":"getOperationLeafCount","decl":{"start":{"line":75,"column":2},"end":{"line":77,"column":3}},"loc":{"start":{"line":75,"column":2},"end":{"line":77,"column":3}},"line":75}},"f":{"0":4,"1":8,"2":8,"3":2,"4":3,"5":2,"6":4}},"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/indexer/benchmark.service.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/indexer/benchmark.service.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":42}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":46}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":51}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":26}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":45}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":40}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":118}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":36}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":39}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":0}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":34}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":38}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":23}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":0}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":13}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":37}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":45}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":48}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":34}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":49}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":40}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":43}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":34}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":44}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":0}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":24}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":35}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":50}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":30}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":28}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":6}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":0}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":39}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":69}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":13}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":5}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":39}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":19}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":18}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":39}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":63}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":7}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":6}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":3}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":0}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":47}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":76}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":22}},"51":{"start":{"line":52,"column":0},"end":{"line":52,"column":12}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":70}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":84}},"54":{"start":{"line":55,"column":0},"end":{"line":55,"column":88}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":102}},"56":{"start":{"line":57,"column":0},"end":{"line":57,"column":0}},"57":{"start":{"line":58,"column":0},"end":{"line":58,"column":33}},"58":{"start":{"line":59,"column":0},"end":{"line":59,"column":97}},"59":{"start":{"line":60,"column":0},"end":{"line":60,"column":16}},"60":{"start":{"line":61,"column":0},"end":{"line":61,"column":47}},"61":{"start":{"line":62,"column":0},"end":{"line":62,"column":85}},"62":{"start":{"line":63,"column":0},"end":{"line":63,"column":21}},"63":{"start":{"line":64,"column":0},"end":{"line":64,"column":12}},"64":{"start":{"line":65,"column":0},"end":{"line":65,"column":76}},"65":{"start":{"line":66,"column":0},"end":{"line":66,"column":58}},"66":{"start":{"line":67,"column":0},"end":{"line":67,"column":61}},"67":{"start":{"line":68,"column":0},"end":{"line":68,"column":0}},"68":{"start":{"line":69,"column":0},"end":{"line":69,"column":82}},"69":{"start":{"line":70,"column":0},"end":{"line":70,"column":110}},"70":{"start":{"line":71,"column":0},"end":{"line":71,"column":24}},"71":{"start":{"line":72,"column":0},"end":{"line":72,"column":114}},"72":{"start":{"line":73,"column":0},"end":{"line":73,"column":29}},"73":{"start":{"line":74,"column":0},"end":{"line":74,"column":59}},"74":{"start":{"line":75,"column":0},"end":{"line":75,"column":14}},"75":{"start":{"line":76,"column":0},"end":{"line":76,"column":11}},"76":{"start":{"line":77,"column":0},"end":{"line":77,"column":0}},"77":{"start":{"line":78,"column":0},"end":{"line":78,"column":22}},"78":{"start":{"line":79,"column":0},"end":{"line":79,"column":34}},"79":{"start":{"line":80,"column":0},"end":{"line":80,"column":90}},"80":{"start":{"line":81,"column":0},"end":{"line":81,"column":66}},"81":{"start":{"line":82,"column":0},"end":{"line":82,"column":55}},"82":{"start":{"line":83,"column":0},"end":{"line":83,"column":33}},"83":{"start":{"line":84,"column":0},"end":{"line":84,"column":171}},"84":{"start":{"line":85,"column":0},"end":{"line":85,"column":71}},"85":{"start":{"line":86,"column":0},"end":{"line":86,"column":20}},"86":{"start":{"line":87,"column":0},"end":{"line":87,"column":14}},"87":{"start":{"line":88,"column":0},"end":{"line":88,"column":12}},"88":{"start":{"line":89,"column":0},"end":{"line":89,"column":9}},"89":{"start":{"line":90,"column":0},"end":{"line":90,"column":7}},"90":{"start":{"line":91,"column":0},"end":{"line":91,"column":63}},"91":{"start":{"line":92,"column":0},"end":{"line":92,"column":69}},"92":{"start":{"line":93,"column":0},"end":{"line":93,"column":71}},"93":{"start":{"line":94,"column":0},"end":{"line":94,"column":5}},"94":{"start":{"line":95,"column":0},"end":{"line":95,"column":3}},"95":{"start":{"line":96,"column":0},"end":{"line":96,"column":1}},"96":{"start":{"line":97,"column":0},"end":{"line":97,"column":0}},"97":{"start":{"line":98,"column":0},"end":{"line":98,"column":13}},"98":{"start":{"line":99,"column":0},"end":{"line":99,"column":63}},"99":{"start":{"line":100,"column":0},"end":{"line":100,"column":77}},"100":{"start":{"line":101,"column":0},"end":{"line":101,"column":62}},"101":{"start":{"line":102,"column":0},"end":{"line":102,"column":34}},"102":{"start":{"line":103,"column":0},"end":{"line":103,"column":44}},"103":{"start":{"line":104,"column":0},"end":{"line":104,"column":5}},"104":{"start":{"line":105,"column":0},"end":{"line":105,"column":3}},"105":{"start":{"line":106,"column":0},"end":{"line":106,"column":0}},"106":{"start":{"line":107,"column":0},"end":{"line":107,"column":36}},"107":{"start":{"line":108,"column":0},"end":{"line":108,"column":66}},"108":{"start":{"line":109,"column":0},"end":{"line":109,"column":55}},"109":{"start":{"line":110,"column":0},"end":{"line":110,"column":61}},"110":{"start":{"line":111,"column":0},"end":{"line":111,"column":3}},"111":{"start":{"line":112,"column":0},"end":{"line":112,"column":0}},"112":{"start":{"line":113,"column":0},"end":{"line":113,"column":30}},"113":{"start":{"line":114,"column":0},"end":{"line":114,"column":60}},"114":{"start":{"line":115,"column":0},"end":{"line":115,"column":44}},"115":{"start":{"line":116,"column":0},"end":{"line":116,"column":61}},"116":{"start":{"line":117,"column":0},"end":{"line":117,"column":3}},"117":{"start":{"line":118,"column":0},"end":{"line":118,"column":1}},"118":{"start":{"line":119,"column":0},"end":{"line":119,"column":0}},"119":{"start":{"line":120,"column":0},"end":{"line":120,"column":13}},"120":{"start":{"line":121,"column":0},"end":{"line":121,"column":68}},"121":{"start":{"line":122,"column":0},"end":{"line":122,"column":77}},"122":{"start":{"line":123,"column":0},"end":{"line":123,"column":63}},"123":{"start":{"line":124,"column":0},"end":{"line":124,"column":44}},"124":{"start":{"line":125,"column":0},"end":{"line":125,"column":3}},"125":{"start":{"line":126,"column":0},"end":{"line":126,"column":0}},"126":{"start":{"line":127,"column":0},"end":{"line":127,"column":40}},"127":{"start":{"line":128,"column":0},"end":{"line":128,"column":66}},"128":{"start":{"line":129,"column":0},"end":{"line":129,"column":55}},"129":{"start":{"line":130,"column":0},"end":{"line":130,"column":61}},"130":{"start":{"line":131,"column":0},"end":{"line":131,"column":3}},"131":{"start":{"line":132,"column":0},"end":{"line":132,"column":0}},"132":{"start":{"line":133,"column":0},"end":{"line":133,"column":44}},"133":{"start":{"line":134,"column":0},"end":{"line":134,"column":72}},"134":{"start":{"line":135,"column":0},"end":{"line":135,"column":72}},"135":{"start":{"line":136,"column":0},"end":{"line":136,"column":61}},"136":{"start":{"line":137,"column":0},"end":{"line":137,"column":3}},"137":{"start":{"line":138,"column":0},"end":{"line":138,"column":0}},"138":{"start":{"line":139,"column":0},"end":{"line":139,"column":36}},"139":{"start":{"line":140,"column":0},"end":{"line":140,"column":61}},"140":{"start":{"line":141,"column":0},"end":{"line":141,"column":44}},"141":{"start":{"line":142,"column":0},"end":{"line":142,"column":3}},"142":{"start":{"line":143,"column":0},"end":{"line":143,"column":1}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":40,"30":40,"31":40,"32":40,"33":40,"34":1,"35":1,"36":20,"37":0,"38":0,"39":20,"40":20,"41":20,"42":20,"43":20,"44":20,"45":20,"46":20,"47":1,"48":1,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"59":0,"60":0,"61":0,"62":0,"63":0,"64":0,"65":0,"66":0,"67":0,"68":0,"69":0,"70":0,"71":0,"72":0,"73":0,"74":0,"75":0,"76":0,"77":0,"78":0,"79":0,"80":0,"81":0,"82":0,"83":0,"84":0,"85":0,"86":0,"87":0,"88":0,"89":0,"90":0,"91":0,"92":0,"93":0,"94":0,"95":1,"96":1,"97":1,"98":1,"99":1,"100":20,"101":20,"102":0,"103":0,"104":20,"105":1,"106":1,"107":1,"108":0,"109":0,"110":0,"111":1,"112":1,"113":1,"114":0,"115":0,"116":0,"117":1,"118":1,"119":1,"120":1,"121":1,"122":20,"123":20,"124":20,"125":1,"126":1,"127":1,"128":0,"129":0,"130":0,"131":1,"132":1,"133":1,"134":0,"135":0,"136":0,"137":1,"138":1,"139":1,"140":0,"141":0,"142":1},"branchMap":{"0":{"type":"branch","line":29,"loc":{"start":{"line":29,"column":2},"end":{"line":34,"column":6}},"locations":[{"start":{"line":29,"column":2},"end":{"line":34,"column":6}}]},"1":{"type":"branch","line":36,"loc":{"start":{"line":36,"column":2},"end":{"line":47,"column":3}},"locations":[{"start":{"line":36,"column":2},"end":{"line":47,"column":3}}]},"2":{"type":"branch","line":37,"loc":{"start":{"line":37,"column":68},"end":{"line":39,"column":5}},"locations":[{"start":{"line":37,"column":68},"end":{"line":39,"column":5}}]},"3":{"type":"branch","line":100,"loc":{"start":{"line":100,"column":2},"end":{"line":105,"column":3}},"locations":[{"start":{"line":100,"column":2},"end":{"line":105,"column":3}}]},"4":{"type":"branch","line":102,"loc":{"start":{"line":102,"column":33},"end":{"line":104,"column":5}},"locations":[{"start":{"line":102,"column":33},"end":{"line":104,"column":5}}]},"5":{"type":"branch","line":122,"loc":{"start":{"line":122,"column":2},"end":{"line":125,"column":3}},"locations":[{"start":{"line":122,"column":2},"end":{"line":125,"column":3}}]}},"b":{"0":[40],"1":[20],"2":[0],"3":[20],"4":[0],"5":[20]},"fnMap":{"0":{"name":"BaseBenchmarkService","decl":{"start":{"line":29,"column":2},"end":{"line":34,"column":6}},"loc":{"start":{"line":29,"column":2},"end":{"line":34,"column":6}},"line":29},"1":{"name":"setupInterval","decl":{"start":{"line":36,"column":2},"end":{"line":47,"column":3}},"loc":{"start":{"line":36,"column":2},"end":{"line":47,"column":3}},"line":36},"2":{"name":"benchMarking","decl":{"start":{"line":49,"column":10},"end":{"line":95,"column":3}},"loc":{"start":{"line":49,"column":10},"end":{"line":95,"column":3}},"line":49},"3":{"name":"PoiBenchmarkService","decl":{"start":{"line":100,"column":2},"end":{"line":105,"column":3}},"loc":{"start":{"line":100,"column":2},"end":{"line":105,"column":3}},"line":100},"4":{"name":"handleLatestSyncedPoi","decl":{"start":{"line":108,"column":2},"end":{"line":111,"column":3}},"loc":{"start":{"line":108,"column":2},"end":{"line":111,"column":3}},"line":108},"5":{"name":"handlePoiTarget","decl":{"start":{"line":114,"column":2},"end":{"line":117,"column":3}},"loc":{"start":{"line":114,"column":2},"end":{"line":117,"column":3}},"line":114},"6":{"name":"IndexingBenchmarkService","decl":{"start":{"line":122,"column":2},"end":{"line":125,"column":3}},"loc":{"start":{"line":122,"column":2},"end":{"line":125,"column":3}},"line":122},"7":{"name":"handleProcessingBlock","decl":{"start":{"line":128,"column":2},"end":{"line":131,"column":3}},"loc":{"start":{"line":128,"column":2},"end":{"line":131,"column":3}},"line":128},"8":{"name":"handleProcessedBlock","decl":{"start":{"line":134,"column":2},"end":{"line":137,"column":3}},"loc":{"start":{"line":134,"column":2},"end":{"line":137,"column":3}},"line":134},"9":{"name":"handleTargetBlock","decl":{"start":{"line":140,"column":2},"end":{"line":142,"column":3}},"loc":{"start":{"line":140,"column":2},"end":{"line":142,"column":3}},"line":140}},"f":{"0":40,"1":20,"2":0,"3":20,"4":0,"5":0,"6":20,"7":0,"8":0,"9":0}},"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/indexer/blockDispatcher/base-block-dispatcher.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/indexer/blockDispatcher/base-block-dispatcher.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":28}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":0}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":52}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":45}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":67}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":52}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":39}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":51}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":55}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":48}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":56}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":46}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":48}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":53}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":67}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":0}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":55}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":0}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":36}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":28}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":20}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":36}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":2}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":0}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":38}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":64}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":99}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":20}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":19}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":31}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":25}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":27}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":0}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":66}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":35}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":1}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":0}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":42}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":0}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":63}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":48}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":1}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":0}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":99}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":38}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":37}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":39}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":40}},"51":{"start":{"line":52,"column":0},"end":{"line":52,"column":66}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":0}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":14}},"54":{"start":{"line":55,"column":0},"end":{"line":55,"column":37}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":42}},"56":{"start":{"line":57,"column":0},"end":{"line":57,"column":38}},"57":{"start":{"line":58,"column":0},"end":{"line":58,"column":50}},"58":{"start":{"line":59,"column":0},"end":{"line":59,"column":58}},"59":{"start":{"line":60,"column":0},"end":{"line":60,"column":23}},"60":{"start":{"line":61,"column":0},"end":{"line":61,"column":51}},"61":{"start":{"line":62,"column":0},"end":{"line":62,"column":41}},"62":{"start":{"line":63,"column":0},"end":{"line":63,"column":49}},"63":{"start":{"line":64,"column":0},"end":{"line":64,"column":43}},"64":{"start":{"line":65,"column":0},"end":{"line":65,"column":53}},"65":{"start":{"line":66,"column":0},"end":{"line":66,"column":6}},"66":{"start":{"line":67,"column":0},"end":{"line":67,"column":0}},"67":{"start":{"line":68,"column":0},"end":{"line":68,"column":109}},"68":{"start":{"line":69,"column":0},"end":{"line":69,"column":0}},"69":{"start":{"line":70,"column":0},"end":{"line":70,"column":84}},"70":{"start":{"line":71,"column":0},"end":{"line":71,"column":50}},"71":{"start":{"line":72,"column":0},"end":{"line":72,"column":72}},"72":{"start":{"line":73,"column":0},"end":{"line":73,"column":105}},"73":{"start":{"line":74,"column":0},"end":{"line":74,"column":3}},"74":{"start":{"line":75,"column":0},"end":{"line":75,"column":0}},"75":{"start":{"line":76,"column":0},"end":{"line":76,"column":27}},"76":{"start":{"line":77,"column":0},"end":{"line":77,"column":27}},"77":{"start":{"line":78,"column":0},"end":{"line":78,"column":3}},"78":{"start":{"line":79,"column":0},"end":{"line":79,"column":0}},"79":{"start":{"line":80,"column":0},"end":{"line":80,"column":26}},"80":{"start":{"line":81,"column":0},"end":{"line":81,"column":108}},"81":{"start":{"line":82,"column":0},"end":{"line":82,"column":32}},"82":{"start":{"line":83,"column":0},"end":{"line":83,"column":3}},"83":{"start":{"line":84,"column":0},"end":{"line":84,"column":0}},"84":{"start":{"line":85,"column":0},"end":{"line":85,"column":32}},"85":{"start":{"line":86,"column":0},"end":{"line":86,"column":53}},"86":{"start":{"line":87,"column":0},"end":{"line":87,"column":3}},"87":{"start":{"line":88,"column":0},"end":{"line":88,"column":0}},"88":{"start":{"line":89,"column":0},"end":{"line":89,"column":34}},"89":{"start":{"line":90,"column":0},"end":{"line":90,"column":54}},"90":{"start":{"line":91,"column":0},"end":{"line":91,"column":3}},"91":{"start":{"line":92,"column":0},"end":{"line":92,"column":0}},"92":{"start":{"line":93,"column":0},"end":{"line":93,"column":39}},"93":{"start":{"line":94,"column":0},"end":{"line":94,"column":39}},"94":{"start":{"line":95,"column":0},"end":{"line":95,"column":3}},"95":{"start":{"line":96,"column":0},"end":{"line":96,"column":0}},"96":{"start":{"line":97,"column":0},"end":{"line":97,"column":50}},"97":{"start":{"line":98,"column":0},"end":{"line":98,"column":41}},"98":{"start":{"line":99,"column":0},"end":{"line":99,"column":3}},"99":{"start":{"line":100,"column":0},"end":{"line":100,"column":0}},"100":{"start":{"line":101,"column":0},"end":{"line":101,"column":73}},"101":{"start":{"line":102,"column":0},"end":{"line":102,"column":36}},"102":{"start":{"line":103,"column":0},"end":{"line":103,"column":70}},"103":{"start":{"line":104,"column":0},"end":{"line":104,"column":5}},"104":{"start":{"line":105,"column":0},"end":{"line":105,"column":36}},"105":{"start":{"line":106,"column":0},"end":{"line":106,"column":3}},"106":{"start":{"line":107,"column":0},"end":{"line":107,"column":0}},"107":{"start":{"line":108,"column":0},"end":{"line":108,"column":38}},"108":{"start":{"line":109,"column":0},"end":{"line":109,"column":38}},"109":{"start":{"line":110,"column":0},"end":{"line":110,"column":3}},"110":{"start":{"line":111,"column":0},"end":{"line":111,"column":0}},"111":{"start":{"line":112,"column":0},"end":{"line":112,"column":44}},"112":{"start":{"line":113,"column":0},"end":{"line":113,"column":63}},"113":{"start":{"line":114,"column":0},"end":{"line":114,"column":28}},"114":{"start":{"line":115,"column":0},"end":{"line":115,"column":7}},"115":{"start":{"line":116,"column":0},"end":{"line":116,"column":40}},"116":{"start":{"line":117,"column":0},"end":{"line":117,"column":3}},"117":{"start":{"line":118,"column":0},"end":{"line":118,"column":0}},"118":{"start":{"line":119,"column":0},"end":{"line":119,"column":71}},"119":{"start":{"line":120,"column":0},"end":{"line":120,"column":52}},"120":{"start":{"line":121,"column":0},"end":{"line":121,"column":62}},"121":{"start":{"line":122,"column":0},"end":{"line":122,"column":26}},"122":{"start":{"line":123,"column":0},"end":{"line":123,"column":28}},"123":{"start":{"line":124,"column":0},"end":{"line":124,"column":7}},"124":{"start":{"line":125,"column":0},"end":{"line":125,"column":3}},"125":{"start":{"line":126,"column":0},"end":{"line":126,"column":0}},"126":{"start":{"line":127,"column":0},"end":{"line":127,"column":5}},"127":{"start":{"line":128,"column":0},"end":{"line":128,"column":53}},"128":{"start":{"line":129,"column":0},"end":{"line":129,"column":113}},"129":{"start":{"line":130,"column":0},"end":{"line":130,"column":46}},"130":{"start":{"line":131,"column":0},"end":{"line":131,"column":70}},"131":{"start":{"line":132,"column":0},"end":{"line":132,"column":29}},"132":{"start":{"line":133,"column":0},"end":{"line":133,"column":5}},"133":{"start":{"line":134,"column":0},"end":{"line":134,"column":19}},"134":{"start":{"line":135,"column":0},"end":{"line":135,"column":68}},"135":{"start":{"line":136,"column":0},"end":{"line":136,"column":60}},"136":{"start":{"line":137,"column":0},"end":{"line":137,"column":92}},"137":{"start":{"line":138,"column":0},"end":{"line":138,"column":59}},"138":{"start":{"line":139,"column":0},"end":{"line":139,"column":55}},"139":{"start":{"line":140,"column":0},"end":{"line":140,"column":70}},"140":{"start":{"line":141,"column":0},"end":{"line":141,"column":5}},"141":{"start":{"line":142,"column":0},"end":{"line":142,"column":39}},"142":{"start":{"line":143,"column":0},"end":{"line":143,"column":128}},"143":{"start":{"line":144,"column":0},"end":{"line":144,"column":3}},"144":{"start":{"line":145,"column":0},"end":{"line":145,"column":0}},"145":{"start":{"line":146,"column":0},"end":{"line":146,"column":36}},"146":{"start":{"line":147,"column":0},"end":{"line":147,"column":39}},"147":{"start":{"line":148,"column":0},"end":{"line":148,"column":23}},"148":{"start":{"line":149,"column":0},"end":{"line":149,"column":3}},"149":{"start":{"line":150,"column":0},"end":{"line":150,"column":0}},"150":{"start":{"line":151,"column":0},"end":{"line":151,"column":51}},"151":{"start":{"line":152,"column":0},"end":{"line":152,"column":19}},"152":{"start":{"line":153,"column":0},"end":{"line":153,"column":66}},"153":{"start":{"line":154,"column":0},"end":{"line":154,"column":45}},"154":{"start":{"line":155,"column":0},"end":{"line":155,"column":0}},"155":{"start":{"line":156,"column":0},"end":{"line":156,"column":62}},"156":{"start":{"line":157,"column":0},"end":{"line":157,"column":0}},"157":{"start":{"line":158,"column":0},"end":{"line":158,"column":42}},"158":{"start":{"line":159,"column":0},"end":{"line":159,"column":58}},"159":{"start":{"line":160,"column":0},"end":{"line":160,"column":13}},"160":{"start":{"line":161,"column":0},"end":{"line":161,"column":28}},"161":{"start":{"line":162,"column":0},"end":{"line":162,"column":7}},"162":{"start":{"line":163,"column":0},"end":{"line":163,"column":3}},"163":{"start":{"line":164,"column":0},"end":{"line":164,"column":0}},"164":{"start":{"line":165,"column":0},"end":{"line":165,"column":50}},"165":{"start":{"line":166,"column":0},"end":{"line":166,"column":19}},"166":{"start":{"line":167,"column":0},"end":{"line":167,"column":111}},"167":{"start":{"line":168,"column":0},"end":{"line":168,"column":83}},"168":{"start":{"line":169,"column":0},"end":{"line":169,"column":0}},"169":{"start":{"line":170,"column":0},"end":{"line":170,"column":74}},"170":{"start":{"line":171,"column":0},"end":{"line":171,"column":41}},"171":{"start":{"line":172,"column":0},"end":{"line":172,"column":45}},"172":{"start":{"line":173,"column":0},"end":{"line":173,"column":36}},"173":{"start":{"line":174,"column":0},"end":{"line":174,"column":7}},"174":{"start":{"line":175,"column":0},"end":{"line":175,"column":44}},"175":{"start":{"line":176,"column":0},"end":{"line":176,"column":56}},"176":{"start":{"line":177,"column":0},"end":{"line":177,"column":51}},"177":{"start":{"line":178,"column":0},"end":{"line":178,"column":41}},"178":{"start":{"line":179,"column":0},"end":{"line":179,"column":43}},"179":{"start":{"line":180,"column":0},"end":{"line":180,"column":7}},"180":{"start":{"line":181,"column":0},"end":{"line":181,"column":13}},"181":{"start":{"line":182,"column":0},"end":{"line":182,"column":12}},"182":{"start":{"line":183,"column":0},"end":{"line":183,"column":39}},"183":{"start":{"line":184,"column":0},"end":{"line":184,"column":0}},"184":{"start":{"line":185,"column":0},"end":{"line":185,"column":71}},"185":{"start":{"line":186,"column":0},"end":{"line":186,"column":55}},"186":{"start":{"line":187,"column":0},"end":{"line":187,"column":0}},"187":{"start":{"line":188,"column":0},"end":{"line":188,"column":29}},"188":{"start":{"line":189,"column":0},"end":{"line":189,"column":46}},"189":{"start":{"line":190,"column":0},"end":{"line":190,"column":7}},"190":{"start":{"line":191,"column":0},"end":{"line":191,"column":13}},"191":{"start":{"line":192,"column":0},"end":{"line":192,"column":75}},"192":{"start":{"line":193,"column":0},"end":{"line":193,"column":96}},"193":{"start":{"line":194,"column":0},"end":{"line":194,"column":8}},"194":{"start":{"line":195,"column":0},"end":{"line":195,"column":100}},"195":{"start":{"line":196,"column":0},"end":{"line":196,"column":65}},"196":{"start":{"line":197,"column":0},"end":{"line":197,"column":44}},"197":{"start":{"line":198,"column":0},"end":{"line":198,"column":5}},"198":{"start":{"line":199,"column":0},"end":{"line":199,"column":0}},"199":{"start":{"line":200,"column":0},"end":{"line":200,"column":42}},"200":{"start":{"line":201,"column":0},"end":{"line":201,"column":54}},"201":{"start":{"line":202,"column":0},"end":{"line":202,"column":88}},"202":{"start":{"line":203,"column":0},"end":{"line":203,"column":49}},"203":{"start":{"line":204,"column":0},"end":{"line":204,"column":24}},"204":{"start":{"line":205,"column":0},"end":{"line":205,"column":9}},"205":{"start":{"line":206,"column":0},"end":{"line":206,"column":12}},"206":{"start":{"line":207,"column":0},"end":{"line":207,"column":43}},"207":{"start":{"line":208,"column":0},"end":{"line":208,"column":59}},"208":{"start":{"line":209,"column":0},"end":{"line":209,"column":5}},"209":{"start":{"line":210,"column":0},"end":{"line":210,"column":0}},"210":{"start":{"line":211,"column":0},"end":{"line":211,"column":65}},"211":{"start":{"line":212,"column":0},"end":{"line":212,"column":110}},"212":{"start":{"line":213,"column":0},"end":{"line":213,"column":59}},"213":{"start":{"line":214,"column":0},"end":{"line":214,"column":22}},"214":{"start":{"line":215,"column":0},"end":{"line":215,"column":5}},"215":{"start":{"line":216,"column":0},"end":{"line":216,"column":3}},"216":{"start":{"line":217,"column":0},"end":{"line":217,"column":0}},"217":{"start":{"line":218,"column":0},"end":{"line":218,"column":5}},"218":{"start":{"line":219,"column":0},"end":{"line":219,"column":70}},"219":{"start":{"line":220,"column":0},"end":{"line":220,"column":54}},"220":{"start":{"line":221,"column":0},"end":{"line":221,"column":18}},"221":{"start":{"line":222,"column":0},"end":{"line":222,"column":21}},"222":{"start":{"line":223,"column":0},"end":{"line":223,"column":25}},"223":{"start":{"line":224,"column":0},"end":{"line":224,"column":13}},"224":{"start":{"line":225,"column":0},"end":{"line":225,"column":5}},"225":{"start":{"line":226,"column":0},"end":{"line":226,"column":89}},"226":{"start":{"line":227,"column":0},"end":{"line":227,"column":40}},"227":{"start":{"line":228,"column":0},"end":{"line":228,"column":13}},"228":{"start":{"line":229,"column":0},"end":{"line":229,"column":5}},"229":{"start":{"line":230,"column":0},"end":{"line":230,"column":42}},"230":{"start":{"line":231,"column":0},"end":{"line":231,"column":13}},"231":{"start":{"line":232,"column":0},"end":{"line":232,"column":5}},"232":{"start":{"line":233,"column":0},"end":{"line":233,"column":88}},"233":{"start":{"line":234,"column":0},"end":{"line":234,"column":40}},"234":{"start":{"line":235,"column":0},"end":{"line":235,"column":36}},"235":{"start":{"line":236,"column":0},"end":{"line":236,"column":92}},"236":{"start":{"line":237,"column":0},"end":{"line":237,"column":48}},"237":{"start":{"line":238,"column":0},"end":{"line":238,"column":13}},"238":{"start":{"line":239,"column":0},"end":{"line":239,"column":28}},"239":{"start":{"line":240,"column":0},"end":{"line":240,"column":7}},"240":{"start":{"line":241,"column":0},"end":{"line":241,"column":3}},"241":{"start":{"line":242,"column":0},"end":{"line":242,"column":0}},"242":{"start":{"line":243,"column":0},"end":{"line":243,"column":19}},"243":{"start":{"line":244,"column":0},"end":{"line":244,"column":77}},"244":{"start":{"line":245,"column":0},"end":{"line":245,"column":49}},"245":{"start":{"line":246,"column":0},"end":{"line":246,"column":28}},"246":{"start":{"line":247,"column":0},"end":{"line":247,"column":18}},"247":{"start":{"line":248,"column":0},"end":{"line":248,"column":50}},"248":{"start":{"line":249,"column":0},"end":{"line":249,"column":57}},"249":{"start":{"line":250,"column":0},"end":{"line":250,"column":7}},"250":{"start":{"line":251,"column":0},"end":{"line":251,"column":94}},"251":{"start":{"line":252,"column":0},"end":{"line":252,"column":26}},"252":{"start":{"line":253,"column":0},"end":{"line":253,"column":47}},"253":{"start":{"line":254,"column":0},"end":{"line":254,"column":5}},"254":{"start":{"line":255,"column":0},"end":{"line":255,"column":3}},"255":{"start":{"line":256,"column":0},"end":{"line":256,"column":0}},"256":{"start":{"line":257,"column":0},"end":{"line":257,"column":36}},"257":{"start":{"line":258,"column":0},"end":{"line":258,"column":43}},"258":{"start":{"line":259,"column":0},"end":{"line":259,"column":15}},"259":{"start":{"line":260,"column":0},"end":{"line":260,"column":76}},"260":{"start":{"line":261,"column":0},"end":{"line":261,"column":5}},"261":{"start":{"line":262,"column":0},"end":{"line":262,"column":15}},"262":{"start":{"line":263,"column":0},"end":{"line":263,"column":3}},"263":{"start":{"line":264,"column":0},"end":{"line":264,"column":1}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"38":1,"39":1,"40":1,"41":1,"42":0,"43":0,"44":0,"45":1,"46":1,"47":1,"48":1,"49":1,"50":1,"51":1,"52":1,"53":1,"54":20,"55":20,"56":20,"57":20,"58":20,"59":20,"60":20,"61":20,"62":20,"63":20,"64":20,"65":20,"66":1,"67":1,"68":1,"69":1,"70":0,"71":0,"72":0,"73":0,"74":1,"75":1,"76":0,"77":0,"78":1,"79":1,"80":0,"81":0,"82":0,"83":1,"84":1,"85":0,"86":0,"87":1,"88":1,"89":12,"90":12,"91":1,"92":1,"93":0,"94":0,"95":1,"96":1,"97":0,"98":0,"99":1,"100":1,"101":0,"102":0,"103":0,"104":0,"105":0,"106":1,"107":1,"108":0,"109":0,"110":1,"111":1,"112":0,"113":0,"114":0,"115":0,"116":0,"117":1,"118":1,"119":0,"120":0,"121":0,"122":0,"123":0,"124":0,"125":1,"126":1,"127":1,"128":1,"129":1,"130":1,"131":1,"132":1,"133":1,"134":1,"135":0,"136":0,"137":0,"138":0,"139":0,"140":0,"141":0,"142":0,"143":0,"144":1,"145":1,"146":0,"147":0,"148":0,"149":1,"150":1,"151":1,"152":1,"153":0,"154":0,"155":0,"156":0,"157":0,"158":0,"159":0,"160":0,"161":0,"162":0,"163":1,"164":1,"165":1,"166":1,"167":0,"168":0,"169":0,"170":0,"171":0,"172":0,"173":0,"174":0,"175":0,"176":0,"177":0,"178":0,"179":0,"180":0,"181":0,"182":0,"183":0,"184":0,"185":0,"186":0,"187":0,"188":0,"189":0,"190":0,"191":0,"192":0,"193":0,"194":0,"195":0,"196":0,"197":0,"198":0,"199":0,"200":0,"201":0,"202":0,"203":0,"204":0,"205":0,"206":0,"207":0,"208":0,"209":0,"210":0,"211":0,"212":0,"213":0,"214":0,"215":0,"216":1,"217":1,"218":1,"219":1,"220":1,"221":1,"222":1,"223":1,"224":1,"225":1,"226":0,"227":0,"228":0,"229":0,"230":0,"231":0,"232":0,"233":0,"234":0,"235":0,"236":0,"237":0,"238":0,"239":0,"240":0,"241":1,"242":1,"243":1,"244":0,"245":0,"246":0,"247":0,"248":0,"249":0,"250":0,"251":0,"252":0,"253":0,"254":0,"255":1,"256":1,"257":0,"258":0,"259":0,"260":0,"261":0,"262":0,"263":1},"branchMap":{"0":{"type":"branch","line":54,"loc":{"start":{"line":54,"column":2},"end":{"line":66,"column":6}},"locations":[{"start":{"line":54,"column":2},"end":{"line":66,"column":6}}]},"1":{"type":"branch","line":89,"loc":{"start":{"line":89,"column":2},"end":{"line":91,"column":3}},"locations":[{"start":{"line":89,"column":2},"end":{"line":91,"column":3}}]}},"b":{"0":[20],"1":[12]},"fnMap":{"0":{"name":"isNullMerkelRoot","decl":{"start":{"line":43,"column":0},"end":{"line":45,"column":1}},"loc":{"start":{"line":43,"column":0},"end":{"line":45,"column":1}},"line":43},"1":{"name":"BaseBlockDispatcher","decl":{"start":{"line":54,"column":2},"end":{"line":66,"column":6}},"loc":{"start":{"line":54,"column":2},"end":{"line":66,"column":6}},"line":54},"2":{"name":"init","decl":{"start":{"line":70,"column":2},"end":{"line":74,"column":3}},"loc":{"start":{"line":70,"column":2},"end":{"line":74,"column":3}},"line":70},"3":{"name":"get queueSize","decl":{"start":{"line":76,"column":2},"end":{"line":78,"column":3}},"loc":{"start":{"line":76,"column":2},"end":{"line":78,"column":3}},"line":76},"4":{"name":"get freeSize","decl":{"start":{"line":80,"column":2},"end":{"line":83,"column":3}},"loc":{"start":{"line":80,"column":2},"end":{"line":83,"column":3}},"line":80},"5":{"name":"get smartBatchSize","decl":{"start":{"line":85,"column":2},"end":{"line":87,"column":3}},"loc":{"start":{"line":85,"column":2},"end":{"line":87,"column":3}},"line":85},"6":{"name":"get minimumHeapLimit","decl":{"start":{"line":89,"column":2},"end":{"line":91,"column":3}},"loc":{"start":{"line":89,"column":2},"end":{"line":91,"column":3}},"line":89},"7":{"name":"get latestProcessedHeight","decl":{"start":{"line":93,"column":2},"end":{"line":95,"column":3}},"loc":{"start":{"line":93,"column":2},"end":{"line":95,"column":3}},"line":93},"8":{"name":"setLatestProcessedHeight","decl":{"start":{"line":97,"column":2},"end":{"line":99,"column":3}},"loc":{"start":{"line":97,"column":2},"end":{"line":99,"column":3}},"line":97},"9":{"name":"get onDynamicDsCreated","decl":{"start":{"line":101,"column":2},"end":{"line":106,"column":3}},"loc":{"start":{"line":101,"column":2},"end":{"line":106,"column":3}},"line":101},"10":{"name":"get latestBufferedHeight","decl":{"start":{"line":108,"column":2},"end":{"line":110,"column":3}},"loc":{"start":{"line":108,"column":2},"end":{"line":110,"column":3}},"line":108},"11":{"name":"set latestBufferedHeight","decl":{"start":{"line":112,"column":2},"end":{"line":117,"column":3}},"loc":{"start":{"line":112,"column":2},"end":{"line":117,"column":3}},"line":112},"12":{"name":"setProcessedBlockCount","decl":{"start":{"line":119,"column":12},"end":{"line":125,"column":3}},"loc":{"start":{"line":119,"column":12},"end":{"line":125,"column":3}},"line":119},"13":{"name":"rewind","decl":{"start":{"line":135,"column":18},"end":{"line":144,"column":3}},"loc":{"start":{"line":135,"column":18},"end":{"line":144,"column":3}},"line":135},"14":{"name":"flushQueue","decl":{"start":{"line":146,"column":2},"end":{"line":149,"column":3}},"loc":{"start":{"line":146,"column":2},"end":{"line":149,"column":3}},"line":146},"15":{"name":"preProcessBlock","decl":{"start":{"line":153,"column":18},"end":{"line":163,"column":3}},"loc":{"start":{"line":153,"column":18},"end":{"line":163,"column":3}},"line":153},"16":{"name":"postProcessBlock","decl":{"start":{"line":167,"column":18},"end":{"line":216,"column":3}},"loc":{"start":{"line":167,"column":18},"end":{"line":216,"column":3}},"line":167},"17":{"name":"createPOI","decl":{"start":{"line":226,"column":10},"end":{"line":241,"column":3}},"loc":{"start":{"line":226,"column":10},"end":{"line":241,"column":3}},"line":226},"18":{"name":"updateStoreMetadata","decl":{"start":{"line":244,"column":10},"end":{"line":255,"column":3}},"loc":{"start":{"line":244,"column":10},"end":{"line":255,"column":3}},"line":244},"19":{"name":"get poi","decl":{"start":{"line":257,"column":2},"end":{"line":263,"column":3}},"loc":{"start":{"line":257,"column":2},"end":{"line":263,"column":3}},"line":257}},"f":{"0":0,"1":20,"2":0,"3":0,"4":0,"5":0,"6":12,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0}},"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/indexer/blockDispatcher/block-dispatcher.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/indexer/blockDispatcher/block-dispatcher.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":37}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":53}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":52}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":42}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":43}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":78}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":42}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":69}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":39}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":44}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":102}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":55}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":56}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":46}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":48}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":59}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":82}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":0}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":51}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":0}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":72}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":0}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":3}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":133}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":3}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":44}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":63}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":34}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":1}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":43}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":40}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":0}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":51}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":0}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":27}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":29}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":0}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":81}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":0}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":14}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":27}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":32}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":40}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":50}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":41}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":31}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":41}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":35}},"51":{"start":{"line":52,"column":0},"end":{"line":52,"column":30}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":43}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":44}},"54":{"start":{"line":55,"column":0},"end":{"line":55,"column":5}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":10}},"56":{"start":{"line":57,"column":0},"end":{"line":57,"column":17}},"57":{"start":{"line":58,"column":0},"end":{"line":58,"column":19}},"58":{"start":{"line":59,"column":0},"end":{"line":59,"column":14}},"59":{"start":{"line":60,"column":0},"end":{"line":60,"column":21}},"60":{"start":{"line":61,"column":0},"end":{"line":61,"column":28}},"61":{"start":{"line":62,"column":0},"end":{"line":62,"column":42}},"62":{"start":{"line":63,"column":0},"end":{"line":63,"column":24}},"63":{"start":{"line":64,"column":0},"end":{"line":64,"column":19}},"64":{"start":{"line":65,"column":0},"end":{"line":65,"column":24}},"65":{"start":{"line":66,"column":0},"end":{"line":66,"column":21}},"66":{"start":{"line":67,"column":0},"end":{"line":67,"column":22}},"67":{"start":{"line":68,"column":0},"end":{"line":68,"column":6}},"68":{"start":{"line":69,"column":0},"end":{"line":69,"column":98}},"69":{"start":{"line":70,"column":0},"end":{"line":70,"column":113}},"70":{"start":{"line":71,"column":0},"end":{"line":71,"column":35}},"71":{"start":{"line":72,"column":0},"end":{"line":72,"column":106}},"72":{"start":{"line":73,"column":0},"end":{"line":73,"column":12}},"73":{"start":{"line":74,"column":0},"end":{"line":74,"column":51}},"74":{"start":{"line":75,"column":0},"end":{"line":75,"column":5}},"75":{"start":{"line":76,"column":0},"end":{"line":76,"column":3}},"76":{"start":{"line":77,"column":0},"end":{"line":77,"column":0}},"77":{"start":{"line":78,"column":0},"end":{"line":78,"column":33}},"78":{"start":{"line":79,"column":0},"end":{"line":79,"column":27}},"79":{"start":{"line":80,"column":0},"end":{"line":80,"column":30}},"80":{"start":{"line":81,"column":0},"end":{"line":81,"column":3}},"81":{"start":{"line":82,"column":0},"end":{"line":82,"column":0}},"82":{"start":{"line":83,"column":0},"end":{"line":83,"column":84}},"83":{"start":{"line":84,"column":0},"end":{"line":84,"column":91}},"84":{"start":{"line":85,"column":0},"end":{"line":85,"column":80}},"85":{"start":{"line":86,"column":0},"end":{"line":86,"column":59}},"86":{"start":{"line":87,"column":0},"end":{"line":87,"column":26}},"87":{"start":{"line":88,"column":0},"end":{"line":88,"column":37}},"88":{"start":{"line":89,"column":0},"end":{"line":89,"column":5}},"89":{"start":{"line":90,"column":0},"end":{"line":90,"column":56}},"90":{"start":{"line":91,"column":0},"end":{"line":91,"column":71}},"91":{"start":{"line":92,"column":0},"end":{"line":92,"column":109}},"92":{"start":{"line":93,"column":0},"end":{"line":93,"column":32}},"93":{"start":{"line":94,"column":0},"end":{"line":94,"column":51}},"94":{"start":{"line":95,"column":0},"end":{"line":95,"column":37}},"95":{"start":{"line":96,"column":0},"end":{"line":96,"column":3}},"96":{"start":{"line":97,"column":0},"end":{"line":97,"column":0}},"97":{"start":{"line":98,"column":0},"end":{"line":98,"column":36}},"98":{"start":{"line":99,"column":0},"end":{"line":99,"column":29}},"99":{"start":{"line":100,"column":0},"end":{"line":100,"column":28}},"100":{"start":{"line":101,"column":0},"end":{"line":101,"column":30}},"101":{"start":{"line":102,"column":0},"end":{"line":102,"column":3}},"102":{"start":{"line":103,"column":0},"end":{"line":103,"column":0}},"103":{"start":{"line":104,"column":0},"end":{"line":104,"column":32}},"104":{"start":{"line":105,"column":0},"end":{"line":105,"column":89}},"105":{"start":{"line":106,"column":0},"end":{"line":106,"column":3}},"106":{"start":{"line":107,"column":0},"end":{"line":107,"column":0}},"107":{"start":{"line":108,"column":0},"end":{"line":108,"column":18}},"108":{"start":{"line":109,"column":0},"end":{"line":109,"column":62}},"109":{"start":{"line":110,"column":0},"end":{"line":110,"column":166}},"110":{"start":{"line":111,"column":0},"end":{"line":111,"column":17}},"111":{"start":{"line":112,"column":0},"end":{"line":112,"column":132}},"112":{"start":{"line":113,"column":0},"end":{"line":113,"column":6}},"113":{"start":{"line":114,"column":0},"end":{"line":114,"column":3}},"114":{"start":{"line":115,"column":0},"end":{"line":115,"column":55}},"115":{"start":{"line":116,"column":0},"end":{"line":116,"column":49}},"116":{"start":{"line":117,"column":0},"end":{"line":117,"column":0}},"117":{"start":{"line":118,"column":0},"end":{"line":118,"column":25}},"118":{"start":{"line":119,"column":0},"end":{"line":119,"column":0}},"119":{"start":{"line":120,"column":0},"end":{"line":120,"column":9}},"120":{"start":{"line":121,"column":0},"end":{"line":121,"column":32}},"121":{"start":{"line":122,"column":0},"end":{"line":122,"column":150}},"122":{"start":{"line":123,"column":0},"end":{"line":123,"column":76}},"123":{"start":{"line":124,"column":0},"end":{"line":124,"column":118}},"124":{"start":{"line":125,"column":0},"end":{"line":125,"column":25}},"125":{"start":{"line":126,"column":0},"end":{"line":126,"column":19}},"126":{"start":{"line":127,"column":0},"end":{"line":127,"column":9}},"127":{"start":{"line":128,"column":0},"end":{"line":128,"column":45}},"128":{"start":{"line":129,"column":0},"end":{"line":129,"column":74}},"129":{"start":{"line":130,"column":0},"end":{"line":130,"column":26}},"130":{"start":{"line":131,"column":0},"end":{"line":131,"column":19}},"131":{"start":{"line":132,"column":0},"end":{"line":132,"column":9}},"132":{"start":{"line":133,"column":0},"end":{"line":133,"column":0}},"133":{"start":{"line":134,"column":0},"end":{"line":134,"column":82}},"134":{"start":{"line":135,"column":0},"end":{"line":135,"column":58}},"135":{"start":{"line":136,"column":0},"end":{"line":136,"column":0}},"136":{"start":{"line":137,"column":0},"end":{"line":137,"column":36}},"137":{"start":{"line":138,"column":0},"end":{"line":138,"column":47}},"138":{"start":{"line":139,"column":0},"end":{"line":139,"column":56}},"139":{"start":{"line":140,"column":0},"end":{"line":140,"column":9}},"140":{"start":{"line":141,"column":0},"end":{"line":141,"column":0}},"141":{"start":{"line":142,"column":0},"end":{"line":142,"column":28}},"142":{"start":{"line":143,"column":0},"end":{"line":143,"column":28}},"143":{"start":{"line":144,"column":0},"end":{"line":144,"column":40}},"144":{"start":{"line":145,"column":0},"end":{"line":145,"column":47}},"145":{"start":{"line":146,"column":0},"end":{"line":146,"column":13}},"146":{"start":{"line":147,"column":0},"end":{"line":147,"column":49}},"147":{"start":{"line":148,"column":0},"end":{"line":148,"column":33}},"148":{"start":{"line":149,"column":0},"end":{"line":149,"column":32}},"149":{"start":{"line":150,"column":0},"end":{"line":150,"column":13}},"150":{"start":{"line":151,"column":0},"end":{"line":151,"column":72}},"151":{"start":{"line":152,"column":0},"end":{"line":152,"column":60}},"152":{"start":{"line":153,"column":0},"end":{"line":153,"column":25}},"153":{"start":{"line":154,"column":0},"end":{"line":154,"column":12}},"154":{"start":{"line":155,"column":0},"end":{"line":155,"column":16}},"155":{"start":{"line":156,"column":0},"end":{"line":156,"column":24}},"156":{"start":{"line":157,"column":0},"end":{"line":157,"column":54}},"157":{"start":{"line":158,"column":0},"end":{"line":158,"column":0}},"158":{"start":{"line":159,"column":0},"end":{"line":159,"column":56}},"159":{"start":{"line":160,"column":0},"end":{"line":160,"column":112}},"160":{"start":{"line":161,"column":0},"end":{"line":161,"column":112}},"161":{"start":{"line":162,"column":0},"end":{"line":162,"column":49}},"162":{"start":{"line":163,"column":0},"end":{"line":163,"column":102}},"163":{"start":{"line":164,"column":0},"end":{"line":164,"column":87}},"164":{"start":{"line":165,"column":0},"end":{"line":165,"column":25}},"165":{"start":{"line":166,"column":0},"end":{"line":166,"column":17}},"166":{"start":{"line":167,"column":0},"end":{"line":167,"column":0}},"167":{"start":{"line":168,"column":0},"end":{"line":168,"column":21}},"168":{"start":{"line":169,"column":0},"end":{"line":169,"column":58}},"169":{"start":{"line":170,"column":0},"end":{"line":170,"column":77}},"170":{"start":{"line":171,"column":0},"end":{"line":171,"column":76}},"171":{"start":{"line":172,"column":0},"end":{"line":172,"column":81}},"172":{"start":{"line":173,"column":0},"end":{"line":173,"column":0}},"173":{"start":{"line":174,"column":0},"end":{"line":174,"column":60}},"174":{"start":{"line":175,"column":0},"end":{"line":175,"column":40}},"175":{"start":{"line":176,"column":0},"end":{"line":176,"column":34}},"176":{"start":{"line":177,"column":0},"end":{"line":177,"column":74}},"177":{"start":{"line":178,"column":0},"end":{"line":178,"column":40}},"178":{"start":{"line":179,"column":0},"end":{"line":179,"column":27}},"179":{"start":{"line":180,"column":0},"end":{"line":180,"column":19}},"180":{"start":{"line":181,"column":0},"end":{"line":181,"column":31}},"181":{"start":{"line":182,"column":0},"end":{"line":182,"column":22}},"182":{"start":{"line":183,"column":0},"end":{"line":183,"column":70}},"183":{"start":{"line":184,"column":0},"end":{"line":184,"column":71}},"184":{"start":{"line":185,"column":0},"end":{"line":185,"column":22}},"185":{"start":{"line":186,"column":0},"end":{"line":186,"column":20}},"186":{"start":{"line":187,"column":0},"end":{"line":187,"column":26}},"187":{"start":{"line":188,"column":0},"end":{"line":188,"column":17}},"188":{"start":{"line":189,"column":0},"end":{"line":189,"column":17}},"189":{"start":{"line":190,"column":0},"end":{"line":190,"column":14}},"190":{"start":{"line":191,"column":0},"end":{"line":191,"column":20}},"191":{"start":{"line":192,"column":0},"end":{"line":192,"column":42}},"192":{"start":{"line":193,"column":0},"end":{"line":193,"column":123}},"193":{"start":{"line":194,"column":0},"end":{"line":194,"column":23}},"194":{"start":{"line":195,"column":0},"end":{"line":195,"column":15}},"195":{"start":{"line":196,"column":0},"end":{"line":196,"column":86}},"196":{"start":{"line":197,"column":0},"end":{"line":197,"column":22}},"197":{"start":{"line":198,"column":0},"end":{"line":198,"column":13}},"198":{"start":{"line":199,"column":0},"end":{"line":199,"column":11}},"199":{"start":{"line":200,"column":0},"end":{"line":200,"column":25}},"200":{"start":{"line":201,"column":0},"end":{"line":201,"column":40}},"201":{"start":{"line":202,"column":0},"end":{"line":202,"column":121}},"202":{"start":{"line":203,"column":0},"end":{"line":203,"column":21}},"203":{"start":{"line":204,"column":0},"end":{"line":204,"column":13}},"204":{"start":{"line":205,"column":0},"end":{"line":205,"column":74}},"205":{"start":{"line":206,"column":0},"end":{"line":206,"column":28}},"206":{"start":{"line":207,"column":0},"end":{"line":207,"column":13}},"207":{"start":{"line":208,"column":0},"end":{"line":208,"column":0}},"208":{"start":{"line":209,"column":0},"end":{"line":209,"column":61}},"209":{"start":{"line":210,"column":0},"end":{"line":210,"column":40}},"210":{"start":{"line":211,"column":0},"end":{"line":211,"column":11}},"211":{"start":{"line":212,"column":0},"end":{"line":212,"column":7}},"212":{"start":{"line":213,"column":0},"end":{"line":213,"column":22}},"213":{"start":{"line":214,"column":0},"end":{"line":214,"column":61}},"214":{"start":{"line":215,"column":0},"end":{"line":215,"column":29}},"215":{"start":{"line":216,"column":0},"end":{"line":216,"column":24}},"216":{"start":{"line":217,"column":0},"end":{"line":217,"column":7}},"217":{"start":{"line":218,"column":0},"end":{"line":218,"column":15}},"218":{"start":{"line":219,"column":0},"end":{"line":219,"column":28}},"219":{"start":{"line":220,"column":0},"end":{"line":220,"column":5}},"220":{"start":{"line":221,"column":0},"end":{"line":221,"column":3}},"221":{"start":{"line":222,"column":0},"end":{"line":222,"column":1}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"38":1,"39":1,"40":1,"41":1,"42":1,"43":20,"44":20,"45":20,"46":20,"47":20,"48":20,"49":20,"50":20,"51":20,"52":20,"53":20,"54":20,"55":20,"56":20,"57":20,"58":20,"59":20,"60":20,"61":20,"62":20,"63":20,"64":20,"65":20,"66":20,"67":20,"68":20,"69":20,"70":20,"71":0,"72":20,"73":20,"74":20,"75":20,"76":1,"77":1,"78":20,"79":20,"80":20,"81":1,"82":1,"83":0,"84":0,"85":0,"86":0,"87":0,"88":0,"89":0,"90":0,"91":0,"92":0,"93":0,"94":0,"95":0,"96":1,"97":1,"98":0,"99":0,"100":0,"101":0,"102":1,"103":1,"104":0,"105":0,"106":1,"107":1,"108":1,"109":0,"110":0,"111":0,"112":0,"113":0,"114":1,"115":0,"116":0,"117":0,"118":0,"119":0,"120":0,"121":0,"122":0,"123":0,"124":0,"125":0,"126":0,"127":0,"128":0,"129":0,"130":0,"131":0,"132":0,"133":0,"134":0,"135":0,"136":0,"137":0,"138":0,"139":0,"140":0,"141":0,"142":0,"143":0,"144":0,"145":0,"146":0,"147":0,"148":0,"149":0,"150":0,"151":0,"152":0,"153":0,"154":0,"155":0,"156":0,"157":0,"158":0,"159":0,"160":0,"161":0,"162":0,"163":0,"164":0,"165":0,"166":0,"167":0,"168":0,"169":0,"170":0,"171":0,"172":0,"173":0,"174":0,"175":0,"176":0,"177":0,"178":0,"179":0,"180":0,"181":0,"182":0,"183":0,"184":0,"185":0,"186":0,"187":0,"188":0,"189":0,"190":0,"191":0,"192":0,"193":0,"194":0,"195":0,"196":0,"197":0,"198":0,"199":0,"200":0,"201":0,"202":0,"203":0,"204":0,"205":0,"206":0,"207":0,"208":0,"209":0,"210":0,"211":0,"212":0,"213":0,"214":0,"215":0,"216":0,"217":0,"218":0,"219":0,"220":0,"221":1},"branchMap":{"0":{"type":"branch","line":43,"loc":{"start":{"line":43,"column":2},"end":{"line":76,"column":3}},"locations":[{"start":{"line":43,"column":2},"end":{"line":76,"column":3}}]},"1":{"type":"branch","line":71,"loc":{"start":{"line":71,"column":34},"end":{"line":73,"column":11}},"locations":[{"start":{"line":71,"column":34},"end":{"line":73,"column":11}}]},"2":{"type":"branch","line":78,"loc":{"start":{"line":78,"column":2},"end":{"line":81,"column":3}},"locations":[{"start":{"line":78,"column":2},"end":{"line":81,"column":3}}]}},"b":{"0":[20],"1":[0],"2":[20]},"fnMap":{"0":{"name":"BlockDispatcher","decl":{"start":{"line":43,"column":2},"end":{"line":76,"column":3}},"loc":{"start":{"line":43,"column":2},"end":{"line":76,"column":3}},"line":43},"1":{"name":"onApplicationShutdown","decl":{"start":{"line":78,"column":2},"end":{"line":81,"column":3}},"loc":{"start":{"line":78,"column":2},"end":{"line":81,"column":3}},"line":78},"2":{"name":"enqueueBlocks","decl":{"start":{"line":83,"column":2},"end":{"line":96,"column":3}},"loc":{"start":{"line":83,"column":2},"end":{"line":96,"column":3}},"line":83},"3":{"name":"flushQueue","decl":{"start":{"line":98,"column":2},"end":{"line":102,"column":3}},"loc":{"start":{"line":98,"column":2},"end":{"line":102,"column":3}},"line":98},"4":{"name":"memoryleft","decl":{"start":{"line":104,"column":10},"end":{"line":106,"column":3}},"loc":{"start":{"line":104,"column":10},"end":{"line":106,"column":3}},"line":104},"5":{"name":"queueStats","decl":{"start":{"line":109,"column":2},"end":{"line":114,"column":3}},"loc":{"start":{"line":109,"column":2},"end":{"line":114,"column":3}},"line":109},"6":{"name":"fetchBlocksFromQueue","decl":{"start":{"line":115,"column":10},"end":{"line":221,"column":3}},"loc":{"start":{"line":115,"column":10},"end":{"line":221,"column":3}},"line":115}},"f":{"0":20,"1":20,"2":0,"3":0,"4":0,"5":0,"6":0}},"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/indexer/blockDispatcher/index.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/indexer/blockDispatcher/index.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":40}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":35}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":42}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1},"branchMap":{},"b":{},"fnMap":{},"f":{}},"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/indexer/blockDispatcher/worker-block-dispatcher.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/indexer/blockDispatcher/worker-block-dispatcher.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":28}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":53}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":52}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":42}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":28}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":43}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":78}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":42}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":53}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":39}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":58}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":55}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":56}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":46}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":48}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":59}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":56}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":60}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":0}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":57}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":0}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":15}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":49}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":32}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":39}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":41}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":69}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":35}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":2}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":0}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":26}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":30}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":20}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":19}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":15}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":17}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":77}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":66}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":1}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":0}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":68}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":53}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":34}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":1}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":30}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":29}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":29}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":33}},"51":{"start":{"line":52,"column":0},"end":{"line":52,"column":0}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":74}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":0}},"54":{"start":{"line":55,"column":0},"end":{"line":55,"column":14}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":27}},"56":{"start":{"line":57,"column":0},"end":{"line":57,"column":32}},"57":{"start":{"line":58,"column":0},"end":{"line":58,"column":40}},"58":{"start":{"line":59,"column":0},"end":{"line":59,"column":50}},"59":{"start":{"line":60,"column":0},"end":{"line":60,"column":41}},"60":{"start":{"line":61,"column":0},"end":{"line":61,"column":31}},"61":{"start":{"line":62,"column":0},"end":{"line":62,"column":41}},"62":{"start":{"line":63,"column":0},"end":{"line":63,"column":35}},"63":{"start":{"line":64,"column":0},"end":{"line":64,"column":30}},"64":{"start":{"line":65,"column":0},"end":{"line":65,"column":43}},"65":{"start":{"line":66,"column":0},"end":{"line":66,"column":49}},"66":{"start":{"line":67,"column":0},"end":{"line":67,"column":5}},"67":{"start":{"line":68,"column":0},"end":{"line":68,"column":10}},"68":{"start":{"line":69,"column":0},"end":{"line":69,"column":17}},"69":{"start":{"line":70,"column":0},"end":{"line":70,"column":19}},"70":{"start":{"line":71,"column":0},"end":{"line":71,"column":14}},"71":{"start":{"line":72,"column":0},"end":{"line":72,"column":21}},"72":{"start":{"line":73,"column":0},"end":{"line":73,"column":28}},"73":{"start":{"line":74,"column":0},"end":{"line":74,"column":92}},"74":{"start":{"line":75,"column":0},"end":{"line":75,"column":24}},"75":{"start":{"line":76,"column":0},"end":{"line":76,"column":19}},"76":{"start":{"line":77,"column":0},"end":{"line":77,"column":24}},"77":{"start":{"line":78,"column":0},"end":{"line":78,"column":21}},"78":{"start":{"line":79,"column":0},"end":{"line":79,"column":22}},"79":{"start":{"line":80,"column":0},"end":{"line":80,"column":6}},"80":{"start":{"line":81,"column":0},"end":{"line":81,"column":109}},"81":{"start":{"line":82,"column":0},"end":{"line":82,"column":72}},"82":{"start":{"line":83,"column":0},"end":{"line":83,"column":42}},"83":{"start":{"line":84,"column":0},"end":{"line":84,"column":3}},"84":{"start":{"line":85,"column":0},"end":{"line":85,"column":0}},"85":{"start":{"line":86,"column":0},"end":{"line":86,"column":84}},"86":{"start":{"line":87,"column":0},"end":{"line":87,"column":111}},"87":{"start":{"line":88,"column":0},"end":{"line":88,"column":0}},"88":{"start":{"line":89,"column":0},"end":{"line":89,"column":42}},"89":{"start":{"line":90,"column":0},"end":{"line":90,"column":3}},"90":{"start":{"line":91,"column":0},"end":{"line":91,"column":0}},"91":{"start":{"line":92,"column":0},"end":{"line":92,"column":48}},"92":{"start":{"line":93,"column":0},"end":{"line":93,"column":27}},"93":{"start":{"line":94,"column":0},"end":{"line":94,"column":29}},"94":{"start":{"line":95,"column":0},"end":{"line":95,"column":23}},"95":{"start":{"line":96,"column":0},"end":{"line":96,"column":0}},"96":{"start":{"line":97,"column":0},"end":{"line":97,"column":23}},"97":{"start":{"line":98,"column":0},"end":{"line":98,"column":23}},"98":{"start":{"line":99,"column":0},"end":{"line":99,"column":64}},"99":{"start":{"line":100,"column":0},"end":{"line":100,"column":5}},"100":{"start":{"line":101,"column":0},"end":{"line":101,"column":3}},"101":{"start":{"line":102,"column":0},"end":{"line":102,"column":100}},"102":{"start":{"line":103,"column":0},"end":{"line":103,"column":11}},"103":{"start":{"line":104,"column":0},"end":{"line":104,"column":50}},"104":{"start":{"line":105,"column":0},"end":{"line":105,"column":76}},"105":{"start":{"line":106,"column":0},"end":{"line":106,"column":6}},"106":{"start":{"line":107,"column":0},"end":{"line":107,"column":0}},"107":{"start":{"line":108,"column":0},"end":{"line":108,"column":91}},"108":{"start":{"line":109,"column":0},"end":{"line":109,"column":80}},"109":{"start":{"line":110,"column":0},"end":{"line":110,"column":59}},"110":{"start":{"line":111,"column":0},"end":{"line":111,"column":50}},"111":{"start":{"line":112,"column":0},"end":{"line":112,"column":37}},"112":{"start":{"line":113,"column":0},"end":{"line":113,"column":5}},"113":{"start":{"line":114,"column":0},"end":{"line":114,"column":0}},"114":{"start":{"line":115,"column":0},"end":{"line":115,"column":102}},"115":{"start":{"line":116,"column":0},"end":{"line":116,"column":0}},"116":{"start":{"line":117,"column":0},"end":{"line":117,"column":53}},"117":{"start":{"line":118,"column":0},"end":{"line":118,"column":15}},"118":{"start":{"line":119,"column":0},"end":{"line":119,"column":25}},"119":{"start":{"line":120,"column":0},"end":{"line":120,"column":43}},"120":{"start":{"line":121,"column":0},"end":{"line":121,"column":58}},"121":{"start":{"line":122,"column":0},"end":{"line":122,"column":100}},"122":{"start":{"line":123,"column":0},"end":{"line":123,"column":26}},"123":{"start":{"line":124,"column":0},"end":{"line":124,"column":17}},"124":{"start":{"line":125,"column":0},"end":{"line":125,"column":54}},"125":{"start":{"line":126,"column":0},"end":{"line":126,"column":76}},"126":{"start":{"line":127,"column":0},"end":{"line":127,"column":10}},"127":{"start":{"line":128,"column":0},"end":{"line":128,"column":32}},"128":{"start":{"line":129,"column":0},"end":{"line":129,"column":7}},"129":{"start":{"line":130,"column":0},"end":{"line":130,"column":12}},"130":{"start":{"line":131,"column":0},"end":{"line":131,"column":8}},"131":{"start":{"line":132,"column":0},"end":{"line":132,"column":24}},"132":{"start":{"line":133,"column":0},"end":{"line":133,"column":23}},"133":{"start":{"line":134,"column":0},"end":{"line":134,"column":23}},"134":{"start":{"line":135,"column":0},"end":{"line":135,"column":9}},"135":{"start":{"line":136,"column":0},"end":{"line":136,"column":106}},"136":{"start":{"line":137,"column":0},"end":{"line":137,"column":5}},"137":{"start":{"line":138,"column":0},"end":{"line":138,"column":0}},"138":{"start":{"line":139,"column":0},"end":{"line":139,"column":109}},"139":{"start":{"line":140,"column":0},"end":{"line":140,"column":3}},"140":{"start":{"line":141,"column":0},"end":{"line":141,"column":0}},"141":{"start":{"line":142,"column":0},"end":{"line":142,"column":80}},"142":{"start":{"line":143,"column":0},"end":{"line":143,"column":32}},"143":{"start":{"line":144,"column":0},"end":{"line":144,"column":43}},"144":{"start":{"line":145,"column":0},"end":{"line":145,"column":0}},"145":{"start":{"line":146,"column":0},"end":{"line":146,"column":52}},"146":{"start":{"line":147,"column":0},"end":{"line":147,"column":0}},"147":{"start":{"line":148,"column":0},"end":{"line":148,"column":78}},"148":{"start":{"line":149,"column":0},"end":{"line":149,"column":53}},"149":{"start":{"line":150,"column":0},"end":{"line":150,"column":0}},"150":{"start":{"line":151,"column":0},"end":{"line":151,"column":63}},"151":{"start":{"line":152,"column":0},"end":{"line":152,"column":0}},"152":{"start":{"line":153,"column":0},"end":{"line":153,"column":57}},"153":{"start":{"line":154,"column":0},"end":{"line":154,"column":0}},"154":{"start":{"line":155,"column":0},"end":{"line":155,"column":38}},"155":{"start":{"line":156,"column":0},"end":{"line":156,"column":11}},"156":{"start":{"line":157,"column":0},"end":{"line":157,"column":27}},"157":{"start":{"line":158,"column":0},"end":{"line":158,"column":57}},"158":{"start":{"line":159,"column":0},"end":{"line":159,"column":80}},"159":{"start":{"line":160,"column":0},"end":{"line":160,"column":17}},"160":{"start":{"line":161,"column":0},"end":{"line":161,"column":9}},"161":{"start":{"line":162,"column":0},"end":{"line":162,"column":0}},"162":{"start":{"line":163,"column":0},"end":{"line":163,"column":43}},"163":{"start":{"line":164,"column":0},"end":{"line":164,"column":0}},"164":{"start":{"line":165,"column":0},"end":{"line":165,"column":100}},"165":{"start":{"line":166,"column":0},"end":{"line":166,"column":0}},"166":{"start":{"line":167,"column":0},"end":{"line":167,"column":45}},"167":{"start":{"line":168,"column":0},"end":{"line":168,"column":27}},"168":{"start":{"line":169,"column":0},"end":{"line":169,"column":20}},"169":{"start":{"line":170,"column":0},"end":{"line":170,"column":29}},"170":{"start":{"line":171,"column":0},"end":{"line":171,"column":11}},"171":{"start":{"line":172,"column":0},"end":{"line":172,"column":24}},"172":{"start":{"line":173,"column":0},"end":{"line":173,"column":64}},"173":{"start":{"line":174,"column":0},"end":{"line":174,"column":0}},"174":{"start":{"line":175,"column":0},"end":{"line":175,"column":41}},"175":{"start":{"line":176,"column":0},"end":{"line":176,"column":17}},"176":{"start":{"line":177,"column":0},"end":{"line":177,"column":9}},"177":{"start":{"line":178,"column":0},"end":{"line":178,"column":21}},"178":{"start":{"line":179,"column":0},"end":{"line":179,"column":12}},"179":{"start":{"line":180,"column":0},"end":{"line":180,"column":106}},"180":{"start":{"line":181,"column":0},"end":{"line":181,"column":10}},"181":{"start":{"line":182,"column":0},"end":{"line":182,"column":24}},"182":{"start":{"line":183,"column":0},"end":{"line":183,"column":7}},"183":{"start":{"line":184,"column":0},"end":{"line":184,"column":6}},"184":{"start":{"line":185,"column":0},"end":{"line":185,"column":0}},"185":{"start":{"line":186,"column":0},"end":{"line":186,"column":52}},"186":{"start":{"line":187,"column":0},"end":{"line":187,"column":34}},"187":{"start":{"line":188,"column":0},"end":{"line":188,"column":15}},"188":{"start":{"line":189,"column":0},"end":{"line":189,"column":7}},"189":{"start":{"line":190,"column":0},"end":{"line":190,"column":14}},"190":{"start":{"line":191,"column":0},"end":{"line":191,"column":7}},"191":{"start":{"line":192,"column":0},"end":{"line":192,"column":3}},"192":{"start":{"line":193,"column":0},"end":{"line":193,"column":0}},"193":{"start":{"line":194,"column":0},"end":{"line":194,"column":18}},"194":{"start":{"line":195,"column":0},"end":{"line":195,"column":45}},"195":{"start":{"line":196,"column":0},"end":{"line":196,"column":40}},"196":{"start":{"line":197,"column":0},"end":{"line":197,"column":46}},"197":{"start":{"line":198,"column":0},"end":{"line":198,"column":42}},"198":{"start":{"line":199,"column":0},"end":{"line":199,"column":5}},"199":{"start":{"line":200,"column":0},"end":{"line":200,"column":3}},"200":{"start":{"line":201,"column":0},"end":{"line":201,"column":0}},"201":{"start":{"line":202,"column":0},"end":{"line":202,"column":52}},"202":{"start":{"line":203,"column":0},"end":{"line":203,"column":38}},"203":{"start":{"line":204,"column":0},"end":{"line":204,"column":38}},"204":{"start":{"line":205,"column":0},"end":{"line":205,"column":3}},"205":{"start":{"line":206,"column":0},"end":{"line":206,"column":0}},"206":{"start":{"line":207,"column":0},"end":{"line":207,"column":44}},"207":{"start":{"line":208,"column":0},"end":{"line":208,"column":40}},"208":{"start":{"line":209,"column":0},"end":{"line":209,"column":77}},"209":{"start":{"line":210,"column":0},"end":{"line":210,"column":57}},"210":{"start":{"line":211,"column":0},"end":{"line":211,"column":28}},"211":{"start":{"line":212,"column":0},"end":{"line":212,"column":7}},"212":{"start":{"line":213,"column":0},"end":{"line":213,"column":3}},"213":{"start":{"line":214,"column":0},"end":{"line":214,"column":0}},"214":{"start":{"line":215,"column":0},"end":{"line":215,"column":55}},"215":{"start":{"line":216,"column":0},"end":{"line":216,"column":47}},"216":{"start":{"line":217,"column":0},"end":{"line":217,"column":8}},"217":{"start":{"line":218,"column":0},"end":{"line":218,"column":84}},"218":{"start":{"line":219,"column":0},"end":{"line":219,"column":82}},"219":{"start":{"line":220,"column":0},"end":{"line":220,"column":45}},"220":{"start":{"line":221,"column":0},"end":{"line":221,"column":39}},"221":{"start":{"line":222,"column":0},"end":{"line":222,"column":7}},"222":{"start":{"line":223,"column":0},"end":{"line":223,"column":53}},"223":{"start":{"line":224,"column":0},"end":{"line":224,"column":0}},"224":{"start":{"line":225,"column":0},"end":{"line":225,"column":68}},"225":{"start":{"line":226,"column":0},"end":{"line":226,"column":85}},"226":{"start":{"line":227,"column":0},"end":{"line":227,"column":107}},"227":{"start":{"line":228,"column":0},"end":{"line":228,"column":0}},"228":{"start":{"line":229,"column":0},"end":{"line":229,"column":37}},"229":{"start":{"line":230,"column":0},"end":{"line":230,"column":3}},"230":{"start":{"line":231,"column":0},"end":{"line":231,"column":0}},"231":{"start":{"line":232,"column":0},"end":{"line":232,"column":66}},"232":{"start":{"line":233,"column":0},"end":{"line":233,"column":66}},"233":{"start":{"line":234,"column":0},"end":{"line":234,"column":50}},"234":{"start":{"line":235,"column":0},"end":{"line":235,"column":75}},"235":{"start":{"line":236,"column":0},"end":{"line":236,"column":3}},"236":{"start":{"line":237,"column":0},"end":{"line":237,"column":1}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":3,"34":3,"35":3,"36":3,"37":3,"38":3,"39":3,"40":3,"41":3,"42":1,"43":1,"44":1,"45":1,"46":1,"47":1,"48":1,"49":1,"50":1,"51":1,"52":1,"53":1,"54":1,"55":3,"56":3,"57":3,"58":3,"59":3,"60":3,"61":3,"62":3,"63":3,"64":3,"65":3,"66":3,"67":3,"68":3,"69":3,"70":3,"71":3,"72":3,"73":3,"74":3,"75":3,"76":3,"77":3,"78":3,"79":3,"80":3,"81":3,"82":3,"83":3,"84":1,"85":1,"86":0,"87":0,"88":0,"89":0,"90":1,"91":1,"92":0,"93":0,"94":0,"95":0,"96":0,"97":0,"98":0,"99":0,"100":0,"101":1,"102":0,"103":0,"104":0,"105":0,"106":0,"107":0,"108":0,"109":0,"110":0,"111":0,"112":0,"113":0,"114":0,"115":0,"116":0,"117":0,"118":0,"119":0,"120":0,"121":0,"122":0,"123":0,"124":0,"125":0,"126":0,"127":0,"128":0,"129":0,"130":0,"131":0,"132":0,"133":0,"134":0,"135":0,"136":0,"137":0,"138":0,"139":0,"140":1,"141":1,"142":0,"143":0,"144":0,"145":0,"146":0,"147":0,"148":0,"149":0,"150":0,"151":0,"152":0,"153":0,"154":0,"155":0,"156":0,"157":0,"158":0,"159":0,"160":0,"161":0,"162":0,"163":0,"164":0,"165":0,"166":0,"167":0,"168":0,"169":0,"170":0,"171":0,"172":0,"173":0,"174":0,"175":0,"176":0,"177":0,"178":0,"179":0,"180":0,"181":0,"182":0,"183":0,"184":0,"185":0,"186":0,"187":0,"188":0,"189":0,"190":0,"191":0,"192":1,"193":1,"194":1,"195":0,"196":0,"197":0,"198":0,"199":0,"200":1,"201":1,"202":1,"203":0,"204":0,"205":1,"206":1,"207":0,"208":0,"209":0,"210":0,"211":0,"212":0,"213":1,"214":1,"215":4,"216":4,"217":9,"218":9,"219":9,"220":3,"221":3,"222":4,"223":1,"224":1,"225":1,"226":1,"227":1,"228":1,"229":1,"230":1,"231":1,"232":0,"233":0,"234":0,"235":0,"236":1},"branchMap":{"0":{"type":"branch","line":34,"loc":{"start":{"line":34,"column":0},"end":{"line":42,"column":1}},"locations":[{"start":{"line":34,"column":0},"end":{"line":42,"column":1}}]},"1":{"type":"branch","line":55,"loc":{"start":{"line":55,"column":2},"end":{"line":84,"column":3}},"locations":[{"start":{"line":55,"column":2},"end":{"line":84,"column":3}}]},"2":{"type":"branch","line":215,"loc":{"start":{"line":215,"column":10},"end":{"line":230,"column":3}},"locations":[{"start":{"line":215,"column":10},"end":{"line":230,"column":3}}]},"3":{"type":"branch","line":217,"loc":{"start":{"line":217,"column":7},"end":{"line":223,"column":13}},"locations":[{"start":{"line":217,"column":7},"end":{"line":223,"column":13}}]},"4":{"type":"branch","line":220,"loc":{"start":{"line":220,"column":44},"end":{"line":222,"column":7}},"locations":[{"start":{"line":220,"column":44},"end":{"line":222,"column":7}}]},"5":{"type":"branch","line":223,"loc":{"start":{"line":223,"column":5},"end":{"line":230,"column":3}},"locations":[{"start":{"line":223,"column":5},"end":{"line":230,"column":3}}]},"6":{"type":"branch","line":227,"loc":{"start":{"line":227,"column":40},"end":{"line":227,"column":104}},"locations":[{"start":{"line":227,"column":40},"end":{"line":227,"column":104}}]}},"b":{"0":[3],"1":[3],"2":[4],"3":[9],"4":[3],"5":[1],"6":[3]},"fnMap":{"0":{"name":"initAutoQueue","decl":{"start":{"line":34,"column":0},"end":{"line":42,"column":1}},"loc":{"start":{"line":34,"column":0},"end":{"line":42,"column":1}},"line":34},"1":{"name":"WorkerBlockDispatcher","decl":{"start":{"line":55,"column":2},"end":{"line":84,"column":3}},"loc":{"start":{"line":55,"column":2},"end":{"line":84,"column":3}},"line":55},"2":{"name":"init","decl":{"start":{"line":86,"column":2},"end":{"line":90,"column":3}},"loc":{"start":{"line":86,"column":2},"end":{"line":90,"column":3}},"line":86},"3":{"name":"onApplicationShutdown","decl":{"start":{"line":92,"column":2},"end":{"line":101,"column":3}},"loc":{"start":{"line":92,"column":2},"end":{"line":101,"column":3}},"line":92},"4":{"name":"enqueueBlocks","decl":{"start":{"line":102,"column":2},"end":{"line":140,"column":3}},"loc":{"start":{"line":102,"column":2},"end":{"line":140,"column":3}},"line":102},"5":{"name":"enqueueBlock","decl":{"start":{"line":142,"column":10},"end":{"line":192,"column":3}},"loc":{"start":{"line":142,"column":10},"end":{"line":192,"column":3}},"line":142},"6":{"name":"sampleWorkerStatus","decl":{"start":{"line":195,"column":8},"end":{"line":200,"column":3}},"loc":{"start":{"line":195,"column":8},"end":{"line":200,"column":3}},"line":195},"7":{"name":"get latestBufferedHeight","decl":{"start":{"line":203,"column":2},"end":{"line":205,"column":3}},"loc":{"start":{"line":203,"column":2},"end":{"line":205,"column":3}},"line":203},"8":{"name":"set latestBufferedHeight","decl":{"start":{"line":207,"column":2},"end":{"line":213,"column":3}},"loc":{"start":{"line":207,"column":2},"end":{"line":213,"column":3}},"line":207},"9":{"name":"getNextWorkerIndex","decl":{"start":{"line":215,"column":10},"end":{"line":230,"column":3}},"loc":{"start":{"line":215,"column":10},"end":{"line":230,"column":3}},"line":215},"10":{"name":"maxBatchSize","decl":{"start":{"line":232,"column":10},"end":{"line":236,"column":3}},"loc":{"start":{"line":232,"column":10},"end":{"line":236,"column":3}},"line":232}},"f":{"0":3,"1":3,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":4,"10":0}},"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/indexer/connectionPool.service.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/indexer/connectionPool.service.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":28}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":49}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":65}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":42}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":26}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":73}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":54}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":40}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":36}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":45}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":73}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":0}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":44}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":0}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":58}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":0}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":43}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":30}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":33}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":32}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":29}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":2}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":0}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":28}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":19}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":28}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":10}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":2}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":0}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":13}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":118}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":41}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":45}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":80}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":94}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":50}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":34}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":40}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":0}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":104}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":56}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":3}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":0}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":48}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":85}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":3}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":0}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":67}},"51":{"start":{"line":52,"column":0},"end":{"line":52,"column":32}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":112}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":23}},"54":{"start":{"line":55,"column":0},"end":{"line":55,"column":47}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":5}},"56":{"start":{"line":57,"column":0},"end":{"line":57,"column":3}},"57":{"start":{"line":58,"column":0},"end":{"line":58,"column":0}},"58":{"start":{"line":59,"column":0},"end":{"line":59,"column":85}},"59":{"start":{"line":60,"column":0},"end":{"line":60,"column":48}},"60":{"start":{"line":61,"column":0},"end":{"line":61,"column":74}},"61":{"start":{"line":62,"column":0},"end":{"line":62,"column":5}},"62":{"start":{"line":63,"column":0},"end":{"line":63,"column":3}},"63":{"start":{"line":64,"column":0},"end":{"line":64,"column":0}},"64":{"start":{"line":65,"column":0},"end":{"line":65,"column":67}},"65":{"start":{"line":66,"column":0},"end":{"line":66,"column":46}},"66":{"start":{"line":67,"column":0},"end":{"line":67,"column":90}},"67":{"start":{"line":68,"column":0},"end":{"line":68,"column":5}},"68":{"start":{"line":69,"column":0},"end":{"line":69,"column":32}},"69":{"start":{"line":70,"column":0},"end":{"line":70,"column":45}},"70":{"start":{"line":71,"column":0},"end":{"line":71,"column":3}},"71":{"start":{"line":72,"column":0},"end":{"line":72,"column":0}},"72":{"start":{"line":73,"column":0},"end":{"line":73,"column":55}},"73":{"start":{"line":74,"column":0},"end":{"line":74,"column":45}},"74":{"start":{"line":75,"column":0},"end":{"line":75,"column":3}},"75":{"start":{"line":76,"column":0},"end":{"line":76,"column":0}},"76":{"start":{"line":77,"column":0},"end":{"line":77,"column":62}},"77":{"start":{"line":78,"column":0},"end":{"line":78,"column":103}},"78":{"start":{"line":79,"column":0},"end":{"line":79,"column":61}},"79":{"start":{"line":80,"column":0},"end":{"line":80,"column":48}},"80":{"start":{"line":81,"column":0},"end":{"line":81,"column":5}},"81":{"start":{"line":82,"column":0},"end":{"line":82,"column":38}},"82":{"start":{"line":83,"column":0},"end":{"line":83,"column":3}},"83":{"start":{"line":84,"column":0},"end":{"line":84,"column":0}},"84":{"start":{"line":85,"column":0},"end":{"line":85,"column":16}},"85":{"start":{"line":86,"column":0},"end":{"line":86,"column":41}},"86":{"start":{"line":87,"column":0},"end":{"line":87,"column":0}},"87":{"start":{"line":88,"column":0},"end":{"line":88,"column":33}},"88":{"start":{"line":89,"column":0},"end":{"line":89,"column":22}},"89":{"start":{"line":90,"column":0},"end":{"line":90,"column":143}},"90":{"start":{"line":91,"column":0},"end":{"line":91,"column":8}},"91":{"start":{"line":92,"column":0},"end":{"line":92,"column":5}},"92":{"start":{"line":93,"column":0},"end":{"line":93,"column":38}},"93":{"start":{"line":94,"column":0},"end":{"line":94,"column":0}},"94":{"start":{"line":95,"column":0},"end":{"line":95,"column":58}},"95":{"start":{"line":96,"column":0},"end":{"line":96,"column":0}},"96":{"start":{"line":97,"column":0},"end":{"line":97,"column":39}},"97":{"start":{"line":98,"column":0},"end":{"line":98,"column":40}},"98":{"start":{"line":99,"column":0},"end":{"line":99,"column":37}},"99":{"start":{"line":100,"column":0},"end":{"line":100,"column":75}},"100":{"start":{"line":101,"column":0},"end":{"line":101,"column":17}},"101":{"start":{"line":102,"column":0},"end":{"line":102,"column":54}},"102":{"start":{"line":103,"column":0},"end":{"line":103,"column":87}},"103":{"start":{"line":104,"column":0},"end":{"line":104,"column":65}},"104":{"start":{"line":105,"column":0},"end":{"line":105,"column":105}},"105":{"start":{"line":106,"column":0},"end":{"line":106,"column":49}},"106":{"start":{"line":107,"column":0},"end":{"line":107,"column":15}},"107":{"start":{"line":108,"column":0},"end":{"line":108,"column":0}},"108":{"start":{"line":109,"column":0},"end":{"line":109,"column":39}},"109":{"start":{"line":110,"column":0},"end":{"line":110,"column":72}},"110":{"start":{"line":111,"column":0},"end":{"line":111,"column":37}},"111":{"start":{"line":112,"column":0},"end":{"line":112,"column":65}},"112":{"start":{"line":113,"column":0},"end":{"line":113,"column":122}},"113":{"start":{"line":114,"column":0},"end":{"line":114,"column":28}},"114":{"start":{"line":115,"column":0},"end":{"line":115,"column":29}},"115":{"start":{"line":116,"column":0},"end":{"line":116,"column":86}},"116":{"start":{"line":117,"column":0},"end":{"line":117,"column":26}},"117":{"start":{"line":118,"column":0},"end":{"line":118,"column":13}},"118":{"start":{"line":119,"column":0},"end":{"line":119,"column":12}},"119":{"start":{"line":120,"column":0},"end":{"line":120,"column":9}},"120":{"start":{"line":121,"column":0},"end":{"line":121,"column":0}},"121":{"start":{"line":122,"column":0},"end":{"line":122,"column":85}},"122":{"start":{"line":123,"column":0},"end":{"line":123,"column":51}},"123":{"start":{"line":124,"column":0},"end":{"line":124,"column":8}},"124":{"start":{"line":125,"column":0},"end":{"line":125,"column":7}},"125":{"start":{"line":126,"column":0},"end":{"line":126,"column":27}},"126":{"start":{"line":127,"column":0},"end":{"line":127,"column":3}},"127":{"start":{"line":128,"column":0},"end":{"line":128,"column":0}},"128":{"start":{"line":129,"column":0},"end":{"line":129,"column":32}},"129":{"start":{"line":130,"column":0},"end":{"line":130,"column":48}},"130":{"start":{"line":131,"column":0},"end":{"line":131,"column":3}},"131":{"start":{"line":132,"column":0},"end":{"line":132,"column":0}},"132":{"start":{"line":133,"column":0},"end":{"line":133,"column":63}},"133":{"start":{"line":134,"column":0},"end":{"line":134,"column":49}},"134":{"start":{"line":135,"column":0},"end":{"line":135,"column":0}},"135":{"start":{"line":136,"column":0},"end":{"line":136,"column":38}},"136":{"start":{"line":137,"column":0},"end":{"line":137,"column":11}},"137":{"start":{"line":138,"column":0},"end":{"line":138,"column":62}},"138":{"start":{"line":139,"column":0},"end":{"line":139,"column":0}},"139":{"start":{"line":140,"column":0},"end":{"line":140,"column":49}},"140":{"start":{"line":141,"column":0},"end":{"line":141,"column":79}},"141":{"start":{"line":142,"column":0},"end":{"line":142,"column":57}},"142":{"start":{"line":143,"column":0},"end":{"line":143,"column":63}},"143":{"start":{"line":144,"column":0},"end":{"line":144,"column":19}},"144":{"start":{"line":145,"column":0},"end":{"line":145,"column":50}},"145":{"start":{"line":146,"column":0},"end":{"line":146,"column":16}},"146":{"start":{"line":147,"column":0},"end":{"line":147,"column":7}},"147":{"start":{"line":148,"column":0},"end":{"line":148,"column":6}},"148":{"start":{"line":149,"column":0},"end":{"line":149,"column":0}},"149":{"start":{"line":150,"column":0},"end":{"line":150,"column":98}},"150":{"start":{"line":151,"column":0},"end":{"line":151,"column":100}},"151":{"start":{"line":152,"column":0},"end":{"line":152,"column":66}},"152":{"start":{"line":153,"column":0},"end":{"line":153,"column":7}},"153":{"start":{"line":154,"column":0},"end":{"line":154,"column":0}},"154":{"start":{"line":155,"column":0},"end":{"line":155,"column":45}},"155":{"start":{"line":156,"column":0},"end":{"line":156,"column":47}},"156":{"start":{"line":157,"column":0},"end":{"line":157,"column":3}},"157":{"start":{"line":158,"column":0},"end":{"line":158,"column":0}},"158":{"start":{"line":159,"column":0},"end":{"line":159,"column":28}},"159":{"start":{"line":160,"column":0},"end":{"line":160,"column":44}},"160":{"start":{"line":161,"column":0},"end":{"line":161,"column":24}},"161":{"start":{"line":162,"column":0},"end":{"line":162,"column":13}},"162":{"start":{"line":163,"column":0},"end":{"line":163,"column":5}},"163":{"start":{"line":164,"column":0},"end":{"line":164,"column":82}},"164":{"start":{"line":165,"column":0},"end":{"line":165,"column":0}},"165":{"start":{"line":166,"column":0},"end":{"line":166,"column":41}},"166":{"start":{"line":167,"column":0},"end":{"line":167,"column":13}},"167":{"start":{"line":168,"column":0},"end":{"line":168,"column":5}},"168":{"start":{"line":169,"column":0},"end":{"line":169,"column":0}},"169":{"start":{"line":170,"column":0},"end":{"line":170,"column":72}},"170":{"start":{"line":171,"column":0},"end":{"line":171,"column":0}},"171":{"start":{"line":172,"column":0},"end":{"line":172,"column":22}},"172":{"start":{"line":173,"column":0},"end":{"line":173,"column":42}},"173":{"start":{"line":174,"column":0},"end":{"line":174,"column":57}},"174":{"start":{"line":175,"column":0},"end":{"line":175,"column":112}},"175":{"start":{"line":176,"column":0},"end":{"line":176,"column":118}},"176":{"start":{"line":177,"column":0},"end":{"line":177,"column":0}},"177":{"start":{"line":178,"column":0},"end":{"line":178,"column":83}},"178":{"start":{"line":179,"column":0},"end":{"line":179,"column":8}},"179":{"start":{"line":180,"column":0},"end":{"line":180,"column":6}},"180":{"start":{"line":181,"column":0},"end":{"line":181,"column":0}},"181":{"start":{"line":182,"column":0},"end":{"line":182,"column":40}},"182":{"start":{"line":183,"column":0},"end":{"line":183,"column":3}},"183":{"start":{"line":184,"column":0},"end":{"line":184,"column":0}},"184":{"start":{"line":185,"column":0},"end":{"line":185,"column":81}},"185":{"start":{"line":186,"column":0},"end":{"line":186,"column":61}},"186":{"start":{"line":187,"column":0},"end":{"line":187,"column":42}},"187":{"start":{"line":188,"column":0},"end":{"line":188,"column":45}},"188":{"start":{"line":189,"column":0},"end":{"line":189,"column":3}},"189":{"start":{"line":190,"column":0},"end":{"line":190,"column":0}},"190":{"start":{"line":191,"column":0},"end":{"line":191,"column":84}},"191":{"start":{"line":192,"column":0},"end":{"line":192,"column":62}},"192":{"start":{"line":193,"column":0},"end":{"line":193,"column":42}},"193":{"start":{"line":194,"column":0},"end":{"line":194,"column":45}},"194":{"start":{"line":195,"column":0},"end":{"line":195,"column":3}},"195":{"start":{"line":196,"column":0},"end":{"line":196,"column":0}},"196":{"start":{"line":197,"column":0},"end":{"line":197,"column":54}},"197":{"start":{"line":198,"column":0},"end":{"line":198,"column":30}},"198":{"start":{"line":199,"column":0},"end":{"line":199,"column":45}},"199":{"start":{"line":200,"column":0},"end":{"line":200,"column":89}},"200":{"start":{"line":201,"column":0},"end":{"line":201,"column":45}},"201":{"start":{"line":202,"column":0},"end":{"line":202,"column":63}},"202":{"start":{"line":203,"column":0},"end":{"line":203,"column":15}},"203":{"start":{"line":204,"column":0},"end":{"line":204,"column":7}},"204":{"start":{"line":205,"column":0},"end":{"line":205,"column":47}},"205":{"start":{"line":206,"column":0},"end":{"line":206,"column":7}},"206":{"start":{"line":207,"column":0},"end":{"line":207,"column":3}},"207":{"start":{"line":208,"column":0},"end":{"line":208,"column":0}},"208":{"start":{"line":209,"column":0},"end":{"line":209,"column":27}},"209":{"start":{"line":210,"column":0},"end":{"line":210,"column":21}},"210":{"start":{"line":211,"column":0},"end":{"line":211,"column":34}},"211":{"start":{"line":212,"column":0},"end":{"line":212,"column":50}},"212":{"start":{"line":213,"column":0},"end":{"line":213,"column":11}},"213":{"start":{"line":214,"column":0},"end":{"line":214,"column":79}},"214":{"start":{"line":215,"column":0},"end":{"line":215,"column":15}},"215":{"start":{"line":216,"column":0},"end":{"line":216,"column":21}},"216":{"start":{"line":217,"column":0},"end":{"line":217,"column":11}},"217":{"start":{"line":218,"column":0},"end":{"line":218,"column":6}},"218":{"start":{"line":219,"column":0},"end":{"line":219,"column":33}},"219":{"start":{"line":220,"column":0},"end":{"line":220,"column":3}},"220":{"start":{"line":221,"column":0},"end":{"line":221,"column":0}},"221":{"start":{"line":222,"column":0},"end":{"line":222,"column":59}},"222":{"start":{"line":223,"column":0},"end":{"line":223,"column":35}},"223":{"start":{"line":224,"column":0},"end":{"line":224,"column":69}},"224":{"start":{"line":225,"column":0},"end":{"line":225,"column":0}},"225":{"start":{"line":226,"column":0},"end":{"line":226,"column":110}},"226":{"start":{"line":227,"column":0},"end":{"line":227,"column":36}},"227":{"start":{"line":228,"column":0},"end":{"line":228,"column":5}},"228":{"start":{"line":229,"column":0},"end":{"line":229,"column":3}},"229":{"start":{"line":230,"column":0},"end":{"line":230,"column":0}},"230":{"start":{"line":231,"column":0},"end":{"line":231,"column":51}},"231":{"start":{"line":232,"column":0},"end":{"line":232,"column":79}},"232":{"start":{"line":233,"column":0},"end":{"line":233,"column":80}},"233":{"start":{"line":234,"column":0},"end":{"line":234,"column":0}},"234":{"start":{"line":235,"column":0},"end":{"line":235,"column":44}},"235":{"start":{"line":236,"column":0},"end":{"line":236,"column":38}},"236":{"start":{"line":237,"column":0},"end":{"line":237,"column":94}},"237":{"start":{"line":238,"column":0},"end":{"line":238,"column":14}},"238":{"start":{"line":239,"column":0},"end":{"line":239,"column":95}},"239":{"start":{"line":240,"column":0},"end":{"line":240,"column":7}},"240":{"start":{"line":241,"column":0},"end":{"line":241,"column":5}},"241":{"start":{"line":242,"column":0},"end":{"line":242,"column":0}},"242":{"start":{"line":243,"column":0},"end":{"line":243,"column":70}},"243":{"start":{"line":244,"column":0},"end":{"line":244,"column":66}},"244":{"start":{"line":245,"column":0},"end":{"line":245,"column":0}},"245":{"start":{"line":246,"column":0},"end":{"line":246,"column":26}},"246":{"start":{"line":247,"column":0},"end":{"line":247,"column":41}},"247":{"start":{"line":248,"column":0},"end":{"line":248,"column":45}},"248":{"start":{"line":249,"column":0},"end":{"line":249,"column":3}},"249":{"start":{"line":250,"column":0},"end":{"line":250,"column":1}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"38":1,"39":1,"40":1,"41":1,"42":1,"43":26,"44":26,"45":1,"46":1,"47":52,"48":52,"49":1,"50":1,"51":25,"52":25,"53":25,"54":25,"55":25,"56":25,"57":1,"58":1,"59":0,"60":0,"61":0,"62":0,"63":1,"64":1,"65":0,"66":0,"67":0,"68":0,"69":0,"70":0,"71":1,"72":1,"73":0,"74":0,"75":1,"76":1,"77":25,"78":25,"79":0,"80":0,"81":25,"82":25,"83":1,"84":1,"85":51,"86":51,"87":51,"88":0,"89":0,"90":0,"91":0,"92":51,"93":51,"94":51,"95":51,"96":51,"97":51,"98":51,"99":0,"100":0,"101":0,"102":0,"103":0,"104":0,"105":0,"106":0,"107":0,"108":0,"109":0,"110":0,"111":0,"112":0,"113":0,"114":0,"115":0,"116":0,"117":0,"118":0,"119":0,"120":51,"121":51,"122":51,"123":51,"124":51,"125":51,"126":51,"127":1,"128":1,"129":0,"130":0,"131":1,"132":1,"133":0,"134":0,"135":0,"136":0,"137":0,"138":0,"139":0,"140":0,"141":0,"142":0,"143":0,"144":0,"145":0,"146":0,"147":0,"148":0,"149":0,"150":0,"151":0,"152":0,"153":0,"154":0,"155":0,"156":0,"157":1,"158":1,"159":1,"160":0,"161":0,"162":0,"163":0,"164":0,"165":0,"166":0,"167":0,"168":0,"169":0,"170":0,"171":0,"172":0,"173":0,"174":0,"175":0,"176":0,"177":0,"178":0,"179":0,"180":0,"181":0,"182":0,"183":1,"184":1,"185":0,"186":0,"187":0,"188":0,"189":1,"190":1,"191":0,"192":0,"193":0,"194":0,"195":1,"196":1,"197":0,"198":0,"199":0,"200":0,"201":0,"202":0,"203":0,"204":0,"205":0,"206":0,"207":1,"208":1,"209":0,"210":0,"211":0,"212":0,"213":0,"214":0,"215":0,"216":0,"217":0,"218":0,"219":0,"220":1,"221":1,"222":0,"223":0,"224":0,"225":0,"226":0,"227":0,"228":0,"229":1,"230":1,"231":0,"232":0,"233":0,"234":0,"235":0,"236":0,"237":0,"238":0,"239":0,"240":0,"241":0,"242":0,"243":0,"244":0,"245":0,"246":0,"247":0,"248":0,"249":1},"branchMap":{"0":{"type":"branch","line":43,"loc":{"start":{"line":43,"column":2},"end":{"line":45,"column":3}},"locations":[{"start":{"line":43,"column":2},"end":{"line":45,"column":3}}]},"1":{"type":"branch","line":47,"loc":{"start":{"line":47,"column":2},"end":{"line":49,"column":3}},"locations":[{"start":{"line":47,"column":2},"end":{"line":49,"column":3}}]},"2":{"type":"branch","line":48,"loc":{"start":{"line":48,"column":53},"end":{"line":48,"column":82}},"locations":[{"start":{"line":48,"column":53},"end":{"line":48,"column":82}}]},"3":{"type":"branch","line":51,"loc":{"start":{"line":51,"column":2},"end":{"line":57,"column":3}},"locations":[{"start":{"line":51,"column":2},"end":{"line":57,"column":3}}]},"4":{"type":"branch","line":77,"loc":{"start":{"line":77,"column":10},"end":{"line":83,"column":3}},"locations":[{"start":{"line":77,"column":10},"end":{"line":83,"column":3}}]},"5":{"type":"branch","line":79,"loc":{"start":{"line":79,"column":60},"end":{"line":81,"column":5}},"locations":[{"start":{"line":79,"column":60},"end":{"line":81,"column":5}}]},"6":{"type":"branch","line":85,"loc":{"start":{"line":85,"column":2},"end":{"line":127,"column":3}},"locations":[{"start":{"line":85,"column":2},"end":{"line":127,"column":3}}]},"7":{"type":"branch","line":88,"loc":{"start":{"line":88,"column":32},"end":{"line":92,"column":5}},"locations":[{"start":{"line":88,"column":32},"end":{"line":92,"column":5}}]},"8":{"type":"branch","line":98,"loc":{"start":{"line":98,"column":11},"end":{"line":124,"column":7}},"locations":[{"start":{"line":98,"column":11},"end":{"line":124,"column":7}}]},"9":{"type":"branch","line":99,"loc":{"start":{"line":99,"column":36},"end":{"line":120,"column":9}},"locations":[{"start":{"line":99,"column":36},"end":{"line":120,"column":9}}]}},"b":{"0":[26],"1":[52],"2":[50],"3":[25],"4":[25],"5":[0],"6":[51],"7":[0],"8":[51],"9":[0]},"fnMap":{"0":{"name":"ConnectionPoolService","decl":{"start":{"line":43,"column":2},"end":{"line":45,"column":3}},"loc":{"start":{"line":43,"column":2},"end":{"line":45,"column":3}},"line":43},"1":{"name":"onApplicationShutdown","decl":{"start":{"line":47,"column":2},"end":{"line":49,"column":3}},"loc":{"start":{"line":47,"column":2},"end":{"line":49,"column":3}},"line":47},"2":{"name":"addToConnections","decl":{"start":{"line":51,"column":2},"end":{"line":57,"column":3}},"loc":{"start":{"line":51,"column":2},"end":{"line":57,"column":3}},"line":51},"3":{"name":"addBatchToConnections","decl":{"start":{"line":59,"column":2},"end":{"line":63,"column":3}},"loc":{"start":{"line":59,"column":2},"end":{"line":63,"column":3}},"line":59},"4":{"name":"updateConnection","decl":{"start":{"line":65,"column":2},"end":{"line":71,"column":3}},"loc":{"start":{"line":65,"column":2},"end":{"line":71,"column":3}},"line":65},"5":{"name":"connectToApi","decl":{"start":{"line":73,"column":2},"end":{"line":75,"column":3}},"loc":{"start":{"line":73,"column":2},"end":{"line":75,"column":3}},"line":73},"6":{"name":"updateNextConnectedApiIndex","decl":{"start":{"line":77,"column":10},"end":{"line":83,"column":3}},"loc":{"start":{"line":77,"column":10},"end":{"line":83,"column":3}},"line":77},"7":{"name":"get api","decl":{"start":{"line":85,"column":2},"end":{"line":127,"column":3}},"loc":{"start":{"line":85,"column":2},"end":{"line":127,"column":3}},"line":85},"8":{"name":"get","decl":{"start":{"line":98,"column":11},"end":{"line":124,"column":7}},"loc":{"start":{"line":98,"column":11},"end":{"line":124,"column":7}},"line":98},"9":{"name":"get numConnections","decl":{"start":{"line":129,"column":2},"end":{"line":131,"column":3}},"loc":{"start":{"line":129,"column":2},"end":{"line":131,"column":3}},"line":129},"10":{"name":"handleApiDisconnects","decl":{"start":{"line":133,"column":2},"end":{"line":157,"column":3}},"loc":{"start":{"line":133,"column":2},"end":{"line":157,"column":3}},"line":133},"11":{"name":"logEndpointStatus","decl":{"start":{"line":160,"column":8},"end":{"line":183,"column":3}},"loc":{"start":{"line":160,"column":8},"end":{"line":183,"column":3}},"line":160},"12":{"name":"handleApiSuccess","decl":{"start":{"line":185,"column":2},"end":{"line":189,"column":3}},"loc":{"start":{"line":185,"column":2},"end":{"line":189,"column":3}},"line":185},"13":{"name":"handleApiError","decl":{"start":{"line":191,"column":2},"end":{"line":195,"column":3}},"loc":{"start":{"line":191,"column":2},"end":{"line":195,"column":3}},"line":191},"14":{"name":"handleConnectionStateChange","decl":{"start":{"line":197,"column":2},"end":{"line":207,"column":3}},"loc":{"start":{"line":197,"column":2},"end":{"line":207,"column":3}},"line":197},"15":{"name":"addToResultCache","decl":{"start":{"line":209,"column":10},"end":{"line":220,"column":3}},"loc":{"start":{"line":209,"column":10},"end":{"line":220,"column":3}},"line":209},"16":{"name":"flushResultCacheIfNeeded","decl":{"start":{"line":222,"column":10},"end":{"line":229,"column":3}},"loc":{"start":{"line":222,"column":10},"end":{"line":229,"column":3}},"line":222},"17":{"name":"flushResultCache","decl":{"start":{"line":231,"column":10},"end":{"line":249,"column":3}},"loc":{"start":{"line":231,"column":10},"end":{"line":249,"column":3}},"line":231}},"f":{"0":26,"1":52,"2":25,"3":0,"4":0,"5":0,"6":25,"7":51,"8":51,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0}},"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/indexer/connectionPoolState.manager.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/indexer/connectionPoolState.manager.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":53}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":42}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":26}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":53}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":54}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":36}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":68}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":0}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":30}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":23}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":33}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":27}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":0}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":40}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":19}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":19}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":27}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":23}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":23}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":23}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":18}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":26}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":21}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":29}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":1}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":0}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":48}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":0}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":95}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":91}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":86}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":87}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":40}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":118}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":40}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":55}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":21}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":13}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":35}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":19}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":45}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":57}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":75}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":74}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":48}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":1}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":0}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":88}},"51":{"start":{"line":52,"column":0},"end":{"line":52,"column":34}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":1}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":59}},"54":{"start":{"line":55,"column":0},"end":{"line":55,"column":0}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":61}},"56":{"start":{"line":57,"column":0},"end":{"line":57,"column":77}},"57":{"start":{"line":58,"column":0},"end":{"line":58,"column":45}},"58":{"start":{"line":59,"column":0},"end":{"line":59,"column":23}},"59":{"start":{"line":60,"column":0},"end":{"line":60,"column":28}},"60":{"start":{"line":61,"column":0},"end":{"line":61,"column":22}},"61":{"start":{"line":62,"column":0},"end":{"line":62,"column":25}},"62":{"start":{"line":63,"column":0},"end":{"line":63,"column":22}},"63":{"start":{"line":64,"column":0},"end":{"line":64,"column":25}},"64":{"start":{"line":65,"column":0},"end":{"line":65,"column":20}},"65":{"start":{"line":66,"column":0},"end":{"line":66,"column":22}},"66":{"start":{"line":67,"column":0},"end":{"line":67,"column":25}},"67":{"start":{"line":68,"column":0},"end":{"line":68,"column":6}},"68":{"start":{"line":69,"column":0},"end":{"line":69,"column":35}},"69":{"start":{"line":70,"column":0},"end":{"line":70,"column":0}},"70":{"start":{"line":71,"column":0},"end":{"line":71,"column":18}},"71":{"start":{"line":72,"column":0},"end":{"line":72,"column":57}},"72":{"start":{"line":73,"column":0},"end":{"line":73,"column":5}},"73":{"start":{"line":74,"column":0},"end":{"line":74,"column":3}},"74":{"start":{"line":75,"column":0},"end":{"line":75,"column":0}},"75":{"start":{"line":76,"column":0},"end":{"line":76,"column":18}},"76":{"start":{"line":77,"column":0},"end":{"line":77,"column":25}},"77":{"start":{"line":78,"column":0},"end":{"line":78,"column":53}},"78":{"start":{"line":79,"column":0},"end":{"line":79,"column":3}},"79":{"start":{"line":80,"column":0},"end":{"line":80,"column":0}},"80":{"start":{"line":81,"column":0},"end":{"line":81,"column":61}},"81":{"start":{"line":82,"column":0},"end":{"line":82,"column":94}},"82":{"start":{"line":83,"column":0},"end":{"line":83,"column":54}},"83":{"start":{"line":84,"column":0},"end":{"line":84,"column":40}},"84":{"start":{"line":85,"column":0},"end":{"line":85,"column":29}},"85":{"start":{"line":86,"column":0},"end":{"line":86,"column":5}},"86":{"start":{"line":87,"column":0},"end":{"line":87,"column":0}},"87":{"start":{"line":88,"column":0},"end":{"line":88,"column":61}},"88":{"start":{"line":89,"column":0},"end":{"line":89,"column":80}},"89":{"start":{"line":90,"column":0},"end":{"line":90,"column":6}},"90":{"start":{"line":91,"column":0},"end":{"line":91,"column":0}},"91":{"start":{"line":92,"column":0},"end":{"line":92,"column":48}},"92":{"start":{"line":93,"column":0},"end":{"line":93,"column":117}},"93":{"start":{"line":94,"column":0},"end":{"line":94,"column":6}},"94":{"start":{"line":95,"column":0},"end":{"line":95,"column":0}},"95":{"start":{"line":96,"column":0},"end":{"line":96,"column":33}},"96":{"start":{"line":97,"column":0},"end":{"line":97,"column":71}},"97":{"start":{"line":98,"column":0},"end":{"line":98,"column":61}},"98":{"start":{"line":99,"column":0},"end":{"line":99,"column":89}},"99":{"start":{"line":100,"column":0},"end":{"line":100,"column":8}},"100":{"start":{"line":101,"column":0},"end":{"line":101,"column":0}},"101":{"start":{"line":102,"column":0},"end":{"line":102,"column":46}},"102":{"start":{"line":103,"column":0},"end":{"line":103,"column":63}},"103":{"start":{"line":104,"column":0},"end":{"line":104,"column":93}},"104":{"start":{"line":105,"column":0},"end":{"line":105,"column":25}},"105":{"start":{"line":106,"column":0},"end":{"line":106,"column":7}},"106":{"start":{"line":107,"column":0},"end":{"line":107,"column":0}},"107":{"start":{"line":108,"column":0},"end":{"line":108,"column":74}},"108":{"start":{"line":109,"column":0},"end":{"line":109,"column":91}},"109":{"start":{"line":110,"column":0},"end":{"line":110,"column":5}},"110":{"start":{"line":111,"column":0},"end":{"line":111,"column":0}},"111":{"start":{"line":112,"column":0},"end":{"line":112,"column":73}},"112":{"start":{"line":113,"column":0},"end":{"line":113,"column":92}},"113":{"start":{"line":114,"column":0},"end":{"line":114,"column":0}},"114":{"start":{"line":115,"column":0},"end":{"line":115,"column":46}},"115":{"start":{"line":116,"column":0},"end":{"line":116,"column":95}},"116":{"start":{"line":117,"column":0},"end":{"line":117,"column":0}},"117":{"start":{"line":118,"column":0},"end":{"line":118,"column":56}},"118":{"start":{"line":119,"column":0},"end":{"line":119,"column":41}},"119":{"start":{"line":120,"column":0},"end":{"line":120,"column":35}},"120":{"start":{"line":121,"column":0},"end":{"line":121,"column":58}},"121":{"start":{"line":122,"column":0},"end":{"line":122,"column":82}},"122":{"start":{"line":123,"column":0},"end":{"line":123,"column":7}},"123":{"start":{"line":124,"column":0},"end":{"line":124,"column":0}},"124":{"start":{"line":125,"column":0},"end":{"line":125,"column":45}},"125":{"start":{"line":126,"column":0},"end":{"line":126,"column":31}},"126":{"start":{"line":127,"column":0},"end":{"line":127,"column":0}},"127":{"start":{"line":128,"column":0},"end":{"line":128,"column":112}},"128":{"start":{"line":129,"column":0},"end":{"line":129,"column":76}},"129":{"start":{"line":130,"column":0},"end":{"line":130,"column":0}},"130":{"start":{"line":131,"column":0},"end":{"line":131,"column":64}},"131":{"start":{"line":132,"column":0},"end":{"line":132,"column":36}},"132":{"start":{"line":133,"column":0},"end":{"line":133,"column":3}},"133":{"start":{"line":134,"column":0},"end":{"line":134,"column":0}},"134":{"start":{"line":135,"column":0},"end":{"line":135,"column":52}},"135":{"start":{"line":136,"column":0},"end":{"line":136,"column":39}},"136":{"start":{"line":137,"column":0},"end":{"line":137,"column":19}},"137":{"start":{"line":138,"column":0},"end":{"line":138,"column":38}},"138":{"start":{"line":139,"column":0},"end":{"line":139,"column":44}},"139":{"start":{"line":140,"column":0},"end":{"line":140,"column":40}},"140":{"start":{"line":141,"column":0},"end":{"line":141,"column":35}},"141":{"start":{"line":142,"column":0},"end":{"line":142,"column":6}},"142":{"start":{"line":143,"column":0},"end":{"line":143,"column":3}},"143":{"start":{"line":144,"column":0},"end":{"line":144,"column":0}},"144":{"start":{"line":145,"column":0},"end":{"line":145,"column":32}},"145":{"start":{"line":146,"column":0},"end":{"line":146,"column":41}},"146":{"start":{"line":147,"column":0},"end":{"line":147,"column":3}},"147":{"start":{"line":148,"column":0},"end":{"line":148,"column":0}},"148":{"start":{"line":149,"column":0},"end":{"line":149,"column":61}},"149":{"start":{"line":150,"column":0},"end":{"line":150,"column":61}},"150":{"start":{"line":151,"column":0},"end":{"line":151,"column":21}},"151":{"start":{"line":152,"column":0},"end":{"line":152,"column":12}},"152":{"start":{"line":153,"column":0},"end":{"line":153,"column":40}},"153":{"start":{"line":154,"column":0},"end":{"line":154,"column":40}},"154":{"start":{"line":155,"column":0},"end":{"line":155,"column":3}},"155":{"start":{"line":156,"column":0},"end":{"line":156,"column":0}},"156":{"start":{"line":157,"column":0},"end":{"line":157,"column":61}},"157":{"start":{"line":158,"column":0},"end":{"line":158,"column":61}},"158":{"start":{"line":159,"column":0},"end":{"line":159,"column":21}},"159":{"start":{"line":160,"column":0},"end":{"line":160,"column":13}},"160":{"start":{"line":161,"column":0},"end":{"line":161,"column":35}},"161":{"start":{"line":162,"column":0},"end":{"line":162,"column":20}},"162":{"start":{"line":163,"column":0},"end":{"line":163,"column":39}},"163":{"start":{"line":164,"column":0},"end":{"line":164,"column":3}},"164":{"start":{"line":165,"column":0},"end":{"line":165,"column":0}},"165":{"start":{"line":166,"column":0},"end":{"line":166,"column":61}},"166":{"start":{"line":167,"column":0},"end":{"line":167,"column":52}},"167":{"start":{"line":168,"column":0},"end":{"line":168,"column":95}},"168":{"start":{"line":169,"column":0},"end":{"line":169,"column":3}},"169":{"start":{"line":170,"column":0},"end":{"line":170,"column":0}},"170":{"start":{"line":171,"column":0},"end":{"line":171,"column":61}},"171":{"start":{"line":172,"column":0},"end":{"line":172,"column":68}},"172":{"start":{"line":173,"column":0},"end":{"line":173,"column":45}},"173":{"start":{"line":174,"column":0},"end":{"line":174,"column":38}},"174":{"start":{"line":175,"column":0},"end":{"line":175,"column":0}},"175":{"start":{"line":176,"column":0},"end":{"line":176,"column":54}},"176":{"start":{"line":177,"column":0},"end":{"line":177,"column":106}},"177":{"start":{"line":178,"column":0},"end":{"line":178,"column":46}},"178":{"start":{"line":179,"column":0},"end":{"line":179,"column":41}},"179":{"start":{"line":180,"column":0},"end":{"line":180,"column":72}},"180":{"start":{"line":181,"column":0},"end":{"line":181,"column":0}},"181":{"start":{"line":182,"column":0},"end":{"line":182,"column":117}},"182":{"start":{"line":183,"column":0},"end":{"line":183,"column":0}},"183":{"start":{"line":184,"column":0},"end":{"line":184,"column":44}},"184":{"start":{"line":185,"column":0},"end":{"line":185,"column":60}},"185":{"start":{"line":186,"column":0},"end":{"line":186,"column":7}},"186":{"start":{"line":187,"column":0},"end":{"line":187,"column":14}},"187":{"start":{"line":188,"column":0},"end":{"line":188,"column":3}},"188":{"start":{"line":189,"column":0},"end":{"line":189,"column":0}},"189":{"start":{"line":190,"column":0},"end":{"line":190,"column":61}},"190":{"start":{"line":191,"column":0},"end":{"line":191,"column":55}},"191":{"start":{"line":192,"column":0},"end":{"line":192,"column":40}},"192":{"start":{"line":193,"column":0},"end":{"line":193,"column":50}},"193":{"start":{"line":194,"column":0},"end":{"line":194,"column":48}},"194":{"start":{"line":195,"column":0},"end":{"line":195,"column":5}},"195":{"start":{"line":196,"column":0},"end":{"line":196,"column":3}},"196":{"start":{"line":197,"column":0},"end":{"line":197,"column":0}},"197":{"start":{"line":198,"column":0},"end":{"line":198,"column":61}},"198":{"start":{"line":199,"column":0},"end":{"line":199,"column":64}},"199":{"start":{"line":200,"column":0},"end":{"line":200,"column":31}},"200":{"start":{"line":201,"column":0},"end":{"line":201,"column":46}},"201":{"start":{"line":202,"column":0},"end":{"line":202,"column":56}},"202":{"start":{"line":203,"column":0},"end":{"line":203,"column":84}},"203":{"start":{"line":204,"column":0},"end":{"line":204,"column":22}},"204":{"start":{"line":205,"column":0},"end":{"line":205,"column":5}},"205":{"start":{"line":206,"column":0},"end":{"line":206,"column":3}},"206":{"start":{"line":207,"column":0},"end":{"line":207,"column":0}},"207":{"start":{"line":208,"column":0},"end":{"line":208,"column":61}},"208":{"start":{"line":209,"column":0},"end":{"line":209,"column":48}},"209":{"start":{"line":210,"column":0},"end":{"line":210,"column":50}},"210":{"start":{"line":211,"column":0},"end":{"line":211,"column":34}},"211":{"start":{"line":212,"column":0},"end":{"line":212,"column":7}},"212":{"start":{"line":213,"column":0},"end":{"line":213,"column":3}},"213":{"start":{"line":214,"column":0},"end":{"line":214,"column":0}},"214":{"start":{"line":215,"column":0},"end":{"line":215,"column":61}},"215":{"start":{"line":216,"column":0},"end":{"line":216,"column":82}},"216":{"start":{"line":217,"column":0},"end":{"line":217,"column":111}},"217":{"start":{"line":218,"column":0},"end":{"line":218,"column":78}},"218":{"start":{"line":219,"column":0},"end":{"line":219,"column":13}},"219":{"start":{"line":220,"column":0},"end":{"line":220,"column":5}},"220":{"start":{"line":221,"column":0},"end":{"line":221,"column":99}},"221":{"start":{"line":222,"column":0},"end":{"line":222,"column":55}},"222":{"start":{"line":223,"column":0},"end":{"line":223,"column":39}},"223":{"start":{"line":224,"column":0},"end":{"line":224,"column":0}},"224":{"start":{"line":225,"column":0},"end":{"line":225,"column":48}},"225":{"start":{"line":226,"column":0},"end":{"line":226,"column":42}},"226":{"start":{"line":227,"column":0},"end":{"line":227,"column":66}},"227":{"start":{"line":228,"column":0},"end":{"line":228,"column":46}},"228":{"start":{"line":229,"column":0},"end":{"line":229,"column":46}},"229":{"start":{"line":230,"column":0},"end":{"line":230,"column":7}},"230":{"start":{"line":231,"column":0},"end":{"line":231,"column":13}},"231":{"start":{"line":232,"column":0},"end":{"line":232,"column":5}},"232":{"start":{"line":233,"column":0},"end":{"line":233,"column":0}},"233":{"start":{"line":234,"column":0},"end":{"line":234,"column":45}},"234":{"start":{"line":235,"column":0},"end":{"line":235,"column":184}},"235":{"start":{"line":236,"column":0},"end":{"line":236,"column":51}},"236":{"start":{"line":237,"column":0},"end":{"line":237,"column":0}},"237":{"start":{"line":238,"column":0},"end":{"line":238,"column":59}},"238":{"start":{"line":239,"column":0},"end":{"line":239,"column":47}},"239":{"start":{"line":240,"column":0},"end":{"line":240,"column":14}},"240":{"start":{"line":241,"column":0},"end":{"line":241,"column":42}},"241":{"start":{"line":242,"column":0},"end":{"line":242,"column":7}},"242":{"start":{"line":243,"column":0},"end":{"line":243,"column":0}},"243":{"start":{"line":244,"column":0},"end":{"line":244,"column":49}},"244":{"start":{"line":245,"column":0},"end":{"line":245,"column":0}},"245":{"start":{"line":246,"column":0},"end":{"line":246,"column":18}},"246":{"start":{"line":247,"column":0},"end":{"line":247,"column":104}},"247":{"start":{"line":248,"column":0},"end":{"line":248,"column":26}},"248":{"start":{"line":249,"column":0},"end":{"line":249,"column":12}},"249":{"start":{"line":250,"column":0},"end":{"line":250,"column":8}},"250":{"start":{"line":251,"column":0},"end":{"line":251,"column":5}},"251":{"start":{"line":252,"column":0},"end":{"line":252,"column":3}},"252":{"start":{"line":253,"column":0},"end":{"line":253,"column":0}},"253":{"start":{"line":254,"column":0},"end":{"line":254,"column":89}},"254":{"start":{"line":255,"column":0},"end":{"line":255,"column":67}},"255":{"start":{"line":256,"column":0},"end":{"line":256,"column":57}},"256":{"start":{"line":257,"column":0},"end":{"line":257,"column":84}},"257":{"start":{"line":258,"column":0},"end":{"line":258,"column":3}},"258":{"start":{"line":259,"column":0},"end":{"line":259,"column":0}},"259":{"start":{"line":260,"column":0},"end":{"line":260,"column":61}},"260":{"start":{"line":261,"column":0},"end":{"line":261,"column":81}},"261":{"start":{"line":262,"column":0},"end":{"line":262,"column":66}},"262":{"start":{"line":263,"column":0},"end":{"line":263,"column":58}},"263":{"start":{"line":264,"column":0},"end":{"line":264,"column":0}},"264":{"start":{"line":265,"column":0},"end":{"line":265,"column":103}},"265":{"start":{"line":266,"column":0},"end":{"line":266,"column":56}},"266":{"start":{"line":267,"column":0},"end":{"line":267,"column":3}},"267":{"start":{"line":268,"column":0},"end":{"line":268,"column":0}},"268":{"start":{"line":269,"column":0},"end":{"line":269,"column":111}},"269":{"start":{"line":270,"column":0},"end":{"line":270,"column":42}},"270":{"start":{"line":271,"column":0},"end":{"line":271,"column":72}},"271":{"start":{"line":272,"column":0},"end":{"line":272,"column":5}},"272":{"start":{"line":273,"column":0},"end":{"line":273,"column":3}},"273":{"start":{"line":274,"column":0},"end":{"line":274,"column":0}},"274":{"start":{"line":275,"column":0},"end":{"line":275,"column":110}},"275":{"start":{"line":276,"column":0},"end":{"line":276,"column":40}},"276":{"start":{"line":277,"column":0},"end":{"line":277,"column":67}},"277":{"start":{"line":278,"column":0},"end":{"line":278,"column":5}},"278":{"start":{"line":279,"column":0},"end":{"line":279,"column":3}},"279":{"start":{"line":280,"column":0},"end":{"line":280,"column":0}},"280":{"start":{"line":281,"column":0},"end":{"line":281,"column":61}},"281":{"start":{"line":282,"column":0},"end":{"line":282,"column":55}},"282":{"start":{"line":283,"column":0},"end":{"line":283,"column":87}},"283":{"start":{"line":284,"column":0},"end":{"line":284,"column":3}},"284":{"start":{"line":285,"column":0},"end":{"line":285,"column":1}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"38":1,"39":1,"40":1,"41":1,"42":1,"43":1,"44":1,"45":1,"46":1,"47":1,"48":1,"49":1,"50":26,"51":26,"52":26,"53":26,"54":26,"55":26,"56":26,"57":25,"58":25,"59":25,"60":25,"61":25,"62":25,"63":25,"64":25,"65":25,"66":25,"67":25,"68":25,"69":25,"70":25,"71":0,"72":0,"73":25,"74":26,"75":26,"76":26,"77":0,"78":0,"79":26,"80":26,"81":26,"82":25,"83":25,"84":0,"85":0,"86":25,"87":25,"88":25,"89":25,"90":25,"91":25,"92":25,"93":25,"94":25,"95":25,"96":0,"97":0,"98":0,"99":0,"100":0,"101":0,"102":0,"103":0,"104":0,"105":0,"106":0,"107":0,"108":0,"109":0,"110":25,"111":25,"112":25,"113":25,"114":25,"115":25,"116":25,"117":25,"118":25,"119":25,"120":25,"121":25,"122":25,"123":25,"124":25,"125":25,"126":25,"127":25,"128":25,"129":25,"130":25,"131":25,"132":25,"133":26,"134":26,"135":25,"136":25,"137":25,"138":25,"139":25,"140":0,"141":25,"142":25,"143":26,"144":26,"145":0,"146":0,"147":26,"148":26,"149":26,"150":0,"151":0,"152":0,"153":0,"154":0,"155":26,"156":26,"157":26,"158":0,"159":0,"160":0,"161":0,"162":0,"163":0,"164":26,"165":26,"166":26,"167":0,"168":0,"169":26,"170":26,"171":26,"172":0,"173":0,"174":0,"175":0,"176":0,"177":0,"178":0,"179":0,"180":0,"181":0,"182":0,"183":0,"184":0,"185":0,"186":0,"187":0,"188":26,"189":26,"190":26,"191":25,"192":0,"193":0,"194":0,"195":25,"196":26,"197":26,"198":26,"199":0,"200":0,"201":0,"202":0,"203":0,"204":0,"205":0,"206":26,"207":26,"208":26,"209":26,"210":25,"211":26,"212":26,"213":26,"214":26,"215":26,"216":0,"217":0,"218":0,"219":0,"220":0,"221":0,"222":0,"223":0,"224":0,"225":0,"226":0,"227":0,"228":0,"229":0,"230":0,"231":0,"232":0,"233":0,"234":0,"235":0,"236":0,"237":0,"238":0,"239":0,"240":0,"241":0,"242":0,"243":0,"244":0,"245":0,"246":0,"247":0,"248":0,"249":0,"250":0,"251":0,"252":26,"253":26,"254":3,"255":3,"256":3,"257":3,"258":26,"259":26,"260":26,"261":0,"262":0,"263":0,"264":0,"265":0,"266":0,"267":26,"268":26,"269":0,"270":0,"271":0,"272":0,"273":26,"274":26,"275":0,"276":0,"277":0,"278":0,"279":26,"280":26,"281":26,"282":0,"283":0,"284":26},"branchMap":{"0":{"type":"branch","line":51,"loc":{"start":{"line":51,"column":0},"end":{"line":285,"column":1}},"locations":[{"start":{"line":51,"column":0},"end":{"line":285,"column":1}}]},"1":{"type":"branch","line":57,"loc":{"start":{"line":57,"column":2},"end":{"line":74,"column":3}},"locations":[{"start":{"line":57,"column":2},"end":{"line":74,"column":3}}]},"2":{"type":"branch","line":71,"loc":{"start":{"line":71,"column":17},"end":{"line":73,"column":5}},"locations":[{"start":{"line":71,"column":17},"end":{"line":73,"column":5}}]},"3":{"type":"branch","line":82,"loc":{"start":{"line":82,"column":2},"end":{"line":133,"column":3}},"locations":[{"start":{"line":82,"column":2},"end":{"line":133,"column":3}}]},"4":{"type":"branch","line":84,"loc":{"start":{"line":84,"column":39},"end":{"line":86,"column":5}},"locations":[{"start":{"line":84,"column":39},"end":{"line":86,"column":5}}]},"5":{"type":"branch","line":96,"loc":{"start":{"line":96,"column":32},"end":{"line":110,"column":5}},"locations":[{"start":{"line":96,"column":32},"end":{"line":110,"column":5}}]},"6":{"type":"branch","line":89,"loc":{"start":{"line":89,"column":6},"end":{"line":89,"column":80}},"locations":[{"start":{"line":89,"column":6},"end":{"line":89,"column":80}}]},"7":{"type":"branch","line":93,"loc":{"start":{"line":93,"column":6},"end":{"line":93,"column":117}},"locations":[{"start":{"line":93,"column":6},"end":{"line":93,"column":117}}]},"8":{"type":"branch","line":116,"loc":{"start":{"line":116,"column":39},"end":{"line":116,"column":90}},"locations":[{"start":{"line":116,"column":39},"end":{"line":116,"column":90}}]},"9":{"type":"branch","line":120,"loc":{"start":{"line":120,"column":22},"end":{"line":123,"column":5}},"locations":[{"start":{"line":120,"column":22},"end":{"line":123,"column":5}}]},"10":{"type":"branch","line":121,"loc":{"start":{"line":121,"column":29},"end":{"line":121,"column":53}},"locations":[{"start":{"line":121,"column":29},"end":{"line":121,"column":53}}]},"11":{"type":"branch","line":129,"loc":{"start":{"line":129,"column":52},"end":{"line":129,"column":74}},"locations":[{"start":{"line":129,"column":52},"end":{"line":129,"column":74}}]},"12":{"type":"branch","line":135,"loc":{"start":{"line":135,"column":10},"end":{"line":143,"column":3}},"locations":[{"start":{"line":135,"column":10},"end":{"line":143,"column":3}}]},"13":{"type":"branch","line":137,"loc":{"start":{"line":137,"column":6},"end":{"line":141,"column":35}},"locations":[{"start":{"line":137,"column":6},"end":{"line":141,"column":35}}]},"14":{"type":"branch","line":138,"loc":{"start":{"line":138,"column":35},"end":{"line":139,"column":41}},"locations":[{"start":{"line":138,"column":35},"end":{"line":139,"column":41}}]},"15":{"type":"branch","line":139,"loc":{"start":{"line":139,"column":41},"end":{"line":140,"column":37}},"locations":[{"start":{"line":139,"column":41},"end":{"line":140,"column":37}}]},"16":{"type":"branch","line":140,"loc":{"start":{"line":140,"column":37},"end":{"line":141,"column":35}},"locations":[{"start":{"line":140,"column":37},"end":{"line":141,"column":35}}]},"17":{"type":"branch","line":191,"loc":{"start":{"line":191,"column":2},"end":{"line":196,"column":3}},"locations":[{"start":{"line":191,"column":2},"end":{"line":196,"column":3}}]},"18":{"type":"branch","line":192,"loc":{"start":{"line":192,"column":39},"end":{"line":195,"column":5}},"locations":[{"start":{"line":192,"column":39},"end":{"line":195,"column":5}}]},"19":{"type":"branch","line":209,"loc":{"start":{"line":209,"column":2},"end":{"line":213,"column":3}},"locations":[{"start":{"line":209,"column":2},"end":{"line":213,"column":3}}]},"20":{"type":"branch","line":210,"loc":{"start":{"line":210,"column":35},"end":{"line":212,"column":5}},"locations":[{"start":{"line":210,"column":35},"end":{"line":212,"column":5}}]},"21":{"type":"branch","line":254,"loc":{"start":{"line":254,"column":10},"end":{"line":258,"column":3}},"locations":[{"start":{"line":254,"column":10},"end":{"line":258,"column":3}}]}},"b":{"0":[26],"1":[25],"2":[0],"3":[25],"4":[0],"5":[0],"6":[25],"7":[25],"8":[25],"9":[25],"10":[0],"11":[25],"12":[25],"13":[25],"14":[0],"15":[0],"16":[0],"17":[25],"18":[0],"19":[26],"20":[25],"21":[3]},"fnMap":{"0":{"name":"ConnectionPoolStateManager","decl":{"start":{"line":51,"column":0},"end":{"line":285,"column":1}},"loc":{"start":{"line":51,"column":0},"end":{"line":285,"column":1}},"line":51},"1":{"name":"addToConnections","decl":{"start":{"line":57,"column":2},"end":{"line":74,"column":3}},"loc":{"start":{"line":57,"column":2},"end":{"line":74,"column":3}},"line":57},"2":{"name":"logConnectionStatus","decl":{"start":{"line":77,"column":2},"end":{"line":79,"column":3}},"loc":{"start":{"line":77,"column":2},"end":{"line":79,"column":3}},"line":77},"3":{"name":"getNextConnectedEndpoint","decl":{"start":{"line":82,"column":2},"end":{"line":133,"column":3}},"loc":{"start":{"line":82,"column":2},"end":{"line":133,"column":3}},"line":82},"4":{"name":"getPrimaryEndpoint","decl":{"start":{"line":135,"column":10},"end":{"line":143,"column":3}},"loc":{"start":{"line":135,"column":10},"end":{"line":143,"column":3}},"line":135},"5":{"name":"get numConnections","decl":{"start":{"line":145,"column":2},"end":{"line":147,"column":3}},"loc":{"start":{"line":145,"column":2},"end":{"line":147,"column":3}},"line":145},"6":{"name":"getFieldValue","decl":{"start":{"line":150,"column":2},"end":{"line":155,"column":3}},"loc":{"start":{"line":150,"column":2},"end":{"line":155,"column":3}},"line":150},"7":{"name":"setFieldValue","decl":{"start":{"line":158,"column":2},"end":{"line":164,"column":3}},"loc":{"start":{"line":158,"column":2},"end":{"line":164,"column":3}},"line":158},"8":{"name":"getSuspendedEndpoints","decl":{"start":{"line":167,"column":2},"end":{"line":169,"column":3}},"loc":{"start":{"line":167,"column":2},"end":{"line":169,"column":3}},"line":167},"9":{"name":"setTimeout","decl":{"start":{"line":172,"column":2},"end":{"line":188,"column":3}},"loc":{"start":{"line":172,"column":2},"end":{"line":188,"column":3}},"line":172},"10":{"name":"clearTimeout","decl":{"start":{"line":191,"column":2},"end":{"line":196,"column":3}},"loc":{"start":{"line":191,"column":2},"end":{"line":196,"column":3}},"line":191},"11":{"name":"removeFromConnections","decl":{"start":{"line":199,"column":2},"end":{"line":206,"column":3}},"loc":{"start":{"line":199,"column":2},"end":{"line":206,"column":3}},"line":199},"12":{"name":"onApplicationShutdown","decl":{"start":{"line":209,"column":2},"end":{"line":213,"column":3}},"loc":{"start":{"line":209,"column":2},"end":{"line":213,"column":3}},"line":209},"13":{"name":"handleApiError","decl":{"start":{"line":216,"column":2},"end":{"line":252,"column":3}},"loc":{"start":{"line":216,"column":2},"end":{"line":252,"column":3}},"line":216},"14":{"name":"calculatePerformanceScore","decl":{"start":{"line":254,"column":10},"end":{"line":258,"column":3}},"loc":{"start":{"line":254,"column":10},"end":{"line":258,"column":3}},"line":254},"15":{"name":"handleApiSuccess","decl":{"start":{"line":261,"column":2},"end":{"line":267,"column":3}},"loc":{"start":{"line":261,"column":2},"end":{"line":267,"column":3}},"line":261},"16":{"name":"handleBatchApiSuccess","decl":{"start":{"line":269,"column":2},"end":{"line":273,"column":3}},"loc":{"start":{"line":269,"column":2},"end":{"line":273,"column":3}},"line":269},"17":{"name":"handleBatchApiError","decl":{"start":{"line":275,"column":2},"end":{"line":279,"column":3}},"loc":{"start":{"line":275,"column":2},"end":{"line":279,"column":3}},"line":275},"18":{"name":"getDisconnectedEndpoints","decl":{"start":{"line":282,"column":2},"end":{"line":284,"column":3}},"loc":{"start":{"line":282,"column":2},"end":{"line":284,"column":3}},"line":282}},"f":{"0":26,"1":25,"2":0,"3":25,"4":25,"5":0,"6":0,"7":0,"8":0,"9":0,"10":25,"11":0,"12":26,"13":0,"14":3,"15":0,"16":0,"17":0,"18":0}},"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/indexer/dictionary/coreDictionary.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/indexer/dictionary/coreDictionary.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":52}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":43}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":58}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":32}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":56}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":35}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":0}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":92}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":32}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":1}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":43}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":29}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":26}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":37}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":0}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":14}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":52}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":30}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":46}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":50}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":6}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":0}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":19}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":23}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":26}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":18}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":33}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":62}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":43}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":92}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":71}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":58}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":91}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":0}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":29}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":29}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":3}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":0}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":31}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":26}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":69}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":5}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":26}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":3}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":0}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":42}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":61}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":3}},"51":{"start":{"line":52,"column":0},"end":{"line":52,"column":0}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":71}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":101}},"54":{"start":{"line":55,"column":0},"end":{"line":55,"column":42}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":13}},"56":{"start":{"line":57,"column":0},"end":{"line":57,"column":5}},"57":{"start":{"line":58,"column":0},"end":{"line":58,"column":35}},"58":{"start":{"line":59,"column":0},"end":{"line":59,"column":3}},"59":{"start":{"line":60,"column":0},"end":{"line":60,"column":0}},"60":{"start":{"line":61,"column":0},"end":{"line":61,"column":40}},"61":{"start":{"line":62,"column":0},"end":{"line":62,"column":45}},"62":{"start":{"line":63,"column":0},"end":{"line":63,"column":54}},"63":{"start":{"line":64,"column":0},"end":{"line":64,"column":99}},"64":{"start":{"line":65,"column":0},"end":{"line":65,"column":3}},"65":{"start":{"line":66,"column":0},"end":{"line":66,"column":0}},"66":{"start":{"line":67,"column":0},"end":{"line":67,"column":61}},"67":{"start":{"line":68,"column":0},"end":{"line":68,"column":82}},"68":{"start":{"line":69,"column":0},"end":{"line":69,"column":3}},"69":{"start":{"line":70,"column":0},"end":{"line":70,"column":0}},"70":{"start":{"line":71,"column":0},"end":{"line":71,"column":31}},"71":{"start":{"line":72,"column":0},"end":{"line":72,"column":23}},"72":{"start":{"line":73,"column":0},"end":{"line":73,"column":25}},"73":{"start":{"line":74,"column":0},"end":{"line":74,"column":57}},"74":{"start":{"line":75,"column":0},"end":{"line":75,"column":65}},"75":{"start":{"line":76,"column":0},"end":{"line":76,"column":43}},"76":{"start":{"line":77,"column":0},"end":{"line":77,"column":19}},"77":{"start":{"line":78,"column":0},"end":{"line":78,"column":114}},"78":{"start":{"line":79,"column":0},"end":{"line":79,"column":39}},"79":{"start":{"line":80,"column":0},"end":{"line":80,"column":3}},"80":{"start":{"line":81,"column":0},"end":{"line":81,"column":1}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":67,"20":67,"21":67,"22":67,"23":67,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"38":6,"39":6,"40":1,"41":1,"42":75,"43":1,"44":1,"45":74,"46":74,"47":1,"48":1,"49":42,"50":42,"51":1,"52":1,"53":62,"54":62,"55":62,"56":62,"57":62,"58":62,"59":1,"60":1,"61":1,"62":22,"63":22,"64":22,"65":1,"66":1,"67":84,"68":84,"69":1,"70":1,"71":32,"72":32,"73":32,"74":32,"75":32,"76":32,"77":32,"78":32,"79":32,"80":1},"branchMap":{"0":{"type":"branch","line":19,"loc":{"start":{"line":19,"column":2},"end":{"line":24,"column":6}},"locations":[{"start":{"line":19,"column":2},"end":{"line":24,"column":6}}]},"1":{"type":"branch","line":38,"loc":{"start":{"line":38,"column":2},"end":{"line":40,"column":3}},"locations":[{"start":{"line":38,"column":2},"end":{"line":40,"column":3}}]},"2":{"type":"branch","line":42,"loc":{"start":{"line":42,"column":2},"end":{"line":47,"column":3}},"locations":[{"start":{"line":42,"column":2},"end":{"line":47,"column":3}}]},"3":{"type":"branch","line":43,"loc":{"start":{"line":43,"column":25},"end":{"line":45,"column":5}},"locations":[{"start":{"line":43,"column":25},"end":{"line":45,"column":5}}]},"4":{"type":"branch","line":46,"loc":{"start":{"line":46,"column":-1},"end":{"line":47,"column":3}},"locations":[{"start":{"line":46,"column":-1},"end":{"line":47,"column":3}}]},"5":{"type":"branch","line":49,"loc":{"start":{"line":49,"column":2},"end":{"line":51,"column":3}},"locations":[{"start":{"line":49,"column":2},"end":{"line":51,"column":3}}]},"6":{"type":"branch","line":53,"loc":{"start":{"line":53,"column":12},"end":{"line":59,"column":3}},"locations":[{"start":{"line":53,"column":12},"end":{"line":59,"column":3}}]},"7":{"type":"branch","line":58,"loc":{"start":{"line":58,"column":-1},"end":{"line":58,"column":34}},"locations":[{"start":{"line":58,"column":-1},"end":{"line":58,"column":34}}]},"8":{"type":"branch","line":62,"loc":{"start":{"line":62,"column":2},"end":{"line":65,"column":3}},"locations":[{"start":{"line":62,"column":2},"end":{"line":65,"column":3}}]},"9":{"type":"branch","line":64,"loc":{"start":{"line":64,"column":60},"end":{"line":64,"column":98}},"locations":[{"start":{"line":64,"column":60},"end":{"line":64,"column":98}}]},"10":{"type":"branch","line":67,"loc":{"start":{"line":67,"column":2},"end":{"line":69,"column":3}},"locations":[{"start":{"line":67,"column":2},"end":{"line":69,"column":3}}]},"11":{"type":"branch","line":68,"loc":{"start":{"line":68,"column":38},"end":{"line":68,"column":80}},"locations":[{"start":{"line":68,"column":38},"end":{"line":68,"column":80}}]},"12":{"type":"branch","line":71,"loc":{"start":{"line":71,"column":12},"end":{"line":80,"column":3}},"locations":[{"start":{"line":71,"column":12},"end":{"line":80,"column":3}}]},"13":{"type":"branch","line":76,"loc":{"start":{"line":76,"column":35},"end":{"line":76,"column":42}},"locations":[{"start":{"line":76,"column":35},"end":{"line":76,"column":42}}]},"14":{"type":"branch","line":78,"loc":{"start":{"line":78,"column":18},"end":{"line":78,"column":29}},"locations":[{"start":{"line":78,"column":18},"end":{"line":78,"column":29}}]},"15":{"type":"branch","line":78,"loc":{"start":{"line":78,"column":29},"end":{"line":78,"column":72}},"locations":[{"start":{"line":78,"column":29},"end":{"line":78,"column":72}}]},"16":{"type":"branch","line":78,"loc":{"start":{"line":78,"column":73},"end":{"line":78,"column":97}},"locations":[{"start":{"line":78,"column":73},"end":{"line":78,"column":97}}]},"17":{"type":"branch","line":78,"loc":{"start":{"line":78,"column":98},"end":{"line":78,"column":113}},"locations":[{"start":{"line":78,"column":98},"end":{"line":78,"column":113}}]}},"b":{"0":[67],"1":[6],"2":[75],"3":[1],"4":[74],"5":[42],"6":[62],"7":[0],"8":[22],"9":[16],"10":[84],"11":[252],"12":[32],"13":[29],"14":[29],"15":[10],"16":[7],"17":[25]},"fnMap":{"0":{"name":"CoreDictionary","decl":{"start":{"line":19,"column":2},"end":{"line":24,"column":6}},"loc":{"start":{"line":19,"column":2},"end":{"line":24,"column":6}},"line":19},"1":{"name":"get startHeight","decl":{"start":{"line":38,"column":2},"end":{"line":40,"column":3}},"loc":{"start":{"line":38,"column":2},"end":{"line":40,"column":3}},"line":38},"2":{"name":"get metadata","decl":{"start":{"line":42,"column":2},"end":{"line":47,"column":3}},"loc":{"start":{"line":42,"column":2},"end":{"line":47,"column":3}},"line":42},"3":{"name":"get useDictionary","decl":{"start":{"line":49,"column":2},"end":{"line":51,"column":3}},"loc":{"start":{"line":49,"column":2},"end":{"line":51,"column":3}},"line":49},"4":{"name":"setDictionaryStartHeight","decl":{"start":{"line":53,"column":12},"end":{"line":59,"column":3}},"loc":{"start":{"line":53,"column":12},"end":{"line":59,"column":3}},"line":53},"5":{"name":"heightValidation","decl":{"start":{"line":62,"column":2},"end":{"line":65,"column":3}},"loc":{"start":{"line":62,"column":2},"end":{"line":65,"column":3}},"line":62},"6":{"name":"updateQueriesMap","decl":{"start":{"line":67,"column":2},"end":{"line":69,"column":3}},"loc":{"start":{"line":67,"column":2},"end":{"line":69,"column":3}},"line":67},"7":{"name":"getQueryConditions","decl":{"start":{"line":71,"column":12},"end":{"line":80,"column":3}},"loc":{"start":{"line":71,"column":12},"end":{"line":80,"column":3}},"line":71}},"f":{"0":67,"1":6,"2":75,"3":42,"4":62,"5":22,"6":84,"7":32}},"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/indexer/dictionary/dictionary.service.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/indexer/dictionary/dictionary.service.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":28}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":53}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":52}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":45}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":56}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":32}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":43}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":39}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":58}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":32}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":73}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":0}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":46}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":107}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":54}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":0}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":56}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":14}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":30}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":46}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":50}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":6}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":0}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":33}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":28}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":45}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":3}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":0}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":45}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":0}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":51}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":38}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":3}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":0}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":120}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":42}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":55}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":23}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":5}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":83}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":8}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":51}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":63}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":79}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":7}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":62}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":12}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":55}},"51":{"start":{"line":52,"column":0},"end":{"line":52,"column":55}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":53}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":25}},"54":{"start":{"line":55,"column":0},"end":{"line":55,"column":14}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":94}},"56":{"start":{"line":57,"column":0},"end":{"line":57,"column":64}},"57":{"start":{"line":58,"column":0},"end":{"line":58,"column":7}},"58":{"start":{"line":59,"column":0},"end":{"line":59,"column":5}},"59":{"start":{"line":60,"column":0},"end":{"line":60,"column":3}},"60":{"start":{"line":61,"column":0},"end":{"line":61,"column":0}},"61":{"start":{"line":62,"column":0},"end":{"line":62,"column":35}},"62":{"start":{"line":63,"column":0},"end":{"line":63,"column":76}},"63":{"start":{"line":64,"column":0},"end":{"line":64,"column":41}},"64":{"start":{"line":65,"column":0},"end":{"line":65,"column":78}},"65":{"start":{"line":66,"column":0},"end":{"line":66,"column":47}},"66":{"start":{"line":67,"column":0},"end":{"line":67,"column":81}},"67":{"start":{"line":68,"column":0},"end":{"line":68,"column":6}},"68":{"start":{"line":69,"column":0},"end":{"line":69,"column":49}},"69":{"start":{"line":70,"column":0},"end":{"line":70,"column":65}},"70":{"start":{"line":71,"column":0},"end":{"line":71,"column":3}},"71":{"start":{"line":72,"column":0},"end":{"line":72,"column":0}},"72":{"start":{"line":73,"column":0},"end":{"line":73,"column":42}},"73":{"start":{"line":74,"column":0},"end":{"line":74,"column":40}},"74":{"start":{"line":75,"column":0},"end":{"line":75,"column":3}},"75":{"start":{"line":76,"column":0},"end":{"line":76,"column":0}},"76":{"start":{"line":77,"column":0},"end":{"line":77,"column":5}},"77":{"start":{"line":78,"column":0},"end":{"line":78,"column":4}},"78":{"start":{"line":79,"column":0},"end":{"line":79,"column":23}},"79":{"start":{"line":80,"column":0},"end":{"line":80,"column":5}},"80":{"start":{"line":81,"column":0},"end":{"line":81,"column":0}},"81":{"start":{"line":82,"column":0},"end":{"line":82,"column":68}},"82":{"start":{"line":83,"column":0},"end":{"line":83,"column":44}},"83":{"start":{"line":84,"column":0},"end":{"line":84,"column":41}},"84":{"start":{"line":85,"column":0},"end":{"line":85,"column":5}},"85":{"start":{"line":86,"column":0},"end":{"line":86,"column":3}},"86":{"start":{"line":87,"column":0},"end":{"line":87,"column":0}},"87":{"start":{"line":88,"column":0},"end":{"line":88,"column":32}},"88":{"start":{"line":89,"column":0},"end":{"line":89,"column":29}},"89":{"start":{"line":90,"column":0},"end":{"line":90,"column":28}},"90":{"start":{"line":91,"column":0},"end":{"line":91,"column":55}},"91":{"start":{"line":92,"column":0},"end":{"line":92,"column":67}},"92":{"start":{"line":93,"column":0},"end":{"line":93,"column":63}},"93":{"start":{"line":94,"column":0},"end":{"line":94,"column":120}},"94":{"start":{"line":95,"column":0},"end":{"line":95,"column":3}},"95":{"start":{"line":96,"column":0},"end":{"line":96,"column":0}},"96":{"start":{"line":97,"column":0},"end":{"line":97,"column":41}},"97":{"start":{"line":98,"column":0},"end":{"line":98,"column":29}},"98":{"start":{"line":99,"column":0},"end":{"line":99,"column":28}},"99":{"start":{"line":100,"column":0},"end":{"line":100,"column":56}},"100":{"start":{"line":101,"column":0},"end":{"line":101,"column":56}},"101":{"start":{"line":102,"column":0},"end":{"line":102,"column":67}},"102":{"start":{"line":103,"column":0},"end":{"line":103,"column":55}},"103":{"start":{"line":104,"column":0},"end":{"line":104,"column":54}},"104":{"start":{"line":105,"column":0},"end":{"line":105,"column":133}},"105":{"start":{"line":106,"column":0},"end":{"line":106,"column":81}},"106":{"start":{"line":107,"column":0},"end":{"line":107,"column":22}},"107":{"start":{"line":108,"column":0},"end":{"line":108,"column":23}},"108":{"start":{"line":109,"column":0},"end":{"line":109,"column":5}},"109":{"start":{"line":110,"column":0},"end":{"line":110,"column":9}},"110":{"start":{"line":111,"column":0},"end":{"line":111,"column":56}},"111":{"start":{"line":112,"column":0},"end":{"line":112,"column":63}},"112":{"start":{"line":113,"column":0},"end":{"line":113,"column":29}},"113":{"start":{"line":114,"column":0},"end":{"line":114,"column":8}},"114":{"start":{"line":115,"column":0},"end":{"line":115,"column":82}},"115":{"start":{"line":116,"column":0},"end":{"line":116,"column":26}},"116":{"start":{"line":117,"column":0},"end":{"line":117,"column":57}},"117":{"start":{"line":118,"column":0},"end":{"line":118,"column":13}},"118":{"start":{"line":119,"column":0},"end":{"line":119,"column":51}},"119":{"start":{"line":120,"column":0},"end":{"line":120,"column":85}},"120":{"start":{"line":121,"column":0},"end":{"line":121,"column":8}},"121":{"start":{"line":122,"column":0},"end":{"line":122,"column":60}},"122":{"start":{"line":123,"column":0},"end":{"line":123,"column":43}},"123":{"start":{"line":124,"column":0},"end":{"line":124,"column":25}},"124":{"start":{"line":125,"column":0},"end":{"line":125,"column":24}},"125":{"start":{"line":126,"column":0},"end":{"line":126,"column":30}},"126":{"start":{"line":127,"column":0},"end":{"line":127,"column":27}},"127":{"start":{"line":128,"column":0},"end":{"line":128,"column":8}},"128":{"start":{"line":129,"column":0},"end":{"line":129,"column":5}},"129":{"start":{"line":130,"column":0},"end":{"line":130,"column":3}},"130":{"start":{"line":131,"column":0},"end":{"line":131,"column":0}},"131":{"start":{"line":132,"column":0},"end":{"line":132,"column":36}},"132":{"start":{"line":133,"column":0},"end":{"line":133,"column":34}},"133":{"start":{"line":134,"column":0},"end":{"line":134,"column":20}},"134":{"start":{"line":135,"column":0},"end":{"line":135,"column":23}},"135":{"start":{"line":136,"column":0},"end":{"line":136,"column":24}},"136":{"start":{"line":137,"column":0},"end":{"line":137,"column":9}},"137":{"start":{"line":138,"column":0},"end":{"line":138,"column":48}},"138":{"start":{"line":139,"column":0},"end":{"line":139,"column":0}},"139":{"start":{"line":140,"column":0},"end":{"line":140,"column":25}},"140":{"start":{"line":141,"column":0},"end":{"line":141,"column":99}},"141":{"start":{"line":142,"column":0},"end":{"line":142,"column":7}},"142":{"start":{"line":143,"column":0},"end":{"line":143,"column":51}},"143":{"start":{"line":144,"column":0},"end":{"line":144,"column":0}},"144":{"start":{"line":145,"column":0},"end":{"line":145,"column":80}},"145":{"start":{"line":146,"column":0},"end":{"line":146,"column":0}},"146":{"start":{"line":147,"column":0},"end":{"line":147,"column":67}},"147":{"start":{"line":148,"column":0},"end":{"line":148,"column":28}},"148":{"start":{"line":149,"column":0},"end":{"line":149,"column":52}},"149":{"start":{"line":150,"column":0},"end":{"line":150,"column":30}},"150":{"start":{"line":151,"column":0},"end":{"line":151,"column":14}},"151":{"start":{"line":152,"column":0},"end":{"line":152,"column":18}},"152":{"start":{"line":153,"column":0},"end":{"line":153,"column":7}},"153":{"start":{"line":154,"column":0},"end":{"line":154,"column":26}},"154":{"start":{"line":155,"column":0},"end":{"line":155,"column":78}},"155":{"start":{"line":156,"column":0},"end":{"line":156,"column":16}},"156":{"start":{"line":157,"column":0},"end":{"line":157,"column":5}},"157":{"start":{"line":158,"column":0},"end":{"line":158,"column":3}},"158":{"start":{"line":159,"column":0},"end":{"line":159,"column":0}},"159":{"start":{"line":160,"column":0},"end":{"line":160,"column":41}},"160":{"start":{"line":161,"column":0},"end":{"line":161,"column":34}},"161":{"start":{"line":162,"column":0},"end":{"line":162,"column":34}},"162":{"start":{"line":163,"column":0},"end":{"line":163,"column":24}},"163":{"start":{"line":164,"column":0},"end":{"line":164,"column":62}},"164":{"start":{"line":165,"column":0},"end":{"line":165,"column":20}},"165":{"start":{"line":166,"column":0},"end":{"line":166,"column":22}},"166":{"start":{"line":167,"column":0},"end":{"line":167,"column":40}},"167":{"start":{"line":168,"column":0},"end":{"line":168,"column":6}},"168":{"start":{"line":169,"column":0},"end":{"line":169,"column":0}},"169":{"start":{"line":170,"column":0},"end":{"line":170,"column":43}},"170":{"start":{"line":171,"column":0},"end":{"line":171,"column":113}},"171":{"start":{"line":172,"column":0},"end":{"line":172,"column":35}},"172":{"start":{"line":173,"column":0},"end":{"line":173,"column":31}},"173":{"start":{"line":174,"column":0},"end":{"line":174,"column":3}},"174":{"start":{"line":175,"column":0},"end":{"line":175,"column":1}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":12,"22":12,"23":12,"24":12,"25":1,"26":1,"27":7,"28":7,"29":7,"30":1,"31":1,"32":1,"33":1,"34":7,"35":7,"36":1,"37":1,"38":10,"39":0,"40":0,"41":0,"42":10,"43":10,"44":10,"45":10,"46":6,"47":10,"48":6,"49":10,"50":4,"51":4,"52":1,"53":1,"54":4,"55":3,"56":3,"57":3,"58":4,"59":10,"60":1,"61":1,"62":1,"63":5,"64":5,"65":5,"66":5,"67":5,"68":5,"69":5,"70":5,"71":1,"72":1,"73":1,"74":1,"75":1,"76":1,"77":1,"78":1,"79":1,"80":1,"81":1,"82":6,"83":18,"84":18,"85":6,"86":1,"87":1,"88":3,"89":3,"90":3,"91":3,"92":3,"93":3,"94":3,"95":1,"96":1,"97":6,"98":6,"99":6,"100":6,"101":6,"102":6,"103":6,"104":6,"105":6,"106":6,"107":1,"108":1,"109":5,"110":5,"111":5,"112":5,"113":5,"114":5,"115":6,"116":3,"117":3,"118":3,"119":3,"120":3,"121":3,"122":3,"123":3,"124":3,"125":3,"126":3,"127":3,"128":3,"129":6,"130":1,"131":1,"132":3,"133":3,"134":3,"135":3,"136":3,"137":3,"138":3,"139":3,"140":0,"141":0,"142":3,"143":3,"144":3,"145":3,"146":3,"147":3,"148":3,"149":0,"150":0,"151":0,"152":0,"153":3,"154":0,"155":0,"156":0,"157":3,"158":1,"159":1,"160":0,"161":0,"162":0,"163":0,"164":0,"165":0,"166":0,"167":0,"168":0,"169":0,"170":0,"171":0,"172":0,"173":0,"174":1},"branchMap":{"0":{"type":"branch","line":21,"loc":{"start":{"line":21,"column":2},"end":{"line":25,"column":6}},"locations":[{"start":{"line":21,"column":2},"end":{"line":25,"column":6}}]},"1":{"type":"branch","line":27,"loc":{"start":{"line":27,"column":2},"end":{"line":30,"column":3}},"locations":[{"start":{"line":27,"column":2},"end":{"line":30,"column":3}}]},"2":{"type":"branch","line":34,"loc":{"start":{"line":34,"column":2},"end":{"line":36,"column":3}},"locations":[{"start":{"line":34,"column":2},"end":{"line":36,"column":3}}]},"3":{"type":"branch","line":38,"loc":{"start":{"line":38,"column":10},"end":{"line":60,"column":3}},"locations":[{"start":{"line":38,"column":10},"end":{"line":60,"column":3}}]},"4":{"type":"branch","line":39,"loc":{"start":{"line":39,"column":41},"end":{"line":42,"column":5}},"locations":[{"start":{"line":39,"column":41},"end":{"line":42,"column":5}}]},"5":{"type":"branch","line":45,"loc":{"start":{"line":45,"column":48},"end":{"line":46,"column":60}},"locations":[{"start":{"line":45,"column":48},"end":{"line":46,"column":60}}]},"6":{"type":"branch","line":46,"loc":{"start":{"line":46,"column":60},"end":{"line":47,"column":79}},"locations":[{"start":{"line":46,"column":60},"end":{"line":47,"column":79}}]},"7":{"type":"branch","line":48,"loc":{"start":{"line":48,"column":6},"end":{"line":50,"column":11}},"locations":[{"start":{"line":48,"column":6},"end":{"line":50,"column":11}}]},"8":{"type":"branch","line":50,"loc":{"start":{"line":50,"column":5},"end":{"line":59,"column":5}},"locations":[{"start":{"line":50,"column":5},"end":{"line":59,"column":5}}]},"9":{"type":"branch","line":52,"loc":{"start":{"line":52,"column":54},"end":{"line":55,"column":13}},"locations":[{"start":{"line":52,"column":54},"end":{"line":55,"column":13}}]},"10":{"type":"branch","line":55,"loc":{"start":{"line":55,"column":7},"end":{"line":58,"column":7}},"locations":[{"start":{"line":55,"column":7},"end":{"line":58,"column":7}}]},"11":{"type":"branch","line":63,"loc":{"start":{"line":63,"column":10},"end":{"line":71,"column":3}},"locations":[{"start":{"line":63,"column":10},"end":{"line":71,"column":3}}]},"12":{"type":"branch","line":70,"loc":{"start":{"line":70,"column":45},"end":{"line":70,"column":56}},"locations":[{"start":{"line":70,"column":45},"end":{"line":70,"column":56}}]},"13":{"type":"branch","line":70,"loc":{"start":{"line":70,"column":57},"end":{"line":70,"column":64}},"locations":[{"start":{"line":70,"column":57},"end":{"line":70,"column":64}}]},"14":{"type":"branch","line":67,"loc":{"start":{"line":67,"column":6},"end":{"line":67,"column":81}},"locations":[{"start":{"line":67,"column":6},"end":{"line":67,"column":81}}]},"15":{"type":"branch","line":67,"loc":{"start":{"line":67,"column":46},"end":{"line":67,"column":81}},"locations":[{"start":{"line":67,"column":46},"end":{"line":67,"column":81}}]},"16":{"type":"branch","line":73,"loc":{"start":{"line":73,"column":2},"end":{"line":75,"column":3}},"locations":[{"start":{"line":73,"column":2},"end":{"line":75,"column":3}}]},"17":{"type":"branch","line":82,"loc":{"start":{"line":82,"column":2},"end":{"line":86,"column":3}},"locations":[{"start":{"line":82,"column":2},"end":{"line":86,"column":3}}]},"18":{"type":"branch","line":83,"loc":{"start":{"line":83,"column":43},"end":{"line":85,"column":5}},"locations":[{"start":{"line":83,"column":43},"end":{"line":85,"column":5}}]},"19":{"type":"branch","line":88,"loc":{"start":{"line":88,"column":2},"end":{"line":95,"column":3}},"locations":[{"start":{"line":88,"column":2},"end":{"line":95,"column":3}}]},"20":{"type":"branch","line":97,"loc":{"start":{"line":97,"column":10},"end":{"line":130,"column":3}},"locations":[{"start":{"line":97,"column":10},"end":{"line":130,"column":3}}]},"21":{"type":"branch","line":107,"loc":{"start":{"line":107,"column":21},"end":{"line":109,"column":5}},"locations":[{"start":{"line":107,"column":21},"end":{"line":109,"column":5}}]},"22":{"type":"branch","line":110,"loc":{"start":{"line":110,"column":-1},"end":{"line":116,"column":13}},"locations":[{"start":{"line":110,"column":-1},"end":{"line":116,"column":13}}]},"23":{"type":"branch","line":116,"loc":{"start":{"line":116,"column":6},"end":{"line":129,"column":5}},"locations":[{"start":{"line":116,"column":6},"end":{"line":129,"column":5}}]},"24":{"type":"branch","line":132,"loc":{"start":{"line":132,"column":12},"end":{"line":158,"column":3}},"locations":[{"start":{"line":132,"column":12},"end":{"line":158,"column":3}}]},"25":{"type":"branch","line":140,"loc":{"start":{"line":140,"column":24},"end":{"line":142,"column":7}},"locations":[{"start":{"line":140,"column":24},"end":{"line":142,"column":7}}]},"26":{"type":"branch","line":149,"loc":{"start":{"line":149,"column":7},"end":{"line":153,"column":7}},"locations":[{"start":{"line":149,"column":7},"end":{"line":153,"column":7}}]},"27":{"type":"branch","line":154,"loc":{"start":{"line":154,"column":6},"end":{"line":157,"column":5}},"locations":[{"start":{"line":154,"column":6},"end":{"line":157,"column":5}}]}},"b":{"0":[12],"1":[7],"2":[7],"3":[10],"4":[0],"5":[9],"6":[6],"7":[6],"8":[4],"9":[1],"10":[3],"11":[5],"12":[1],"13":[4],"14":[11],"15":[8],"16":[1],"17":[6],"18":[18],"19":[3],"20":[6],"21":[1],"22":[5],"23":[3],"24":[3],"25":[0],"26":[0],"27":[0]},"fnMap":{"0":{"name":"DictionaryService","decl":{"start":{"line":21,"column":2},"end":{"line":25,"column":6}},"loc":{"start":{"line":21,"column":2},"end":{"line":25,"column":6}},"line":21},"1":{"name":"onApplicationShutdown","decl":{"start":{"line":27,"column":2},"end":{"line":30,"column":3}},"loc":{"start":{"line":27,"column":2},"end":{"line":30,"column":3}},"line":27},"2":{"name":"init","decl":{"start":{"line":34,"column":2},"end":{"line":36,"column":3}},"loc":{"start":{"line":34,"column":2},"end":{"line":36,"column":3}},"line":34},"3":{"name":"getDictionary","decl":{"start":{"line":38,"column":10},"end":{"line":60,"column":3}},"loc":{"start":{"line":38,"column":10},"end":{"line":60,"column":3}},"line":38},"4":{"name":"findDictionary","decl":{"start":{"line":63,"column":10},"end":{"line":71,"column":3}},"loc":{"start":{"line":63,"column":10},"end":{"line":71,"column":3}},"line":63},"5":{"name":"useDictionary","decl":{"start":{"line":73,"column":2},"end":{"line":75,"column":3}},"loc":{"start":{"line":73,"column":2},"end":{"line":75,"column":3}},"line":73},"6":{"name":"buildDictionaryEntryMap","decl":{"start":{"line":82,"column":2},"end":{"line":86,"column":3}},"loc":{"start":{"line":82,"column":2},"end":{"line":86,"column":3}},"line":82},"7":{"name":"scopedDictionaryEntries","decl":{"start":{"line":88,"column":2},"end":{"line":95,"column":3}},"loc":{"start":{"line":88,"column":2},"end":{"line":95,"column":3}},"line":88},"8":{"name":"_scopedDictionaryEntries","decl":{"start":{"line":97,"column":10},"end":{"line":130,"column":3}},"loc":{"start":{"line":97,"column":10},"end":{"line":130,"column":3}},"line":97},"9":{"name":"resolveDictionary","decl":{"start":{"line":132,"column":12},"end":{"line":158,"column":3}},"loc":{"start":{"line":132,"column":12},"end":{"line":158,"column":3}},"line":132},"10":{"name":"getDictionaryEndpoints","decl":{"start":{"line":160,"column":12},"end":{"line":174,"column":3}},"loc":{"start":{"line":160,"column":12},"end":{"line":174,"column":3}},"line":160}},"f":{"0":12,"1":7,"2":7,"3":10,"4":5,"5":1,"6":6,"7":3,"8":6,"9":3,"10":0}},"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/indexer/dictionary/index.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/indexer/dictionary/index.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":21}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":21}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":24}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":37}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":24}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1},"branchMap":{},"b":{},"fnMap":{},"f":{}},"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/indexer/dictionary/types.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/indexer/dictionary/types.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":58}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":47}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":32}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":0}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":46}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":19}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":29}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":2}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":0}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":38}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":37}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":10}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":23}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":21}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":18}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":33}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":66}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":49}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":80}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":44}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":60}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":1}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":0}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":42}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":27}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":41}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":67}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":26}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":29}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":26}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":27}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":66}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":1}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"35":1},"branchMap":{},"b":{},"fnMap":{},"f":{}},"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/indexer/dictionary/utils.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/indexer/dictionary/utils.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":28}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":37}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":0}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":70}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":34}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":17}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":3}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":39}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":1}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":0}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":38}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":25}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":38}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":28}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":51}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":53}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":62}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":35}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":40}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":68}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":32}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":66}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":5}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":3}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":20}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":103}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":63}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":63}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":23}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":5}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":0}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":23}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":1}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":0}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":44}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":39}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":39}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":13}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":83}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":45}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":37}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":35}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":33}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":12}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":49}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":5}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":3}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":68}},"51":{"start":{"line":52,"column":0},"end":{"line":52,"column":73}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":21}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":1}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":50652,"7":50652,"8":50652,"9":50652,"10":0,"11":0,"12":1,"13":8,"14":8,"15":8,"16":8,"17":8,"18":8,"19":8,"20":8,"21":49,"22":49,"23":47,"24":47,"25":47,"26":49,"27":8,"28":8,"29":432,"30":432,"31":432,"32":8,"33":8,"34":8,"35":8,"36":1,"37":16,"38":16,"39":16,"40":16,"41":16,"42":16,"43":16,"44":279,"45":271,"46":279,"47":8,"48":8,"49":279,"50":16,"51":16,"52":16,"53":16},"branchMap":{"0":{"type":"branch","line":7,"loc":{"start":{"line":7,"column":0},"end":{"line":12,"column":1}},"locations":[{"start":{"line":7,"column":0},"end":{"line":12,"column":1}}]},"1":{"type":"branch","line":11,"loc":{"start":{"line":11,"column":-1},"end":{"line":12,"column":1}},"locations":[{"start":{"line":11,"column":-1},"end":{"line":12,"column":1}}]},"2":{"type":"branch","line":14,"loc":{"start":{"line":14,"column":0},"end":{"line":36,"column":1}},"locations":[{"start":{"line":14,"column":0},"end":{"line":36,"column":1}}]},"3":{"type":"branch","line":21,"loc":{"start":{"line":21,"column":34},"end":{"line":27,"column":3}},"locations":[{"start":{"line":21,"column":34},"end":{"line":27,"column":3}}]},"4":{"type":"branch","line":23,"loc":{"start":{"line":23,"column":67},"end":{"line":26,"column":5}},"locations":[{"start":{"line":23,"column":67},"end":{"line":26,"column":5}}]},"5":{"type":"branch","line":23,"loc":{"start":{"line":23,"column":29},"end":{"line":23,"column":64}},"locations":[{"start":{"line":23,"column":29},"end":{"line":23,"column":64}}]},"6":{"type":"branch","line":25,"loc":{"start":{"line":25,"column":43},"end":{"line":25,"column":64}},"locations":[{"start":{"line":25,"column":43},"end":{"line":25,"column":64}}]},"7":{"type":"branch","line":29,"loc":{"start":{"line":29,"column":92},"end":{"line":33,"column":3}},"locations":[{"start":{"line":29,"column":92},"end":{"line":33,"column":3}}]},"8":{"type":"branch","line":30,"loc":{"start":{"line":30,"column":39},"end":{"line":30,"column":42}},"locations":[{"start":{"line":30,"column":39},"end":{"line":30,"column":42}}]},"9":{"type":"branch","line":30,"loc":{"start":{"line":30,"column":43},"end":{"line":30,"column":62}},"locations":[{"start":{"line":30,"column":43},"end":{"line":30,"column":62}}]},"10":{"type":"branch","line":31,"loc":{"start":{"line":31,"column":39},"end":{"line":31,"column":42}},"locations":[{"start":{"line":31,"column":39},"end":{"line":31,"column":42}}]},"11":{"type":"branch","line":31,"loc":{"start":{"line":31,"column":43},"end":{"line":31,"column":62}},"locations":[{"start":{"line":31,"column":43},"end":{"line":31,"column":62}}]},"12":{"type":"branch","line":38,"loc":{"start":{"line":38,"column":0},"end":{"line":54,"column":1}},"locations":[{"start":{"line":38,"column":0},"end":{"line":54,"column":1}}]},"13":{"type":"branch","line":44,"loc":{"start":{"line":44,"column":36},"end":{"line":50,"column":3}},"locations":[{"start":{"line":44,"column":36},"end":{"line":50,"column":3}}]},"14":{"type":"branch","line":45,"loc":{"start":{"line":45,"column":34},"end":{"line":47,"column":11}},"locations":[{"start":{"line":45,"column":34},"end":{"line":47,"column":11}}]},"15":{"type":"branch","line":47,"loc":{"start":{"line":47,"column":5},"end":{"line":49,"column":5}},"locations":[{"start":{"line":47,"column":5},"end":{"line":49,"column":5}}]},"16":{"type":"branch","line":52,"loc":{"start":{"line":52,"column":56},"end":{"line":52,"column":71}},"locations":[{"start":{"line":52,"column":56},"end":{"line":52,"column":71}}]}},"b":{"0":[50652],"1":[0],"2":[8],"3":[49],"4":[47],"5":[156],"6":[1717],"7":[432],"8":[413],"9":[19],"10":[422],"11":[10],"12":[16],"13":[279],"14":[271],"15":[8],"16":[168]},"fnMap":{"0":{"name":"getBlockHeight","decl":{"start":{"line":7,"column":0},"end":{"line":12,"column":1}},"loc":{"start":{"line":7,"column":0},"end":{"line":12,"column":1}},"line":7},"1":{"name":"mergeNumAndBlocks","decl":{"start":{"line":14,"column":0},"end":{"line":36,"column":1}},"loc":{"start":{"line":14,"column":0},"end":{"line":36,"column":1}},"line":14},"2":{"name":"mergeNumAndBlocksToNums","decl":{"start":{"line":38,"column":0},"end":{"line":54,"column":1}},"loc":{"start":{"line":38,"column":0},"end":{"line":54,"column":1}},"line":38}},"f":{"0":50652,"1":8,"2":16}},"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/indexer/dictionary/v1/dictionaryV1.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/indexer/dictionary/v1/dictionaryV1.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":102}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":52}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":107}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":101}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":32}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":46}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":45}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":42}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":43}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":39}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":49}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":44}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":89}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":0}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":42}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":0}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":62}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":5}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":12}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":23}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":26}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":3}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":55}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":29}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":32}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":0}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":14}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":52}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":30}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":46}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":51}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":121}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":88}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":5}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":65}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":0}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":37}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":54}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":59}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":23}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":21}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":34}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":10}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":16}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":34}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":10}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":8}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":7}},"51":{"start":{"line":52,"column":0},"end":{"line":52,"column":3}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":0}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":84}},"54":{"start":{"line":55,"column":0},"end":{"line":55,"column":0}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":41}},"56":{"start":{"line":57,"column":0},"end":{"line":57,"column":41}},"57":{"start":{"line":58,"column":0},"end":{"line":58,"column":9}},"58":{"start":{"line":59,"column":0},"end":{"line":59,"column":33}},"59":{"start":{"line":60,"column":0},"end":{"line":60,"column":27}},"60":{"start":{"line":61,"column":0},"end":{"line":61,"column":28}},"61":{"start":{"line":62,"column":0},"end":{"line":62,"column":11}},"62":{"start":{"line":63,"column":0},"end":{"line":63,"column":42}},"63":{"start":{"line":64,"column":0},"end":{"line":64,"column":48}},"64":{"start":{"line":65,"column":0},"end":{"line":65,"column":43}},"65":{"start":{"line":66,"column":0},"end":{"line":66,"column":112}},"66":{"start":{"line":67,"column":0},"end":{"line":67,"column":8}},"67":{"start":{"line":68,"column":0},"end":{"line":68,"column":43}},"68":{"start":{"line":69,"column":0},"end":{"line":69,"column":63}},"69":{"start":{"line":70,"column":0},"end":{"line":70,"column":24}},"70":{"start":{"line":71,"column":0},"end":{"line":71,"column":61}},"71":{"start":{"line":72,"column":0},"end":{"line":72,"column":36}},"72":{"start":{"line":73,"column":0},"end":{"line":73,"column":73}},"73":{"start":{"line":74,"column":0},"end":{"line":74,"column":53}},"74":{"start":{"line":75,"column":0},"end":{"line":75,"column":26}},"75":{"start":{"line":76,"column":0},"end":{"line":76,"column":7}},"76":{"start":{"line":77,"column":0},"end":{"line":77,"column":61}},"77":{"start":{"line":78,"column":0},"end":{"line":78,"column":13}},"78":{"start":{"line":79,"column":0},"end":{"line":79,"column":5}},"79":{"start":{"line":80,"column":0},"end":{"line":80,"column":3}},"80":{"start":{"line":81,"column":0},"end":{"line":81,"column":0}},"81":{"start":{"line":82,"column":0},"end":{"line":82,"column":83}},"82":{"start":{"line":83,"column":0},"end":{"line":83,"column":94}},"83":{"start":{"line":84,"column":0},"end":{"line":84,"column":3}},"84":{"start":{"line":85,"column":0},"end":{"line":85,"column":0}},"85":{"start":{"line":86,"column":0},"end":{"line":86,"column":63}},"86":{"start":{"line":87,"column":0},"end":{"line":87,"column":24}},"87":{"start":{"line":88,"column":0},"end":{"line":88,"column":69}},"88":{"start":{"line":89,"column":0},"end":{"line":89,"column":5}},"89":{"start":{"line":90,"column":0},"end":{"line":90,"column":24}},"90":{"start":{"line":91,"column":0},"end":{"line":91,"column":3}},"91":{"start":{"line":92,"column":0},"end":{"line":92,"column":0}},"92":{"start":{"line":93,"column":0},"end":{"line":93,"column":5}},"93":{"start":{"line":94,"column":0},"end":{"line":94,"column":4}},"94":{"start":{"line":95,"column":0},"end":{"line":95,"column":22}},"95":{"start":{"line":96,"column":0},"end":{"line":96,"column":107}},"96":{"start":{"line":97,"column":0},"end":{"line":97,"column":21}},"97":{"start":{"line":98,"column":0},"end":{"line":98,"column":22}},"98":{"start":{"line":99,"column":0},"end":{"line":99,"column":5}},"99":{"start":{"line":100,"column":0},"end":{"line":100,"column":0}},"100":{"start":{"line":101,"column":0},"end":{"line":101,"column":13}},"101":{"start":{"line":102,"column":0},"end":{"line":102,"column":16}},"102":{"start":{"line":103,"column":0},"end":{"line":103,"column":23}},"103":{"start":{"line":104,"column":0},"end":{"line":104,"column":21}},"104":{"start":{"line":105,"column":0},"end":{"line":105,"column":21}},"105":{"start":{"line":106,"column":0},"end":{"line":106,"column":54}},"106":{"start":{"line":107,"column":0},"end":{"line":107,"column":86}},"107":{"start":{"line":108,"column":0},"end":{"line":108,"column":49}},"108":{"start":{"line":109,"column":0},"end":{"line":109,"column":23}},"109":{"start":{"line":110,"column":0},"end":{"line":110,"column":5}},"110":{"start":{"line":111,"column":0},"end":{"line":111,"column":0}},"111":{"start":{"line":112,"column":0},"end":{"line":112,"column":102}},"112":{"start":{"line":113,"column":0},"end":{"line":113,"column":0}},"113":{"start":{"line":114,"column":0},"end":{"line":114,"column":36}},"114":{"start":{"line":115,"column":0},"end":{"line":115,"column":69}},"115":{"start":{"line":116,"column":0},"end":{"line":116,"column":9}},"116":{"start":{"line":117,"column":0},"end":{"line":117,"column":33}},"117":{"start":{"line":118,"column":0},"end":{"line":118,"column":27}},"118":{"start":{"line":119,"column":0},"end":{"line":119,"column":28}},"119":{"start":{"line":120,"column":0},"end":{"line":120,"column":20}},"120":{"start":{"line":121,"column":0},"end":{"line":121,"column":11}},"121":{"start":{"line":122,"column":0},"end":{"line":122,"column":42}},"122":{"start":{"line":123,"column":0},"end":{"line":123,"column":39}},"123":{"start":{"line":124,"column":0},"end":{"line":124,"column":43}},"124":{"start":{"line":125,"column":0},"end":{"line":125,"column":59}},"125":{"start":{"line":126,"column":0},"end":{"line":126,"column":89}},"126":{"start":{"line":127,"column":0},"end":{"line":127,"column":10}},"127":{"start":{"line":128,"column":0},"end":{"line":128,"column":8}},"128":{"start":{"line":129,"column":0},"end":{"line":129,"column":47}},"129":{"start":{"line":130,"column":0},"end":{"line":130,"column":60}},"130":{"start":{"line":131,"column":0},"end":{"line":131,"column":52}},"131":{"start":{"line":132,"column":0},"end":{"line":132,"column":76}},"132":{"start":{"line":133,"column":0},"end":{"line":133,"column":55}},"133":{"start":{"line":134,"column":0},"end":{"line":134,"column":57}},"134":{"start":{"line":135,"column":0},"end":{"line":135,"column":93}},"135":{"start":{"line":136,"column":0},"end":{"line":136,"column":11}},"136":{"start":{"line":137,"column":0},"end":{"line":137,"column":9}},"137":{"start":{"line":138,"column":0},"end":{"line":138,"column":7}},"138":{"start":{"line":139,"column":0},"end":{"line":139,"column":44}},"139":{"start":{"line":140,"column":0},"end":{"line":140,"column":119}},"140":{"start":{"line":141,"column":0},"end":{"line":141,"column":52}},"141":{"start":{"line":142,"column":0},"end":{"line":142,"column":45}},"142":{"start":{"line":143,"column":0},"end":{"line":143,"column":35}},"143":{"start":{"line":144,"column":0},"end":{"line":144,"column":0}},"144":{"start":{"line":145,"column":0},"end":{"line":145,"column":62}},"145":{"start":{"line":146,"column":0},"end":{"line":146,"column":25}},"146":{"start":{"line":147,"column":0},"end":{"line":147,"column":7}},"147":{"start":{"line":148,"column":0},"end":{"line":148,"column":0}},"148":{"start":{"line":149,"column":0},"end":{"line":149,"column":14}},"149":{"start":{"line":150,"column":0},"end":{"line":150,"column":62}},"150":{"start":{"line":151,"column":0},"end":{"line":151,"column":20}},"151":{"start":{"line":152,"column":0},"end":{"line":152,"column":8}},"152":{"start":{"line":153,"column":0},"end":{"line":153,"column":24}},"153":{"start":{"line":154,"column":0},"end":{"line":154,"column":81}},"154":{"start":{"line":155,"column":0},"end":{"line":155,"column":63}},"155":{"start":{"line":156,"column":0},"end":{"line":156,"column":33}},"156":{"start":{"line":157,"column":0},"end":{"line":157,"column":66}},"157":{"start":{"line":158,"column":0},"end":{"line":158,"column":53}},"158":{"start":{"line":159,"column":0},"end":{"line":159,"column":66}},"159":{"start":{"line":160,"column":0},"end":{"line":160,"column":7}},"160":{"start":{"line":161,"column":0},"end":{"line":161,"column":60}},"161":{"start":{"line":162,"column":0},"end":{"line":162,"column":23}},"162":{"start":{"line":163,"column":0},"end":{"line":163,"column":5}},"163":{"start":{"line":164,"column":0},"end":{"line":164,"column":3}},"164":{"start":{"line":165,"column":0},"end":{"line":165,"column":0}},"165":{"start":{"line":166,"column":0},"end":{"line":166,"column":50}},"166":{"start":{"line":167,"column":0},"end":{"line":167,"column":9}},"167":{"start":{"line":168,"column":0},"end":{"line":168,"column":52}},"168":{"start":{"line":169,"column":0},"end":{"line":169,"column":17}},"169":{"start":{"line":170,"column":0},"end":{"line":170,"column":19}},"170":{"start":{"line":171,"column":0},"end":{"line":171,"column":5}},"171":{"start":{"line":172,"column":0},"end":{"line":172,"column":3}},"172":{"start":{"line":173,"column":0},"end":{"line":173,"column":0}},"173":{"start":{"line":174,"column":0},"end":{"line":174,"column":103}},"174":{"start":{"line":175,"column":0},"end":{"line":175,"column":37}},"175":{"start":{"line":176,"column":0},"end":{"line":176,"column":11}},"176":{"start":{"line":177,"column":0},"end":{"line":177,"column":24}},"177":{"start":{"line":178,"column":0},"end":{"line":178,"column":23}},"178":{"start":{"line":179,"column":0},"end":{"line":179,"column":9}},"179":{"start":{"line":180,"column":0},"end":{"line":180,"column":0}},"180":{"start":{"line":181,"column":0},"end":{"line":181,"column":96}},"181":{"start":{"line":182,"column":0},"end":{"line":182,"column":90}},"182":{"start":{"line":183,"column":0},"end":{"line":183,"column":23}},"183":{"start":{"line":184,"column":0},"end":{"line":184,"column":9}},"184":{"start":{"line":185,"column":0},"end":{"line":185,"column":20}},"185":{"start":{"line":186,"column":0},"end":{"line":186,"column":24}},"186":{"start":{"line":187,"column":0},"end":{"line":187,"column":66}},"187":{"start":{"line":188,"column":0},"end":{"line":188,"column":21}},"188":{"start":{"line":189,"column":0},"end":{"line":189,"column":7}},"189":{"start":{"line":190,"column":0},"end":{"line":190,"column":6}},"190":{"start":{"line":191,"column":0},"end":{"line":191,"column":0}},"191":{"start":{"line":192,"column":0},"end":{"line":192,"column":29}},"192":{"start":{"line":193,"column":0},"end":{"line":193,"column":0}},"193":{"start":{"line":194,"column":0},"end":{"line":194,"column":31}},"194":{"start":{"line":195,"column":0},"end":{"line":195,"column":58}},"195":{"start":{"line":196,"column":0},"end":{"line":196,"column":40}},"196":{"start":{"line":197,"column":0},"end":{"line":197,"column":7}},"197":{"start":{"line":198,"column":0},"end":{"line":198,"column":56}},"198":{"start":{"line":199,"column":0},"end":{"line":199,"column":0}},"199":{"start":{"line":200,"column":0},"end":{"line":200,"column":17}},"200":{"start":{"line":201,"column":0},"end":{"line":201,"column":3}},"201":{"start":{"line":202,"column":0},"end":{"line":202,"column":0}},"202":{"start":{"line":203,"column":0},"end":{"line":203,"column":26}},"203":{"start":{"line":204,"column":0},"end":{"line":204,"column":23}},"204":{"start":{"line":205,"column":0},"end":{"line":205,"column":26}},"205":{"start":{"line":206,"column":0},"end":{"line":206,"column":22}},"206":{"start":{"line":207,"column":0},"end":{"line":207,"column":40}},"207":{"start":{"line":208,"column":0},"end":{"line":208,"column":15}},"208":{"start":{"line":209,"column":0},"end":{"line":209,"column":96}},"209":{"start":{"line":210,"column":0},"end":{"line":210,"column":42}},"210":{"start":{"line":211,"column":0},"end":{"line":211,"column":39}},"211":{"start":{"line":212,"column":0},"end":{"line":212,"column":17}},"212":{"start":{"line":213,"column":0},"end":{"line":213,"column":11}},"213":{"start":{"line":214,"column":0},"end":{"line":214,"column":0}},"214":{"start":{"line":215,"column":0},"end":{"line":215,"column":15}},"215":{"start":{"line":216,"column":0},"end":{"line":216,"column":30}},"216":{"start":{"line":217,"column":0},"end":{"line":217,"column":30}},"217":{"start":{"line":218,"column":0},"end":{"line":218,"column":7}},"218":{"start":{"line":219,"column":0},"end":{"line":219,"column":28}},"219":{"start":{"line":220,"column":0},"end":{"line":220,"column":116}},"220":{"start":{"line":221,"column":0},"end":{"line":221,"column":8}},"221":{"start":{"line":222,"column":0},"end":{"line":222,"column":6}},"222":{"start":{"line":223,"column":0},"end":{"line":223,"column":47}},"223":{"start":{"line":224,"column":0},"end":{"line":224,"column":52}},"224":{"start":{"line":225,"column":0},"end":{"line":225,"column":15}},"225":{"start":{"line":226,"column":0},"end":{"line":226,"column":19}},"226":{"start":{"line":227,"column":0},"end":{"line":227,"column":22}},"227":{"start":{"line":228,"column":0},"end":{"line":228,"column":23}},"228":{"start":{"line":229,"column":0},"end":{"line":229,"column":18}},"229":{"start":{"line":230,"column":0},"end":{"line":230,"column":24}},"230":{"start":{"line":231,"column":0},"end":{"line":231,"column":8}},"231":{"start":{"line":232,"column":0},"end":{"line":232,"column":23}},"232":{"start":{"line":233,"column":0},"end":{"line":233,"column":26}},"233":{"start":{"line":234,"column":0},"end":{"line":234,"column":5}},"234":{"start":{"line":235,"column":0},"end":{"line":235,"column":35}},"235":{"start":{"line":236,"column":0},"end":{"line":236,"column":3}},"236":{"start":{"line":237,"column":0},"end":{"line":237,"column":0}},"237":{"start":{"line":238,"column":0},"end":{"line":238,"column":37}},"238":{"start":{"line":239,"column":0},"end":{"line":239,"column":30}},"239":{"start":{"line":240,"column":0},"end":{"line":240,"column":7}},"240":{"start":{"line":241,"column":0},"end":{"line":241,"column":28}},"241":{"start":{"line":242,"column":0},"end":{"line":242,"column":97}},"242":{"start":{"line":243,"column":0},"end":{"line":243,"column":8}},"243":{"start":{"line":244,"column":0},"end":{"line":244,"column":6}},"244":{"start":{"line":245,"column":0},"end":{"line":245,"column":33}},"245":{"start":{"line":246,"column":0},"end":{"line":246,"column":3}},"246":{"start":{"line":247,"column":0},"end":{"line":247,"column":0}},"247":{"start":{"line":248,"column":0},"end":{"line":248,"column":72}},"248":{"start":{"line":249,"column":0},"end":{"line":249,"column":84}},"249":{"start":{"line":250,"column":0},"end":{"line":250,"column":3}},"250":{"start":{"line":251,"column":0},"end":{"line":251,"column":1}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":57,"31":57,"32":57,"33":57,"34":57,"35":57,"36":57,"37":57,"38":57,"39":57,"40":57,"41":57,"42":57,"43":57,"44":57,"45":57,"46":57,"47":57,"48":57,"49":57,"50":57,"51":57,"52":1,"53":1,"54":1,"55":1,"56":60,"57":60,"58":60,"59":60,"60":60,"61":60,"62":60,"63":60,"64":60,"65":60,"66":60,"67":46,"68":46,"69":60,"70":14,"71":0,"72":0,"73":0,"74":0,"75":0,"76":14,"77":14,"78":14,"79":60,"80":1,"81":1,"82":8,"83":8,"84":1,"85":1,"86":83,"87":0,"88":0,"89":83,"90":83,"91":1,"92":1,"93":1,"94":1,"95":1,"96":1,"97":1,"98":1,"99":1,"100":1,"101":1,"102":26,"103":26,"104":26,"105":26,"106":26,"107":26,"108":3,"109":3,"110":23,"111":23,"112":23,"113":23,"114":23,"115":23,"116":23,"117":23,"118":23,"119":23,"120":23,"121":23,"122":23,"123":23,"124":23,"125":26,"126":26,"127":26,"128":21,"129":21,"130":26,"131":57,"132":36,"133":519,"134":519,"135":519,"136":36,"137":57,"138":21,"139":21,"140":21,"141":21,"142":21,"143":21,"144":26,"145":3,"146":3,"147":18,"148":18,"149":18,"150":18,"151":18,"152":26,"153":2,"154":2,"155":0,"156":0,"157":0,"158":0,"159":0,"160":2,"161":2,"162":2,"163":26,"164":1,"165":1,"166":16,"167":16,"168":16,"169":0,"170":0,"171":16,"172":1,"173":1,"174":42,"175":42,"176":42,"177":3,"178":3,"179":39,"180":42,"181":5,"182":5,"183":5,"184":34,"185":42,"186":0,"187":0,"188":0,"189":42,"190":42,"191":42,"192":42,"193":42,"194":42,"195":42,"196":42,"197":42,"198":42,"199":42,"200":42,"201":1,"202":1,"203":23,"204":23,"205":23,"206":23,"207":23,"208":23,"209":77,"210":77,"211":77,"212":23,"213":23,"214":23,"215":23,"216":23,"217":23,"218":23,"219":23,"220":23,"221":23,"222":23,"223":40,"224":40,"225":40,"226":40,"227":40,"228":40,"229":40,"230":40,"231":40,"232":40,"233":40,"234":23,"235":23,"236":1,"237":1,"238":60,"239":60,"240":60,"241":60,"242":60,"243":60,"244":60,"245":60,"246":1,"247":1,"248":2,"249":2,"250":1},"branchMap":{"0":{"type":"branch","line":30,"loc":{"start":{"line":30,"column":2},"end":{"line":52,"column":3}},"locations":[{"start":{"line":30,"column":2},"end":{"line":52,"column":3}}]},"1":{"type":"branch","line":56,"loc":{"start":{"line":56,"column":12},"end":{"line":80,"column":3}},"locations":[{"start":{"line":56,"column":12},"end":{"line":80,"column":3}}]},"2":{"type":"branch","line":66,"loc":{"start":{"line":66,"column":81},"end":{"line":66,"column":105}},"locations":[{"start":{"line":66,"column":81},"end":{"line":66,"column":105}}]},"3":{"type":"branch","line":68,"loc":{"start":{"line":68,"column":-1},"end":{"line":70,"column":13}},"locations":[{"start":{"line":68,"column":-1},"end":{"line":70,"column":13}}]},"4":{"type":"branch","line":70,"loc":{"start":{"line":70,"column":6},"end":{"line":79,"column":5}},"locations":[{"start":{"line":70,"column":6},"end":{"line":79,"column":5}}]},"5":{"type":"branch","line":71,"loc":{"start":{"line":71,"column":60},"end":{"line":76,"column":7}},"locations":[{"start":{"line":71,"column":60},"end":{"line":76,"column":7}}]},"6":{"type":"branch","line":82,"loc":{"start":{"line":82,"column":2},"end":{"line":84,"column":3}},"locations":[{"start":{"line":82,"column":2},"end":{"line":84,"column":3}}]},"7":{"type":"branch","line":86,"loc":{"start":{"line":86,"column":2},"end":{"line":91,"column":3}},"locations":[{"start":{"line":86,"column":2},"end":{"line":91,"column":3}}]},"8":{"type":"branch","line":87,"loc":{"start":{"line":87,"column":23},"end":{"line":89,"column":5}},"locations":[{"start":{"line":87,"column":23},"end":{"line":89,"column":5}}]},"9":{"type":"branch","line":102,"loc":{"start":{"line":102,"column":8},"end":{"line":164,"column":3}},"locations":[{"start":{"line":102,"column":8},"end":{"line":164,"column":3}}]},"10":{"type":"branch","line":108,"loc":{"start":{"line":108,"column":19},"end":{"line":108,"column":46}},"locations":[{"start":{"line":108,"column":19},"end":{"line":108,"column":46}}]},"11":{"type":"branch","line":108,"loc":{"start":{"line":108,"column":48},"end":{"line":110,"column":5}},"locations":[{"start":{"line":108,"column":48},"end":{"line":110,"column":5}}]},"12":{"type":"branch","line":111,"loc":{"start":{"line":111,"column":-1},"end":{"line":126,"column":32}},"locations":[{"start":{"line":111,"column":-1},"end":{"line":126,"column":32}}]},"13":{"type":"branch","line":126,"loc":{"start":{"line":126,"column":32},"end":{"line":126,"column":84}},"locations":[{"start":{"line":126,"column":32},"end":{"line":126,"column":84}}]},"14":{"type":"branch","line":126,"loc":{"start":{"line":126,"column":85},"end":{"line":126,"column":89}},"locations":[{"start":{"line":126,"column":85},"end":{"line":126,"column":89}}]},"15":{"type":"branch","line":129,"loc":{"start":{"line":129,"column":-1},"end":{"line":131,"column":51}},"locations":[{"start":{"line":129,"column":-1},"end":{"line":131,"column":51}}]},"16":{"type":"branch","line":131,"loc":{"start":{"line":131,"column":51},"end":{"line":138,"column":7}},"locations":[{"start":{"line":131,"column":51},"end":{"line":138,"column":7}}]},"17":{"type":"branch","line":132,"loc":{"start":{"line":132,"column":34},"end":{"line":132,"column":73}},"locations":[{"start":{"line":132,"column":34},"end":{"line":132,"column":73}}]},"18":{"type":"branch","line":132,"loc":{"start":{"line":132,"column":75},"end":{"line":137,"column":9}},"locations":[{"start":{"line":132,"column":75},"end":{"line":137,"column":9}}]},"19":{"type":"branch","line":133,"loc":{"start":{"line":133,"column":54},"end":{"line":136,"column":11}},"locations":[{"start":{"line":133,"column":54},"end":{"line":136,"column":11}}]},"20":{"type":"branch","line":139,"loc":{"start":{"line":139,"column":-1},"end":{"line":145,"column":61}},"locations":[{"start":{"line":139,"column":-1},"end":{"line":145,"column":61}}]},"21":{"type":"branch","line":145,"loc":{"start":{"line":145,"column":61},"end":{"line":147,"column":7}},"locations":[{"start":{"line":145,"column":61},"end":{"line":147,"column":7}}]},"22":{"type":"branch","line":148,"loc":{"start":{"line":148,"column":-1},"end":{"line":153,"column":13}},"locations":[{"start":{"line":148,"column":-1},"end":{"line":153,"column":13}}]},"23":{"type":"branch","line":153,"loc":{"start":{"line":153,"column":6},"end":{"line":163,"column":5}},"locations":[{"start":{"line":153,"column":6},"end":{"line":163,"column":5}}]},"24":{"type":"branch","line":155,"loc":{"start":{"line":155,"column":62},"end":{"line":160,"column":7}},"locations":[{"start":{"line":155,"column":62},"end":{"line":160,"column":7}}]},"25":{"type":"branch","line":140,"loc":{"start":{"line":140,"column":69},"end":{"line":140,"column":116}},"locations":[{"start":{"line":140,"column":69},"end":{"line":140,"column":116}}]},"26":{"type":"branch","line":140,"loc":{"start":{"line":140,"column":96},"end":{"line":140,"column":106}},"locations":[{"start":{"line":140,"column":96},"end":{"line":140,"column":106}}]},"27":{"type":"branch","line":142,"loc":{"start":{"line":142,"column":16},"end":{"line":142,"column":44}},"locations":[{"start":{"line":142,"column":16},"end":{"line":142,"column":44}}]},"28":{"type":"branch","line":143,"loc":{"start":{"line":143,"column":14},"end":{"line":143,"column":33}},"locations":[{"start":{"line":143,"column":14},"end":{"line":143,"column":33}}]},"29":{"type":"branch","line":166,"loc":{"start":{"line":166,"column":2},"end":{"line":172,"column":3}},"locations":[{"start":{"line":166,"column":2},"end":{"line":172,"column":3}}]},"30":{"type":"branch","line":169,"loc":{"start":{"line":169,"column":6},"end":{"line":171,"column":5}},"locations":[{"start":{"line":169,"column":6},"end":{"line":171,"column":5}}]},"31":{"type":"branch","line":174,"loc":{"start":{"line":174,"column":12},"end":{"line":201,"column":3}},"locations":[{"start":{"line":174,"column":12},"end":{"line":201,"column":3}}]},"32":{"type":"branch","line":175,"loc":{"start":{"line":175,"column":21},"end":{"line":190,"column":5}},"locations":[{"start":{"line":175,"column":21},"end":{"line":190,"column":5}}]},"33":{"type":"branch","line":177,"loc":{"start":{"line":177,"column":23},"end":{"line":179,"column":9}},"locations":[{"start":{"line":177,"column":23},"end":{"line":179,"column":9}}]},"34":{"type":"branch","line":180,"loc":{"start":{"line":180,"column":-1},"end":{"line":181,"column":93}},"locations":[{"start":{"line":180,"column":-1},"end":{"line":181,"column":93}}]},"35":{"type":"branch","line":181,"loc":{"start":{"line":181,"column":95},"end":{"line":184,"column":9}},"locations":[{"start":{"line":181,"column":95},"end":{"line":184,"column":9}}]},"36":{"type":"branch","line":185,"loc":{"start":{"line":185,"column":-1},"end":{"line":186,"column":15}},"locations":[{"start":{"line":185,"column":-1},"end":{"line":186,"column":15}}]},"37":{"type":"branch","line":186,"loc":{"start":{"line":186,"column":8},"end":{"line":189,"column":7}},"locations":[{"start":{"line":186,"column":8},"end":{"line":189,"column":7}}]},"38":{"type":"branch","line":203,"loc":{"start":{"line":203,"column":10},"end":{"line":236,"column":3}},"locations":[{"start":{"line":203,"column":10},"end":{"line":236,"column":3}}]},"39":{"type":"branch","line":220,"loc":{"start":{"line":220,"column":57},"end":{"line":220,"column":115}},"locations":[{"start":{"line":220,"column":57},"end":{"line":220,"column":115}}]},"40":{"type":"branch","line":223,"loc":{"start":{"line":223,"column":46},"end":{"line":234,"column":5}},"locations":[{"start":{"line":223,"column":46},"end":{"line":234,"column":5}}]},"41":{"type":"branch","line":209,"loc":{"start":{"line":209,"column":83},"end":{"line":213,"column":5}},"locations":[{"start":{"line":209,"column":83},"end":{"line":213,"column":5}}]},"42":{"type":"branch","line":210,"loc":{"start":{"line":210,"column":35},"end":{"line":210,"column":41}},"locations":[{"start":{"line":210,"column":35},"end":{"line":210,"column":41}}]},"43":{"type":"branch","line":238,"loc":{"start":{"line":238,"column":10},"end":{"line":246,"column":3}},"locations":[{"start":{"line":238,"column":10},"end":{"line":246,"column":3}}]},"44":{"type":"branch","line":242,"loc":{"start":{"line":242,"column":77},"end":{"line":242,"column":96}},"locations":[{"start":{"line":242,"column":77},"end":{"line":242,"column":96}}]},"45":{"type":"branch","line":248,"loc":{"start":{"line":248,"column":12},"end":{"line":250,"column":3}},"locations":[{"start":{"line":248,"column":12},"end":{"line":250,"column":3}}]}},"b":{"0":[57],"1":[60],"2":[0],"3":[46],"4":[14],"5":[0],"6":[8],"7":[83],"8":[0],"9":[26],"10":[23],"11":[3],"12":[23],"13":[0],"14":[23],"15":[21],"16":[57],"17":[36],"18":[36],"19":[519],"20":[21],"21":[3],"22":[18],"23":[2],"24":[0],"25":[21],"26":[0],"27":[399],"28":[711],"29":[16],"30":[0],"31":[42],"32":[42],"33":[3],"34":[39],"35":[5],"36":[34],"37":[0],"38":[23],"39":[0],"40":[40],"41":[77],"42":[40],"43":[60],"44":[0],"45":[2]},"fnMap":{"0":{"name":"DictionaryV1","decl":{"start":{"line":30,"column":2},"end":{"line":52,"column":3}},"loc":{"start":{"line":30,"column":2},"end":{"line":52,"column":3}},"line":30},"1":{"name":"init","decl":{"start":{"line":56,"column":12},"end":{"line":80,"column":3}},"loc":{"start":{"line":56,"column":12},"end":{"line":80,"column":3}},"line":56},"2":{"name":"getQueryEndBlock","decl":{"start":{"line":82,"column":2},"end":{"line":84,"column":3}},"loc":{"start":{"line":82,"column":2},"end":{"line":84,"column":3}},"line":82},"3":{"name":"get client","decl":{"start":{"line":86,"column":2},"end":{"line":91,"column":3}},"loc":{"start":{"line":86,"column":2},"end":{"line":91,"column":3}},"line":86},"4":{"name":"getData","decl":{"start":{"line":102,"column":8},"end":{"line":164,"column":3}},"loc":{"start":{"line":102,"column":8},"end":{"line":164,"column":3}},"line":102},"5":{"name":"queryMapValidByHeight","decl":{"start":{"line":166,"column":2},"end":{"line":172,"column":3}},"loc":{"start":{"line":166,"column":2},"end":{"line":172,"column":3}},"line":166},"6":{"name":"dictionaryValidation","decl":{"start":{"line":174,"column":12},"end":{"line":201,"column":3}},"loc":{"start":{"line":174,"column":12},"end":{"line":201,"column":3}},"line":174},"7":{"name":"validate","decl":{"start":{"line":175,"column":21},"end":{"line":190,"column":5}},"loc":{"start":{"line":175,"column":21},"end":{"line":190,"column":5}},"line":175},"8":{"name":"dictionaryQuery","decl":{"start":{"line":203,"column":10},"end":{"line":236,"column":3}},"loc":{"start":{"line":203,"column":10},"end":{"line":236,"column":3}},"line":203},"9":{"name":"metadataQuery","decl":{"start":{"line":238,"column":10},"end":{"line":246,"column":3}},"loc":{"start":{"line":238,"column":10},"end":{"line":246,"column":3}},"line":238},"10":{"name":"validateChainMeta","decl":{"start":{"line":248,"column":12},"end":{"line":250,"column":3}},"loc":{"start":{"line":248,"column":12},"end":{"line":250,"column":3}},"line":248}},"f":{"0":57,"1":60,"2":8,"3":83,"4":26,"5":16,"6":42,"7":42,"8":23,"9":60,"10":2}},"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/indexer/dictionary/v1/index.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/indexer/dictionary/v1/index.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":31}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":24}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1},"branchMap":{},"b":{},"fnMap":{},"f":{}},"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/indexer/dictionary/v1/utils.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/indexer/dictionary/v1/utils.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":28}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":59}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":79}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":0}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":70}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":73}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":0}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":27}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":13}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":40}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":14}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":2}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":0}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":37}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":34}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":30}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":2}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":0}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":34}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":34}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":2}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":0}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":48}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":25}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":18}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":25}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":19}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":24}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":20}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":33}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":28}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":60}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":9}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":0}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":81}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":43}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":14}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":54}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":7}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":5}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":12}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":18}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":23}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":3}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":1}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":0}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":75}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":80}},"51":{"start":{"line":52,"column":0},"end":{"line":52,"column":0}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":10}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":9}},"54":{"start":{"line":55,"column":0},"end":{"line":55,"column":12}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":22}},"56":{"start":{"line":57,"column":0},"end":{"line":57,"column":4}},"57":{"start":{"line":58,"column":0},"end":{"line":58,"column":1}},"58":{"start":{"line":59,"column":0},"end":{"line":59,"column":0}},"59":{"start":{"line":60,"column":0},"end":{"line":60,"column":41}},"60":{"start":{"line":61,"column":0},"end":{"line":61,"column":50}},"61":{"start":{"line":62,"column":0},"end":{"line":62,"column":43}},"62":{"start":{"line":63,"column":0},"end":{"line":63,"column":1}},"63":{"start":{"line":64,"column":0},"end":{"line":64,"column":0}},"64":{"start":{"line":65,"column":0},"end":{"line":65,"column":26}},"65":{"start":{"line":66,"column":0},"end":{"line":66,"column":0}},"66":{"start":{"line":67,"column":0},"end":{"line":67,"column":100}},"67":{"start":{"line":68,"column":0},"end":{"line":68,"column":31}},"68":{"start":{"line":69,"column":0},"end":{"line":69,"column":34}},"69":{"start":{"line":70,"column":0},"end":{"line":70,"column":39}},"70":{"start":{"line":71,"column":0},"end":{"line":71,"column":23}},"71":{"start":{"line":72,"column":0},"end":{"line":72,"column":29}},"72":{"start":{"line":73,"column":0},"end":{"line":73,"column":37}},"73":{"start":{"line":74,"column":0},"end":{"line":74,"column":71}},"74":{"start":{"line":75,"column":0},"end":{"line":75,"column":26}},"75":{"start":{"line":76,"column":0},"end":{"line":76,"column":18}},"76":{"start":{"line":77,"column":0},"end":{"line":77,"column":42}},"77":{"start":{"line":78,"column":0},"end":{"line":78,"column":53}},"78":{"start":{"line":79,"column":0},"end":{"line":79,"column":14}},"79":{"start":{"line":80,"column":0},"end":{"line":80,"column":12}},"80":{"start":{"line":81,"column":0},"end":{"line":81,"column":11}},"81":{"start":{"line":82,"column":0},"end":{"line":82,"column":8}},"82":{"start":{"line":83,"column":0},"end":{"line":83,"column":32}},"83":{"start":{"line":84,"column":0},"end":{"line":84,"column":60}},"84":{"start":{"line":85,"column":0},"end":{"line":85,"column":22}},"85":{"start":{"line":86,"column":0},"end":{"line":86,"column":29}},"86":{"start":{"line":87,"column":0},"end":{"line":87,"column":41}},"87":{"start":{"line":88,"column":0},"end":{"line":88,"column":52}},"88":{"start":{"line":89,"column":0},"end":{"line":89,"column":10}},"89":{"start":{"line":90,"column":0},"end":{"line":90,"column":8}},"90":{"start":{"line":91,"column":0},"end":{"line":91,"column":5}},"91":{"start":{"line":92,"column":0},"end":{"line":92,"column":5}},"92":{"start":{"line":93,"column":0},"end":{"line":93,"column":27}},"93":{"start":{"line":94,"column":0},"end":{"line":94,"column":1}},"94":{"start":{"line":95,"column":0},"end":{"line":95,"column":0}},"95":{"start":{"line":96,"column":0},"end":{"line":96,"column":39}},"96":{"start":{"line":97,"column":0},"end":{"line":97,"column":17}},"97":{"start":{"line":98,"column":0},"end":{"line":98,"column":21}},"98":{"start":{"line":99,"column":0},"end":{"line":99,"column":24}},"99":{"start":{"line":100,"column":0},"end":{"line":100,"column":43}},"100":{"start":{"line":101,"column":0},"end":{"line":101,"column":20}},"101":{"start":{"line":102,"column":0},"end":{"line":102,"column":22}},"102":{"start":{"line":103,"column":0},"end":{"line":103,"column":24}},"103":{"start":{"line":104,"column":0},"end":{"line":104,"column":60}},"104":{"start":{"line":105,"column":0},"end":{"line":105,"column":0}},"105":{"start":{"line":106,"column":0},"end":{"line":106,"column":25}},"106":{"start":{"line":107,"column":0},"end":{"line":107,"column":11}},"107":{"start":{"line":108,"column":0},"end":{"line":108,"column":14}},"108":{"start":{"line":109,"column":0},"end":{"line":109,"column":7}},"109":{"start":{"line":110,"column":0},"end":{"line":110,"column":24}},"110":{"start":{"line":111,"column":0},"end":{"line":111,"column":33}},"111":{"start":{"line":112,"column":0},"end":{"line":112,"column":8}},"112":{"start":{"line":113,"column":0},"end":{"line":113,"column":6}},"113":{"start":{"line":114,"column":0},"end":{"line":114,"column":11}},"114":{"start":{"line":115,"column":0},"end":{"line":115,"column":15}},"115":{"start":{"line":116,"column":0},"end":{"line":116,"column":18}},"116":{"start":{"line":117,"column":0},"end":{"line":117,"column":22}},"117":{"start":{"line":118,"column":0},"end":{"line":118,"column":50}},"118":{"start":{"line":119,"column":0},"end":{"line":119,"column":41}},"119":{"start":{"line":120,"column":0},"end":{"line":120,"column":10}},"120":{"start":{"line":121,"column":0},"end":{"line":121,"column":8}},"121":{"start":{"line":122,"column":0},"end":{"line":122,"column":34}},"122":{"start":{"line":123,"column":0},"end":{"line":123,"column":34}},"123":{"start":{"line":124,"column":0},"end":{"line":124,"column":6}},"124":{"start":{"line":125,"column":0},"end":{"line":125,"column":4}},"125":{"start":{"line":126,"column":0},"end":{"line":126,"column":0}},"126":{"start":{"line":127,"column":0},"end":{"line":127,"column":20}},"127":{"start":{"line":128,"column":0},"end":{"line":128,"column":70}},"128":{"start":{"line":129,"column":0},"end":{"line":129,"column":80}},"129":{"start":{"line":130,"column":0},"end":{"line":130,"column":42}},"130":{"start":{"line":131,"column":0},"end":{"line":131,"column":3}},"131":{"start":{"line":132,"column":0},"end":{"line":132,"column":0}},"132":{"start":{"line":133,"column":0},"end":{"line":133,"column":25}},"133":{"start":{"line":134,"column":0},"end":{"line":134,"column":1}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":175,"26":175,"27":175,"28":3,"29":175,"30":0,"31":175,"32":15,"33":12,"34":3,"35":3,"36":9,"37":9,"38":9,"39":15,"40":3,"41":3,"42":15,"43":175,"44":175,"45":157,"46":175,"47":175,"48":1,"49":154,"50":154,"51":154,"52":154,"53":154,"54":154,"55":154,"56":154,"57":154,"58":1,"59":1,"60":154,"61":154,"62":154,"63":1,"64":1,"65":1,"66":40,"67":40,"68":40,"69":40,"70":77,"71":77,"72":77,"73":154,"74":154,"75":154,"76":154,"77":154,"78":154,"79":154,"80":77,"81":77,"82":77,"83":0,"84":0,"85":0,"86":0,"87":0,"88":0,"89":0,"90":0,"91":40,"92":40,"93":40,"94":1,"95":40,"96":40,"97":40,"98":40,"99":40,"100":40,"101":40,"102":40,"103":40,"104":40,"105":40,"106":40,"107":40,"108":40,"109":40,"110":40,"111":40,"112":40,"113":40,"114":40,"115":40,"116":40,"117":40,"118":40,"119":40,"120":40,"121":40,"122":40,"123":40,"124":40,"125":40,"126":40,"127":40,"128":40,"129":40,"130":40,"131":40,"132":40,"133":40},"branchMap":{"0":{"type":"branch","line":26,"loc":{"start":{"line":26,"column":0},"end":{"line":48,"column":1}},"locations":[{"start":{"line":26,"column":0},"end":{"line":48,"column":1}}]},"1":{"type":"branch","line":28,"loc":{"start":{"line":28,"column":4},"end":{"line":29,"column":25}},"locations":[{"start":{"line":28,"column":4},"end":{"line":29,"column":25}}]},"2":{"type":"branch","line":30,"loc":{"start":{"line":30,"column":4},"end":{"line":31,"column":24}},"locations":[{"start":{"line":30,"column":4},"end":{"line":31,"column":24}}]},"3":{"type":"branch","line":32,"loc":{"start":{"line":32,"column":4},"end":{"line":43,"column":5}},"locations":[{"start":{"line":32,"column":4},"end":{"line":43,"column":5}}]},"4":{"type":"branch","line":33,"loc":{"start":{"line":33,"column":32},"end":{"line":40,"column":13}},"locations":[{"start":{"line":33,"column":32},"end":{"line":40,"column":13}}]},"5":{"type":"branch","line":34,"loc":{"start":{"line":34,"column":27},"end":{"line":36,"column":9}},"locations":[{"start":{"line":34,"column":27},"end":{"line":36,"column":9}}]},"6":{"type":"branch","line":37,"loc":{"start":{"line":37,"column":-1},"end":{"line":40,"column":13}},"locations":[{"start":{"line":37,"column":-1},"end":{"line":40,"column":13}}]},"7":{"type":"branch","line":40,"loc":{"start":{"line":40,"column":7},"end":{"line":42,"column":7}},"locations":[{"start":{"line":40,"column":7},"end":{"line":42,"column":7}}]},"8":{"type":"branch","line":44,"loc":{"start":{"line":44,"column":4},"end":{"line":44,"column":12}},"locations":[{"start":{"line":44,"column":4},"end":{"line":44,"column":12}}]},"9":{"type":"branch","line":45,"loc":{"start":{"line":45,"column":4},"end":{"line":46,"column":23}},"locations":[{"start":{"line":45,"column":4},"end":{"line":46,"column":23}}]},"10":{"type":"branch","line":50,"loc":{"start":{"line":50,"column":0},"end":{"line":58,"column":1}},"locations":[{"start":{"line":50,"column":0},"end":{"line":58,"column":1}}]},"11":{"type":"branch","line":51,"loc":{"start":{"line":51,"column":46},"end":{"line":51,"column":54}},"locations":[{"start":{"line":51,"column":46},"end":{"line":51,"column":54}}]},"12":{"type":"branch","line":61,"loc":{"start":{"line":61,"column":0},"end":{"line":63,"column":1}},"locations":[{"start":{"line":61,"column":0},"end":{"line":63,"column":1}}]},"13":{"type":"branch","line":67,"loc":{"start":{"line":67,"column":0},"end":{"line":94,"column":1}},"locations":[{"start":{"line":67,"column":0},"end":{"line":94,"column":1}}]},"14":{"type":"branch","line":70,"loc":{"start":{"line":70,"column":21},"end":{"line":92,"column":3}},"locations":[{"start":{"line":70,"column":21},"end":{"line":92,"column":3}}]},"15":{"type":"branch","line":83,"loc":{"start":{"line":83,"column":5},"end":{"line":91,"column":5}},"locations":[{"start":{"line":83,"column":5},"end":{"line":91,"column":5}}]},"16":{"type":"branch","line":73,"loc":{"start":{"line":73,"column":19},"end":{"line":81,"column":9}},"locations":[{"start":{"line":73,"column":19},"end":{"line":81,"column":9}}]},"17":{"type":"branch","line":96,"loc":{"start":{"line":96,"column":0},"end":{"line":134,"column":1}},"locations":[{"start":{"line":96,"column":0},"end":{"line":134,"column":1}}]}},"b":{"0":[175],"1":[3],"2":[0],"3":[15],"4":[12],"5":[3],"6":[9],"7":[3],"8":[0],"9":[157],"10":[154],"11":[0],"12":[154],"13":[40],"14":[77],"15":[0],"16":[154],"17":[40]},"fnMap":{"0":{"name":"getGqlType","decl":{"start":{"line":26,"column":0},"end":{"line":48,"column":1}},"loc":{"start":{"line":26,"column":0},"end":{"line":48,"column":1}},"line":26},"1":{"name":"extractVar","decl":{"start":{"line":50,"column":0},"end":{"line":58,"column":1}},"loc":{"start":{"line":50,"column":0},"end":{"line":58,"column":1}},"line":50},"2":{"name":"sanitizeArgField","decl":{"start":{"line":61,"column":0},"end":{"line":63,"column":1}},"loc":{"start":{"line":61,"column":0},"end":{"line":63,"column":1}},"line":61},"3":{"name":"extractVars","decl":{"start":{"line":67,"column":0},"end":{"line":94,"column":1}},"loc":{"start":{"line":67,"column":0},"end":{"line":94,"column":1}},"line":67},"4":{"name":"buildDictQueryFragment","decl":{"start":{"line":96,"column":0},"end":{"line":134,"column":1}},"loc":{"start":{"line":96,"column":0},"end":{"line":134,"column":1}},"line":96}},"f":{"0":175,"1":154,"2":154,"3":40,"4":40}},"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/indexer/dictionary/v2/dictionaryV2.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/indexer/dictionary/v2/dictionaryV2.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":52}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":41}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":43}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":34}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":46}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":42}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":35}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":49}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":44}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":115}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":0}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":28}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":49}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":59}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":42}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":0}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":33}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":22}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":62}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":47}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":29}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":18}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":2}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":0}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":45}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":19}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":31}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":34}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":23}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":34}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":24}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":7}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":3}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":0}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":23}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":19}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":30}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":10}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":4}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":0}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":45}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":38}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":44}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":29}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":14}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":41}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":6}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":5}},"51":{"start":{"line":52,"column":0},"end":{"line":52,"column":0}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":31}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":68}},"54":{"start":{"line":55,"column":0},"end":{"line":55,"column":3}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":0}},"56":{"start":{"line":57,"column":0},"end":{"line":57,"column":28}},"57":{"start":{"line":58,"column":0},"end":{"line":58,"column":49}},"58":{"start":{"line":59,"column":0},"end":{"line":59,"column":3}},"59":{"start":{"line":60,"column":0},"end":{"line":60,"column":0}},"60":{"start":{"line":61,"column":0},"end":{"line":61,"column":33}},"61":{"start":{"line":62,"column":0},"end":{"line":62,"column":0}},"62":{"start":{"line":63,"column":0},"end":{"line":63,"column":16}},"63":{"start":{"line":64,"column":0},"end":{"line":64,"column":42}},"64":{"start":{"line":65,"column":0},"end":{"line":65,"column":3}},"65":{"start":{"line":66,"column":0},"end":{"line":66,"column":0}},"66":{"start":{"line":67,"column":0},"end":{"line":67,"column":42}},"67":{"start":{"line":68,"column":0},"end":{"line":68,"column":49}},"68":{"start":{"line":69,"column":0},"end":{"line":69,"column":45}},"69":{"start":{"line":70,"column":0},"end":{"line":70,"column":36}},"70":{"start":{"line":71,"column":0},"end":{"line":71,"column":28}},"71":{"start":{"line":72,"column":0},"end":{"line":72,"column":41}},"72":{"start":{"line":73,"column":0},"end":{"line":73,"column":28}},"73":{"start":{"line":74,"column":0},"end":{"line":74,"column":4}},"74":{"start":{"line":75,"column":0},"end":{"line":75,"column":18}},"75":{"start":{"line":76,"column":0},"end":{"line":76,"column":1}},"76":{"start":{"line":77,"column":0},"end":{"line":77,"column":0}},"77":{"start":{"line":78,"column":0},"end":{"line":78,"column":35}},"78":{"start":{"line":79,"column":0},"end":{"line":79,"column":5}},"79":{"start":{"line":80,"column":0},"end":{"line":80,"column":5}},"80":{"start":{"line":81,"column":0},"end":{"line":81,"column":60}},"81":{"start":{"line":82,"column":0},"end":{"line":82,"column":60}},"82":{"start":{"line":83,"column":0},"end":{"line":83,"column":41}},"83":{"start":{"line":84,"column":0},"end":{"line":84,"column":0}},"84":{"start":{"line":85,"column":0},"end":{"line":85,"column":14}},"85":{"start":{"line":86,"column":0},"end":{"line":86,"column":40}},"86":{"start":{"line":87,"column":0},"end":{"line":87,"column":30}},"87":{"start":{"line":88,"column":0},"end":{"line":88,"column":46}},"88":{"start":{"line":89,"column":0},"end":{"line":89,"column":50}},"89":{"start":{"line":90,"column":0},"end":{"line":90,"column":5}},"90":{"start":{"line":91,"column":0},"end":{"line":91,"column":65}},"91":{"start":{"line":92,"column":0},"end":{"line":92,"column":39}},"92":{"start":{"line":93,"column":0},"end":{"line":93,"column":34}},"93":{"start":{"line":94,"column":0},"end":{"line":94,"column":7}},"94":{"start":{"line":95,"column":0},"end":{"line":95,"column":3}},"95":{"start":{"line":96,"column":0},"end":{"line":96,"column":0}},"96":{"start":{"line":97,"column":0},"end":{"line":97,"column":72}},"97":{"start":{"line":98,"column":0},"end":{"line":98,"column":0}},"98":{"start":{"line":99,"column":0},"end":{"line":99,"column":41}},"99":{"start":{"line":100,"column":0},"end":{"line":100,"column":82}},"100":{"start":{"line":101,"column":0},"end":{"line":101,"column":56}},"101":{"start":{"line":102,"column":0},"end":{"line":102,"column":3}},"102":{"start":{"line":103,"column":0},"end":{"line":103,"column":0}},"103":{"start":{"line":104,"column":0},"end":{"line":104,"column":83}},"104":{"start":{"line":105,"column":0},"end":{"line":105,"column":58}},"105":{"start":{"line":106,"column":0},"end":{"line":106,"column":3}},"106":{"start":{"line":107,"column":0},"end":{"line":107,"column":0}},"107":{"start":{"line":108,"column":0},"end":{"line":108,"column":48}},"108":{"start":{"line":109,"column":0},"end":{"line":109,"column":42}},"109":{"start":{"line":110,"column":0},"end":{"line":110,"column":48}},"110":{"start":{"line":111,"column":0},"end":{"line":111,"column":0}},"111":{"start":{"line":112,"column":0},"end":{"line":112,"column":21}},"112":{"start":{"line":113,"column":0},"end":{"line":113,"column":23}},"113":{"start":{"line":114,"column":0},"end":{"line":114,"column":21}},"114":{"start":{"line":115,"column":0},"end":{"line":115,"column":36}},"115":{"start":{"line":116,"column":0},"end":{"line":116,"column":32}},"116":{"start":{"line":117,"column":0},"end":{"line":117,"column":67}},"117":{"start":{"line":118,"column":0},"end":{"line":118,"column":86}},"118":{"start":{"line":119,"column":0},"end":{"line":119,"column":22}},"119":{"start":{"line":120,"column":0},"end":{"line":120,"column":23}},"120":{"start":{"line":121,"column":0},"end":{"line":121,"column":5}},"121":{"start":{"line":122,"column":0},"end":{"line":122,"column":0}},"122":{"start":{"line":123,"column":0},"end":{"line":123,"column":18}},"123":{"start":{"line":124,"column":0},"end":{"line":124,"column":0}},"124":{"start":{"line":125,"column":0},"end":{"line":125,"column":25}},"125":{"start":{"line":126,"column":0},"end":{"line":126,"column":21}},"126":{"start":{"line":127,"column":0},"end":{"line":127,"column":34}},"127":{"start":{"line":128,"column":0},"end":{"line":128,"column":12}},"128":{"start":{"line":129,"column":0},"end":{"line":129,"column":15}},"129":{"start":{"line":130,"column":0},"end":{"line":130,"column":9}},"130":{"start":{"line":131,"column":0},"end":{"line":131,"column":45}},"131":{"start":{"line":132,"column":0},"end":{"line":132,"column":46}},"132":{"start":{"line":133,"column":0},"end":{"line":133,"column":36}},"133":{"start":{"line":134,"column":0},"end":{"line":134,"column":34}},"134":{"start":{"line":135,"column":0},"end":{"line":135,"column":24}},"135":{"start":{"line":136,"column":0},"end":{"line":136,"column":10}},"136":{"start":{"line":137,"column":0},"end":{"line":137,"column":8}},"137":{"start":{"line":138,"column":0},"end":{"line":138,"column":6}},"138":{"start":{"line":139,"column":0},"end":{"line":139,"column":9}},"139":{"start":{"line":140,"column":0},"end":{"line":140,"column":54}},"140":{"start":{"line":141,"column":0},"end":{"line":141,"column":48}},"141":{"start":{"line":142,"column":0},"end":{"line":142,"column":48}},"142":{"start":{"line":143,"column":0},"end":{"line":143,"column":48}},"143":{"start":{"line":144,"column":0},"end":{"line":144,"column":18}},"144":{"start":{"line":145,"column":0},"end":{"line":145,"column":45}},"145":{"start":{"line":146,"column":0},"end":{"line":146,"column":10}},"146":{"start":{"line":147,"column":0},"end":{"line":147,"column":9}},"147":{"start":{"line":148,"column":0},"end":{"line":148,"column":32}},"148":{"start":{"line":149,"column":0},"end":{"line":149,"column":53}},"149":{"start":{"line":150,"column":0},"end":{"line":150,"column":7}},"150":{"start":{"line":151,"column":0},"end":{"line":151,"column":34}},"151":{"start":{"line":152,"column":0},"end":{"line":152,"column":25}},"152":{"start":{"line":153,"column":0},"end":{"line":153,"column":7}},"153":{"start":{"line":154,"column":0},"end":{"line":154,"column":70}},"154":{"start":{"line":155,"column":0},"end":{"line":155,"column":63}},"155":{"start":{"line":156,"column":0},"end":{"line":156,"column":70}},"156":{"start":{"line":157,"column":0},"end":{"line":157,"column":7}},"157":{"start":{"line":158,"column":0},"end":{"line":158,"column":61}},"158":{"start":{"line":159,"column":0},"end":{"line":159,"column":20}},"159":{"start":{"line":160,"column":0},"end":{"line":160,"column":26}},"160":{"start":{"line":161,"column":0},"end":{"line":161,"column":103}},"161":{"start":{"line":162,"column":0},"end":{"line":162,"column":35}},"162":{"start":{"line":163,"column":0},"end":{"line":163,"column":67}},"163":{"start":{"line":164,"column":0},"end":{"line":164,"column":5}},"164":{"start":{"line":165,"column":0},"end":{"line":165,"column":3}},"165":{"start":{"line":166,"column":0},"end":{"line":166,"column":0}},"166":{"start":{"line":167,"column":0},"end":{"line":167,"column":50}},"167":{"start":{"line":168,"column":0},"end":{"line":168,"column":110}},"168":{"start":{"line":169,"column":0},"end":{"line":169,"column":92}},"169":{"start":{"line":170,"column":0},"end":{"line":170,"column":9}},"170":{"start":{"line":171,"column":0},"end":{"line":171,"column":44}},"171":{"start":{"line":172,"column":0},"end":{"line":172,"column":17}},"172":{"start":{"line":173,"column":0},"end":{"line":173,"column":19}},"173":{"start":{"line":174,"column":0},"end":{"line":174,"column":5}},"174":{"start":{"line":175,"column":0},"end":{"line":175,"column":3}},"175":{"start":{"line":176,"column":0},"end":{"line":176,"column":0}},"176":{"start":{"line":177,"column":0},"end":{"line":177,"column":103}},"177":{"start":{"line":178,"column":0},"end":{"line":178,"column":67}},"178":{"start":{"line":179,"column":0},"end":{"line":179,"column":19}},"179":{"start":{"line":180,"column":0},"end":{"line":180,"column":5}},"180":{"start":{"line":181,"column":0},"end":{"line":181,"column":24}},"181":{"start":{"line":182,"column":0},"end":{"line":182,"column":41}},"182":{"start":{"line":183,"column":0},"end":{"line":183,"column":48}},"183":{"start":{"line":184,"column":0},"end":{"line":184,"column":43}},"184":{"start":{"line":185,"column":0},"end":{"line":185,"column":30}},"185":{"start":{"line":186,"column":0},"end":{"line":186,"column":3}},"186":{"start":{"line":187,"column":0},"end":{"line":187,"column":0}},"187":{"start":{"line":188,"column":0},"end":{"line":188,"column":72}},"188":{"start":{"line":189,"column":0},"end":{"line":189,"column":86}},"189":{"start":{"line":190,"column":0},"end":{"line":190,"column":3}},"190":{"start":{"line":191,"column":0},"end":{"line":191,"column":1}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":3,"28":3,"29":3,"30":3,"31":3,"32":3,"33":3,"34":3,"35":3,"36":3,"37":3,"38":3,"39":3,"40":3,"41":3,"42":3,"43":3,"44":3,"45":3,"46":3,"47":3,"48":3,"49":3,"50":3,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"59":0,"60":0,"61":0,"62":0,"63":0,"64":0,"65":0,"66":0,"67":0,"68":0,"69":0,"70":0,"71":0,"72":0,"73":0,"74":0,"75":0,"76":1,"77":1,"78":1,"79":1,"80":1,"81":1,"82":1,"83":1,"84":1,"85":11,"86":11,"87":11,"88":11,"89":11,"90":11,"91":11,"92":11,"93":11,"94":11,"95":1,"96":1,"97":1,"98":1,"99":3,"100":0,"101":0,"102":1,"103":1,"104":4,"105":4,"106":1,"107":1,"108":1,"109":1,"110":1,"111":1,"112":6,"113":6,"114":6,"115":6,"116":6,"117":6,"118":6,"119":0,"120":0,"121":6,"122":6,"123":6,"124":6,"125":6,"126":6,"127":6,"128":6,"129":6,"130":6,"131":6,"132":6,"133":6,"134":6,"135":6,"136":6,"137":6,"138":6,"139":6,"140":6,"141":6,"142":6,"143":6,"144":6,"145":6,"146":6,"147":6,"148":0,"149":0,"150":6,"151":0,"152":0,"153":4,"154":6,"155":2,"156":2,"157":4,"158":4,"159":6,"160":2,"161":2,"162":2,"163":2,"164":6,"165":1,"166":1,"167":4,"168":4,"169":4,"170":4,"171":4,"172":2,"173":2,"174":4,"175":1,"176":1,"177":1,"178":0,"179":0,"180":1,"181":1,"182":1,"183":1,"184":1,"185":1,"186":1,"187":1,"188":1,"189":1,"190":1},"branchMap":{"0":{"type":"branch","line":28,"loc":{"start":{"line":28,"column":0},"end":{"line":76,"column":1}},"locations":[{"start":{"line":28,"column":0},"end":{"line":76,"column":1}}]},"1":{"type":"branch","line":52,"loc":{"start":{"line":52,"column":-1},"end":{"line":76,"column":1}},"locations":[{"start":{"line":52,"column":-1},"end":{"line":76,"column":1}}]},"2":{"type":"branch","line":85,"loc":{"start":{"line":85,"column":2},"end":{"line":95,"column":3}},"locations":[{"start":{"line":85,"column":2},"end":{"line":95,"column":3}}]},"3":{"type":"branch","line":99,"loc":{"start":{"line":99,"column":12},"end":{"line":102,"column":3}},"locations":[{"start":{"line":99,"column":12},"end":{"line":102,"column":3}}]},"4":{"type":"branch","line":101,"loc":{"start":{"line":101,"column":-1},"end":{"line":102,"column":3}},"locations":[{"start":{"line":101,"column":-1},"end":{"line":102,"column":3}}]},"5":{"type":"branch","line":104,"loc":{"start":{"line":104,"column":2},"end":{"line":106,"column":3}},"locations":[{"start":{"line":104,"column":2},"end":{"line":106,"column":3}}]},"6":{"type":"branch","line":112,"loc":{"start":{"line":112,"column":2},"end":{"line":165,"column":3}},"locations":[{"start":{"line":112,"column":2},"end":{"line":165,"column":3}}]},"7":{"type":"branch","line":119,"loc":{"start":{"line":119,"column":21},"end":{"line":121,"column":5}},"locations":[{"start":{"line":119,"column":21},"end":{"line":121,"column":5}}]},"8":{"type":"branch","line":148,"loc":{"start":{"line":148,"column":-1},"end":{"line":148,"column":31}},"locations":[{"start":{"line":148,"column":-1},"end":{"line":148,"column":31}}]},"9":{"type":"branch","line":148,"loc":{"start":{"line":148,"column":31},"end":{"line":150,"column":7}},"locations":[{"start":{"line":148,"column":31},"end":{"line":150,"column":7}}]},"10":{"type":"branch","line":151,"loc":{"start":{"line":151,"column":-1},"end":{"line":151,"column":33}},"locations":[{"start":{"line":151,"column":-1},"end":{"line":151,"column":33}}]},"11":{"type":"branch","line":151,"loc":{"start":{"line":151,"column":33},"end":{"line":153,"column":7}},"locations":[{"start":{"line":151,"column":33},"end":{"line":153,"column":7}}]},"12":{"type":"branch","line":154,"loc":{"start":{"line":154,"column":-1},"end":{"line":155,"column":60}},"locations":[{"start":{"line":154,"column":-1},"end":{"line":155,"column":60}}]},"13":{"type":"branch","line":155,"loc":{"start":{"line":155,"column":62},"end":{"line":157,"column":7}},"locations":[{"start":{"line":155,"column":62},"end":{"line":157,"column":7}}]},"14":{"type":"branch","line":158,"loc":{"start":{"line":158,"column":-1},"end":{"line":160,"column":13}},"locations":[{"start":{"line":158,"column":-1},"end":{"line":160,"column":13}}]},"15":{"type":"branch","line":160,"loc":{"start":{"line":160,"column":6},"end":{"line":164,"column":5}},"locations":[{"start":{"line":160,"column":6},"end":{"line":164,"column":5}}]},"16":{"type":"branch","line":167,"loc":{"start":{"line":167,"column":2},"end":{"line":175,"column":3}},"locations":[{"start":{"line":167,"column":2},"end":{"line":175,"column":3}}]},"17":{"type":"branch","line":172,"loc":{"start":{"line":172,"column":6},"end":{"line":174,"column":5}},"locations":[{"start":{"line":172,"column":6},"end":{"line":174,"column":5}}]},"18":{"type":"branch","line":177,"loc":{"start":{"line":177,"column":12},"end":{"line":186,"column":3}},"locations":[{"start":{"line":177,"column":12},"end":{"line":186,"column":3}}]},"19":{"type":"branch","line":178,"loc":{"start":{"line":178,"column":66},"end":{"line":180,"column":5}},"locations":[{"start":{"line":178,"column":66},"end":{"line":180,"column":5}}]},"20":{"type":"branch","line":182,"loc":{"start":{"line":182,"column":38},"end":{"line":183,"column":45}},"locations":[{"start":{"line":182,"column":38},"end":{"line":183,"column":45}}]},"21":{"type":"branch","line":183,"loc":{"start":{"line":183,"column":45},"end":{"line":184,"column":42}},"locations":[{"start":{"line":183,"column":45},"end":{"line":184,"column":42}}]},"22":{"type":"branch","line":188,"loc":{"start":{"line":188,"column":12},"end":{"line":190,"column":3}},"locations":[{"start":{"line":188,"column":12},"end":{"line":190,"column":3}}]}},"b":{"0":[3],"1":[0],"2":[11],"3":[3],"4":[0],"5":[4],"6":[6],"7":[0],"8":[4],"9":[0],"10":[4],"11":[0],"12":[4],"13":[2],"14":[4],"15":[2],"16":[4],"17":[2],"18":[1],"19":[0],"20":[0],"21":[0],"22":[1]},"fnMap":{"0":{"name":"subqlFilterBlocksCapabilities","decl":{"start":{"line":28,"column":0},"end":{"line":76,"column":1}},"loc":{"start":{"line":28,"column":0},"end":{"line":76,"column":1}},"line":28},"1":{"name":"DictionaryV2","decl":{"start":{"line":85,"column":2},"end":{"line":95,"column":3}},"loc":{"start":{"line":85,"column":2},"end":{"line":95,"column":3}},"line":85},"2":{"name":"init","decl":{"start":{"line":99,"column":12},"end":{"line":102,"column":3}},"loc":{"start":{"line":99,"column":12},"end":{"line":102,"column":3}},"line":99},"3":{"name":"getQueryEndBlock","decl":{"start":{"line":104,"column":2},"end":{"line":106,"column":3}},"loc":{"start":{"line":104,"column":2},"end":{"line":106,"column":3}},"line":104},"4":{"name":"getData","decl":{"start":{"line":112,"column":2},"end":{"line":165,"column":3}},"loc":{"start":{"line":112,"column":2},"end":{"line":165,"column":3}},"line":112},"5":{"name":"queryMapValidByHeight","decl":{"start":{"line":167,"column":2},"end":{"line":175,"column":3}},"loc":{"start":{"line":167,"column":2},"end":{"line":175,"column":3}},"line":167},"6":{"name":"dictionaryValidation","decl":{"start":{"line":177,"column":12},"end":{"line":186,"column":3}},"loc":{"start":{"line":177,"column":12},"end":{"line":186,"column":3}},"line":177},"7":{"name":"validateChainMeta","decl":{"start":{"line":188,"column":12},"end":{"line":190,"column":3}},"loc":{"start":{"line":188,"column":12},"end":{"line":190,"column":3}},"line":188}},"f":{"0":3,"1":11,"2":3,"3":4,"4":6,"5":4,"6":1,"7":1}},"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/indexer/dictionary/v2/index.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/indexer/dictionary/v2/index.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":24}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":31}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1},"branchMap":{},"b":{},"fnMap":{},"f":{}},"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/indexer/dictionary/v2/types.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/indexer/dictionary/v2/types.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":36}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":26}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":1}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":0}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":32}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":41}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":1}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":0}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":49}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":33}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":23}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":22}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":1}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":0}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":39}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":16}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":14}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":22}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":18}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":29}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":22}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":1}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":0}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":60}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1},"branchMap":{},"b":{},"fnMap":{},"f":{}},"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/indexer/ds-processor.service.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/indexer/ds-processor.service.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":20}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":24}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":38}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":107}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":29}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":40}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":36}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":49}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":41}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":0}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":39}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":0}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":42}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":77}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":10}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":13}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":113}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":16}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":6}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":34}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":3}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":0}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":20}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":33}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":3}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":1}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":0}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":31}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":4}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":45}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":67}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":2}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":10}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":35}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":36}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":15}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":18}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":24}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":6}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":24}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":63}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":3}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":43}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":43}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":7}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":19}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":33}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":25}},"51":{"start":{"line":52,"column":0},"end":{"line":52,"column":8}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":16}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":6}},"54":{"start":{"line":55,"column":0},"end":{"line":55,"column":9}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":64}},"56":{"start":{"line":57,"column":0},"end":{"line":57,"column":22}},"57":{"start":{"line":58,"column":0},"end":{"line":58,"column":54}},"58":{"start":{"line":59,"column":0},"end":{"line":59,"column":14}},"59":{"start":{"line":60,"column":0},"end":{"line":60,"column":5}},"60":{"start":{"line":61,"column":0},"end":{"line":61,"column":3}},"61":{"start":{"line":62,"column":0},"end":{"line":62,"column":59}},"62":{"start":{"line":63,"column":0},"end":{"line":63,"column":1}},"63":{"start":{"line":64,"column":0},"end":{"line":64,"column":0}},"64":{"start":{"line":65,"column":0},"end":{"line":65,"column":45}},"65":{"start":{"line":66,"column":0},"end":{"line":66,"column":45}},"66":{"start":{"line":67,"column":0},"end":{"line":67,"column":68}},"67":{"start":{"line":68,"column":0},"end":{"line":68,"column":47}},"68":{"start":{"line":69,"column":0},"end":{"line":69,"column":3}},"69":{"start":{"line":70,"column":0},"end":{"line":70,"column":49}},"70":{"start":{"line":71,"column":0},"end":{"line":71,"column":0}},"71":{"start":{"line":72,"column":0},"end":{"line":72,"column":51}},"72":{"start":{"line":73,"column":0},"end":{"line":73,"column":0}},"73":{"start":{"line":74,"column":0},"end":{"line":74,"column":14}},"74":{"start":{"line":75,"column":0},"end":{"line":75,"column":102}},"75":{"start":{"line":76,"column":0},"end":{"line":76,"column":43}},"76":{"start":{"line":77,"column":0},"end":{"line":77,"column":6}},"77":{"start":{"line":78,"column":0},"end":{"line":78,"column":0}},"78":{"start":{"line":79,"column":0},"end":{"line":79,"column":61}},"79":{"start":{"line":80,"column":0},"end":{"line":80,"column":35}},"80":{"start":{"line":81,"column":0},"end":{"line":81,"column":48}},"81":{"start":{"line":82,"column":0},"end":{"line":82,"column":74}},"82":{"start":{"line":83,"column":0},"end":{"line":83,"column":39}},"83":{"start":{"line":84,"column":0},"end":{"line":84,"column":91}},"84":{"start":{"line":85,"column":0},"end":{"line":85,"column":7}},"85":{"start":{"line":86,"column":0},"end":{"line":86,"column":0}},"86":{"start":{"line":87,"column":0},"end":{"line":87,"column":50}},"87":{"start":{"line":88,"column":0},"end":{"line":88,"column":61}},"88":{"start":{"line":89,"column":0},"end":{"line":89,"column":119}},"89":{"start":{"line":90,"column":0},"end":{"line":90,"column":9}},"90":{"start":{"line":91,"column":0},"end":{"line":91,"column":7}},"91":{"start":{"line":92,"column":0},"end":{"line":92,"column":0}},"92":{"start":{"line":93,"column":0},"end":{"line":93,"column":118}},"93":{"start":{"line":94,"column":0},"end":{"line":94,"column":0}},"94":{"start":{"line":95,"column":0},"end":{"line":95,"column":52}},"95":{"start":{"line":96,"column":0},"end":{"line":96,"column":55}},"96":{"start":{"line":97,"column":0},"end":{"line":97,"column":5}},"97":{"start":{"line":98,"column":0},"end":{"line":98,"column":3}},"98":{"start":{"line":99,"column":0},"end":{"line":99,"column":0}},"99":{"start":{"line":100,"column":0},"end":{"line":100,"column":76}},"100":{"start":{"line":101,"column":0},"end":{"line":101,"column":101}},"101":{"start":{"line":102,"column":0},"end":{"line":102,"column":3}},"102":{"start":{"line":103,"column":0},"end":{"line":103,"column":0}},"103":{"start":{"line":104,"column":0},"end":{"line":104,"column":30}},"104":{"start":{"line":105,"column":0},"end":{"line":105,"column":31}},"105":{"start":{"line":106,"column":0},"end":{"line":106,"column":65}},"106":{"start":{"line":107,"column":0},"end":{"line":107,"column":5}},"107":{"start":{"line":108,"column":0},"end":{"line":108,"column":50}},"108":{"start":{"line":109,"column":0},"end":{"line":109,"column":45}},"109":{"start":{"line":110,"column":0},"end":{"line":110,"column":9}},"110":{"start":{"line":111,"column":0},"end":{"line":111,"column":34}},"111":{"start":{"line":112,"column":0},"end":{"line":112,"column":35}},"112":{"start":{"line":113,"column":0},"end":{"line":113,"column":48}},"113":{"start":{"line":114,"column":0},"end":{"line":114,"column":10}},"114":{"start":{"line":115,"column":0},"end":{"line":115,"column":23}},"115":{"start":{"line":116,"column":0},"end":{"line":116,"column":8}},"116":{"start":{"line":117,"column":0},"end":{"line":117,"column":11}},"117":{"start":{"line":118,"column":0},"end":{"line":118,"column":71}},"118":{"start":{"line":119,"column":0},"end":{"line":119,"column":24}},"119":{"start":{"line":120,"column":0},"end":{"line":120,"column":56}},"120":{"start":{"line":121,"column":0},"end":{"line":121,"column":16}},"121":{"start":{"line":122,"column":0},"end":{"line":122,"column":7}},"122":{"start":{"line":123,"column":0},"end":{"line":123,"column":5}},"123":{"start":{"line":124,"column":0},"end":{"line":124,"column":66}},"124":{"start":{"line":125,"column":0},"end":{"line":125,"column":3}},"125":{"start":{"line":126,"column":0},"end":{"line":126,"column":0}},"126":{"start":{"line":127,"column":0},"end":{"line":127,"column":62}},"127":{"start":{"line":128,"column":0},"end":{"line":128,"column":61}},"128":{"start":{"line":129,"column":0},"end":{"line":129,"column":31}},"129":{"start":{"line":130,"column":0},"end":{"line":130,"column":65}},"130":{"start":{"line":131,"column":0},"end":{"line":131,"column":5}},"131":{"start":{"line":132,"column":0},"end":{"line":132,"column":0}},"132":{"start":{"line":133,"column":0},"end":{"line":133,"column":21}},"133":{"start":{"line":134,"column":0},"end":{"line":134,"column":16}},"134":{"start":{"line":135,"column":0},"end":{"line":135,"column":5}},"135":{"start":{"line":136,"column":0},"end":{"line":136,"column":0}},"136":{"start":{"line":137,"column":0},"end":{"line":137,"column":43}},"137":{"start":{"line":138,"column":0},"end":{"line":138,"column":0}},"138":{"start":{"line":139,"column":0},"end":{"line":139,"column":45}},"139":{"start":{"line":140,"column":0},"end":{"line":140,"column":68}},"140":{"start":{"line":141,"column":0},"end":{"line":141,"column":11}},"141":{"start":{"line":142,"column":0},"end":{"line":142,"column":43}},"142":{"start":{"line":143,"column":0},"end":{"line":143,"column":27}},"143":{"start":{"line":144,"column":0},"end":{"line":144,"column":11}},"144":{"start":{"line":145,"column":0},"end":{"line":145,"column":19}},"145":{"start":{"line":146,"column":0},"end":{"line":146,"column":64}},"146":{"start":{"line":147,"column":0},"end":{"line":147,"column":16}},"147":{"start":{"line":148,"column":0},"end":{"line":148,"column":7}},"148":{"start":{"line":149,"column":0},"end":{"line":149,"column":5}},"149":{"start":{"line":150,"column":0},"end":{"line":150,"column":0}},"150":{"start":{"line":151,"column":0},"end":{"line":151,"column":15}},"151":{"start":{"line":152,"column":0},"end":{"line":152,"column":3}},"152":{"start":{"line":153,"column":0},"end":{"line":153,"column":1}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":4,"18":4,"19":4,"20":4,"21":4,"22":4,"23":4,"24":1,"25":1,"26":4,"27":4,"28":1,"29":1,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"59":0,"60":0,"61":0,"62":0,"63":1,"64":1,"65":1,"66":1,"67":1,"68":1,"69":1,"70":1,"71":1,"72":1,"73":1,"74":8,"75":8,"76":8,"77":1,"78":1,"79":7,"80":3,"81":3,"82":3,"83":0,"84":0,"85":2,"86":2,"87":2,"88":0,"89":0,"90":2,"91":2,"92":2,"93":2,"94":2,"95":2,"96":2,"97":6,"98":1,"99":1,"100":7,"101":6,"102":1,"103":1,"104":4,"105":0,"106":0,"107":4,"108":4,"109":4,"110":4,"111":4,"112":4,"113":4,"114":4,"115":4,"116":4,"117":4,"118":4,"119":1,"120":1,"121":1,"122":4,"123":3,"124":3,"125":1,"126":1,"127":1,"128":2,"129":0,"130":0,"131":2,"132":2,"133":2,"134":2,"135":0,"136":0,"137":0,"138":0,"139":0,"140":0,"141":0,"142":0,"143":0,"144":0,"145":0,"146":0,"147":0,"148":0,"149":0,"150":0,"151":0,"152":1},"branchMap":{"0":{"type":"branch","line":17,"loc":{"start":{"line":17,"column":2},"end":{"line":24,"column":3}},"locations":[{"start":{"line":17,"column":2},"end":{"line":24,"column":3}}]},"1":{"type":"branch","line":26,"loc":{"start":{"line":26,"column":2},"end":{"line":28,"column":3}},"locations":[{"start":{"line":26,"column":2},"end":{"line":28,"column":3}}]},"2":{"type":"branch","line":74,"loc":{"start":{"line":74,"column":2},"end":{"line":77,"column":6}},"locations":[{"start":{"line":74,"column":2},"end":{"line":77,"column":6}}]},"3":{"type":"branch","line":79,"loc":{"start":{"line":79,"column":2},"end":{"line":98,"column":3}},"locations":[{"start":{"line":79,"column":2},"end":{"line":98,"column":3}}]},"4":{"type":"branch","line":80,"loc":{"start":{"line":80,"column":34},"end":{"line":97,"column":5}},"locations":[{"start":{"line":80,"column":34},"end":{"line":97,"column":5}}]},"5":{"type":"branch","line":83,"loc":{"start":{"line":83,"column":38},"end":{"line":85,"column":7}},"locations":[{"start":{"line":83,"column":38},"end":{"line":85,"column":7}}]},"6":{"type":"branch","line":86,"loc":{"start":{"line":86,"column":-1},"end":{"line":97,"column":5}},"locations":[{"start":{"line":86,"column":-1},"end":{"line":97,"column":5}}]},"7":{"type":"branch","line":88,"loc":{"start":{"line":88,"column":60},"end":{"line":90,"column":9}},"locations":[{"start":{"line":88,"column":60},"end":{"line":90,"column":9}}]},"8":{"type":"branch","line":98,"loc":{"start":{"line":98,"column":-1},"end":{"line":98,"column":3}},"locations":[{"start":{"line":98,"column":-1},"end":{"line":98,"column":3}}]},"9":{"type":"branch","line":93,"loc":{"start":{"line":93,"column":30},"end":{"line":93,"column":116}},"locations":[{"start":{"line":93,"column":30},"end":{"line":93,"column":116}}]},"10":{"type":"branch","line":100,"loc":{"start":{"line":100,"column":2},"end":{"line":102,"column":3}},"locations":[{"start":{"line":100,"column":2},"end":{"line":102,"column":3}}]},"11":{"type":"branch","line":102,"loc":{"start":{"line":102,"column":-1},"end":{"line":102,"column":3}},"locations":[{"start":{"line":102,"column":-1},"end":{"line":102,"column":3}}]},"12":{"type":"branch","line":101,"loc":{"start":{"line":101,"column":51},"end":{"line":101,"column":78}},"locations":[{"start":{"line":101,"column":51},"end":{"line":101,"column":78}}]},"13":{"type":"branch","line":104,"loc":{"start":{"line":104,"column":2},"end":{"line":125,"column":3}},"locations":[{"start":{"line":104,"column":2},"end":{"line":125,"column":3}}]},"14":{"type":"branch","line":105,"loc":{"start":{"line":105,"column":30},"end":{"line":107,"column":5}},"locations":[{"start":{"line":105,"column":30},"end":{"line":107,"column":5}}]},"15":{"type":"branch","line":119,"loc":{"start":{"line":119,"column":8},"end":{"line":122,"column":7}},"locations":[{"start":{"line":119,"column":8},"end":{"line":122,"column":7}}]},"16":{"type":"branch","line":124,"loc":{"start":{"line":124,"column":-1},"end":{"line":125,"column":3}},"locations":[{"start":{"line":124,"column":-1},"end":{"line":125,"column":3}}]},"17":{"type":"branch","line":128,"loc":{"start":{"line":128,"column":2},"end":{"line":152,"column":3}},"locations":[{"start":{"line":128,"column":2},"end":{"line":152,"column":3}}]},"18":{"type":"branch","line":129,"loc":{"start":{"line":129,"column":30},"end":{"line":131,"column":5}},"locations":[{"start":{"line":129,"column":30},"end":{"line":131,"column":5}}]},"19":{"type":"branch","line":136,"loc":{"start":{"line":136,"column":-1},"end":{"line":152,"column":3}},"locations":[{"start":{"line":136,"column":-1},"end":{"line":152,"column":3}}]}},"b":{"0":[4],"1":[4],"2":[8],"3":[7],"4":[3],"5":[0],"6":[2],"7":[0],"8":[6],"9":[2],"10":[7],"11":[6],"12":[8],"13":[4],"14":[0],"15":[1],"16":[3],"17":[2],"18":[0],"19":[0]},"fnMap":{"0":{"name":"DsPluginSandbox","decl":{"start":{"line":17,"column":2},"end":{"line":24,"column":3}},"loc":{"start":{"line":17,"column":2},"end":{"line":24,"column":3}},"line":17},"1":{"name":"getDsPlugin","decl":{"start":{"line":26,"column":2},"end":{"line":28,"column":3}},"loc":{"start":{"line":26,"column":2},"end":{"line":28,"column":3}},"line":26},"2":{"name":"getDsProcessor","decl":{"start":{"line":31,"column":0},"end":{"line":63,"column":1}},"loc":{"start":{"line":31,"column":0},"end":{"line":63,"column":1}},"line":31},"3":{"name":"BaseDsProcessorService","decl":{"start":{"line":74,"column":2},"end":{"line":77,"column":6}},"loc":{"start":{"line":74,"column":2},"end":{"line":77,"column":6}},"line":74},"4":{"name":"validateCustomDs","decl":{"start":{"line":79,"column":2},"end":{"line":98,"column":3}},"loc":{"start":{"line":79,"column":2},"end":{"line":98,"column":3}},"line":79},"5":{"name":"validateProjectCustomDatasources","decl":{"start":{"line":100,"column":2},"end":{"line":102,"column":3}},"loc":{"start":{"line":100,"column":2},"end":{"line":102,"column":3}},"line":100},"6":{"name":"getDsProcessor","decl":{"start":{"line":104,"column":2},"end":{"line":125,"column":3}},"loc":{"start":{"line":104,"column":2},"end":{"line":125,"column":3}},"line":104},"7":{"name":"getAssets","decl":{"start":{"line":128,"column":2},"end":{"line":152,"column":3}},"loc":{"start":{"line":128,"column":2},"end":{"line":152,"column":3}},"line":128}},"f":{"0":4,"1":4,"2":0,"3":8,"4":7,"5":7,"6":4,"7":2}},"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/indexer/dynamic-ds.service.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/indexer/dynamic-ds.service.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":36}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":62}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":0}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":39}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":0}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":42}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":0}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":35}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":23}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":33}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":21}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":1}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":0}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":40}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":27}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":65}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":62}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":1}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":0}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":77}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":41}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":30}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":49}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":0}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":74}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":0}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":59}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":30}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":0}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":43}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":3}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":0}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":34}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":29}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":67}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":5}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":29}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":3}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":0}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":46}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":26}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":67}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":5}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":26}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":3}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":0}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":5}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":56}},"51":{"start":{"line":52,"column":0},"end":{"line":52,"column":49}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":5}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":62}},"54":{"start":{"line":55,"column":0},"end":{"line":55,"column":69}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":72}},"56":{"start":{"line":57,"column":0},"end":{"line":57,"column":94}},"57":{"start":{"line":58,"column":0},"end":{"line":58,"column":50}},"58":{"start":{"line":59,"column":0},"end":{"line":59,"column":52}},"59":{"start":{"line":60,"column":0},"end":{"line":60,"column":5}},"60":{"start":{"line":61,"column":0},"end":{"line":61,"column":3}},"61":{"start":{"line":62,"column":0},"end":{"line":62,"column":0}},"62":{"start":{"line":63,"column":0},"end":{"line":63,"column":72}},"63":{"start":{"line":64,"column":0},"end":{"line":64,"column":9}},"64":{"start":{"line":65,"column":0},"end":{"line":65,"column":50}},"65":{"start":{"line":66,"column":0},"end":{"line":66,"column":52}},"66":{"start":{"line":67,"column":0},"end":{"line":67,"column":0}},"67":{"start":{"line":68,"column":0},"end":{"line":68,"column":92}},"68":{"start":{"line":69,"column":0},"end":{"line":69,"column":0}},"69":{"start":{"line":70,"column":0},"end":{"line":70,"column":53}},"70":{"start":{"line":71,"column":0},"end":{"line":71,"column":63}},"71":{"start":{"line":72,"column":0},"end":{"line":72,"column":33}},"72":{"start":{"line":73,"column":0},"end":{"line":73,"column":42}},"73":{"start":{"line":74,"column":0},"end":{"line":74,"column":0}},"74":{"start":{"line":75,"column":0},"end":{"line":75,"column":16}},"75":{"start":{"line":76,"column":0},"end":{"line":76,"column":22}},"76":{"start":{"line":77,"column":0},"end":{"line":77,"column":53}},"77":{"start":{"line":78,"column":0},"end":{"line":78,"column":22}},"78":{"start":{"line":79,"column":0},"end":{"line":79,"column":5}},"79":{"start":{"line":80,"column":0},"end":{"line":80,"column":3}},"80":{"start":{"line":81,"column":0},"end":{"line":81,"column":0}},"81":{"start":{"line":82,"column":0},"end":{"line":82,"column":56}},"82":{"start":{"line":83,"column":0},"end":{"line":83,"column":69}},"83":{"start":{"line":84,"column":0},"end":{"line":84,"column":68}},"84":{"start":{"line":85,"column":0},"end":{"line":85,"column":44}},"85":{"start":{"line":86,"column":0},"end":{"line":86,"column":68}},"86":{"start":{"line":87,"column":0},"end":{"line":87,"column":0}},"87":{"start":{"line":88,"column":0},"end":{"line":88,"column":48}},"88":{"start":{"line":89,"column":0},"end":{"line":89,"column":5}},"89":{"start":{"line":90,"column":0},"end":{"line":90,"column":0}},"90":{"start":{"line":91,"column":0},"end":{"line":91,"column":49}},"91":{"start":{"line":92,"column":0},"end":{"line":92,"column":37}},"92":{"start":{"line":93,"column":0},"end":{"line":93,"column":3}},"93":{"start":{"line":94,"column":0},"end":{"line":94,"column":0}},"94":{"start":{"line":95,"column":0},"end":{"line":95,"column":83}},"95":{"start":{"line":96,"column":0},"end":{"line":96,"column":94}},"96":{"start":{"line":97,"column":0},"end":{"line":97,"column":0}},"97":{"start":{"line":98,"column":0},"end":{"line":98,"column":68}},"98":{"start":{"line":99,"column":0},"end":{"line":99,"column":36}},"99":{"start":{"line":100,"column":0},"end":{"line":100,"column":36}},"100":{"start":{"line":101,"column":0},"end":{"line":101,"column":3}},"101":{"start":{"line":102,"column":0},"end":{"line":102,"column":1}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":9,"31":9,"32":9,"33":9,"34":1,"35":1,"36":0,"37":0,"38":0,"39":0,"40":0,"41":1,"42":1,"43":12,"44":0,"45":0,"46":12,"47":12,"48":1,"49":1,"50":1,"51":1,"52":1,"53":1,"54":1,"55":1,"56":1,"57":1,"58":1,"59":1,"60":1,"61":1,"62":1,"63":1,"64":1,"65":1,"66":1,"67":1,"68":1,"69":1,"70":1,"71":1,"72":1,"73":1,"74":1,"75":1,"76":0,"77":0,"78":0,"79":1,"80":1,"81":1,"82":1,"83":20,"84":20,"85":10,"86":10,"87":10,"88":10,"89":20,"90":20,"91":20,"92":20,"93":1,"94":1,"95":11,"96":11,"97":11,"98":11,"99":11,"100":11,"101":1},"branchMap":{"0":{"type":"branch","line":30,"loc":{"start":{"line":30,"column":2},"end":{"line":34,"column":3}},"locations":[{"start":{"line":30,"column":2},"end":{"line":34,"column":3}}]},"1":{"type":"branch","line":43,"loc":{"start":{"line":43,"column":2},"end":{"line":48,"column":3}},"locations":[{"start":{"line":43,"column":2},"end":{"line":48,"column":3}}]},"2":{"type":"branch","line":44,"loc":{"start":{"line":44,"column":25},"end":{"line":46,"column":5}},"locations":[{"start":{"line":44,"column":25},"end":{"line":46,"column":5}}]},"3":{"type":"branch","line":55,"loc":{"start":{"line":55,"column":2},"end":{"line":61,"column":3}},"locations":[{"start":{"line":55,"column":2},"end":{"line":61,"column":3}}]},"4":{"type":"branch","line":57,"loc":{"start":{"line":57,"column":55},"end":{"line":57,"column":92}},"locations":[{"start":{"line":57,"column":55},"end":{"line":57,"column":92}}]},"5":{"type":"branch","line":63,"loc":{"start":{"line":63,"column":2},"end":{"line":80,"column":3}},"locations":[{"start":{"line":63,"column":2},"end":{"line":80,"column":3}}]},"6":{"type":"branch","line":70,"loc":{"start":{"line":70,"column":30},"end":{"line":70,"column":53}},"locations":[{"start":{"line":70,"column":30},"end":{"line":70,"column":53}}]},"7":{"type":"branch","line":71,"loc":{"start":{"line":71,"column":35},"end":{"line":71,"column":63}},"locations":[{"start":{"line":71,"column":35},"end":{"line":71,"column":63}}]},"8":{"type":"branch","line":76,"loc":{"start":{"line":76,"column":6},"end":{"line":79,"column":5}},"locations":[{"start":{"line":76,"column":6},"end":{"line":79,"column":5}}]},"9":{"type":"branch","line":83,"loc":{"start":{"line":83,"column":2},"end":{"line":93,"column":3}},"locations":[{"start":{"line":83,"column":2},"end":{"line":93,"column":3}}]},"10":{"type":"branch","line":85,"loc":{"start":{"line":85,"column":26},"end":{"line":85,"column":41}},"locations":[{"start":{"line":85,"column":26},"end":{"line":85,"column":41}}]},"11":{"type":"branch","line":85,"loc":{"start":{"line":85,"column":43},"end":{"line":89,"column":5}},"locations":[{"start":{"line":85,"column":43},"end":{"line":89,"column":5}}]},"12":{"type":"branch","line":86,"loc":{"start":{"line":86,"column":61},"end":{"line":86,"column":67}},"locations":[{"start":{"line":86,"column":61},"end":{"line":86,"column":67}}]},"13":{"type":"branch","line":95,"loc":{"start":{"line":95,"column":10},"end":{"line":101,"column":3}},"locations":[{"start":{"line":95,"column":10},"end":{"line":101,"column":3}}]},"14":{"type":"branch","line":96,"loc":{"start":{"line":96,"column":53},"end":{"line":96,"column":91}},"locations":[{"start":{"line":96,"column":53},"end":{"line":96,"column":91}}]}},"b":{"0":[9],"1":[12],"2":[0],"3":[1],"4":[4],"5":[1],"6":[0],"7":[0],"8":[0],"9":[20],"10":[11],"11":[10],"12":[0],"13":[11],"14":[14]},"fnMap":{"0":{"name":"init","decl":{"start":{"line":30,"column":2},"end":{"line":34,"column":3}},"loc":{"start":{"line":30,"column":2},"end":{"line":34,"column":3}},"line":30},"1":{"name":"get dynamicDatasources","decl":{"start":{"line":36,"column":2},"end":{"line":41,"column":3}},"loc":{"start":{"line":36,"column":2},"end":{"line":41,"column":3}},"line":36},"2":{"name":"get metadata","decl":{"start":{"line":43,"column":2},"end":{"line":48,"column":3}},"loc":{"start":{"line":43,"column":2},"end":{"line":48,"column":3}},"line":43},"3":{"name":"resetDynamicDatasource","decl":{"start":{"line":55,"column":2},"end":{"line":61,"column":3}},"loc":{"start":{"line":55,"column":2},"end":{"line":61,"column":3}},"line":55},"4":{"name":"createDynamicDatasource","decl":{"start":{"line":63,"column":2},"end":{"line":80,"column":3}},"loc":{"start":{"line":63,"column":2},"end":{"line":80,"column":3}},"line":63},"5":{"name":"getDynamicDatasources","decl":{"start":{"line":83,"column":2},"end":{"line":93,"column":3}},"loc":{"start":{"line":83,"column":2},"end":{"line":93,"column":3}},"line":83},"6":{"name":"loadDynamicDatasources","decl":{"start":{"line":95,"column":10},"end":{"line":101,"column":3}},"loc":{"start":{"line":95,"column":10},"end":{"line":101,"column":3}},"line":95}},"f":{"0":9,"1":0,"2":12,"3":1,"4":1,"5":20,"6":11}},"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/indexer/entities/Metadata.entity.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/indexer/entities/Metadata.entity.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":50}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":89}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":55}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":0}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":31}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":16}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":22}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":22}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":34}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":29}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":30}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":33}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":30}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":22}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":21}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":28}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":22}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":29}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":19}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":38}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":26}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":23}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":41}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":28}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":31}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":22}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":31}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":32}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":65}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":62}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":1}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":0}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":27}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":26}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":42}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":1}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":0}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":67}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":0}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":43}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":64}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":2}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":0}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":109}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":7}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":114}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":30}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":7}},"51":{"start":{"line":52,"column":0},"end":{"line":52,"column":37}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":15}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":17}},"54":{"start":{"line":55,"column":0},"end":{"line":55,"column":3}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":1}},"56":{"start":{"line":57,"column":0},"end":{"line":57,"column":0}},"57":{"start":{"line":58,"column":0},"end":{"line":58,"column":38}},"58":{"start":{"line":59,"column":0},"end":{"line":59,"column":23}},"59":{"start":{"line":60,"column":0},"end":{"line":60,"column":17}},"60":{"start":{"line":61,"column":0},"end":{"line":61,"column":22}},"61":{"start":{"line":62,"column":0},"end":{"line":62,"column":17}},"62":{"start":{"line":63,"column":0},"end":{"line":63,"column":26}},"63":{"start":{"line":64,"column":0},"end":{"line":64,"column":30}},"64":{"start":{"line":65,"column":0},"end":{"line":65,"column":0}},"65":{"start":{"line":66,"column":0},"end":{"line":66,"column":19}},"66":{"start":{"line":67,"column":0},"end":{"line":67,"column":83}},"67":{"start":{"line":68,"column":0},"end":{"line":68,"column":0}},"68":{"start":{"line":69,"column":0},"end":{"line":69,"column":27}},"69":{"start":{"line":70,"column":0},"end":{"line":70,"column":22}},"70":{"start":{"line":71,"column":0},"end":{"line":71,"column":156}},"71":{"start":{"line":72,"column":0},"end":{"line":72,"column":8}},"72":{"start":{"line":73,"column":0},"end":{"line":73,"column":5}},"73":{"start":{"line":74,"column":0},"end":{"line":74,"column":0}},"74":{"start":{"line":75,"column":0},"end":{"line":75,"column":46}},"75":{"start":{"line":76,"column":0},"end":{"line":76,"column":3}},"76":{"start":{"line":77,"column":0},"end":{"line":77,"column":0}},"77":{"start":{"line":78,"column":0},"end":{"line":78,"column":40}},"78":{"start":{"line":79,"column":0},"end":{"line":79,"column":14}},"79":{"start":{"line":80,"column":0},"end":{"line":80,"column":5}},"80":{"start":{"line":81,"column":0},"end":{"line":81,"column":12}},"81":{"start":{"line":82,"column":0},"end":{"line":82,"column":31}},"82":{"start":{"line":83,"column":0},"end":{"line":83,"column":25}},"83":{"start":{"line":84,"column":0},"end":{"line":84,"column":8}},"84":{"start":{"line":85,"column":0},"end":{"line":85,"column":14}},"85":{"start":{"line":86,"column":0},"end":{"line":86,"column":30}},"86":{"start":{"line":87,"column":0},"end":{"line":87,"column":8}},"87":{"start":{"line":88,"column":0},"end":{"line":88,"column":6}},"88":{"start":{"line":89,"column":0},"end":{"line":89,"column":43}},"89":{"start":{"line":90,"column":0},"end":{"line":90,"column":4}},"90":{"start":{"line":91,"column":0},"end":{"line":91,"column":1}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"38":1,"39":1,"40":1,"41":1,"42":1,"43":1,"44":1,"45":1,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":1,"57":1,"58":28,"59":28,"60":28,"61":28,"62":28,"63":28,"64":28,"65":28,"66":0,"67":0,"68":0,"69":0,"70":0,"71":0,"72":0,"73":0,"74":0,"75":0,"76":28,"77":28,"78":28,"79":28,"80":28,"81":28,"82":28,"83":28,"84":28,"85":28,"86":28,"87":28,"88":28,"89":28,"90":28},"branchMap":{"0":{"type":"branch","line":58,"loc":{"start":{"line":58,"column":7},"end":{"line":91,"column":1}},"locations":[{"start":{"line":58,"column":7},"end":{"line":91,"column":1}}]},"1":{"type":"branch","line":66,"loc":{"start":{"line":66,"column":18},"end":{"line":76,"column":3}},"locations":[{"start":{"line":66,"column":18},"end":{"line":76,"column":3}}]}},"b":{"0":[28],"1":[0]},"fnMap":{"0":{"name":"checkSchemaMetadata","decl":{"start":{"line":47,"column":0},"end":{"line":56,"column":1}},"loc":{"start":{"line":47,"column":0},"end":{"line":56,"column":1}},"line":47},"1":{"name":"MetadataFactory","decl":{"start":{"line":58,"column":7},"end":{"line":91,"column":1}},"loc":{"start":{"line":58,"column":7},"end":{"line":91,"column":1}},"line":58}},"f":{"0":0,"1":28}},"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/indexer/entities/Poi.entity.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/indexer/entities/Poi.entity.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":81}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":0}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":31}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":27}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":36}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":31}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":37}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":39}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":21}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":1}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":0}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":58}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":19}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":25}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":1}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":0}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":70}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":0}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":38}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":59}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":2}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":27}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":84}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":35}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":11}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":5}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":11}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":32}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":25}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":8}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":23}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":29}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":25}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":21}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":8}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":13}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":29}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":25}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":21}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":8}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":19}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":29}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":25}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":21}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":8}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":26}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":29}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":25}},"51":{"start":{"line":52,"column":0},"end":{"line":52,"column":8}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":18}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":31}},"54":{"start":{"line":55,"column":0},"end":{"line":55,"column":25}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":26}},"56":{"start":{"line":57,"column":0},"end":{"line":57,"column":8}},"57":{"start":{"line":58,"column":0},"end":{"line":58,"column":6}},"58":{"start":{"line":59,"column":0},"end":{"line":59,"column":5}},"59":{"start":{"line":60,"column":0},"end":{"line":60,"column":28}},"60":{"start":{"line":61,"column":0},"end":{"line":61,"column":21}},"61":{"start":{"line":62,"column":0},"end":{"line":62,"column":36}},"62":{"start":{"line":63,"column":0},"end":{"line":63,"column":5}},"63":{"start":{"line":64,"column":0},"end":{"line":64,"column":4}},"64":{"start":{"line":65,"column":0},"end":{"line":65,"column":1}},"65":{"start":{"line":66,"column":0},"end":{"line":66,"column":0}},"66":{"start":{"line":67,"column":0},"end":{"line":67,"column":75}},"67":{"start":{"line":68,"column":0},"end":{"line":68,"column":35}},"68":{"start":{"line":69,"column":0},"end":{"line":69,"column":11}},"69":{"start":{"line":70,"column":0},"end":{"line":70,"column":5}},"70":{"start":{"line":71,"column":0},"end":{"line":71,"column":11}},"71":{"start":{"line":72,"column":0},"end":{"line":72,"column":32}},"72":{"start":{"line":73,"column":0},"end":{"line":73,"column":25}},"73":{"start":{"line":74,"column":0},"end":{"line":74,"column":8}},"74":{"start":{"line":75,"column":0},"end":{"line":75,"column":23}},"75":{"start":{"line":76,"column":0},"end":{"line":76,"column":29}},"76":{"start":{"line":77,"column":0},"end":{"line":77,"column":24}},"77":{"start":{"line":78,"column":0},"end":{"line":78,"column":21}},"78":{"start":{"line":79,"column":0},"end":{"line":79,"column":8}},"79":{"start":{"line":80,"column":0},"end":{"line":80,"column":13}},"80":{"start":{"line":81,"column":0},"end":{"line":81,"column":29}},"81":{"start":{"line":82,"column":0},"end":{"line":82,"column":24}},"82":{"start":{"line":83,"column":0},"end":{"line":83,"column":21}},"83":{"start":{"line":84,"column":0},"end":{"line":84,"column":8}},"84":{"start":{"line":85,"column":0},"end":{"line":85,"column":19}},"85":{"start":{"line":86,"column":0},"end":{"line":86,"column":29}},"86":{"start":{"line":87,"column":0},"end":{"line":87,"column":24}},"87":{"start":{"line":88,"column":0},"end":{"line":88,"column":21}},"88":{"start":{"line":89,"column":0},"end":{"line":89,"column":8}},"89":{"start":{"line":90,"column":0},"end":{"line":90,"column":26}},"90":{"start":{"line":91,"column":0},"end":{"line":91,"column":29}},"91":{"start":{"line":92,"column":0},"end":{"line":92,"column":24}},"92":{"start":{"line":93,"column":0},"end":{"line":93,"column":8}},"93":{"start":{"line":94,"column":0},"end":{"line":94,"column":6}},"94":{"start":{"line":95,"column":0},"end":{"line":95,"column":5}},"95":{"start":{"line":96,"column":0},"end":{"line":96,"column":28}},"96":{"start":{"line":97,"column":0},"end":{"line":97,"column":21}},"97":{"start":{"line":98,"column":0},"end":{"line":98,"column":5}},"98":{"start":{"line":99,"column":0},"end":{"line":99,"column":4}},"99":{"start":{"line":100,"column":0},"end":{"line":100,"column":1}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"59":0,"60":0,"61":0,"62":0,"63":0,"64":0,"65":1,"66":8,"67":8,"68":8,"69":8,"70":8,"71":8,"72":8,"73":8,"74":8,"75":8,"76":8,"77":8,"78":8,"79":8,"80":8,"81":8,"82":8,"83":8,"84":8,"85":8,"86":8,"87":8,"88":8,"89":8,"90":8,"91":8,"92":8,"93":8,"94":8,"95":8,"96":8,"97":8,"98":8,"99":8},"branchMap":{"0":{"type":"branch","line":67,"loc":{"start":{"line":67,"column":0},"end":{"line":100,"column":1}},"locations":[{"start":{"line":67,"column":0},"end":{"line":100,"column":1}}]}},"b":{"0":[8]},"fnMap":{"0":{"name":"PoiFactoryDeprecate","decl":{"start":{"line":26,"column":0},"end":{"line":65,"column":1}},"loc":{"start":{"line":26,"column":0},"end":{"line":65,"column":1}},"line":26},"1":{"name":"PoiFactory","decl":{"start":{"line":67,"column":0},"end":{"line":100,"column":1}},"loc":{"start":{"line":67,"column":0},"end":{"line":100,"column":1}},"line":67}},"f":{"0":0,"1":8}},"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/indexer/entities/index.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/indexer/entities/index.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":29}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":34}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1},"branchMap":{},"b":{},"fnMap":{},"f":{}},"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/indexer/fetch.service.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/indexer/fetch.service.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":28}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":53}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":52}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":51}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":72}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":38}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":40}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":39}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":36}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":92}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":51}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":53}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":66}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":69}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":54}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":48}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":0}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":41}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":0}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":101}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":34}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":1}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":37}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":42}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":29}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":38}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":0}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":113}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":59}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":54}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":0}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":55}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":46}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":0}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":56}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":57}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":44}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":0}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":58}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":0}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":48}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":95}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":77}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":0}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":14}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":35}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":50}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":51}},"51":{"start":{"line":52,"column":0},"end":{"line":52,"column":33}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":59}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":51}},"54":{"start":{"line":55,"column":0},"end":{"line":55,"column":40}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":48}},"56":{"start":{"line":57,"column":0},"end":{"line":57,"column":6}},"57":{"start":{"line":58,"column":0},"end":{"line":58,"column":0}},"58":{"start":{"line":59,"column":0},"end":{"line":59,"column":42}},"59":{"start":{"line":60,"column":0},"end":{"line":60,"column":85}},"60":{"start":{"line":61,"column":0},"end":{"line":61,"column":34}},"61":{"start":{"line":62,"column":0},"end":{"line":62,"column":3}},"62":{"start":{"line":63,"column":0},"end":{"line":63,"column":0}},"63":{"start":{"line":64,"column":0},"end":{"line":64,"column":47}},"64":{"start":{"line":65,"column":0},"end":{"line":65,"column":95}},"65":{"start":{"line":66,"column":0},"end":{"line":66,"column":39}},"66":{"start":{"line":67,"column":0},"end":{"line":67,"column":3}},"67":{"start":{"line":68,"column":0},"end":{"line":68,"column":0}},"68":{"start":{"line":69,"column":0},"end":{"line":69,"column":33}},"69":{"start":{"line":70,"column":0},"end":{"line":70,"column":9}},"70":{"start":{"line":71,"column":0},"end":{"line":71,"column":69}},"71":{"start":{"line":72,"column":0},"end":{"line":72,"column":64}},"72":{"start":{"line":73,"column":0},"end":{"line":73,"column":17}},"73":{"start":{"line":74,"column":0},"end":{"line":74,"column":36}},"74":{"start":{"line":75,"column":0},"end":{"line":75,"column":5}},"75":{"start":{"line":76,"column":0},"end":{"line":76,"column":27}},"76":{"start":{"line":77,"column":0},"end":{"line":77,"column":3}},"77":{"start":{"line":78,"column":0},"end":{"line":78,"column":0}},"78":{"start":{"line":79,"column":0},"end":{"line":79,"column":40}},"79":{"start":{"line":80,"column":0},"end":{"line":80,"column":48}},"80":{"start":{"line":81,"column":0},"end":{"line":81,"column":101}},"81":{"start":{"line":82,"column":0},"end":{"line":82,"column":6}},"82":{"start":{"line":83,"column":0},"end":{"line":83,"column":3}},"83":{"start":{"line":84,"column":0},"end":{"line":84,"column":0}},"84":{"start":{"line":85,"column":0},"end":{"line":85,"column":53}},"85":{"start":{"line":86,"column":0},"end":{"line":86,"column":73}},"86":{"start":{"line":87,"column":0},"end":{"line":87,"column":0}},"87":{"start":{"line":88,"column":0},"end":{"line":88,"column":51}},"88":{"start":{"line":89,"column":0},"end":{"line":89,"column":0}},"89":{"start":{"line":90,"column":0},"end":{"line":90,"column":50}},"90":{"start":{"line":91,"column":0},"end":{"line":91,"column":39}},"91":{"start":{"line":92,"column":0},"end":{"line":92,"column":40}},"92":{"start":{"line":93,"column":0},"end":{"line":93,"column":0}},"93":{"start":{"line":94,"column":0},"end":{"line":94,"column":55}},"94":{"start":{"line":95,"column":0},"end":{"line":95,"column":79}},"95":{"start":{"line":96,"column":0},"end":{"line":96,"column":48}},"96":{"start":{"line":97,"column":0},"end":{"line":97,"column":68}},"97":{"start":{"line":98,"column":0},"end":{"line":98,"column":7}},"98":{"start":{"line":99,"column":0},"end":{"line":99,"column":5}},"99":{"start":{"line":100,"column":0},"end":{"line":100,"column":3}},"100":{"start":{"line":101,"column":0},"end":{"line":101,"column":0}},"101":{"start":{"line":102,"column":0},"end":{"line":102,"column":50}},"102":{"start":{"line":103,"column":0},"end":{"line":103,"column":27}},"103":{"start":{"line":104,"column":0},"end":{"line":104,"column":0}},"104":{"start":{"line":105,"column":0},"end":{"line":105,"column":57}},"105":{"start":{"line":106,"column":0},"end":{"line":106,"column":117}},"106":{"start":{"line":107,"column":0},"end":{"line":107,"column":5}},"107":{"start":{"line":108,"column":0},"end":{"line":108,"column":0}},"108":{"start":{"line":109,"column":0},"end":{"line":109,"column":45}},"109":{"start":{"line":110,"column":0},"end":{"line":110,"column":51}},"110":{"start":{"line":111,"column":0},"end":{"line":111,"column":0}},"111":{"start":{"line":112,"column":0},"end":{"line":112,"column":79}},"112":{"start":{"line":113,"column":0},"end":{"line":113,"column":0}},"113":{"start":{"line":114,"column":0},"end":{"line":114,"column":44}},"114":{"start":{"line":115,"column":0},"end":{"line":115,"column":22}},"115":{"start":{"line":116,"column":0},"end":{"line":116,"column":219}},"116":{"start":{"line":117,"column":0},"end":{"line":117,"column":8}},"117":{"start":{"line":118,"column":0},"end":{"line":118,"column":5}},"118":{"start":{"line":119,"column":0},"end":{"line":119,"column":0}},"119":{"start":{"line":120,"column":0},"end":{"line":120,"column":39}},"120":{"start":{"line":121,"column":0},"end":{"line":121,"column":30}},"121":{"start":{"line":122,"column":0},"end":{"line":122,"column":68}},"122":{"start":{"line":123,"column":0},"end":{"line":123,"column":6}},"123":{"start":{"line":124,"column":0},"end":{"line":124,"column":39}},"124":{"start":{"line":125,"column":0},"end":{"line":125,"column":25}},"125":{"start":{"line":126,"column":0},"end":{"line":126,"column":63}},"126":{"start":{"line":127,"column":0},"end":{"line":127,"column":6}},"127":{"start":{"line":128,"column":0},"end":{"line":128,"column":0}},"128":{"start":{"line":129,"column":0},"end":{"line":129,"column":52}},"129":{"start":{"line":130,"column":0},"end":{"line":130,"column":72}},"130":{"start":{"line":131,"column":0},"end":{"line":131,"column":28}},"131":{"start":{"line":132,"column":0},"end":{"line":132,"column":42}},"132":{"start":{"line":133,"column":0},"end":{"line":133,"column":0}},"133":{"start":{"line":134,"column":0},"end":{"line":134,"column":42}},"134":{"start":{"line":135,"column":0},"end":{"line":135,"column":37}},"135":{"start":{"line":136,"column":0},"end":{"line":136,"column":0}},"136":{"start":{"line":137,"column":0},"end":{"line":137,"column":37}},"137":{"start":{"line":138,"column":0},"end":{"line":138,"column":3}},"138":{"start":{"line":139,"column":0},"end":{"line":139,"column":0}},"139":{"start":{"line":140,"column":0},"end":{"line":140,"column":36}},"140":{"start":{"line":141,"column":0},"end":{"line":141,"column":99}},"141":{"start":{"line":142,"column":0},"end":{"line":142,"column":3}},"142":{"start":{"line":143,"column":0},"end":{"line":143,"column":0}},"143":{"start":{"line":144,"column":0},"end":{"line":144,"column":48}},"144":{"start":{"line":145,"column":0},"end":{"line":145,"column":9}},"145":{"start":{"line":146,"column":0},"end":{"line":146,"column":69}},"146":{"start":{"line":147,"column":0},"end":{"line":147,"column":67}},"147":{"start":{"line":148,"column":0},"end":{"line":148,"column":61}},"148":{"start":{"line":149,"column":0},"end":{"line":149,"column":49}},"149":{"start":{"line":150,"column":0},"end":{"line":150,"column":60}},"150":{"start":{"line":151,"column":0},"end":{"line":151,"column":47}},"151":{"start":{"line":152,"column":0},"end":{"line":152,"column":13}},"152":{"start":{"line":153,"column":0},"end":{"line":153,"column":9}},"153":{"start":{"line":154,"column":0},"end":{"line":154,"column":7}},"154":{"start":{"line":155,"column":0},"end":{"line":155,"column":22}},"155":{"start":{"line":156,"column":0},"end":{"line":156,"column":71}},"156":{"start":{"line":157,"column":0},"end":{"line":157,"column":5}},"157":{"start":{"line":158,"column":0},"end":{"line":158,"column":3}},"158":{"start":{"line":159,"column":0},"end":{"line":159,"column":0}},"159":{"start":{"line":160,"column":0},"end":{"line":160,"column":43}},"160":{"start":{"line":161,"column":0},"end":{"line":161,"column":9}},"161":{"start":{"line":162,"column":0},"end":{"line":162,"column":59}},"162":{"start":{"line":163,"column":0},"end":{"line":163,"column":57}},"163":{"start":{"line":164,"column":0},"end":{"line":164,"column":51}},"164":{"start":{"line":165,"column":0},"end":{"line":165,"column":56}},"165":{"start":{"line":166,"column":0},"end":{"line":166,"column":40}},"166":{"start":{"line":167,"column":0},"end":{"line":167,"column":11}},"167":{"start":{"line":168,"column":0},"end":{"line":168,"column":0}},"168":{"start":{"line":169,"column":0},"end":{"line":169,"column":48}},"169":{"start":{"line":170,"column":0},"end":{"line":170,"column":60}},"170":{"start":{"line":171,"column":0},"end":{"line":171,"column":42}},"171":{"start":{"line":172,"column":0},"end":{"line":172,"column":13}},"172":{"start":{"line":173,"column":0},"end":{"line":173,"column":9}},"173":{"start":{"line":174,"column":0},"end":{"line":174,"column":7}},"174":{"start":{"line":175,"column":0},"end":{"line":175,"column":22}},"175":{"start":{"line":176,"column":0},"end":{"line":176,"column":66}},"176":{"start":{"line":177,"column":0},"end":{"line":177,"column":5}},"177":{"start":{"line":178,"column":0},"end":{"line":178,"column":3}},"178":{"start":{"line":179,"column":0},"end":{"line":179,"column":0}},"179":{"start":{"line":180,"column":0},"end":{"line":180,"column":67}},"180":{"start":{"line":181,"column":0},"end":{"line":181,"column":52}},"181":{"start":{"line":182,"column":0},"end":{"line":182,"column":3}},"182":{"start":{"line":183,"column":0},"end":{"line":183,"column":0}},"183":{"start":{"line":184,"column":0},"end":{"line":184,"column":69}},"184":{"start":{"line":185,"column":0},"end":{"line":185,"column":38}},"185":{"start":{"line":186,"column":0},"end":{"line":186,"column":38}},"186":{"start":{"line":187,"column":0},"end":{"line":187,"column":51}},"187":{"start":{"line":188,"column":0},"end":{"line":188,"column":45}},"188":{"start":{"line":189,"column":0},"end":{"line":189,"column":29}},"189":{"start":{"line":190,"column":0},"end":{"line":190,"column":7}},"190":{"start":{"line":191,"column":0},"end":{"line":191,"column":5}},"191":{"start":{"line":192,"column":0},"end":{"line":192,"column":24}},"192":{"start":{"line":193,"column":0},"end":{"line":193,"column":3}},"193":{"start":{"line":194,"column":0},"end":{"line":194,"column":0}},"194":{"start":{"line":195,"column":0},"end":{"line":195,"column":5}},"195":{"start":{"line":196,"column":0},"end":{"line":196,"column":4}},"196":{"start":{"line":197,"column":0},"end":{"line":197,"column":28}},"197":{"start":{"line":198,"column":0},"end":{"line":198,"column":116}},"198":{"start":{"line":199,"column":0},"end":{"line":199,"column":5}},"199":{"start":{"line":200,"column":0},"end":{"line":200,"column":102}},"200":{"start":{"line":201,"column":0},"end":{"line":201,"column":32}},"201":{"start":{"line":202,"column":0},"end":{"line":202,"column":23}},"202":{"start":{"line":203,"column":0},"end":{"line":203,"column":109}},"203":{"start":{"line":204,"column":0},"end":{"line":204,"column":42}},"204":{"start":{"line":205,"column":0},"end":{"line":205,"column":3}},"205":{"start":{"line":206,"column":0},"end":{"line":206,"column":0}},"206":{"start":{"line":207,"column":0},"end":{"line":207,"column":34}},"207":{"start":{"line":208,"column":0},"end":{"line":208,"column":98}},"208":{"start":{"line":209,"column":0},"end":{"line":209,"column":3}},"209":{"start":{"line":210,"column":0},"end":{"line":210,"column":0}},"210":{"start":{"line":211,"column":0},"end":{"line":211,"column":40}},"211":{"start":{"line":212,"column":0},"end":{"line":212,"column":69}},"212":{"start":{"line":213,"column":0},"end":{"line":213,"column":33}},"213":{"start":{"line":214,"column":0},"end":{"line":214,"column":32}},"214":{"start":{"line":215,"column":0},"end":{"line":215,"column":99}},"215":{"start":{"line":216,"column":0},"end":{"line":216,"column":0}},"216":{"start":{"line":217,"column":0},"end":{"line":217,"column":47}},"217":{"start":{"line":218,"column":0},"end":{"line":218,"column":54}},"218":{"start":{"line":219,"column":0},"end":{"line":219,"column":55}},"219":{"start":{"line":220,"column":0},"end":{"line":220,"column":26}},"220":{"start":{"line":221,"column":0},"end":{"line":221,"column":6}},"221":{"start":{"line":222,"column":0},"end":{"line":222,"column":0}},"222":{"start":{"line":223,"column":0},"end":{"line":223,"column":30}},"223":{"start":{"line":224,"column":0},"end":{"line":224,"column":47}},"224":{"start":{"line":225,"column":0},"end":{"line":225,"column":0}},"225":{"start":{"line":226,"column":0},"end":{"line":226,"column":60}},"226":{"start":{"line":227,"column":0},"end":{"line":227,"column":0}},"227":{"start":{"line":228,"column":0},"end":{"line":228,"column":34}},"228":{"start":{"line":229,"column":0},"end":{"line":229,"column":70}},"229":{"start":{"line":230,"column":0},"end":{"line":230,"column":17}},"230":{"start":{"line":231,"column":0},"end":{"line":231,"column":7}},"231":{"start":{"line":232,"column":0},"end":{"line":232,"column":0}},"232":{"start":{"line":233,"column":0},"end":{"line":233,"column":47}},"233":{"start":{"line":234,"column":0},"end":{"line":234,"column":0}},"234":{"start":{"line":235,"column":0},"end":{"line":235,"column":95}},"235":{"start":{"line":236,"column":0},"end":{"line":236,"column":23}},"236":{"start":{"line":237,"column":0},"end":{"line":237,"column":17}},"237":{"start":{"line":238,"column":0},"end":{"line":238,"column":7}},"238":{"start":{"line":239,"column":0},"end":{"line":239,"column":0}},"239":{"start":{"line":240,"column":0},"end":{"line":240,"column":10}},"240":{"start":{"line":241,"column":0},"end":{"line":241,"column":29}},"241":{"start":{"line":242,"column":0},"end":{"line":242,"column":79}},"242":{"start":{"line":243,"column":0},"end":{"line":243,"column":65}},"243":{"start":{"line":244,"column":0},"end":{"line":244,"column":53}},"244":{"start":{"line":245,"column":0},"end":{"line":245,"column":9}},"245":{"start":{"line":246,"column":0},"end":{"line":246,"column":13}},"246":{"start":{"line":247,"column":0},"end":{"line":247,"column":82}},"247":{"start":{"line":248,"column":0},"end":{"line":248,"column":29}},"248":{"start":{"line":249,"column":0},"end":{"line":249,"column":28}},"249":{"start":{"line":250,"column":0},"end":{"line":250,"column":38}},"250":{"start":{"line":251,"column":0},"end":{"line":251,"column":12}},"251":{"start":{"line":252,"column":0},"end":{"line":252,"column":0}},"252":{"start":{"line":253,"column":0},"end":{"line":253,"column":59}},"253":{"start":{"line":254,"column":0},"end":{"line":254,"column":91}},"254":{"start":{"line":255,"column":0},"end":{"line":255,"column":21}},"255":{"start":{"line":256,"column":0},"end":{"line":256,"column":11}},"256":{"start":{"line":257,"column":0},"end":{"line":257,"column":27}},"257":{"start":{"line":258,"column":0},"end":{"line":258,"column":45}},"258":{"start":{"line":259,"column":0},"end":{"line":259,"column":86}},"259":{"start":{"line":260,"column":0},"end":{"line":260,"column":103}},"260":{"start":{"line":261,"column":0},"end":{"line":261,"column":78}},"261":{"start":{"line":262,"column":0},"end":{"line":262,"column":44}},"262":{"start":{"line":263,"column":0},"end":{"line":263,"column":95}},"263":{"start":{"line":264,"column":0},"end":{"line":264,"column":74}},"264":{"start":{"line":265,"column":0},"end":{"line":265,"column":20}},"265":{"start":{"line":266,"column":0},"end":{"line":266,"column":96}},"266":{"start":{"line":267,"column":0},"end":{"line":267,"column":72}},"267":{"start":{"line":268,"column":0},"end":{"line":268,"column":68}},"268":{"start":{"line":269,"column":0},"end":{"line":269,"column":13}},"269":{"start":{"line":270,"column":0},"end":{"line":270,"column":50}},"270":{"start":{"line":271,"column":0},"end":{"line":271,"column":11}},"271":{"start":{"line":272,"column":0},"end":{"line":272,"column":43}},"272":{"start":{"line":273,"column":0},"end":{"line":273,"column":26}},"273":{"start":{"line":274,"column":0},"end":{"line":274,"column":65}},"274":{"start":{"line":275,"column":0},"end":{"line":275,"column":62}},"275":{"start":{"line":276,"column":0},"end":{"line":276,"column":9}},"276":{"start":{"line":277,"column":0},"end":{"line":277,"column":14}},"277":{"start":{"line":278,"column":0},"end":{"line":278,"column":85}},"278":{"start":{"line":279,"column":0},"end":{"line":279,"column":0}},"279":{"start":{"line":280,"column":0},"end":{"line":280,"column":31}},"280":{"start":{"line":281,"column":0},"end":{"line":281,"column":73}},"281":{"start":{"line":282,"column":0},"end":{"line":282,"column":74}},"282":{"start":{"line":283,"column":0},"end":{"line":283,"column":53}},"283":{"start":{"line":284,"column":0},"end":{"line":284,"column":0}},"284":{"start":{"line":285,"column":0},"end":{"line":285,"column":64}},"285":{"start":{"line":286,"column":0},"end":{"line":286,"column":7}},"286":{"start":{"line":287,"column":0},"end":{"line":287,"column":5}},"287":{"start":{"line":288,"column":0},"end":{"line":288,"column":3}},"288":{"start":{"line":289,"column":0},"end":{"line":289,"column":0}},"289":{"start":{"line":290,"column":0},"end":{"line":290,"column":110}},"290":{"start":{"line":291,"column":0},"end":{"line":291,"column":72}},"291":{"start":{"line":292,"column":0},"end":{"line":292,"column":45}},"292":{"start":{"line":293,"column":0},"end":{"line":293,"column":25}},"293":{"start":{"line":294,"column":0},"end":{"line":294,"column":83}},"294":{"start":{"line":295,"column":0},"end":{"line":295,"column":6}},"295":{"start":{"line":296,"column":0},"end":{"line":296,"column":3}},"296":{"start":{"line":297,"column":0},"end":{"line":297,"column":0}},"297":{"start":{"line":298,"column":0},"end":{"line":298,"column":5}},"298":{"start":{"line":299,"column":0},"end":{"line":299,"column":4}},"299":{"start":{"line":300,"column":0},"end":{"line":300,"column":30}},"300":{"start":{"line":301,"column":0},"end":{"line":301,"column":26}},"301":{"start":{"line":302,"column":0},"end":{"line":302,"column":24}},"302":{"start":{"line":303,"column":0},"end":{"line":303,"column":13}},"303":{"start":{"line":304,"column":0},"end":{"line":304,"column":5}},"304":{"start":{"line":305,"column":0},"end":{"line":305,"column":32}},"305":{"start":{"line":306,"column":0},"end":{"line":306,"column":48}},"306":{"start":{"line":307,"column":0},"end":{"line":307,"column":44}},"307":{"start":{"line":308,"column":0},"end":{"line":308,"column":24}},"308":{"start":{"line":309,"column":0},"end":{"line":309,"column":13}},"309":{"start":{"line":310,"column":0},"end":{"line":310,"column":82}},"310":{"start":{"line":311,"column":0},"end":{"line":311,"column":62}},"311":{"start":{"line":312,"column":0},"end":{"line":312,"column":73}},"312":{"start":{"line":313,"column":0},"end":{"line":313,"column":26}},"313":{"start":{"line":314,"column":0},"end":{"line":314,"column":5}},"314":{"start":{"line":315,"column":0},"end":{"line":315,"column":84}},"315":{"start":{"line":316,"column":0},"end":{"line":316,"column":3}},"316":{"start":{"line":317,"column":0},"end":{"line":317,"column":0}},"317":{"start":{"line":318,"column":0},"end":{"line":318,"column":100}},"318":{"start":{"line":319,"column":0},"end":{"line":319,"column":59}},"319":{"start":{"line":320,"column":0},"end":{"line":320,"column":32}},"320":{"start":{"line":321,"column":0},"end":{"line":321,"column":5}},"321":{"start":{"line":322,"column":0},"end":{"line":322,"column":0}},"322":{"start":{"line":323,"column":0},"end":{"line":323,"column":83}},"323":{"start":{"line":324,"column":0},"end":{"line":324,"column":0}},"324":{"start":{"line":325,"column":0},"end":{"line":325,"column":52}},"325":{"start":{"line":326,"column":0},"end":{"line":326,"column":78}},"326":{"start":{"line":327,"column":0},"end":{"line":327,"column":6}},"327":{"start":{"line":328,"column":0},"end":{"line":328,"column":32}},"328":{"start":{"line":329,"column":0},"end":{"line":329,"column":57}},"329":{"start":{"line":330,"column":0},"end":{"line":330,"column":5}},"330":{"start":{"line":331,"column":0},"end":{"line":331,"column":70}},"331":{"start":{"line":332,"column":0},"end":{"line":332,"column":24}},"332":{"start":{"line":333,"column":0},"end":{"line":333,"column":3}},"333":{"start":{"line":334,"column":0},"end":{"line":334,"column":0}},"334":{"start":{"line":335,"column":0},"end":{"line":335,"column":89}},"335":{"start":{"line":336,"column":0},"end":{"line":336,"column":64}},"336":{"start":{"line":337,"column":0},"end":{"line":337,"column":0}},"337":{"start":{"line":338,"column":0},"end":{"line":338,"column":54}},"338":{"start":{"line":339,"column":0},"end":{"line":339,"column":46}},"339":{"start":{"line":340,"column":0},"end":{"line":340,"column":54}},"340":{"start":{"line":341,"column":0},"end":{"line":341,"column":49}},"341":{"start":{"line":342,"column":0},"end":{"line":342,"column":9}},"342":{"start":{"line":343,"column":0},"end":{"line":343,"column":14}},"343":{"start":{"line":344,"column":0},"end":{"line":344,"column":52}},"344":{"start":{"line":345,"column":0},"end":{"line":345,"column":7}},"345":{"start":{"line":346,"column":0},"end":{"line":346,"column":5}},"346":{"start":{"line":347,"column":0},"end":{"line":347,"column":26}},"347":{"start":{"line":348,"column":0},"end":{"line":348,"column":3}},"348":{"start":{"line":349,"column":0},"end":{"line":349,"column":0}},"349":{"start":{"line":350,"column":0},"end":{"line":350,"column":44}},"350":{"start":{"line":351,"column":0},"end":{"line":351,"column":28}},"351":{"start":{"line":352,"column":0},"end":{"line":352,"column":49}},"352":{"start":{"line":353,"column":0},"end":{"line":353,"column":3}},"353":{"start":{"line":354,"column":0},"end":{"line":354,"column":0}},"354":{"start":{"line":355,"column":0},"end":{"line":355,"column":38}},"355":{"start":{"line":356,"column":0},"end":{"line":356,"column":38}},"356":{"start":{"line":357,"column":0},"end":{"line":357,"column":3}},"357":{"start":{"line":358,"column":0},"end":{"line":358,"column":0}},"358":{"start":{"line":359,"column":0},"end":{"line":359,"column":57}},"359":{"start":{"line":360,"column":0},"end":{"line":360,"column":28}},"360":{"start":{"line":361,"column":0},"end":{"line":361,"column":49}},"361":{"start":{"line":362,"column":0},"end":{"line":362,"column":3}},"362":{"start":{"line":363,"column":0},"end":{"line":363,"column":1}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"38":1,"39":1,"40":1,"41":1,"42":1,"43":1,"44":1,"45":1,"46":1,"47":1,"48":21,"49":21,"50":21,"51":21,"52":21,"53":21,"54":21,"55":21,"56":21,"57":1,"58":1,"59":16,"60":16,"61":16,"62":1,"63":1,"64":111,"65":111,"66":111,"67":1,"68":1,"69":21,"70":21,"71":21,"72":21,"73":6,"74":6,"75":21,"76":21,"77":1,"78":1,"79":22,"80":22,"81":22,"82":22,"83":1,"84":1,"85":16,"86":16,"87":16,"88":16,"89":16,"90":7,"91":7,"92":7,"93":7,"94":7,"95":7,"96":1,"97":1,"98":7,"99":16,"100":1,"101":1,"102":16,"103":16,"104":16,"105":2,"106":2,"107":16,"108":16,"109":16,"110":16,"111":16,"112":16,"113":16,"114":1,"115":1,"116":1,"117":1,"118":15,"119":15,"120":15,"121":15,"122":15,"123":15,"124":15,"125":15,"126":15,"127":15,"128":15,"129":15,"130":15,"131":15,"132":15,"133":15,"134":15,"135":15,"136":15,"137":15,"138":1,"139":1,"140":15,"141":15,"142":1,"143":1,"144":346,"145":346,"146":346,"147":16,"148":16,"149":16,"150":16,"151":16,"152":16,"153":16,"154":346,"155":0,"156":0,"157":346,"158":1,"159":1,"160":346,"161":346,"162":346,"163":16,"164":16,"165":16,"166":16,"167":16,"168":16,"169":0,"170":0,"171":0,"172":0,"173":16,"174":346,"175":0,"176":0,"177":346,"178":1,"179":1,"180":15,"181":14,"182":1,"183":1,"184":8,"185":8,"186":8,"187":4040,"188":343,"189":343,"190":4040,"191":4040,"192":4040,"193":1,"194":1,"195":1,"196":1,"197":1,"198":1,"199":1,"200":2,"201":2,"202":2,"203":2,"204":2,"205":1,"206":1,"207":72,"208":72,"209":1,"210":1,"211":1,"212":15,"213":15,"214":15,"215":15,"216":15,"217":61,"218":61,"219":61,"220":15,"221":15,"222":15,"223":55,"224":55,"225":55,"226":55,"227":55,"228":0,"229":0,"230":0,"231":55,"232":55,"233":55,"234":55,"235":39,"236":38,"237":38,"238":16,"239":16,"240":16,"241":6,"242":55,"243":6,"244":55,"245":6,"246":6,"247":6,"248":6,"249":6,"250":6,"251":6,"252":6,"253":0,"254":0,"255":0,"256":6,"257":6,"258":6,"259":6,"260":6,"261":6,"262":1,"263":1,"264":6,"265":5,"266":5,"267":5,"268":5,"269":6,"270":6,"271":6,"272":6,"273":0,"274":0,"275":0,"276":55,"277":10,"278":10,"279":10,"280":10,"281":10,"282":10,"283":10,"284":10,"285":10,"286":55,"287":15,"288":1,"289":1,"290":16,"291":16,"292":16,"293":16,"294":16,"295":16,"296":1,"297":1,"298":1,"299":1,"300":1,"301":1,"302":1,"303":1,"304":1,"305":16,"306":16,"307":16,"308":16,"309":16,"310":16,"311":16,"312":2,"313":2,"314":14,"315":14,"316":1,"317":1,"318":16,"319":13,"320":13,"321":3,"322":3,"323":3,"324":3,"325":3,"326":3,"327":16,"328":2,"329":2,"330":3,"331":3,"332":3,"333":1,"334":1,"335":10,"336":10,"337":10,"338":1,"339":0,"340":0,"341":0,"342":1,"343":1,"344":1,"345":1,"346":10,"347":10,"348":1,"349":1,"350":0,"351":0,"352":0,"353":1,"354":1,"355":0,"356":0,"357":1,"358":1,"359":0,"360":0,"361":0,"362":1},"branchMap":{"0":{"type":"branch","line":48,"loc":{"start":{"line":48,"column":2},"end":{"line":57,"column":6}},"locations":[{"start":{"line":48,"column":2},"end":{"line":57,"column":6}}]},"1":{"type":"branch","line":59,"loc":{"start":{"line":59,"column":2},"end":{"line":62,"column":3}},"locations":[{"start":{"line":59,"column":2},"end":{"line":62,"column":3}}]},"2":{"type":"branch","line":64,"loc":{"start":{"line":64,"column":2},"end":{"line":67,"column":3}},"locations":[{"start":{"line":64,"column":2},"end":{"line":67,"column":3}}]},"3":{"type":"branch","line":69,"loc":{"start":{"line":69,"column":2},"end":{"line":77,"column":3}},"locations":[{"start":{"line":69,"column":2},"end":{"line":77,"column":3}}]},"4":{"type":"branch","line":73,"loc":{"start":{"line":73,"column":6},"end":{"line":75,"column":5}},"locations":[{"start":{"line":73,"column":6},"end":{"line":75,"column":5}}]},"5":{"type":"branch","line":79,"loc":{"start":{"line":79,"column":2},"end":{"line":83,"column":3}},"locations":[{"start":{"line":79,"column":2},"end":{"line":83,"column":3}}]},"6":{"type":"branch","line":81,"loc":{"start":{"line":81,"column":47},"end":{"line":81,"column":101}},"locations":[{"start":{"line":81,"column":47},"end":{"line":81,"column":101}}]},"7":{"type":"branch","line":85,"loc":{"start":{"line":85,"column":10},"end":{"line":100,"column":3}},"locations":[{"start":{"line":85,"column":10},"end":{"line":100,"column":3}}]},"8":{"type":"branch","line":90,"loc":{"start":{"line":90,"column":49},"end":{"line":99,"column":5}},"locations":[{"start":{"line":90,"column":49},"end":{"line":99,"column":5}}]},"9":{"type":"branch","line":96,"loc":{"start":{"line":96,"column":47},"end":{"line":98,"column":7}},"locations":[{"start":{"line":96,"column":47},"end":{"line":98,"column":7}}]},"10":{"type":"branch","line":102,"loc":{"start":{"line":102,"column":2},"end":{"line":138,"column":3}},"locations":[{"start":{"line":102,"column":2},"end":{"line":138,"column":3}}]},"11":{"type":"branch","line":105,"loc":{"start":{"line":105,"column":56},"end":{"line":107,"column":5}},"locations":[{"start":{"line":105,"column":56},"end":{"line":107,"column":5}}]},"12":{"type":"branch","line":114,"loc":{"start":{"line":114,"column":43},"end":{"line":118,"column":5}},"locations":[{"start":{"line":114,"column":43},"end":{"line":118,"column":5}}]},"13":{"type":"branch","line":119,"loc":{"start":{"line":119,"column":-1},"end":{"line":138,"column":3}},"locations":[{"start":{"line":119,"column":-1},"end":{"line":138,"column":3}}]},"14":{"type":"branch","line":106,"loc":{"start":{"line":106,"column":88},"end":{"line":106,"column":115}},"locations":[{"start":{"line":106,"column":88},"end":{"line":106,"column":115}}]},"15":{"type":"branch","line":122,"loc":{"start":{"line":122,"column":18},"end":{"line":122,"column":57}},"locations":[{"start":{"line":122,"column":18},"end":{"line":122,"column":57}}]},"16":{"type":"branch","line":126,"loc":{"start":{"line":126,"column":18},"end":{"line":126,"column":52}},"locations":[{"start":{"line":126,"column":18},"end":{"line":126,"column":52}}]},"17":{"type":"branch","line":140,"loc":{"start":{"line":140,"column":10},"end":{"line":142,"column":3}},"locations":[{"start":{"line":140,"column":10},"end":{"line":142,"column":3}}]},"18":{"type":"branch","line":144,"loc":{"start":{"line":144,"column":2},"end":{"line":158,"column":3}},"locations":[{"start":{"line":144,"column":2},"end":{"line":158,"column":3}}]},"19":{"type":"branch","line":147,"loc":{"start":{"line":147,"column":66},"end":{"line":154,"column":7}},"locations":[{"start":{"line":147,"column":66},"end":{"line":154,"column":7}}]},"20":{"type":"branch","line":155,"loc":{"start":{"line":155,"column":6},"end":{"line":157,"column":5}},"locations":[{"start":{"line":155,"column":6},"end":{"line":157,"column":5}}]},"21":{"type":"branch","line":160,"loc":{"start":{"line":160,"column":2},"end":{"line":178,"column":3}},"locations":[{"start":{"line":160,"column":2},"end":{"line":178,"column":3}}]},"22":{"type":"branch","line":163,"loc":{"start":{"line":163,"column":56},"end":{"line":174,"column":7}},"locations":[{"start":{"line":163,"column":56},"end":{"line":174,"column":7}}]},"23":{"type":"branch","line":169,"loc":{"start":{"line":169,"column":47},"end":{"line":173,"column":9}},"locations":[{"start":{"line":169,"column":47},"end":{"line":173,"column":9}}]},"24":{"type":"branch","line":175,"loc":{"start":{"line":175,"column":6},"end":{"line":177,"column":5}},"locations":[{"start":{"line":175,"column":6},"end":{"line":177,"column":5}}]},"25":{"type":"branch","line":180,"loc":{"start":{"line":180,"column":10},"end":{"line":182,"column":3}},"locations":[{"start":{"line":180,"column":10},"end":{"line":182,"column":3}}]},"26":{"type":"branch","line":182,"loc":{"start":{"line":182,"column":-1},"end":{"line":182,"column":3}},"locations":[{"start":{"line":182,"column":-1},"end":{"line":182,"column":3}}]},"27":{"type":"branch","line":184,"loc":{"start":{"line":184,"column":2},"end":{"line":193,"column":3}},"locations":[{"start":{"line":184,"column":2},"end":{"line":193,"column":3}}]},"28":{"type":"branch","line":187,"loc":{"start":{"line":187,"column":50},"end":{"line":193,"column":3}},"locations":[{"start":{"line":187,"column":50},"end":{"line":193,"column":3}}]},"29":{"type":"branch","line":188,"loc":{"start":{"line":188,"column":44},"end":{"line":190,"column":7}},"locations":[{"start":{"line":188,"column":44},"end":{"line":190,"column":7}}]},"30":{"type":"branch","line":188,"loc":{"start":{"line":188,"column":23},"end":{"line":188,"column":41}},"locations":[{"start":{"line":188,"column":23},"end":{"line":188,"column":41}}]},"31":{"type":"branch","line":200,"loc":{"start":{"line":200,"column":2},"end":{"line":205,"column":3}},"locations":[{"start":{"line":200,"column":2},"end":{"line":205,"column":3}}]},"32":{"type":"branch","line":207,"loc":{"start":{"line":207,"column":10},"end":{"line":209,"column":3}},"locations":[{"start":{"line":207,"column":10},"end":{"line":209,"column":3}}]},"33":{"type":"branch","line":208,"loc":{"start":{"line":208,"column":45},"end":{"line":208,"column":68}},"locations":[{"start":{"line":208,"column":45},"end":{"line":208,"column":68}}]},"34":{"type":"branch","line":212,"loc":{"start":{"line":212,"column":2},"end":{"line":288,"column":3}},"locations":[{"start":{"line":212,"column":2},"end":{"line":288,"column":3}}]},"35":{"type":"branch","line":223,"loc":{"start":{"line":223,"column":29},"end":{"line":287,"column":5}},"locations":[{"start":{"line":223,"column":29},"end":{"line":287,"column":5}}]},"36":{"type":"branch","line":228,"loc":{"start":{"line":228,"column":33},"end":{"line":231,"column":7}},"locations":[{"start":{"line":228,"column":33},"end":{"line":231,"column":7}}]},"37":{"type":"branch","line":235,"loc":{"start":{"line":235,"column":57},"end":{"line":235,"column":92}},"locations":[{"start":{"line":235,"column":57},"end":{"line":235,"column":92}}]},"38":{"type":"branch","line":235,"loc":{"start":{"line":235,"column":94},"end":{"line":238,"column":7}},"locations":[{"start":{"line":235,"column":94},"end":{"line":238,"column":7}}]},"39":{"type":"branch","line":237,"loc":{"start":{"line":237,"column":-1},"end":{"line":238,"column":7}},"locations":[{"start":{"line":237,"column":-1},"end":{"line":238,"column":7}}]},"40":{"type":"branch","line":239,"loc":{"start":{"line":239,"column":-1},"end":{"line":241,"column":29}},"locations":[{"start":{"line":239,"column":-1},"end":{"line":241,"column":29}}]},"41":{"type":"branch","line":241,"loc":{"start":{"line":241,"column":26},"end":{"line":243,"column":62}},"locations":[{"start":{"line":241,"column":26},"end":{"line":243,"column":62}}]},"42":{"type":"branch","line":243,"loc":{"start":{"line":243,"column":62},"end":{"line":244,"column":53}},"locations":[{"start":{"line":243,"column":62},"end":{"line":244,"column":53}}]},"43":{"type":"branch","line":245,"loc":{"start":{"line":245,"column":8},"end":{"line":277,"column":13}},"locations":[{"start":{"line":245,"column":8},"end":{"line":277,"column":13}}]},"44":{"type":"branch","line":253,"loc":{"start":{"line":253,"column":58},"end":{"line":256,"column":11}},"locations":[{"start":{"line":253,"column":58},"end":{"line":256,"column":11}}]},"45":{"type":"branch","line":262,"loc":{"start":{"line":262,"column":43},"end":{"line":265,"column":19}},"locations":[{"start":{"line":262,"column":43},"end":{"line":265,"column":19}}]},"46":{"type":"branch","line":265,"loc":{"start":{"line":265,"column":13},"end":{"line":269,"column":13}},"locations":[{"start":{"line":265,"column":13},"end":{"line":269,"column":13}}]},"47":{"type":"branch","line":273,"loc":{"start":{"line":273,"column":10},"end":{"line":276,"column":9}},"locations":[{"start":{"line":273,"column":10},"end":{"line":276,"column":9}}]},"48":{"type":"branch","line":277,"loc":{"start":{"line":277,"column":7},"end":{"line":286,"column":7}},"locations":[{"start":{"line":277,"column":7},"end":{"line":286,"column":7}}]},"49":{"type":"branch","line":282,"loc":{"start":{"line":282,"column":12},"end":{"line":282,"column":74}},"locations":[{"start":{"line":282,"column":12},"end":{"line":282,"column":74}}]},"50":{"type":"branch","line":283,"loc":{"start":{"line":283,"column":12},"end":{"line":283,"column":52}},"locations":[{"start":{"line":283,"column":12},"end":{"line":283,"column":52}}]},"51":{"type":"branch","line":215,"loc":{"start":{"line":215,"column":69},"end":{"line":215,"column":96}},"locations":[{"start":{"line":215,"column":69},"end":{"line":215,"column":96}}]},"52":{"type":"branch","line":217,"loc":{"start":{"line":217,"column":32},"end":{"line":221,"column":5}},"locations":[{"start":{"line":217,"column":32},"end":{"line":221,"column":5}}]},"53":{"type":"branch","line":219,"loc":{"start":{"line":219,"column":8},"end":{"line":219,"column":55}},"locations":[{"start":{"line":219,"column":8},"end":{"line":219,"column":55}}]},"54":{"type":"branch","line":220,"loc":{"start":{"line":220,"column":8},"end":{"line":220,"column":25}},"locations":[{"start":{"line":220,"column":8},"end":{"line":220,"column":25}}]},"55":{"type":"branch","line":290,"loc":{"start":{"line":290,"column":10},"end":{"line":296,"column":3}},"locations":[{"start":{"line":290,"column":10},"end":{"line":296,"column":3}}]},"56":{"type":"branch","line":305,"loc":{"start":{"line":305,"column":10},"end":{"line":316,"column":3}},"locations":[{"start":{"line":305,"column":10},"end":{"line":316,"column":3}}]},"57":{"type":"branch","line":312,"loc":{"start":{"line":312,"column":39},"end":{"line":312,"column":70}},"locations":[{"start":{"line":312,"column":39},"end":{"line":312,"column":70}}]},"58":{"type":"branch","line":312,"loc":{"start":{"line":312,"column":72},"end":{"line":314,"column":5}},"locations":[{"start":{"line":312,"column":72},"end":{"line":314,"column":5}}]},"59":{"type":"branch","line":315,"loc":{"start":{"line":315,"column":-1},"end":{"line":316,"column":3}},"locations":[{"start":{"line":315,"column":-1},"end":{"line":316,"column":3}}]},"60":{"type":"branch","line":318,"loc":{"start":{"line":318,"column":10},"end":{"line":333,"column":3}},"locations":[{"start":{"line":318,"column":10},"end":{"line":333,"column":3}}]},"61":{"type":"branch","line":319,"loc":{"start":{"line":319,"column":33},"end":{"line":319,"column":56}},"locations":[{"start":{"line":319,"column":33},"end":{"line":319,"column":56}}]},"62":{"type":"branch","line":319,"loc":{"start":{"line":319,"column":58},"end":{"line":321,"column":5}},"locations":[{"start":{"line":319,"column":58},"end":{"line":321,"column":5}}]},"63":{"type":"branch","line":322,"loc":{"start":{"line":322,"column":-1},"end":{"line":328,"column":31}},"locations":[{"start":{"line":322,"column":-1},"end":{"line":328,"column":31}}]},"64":{"type":"branch","line":328,"loc":{"start":{"line":328,"column":31},"end":{"line":330,"column":5}},"locations":[{"start":{"line":328,"column":31},"end":{"line":330,"column":5}}]},"65":{"type":"branch","line":331,"loc":{"start":{"line":331,"column":-1},"end":{"line":333,"column":3}},"locations":[{"start":{"line":331,"column":-1},"end":{"line":333,"column":3}}]},"66":{"type":"branch","line":326,"loc":{"start":{"line":326,"column":6},"end":{"line":326,"column":78}},"locations":[{"start":{"line":326,"column":6},"end":{"line":326,"column":78}}]},"67":{"type":"branch","line":326,"loc":{"start":{"line":326,"column":52},"end":{"line":326,"column":76}},"locations":[{"start":{"line":326,"column":52},"end":{"line":326,"column":76}}]},"68":{"type":"branch","line":335,"loc":{"start":{"line":335,"column":10},"end":{"line":348,"column":3}},"locations":[{"start":{"line":335,"column":10},"end":{"line":348,"column":3}}]},"69":{"type":"branch","line":338,"loc":{"start":{"line":338,"column":53},"end":{"line":346,"column":5}},"locations":[{"start":{"line":338,"column":53},"end":{"line":346,"column":5}}]},"70":{"type":"branch","line":339,"loc":{"start":{"line":339,"column":45},"end":{"line":343,"column":13}},"locations":[{"start":{"line":339,"column":45},"end":{"line":343,"column":13}}]}},"b":{"0":[21],"1":[16],"2":[111],"3":[21],"4":[6],"5":[22],"6":[16],"7":[16],"8":[7],"9":[1],"10":[16],"11":[2],"12":[1],"13":[15],"14":[5],"15":[330],"16":[330],"17":[15],"18":[346],"19":[16],"20":[0],"21":[346],"22":[16],"23":[0],"24":[0],"25":[15],"26":[14],"27":[8],"28":[4040],"29":[343],"30":[1043],"31":[2],"32":[72],"33":[0],"34":[15],"35":[55],"36":[0],"37":[24],"38":[39],"39":[38],"40":[16],"41":[6],"42":[6],"43":[6],"44":[0],"45":[1],"46":[5],"47":[0],"48":[10],"49":[2],"50":[8],"51":[15],"52":[61],"53":[39],"54":[22],"55":[16],"56":[16],"57":[2],"58":[2],"59":[14],"60":[16],"61":[3],"62":[13],"63":[3],"64":[2],"65":[3],"66":[204],"67":[2040],"68":[10],"69":[1],"70":[0]},"fnMap":{"0":{"name":"BaseFetchService","decl":{"start":{"line":48,"column":2},"end":{"line":57,"column":6}},"loc":{"start":{"line":48,"column":2},"end":{"line":57,"column":6}},"line":48},"1":{"name":"get latestBestHeight","decl":{"start":{"line":59,"column":2},"end":{"line":62,"column":3}},"loc":{"start":{"line":59,"column":2},"end":{"line":62,"column":3}},"line":59},"2":{"name":"get latestFinalizedHeight","decl":{"start":{"line":64,"column":2},"end":{"line":67,"column":3}},"loc":{"start":{"line":64,"column":2},"end":{"line":67,"column":3}},"line":64},"3":{"name":"onApplicationShutdown","decl":{"start":{"line":69,"column":2},"end":{"line":77,"column":3}},"loc":{"start":{"line":69,"column":2},"end":{"line":77,"column":3}},"line":69},"4":{"name":"get useDictionary","decl":{"start":{"line":79,"column":2},"end":{"line":83,"column":3}},"loc":{"start":{"line":79,"column":2},"end":{"line":83,"column":3}},"line":79},"5":{"name":"updateBypassBlocksFromDatasources","decl":{"start":{"line":85,"column":10},"end":{"line":100,"column":3}},"loc":{"start":{"line":85,"column":10},"end":{"line":100,"column":3}},"line":85},"6":{"name":"init","decl":{"start":{"line":102,"column":2},"end":{"line":138,"column":3}},"loc":{"start":{"line":102,"column":2},"end":{"line":138,"column":3}},"line":102},"7":{"name":"updateDictionary","decl":{"start":{"line":140,"column":10},"end":{"line":142,"column":3}},"loc":{"start":{"line":140,"column":10},"end":{"line":142,"column":3}},"line":140},"8":{"name":"getFinalizedBlockHead","decl":{"start":{"line":144,"column":2},"end":{"line":158,"column":3}},"loc":{"start":{"line":144,"column":2},"end":{"line":158,"column":3}},"line":144},"9":{"name":"getBestBlockHead","decl":{"start":{"line":160,"column":2},"end":{"line":178,"column":3}},"loc":{"start":{"line":160,"column":2},"end":{"line":178,"column":3}},"line":160},"10":{"name":"startLoop","decl":{"start":{"line":180,"column":10},"end":{"line":182,"column":3}},"loc":{"start":{"line":180,"column":10},"end":{"line":182,"column":3}},"line":180},"11":{"name":"getModuloBlocks","decl":{"start":{"line":184,"column":2},"end":{"line":193,"column":3}},"loc":{"start":{"line":184,"column":2},"end":{"line":193,"column":3}},"line":184},"12":{"name":"getEnqueuedModuloBlocks","decl":{"start":{"line":200,"column":2},"end":{"line":205,"column":3}},"loc":{"start":{"line":200,"column":2},"end":{"line":205,"column":3}},"line":200},"13":{"name":"latestHeight","decl":{"start":{"line":207,"column":10},"end":{"line":209,"column":3}},"loc":{"start":{"line":207,"column":10},"end":{"line":209,"column":3}},"line":207},"14":{"name":"fillNextBlockBuffer","decl":{"start":{"line":212,"column":2},"end":{"line":288,"column":3}},"loc":{"start":{"line":212,"column":2},"end":{"line":288,"column":3}},"line":212},"15":{"name":"getStartBlockHeight","decl":{"start":{"line":217,"column":32},"end":{"line":221,"column":5}},"loc":{"start":{"line":217,"column":32},"end":{"line":221,"column":5}},"line":217},"16":{"name":"enqueueBlocks","decl":{"start":{"line":290,"column":10},"end":{"line":296,"column":3}},"loc":{"start":{"line":290,"column":10},"end":{"line":296,"column":3}},"line":290},"17":{"name":"getLatestBufferHeight","decl":{"start":{"line":305,"column":10},"end":{"line":316,"column":3}},"loc":{"start":{"line":305,"column":10},"end":{"line":316,"column":3}},"line":305},"18":{"name":"filteredBlockBatch","decl":{"start":{"line":318,"column":10},"end":{"line":333,"column":3}},"loc":{"start":{"line":318,"column":10},"end":{"line":333,"column":3}},"line":318},"19":{"name":"nextEndBlockHeight","decl":{"start":{"line":335,"column":10},"end":{"line":348,"column":3}},"loc":{"start":{"line":335,"column":10},"end":{"line":348,"column":3}},"line":335},"20":{"name":"resetForNewDs","decl":{"start":{"line":350,"column":2},"end":{"line":353,"column":3}},"loc":{"start":{"line":350,"column":2},"end":{"line":353,"column":3}},"line":350},"21":{"name":"getLatestFinalizedHeight","decl":{"start":{"line":355,"column":2},"end":{"line":357,"column":3}},"loc":{"start":{"line":355,"column":2},"end":{"line":357,"column":3}},"line":355},"22":{"name":"resetForIncorrectBestBlock","decl":{"start":{"line":359,"column":2},"end":{"line":362,"column":3}},"loc":{"start":{"line":359,"column":2},"end":{"line":362,"column":3}},"line":359}},"f":{"0":21,"1":16,"2":111,"3":21,"4":22,"5":16,"6":16,"7":15,"8":346,"9":346,"10":15,"11":8,"12":2,"13":72,"14":15,"15":61,"16":16,"17":16,"18":16,"19":10,"20":0,"21":0,"22":0}},"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/indexer/inMemoryCache.service.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/indexer/inMemoryCache.service.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":42}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":40}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":0}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":3}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":75}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":91}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":71}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":3}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":13}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":88}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":29}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":0}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":24}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":12}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":65}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":69}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":31}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":8}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":0}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":65}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":70}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":32}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":8}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":6}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":3}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":1}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":20,"14":20,"15":20,"16":2,"17":2,"18":2,"19":4,"20":2,"21":2,"22":2,"23":2,"24":3,"25":2,"26":2,"27":2,"28":20},"branchMap":{"0":{"type":"branch","line":13,"loc":{"start":{"line":13,"column":7},"end":{"line":29,"column":1}},"locations":[{"start":{"line":13,"column":7},"end":{"line":29,"column":1}}]},"1":{"type":"branch","line":16,"loc":{"start":{"line":16,"column":2},"end":{"line":28,"column":3}},"locations":[{"start":{"line":16,"column":2},"end":{"line":28,"column":3}}]},"2":{"type":"branch","line":19,"loc":{"start":{"line":19,"column":11},"end":{"line":21,"column":7}},"locations":[{"start":{"line":19,"column":11},"end":{"line":21,"column":7}}]},"3":{"type":"branch","line":24,"loc":{"start":{"line":24,"column":11},"end":{"line":26,"column":7}},"locations":[{"start":{"line":24,"column":11},"end":{"line":26,"column":7}}]}},"b":{"0":[20],"1":[2],"2":[4],"3":[3]},"fnMap":{"0":{"name":"InMemoryCacheService","decl":{"start":{"line":13,"column":7},"end":{"line":29,"column":1}},"loc":{"start":{"line":13,"column":7},"end":{"line":29,"column":1}},"line":13},"1":{"name":"getCache","decl":{"start":{"line":16,"column":2},"end":{"line":28,"column":3}},"loc":{"start":{"line":16,"column":2},"end":{"line":28,"column":3}},"line":16},"2":{"name":"get","decl":{"start":{"line":19,"column":11},"end":{"line":21,"column":7}},"loc":{"start":{"line":19,"column":11},"end":{"line":21,"column":7}},"line":19},"3":{"name":"set","decl":{"start":{"line":24,"column":11},"end":{"line":26,"column":7}},"loc":{"start":{"line":24,"column":11},"end":{"line":26,"column":7}},"line":24}},"f":{"0":20,"1":2,"2":4,"3":3}},"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/indexer/index.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/indexer/index.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":36}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":41}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":46}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":27}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":22}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":24}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":34}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":32}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":40}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":29}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":25}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":29}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":26}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":37}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":34}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":37}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":34}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":30}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":34}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":32}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":34}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":39}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":44}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1},"branchMap":{},"b":{},"fnMap":{},"f":{}},"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/indexer/indexer.manager.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/indexer/indexer.manager.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":28}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":71}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":36}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":40}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":36}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":41}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":55}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":62}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":54}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":41}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":48}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":70}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":0}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":36}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":0}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":36}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":79}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":9}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":45}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":2}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":99}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":83}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":0}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":88}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":18}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":10}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":13}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":1}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":0}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":41}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":17}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":20}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":18}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":39}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":28}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":61}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":34}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":51}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":56}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":35}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":1}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":106}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":44}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":42}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":0}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":51}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":51}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":0}},"51":{"start":{"line":52,"column":0},"end":{"line":52,"column":93}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":68}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":0}},"54":{"start":{"line":55,"column":0},"end":{"line":55,"column":36}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":13}},"56":{"start":{"line":57,"column":0},"end":{"line":57,"column":22}},"57":{"start":{"line":58,"column":0},"end":{"line":58,"column":45}},"58":{"start":{"line":59,"column":0},"end":{"line":59,"column":19}},"59":{"start":{"line":60,"column":0},"end":{"line":60,"column":0}},"60":{"start":{"line":61,"column":0},"end":{"line":61,"column":74}},"61":{"start":{"line":62,"column":0},"end":{"line":62,"column":96}},"62":{"start":{"line":63,"column":0},"end":{"line":63,"column":0}},"63":{"start":{"line":64,"column":0},"end":{"line":64,"column":14}},"64":{"start":{"line":65,"column":0},"end":{"line":65,"column":39}},"65":{"start":{"line":66,"column":0},"end":{"line":66,"column":46}},"66":{"start":{"line":67,"column":0},"end":{"line":67,"column":82}},"67":{"start":{"line":68,"column":0},"end":{"line":68,"column":64}},"68":{"start":{"line":69,"column":0},"end":{"line":69,"column":51}},"69":{"start":{"line":70,"column":0},"end":{"line":70,"column":67}},"70":{"start":{"line":71,"column":0},"end":{"line":71,"column":33}},"71":{"start":{"line":72,"column":0},"end":{"line":72,"column":38}},"72":{"start":{"line":73,"column":0},"end":{"line":73,"column":5}},"73":{"start":{"line":74,"column":0},"end":{"line":74,"column":41}},"74":{"start":{"line":75,"column":0},"end":{"line":75,"column":3}},"75":{"start":{"line":76,"column":0},"end":{"line":76,"column":0}},"76":{"start":{"line":77,"column":0},"end":{"line":77,"column":37}},"77":{"start":{"line":78,"column":0},"end":{"line":78,"column":21}},"78":{"start":{"line":79,"column":0},"end":{"line":79,"column":22}},"79":{"start":{"line":80,"column":0},"end":{"line":80,"column":29}},"80":{"start":{"line":81,"column":0},"end":{"line":81,"column":36}},"81":{"start":{"line":82,"column":0},"end":{"line":82,"column":33}},"82":{"start":{"line":83,"column":0},"end":{"line":83,"column":54}},"83":{"start":{"line":84,"column":0},"end":{"line":84,"column":0}},"84":{"start":{"line":85,"column":0},"end":{"line":85,"column":81}},"85":{"start":{"line":86,"column":0},"end":{"line":86,"column":0}},"86":{"start":{"line":87,"column":0},"end":{"line":87,"column":61}},"87":{"start":{"line":88,"column":0},"end":{"line":88,"column":0}},"88":{"start":{"line":89,"column":0},"end":{"line":89,"column":18}},"89":{"start":{"line":90,"column":0},"end":{"line":90,"column":84}},"90":{"start":{"line":91,"column":0},"end":{"line":91,"column":0}},"91":{"start":{"line":92,"column":0},"end":{"line":92,"column":53}},"92":{"start":{"line":93,"column":0},"end":{"line":93,"column":30}},"93":{"start":{"line":94,"column":0},"end":{"line":94,"column":85}},"94":{"start":{"line":95,"column":0},"end":{"line":95,"column":71}},"95":{"start":{"line":96,"column":0},"end":{"line":96,"column":42}},"96":{"start":{"line":97,"column":0},"end":{"line":97,"column":0}},"97":{"start":{"line":98,"column":0},"end":{"line":98,"column":65}},"98":{"start":{"line":99,"column":0},"end":{"line":99,"column":0}},"99":{"start":{"line":100,"column":0},"end":{"line":100,"column":47}},"100":{"start":{"line":101,"column":0},"end":{"line":101,"column":83}},"101":{"start":{"line":102,"column":0},"end":{"line":102,"column":77}},"102":{"start":{"line":103,"column":0},"end":{"line":103,"column":25}},"103":{"start":{"line":104,"column":0},"end":{"line":104,"column":17}},"104":{"start":{"line":105,"column":0},"end":{"line":105,"column":36}},"105":{"start":{"line":106,"column":0},"end":{"line":106,"column":13}},"106":{"start":{"line":107,"column":0},"end":{"line":107,"column":105}},"107":{"start":{"line":108,"column":0},"end":{"line":108,"column":42}},"108":{"start":{"line":109,"column":0},"end":{"line":109,"column":34}},"109":{"start":{"line":110,"column":0},"end":{"line":110,"column":38}},"110":{"start":{"line":111,"column":0},"end":{"line":111,"column":0}},"111":{"start":{"line":112,"column":0},"end":{"line":112,"column":18}},"112":{"start":{"line":113,"column":0},"end":{"line":113,"column":9}},"113":{"start":{"line":114,"column":0},"end":{"line":114,"column":5}},"114":{"start":{"line":115,"column":0},"end":{"line":115,"column":0}},"115":{"start":{"line":116,"column":0},"end":{"line":116,"column":12}},"116":{"start":{"line":117,"column":0},"end":{"line":117,"column":23}},"117":{"start":{"line":118,"column":0},"end":{"line":118,"column":45}},"118":{"start":{"line":119,"column":0},"end":{"line":119,"column":25}},"119":{"start":{"line":120,"column":0},"end":{"line":120,"column":6}},"120":{"start":{"line":121,"column":0},"end":{"line":121,"column":3}},"121":{"start":{"line":122,"column":0},"end":{"line":122,"column":0}},"122":{"start":{"line":123,"column":0},"end":{"line":123,"column":91}},"123":{"start":{"line":124,"column":0},"end":{"line":124,"column":44}},"124":{"start":{"line":125,"column":0},"end":{"line":125,"column":75}},"125":{"start":{"line":126,"column":0},"end":{"line":126,"column":5}},"126":{"start":{"line":127,"column":0},"end":{"line":127,"column":3}},"127":{"start":{"line":128,"column":0},"end":{"line":128,"column":0}},"128":{"start":{"line":129,"column":0},"end":{"line":129,"column":84}},"129":{"start":{"line":130,"column":0},"end":{"line":130,"column":25}},"130":{"start":{"line":131,"column":0},"end":{"line":131,"column":0}},"131":{"start":{"line":132,"column":0},"end":{"line":132,"column":36}},"132":{"start":{"line":133,"column":0},"end":{"line":133,"column":13}},"133":{"start":{"line":134,"column":0},"end":{"line":134,"column":38}},"134":{"start":{"line":135,"column":0},"end":{"line":135,"column":48}},"135":{"start":{"line":136,"column":0},"end":{"line":136,"column":72}},"136":{"start":{"line":137,"column":0},"end":{"line":137,"column":6}},"137":{"start":{"line":138,"column":0},"end":{"line":138,"column":0}},"138":{"start":{"line":139,"column":0},"end":{"line":139,"column":35}},"139":{"start":{"line":140,"column":0},"end":{"line":140,"column":44}},"140":{"start":{"line":141,"column":0},"end":{"line":141,"column":32}},"141":{"start":{"line":142,"column":0},"end":{"line":142,"column":107}},"142":{"start":{"line":143,"column":0},"end":{"line":143,"column":14}},"143":{"start":{"line":144,"column":0},"end":{"line":144,"column":20}},"144":{"start":{"line":145,"column":0},"end":{"line":145,"column":7}},"145":{"start":{"line":146,"column":0},"end":{"line":146,"column":7}},"146":{"start":{"line":147,"column":0},"end":{"line":147,"column":0}},"147":{"start":{"line":148,"column":0},"end":{"line":148,"column":22}},"148":{"start":{"line":149,"column":0},"end":{"line":149,"column":3}},"149":{"start":{"line":150,"column":0},"end":{"line":150,"column":0}},"150":{"start":{"line":151,"column":0},"end":{"line":151,"column":60}},"151":{"start":{"line":152,"column":0},"end":{"line":152,"column":21}},"152":{"start":{"line":153,"column":0},"end":{"line":153,"column":19}},"153":{"start":{"line":154,"column":0},"end":{"line":154,"column":45}},"154":{"start":{"line":155,"column":0},"end":{"line":155,"column":115}},"155":{"start":{"line":156,"column":0},"end":{"line":156,"column":66}},"156":{"start":{"line":157,"column":0},"end":{"line":157,"column":28}},"157":{"start":{"line":158,"column":0},"end":{"line":158,"column":90}},"158":{"start":{"line":159,"column":0},"end":{"line":159,"column":75}},"159":{"start":{"line":160,"column":0},"end":{"line":160,"column":106}},"160":{"start":{"line":161,"column":0},"end":{"line":161,"column":8}},"161":{"start":{"line":162,"column":0},"end":{"line":162,"column":22}},"162":{"start":{"line":163,"column":0},"end":{"line":163,"column":5}},"163":{"start":{"line":164,"column":0},"end":{"line":164,"column":3}},"164":{"start":{"line":165,"column":0},"end":{"line":165,"column":0}},"165":{"start":{"line":166,"column":0},"end":{"line":166,"column":55}},"166":{"start":{"line":167,"column":0},"end":{"line":167,"column":12}},"167":{"start":{"line":168,"column":0},"end":{"line":168,"column":29}},"168":{"start":{"line":169,"column":0},"end":{"line":169,"column":11}},"169":{"start":{"line":170,"column":0},"end":{"line":170,"column":46}},"170":{"start":{"line":171,"column":0},"end":{"line":171,"column":20}},"171":{"start":{"line":172,"column":0},"end":{"line":172,"column":27}},"172":{"start":{"line":173,"column":0},"end":{"line":173,"column":81}},"173":{"start":{"line":174,"column":0},"end":{"line":174,"column":0}},"174":{"start":{"line":175,"column":0},"end":{"line":175,"column":31}},"175":{"start":{"line":176,"column":0},"end":{"line":176,"column":50}},"176":{"start":{"line":177,"column":0},"end":{"line":177,"column":81}},"177":{"start":{"line":178,"column":0},"end":{"line":178,"column":8}},"178":{"start":{"line":179,"column":0},"end":{"line":179,"column":0}},"179":{"start":{"line":180,"column":0},"end":{"line":180,"column":39}},"180":{"start":{"line":181,"column":0},"end":{"line":181,"column":76}},"181":{"start":{"line":182,"column":0},"end":{"line":182,"column":38}},"182":{"start":{"line":183,"column":0},"end":{"line":183,"column":0}},"183":{"start":{"line":184,"column":0},"end":{"line":184,"column":74}},"184":{"start":{"line":185,"column":0},"end":{"line":185,"column":0}},"185":{"start":{"line":186,"column":0},"end":{"line":186,"column":32}},"186":{"start":{"line":187,"column":0},"end":{"line":187,"column":31}},"187":{"start":{"line":188,"column":0},"end":{"line":188,"column":38}},"188":{"start":{"line":189,"column":0},"end":{"line":189,"column":35}},"189":{"start":{"line":190,"column":0},"end":{"line":190,"column":29}},"190":{"start":{"line":191,"column":0},"end":{"line":191,"column":44}},"191":{"start":{"line":192,"column":0},"end":{"line":192,"column":64}},"192":{"start":{"line":193,"column":0},"end":{"line":193,"column":7}},"193":{"start":{"line":194,"column":0},"end":{"line":194,"column":37}},"194":{"start":{"line":195,"column":0},"end":{"line":195,"column":112}},"195":{"start":{"line":196,"column":0},"end":{"line":196,"column":44}},"196":{"start":{"line":197,"column":0},"end":{"line":197,"column":0}},"197":{"start":{"line":198,"column":0},"end":{"line":198,"column":83}},"198":{"start":{"line":199,"column":0},"end":{"line":199,"column":9}},"199":{"start":{"line":200,"column":0},"end":{"line":200,"column":0}},"200":{"start":{"line":201,"column":0},"end":{"line":201,"column":39}},"201":{"start":{"line":202,"column":0},"end":{"line":202,"column":76}},"202":{"start":{"line":203,"column":0},"end":{"line":203,"column":38}},"203":{"start":{"line":204,"column":0},"end":{"line":204,"column":70}},"204":{"start":{"line":205,"column":0},"end":{"line":205,"column":7}},"205":{"start":{"line":206,"column":0},"end":{"line":206,"column":5}},"206":{"start":{"line":207,"column":0},"end":{"line":207,"column":3}},"207":{"start":{"line":208,"column":0},"end":{"line":208,"column":0}},"208":{"start":{"line":209,"column":0},"end":{"line":209,"column":60}},"209":{"start":{"line":210,"column":0},"end":{"line":210,"column":73}},"210":{"start":{"line":211,"column":0},"end":{"line":211,"column":29}},"211":{"start":{"line":212,"column":0},"end":{"line":212,"column":38}},"212":{"start":{"line":213,"column":0},"end":{"line":213,"column":72}},"213":{"start":{"line":214,"column":0},"end":{"line":214,"column":22}},"214":{"start":{"line":215,"column":0},"end":{"line":215,"column":62}},"215":{"start":{"line":216,"column":0},"end":{"line":216,"column":0}},"216":{"start":{"line":217,"column":0},"end":{"line":217,"column":30}},"217":{"start":{"line":218,"column":0},"end":{"line":218,"column":28}},"218":{"start":{"line":219,"column":0},"end":{"line":219,"column":65}},"219":{"start":{"line":220,"column":0},"end":{"line":220,"column":42}},"220":{"start":{"line":221,"column":0},"end":{"line":221,"column":56}},"221":{"start":{"line":222,"column":0},"end":{"line":222,"column":9}},"222":{"start":{"line":223,"column":0},"end":{"line":223,"column":21}},"223":{"start":{"line":224,"column":0},"end":{"line":224,"column":8}},"224":{"start":{"line":225,"column":0},"end":{"line":225,"column":28}},"225":{"start":{"line":226,"column":0},"end":{"line":226,"column":93}},"226":{"start":{"line":227,"column":0},"end":{"line":227,"column":0}},"227":{"start":{"line":228,"column":0},"end":{"line":228,"column":13}},"228":{"start":{"line":229,"column":0},"end":{"line":229,"column":44}},"229":{"start":{"line":230,"column":0},"end":{"line":230,"column":35}},"230":{"start":{"line":231,"column":0},"end":{"line":231,"column":24}},"231":{"start":{"line":232,"column":0},"end":{"line":232,"column":15}},"232":{"start":{"line":233,"column":0},"end":{"line":233,"column":13}},"233":{"start":{"line":234,"column":0},"end":{"line":234,"column":26}},"234":{"start":{"line":235,"column":0},"end":{"line":235,"column":64}},"235":{"start":{"line":236,"column":0},"end":{"line":236,"column":18}},"236":{"start":{"line":237,"column":0},"end":{"line":237,"column":9}},"237":{"start":{"line":238,"column":0},"end":{"line":238,"column":9}},"238":{"start":{"line":239,"column":0},"end":{"line":239,"column":3}},"239":{"start":{"line":240,"column":0},"end":{"line":240,"column":0}},"240":{"start":{"line":241,"column":0},"end":{"line":241,"column":71}},"241":{"start":{"line":242,"column":0},"end":{"line":242,"column":73}},"242":{"start":{"line":243,"column":0},"end":{"line":243,"column":23}},"243":{"start":{"line":244,"column":0},"end":{"line":244,"column":27}},"244":{"start":{"line":245,"column":0},"end":{"line":245,"column":28}},"245":{"start":{"line":246,"column":0},"end":{"line":246,"column":20}},"246":{"start":{"line":247,"column":0},"end":{"line":247,"column":62}},"247":{"start":{"line":248,"column":0},"end":{"line":248,"column":63}},"248":{"start":{"line":249,"column":0},"end":{"line":249,"column":0}},"249":{"start":{"line":250,"column":0},"end":{"line":250,"column":89}},"250":{"start":{"line":251,"column":0},"end":{"line":251,"column":0}},"251":{"start":{"line":252,"column":0},"end":{"line":252,"column":43}},"252":{"start":{"line":253,"column":0},"end":{"line":253,"column":20}},"253":{"start":{"line":254,"column":0},"end":{"line":254,"column":20}},"254":{"start":{"line":255,"column":0},"end":{"line":255,"column":11}},"255":{"start":{"line":256,"column":0},"end":{"line":256,"column":31}},"256":{"start":{"line":257,"column":0},"end":{"line":257,"column":39}},"257":{"start":{"line":258,"column":0},"end":{"line":258,"column":15}},"258":{"start":{"line":259,"column":0},"end":{"line":259,"column":8}},"259":{"start":{"line":260,"column":0},"end":{"line":260,"column":26}},"260":{"start":{"line":261,"column":0},"end":{"line":261,"column":71}},"261":{"start":{"line":262,"column":0},"end":{"line":262,"column":16}},"262":{"start":{"line":263,"column":0},"end":{"line":263,"column":9}},"263":{"start":{"line":264,"column":0},"end":{"line":264,"column":0}},"264":{"start":{"line":265,"column":0},"end":{"line":265,"column":99}},"265":{"start":{"line":266,"column":0},"end":{"line":266,"column":99}},"266":{"start":{"line":267,"column":0},"end":{"line":267,"column":42}},"267":{"start":{"line":268,"column":0},"end":{"line":268,"column":53}},"268":{"start":{"line":269,"column":0},"end":{"line":269,"column":5}},"269":{"start":{"line":270,"column":0},"end":{"line":270,"column":3}},"270":{"start":{"line":271,"column":0},"end":{"line":271,"column":1}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"38":1,"39":1,"40":1,"41":1,"42":1,"43":1,"44":1,"45":1,"46":1,"47":1,"48":1,"49":1,"50":1,"51":1,"52":1,"53":1,"54":1,"55":1,"56":1,"57":1,"58":1,"59":1,"60":1,"61":1,"62":1,"63":1,"64":20,"65":20,"66":20,"67":20,"68":20,"69":20,"70":20,"71":20,"72":20,"73":20,"74":20,"75":1,"76":1,"77":0,"78":0,"79":0,"80":0,"81":0,"82":0,"83":0,"84":0,"85":0,"86":0,"87":0,"88":0,"89":0,"90":0,"91":0,"92":0,"93":0,"94":0,"95":0,"96":0,"97":0,"98":0,"99":0,"100":0,"101":0,"102":0,"103":0,"104":0,"105":0,"106":0,"107":0,"108":0,"109":0,"110":0,"111":0,"112":0,"113":0,"114":0,"115":0,"116":0,"117":0,"118":0,"119":0,"120":0,"121":1,"122":1,"123":0,"124":0,"125":0,"126":0,"127":1,"128":1,"129":0,"130":0,"131":0,"132":0,"133":0,"134":0,"135":0,"136":0,"137":0,"138":0,"139":0,"140":0,"141":0,"142":0,"143":0,"144":0,"145":0,"146":0,"147":0,"148":0,"149":1,"150":1,"151":0,"152":0,"153":0,"154":0,"155":0,"156":0,"157":0,"158":0,"159":0,"160":0,"161":0,"162":0,"163":0,"164":1,"165":1,"166":0,"167":0,"168":0,"169":0,"170":0,"171":0,"172":0,"173":0,"174":0,"175":0,"176":0,"177":0,"178":0,"179":0,"180":0,"181":0,"182":0,"183":0,"184":0,"185":0,"186":0,"187":0,"188":0,"189":0,"190":0,"191":0,"192":0,"193":0,"194":0,"195":0,"196":0,"197":0,"198":0,"199":0,"200":0,"201":0,"202":0,"203":0,"204":0,"205":0,"206":0,"207":1,"208":1,"209":0,"210":0,"211":0,"212":0,"213":0,"214":0,"215":0,"216":0,"217":0,"218":0,"219":0,"220":0,"221":0,"222":0,"223":0,"224":0,"225":0,"226":0,"227":0,"228":0,"229":0,"230":0,"231":0,"232":0,"233":0,"234":0,"235":0,"236":0,"237":0,"238":0,"239":1,"240":1,"241":0,"242":0,"243":0,"244":0,"245":0,"246":0,"247":0,"248":0,"249":0,"250":0,"251":0,"252":0,"253":0,"254":0,"255":0,"256":0,"257":0,"258":0,"259":0,"260":0,"261":0,"262":0,"263":0,"264":0,"265":0,"266":0,"267":0,"268":0,"269":0,"270":1},"branchMap":{"0":{"type":"branch","line":64,"loc":{"start":{"line":64,"column":2},"end":{"line":75,"column":3}},"locations":[{"start":{"line":64,"column":2},"end":{"line":75,"column":3}}]}},"b":{"0":[20]},"fnMap":{"0":{"name":"BaseIndexerManager","decl":{"start":{"line":64,"column":2},"end":{"line":75,"column":3}},"loc":{"start":{"line":64,"column":2},"end":{"line":75,"column":3}},"line":64},"1":{"name":"internalIndexBlock","decl":{"start":{"line":77,"column":12},"end":{"line":121,"column":3}},"loc":{"start":{"line":77,"column":12},"end":{"line":121,"column":3}},"line":77},"2":{"name":"processUnfinalizedBlocks","decl":{"start":{"line":123,"column":12},"end":{"line":127,"column":3}},"loc":{"start":{"line":123,"column":12},"end":{"line":127,"column":3}},"line":123},"3":{"name":"filterDataSources","decl":{"start":{"line":129,"column":10},"end":{"line":149,"column":3}},"loc":{"start":{"line":129,"column":10},"end":{"line":149,"column":3}},"line":129},"4":{"name":"assertDataSources","decl":{"start":{"line":151,"column":10},"end":{"line":164,"column":3}},"loc":{"start":{"line":151,"column":10},"end":{"line":164,"column":3}},"line":151},"5":{"name":"indexData","decl":{"start":{"line":166,"column":12},"end":{"line":207,"column":3}},"loc":{"start":{"line":166,"column":12},"end":{"line":207,"column":3}},"line":166},"6":{"name":"filterCustomDsHandlers","decl":{"start":{"line":209,"column":10},"end":{"line":239,"column":3}},"loc":{"start":{"line":209,"column":10},"end":{"line":239,"column":3}},"line":209},"7":{"name":"transformAndExecuteCustomDs","decl":{"start":{"line":241,"column":10},"end":{"line":270,"column":3}},"loc":{"start":{"line":241,"column":10},"end":{"line":270,"column":3}},"line":241}},"f":{"0":20,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0}},"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/indexer/poi/PoiBlock.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/indexer/poi/PoiBlock.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":8}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":12}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":14}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":11}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":8}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":8}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":14}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":11}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":15}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":11}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":15}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":14}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":22}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":52}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":51}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":52}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":0}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":22}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":13}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":45}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":39}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":20}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":24}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":18}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":93}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":66}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":3}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":21}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":14}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":22}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":56}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":60}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":29}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":16}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":5}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":4}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":2}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":0}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":47}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":61}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":22}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":24}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":45}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":59}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":48}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":26}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":29}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":28}},"51":{"start":{"line":52,"column":0},"end":{"line":52,"column":46}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":54}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":40}},"54":{"start":{"line":55,"column":0},"end":{"line":55,"column":0}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":14}},"56":{"start":{"line":57,"column":0},"end":{"line":57,"column":15}},"57":{"start":{"line":58,"column":0},"end":{"line":58,"column":38}},"58":{"start":{"line":59,"column":0},"end":{"line":59,"column":41}},"59":{"start":{"line":60,"column":0},"end":{"line":60,"column":22}},"60":{"start":{"line":61,"column":0},"end":{"line":61,"column":28}},"61":{"start":{"line":62,"column":0},"end":{"line":62,"column":21}},"62":{"start":{"line":63,"column":0},"end":{"line":63,"column":5}},"63":{"start":{"line":64,"column":0},"end":{"line":64,"column":17}},"64":{"start":{"line":65,"column":0},"end":{"line":65,"column":41}},"65":{"start":{"line":66,"column":0},"end":{"line":66,"column":47}},"66":{"start":{"line":67,"column":0},"end":{"line":67,"column":31}},"67":{"start":{"line":68,"column":0},"end":{"line":68,"column":33}},"68":{"start":{"line":69,"column":0},"end":{"line":69,"column":21}},"69":{"start":{"line":70,"column":0},"end":{"line":70,"column":3}},"70":{"start":{"line":71,"column":0},"end":{"line":71,"column":0}},"71":{"start":{"line":72,"column":0},"end":{"line":72,"column":16}},"72":{"start":{"line":73,"column":0},"end":{"line":73,"column":15}},"73":{"start":{"line":74,"column":0},"end":{"line":74,"column":47}},"74":{"start":{"line":75,"column":0},"end":{"line":75,"column":41}},"75":{"start":{"line":76,"column":0},"end":{"line":76,"column":22}},"76":{"start":{"line":77,"column":0},"end":{"line":77,"column":27}},"77":{"start":{"line":78,"column":0},"end":{"line":78,"column":15}},"78":{"start":{"line":79,"column":0},"end":{"line":79,"column":96}},"79":{"start":{"line":80,"column":0},"end":{"line":80,"column":57}},"80":{"start":{"line":81,"column":0},"end":{"line":81,"column":0}},"81":{"start":{"line":82,"column":0},"end":{"line":82,"column":41}},"82":{"start":{"line":83,"column":0},"end":{"line":83,"column":8}},"83":{"start":{"line":84,"column":0},"end":{"line":84,"column":64}},"84":{"start":{"line":85,"column":0},"end":{"line":85,"column":61}},"85":{"start":{"line":86,"column":0},"end":{"line":86,"column":7}},"86":{"start":{"line":87,"column":0},"end":{"line":87,"column":22}},"87":{"start":{"line":88,"column":0},"end":{"line":88,"column":113}},"88":{"start":{"line":89,"column":0},"end":{"line":89,"column":8}},"89":{"start":{"line":90,"column":0},"end":{"line":90,"column":5}},"90":{"start":{"line":91,"column":0},"end":{"line":91,"column":64}},"91":{"start":{"line":92,"column":0},"end":{"line":92,"column":90}},"92":{"start":{"line":93,"column":0},"end":{"line":93,"column":37}},"93":{"start":{"line":94,"column":0},"end":{"line":94,"column":88}},"94":{"start":{"line":95,"column":0},"end":{"line":95,"column":7}},"95":{"start":{"line":96,"column":0},"end":{"line":96,"column":5}},"96":{"start":{"line":97,"column":0},"end":{"line":97,"column":0}},"97":{"start":{"line":98,"column":0},"end":{"line":98,"column":43}},"98":{"start":{"line":99,"column":0},"end":{"line":99,"column":32}},"99":{"start":{"line":100,"column":0},"end":{"line":100,"column":49}},"100":{"start":{"line":101,"column":0},"end":{"line":101,"column":39}},"101":{"start":{"line":102,"column":0},"end":{"line":102,"column":39}},"102":{"start":{"line":103,"column":0},"end":{"line":103,"column":98}},"103":{"start":{"line":104,"column":0},"end":{"line":104,"column":75}},"104":{"start":{"line":105,"column":0},"end":{"line":105,"column":45}},"105":{"start":{"line":106,"column":0},"end":{"line":106,"column":53}},"106":{"start":{"line":107,"column":0},"end":{"line":107,"column":42}},"107":{"start":{"line":108,"column":0},"end":{"line":108,"column":49}},"108":{"start":{"line":109,"column":0},"end":{"line":109,"column":53}},"109":{"start":{"line":110,"column":0},"end":{"line":110,"column":41}},"110":{"start":{"line":111,"column":0},"end":{"line":111,"column":61}},"111":{"start":{"line":112,"column":0},"end":{"line":112,"column":29}},"112":{"start":{"line":113,"column":0},"end":{"line":113,"column":12}},"113":{"start":{"line":114,"column":0},"end":{"line":114,"column":112}},"114":{"start":{"line":115,"column":0},"end":{"line":115,"column":5}},"115":{"start":{"line":116,"column":0},"end":{"line":116,"column":0}},"116":{"start":{"line":117,"column":0},"end":{"line":117,"column":37}},"117":{"start":{"line":118,"column":0},"end":{"line":118,"column":35}},"118":{"start":{"line":119,"column":0},"end":{"line":119,"column":89}},"119":{"start":{"line":120,"column":0},"end":{"line":120,"column":5}},"120":{"start":{"line":121,"column":0},"end":{"line":121,"column":103}},"121":{"start":{"line":122,"column":0},"end":{"line":122,"column":20}},"122":{"start":{"line":123,"column":0},"end":{"line":123,"column":3}},"123":{"start":{"line":124,"column":0},"end":{"line":124,"column":1}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":35,"22":35,"23":35,"24":35,"25":35,"26":35,"27":35,"28":0,"29":0,"30":35,"31":35,"32":35,"33":35,"34":35,"35":35,"36":35,"37":35,"38":35,"39":35,"40":1,"41":1,"42":1,"43":1,"44":1,"45":1,"46":1,"47":1,"48":1,"49":1,"50":1,"51":1,"52":1,"53":1,"54":1,"55":1,"56":37,"57":37,"58":37,"59":37,"60":37,"61":37,"62":37,"63":37,"64":37,"65":37,"66":37,"67":37,"68":37,"69":37,"70":1,"71":1,"72":40,"73":40,"74":40,"75":40,"76":40,"77":40,"78":40,"79":40,"80":40,"81":40,"82":40,"83":40,"84":39,"85":40,"86":1,"87":1,"88":1,"89":1,"90":40,"91":9,"92":9,"93":1,"94":1,"95":9,"96":38,"97":38,"98":40,"99":3,"100":40,"101":22,"102":22,"103":35,"104":1,"105":1,"106":13,"107":3,"108":3,"109":12,"110":8,"111":8,"112":8,"113":1,"114":1,"115":37,"116":37,"117":40,"118":35,"119":35,"120":37,"121":37,"122":37,"123":1},"branchMap":{"0":{"type":"branch","line":21,"loc":{"start":{"line":21,"column":21},"end":{"line":40,"column":2}},"locations":[{"start":{"line":21,"column":21},"end":{"line":40,"column":2}}]},"1":{"type":"branch","line":28,"loc":{"start":{"line":28,"column":92},"end":{"line":30,"column":3}},"locations":[{"start":{"line":28,"column":92},"end":{"line":30,"column":3}}]},"2":{"type":"branch","line":34,"loc":{"start":{"line":34,"column":20},"end":{"line":34,"column":55}},"locations":[{"start":{"line":34,"column":20},"end":{"line":34,"column":55}}]},"3":{"type":"branch","line":35,"loc":{"start":{"line":35,"column":23},"end":{"line":35,"column":59}},"locations":[{"start":{"line":35,"column":23},"end":{"line":35,"column":59}}]},"4":{"type":"branch","line":56,"loc":{"start":{"line":56,"column":2},"end":{"line":70,"column":3}},"locations":[{"start":{"line":56,"column":2},"end":{"line":70,"column":3}}]},"5":{"type":"branch","line":72,"loc":{"start":{"line":72,"column":9},"end":{"line":123,"column":3}},"locations":[{"start":{"line":72,"column":9},"end":{"line":123,"column":3}}]},"6":{"type":"branch","line":84,"loc":{"start":{"line":84,"column":33},"end":{"line":84,"column":60}},"locations":[{"start":{"line":84,"column":33},"end":{"line":84,"column":60}}]},"7":{"type":"branch","line":84,"loc":{"start":{"line":84,"column":61},"end":{"line":85,"column":61}},"locations":[{"start":{"line":84,"column":61},"end":{"line":85,"column":61}}]},"8":{"type":"branch","line":85,"loc":{"start":{"line":85,"column":33},"end":{"line":85,"column":60}},"locations":[{"start":{"line":85,"column":33},"end":{"line":85,"column":60}}]},"9":{"type":"branch","line":86,"loc":{"start":{"line":86,"column":6},"end":{"line":90,"column":5}},"locations":[{"start":{"line":86,"column":6},"end":{"line":90,"column":5}}]},"10":{"type":"branch","line":91,"loc":{"start":{"line":91,"column":-1},"end":{"line":91,"column":38}},"locations":[{"start":{"line":91,"column":-1},"end":{"line":91,"column":38}}]},"11":{"type":"branch","line":91,"loc":{"start":{"line":91,"column":34},"end":{"line":91,"column":61}},"locations":[{"start":{"line":91,"column":34},"end":{"line":91,"column":61}}]},"12":{"type":"branch","line":91,"loc":{"start":{"line":91,"column":63},"end":{"line":96,"column":5}},"locations":[{"start":{"line":91,"column":63},"end":{"line":96,"column":5}}]},"13":{"type":"branch","line":93,"loc":{"start":{"line":93,"column":36},"end":{"line":95,"column":7}},"locations":[{"start":{"line":93,"column":36},"end":{"line":95,"column":7}}]},"14":{"type":"branch","line":97,"loc":{"start":{"line":97,"column":-1},"end":{"line":99,"column":31}},"locations":[{"start":{"line":97,"column":-1},"end":{"line":99,"column":31}}]},"15":{"type":"branch","line":99,"loc":{"start":{"line":99,"column":31},"end":{"line":101,"column":11}},"locations":[{"start":{"line":99,"column":31},"end":{"line":101,"column":11}}]},"16":{"type":"branch","line":101,"loc":{"start":{"line":101,"column":5},"end":{"line":115,"column":5}},"locations":[{"start":{"line":101,"column":5},"end":{"line":115,"column":5}}]},"17":{"type":"branch","line":101,"loc":{"start":{"line":101,"column":38},"end":{"line":104,"column":11}},"locations":[{"start":{"line":101,"column":38},"end":{"line":104,"column":11}}]},"18":{"type":"branch","line":104,"loc":{"start":{"line":104,"column":5},"end":{"line":115,"column":5}},"locations":[{"start":{"line":104,"column":5},"end":{"line":115,"column":5}}]},"19":{"type":"branch","line":104,"loc":{"start":{"line":104,"column":39},"end":{"line":104,"column":72}},"locations":[{"start":{"line":104,"column":39},"end":{"line":104,"column":72}}]},"20":{"type":"branch","line":104,"loc":{"start":{"line":104,"column":74},"end":{"line":107,"column":11}},"locations":[{"start":{"line":104,"column":74},"end":{"line":107,"column":11}}]},"21":{"type":"branch","line":107,"loc":{"start":{"line":107,"column":5},"end":{"line":115,"column":5}},"locations":[{"start":{"line":107,"column":5},"end":{"line":115,"column":5}}]},"22":{"type":"branch","line":107,"loc":{"start":{"line":107,"column":41},"end":{"line":110,"column":11}},"locations":[{"start":{"line":107,"column":41},"end":{"line":110,"column":11}}]},"23":{"type":"branch","line":110,"loc":{"start":{"line":110,"column":5},"end":{"line":115,"column":5}},"locations":[{"start":{"line":110,"column":5},"end":{"line":115,"column":5}}]},"24":{"type":"branch","line":110,"loc":{"start":{"line":110,"column":40},"end":{"line":115,"column":5}},"locations":[{"start":{"line":110,"column":40},"end":{"line":115,"column":5}}]},"25":{"type":"branch","line":113,"loc":{"start":{"line":113,"column":5},"end":{"line":115,"column":5}},"locations":[{"start":{"line":113,"column":5},"end":{"line":115,"column":5}}]},"26":{"type":"branch","line":116,"loc":{"start":{"line":116,"column":-1},"end":{"line":118,"column":34}},"locations":[{"start":{"line":116,"column":-1},"end":{"line":118,"column":34}}]},"27":{"type":"branch","line":118,"loc":{"start":{"line":118,"column":34},"end":{"line":120,"column":5}},"locations":[{"start":{"line":118,"column":34},"end":{"line":120,"column":5}}]},"28":{"type":"branch","line":121,"loc":{"start":{"line":121,"column":-1},"end":{"line":123,"column":3}},"locations":[{"start":{"line":121,"column":-1},"end":{"line":123,"column":3}}]}},"b":{"0":[35],"1":[0],"2":[8],"3":[8],"4":[37],"5":[40],"6":[10],"7":[39],"8":[30],"9":[1],"10":[39],"11":[9],"12":[9],"13":[1],"14":[38],"15":[3],"16":[35],"17":[22],"18":[13],"19":[1],"20":[1],"21":[12],"22":[3],"23":[9],"24":[8],"25":[1],"26":[37],"27":[35],"28":[37]},"fnMap":{"0":{"name":"poiBlockHash","decl":{"start":{"line":21,"column":21},"end":{"line":40,"column":2}},"loc":{"start":{"line":21,"column":21},"end":{"line":40,"column":2}},"line":21},"1":{"name":"PoiBlock","decl":{"start":{"line":56,"column":2},"end":{"line":70,"column":3}},"loc":{"start":{"line":56,"column":2},"end":{"line":70,"column":3}},"line":56},"2":{"name":"create","decl":{"start":{"line":72,"column":9},"end":{"line":123,"column":3}},"loc":{"start":{"line":72,"column":9},"end":{"line":123,"column":3}},"line":72}},"f":{"0":35,"1":37,"2":40}},"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/indexer/poi/index.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/indexer/poi/index.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":27}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":30}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":34}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":27}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1},"branchMap":{},"b":{},"fnMap":{},"f":{}},"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/indexer/poi/poi.service.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/indexer/poi/poi.service.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":73}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":63}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":43}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":37}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":39}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":36}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":48}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":53}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":0}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":39}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":0}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":3}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":44}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":65}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":3}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":0}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":13}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":58}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":29}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":35}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":0}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":98}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":0}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":33}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":27}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":3}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":0}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":32}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":25}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":44}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":5}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":25}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":3}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":0}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":5}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":53}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":29}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":18}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":5}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":45}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":53}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":25}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":13}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":5}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":95}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":46}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":36}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":5}},"51":{"start":{"line":52,"column":0},"end":{"line":52,"column":3}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":0}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":5}},"54":{"start":{"line":55,"column":0},"end":{"line":55,"column":46}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":18}},"56":{"start":{"line":57,"column":0},"end":{"line":57,"column":13}},"57":{"start":{"line":58,"column":0},"end":{"line":58,"column":5}},"58":{"start":{"line":59,"column":0},"end":{"line":59,"column":59}},"59":{"start":{"line":60,"column":0},"end":{"line":60,"column":9}},"60":{"start":{"line":61,"column":0},"end":{"line":61,"column":91}},"61":{"start":{"line":62,"column":0},"end":{"line":62,"column":60}},"62":{"start":{"line":63,"column":0},"end":{"line":63,"column":102}},"63":{"start":{"line":64,"column":0},"end":{"line":64,"column":69}},"64":{"start":{"line":65,"column":0},"end":{"line":65,"column":42}},"65":{"start":{"line":66,"column":0},"end":{"line":66,"column":118}},"66":{"start":{"line":67,"column":0},"end":{"line":67,"column":112}},"67":{"start":{"line":68,"column":0},"end":{"line":68,"column":92}},"68":{"start":{"line":69,"column":0},"end":{"line":69,"column":100}},"69":{"start":{"line":70,"column":0},"end":{"line":70,"column":162}},"70":{"start":{"line":71,"column":0},"end":{"line":71,"column":0}},"71":{"start":{"line":72,"column":0},"end":{"line":72,"column":91}},"72":{"start":{"line":73,"column":0},"end":{"line":73,"column":20}},"73":{"start":{"line":74,"column":0},"end":{"line":74,"column":9}},"74":{"start":{"line":75,"column":0},"end":{"line":75,"column":0}},"75":{"start":{"line":76,"column":0},"end":{"line":76,"column":39}},"76":{"start":{"line":77,"column":0},"end":{"line":77,"column":96}},"77":{"start":{"line":78,"column":0},"end":{"line":78,"column":0}},"78":{"start":{"line":79,"column":0},"end":{"line":79,"column":25}},"79":{"start":{"line":80,"column":0},"end":{"line":80,"column":0}},"80":{"start":{"line":81,"column":0},"end":{"line":81,"column":24}},"81":{"start":{"line":82,"column":0},"end":{"line":82,"column":37}},"82":{"start":{"line":83,"column":0},"end":{"line":83,"column":74}},"83":{"start":{"line":84,"column":0},"end":{"line":84,"column":67}},"84":{"start":{"line":85,"column":0},"end":{"line":85,"column":9}},"85":{"start":{"line":86,"column":0},"end":{"line":86,"column":54}},"86":{"start":{"line":87,"column":0},"end":{"line":87,"column":99}},"87":{"start":{"line":88,"column":0},"end":{"line":88,"column":9}},"88":{"start":{"line":89,"column":0},"end":{"line":89,"column":51}},"89":{"start":{"line":90,"column":0},"end":{"line":90,"column":96}},"90":{"start":{"line":91,"column":0},"end":{"line":91,"column":41}},"91":{"start":{"line":92,"column":0},"end":{"line":92,"column":23}},"92":{"start":{"line":93,"column":0},"end":{"line":93,"column":24}},"93":{"start":{"line":94,"column":0},"end":{"line":94,"column":24}},"94":{"start":{"line":95,"column":0},"end":{"line":95,"column":120}},"95":{"start":{"line":96,"column":0},"end":{"line":96,"column":13}},"96":{"start":{"line":97,"column":0},"end":{"line":97,"column":12}},"97":{"start":{"line":98,"column":0},"end":{"line":98,"column":9}},"98":{"start":{"line":99,"column":0},"end":{"line":99,"column":41}},"99":{"start":{"line":100,"column":0},"end":{"line":100,"column":86}},"100":{"start":{"line":101,"column":0},"end":{"line":101,"column":86}},"101":{"start":{"line":102,"column":0},"end":{"line":102,"column":23}},"102":{"start":{"line":103,"column":0},"end":{"line":103,"column":24}},"103":{"start":{"line":104,"column":0},"end":{"line":104,"column":24}},"104":{"start":{"line":105,"column":0},"end":{"line":105,"column":110}},"105":{"start":{"line":106,"column":0},"end":{"line":106,"column":13}},"106":{"start":{"line":107,"column":0},"end":{"line":107,"column":12}},"107":{"start":{"line":108,"column":0},"end":{"line":108,"column":9}},"108":{"start":{"line":109,"column":0},"end":{"line":109,"column":43}},"109":{"start":{"line":110,"column":0},"end":{"line":110,"column":92}},"110":{"start":{"line":111,"column":0},"end":{"line":111,"column":94}},"111":{"start":{"line":112,"column":0},"end":{"line":112,"column":0}},"112":{"start":{"line":113,"column":0},"end":{"line":113,"column":23}},"113":{"start":{"line":114,"column":0},"end":{"line":114,"column":24}},"114":{"start":{"line":115,"column":0},"end":{"line":115,"column":24}},"115":{"start":{"line":116,"column":0},"end":{"line":116,"column":129}},"116":{"start":{"line":117,"column":0},"end":{"line":117,"column":13}},"117":{"start":{"line":118,"column":0},"end":{"line":118,"column":12}},"118":{"start":{"line":119,"column":0},"end":{"line":119,"column":9}},"119":{"start":{"line":120,"column":0},"end":{"line":120,"column":7}},"120":{"start":{"line":121,"column":0},"end":{"line":121,"column":0}},"121":{"start":{"line":122,"column":0},"end":{"line":122,"column":27}},"122":{"start":{"line":123,"column":0},"end":{"line":123,"column":68}},"123":{"start":{"line":124,"column":0},"end":{"line":124,"column":69}},"124":{"start":{"line":125,"column":0},"end":{"line":125,"column":18}},"125":{"start":{"line":126,"column":0},"end":{"line":126,"column":81}},"126":{"start":{"line":127,"column":0},"end":{"line":127,"column":9}},"127":{"start":{"line":128,"column":0},"end":{"line":128,"column":38}},"128":{"start":{"line":129,"column":0},"end":{"line":129,"column":15}},"129":{"start":{"line":130,"column":0},"end":{"line":130,"column":106}},"130":{"start":{"line":131,"column":0},"end":{"line":131,"column":23}},"131":{"start":{"line":132,"column":0},"end":{"line":132,"column":70}},"132":{"start":{"line":133,"column":0},"end":{"line":133,"column":20}},"133":{"start":{"line":134,"column":0},"end":{"line":134,"column":11}},"134":{"start":{"line":135,"column":0},"end":{"line":135,"column":9}},"135":{"start":{"line":136,"column":0},"end":{"line":136,"column":26}},"136":{"start":{"line":137,"column":0},"end":{"line":137,"column":48}},"137":{"start":{"line":138,"column":0},"end":{"line":138,"column":38}},"138":{"start":{"line":139,"column":0},"end":{"line":139,"column":94}},"139":{"start":{"line":140,"column":0},"end":{"line":140,"column":9}},"140":{"start":{"line":141,"column":0},"end":{"line":141,"column":7}},"141":{"start":{"line":142,"column":0},"end":{"line":142,"column":17}},"142":{"start":{"line":143,"column":0},"end":{"line":143,"column":58}},"143":{"start":{"line":144,"column":0},"end":{"line":144,"column":5}},"144":{"start":{"line":145,"column":0},"end":{"line":145,"column":3}},"145":{"start":{"line":146,"column":0},"end":{"line":146,"column":0}},"146":{"start":{"line":147,"column":0},"end":{"line":147,"column":84}},"147":{"start":{"line":148,"column":0},"end":{"line":148,"column":77}},"148":{"start":{"line":149,"column":0},"end":{"line":149,"column":93}},"149":{"start":{"line":150,"column":0},"end":{"line":150,"column":0}},"150":{"start":{"line":151,"column":0},"end":{"line":151,"column":87}},"151":{"start":{"line":152,"column":0},"end":{"line":152,"column":59}},"152":{"start":{"line":153,"column":0},"end":{"line":153,"column":31}},"153":{"start":{"line":154,"column":0},"end":{"line":154,"column":33}},"154":{"start":{"line":155,"column":0},"end":{"line":155,"column":9}},"155":{"start":{"line":156,"column":0},"end":{"line":156,"column":70}},"156":{"start":{"line":157,"column":0},"end":{"line":157,"column":62}},"157":{"start":{"line":158,"column":0},"end":{"line":158,"column":24}},"158":{"start":{"line":159,"column":0},"end":{"line":159,"column":71}},"159":{"start":{"line":160,"column":0},"end":{"line":160,"column":14}},"160":{"start":{"line":161,"column":0},"end":{"line":161,"column":81}},"161":{"start":{"line":162,"column":0},"end":{"line":162,"column":7}},"162":{"start":{"line":163,"column":0},"end":{"line":163,"column":5}},"163":{"start":{"line":164,"column":0},"end":{"line":164,"column":66}},"164":{"start":{"line":165,"column":0},"end":{"line":165,"column":3}},"165":{"start":{"line":166,"column":0},"end":{"line":166,"column":1}},"166":{"start":{"line":167,"column":0},"end":{"line":167,"column":0}},"167":{"start":{"line":168,"column":0},"end":{"line":168,"column":33}},"168":{"start":{"line":169,"column":0},"end":{"line":169,"column":30}},"169":{"start":{"line":170,"column":0},"end":{"line":170,"column":17}},"170":{"start":{"line":171,"column":0},"end":{"line":171,"column":27}},"171":{"start":{"line":172,"column":0},"end":{"line":172,"column":28}},"172":{"start":{"line":173,"column":0},"end":{"line":173,"column":19}},"173":{"start":{"line":174,"column":0},"end":{"line":174,"column":18}},"174":{"start":{"line":175,"column":0},"end":{"line":175,"column":24}},"175":{"start":{"line":176,"column":0},"end":{"line":176,"column":51}},"176":{"start":{"line":177,"column":0},"end":{"line":177,"column":22}},"177":{"start":{"line":178,"column":0},"end":{"line":178,"column":9}},"178":{"start":{"line":179,"column":0},"end":{"line":179,"column":51}},"179":{"start":{"line":180,"column":0},"end":{"line":180,"column":20}},"180":{"start":{"line":181,"column":0},"end":{"line":181,"column":25}},"181":{"start":{"line":182,"column":0},"end":{"line":182,"column":16}},"182":{"start":{"line":183,"column":0},"end":{"line":183,"column":15}},"183":{"start":{"line":184,"column":0},"end":{"line":184,"column":39}},"184":{"start":{"line":185,"column":0},"end":{"line":185,"column":12}},"185":{"start":{"line":186,"column":0},"end":{"line":186,"column":10}},"186":{"start":{"line":187,"column":0},"end":{"line":187,"column":9}},"187":{"start":{"line":188,"column":0},"end":{"line":188,"column":41}},"188":{"start":{"line":189,"column":0},"end":{"line":189,"column":14}},"189":{"start":{"line":190,"column":0},"end":{"line":190,"column":25}},"190":{"start":{"line":191,"column":0},"end":{"line":191,"column":7}},"191":{"start":{"line":192,"column":0},"end":{"line":192,"column":74}},"192":{"start":{"line":193,"column":0},"end":{"line":193,"column":35}},"193":{"start":{"line":194,"column":0},"end":{"line":194,"column":29}},"194":{"start":{"line":195,"column":0},"end":{"line":195,"column":22}},"195":{"start":{"line":196,"column":0},"end":{"line":196,"column":23}},"196":{"start":{"line":197,"column":0},"end":{"line":197,"column":18}},"197":{"start":{"line":198,"column":0},"end":{"line":198,"column":17}},"198":{"start":{"line":199,"column":0},"end":{"line":199,"column":66}},"199":{"start":{"line":200,"column":0},"end":{"line":200,"column":14}},"200":{"start":{"line":201,"column":0},"end":{"line":201,"column":12}},"201":{"start":{"line":202,"column":0},"end":{"line":202,"column":11}},"202":{"start":{"line":203,"column":0},"end":{"line":203,"column":7}},"203":{"start":{"line":204,"column":0},"end":{"line":204,"column":29}},"204":{"start":{"line":205,"column":0},"end":{"line":205,"column":17}},"205":{"start":{"line":206,"column":0},"end":{"line":206,"column":85}},"206":{"start":{"line":207,"column":0},"end":{"line":207,"column":5}},"207":{"start":{"line":208,"column":0},"end":{"line":208,"column":3}},"208":{"start":{"line":209,"column":0},"end":{"line":209,"column":1}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":20,"28":20,"29":1,"30":1,"31":0,"32":0,"33":0,"34":0,"35":0,"36":1,"37":1,"38":1,"39":1,"40":1,"41":1,"42":1,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":1,"53":1,"54":1,"55":1,"56":1,"57":1,"58":1,"59":0,"60":0,"61":0,"62":0,"63":0,"64":0,"65":0,"66":0,"67":0,"68":0,"69":0,"70":0,"71":0,"72":0,"73":0,"74":0,"75":0,"76":0,"77":0,"78":0,"79":0,"80":0,"81":0,"82":0,"83":0,"84":0,"85":0,"86":0,"87":0,"88":0,"89":0,"90":0,"91":0,"92":0,"93":0,"94":0,"95":0,"96":0,"97":0,"98":0,"99":0,"100":0,"101":0,"102":0,"103":0,"104":0,"105":0,"106":0,"107":0,"108":0,"109":0,"110":0,"111":0,"112":0,"113":0,"114":0,"115":0,"116":0,"117":0,"118":0,"119":0,"120":0,"121":0,"122":0,"123":0,"124":0,"125":0,"126":0,"127":0,"128":0,"129":0,"130":0,"131":0,"132":0,"133":0,"134":0,"135":0,"136":0,"137":0,"138":0,"139":0,"140":0,"141":0,"142":0,"143":0,"144":0,"145":1,"146":1,"147":0,"148":0,"149":0,"150":0,"151":0,"152":0,"153":0,"154":0,"155":0,"156":0,"157":0,"158":0,"159":0,"160":0,"161":0,"162":0,"163":0,"164":0,"165":1,"166":1,"167":1,"168":0,"169":0,"170":0,"171":0,"172":0,"173":0,"174":0,"175":0,"176":0,"177":0,"178":0,"179":0,"180":0,"181":0,"182":0,"183":0,"184":0,"185":0,"186":0,"187":0,"188":0,"189":0,"190":0,"191":0,"192":0,"193":0,"194":0,"195":0,"196":0,"197":0,"198":0,"199":0,"200":0,"201":0,"202":0,"203":0,"204":0,"205":0,"206":0,"207":0,"208":0},"branchMap":{"0":{"type":"branch","line":25,"loc":{"start":{"line":25,"column":2},"end":{"line":25,"column":98}},"locations":[{"start":{"line":25,"column":2},"end":{"line":25,"column":98}}]},"1":{"type":"branch","line":27,"loc":{"start":{"line":27,"column":2},"end":{"line":29,"column":3}},"locations":[{"start":{"line":27,"column":2},"end":{"line":29,"column":3}}]}},"b":{"0":[20],"1":[20]},"fnMap":{"0":{"name":"PoiService","decl":{"start":{"line":25,"column":2},"end":{"line":25,"column":98}},"loc":{"start":{"line":25,"column":2},"end":{"line":25,"column":98}},"line":25},"1":{"name":"onApplicationShutdown","decl":{"start":{"line":27,"column":2},"end":{"line":29,"column":3}},"loc":{"start":{"line":27,"column":2},"end":{"line":29,"column":3}},"line":27},"2":{"name":"get poiRepo","decl":{"start":{"line":31,"column":2},"end":{"line":36,"column":3}},"loc":{"start":{"line":31,"column":2},"end":{"line":36,"column":3}},"line":31},"3":{"name":"init","decl":{"start":{"line":43,"column":2},"end":{"line":52,"column":3}},"loc":{"start":{"line":43,"column":2},"end":{"line":52,"column":3}},"line":43},"4":{"name":"migratePoi","decl":{"start":{"line":59,"column":10},"end":{"line":145,"column":3}},"loc":{"start":{"line":59,"column":10},"end":{"line":145,"column":3}},"line":59},"5":{"name":"rewind","decl":{"start":{"line":147,"column":2},"end":{"line":165,"column":3}},"loc":{"start":{"line":147,"column":2},"end":{"line":165,"column":3}},"line":147},"6":{"name":"batchDeletePoi","decl":{"start":{"line":169,"column":0},"end":{"line":209,"column":1}},"loc":{"start":{"line":169,"column":0},"end":{"line":209,"column":1}},"line":169}},"f":{"0":20,"1":20,"2":0,"3":0,"4":0,"5":0,"6":0}},"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/indexer/poi/poiModel.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/indexer/poi/poiModel.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":50}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":41}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":51}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":50}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":0}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":31}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":17}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":77}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":5}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":76}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":74}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":7}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":67}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":1}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":0}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":125}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":59}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":71}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":36}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":28}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":3}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":13}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":1}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":0}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":52}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":41}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":0}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":55}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":45}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":29}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":7}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":28}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":3}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":0}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":67}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":49}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":17}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":66}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":5}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":11}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":3}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":0}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":75}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":45}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":33}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":43}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":29}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":7}},"51":{"start":{"line":52,"column":0},"end":{"line":52,"column":78}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":3}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":0}},"54":{"start":{"line":55,"column":0},"end":{"line":55,"column":76}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":33}},"56":{"start":{"line":57,"column":0},"end":{"line":57,"column":42}},"57":{"start":{"line":58,"column":0},"end":{"line":58,"column":65}},"58":{"start":{"line":59,"column":0},"end":{"line":59,"column":7}},"59":{"start":{"line":60,"column":0},"end":{"line":60,"column":37}},"60":{"start":{"line":61,"column":0},"end":{"line":61,"column":45}},"61":{"start":{"line":62,"column":0},"end":{"line":62,"column":7}},"62":{"start":{"line":63,"column":0},"end":{"line":63,"column":43}},"63":{"start":{"line":64,"column":0},"end":{"line":64,"column":57}},"64":{"start":{"line":65,"column":0},"end":{"line":65,"column":7}},"65":{"start":{"line":66,"column":0},"end":{"line":66,"column":5}},"66":{"start":{"line":67,"column":0},"end":{"line":67,"column":41}},"67":{"start":{"line":68,"column":0},"end":{"line":68,"column":22}},"68":{"start":{"line":69,"column":0},"end":{"line":69,"column":33}},"69":{"start":{"line":70,"column":0},"end":{"line":70,"column":48}},"70":{"start":{"line":71,"column":0},"end":{"line":71,"column":7}},"71":{"start":{"line":72,"column":0},"end":{"line":72,"column":3}},"72":{"start":{"line":73,"column":0},"end":{"line":73,"column":0}},"73":{"start":{"line":74,"column":0},"end":{"line":74,"column":27}},"74":{"start":{"line":75,"column":0},"end":{"line":75,"column":24}},"75":{"start":{"line":76,"column":0},"end":{"line":76,"column":59}},"76":{"start":{"line":77,"column":0},"end":{"line":77,"column":30}},"77":{"start":{"line":78,"column":0},"end":{"line":78,"column":45}},"78":{"start":{"line":79,"column":0},"end":{"line":79,"column":27}},"79":{"start":{"line":80,"column":0},"end":{"line":80,"column":14}},"80":{"start":{"line":81,"column":0},"end":{"line":81,"column":36}},"81":{"start":{"line":82,"column":0},"end":{"line":82,"column":43}},"82":{"start":{"line":83,"column":0},"end":{"line":83,"column":8}},"83":{"start":{"line":84,"column":0},"end":{"line":84,"column":30}},"84":{"start":{"line":85,"column":0},"end":{"line":85,"column":7}},"85":{"start":{"line":86,"column":0},"end":{"line":86,"column":78}},"86":{"start":{"line":87,"column":0},"end":{"line":87,"column":3}},"87":{"start":{"line":88,"column":0},"end":{"line":88,"column":1}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":8,"21":8,"22":0,"23":0,"24":8,"25":8,"26":1,"27":1,"28":1,"29":1,"30":1,"31":2,"32":2,"33":2,"34":2,"35":2,"36":1,"37":1,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":1,"45":1,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":1,"54":1,"55":0,"56":0,"57":0,"58":0,"59":0,"60":0,"61":0,"62":0,"63":0,"64":0,"65":0,"66":0,"67":0,"68":0,"69":0,"70":0,"71":0,"72":1,"73":1,"74":2,"75":2,"76":2,"77":2,"78":2,"79":2,"80":2,"81":2,"82":2,"83":2,"84":2,"85":2,"86":2,"87":1},"branchMap":{"0":{"type":"branch","line":21,"loc":{"start":{"line":21,"column":0},"end":{"line":26,"column":1}},"locations":[{"start":{"line":21,"column":0},"end":{"line":26,"column":1}}]},"1":{"type":"branch","line":22,"loc":{"start":{"line":22,"column":35},"end":{"line":24,"column":3}},"locations":[{"start":{"line":22,"column":35},"end":{"line":24,"column":3}}]},"2":{"type":"branch","line":29,"loc":{"start":{"line":29,"column":2},"end":{"line":29,"column":41}},"locations":[{"start":{"line":29,"column":2},"end":{"line":29,"column":41}}]},"3":{"type":"branch","line":31,"loc":{"start":{"line":31,"column":2},"end":{"line":36,"column":3}},"locations":[{"start":{"line":31,"column":2},"end":{"line":36,"column":3}}]},"4":{"type":"branch","line":35,"loc":{"start":{"line":35,"column":17},"end":{"line":35,"column":25}},"locations":[{"start":{"line":35,"column":17},"end":{"line":35,"column":25}}]},"5":{"type":"branch","line":74,"loc":{"start":{"line":74,"column":2},"end":{"line":87,"column":3}},"locations":[{"start":{"line":74,"column":2},"end":{"line":87,"column":3}}]},"6":{"type":"branch","line":86,"loc":{"start":{"line":86,"column":22},"end":{"line":86,"column":76}},"locations":[{"start":{"line":86,"column":22},"end":{"line":86,"column":76}}]}},"b":{"0":[8],"1":[0],"2":[13],"3":[2],"4":[0],"5":[2],"6":[8]},"fnMap":{"0":{"name":"ensureProofOfIndexId","decl":{"start":{"line":21,"column":0},"end":{"line":26,"column":1}},"loc":{"start":{"line":21,"column":0},"end":{"line":26,"column":1}},"line":21},"1":{"name":"PlainPoiModel","decl":{"start":{"line":29,"column":2},"end":{"line":29,"column":41}},"loc":{"start":{"line":29,"column":2},"end":{"line":29,"column":41}},"line":29},"2":{"name":"getFirst","decl":{"start":{"line":31,"column":2},"end":{"line":36,"column":3}},"loc":{"start":{"line":31,"column":2},"end":{"line":36,"column":3}},"line":31},"3":{"name":"getPoiById","decl":{"start":{"line":38,"column":2},"end":{"line":44,"column":3}},"loc":{"start":{"line":38,"column":2},"end":{"line":44,"column":3}},"line":38},"4":{"name":"getPoiBlocksByRange","decl":{"start":{"line":46,"column":2},"end":{"line":53,"column":3}},"loc":{"start":{"line":46,"column":2},"end":{"line":53,"column":3}},"line":46},"5":{"name":"bulkUpsert","decl":{"start":{"line":55,"column":2},"end":{"line":72,"column":3}},"loc":{"start":{"line":55,"column":2},"end":{"line":72,"column":3}},"line":55},"6":{"name":"getPoiBlocksBefore","decl":{"start":{"line":74,"column":2},"end":{"line":87,"column":3}},"loc":{"start":{"line":74,"column":2},"end":{"line":87,"column":3}},"line":74}},"f":{"0":8,"1":13,"2":2,"3":0,"4":0,"5":0,"6":2}},"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/indexer/poi/poiSync.service.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/indexer/poi/poiSync.service.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":73}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":52}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":73}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":38}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":58}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":43}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":47}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":38}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":39}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":44}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":68}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":84}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":42}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":36}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":41}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":0}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":45}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":43}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":0}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":64}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":75}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":0}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":99}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":97}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":1}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":0}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":3}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":31}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":145}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":79}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":2}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":101}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":3}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":0}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":13}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":62}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":29}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":35}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":39}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":33}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":42}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":29}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":28}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":46}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":0}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":14}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":46}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":40}},"51":{"start":{"line":52,"column":0},"end":{"line":52,"column":65}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":5}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":42}},"54":{"start":{"line":55,"column":0},"end":{"line":55,"column":35}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":3}},"56":{"start":{"line":57,"column":0},"end":{"line":57,"column":0}},"57":{"start":{"line":58,"column":0},"end":{"line":58,"column":33}},"58":{"start":{"line":59,"column":0},"end":{"line":59,"column":27}},"59":{"start":{"line":60,"column":0},"end":{"line":60,"column":3}},"60":{"start":{"line":61,"column":0},"end":{"line":61,"column":0}},"61":{"start":{"line":62,"column":0},"end":{"line":62,"column":32}},"62":{"start":{"line":63,"column":0},"end":{"line":63,"column":25}},"63":{"start":{"line":64,"column":0},"end":{"line":64,"column":44}},"64":{"start":{"line":65,"column":0},"end":{"line":65,"column":5}},"65":{"start":{"line":66,"column":0},"end":{"line":66,"column":25}},"66":{"start":{"line":67,"column":0},"end":{"line":67,"column":3}},"67":{"start":{"line":68,"column":0},"end":{"line":68,"column":0}},"68":{"start":{"line":69,"column":0},"end":{"line":69,"column":36}},"69":{"start":{"line":70,"column":0},"end":{"line":70,"column":30}},"70":{"start":{"line":71,"column":0},"end":{"line":71,"column":49}},"71":{"start":{"line":72,"column":0},"end":{"line":72,"column":5}},"72":{"start":{"line":73,"column":0},"end":{"line":73,"column":30}},"73":{"start":{"line":74,"column":0},"end":{"line":74,"column":3}},"74":{"start":{"line":75,"column":0},"end":{"line":75,"column":0}},"75":{"start":{"line":76,"column":0},"end":{"line":76,"column":30}},"76":{"start":{"line":77,"column":0},"end":{"line":77,"column":27}},"77":{"start":{"line":78,"column":0},"end":{"line":78,"column":63}},"78":{"start":{"line":79,"column":0},"end":{"line":79,"column":5}},"79":{"start":{"line":80,"column":0},"end":{"line":80,"column":27}},"80":{"start":{"line":81,"column":0},"end":{"line":81,"column":3}},"81":{"start":{"line":82,"column":0},"end":{"line":82,"column":0}},"82":{"start":{"line":83,"column":0},"end":{"line":83,"column":27}},"83":{"start":{"line":84,"column":0},"end":{"line":84,"column":24}},"84":{"start":{"line":85,"column":0},"end":{"line":85,"column":43}},"85":{"start":{"line":86,"column":0},"end":{"line":86,"column":5}},"86":{"start":{"line":87,"column":0},"end":{"line":87,"column":27}},"87":{"start":{"line":88,"column":0},"end":{"line":88,"column":3}},"88":{"start":{"line":89,"column":0},"end":{"line":89,"column":0}},"89":{"start":{"line":90,"column":0},"end":{"line":90,"column":45}},"90":{"start":{"line":91,"column":0},"end":{"line":91,"column":54}},"91":{"start":{"line":92,"column":0},"end":{"line":92,"column":35}},"92":{"start":{"line":93,"column":0},"end":{"line":93,"column":12}},"93":{"start":{"line":94,"column":0},"end":{"line":94,"column":22}},"94":{"start":{"line":95,"column":0},"end":{"line":95,"column":35}},"95":{"start":{"line":96,"column":0},"end":{"line":96,"column":59}},"96":{"start":{"line":97,"column":0},"end":{"line":97,"column":64}},"97":{"start":{"line":98,"column":0},"end":{"line":98,"column":8}},"98":{"start":{"line":99,"column":0},"end":{"line":99,"column":5}},"99":{"start":{"line":100,"column":0},"end":{"line":100,"column":3}},"100":{"start":{"line":101,"column":0},"end":{"line":101,"column":0}},"101":{"start":{"line":102,"column":0},"end":{"line":102,"column":45}},"102":{"start":{"line":103,"column":0},"end":{"line":103,"column":67}},"103":{"start":{"line":104,"column":0},"end":{"line":104,"column":74}},"104":{"start":{"line":105,"column":0},"end":{"line":105,"column":47}},"105":{"start":{"line":106,"column":0},"end":{"line":106,"column":21}},"106":{"start":{"line":107,"column":0},"end":{"line":107,"column":13}},"107":{"start":{"line":108,"column":0},"end":{"line":108,"column":12}},"108":{"start":{"line":109,"column":0},"end":{"line":109,"column":34}},"109":{"start":{"line":110,"column":0},"end":{"line":110,"column":6}},"110":{"start":{"line":111,"column":0},"end":{"line":111,"column":89}},"111":{"start":{"line":112,"column":0},"end":{"line":112,"column":3}},"112":{"start":{"line":113,"column":0},"end":{"line":113,"column":0}},"113":{"start":{"line":114,"column":0},"end":{"line":114,"column":53}},"114":{"start":{"line":115,"column":0},"end":{"line":115,"column":31}},"115":{"start":{"line":116,"column":0},"end":{"line":116,"column":26}},"116":{"start":{"line":117,"column":0},"end":{"line":117,"column":31}},"117":{"start":{"line":118,"column":0},"end":{"line":118,"column":28}},"118":{"start":{"line":119,"column":0},"end":{"line":119,"column":9}},"119":{"start":{"line":120,"column":0},"end":{"line":120,"column":32}},"120":{"start":{"line":121,"column":0},"end":{"line":121,"column":37}},"121":{"start":{"line":122,"column":0},"end":{"line":122,"column":58}},"122":{"start":{"line":123,"column":0},"end":{"line":123,"column":49}},"123":{"start":{"line":124,"column":0},"end":{"line":124,"column":38}},"124":{"start":{"line":125,"column":0},"end":{"line":125,"column":21}},"125":{"start":{"line":126,"column":0},"end":{"line":126,"column":18}},"126":{"start":{"line":127,"column":0},"end":{"line":127,"column":67}},"127":{"start":{"line":128,"column":0},"end":{"line":128,"column":69}},"128":{"start":{"line":129,"column":0},"end":{"line":129,"column":134}},"129":{"start":{"line":130,"column":0},"end":{"line":130,"column":94}},"130":{"start":{"line":131,"column":0},"end":{"line":131,"column":49}},"131":{"start":{"line":132,"column":0},"end":{"line":132,"column":30}},"132":{"start":{"line":133,"column":0},"end":{"line":133,"column":13}},"133":{"start":{"line":134,"column":0},"end":{"line":134,"column":11}},"134":{"start":{"line":135,"column":0},"end":{"line":135,"column":16}},"135":{"start":{"line":136,"column":0},"end":{"line":136,"column":35}},"136":{"start":{"line":137,"column":0},"end":{"line":137,"column":43}},"137":{"start":{"line":138,"column":0},"end":{"line":138,"column":11}},"138":{"start":{"line":139,"column":0},"end":{"line":139,"column":66}},"139":{"start":{"line":140,"column":0},"end":{"line":140,"column":73}},"140":{"start":{"line":141,"column":0},"end":{"line":141,"column":96}},"141":{"start":{"line":142,"column":0},"end":{"line":142,"column":81}},"142":{"start":{"line":143,"column":0},"end":{"line":143,"column":18}},"143":{"start":{"line":144,"column":0},"end":{"line":144,"column":11}},"144":{"start":{"line":145,"column":0},"end":{"line":145,"column":39}},"145":{"start":{"line":146,"column":0},"end":{"line":146,"column":45}},"146":{"start":{"line":147,"column":0},"end":{"line":147,"column":45}},"147":{"start":{"line":148,"column":0},"end":{"line":148,"column":11}},"148":{"start":{"line":149,"column":0},"end":{"line":149,"column":81}},"149":{"start":{"line":150,"column":0},"end":{"line":150,"column":55}},"150":{"start":{"line":151,"column":0},"end":{"line":151,"column":40}},"151":{"start":{"line":152,"column":0},"end":{"line":152,"column":11}},"152":{"start":{"line":153,"column":0},"end":{"line":153,"column":9}},"153":{"start":{"line":154,"column":0},"end":{"line":154,"column":7}},"154":{"start":{"line":155,"column":0},"end":{"line":155,"column":29}},"155":{"start":{"line":156,"column":0},"end":{"line":156,"column":17}},"156":{"start":{"line":157,"column":0},"end":{"line":157,"column":50}},"157":{"start":{"line":158,"column":0},"end":{"line":158,"column":29}},"158":{"start":{"line":159,"column":0},"end":{"line":159,"column":22}},"159":{"start":{"line":160,"column":0},"end":{"line":160,"column":5}},"160":{"start":{"line":161,"column":0},"end":{"line":161,"column":3}},"161":{"start":{"line":162,"column":0},"end":{"line":162,"column":0}},"162":{"start":{"line":163,"column":0},"end":{"line":163,"column":5}},"163":{"start":{"line":164,"column":0},"end":{"line":164,"column":60}},"164":{"start":{"line":165,"column":0},"end":{"line":165,"column":5}},"165":{"start":{"line":166,"column":0},"end":{"line":166,"column":35}},"166":{"start":{"line":167,"column":0},"end":{"line":167,"column":27}},"167":{"start":{"line":168,"column":0},"end":{"line":168,"column":37}},"168":{"start":{"line":169,"column":0},"end":{"line":169,"column":36}},"169":{"start":{"line":170,"column":0},"end":{"line":170,"column":30}},"170":{"start":{"line":171,"column":0},"end":{"line":171,"column":20}},"171":{"start":{"line":172,"column":0},"end":{"line":172,"column":28}},"172":{"start":{"line":173,"column":0},"end":{"line":173,"column":9}},"173":{"start":{"line":174,"column":0},"end":{"line":174,"column":14}},"174":{"start":{"line":175,"column":0},"end":{"line":175,"column":7}},"175":{"start":{"line":176,"column":0},"end":{"line":176,"column":3}},"176":{"start":{"line":177,"column":0},"end":{"line":177,"column":0}},"177":{"start":{"line":178,"column":0},"end":{"line":178,"column":5}},"178":{"start":{"line":179,"column":0},"end":{"line":179,"column":46}},"179":{"start":{"line":180,"column":0},"end":{"line":180,"column":28}},"180":{"start":{"line":181,"column":0},"end":{"line":181,"column":56}},"181":{"start":{"line":182,"column":0},"end":{"line":182,"column":5}},"182":{"start":{"line":183,"column":0},"end":{"line":183,"column":17}},"183":{"start":{"line":184,"column":0},"end":{"line":184,"column":38}},"184":{"start":{"line":185,"column":0},"end":{"line":185,"column":34}},"185":{"start":{"line":186,"column":0},"end":{"line":186,"column":3}},"186":{"start":{"line":187,"column":0},"end":{"line":187,"column":0}},"187":{"start":{"line":188,"column":0},"end":{"line":188,"column":5}},"188":{"start":{"line":189,"column":0},"end":{"line":189,"column":62}},"189":{"start":{"line":190,"column":0},"end":{"line":190,"column":13}},"190":{"start":{"line":191,"column":0},"end":{"line":191,"column":5}},"191":{"start":{"line":192,"column":0},"end":{"line":192,"column":75}},"192":{"start":{"line":193,"column":0},"end":{"line":193,"column":77}},"193":{"start":{"line":194,"column":0},"end":{"line":194,"column":27}},"194":{"start":{"line":195,"column":0},"end":{"line":195,"column":45}},"195":{"start":{"line":196,"column":0},"end":{"line":196,"column":5}},"196":{"start":{"line":197,"column":0},"end":{"line":197,"column":11}},"197":{"start":{"line":198,"column":0},"end":{"line":198,"column":3}},"198":{"start":{"line":199,"column":0},"end":{"line":199,"column":0}},"199":{"start":{"line":200,"column":0},"end":{"line":200,"column":72}},"200":{"start":{"line":201,"column":0},"end":{"line":201,"column":39}},"201":{"start":{"line":202,"column":0},"end":{"line":202,"column":110}},"202":{"start":{"line":203,"column":0},"end":{"line":203,"column":28}},"203":{"start":{"line":204,"column":0},"end":{"line":204,"column":79}},"204":{"start":{"line":205,"column":0},"end":{"line":205,"column":7}},"205":{"start":{"line":206,"column":0},"end":{"line":206,"column":22}},"206":{"start":{"line":207,"column":0},"end":{"line":207,"column":72}},"207":{"start":{"line":208,"column":0},"end":{"line":208,"column":7}},"208":{"start":{"line":209,"column":0},"end":{"line":209,"column":30}},"209":{"start":{"line":210,"column":0},"end":{"line":210,"column":5}},"210":{"start":{"line":211,"column":0},"end":{"line":211,"column":3}},"211":{"start":{"line":212,"column":0},"end":{"line":212,"column":0}},"212":{"start":{"line":213,"column":0},"end":{"line":213,"column":5}},"213":{"start":{"line":214,"column":0},"end":{"line":214,"column":96}},"214":{"start":{"line":215,"column":0},"end":{"line":215,"column":96}},"215":{"start":{"line":216,"column":0},"end":{"line":216,"column":13}},"216":{"start":{"line":217,"column":0},"end":{"line":217,"column":5}},"217":{"start":{"line":218,"column":0},"end":{"line":218,"column":60}},"218":{"start":{"line":219,"column":0},"end":{"line":219,"column":93}},"219":{"start":{"line":220,"column":0},"end":{"line":220,"column":74}},"220":{"start":{"line":221,"column":0},"end":{"line":221,"column":46}},"221":{"start":{"line":222,"column":0},"end":{"line":222,"column":79}},"222":{"start":{"line":223,"column":0},"end":{"line":223,"column":24}},"223":{"start":{"line":224,"column":0},"end":{"line":224,"column":73}},"224":{"start":{"line":225,"column":0},"end":{"line":225,"column":45}},"225":{"start":{"line":226,"column":0},"end":{"line":226,"column":14}},"226":{"start":{"line":227,"column":0},"end":{"line":227,"column":87}},"227":{"start":{"line":228,"column":0},"end":{"line":228,"column":7}},"228":{"start":{"line":229,"column":0},"end":{"line":229,"column":5}},"229":{"start":{"line":230,"column":0},"end":{"line":230,"column":3}},"230":{"start":{"line":231,"column":0},"end":{"line":231,"column":0}},"231":{"start":{"line":232,"column":0},"end":{"line":232,"column":5}},"232":{"start":{"line":233,"column":0},"end":{"line":233,"column":74}},"233":{"start":{"line":234,"column":0},"end":{"line":234,"column":65}},"234":{"start":{"line":235,"column":0},"end":{"line":235,"column":13}},"235":{"start":{"line":236,"column":0},"end":{"line":236,"column":5}},"236":{"start":{"line":237,"column":0},"end":{"line":237,"column":65}},"237":{"start":{"line":238,"column":0},"end":{"line":238,"column":32}},"238":{"start":{"line":239,"column":0},"end":{"line":239,"column":13}},"239":{"start":{"line":240,"column":0},"end":{"line":240,"column":5}},"240":{"start":{"line":241,"column":0},"end":{"line":241,"column":53}},"241":{"start":{"line":242,"column":0},"end":{"line":242,"column":21}},"242":{"start":{"line":243,"column":0},"end":{"line":243,"column":46}},"243":{"start":{"line":244,"column":0},"end":{"line":244,"column":27}},"244":{"start":{"line":245,"column":0},"end":{"line":245,"column":5}},"245":{"start":{"line":246,"column":0},"end":{"line":246,"column":3}},"246":{"start":{"line":247,"column":0},"end":{"line":247,"column":0}},"247":{"start":{"line":248,"column":0},"end":{"line":248,"column":5}},"248":{"start":{"line":249,"column":0},"end":{"line":249,"column":76}},"249":{"start":{"line":250,"column":0},"end":{"line":250,"column":20}},"250":{"start":{"line":251,"column":0},"end":{"line":251,"column":13}},"251":{"start":{"line":252,"column":0},"end":{"line":252,"column":5}},"252":{"start":{"line":253,"column":0},"end":{"line":253,"column":60}},"253":{"start":{"line":254,"column":0},"end":{"line":254,"column":88}},"254":{"start":{"line":255,"column":0},"end":{"line":255,"column":22}},"255":{"start":{"line":256,"column":0},"end":{"line":256,"column":115}},"256":{"start":{"line":257,"column":0},"end":{"line":257,"column":8}},"257":{"start":{"line":258,"column":0},"end":{"line":258,"column":5}},"258":{"start":{"line":259,"column":0},"end":{"line":259,"column":59}},"259":{"start":{"line":260,"column":0},"end":{"line":260,"column":37}},"260":{"start":{"line":261,"column":0},"end":{"line":261,"column":54}},"261":{"start":{"line":262,"column":0},"end":{"line":262,"column":26}},"262":{"start":{"line":263,"column":0},"end":{"line":263,"column":28}},"263":{"start":{"line":264,"column":0},"end":{"line":264,"column":7}},"264":{"start":{"line":265,"column":0},"end":{"line":265,"column":3}},"265":{"start":{"line":266,"column":0},"end":{"line":266,"column":0}},"266":{"start":{"line":267,"column":0},"end":{"line":267,"column":5}},"267":{"start":{"line":268,"column":0},"end":{"line":268,"column":23}},"268":{"start":{"line":269,"column":0},"end":{"line":269,"column":22}},"269":{"start":{"line":270,"column":0},"end":{"line":270,"column":13}},"270":{"start":{"line":271,"column":0},"end":{"line":271,"column":5}},"271":{"start":{"line":272,"column":0},"end":{"line":272,"column":75}},"272":{"start":{"line":273,"column":0},"end":{"line":273,"column":37}},"273":{"start":{"line":274,"column":0},"end":{"line":274,"column":20}},"274":{"start":{"line":275,"column":0},"end":{"line":275,"column":32}},"275":{"start":{"line":276,"column":0},"end":{"line":276,"column":35}},"276":{"start":{"line":277,"column":0},"end":{"line":277,"column":21}},"277":{"start":{"line":278,"column":0},"end":{"line":278,"column":25}},"278":{"start":{"line":279,"column":0},"end":{"line":279,"column":6}},"279":{"start":{"line":280,"column":0},"end":{"line":280,"column":34}},"280":{"start":{"line":281,"column":0},"end":{"line":281,"column":50}},"281":{"start":{"line":282,"column":0},"end":{"line":282,"column":56}},"282":{"start":{"line":283,"column":0},"end":{"line":283,"column":22}},"283":{"start":{"line":284,"column":0},"end":{"line":284,"column":65}},"284":{"start":{"line":285,"column":0},"end":{"line":285,"column":3}},"285":{"start":{"line":286,"column":0},"end":{"line":286,"column":0}},"286":{"start":{"line":287,"column":0},"end":{"line":287,"column":5}},"287":{"start":{"line":288,"column":0},"end":{"line":288,"column":75}},"288":{"start":{"line":289,"column":0},"end":{"line":289,"column":74}},"289":{"start":{"line":290,"column":0},"end":{"line":290,"column":45}},"290":{"start":{"line":291,"column":0},"end":{"line":291,"column":21}},"291":{"start":{"line":292,"column":0},"end":{"line":292,"column":13}},"292":{"start":{"line":293,"column":0},"end":{"line":293,"column":5}},"293":{"start":{"line":294,"column":0},"end":{"line":294,"column":70}},"294":{"start":{"line":295,"column":0},"end":{"line":295,"column":49}},"295":{"start":{"line":296,"column":0},"end":{"line":296,"column":48}},"296":{"start":{"line":297,"column":0},"end":{"line":297,"column":37}},"297":{"start":{"line":298,"column":0},"end":{"line":298,"column":52}},"298":{"start":{"line":299,"column":0},"end":{"line":299,"column":24}},"299":{"start":{"line":300,"column":0},"end":{"line":300,"column":125}},"300":{"start":{"line":301,"column":0},"end":{"line":301,"column":10}},"301":{"start":{"line":302,"column":0},"end":{"line":302,"column":7}},"302":{"start":{"line":303,"column":0},"end":{"line":303,"column":55}},"303":{"start":{"line":304,"column":0},"end":{"line":304,"column":38}},"304":{"start":{"line":305,"column":0},"end":{"line":305,"column":57}},"305":{"start":{"line":306,"column":0},"end":{"line":306,"column":7}},"306":{"start":{"line":307,"column":0},"end":{"line":307,"column":45}},"307":{"start":{"line":308,"column":0},"end":{"line":308,"column":21}},"308":{"start":{"line":309,"column":0},"end":{"line":309,"column":33}},"309":{"start":{"line":310,"column":0},"end":{"line":310,"column":36}},"310":{"start":{"line":311,"column":0},"end":{"line":311,"column":23}},"311":{"start":{"line":312,"column":0},"end":{"line":312,"column":33}},"312":{"start":{"line":313,"column":0},"end":{"line":313,"column":8}},"313":{"start":{"line":314,"column":0},"end":{"line":314,"column":54}},"314":{"start":{"line":315,"column":0},"end":{"line":315,"column":46}},"315":{"start":{"line":316,"column":0},"end":{"line":316,"column":5}},"316":{"start":{"line":317,"column":0},"end":{"line":317,"column":3}},"317":{"start":{"line":318,"column":0},"end":{"line":318,"column":0}},"318":{"start":{"line":319,"column":0},"end":{"line":319,"column":5}},"319":{"start":{"line":320,"column":0},"end":{"line":320,"column":61}},"320":{"start":{"line":321,"column":0},"end":{"line":321,"column":21}},"321":{"start":{"line":322,"column":0},"end":{"line":322,"column":13}},"322":{"start":{"line":323,"column":0},"end":{"line":323,"column":5}},"323":{"start":{"line":324,"column":0},"end":{"line":324,"column":71}},"324":{"start":{"line":325,"column":0},"end":{"line":325,"column":68}},"325":{"start":{"line":326,"column":0},"end":{"line":326,"column":103}},"326":{"start":{"line":327,"column":0},"end":{"line":327,"column":54}},"327":{"start":{"line":328,"column":0},"end":{"line":328,"column":46}},"328":{"start":{"line":329,"column":0},"end":{"line":329,"column":5}},"329":{"start":{"line":330,"column":0},"end":{"line":330,"column":3}},"330":{"start":{"line":331,"column":0},"end":{"line":331,"column":0}},"331":{"start":{"line":332,"column":0},"end":{"line":332,"column":5}},"332":{"start":{"line":333,"column":0},"end":{"line":333,"column":71}},"333":{"start":{"line":334,"column":0},"end":{"line":334,"column":13}},"334":{"start":{"line":335,"column":0},"end":{"line":335,"column":5}},"335":{"start":{"line":336,"column":0},"end":{"line":336,"column":47}},"336":{"start":{"line":337,"column":0},"end":{"line":337,"column":50}},"337":{"start":{"line":338,"column":0},"end":{"line":338,"column":14}},"338":{"start":{"line":339,"column":0},"end":{"line":339,"column":67}},"339":{"start":{"line":340,"column":0},"end":{"line":340,"column":5}},"340":{"start":{"line":341,"column":0},"end":{"line":341,"column":14}},"341":{"start":{"line":342,"column":0},"end":{"line":342,"column":3}},"342":{"start":{"line":343,"column":0},"end":{"line":343,"column":0}},"343":{"start":{"line":344,"column":0},"end":{"line":344,"column":5}},"344":{"start":{"line":345,"column":0},"end":{"line":345,"column":63}},"345":{"start":{"line":346,"column":0},"end":{"line":346,"column":18}},"346":{"start":{"line":347,"column":0},"end":{"line":347,"column":14}},"347":{"start":{"line":348,"column":0},"end":{"line":348,"column":13}},"348":{"start":{"line":349,"column":0},"end":{"line":349,"column":5}},"349":{"start":{"line":350,"column":0},"end":{"line":350,"column":89}},"350":{"start":{"line":351,"column":0},"end":{"line":351,"column":76}},"351":{"start":{"line":352,"column":0},"end":{"line":352,"column":23}},"352":{"start":{"line":353,"column":0},"end":{"line":353,"column":41}},"353":{"start":{"line":354,"column":0},"end":{"line":354,"column":24}},"354":{"start":{"line":355,"column":0},"end":{"line":355,"column":44}},"355":{"start":{"line":356,"column":0},"end":{"line":356,"column":9}},"356":{"start":{"line":357,"column":0},"end":{"line":357,"column":7}},"357":{"start":{"line":358,"column":0},"end":{"line":358,"column":3}},"358":{"start":{"line":359,"column":0},"end":{"line":359,"column":0}},"359":{"start":{"line":360,"column":0},"end":{"line":360,"column":5}},"360":{"start":{"line":361,"column":0},"end":{"line":361,"column":102}},"361":{"start":{"line":362,"column":0},"end":{"line":362,"column":26}},"362":{"start":{"line":363,"column":0},"end":{"line":363,"column":13}},"363":{"start":{"line":364,"column":0},"end":{"line":364,"column":5}},"364":{"start":{"line":365,"column":0},"end":{"line":365,"column":64}},"365":{"start":{"line":366,"column":0},"end":{"line":366,"column":29}},"366":{"start":{"line":367,"column":0},"end":{"line":367,"column":37}},"367":{"start":{"line":368,"column":0},"end":{"line":368,"column":5}},"368":{"start":{"line":369,"column":0},"end":{"line":369,"column":44}},"369":{"start":{"line":370,"column":0},"end":{"line":370,"column":3}},"370":{"start":{"line":371,"column":0},"end":{"line":371,"column":0}},"371":{"start":{"line":372,"column":0},"end":{"line":372,"column":5}},"372":{"start":{"line":373,"column":0},"end":{"line":373,"column":46}},"373":{"start":{"line":374,"column":0},"end":{"line":374,"column":29}},"374":{"start":{"line":375,"column":0},"end":{"line":375,"column":82}},"375":{"start":{"line":376,"column":0},"end":{"line":376,"column":13}},"376":{"start":{"line":377,"column":0},"end":{"line":377,"column":5}},"377":{"start":{"line":378,"column":0},"end":{"line":378,"column":34}},"378":{"start":{"line":379,"column":0},"end":{"line":379,"column":26}},"379":{"start":{"line":380,"column":0},"end":{"line":380,"column":101}},"380":{"start":{"line":381,"column":0},"end":{"line":381,"column":92}},"381":{"start":{"line":382,"column":0},"end":{"line":382,"column":3}},"382":{"start":{"line":383,"column":0},"end":{"line":383,"column":0}},"383":{"start":{"line":384,"column":0},"end":{"line":384,"column":5}},"384":{"start":{"line":385,"column":0},"end":{"line":385,"column":51}},"385":{"start":{"line":386,"column":0},"end":{"line":386,"column":24}},"386":{"start":{"line":387,"column":0},"end":{"line":387,"column":48}},"387":{"start":{"line":388,"column":0},"end":{"line":388,"column":13}},"388":{"start":{"line":389,"column":0},"end":{"line":389,"column":5}},"389":{"start":{"line":390,"column":0},"end":{"line":390,"column":52}},"390":{"start":{"line":391,"column":0},"end":{"line":391,"column":53}},"391":{"start":{"line":392,"column":0},"end":{"line":392,"column":34}},"392":{"start":{"line":393,"column":0},"end":{"line":393,"column":28}},"393":{"start":{"line":394,"column":0},"end":{"line":394,"column":92}},"394":{"start":{"line":395,"column":0},"end":{"line":395,"column":37}},"395":{"start":{"line":396,"column":0},"end":{"line":396,"column":113}},"396":{"start":{"line":397,"column":0},"end":{"line":397,"column":10}},"397":{"start":{"line":398,"column":0},"end":{"line":398,"column":52}},"398":{"start":{"line":399,"column":0},"end":{"line":399,"column":83}},"399":{"start":{"line":400,"column":0},"end":{"line":400,"column":5}},"400":{"start":{"line":401,"column":0},"end":{"line":401,"column":22}},"401":{"start":{"line":402,"column":0},"end":{"line":402,"column":35}},"402":{"start":{"line":403,"column":0},"end":{"line":403,"column":3}},"403":{"start":{"line":404,"column":0},"end":{"line":404,"column":1}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":93,"26":93,"27":93,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"38":1,"39":1,"40":1,"41":1,"42":1,"43":1,"44":1,"45":1,"46":1,"47":1,"48":1,"49":28,"50":28,"51":28,"52":28,"53":28,"54":28,"55":28,"56":1,"57":1,"58":21,"59":21,"60":1,"61":1,"62":45,"63":0,"64":0,"65":45,"66":45,"67":1,"68":1,"69":2,"70":0,"71":0,"72":2,"73":2,"74":1,"75":1,"76":11,"77":0,"78":0,"79":11,"80":11,"81":1,"82":1,"83":28,"84":0,"85":0,"86":28,"87":28,"88":1,"89":1,"90":93,"91":93,"92":93,"93":0,"94":0,"95":0,"96":0,"97":0,"98":0,"99":93,"100":1,"101":1,"102":0,"103":0,"104":0,"105":0,"106":0,"107":0,"108":0,"109":0,"110":0,"111":0,"112":1,"113":1,"114":5,"115":5,"116":5,"117":5,"118":5,"119":5,"120":9,"121":2,"122":2,"123":2,"124":0,"125":2,"126":2,"127":2,"128":2,"129":2,"130":2,"131":2,"132":1,"133":2,"134":9,"135":7,"136":0,"137":0,"138":7,"139":7,"140":7,"141":7,"142":3,"143":3,"144":4,"145":4,"146":4,"147":4,"148":4,"149":4,"150":4,"151":4,"152":7,"153":9,"154":4,"155":5,"156":0,"157":0,"158":0,"159":0,"160":5,"161":1,"162":1,"163":1,"164":1,"165":1,"166":2,"167":2,"168":2,"169":1,"170":1,"171":1,"172":1,"173":2,"174":2,"175":2,"176":1,"177":1,"178":1,"179":1,"180":1,"181":1,"182":1,"183":1,"184":1,"185":1,"186":1,"187":1,"188":1,"189":1,"190":1,"191":1,"192":2,"193":2,"194":2,"195":2,"196":0,"197":0,"198":1,"199":1,"200":34,"201":1,"202":1,"203":1,"204":1,"205":1,"206":0,"207":0,"208":1,"209":1,"210":34,"211":1,"212":1,"213":1,"214":1,"215":1,"216":1,"217":1,"218":9,"219":9,"220":9,"221":7,"222":7,"223":7,"224":7,"225":7,"226":0,"227":0,"228":7,"229":9,"230":1,"231":1,"232":1,"233":1,"234":1,"235":1,"236":1,"237":9,"238":0,"239":0,"240":9,"241":9,"242":7,"243":7,"244":7,"245":9,"246":1,"247":1,"248":1,"249":1,"250":1,"251":1,"252":1,"253":27,"254":0,"255":0,"256":0,"257":0,"258":27,"259":27,"260":27,"261":27,"262":27,"263":27,"264":27,"265":1,"266":1,"267":1,"268":1,"269":1,"270":1,"271":1,"272":7,"273":7,"274":7,"275":7,"276":7,"277":7,"278":7,"279":7,"280":7,"281":7,"282":7,"283":7,"284":7,"285":1,"286":1,"287":1,"288":1,"289":1,"290":1,"291":1,"292":1,"293":1,"294":6,"295":6,"296":15,"297":15,"298":1,"299":1,"300":1,"301":1,"302":15,"303":3,"304":3,"305":3,"306":14,"307":14,"308":14,"309":14,"310":14,"311":14,"312":14,"313":14,"314":14,"315":14,"316":5,"317":1,"318":1,"319":1,"320":1,"321":1,"322":1,"323":1,"324":3,"325":7,"326":7,"327":7,"328":7,"329":3,"330":1,"331":1,"332":1,"333":1,"334":1,"335":1,"336":11,"337":11,"338":0,"339":0,"340":11,"341":11,"342":1,"343":1,"344":1,"345":1,"346":1,"347":1,"348":1,"349":1,"350":0,"351":0,"352":0,"353":0,"354":0,"355":0,"356":0,"357":0,"358":1,"359":1,"360":1,"361":1,"362":1,"363":1,"364":1,"365":21,"366":4,"367":4,"368":21,"369":21,"370":1,"371":1,"372":1,"373":1,"374":1,"375":1,"376":1,"377":1,"378":28,"379":28,"380":28,"381":28,"382":1,"383":1,"384":1,"385":1,"386":1,"387":1,"388":1,"389":1,"390":4,"391":4,"392":4,"393":4,"394":4,"395":4,"396":4,"397":4,"398":4,"399":4,"400":4,"401":4,"402":4,"403":1},"branchMap":{"0":{"type":"branch","line":23,"loc":{"start":{"line":23,"column":19},"end":{"line":24,"column":74}},"locations":[{"start":{"line":23,"column":19},"end":{"line":24,"column":74}}]},"1":{"type":"branch","line":26,"loc":{"start":{"line":26,"column":0},"end":{"line":28,"column":1}},"locations":[{"start":{"line":26,"column":0},"end":{"line":28,"column":1}}]},"2":{"type":"branch","line":49,"loc":{"start":{"line":49,"column":2},"end":{"line":56,"column":3}},"locations":[{"start":{"line":49,"column":2},"end":{"line":56,"column":3}}]},"3":{"type":"branch","line":58,"loc":{"start":{"line":58,"column":2},"end":{"line":60,"column":3}},"locations":[{"start":{"line":58,"column":2},"end":{"line":60,"column":3}}]},"4":{"type":"branch","line":62,"loc":{"start":{"line":62,"column":2},"end":{"line":67,"column":3}},"locations":[{"start":{"line":62,"column":2},"end":{"line":67,"column":3}}]},"5":{"type":"branch","line":63,"loc":{"start":{"line":63,"column":24},"end":{"line":65,"column":5}},"locations":[{"start":{"line":63,"column":24},"end":{"line":65,"column":5}}]},"6":{"type":"branch","line":69,"loc":{"start":{"line":69,"column":2},"end":{"line":74,"column":3}},"locations":[{"start":{"line":69,"column":2},"end":{"line":74,"column":3}}]},"7":{"type":"branch","line":70,"loc":{"start":{"line":70,"column":29},"end":{"line":72,"column":5}},"locations":[{"start":{"line":70,"column":29},"end":{"line":72,"column":5}}]},"8":{"type":"branch","line":76,"loc":{"start":{"line":76,"column":2},"end":{"line":81,"column":3}},"locations":[{"start":{"line":76,"column":2},"end":{"line":81,"column":3}}]},"9":{"type":"branch","line":77,"loc":{"start":{"line":77,"column":26},"end":{"line":79,"column":5}},"locations":[{"start":{"line":77,"column":26},"end":{"line":79,"column":5}}]},"10":{"type":"branch","line":83,"loc":{"start":{"line":83,"column":2},"end":{"line":88,"column":3}},"locations":[{"start":{"line":83,"column":2},"end":{"line":88,"column":3}}]},"11":{"type":"branch","line":84,"loc":{"start":{"line":84,"column":23},"end":{"line":86,"column":5}},"locations":[{"start":{"line":84,"column":23},"end":{"line":86,"column":5}}]},"12":{"type":"branch","line":90,"loc":{"start":{"line":90,"column":2},"end":{"line":100,"column":3}},"locations":[{"start":{"line":90,"column":2},"end":{"line":100,"column":3}}]},"13":{"type":"branch","line":93,"loc":{"start":{"line":93,"column":5},"end":{"line":99,"column":5}},"locations":[{"start":{"line":93,"column":5},"end":{"line":99,"column":5}}]},"14":{"type":"branch","line":114,"loc":{"start":{"line":114,"column":2},"end":{"line":161,"column":3}},"locations":[{"start":{"line":114,"column":2},"end":{"line":161,"column":3}}]},"15":{"type":"branch","line":115,"loc":{"start":{"line":115,"column":24},"end":{"line":115,"column":31}},"locations":[{"start":{"line":115,"column":24},"end":{"line":115,"column":31}}]},"16":{"type":"branch","line":120,"loc":{"start":{"line":120,"column":31},"end":{"line":154,"column":7}},"locations":[{"start":{"line":120,"column":31},"end":{"line":154,"column":7}}]},"17":{"type":"branch","line":121,"loc":{"start":{"line":121,"column":36},"end":{"line":135,"column":15}},"locations":[{"start":{"line":121,"column":36},"end":{"line":135,"column":15}}]},"18":{"type":"branch","line":124,"loc":{"start":{"line":124,"column":37},"end":{"line":126,"column":17}},"locations":[{"start":{"line":124,"column":37},"end":{"line":126,"column":17}}]},"19":{"type":"branch","line":133,"loc":{"start":{"line":133,"column":-1},"end":{"line":133,"column":13}},"locations":[{"start":{"line":133,"column":-1},"end":{"line":133,"column":13}}]},"20":{"type":"branch","line":135,"loc":{"start":{"line":135,"column":9},"end":{"line":153,"column":9}},"locations":[{"start":{"line":135,"column":9},"end":{"line":153,"column":9}}]},"21":{"type":"branch","line":136,"loc":{"start":{"line":136,"column":34},"end":{"line":138,"column":11}},"locations":[{"start":{"line":136,"column":34},"end":{"line":138,"column":11}}]},"22":{"type":"branch","line":142,"loc":{"start":{"line":142,"column":38},"end":{"line":142,"column":78}},"locations":[{"start":{"line":142,"column":38},"end":{"line":142,"column":78}}]},"23":{"type":"branch","line":142,"loc":{"start":{"line":142,"column":80},"end":{"line":144,"column":11}},"locations":[{"start":{"line":142,"column":80},"end":{"line":144,"column":11}}]},"24":{"type":"branch","line":145,"loc":{"start":{"line":145,"column":-1},"end":{"line":152,"column":11}},"locations":[{"start":{"line":145,"column":-1},"end":{"line":152,"column":11}}]},"25":{"type":"branch","line":155,"loc":{"start":{"line":155,"column":-1},"end":{"line":156,"column":13}},"locations":[{"start":{"line":155,"column":-1},"end":{"line":156,"column":13}}]},"26":{"type":"branch","line":156,"loc":{"start":{"line":156,"column":6},"end":{"line":160,"column":5}},"locations":[{"start":{"line":156,"column":6},"end":{"line":160,"column":5}}]},"27":{"type":"branch","line":166,"loc":{"start":{"line":166,"column":2},"end":{"line":176,"column":3}},"locations":[{"start":{"line":166,"column":2},"end":{"line":176,"column":3}}]},"28":{"type":"branch","line":168,"loc":{"start":{"line":168,"column":23},"end":{"line":175,"column":5}},"locations":[{"start":{"line":168,"column":23},"end":{"line":175,"column":5}}]},"29":{"type":"branch","line":169,"loc":{"start":{"line":169,"column":29},"end":{"line":174,"column":7}},"locations":[{"start":{"line":169,"column":29},"end":{"line":174,"column":7}}]},"30":{"type":"branch","line":183,"loc":{"start":{"line":183,"column":2},"end":{"line":186,"column":3}},"locations":[{"start":{"line":183,"column":2},"end":{"line":186,"column":3}}]},"31":{"type":"branch","line":192,"loc":{"start":{"line":192,"column":10},"end":{"line":198,"column":3}},"locations":[{"start":{"line":192,"column":10},"end":{"line":198,"column":3}}]},"32":{"type":"branch","line":197,"loc":{"start":{"line":197,"column":-1},"end":{"line":198,"column":3}},"locations":[{"start":{"line":197,"column":-1},"end":{"line":198,"column":3}}]},"33":{"type":"branch","line":200,"loc":{"start":{"line":200,"column":10},"end":{"line":211,"column":3}},"locations":[{"start":{"line":200,"column":10},"end":{"line":211,"column":3}}]},"34":{"type":"branch","line":201,"loc":{"start":{"line":201,"column":23},"end":{"line":201,"column":36}},"locations":[{"start":{"line":201,"column":23},"end":{"line":201,"column":36}}]},"35":{"type":"branch","line":201,"loc":{"start":{"line":201,"column":38},"end":{"line":210,"column":5}},"locations":[{"start":{"line":201,"column":38},"end":{"line":210,"column":5}}]},"36":{"type":"branch","line":206,"loc":{"start":{"line":206,"column":21},"end":{"line":208,"column":7}},"locations":[{"start":{"line":206,"column":21},"end":{"line":208,"column":7}}]},"37":{"type":"branch","line":218,"loc":{"start":{"line":218,"column":10},"end":{"line":230,"column":3}},"locations":[{"start":{"line":218,"column":10},"end":{"line":230,"column":3}}]},"38":{"type":"branch","line":221,"loc":{"start":{"line":221,"column":45},"end":{"line":229,"column":5}},"locations":[{"start":{"line":221,"column":45},"end":{"line":229,"column":5}}]},"39":{"type":"branch","line":226,"loc":{"start":{"line":226,"column":7},"end":{"line":228,"column":7}},"locations":[{"start":{"line":226,"column":7},"end":{"line":228,"column":7}}]},"40":{"type":"branch","line":237,"loc":{"start":{"line":237,"column":10},"end":{"line":246,"column":3}},"locations":[{"start":{"line":237,"column":10},"end":{"line":246,"column":3}}]},"41":{"type":"branch","line":238,"loc":{"start":{"line":238,"column":31},"end":{"line":240,"column":5}},"locations":[{"start":{"line":238,"column":31},"end":{"line":240,"column":5}}]},"42":{"type":"branch","line":242,"loc":{"start":{"line":242,"column":20},"end":{"line":245,"column":5}},"locations":[{"start":{"line":242,"column":20},"end":{"line":245,"column":5}}]},"43":{"type":"branch","line":253,"loc":{"start":{"line":253,"column":10},"end":{"line":265,"column":3}},"locations":[{"start":{"line":253,"column":10},"end":{"line":265,"column":3}}]},"44":{"type":"branch","line":254,"loc":{"start":{"line":254,"column":43},"end":{"line":254,"column":85}},"locations":[{"start":{"line":254,"column":43},"end":{"line":254,"column":85}}]},"45":{"type":"branch","line":254,"loc":{"start":{"line":254,"column":87},"end":{"line":258,"column":5}},"locations":[{"start":{"line":254,"column":87},"end":{"line":258,"column":5}}]},"46":{"type":"branch","line":272,"loc":{"start":{"line":272,"column":10},"end":{"line":285,"column":3}},"locations":[{"start":{"line":272,"column":10},"end":{"line":285,"column":3}}]},"47":{"type":"branch","line":294,"loc":{"start":{"line":294,"column":10},"end":{"line":317,"column":3}},"locations":[{"start":{"line":294,"column":10},"end":{"line":317,"column":3}}]},"48":{"type":"branch","line":296,"loc":{"start":{"line":296,"column":47},"end":{"line":316,"column":5}},"locations":[{"start":{"line":296,"column":47},"end":{"line":316,"column":5}}]},"49":{"type":"branch","line":298,"loc":{"start":{"line":298,"column":51},"end":{"line":302,"column":7}},"locations":[{"start":{"line":298,"column":51},"end":{"line":302,"column":7}}]},"50":{"type":"branch","line":303,"loc":{"start":{"line":303,"column":-1},"end":{"line":303,"column":54}},"locations":[{"start":{"line":303,"column":-1},"end":{"line":303,"column":54}}]},"51":{"type":"branch","line":303,"loc":{"start":{"line":303,"column":54},"end":{"line":306,"column":7}},"locations":[{"start":{"line":303,"column":54},"end":{"line":306,"column":7}}]},"52":{"type":"branch","line":307,"loc":{"start":{"line":307,"column":-1},"end":{"line":316,"column":5}},"locations":[{"start":{"line":307,"column":-1},"end":{"line":316,"column":5}}]},"53":{"type":"branch","line":317,"loc":{"start":{"line":317,"column":-1},"end":{"line":317,"column":3}},"locations":[{"start":{"line":317,"column":-1},"end":{"line":317,"column":3}}]},"54":{"type":"branch","line":324,"loc":{"start":{"line":324,"column":10},"end":{"line":330,"column":3}},"locations":[{"start":{"line":324,"column":10},"end":{"line":330,"column":3}}]},"55":{"type":"branch","line":325,"loc":{"start":{"line":325,"column":67},"end":{"line":329,"column":5}},"locations":[{"start":{"line":325,"column":67},"end":{"line":329,"column":5}}]},"56":{"type":"branch","line":336,"loc":{"start":{"line":336,"column":10},"end":{"line":342,"column":3}},"locations":[{"start":{"line":336,"column":10},"end":{"line":342,"column":3}}]},"57":{"type":"branch","line":338,"loc":{"start":{"line":338,"column":13},"end":{"line":340,"column":5}},"locations":[{"start":{"line":338,"column":13},"end":{"line":340,"column":5}}]},"58":{"type":"branch","line":365,"loc":{"start":{"line":365,"column":10},"end":{"line":370,"column":3}},"locations":[{"start":{"line":365,"column":10},"end":{"line":370,"column":3}}]},"59":{"type":"branch","line":366,"loc":{"start":{"line":366,"column":28},"end":{"line":368,"column":5}},"locations":[{"start":{"line":366,"column":28},"end":{"line":368,"column":5}}]},"60":{"type":"branch","line":378,"loc":{"start":{"line":378,"column":10},"end":{"line":382,"column":3}},"locations":[{"start":{"line":378,"column":10},"end":{"line":382,"column":3}}]},"61":{"type":"branch","line":381,"loc":{"start":{"line":381,"column":41},"end":{"line":381,"column":91}},"locations":[{"start":{"line":381,"column":41},"end":{"line":381,"column":91}}]},"62":{"type":"branch","line":381,"loc":{"start":{"line":381,"column":72},"end":{"line":381,"column":90}},"locations":[{"start":{"line":381,"column":72},"end":{"line":381,"column":90}}]},"63":{"type":"branch","line":390,"loc":{"start":{"line":390,"column":10},"end":{"line":403,"column":3}},"locations":[{"start":{"line":390,"column":10},"end":{"line":403,"column":3}}]}},"b":{"0":[4],"1":[93],"2":[28],"3":[21],"4":[45],"5":[0],"6":[2],"7":[0],"8":[11],"9":[0],"10":[28],"11":[0],"12":[93],"13":[0],"14":[5],"15":[0],"16":[9],"17":[2],"18":[0],"19":[1],"20":[7],"21":[0],"22":[6],"23":[3],"24":[4],"25":[4],"26":[0],"27":[2],"28":[2],"29":[1],"30":[1],"31":[2],"32":[0],"33":[34],"34":[33],"35":[1],"36":[0],"37":[9],"38":[7],"39":[0],"40":[9],"41":[0],"42":[7],"43":[27],"44":[21],"45":[0],"46":[7],"47":[6],"48":[15],"49":[1],"50":[14],"51":[3],"52":[14],"53":[5],"54":[3],"55":[7],"56":[11],"57":[0],"58":[21],"59":[4],"60":[28],"61":[24],"62":[15],"63":[4]},"fnMap":{"0":{"name":"syncingMsg","decl":{"start":{"line":23,"column":19},"end":{"line":24,"column":74}},"loc":{"start":{"line":23,"column":19},"end":{"line":24,"column":74}},"line":23},"1":{"name":"isSyncedProofOfIndex","decl":{"start":{"line":26,"column":0},"end":{"line":28,"column":1}},"loc":{"start":{"line":26,"column":0},"end":{"line":28,"column":1}},"line":26},"2":{"name":"PoiSyncService","decl":{"start":{"line":49,"column":2},"end":{"line":56,"column":3}},"loc":{"start":{"line":49,"column":2},"end":{"line":56,"column":3}},"line":49},"3":{"name":"onApplicationShutdown","decl":{"start":{"line":58,"column":2},"end":{"line":60,"column":3}},"loc":{"start":{"line":58,"column":2},"end":{"line":60,"column":3}},"line":58},"4":{"name":"get poiRepo","decl":{"start":{"line":62,"column":2},"end":{"line":67,"column":3}},"loc":{"start":{"line":62,"column":2},"end":{"line":67,"column":3}},"line":62},"5":{"name":"get metadataRepo","decl":{"start":{"line":69,"column":2},"end":{"line":74,"column":3}},"loc":{"start":{"line":69,"column":2},"end":{"line":74,"column":3}},"line":69},"6":{"name":"get sequelize","decl":{"start":{"line":76,"column":2},"end":{"line":81,"column":3}},"loc":{"start":{"line":76,"column":2},"end":{"line":81,"column":3}},"line":76},"7":{"name":"get projectId","decl":{"start":{"line":83,"column":2},"end":{"line":88,"column":3}},"loc":{"start":{"line":83,"column":2},"end":{"line":88,"column":3}},"line":83},"8":{"name":"get latestSyncedPoi","decl":{"start":{"line":90,"column":2},"end":{"line":100,"column":3}},"loc":{"start":{"line":90,"column":2},"end":{"line":100,"column":3}},"line":90},"9":{"name":"init","decl":{"start":{"line":102,"column":2},"end":{"line":112,"column":3}},"loc":{"start":{"line":102,"column":2},"end":{"line":112,"column":3}},"line":102},"10":{"name":"syncPoi","decl":{"start":{"line":114,"column":2},"end":{"line":161,"column":3}},"loc":{"start":{"line":114,"column":2},"end":{"line":161,"column":3}},"line":114},"11":{"name":"stopSync","decl":{"start":{"line":166,"column":2},"end":{"line":176,"column":3}},"loc":{"start":{"line":166,"column":2},"end":{"line":176,"column":3}},"line":166},"12":{"name":"clear","decl":{"start":{"line":183,"column":2},"end":{"line":186,"column":3}},"loc":{"start":{"line":183,"column":2},"end":{"line":186,"column":3}},"line":183},"13":{"name":"getMetadataLatestSyncedPoi","decl":{"start":{"line":192,"column":10},"end":{"line":198,"column":3}},"loc":{"start":{"line":192,"column":10},"end":{"line":198,"column":3}},"line":192},"14":{"name":"validateSyncedPoi","decl":{"start":{"line":200,"column":10},"end":{"line":211,"column":3}},"loc":{"start":{"line":200,"column":10},"end":{"line":211,"column":3}},"line":200},"15":{"name":"syncLatestSyncedPoiFromDb","decl":{"start":{"line":218,"column":10},"end":{"line":230,"column":3}},"loc":{"start":{"line":218,"column":10},"end":{"line":230,"column":3}},"line":218},"16":{"name":"ensureGenesisPoi","decl":{"start":{"line":237,"column":10},"end":{"line":246,"column":3}},"loc":{"start":{"line":237,"column":10},"end":{"line":246,"column":3}},"line":237},"17":{"name":"setLatestSyncedPoi","decl":{"start":{"line":253,"column":10},"end":{"line":265,"column":3}},"loc":{"start":{"line":253,"column":10},"end":{"line":265,"column":3}},"line":253},"18":{"name":"createGenesisPoi","decl":{"start":{"line":272,"column":10},"end":{"line":285,"column":3}},"loc":{"start":{"line":272,"column":10},"end":{"line":285,"column":3}},"line":272},"19":{"name":"syncPoiJob","decl":{"start":{"line":294,"column":10},"end":{"line":317,"column":3}},"loc":{"start":{"line":294,"column":10},"end":{"line":317,"column":3}},"line":294},"20":{"name":"addDefaultPoiBlocks","decl":{"start":{"line":324,"column":10},"end":{"line":330,"column":3}},"loc":{"start":{"line":324,"column":10},"end":{"line":330,"column":3}},"line":324},"21":{"name":"newTx","decl":{"start":{"line":336,"column":10},"end":{"line":342,"column":3}},"loc":{"start":{"line":336,"column":10},"end":{"line":342,"column":3}},"line":336},"22":{"name":"updateMetadataSyncedPoi","decl":{"start":{"line":350,"column":10},"end":{"line":358,"column":3}},"loc":{"start":{"line":350,"column":10},"end":{"line":358,"column":3}},"line":350},"23":{"name":"syncedPoiQueueAppend","decl":{"start":{"line":365,"column":10},"end":{"line":370,"column":3}},"loc":{"start":{"line":365,"column":10},"end":{"line":370,"column":3}},"line":365},"24":{"name":"isFlushable","decl":{"start":{"line":378,"column":10},"end":{"line":382,"column":3}},"loc":{"start":{"line":378,"column":10},"end":{"line":382,"column":3}},"line":378},"25":{"name":"flushSyncedBlocks","decl":{"start":{"line":390,"column":10},"end":{"line":403,"column":3}},"loc":{"start":{"line":390,"column":10},"end":{"line":403,"column":3}},"line":390}},"f":{"0":4,"1":93,"2":28,"3":21,"4":45,"5":2,"6":11,"7":28,"8":93,"9":0,"10":5,"11":2,"12":1,"13":2,"14":34,"15":9,"16":9,"17":27,"18":7,"19":6,"20":3,"21":11,"22":0,"23":21,"24":28,"25":4}},"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/indexer/project.service.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/indexer/project.service.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":28}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":44}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":52}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":72}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":45}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":36}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":64}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":39}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":36}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":8}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":27}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":17}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":11}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":15}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":22}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":17}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":10}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":18}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":55}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":62}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":54}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":40}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":37}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":45}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":45}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":58}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":70}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":0}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":36}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":0}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":34}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":17}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":53}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":3}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":1}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":0}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":41}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":19}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":28}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":98}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":32}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":1}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":27}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":32}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":32}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":0}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":44}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":70}},"51":{"start":{"line":52,"column":0},"end":{"line":52,"column":113}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":0}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":14}},"54":{"start":{"line":55,"column":0},"end":{"line":55,"column":64}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":39}},"56":{"start":{"line":57,"column":0},"end":{"line":57,"column":44}},"57":{"start":{"line":58,"column":0},"end":{"line":58,"column":52}},"58":{"start":{"line":59,"column":0},"end":{"line":59,"column":44}},"59":{"start":{"line":60,"column":0},"end":{"line":60,"column":76}},"60":{"start":{"line":61,"column":0},"end":{"line":61,"column":87}},"61":{"start":{"line":62,"column":0},"end":{"line":62,"column":50}},"62":{"start":{"line":63,"column":0},"end":{"line":63,"column":46}},"63":{"start":{"line":64,"column":0},"end":{"line":64,"column":62}},"64":{"start":{"line":65,"column":0},"end":{"line":65,"column":40}},"65":{"start":{"line":66,"column":0},"end":{"line":66,"column":72}},"66":{"start":{"line":67,"column":0},"end":{"line":67,"column":5}},"67":{"start":{"line":68,"column":0},"end":{"line":68,"column":33}},"68":{"start":{"line":69,"column":0},"end":{"line":69,"column":18}},"69":{"start":{"line":70,"column":0},"end":{"line":70,"column":123}},"70":{"start":{"line":71,"column":0},"end":{"line":71,"column":8}},"71":{"start":{"line":72,"column":0},"end":{"line":72,"column":5}},"72":{"start":{"line":73,"column":0},"end":{"line":73,"column":0}},"73":{"start":{"line":74,"column":0},"end":{"line":74,"column":84}},"74":{"start":{"line":75,"column":0},"end":{"line":75,"column":100}},"75":{"start":{"line":76,"column":0},"end":{"line":76,"column":5}},"76":{"start":{"line":77,"column":0},"end":{"line":77,"column":3}},"77":{"start":{"line":78,"column":0},"end":{"line":78,"column":0}},"78":{"start":{"line":79,"column":0},"end":{"line":79,"column":34}},"79":{"start":{"line":80,"column":0},"end":{"line":80,"column":45}},"80":{"start":{"line":81,"column":0},"end":{"line":81,"column":24}},"81":{"start":{"line":82,"column":0},"end":{"line":82,"column":3}},"82":{"start":{"line":83,"column":0},"end":{"line":83,"column":0}},"83":{"start":{"line":84,"column":0},"end":{"line":84,"column":29}},"84":{"start":{"line":85,"column":0},"end":{"line":85,"column":64}},"85":{"start":{"line":86,"column":0},"end":{"line":86,"column":29}},"86":{"start":{"line":87,"column":0},"end":{"line":87,"column":3}},"87":{"start":{"line":88,"column":0},"end":{"line":88,"column":0}},"88":{"start":{"line":89,"column":0},"end":{"line":89,"column":41}},"89":{"start":{"line":90,"column":0},"end":{"line":90,"column":29}},"90":{"start":{"line":91,"column":0},"end":{"line":91,"column":3}},"91":{"start":{"line":92,"column":0},"end":{"line":92,"column":0}},"92":{"start":{"line":93,"column":0},"end":{"line":93,"column":41}},"93":{"start":{"line":94,"column":0},"end":{"line":94,"column":40}},"94":{"start":{"line":95,"column":0},"end":{"line":95,"column":3}},"95":{"start":{"line":96,"column":0},"end":{"line":96,"column":0}},"96":{"start":{"line":97,"column":0},"end":{"line":97,"column":73}},"97":{"start":{"line":98,"column":0},"end":{"line":98,"column":69}},"98":{"start":{"line":99,"column":0},"end":{"line":99,"column":3}},"99":{"start":{"line":100,"column":0},"end":{"line":100,"column":0}},"100":{"start":{"line":101,"column":0},"end":{"line":101,"column":51}},"101":{"start":{"line":102,"column":0},"end":{"line":102,"column":74}},"102":{"start":{"line":103,"column":0},"end":{"line":103,"column":75}},"103":{"start":{"line":104,"column":0},"end":{"line":104,"column":5}},"104":{"start":{"line":105,"column":0},"end":{"line":105,"column":0}},"105":{"start":{"line":106,"column":0},"end":{"line":106,"column":50}},"106":{"start":{"line":107,"column":0},"end":{"line":107,"column":23}},"107":{"start":{"line":108,"column":0},"end":{"line":108,"column":48}},"108":{"start":{"line":109,"column":0},"end":{"line":109,"column":0}},"109":{"start":{"line":110,"column":0},"end":{"line":110,"column":113}},"110":{"start":{"line":111,"column":0},"end":{"line":111,"column":59}},"111":{"start":{"line":112,"column":0},"end":{"line":112,"column":34}},"112":{"start":{"line":113,"column":0},"end":{"line":113,"column":87}},"113":{"start":{"line":114,"column":0},"end":{"line":114,"column":78}},"114":{"start":{"line":115,"column":0},"end":{"line":115,"column":0}},"115":{"start":{"line":116,"column":0},"end":{"line":116,"column":9}},"116":{"start":{"line":117,"column":0},"end":{"line":117,"column":69}},"117":{"start":{"line":118,"column":0},"end":{"line":118,"column":110}},"118":{"start":{"line":119,"column":0},"end":{"line":119,"column":91}},"119":{"start":{"line":120,"column":0},"end":{"line":120,"column":11}},"120":{"start":{"line":121,"column":0},"end":{"line":121,"column":0}},"121":{"start":{"line":122,"column":0},"end":{"line":122,"column":57}},"122":{"start":{"line":123,"column":0},"end":{"line":123,"column":0}},"123":{"start":{"line":124,"column":0},"end":{"line":124,"column":93}},"124":{"start":{"line":125,"column":0},"end":{"line":125,"column":44}},"125":{"start":{"line":126,"column":0},"end":{"line":126,"column":69}},"126":{"start":{"line":127,"column":0},"end":{"line":127,"column":7}},"127":{"start":{"line":128,"column":0},"end":{"line":128,"column":0}},"128":{"start":{"line":129,"column":0},"end":{"line":129,"column":102}},"129":{"start":{"line":130,"column":0},"end":{"line":130,"column":32}},"130":{"start":{"line":131,"column":0},"end":{"line":131,"column":39}},"131":{"start":{"line":132,"column":0},"end":{"line":132,"column":0}},"132":{"start":{"line":133,"column":0},"end":{"line":133,"column":41}},"133":{"start":{"line":134,"column":0},"end":{"line":134,"column":49}},"134":{"start":{"line":135,"column":0},"end":{"line":135,"column":48}},"135":{"start":{"line":136,"column":0},"end":{"line":136,"column":48}},"136":{"start":{"line":137,"column":0},"end":{"line":137,"column":52}},"137":{"start":{"line":138,"column":0},"end":{"line":138,"column":52}},"138":{"start":{"line":139,"column":0},"end":{"line":139,"column":7}},"139":{"start":{"line":140,"column":0},"end":{"line":140,"column":0}},"140":{"start":{"line":141,"column":0},"end":{"line":141,"column":93}},"141":{"start":{"line":142,"column":0},"end":{"line":142,"column":72}},"142":{"start":{"line":143,"column":0},"end":{"line":143,"column":0}},"143":{"start":{"line":144,"column":0},"end":{"line":144,"column":47}},"144":{"start":{"line":145,"column":0},"end":{"line":145,"column":49}},"145":{"start":{"line":146,"column":0},"end":{"line":146,"column":7}},"146":{"start":{"line":147,"column":0},"end":{"line":147,"column":0}},"147":{"start":{"line":148,"column":0},"end":{"line":148,"column":79}},"148":{"start":{"line":149,"column":0},"end":{"line":149,"column":0}},"149":{"start":{"line":150,"column":0},"end":{"line":150,"column":43}},"150":{"start":{"line":151,"column":0},"end":{"line":151,"column":45}},"151":{"start":{"line":152,"column":0},"end":{"line":152,"column":7}},"152":{"start":{"line":153,"column":0},"end":{"line":153,"column":0}},"153":{"start":{"line":154,"column":0},"end":{"line":154,"column":50}},"154":{"start":{"line":155,"column":0},"end":{"line":155,"column":64}},"155":{"start":{"line":156,"column":0},"end":{"line":156,"column":12}},"156":{"start":{"line":157,"column":0},"end":{"line":157,"column":94}},"157":{"start":{"line":158,"column":0},"end":{"line":158,"column":94}},"158":{"start":{"line":159,"column":0},"end":{"line":159,"column":0}},"159":{"start":{"line":160,"column":0},"end":{"line":160,"column":51}},"160":{"start":{"line":161,"column":0},"end":{"line":161,"column":47}},"161":{"start":{"line":162,"column":0},"end":{"line":162,"column":5}},"162":{"start":{"line":163,"column":0},"end":{"line":163,"column":0}},"163":{"start":{"line":164,"column":0},"end":{"line":164,"column":74}},"164":{"start":{"line":165,"column":0},"end":{"line":165,"column":96}},"165":{"start":{"line":166,"column":0},"end":{"line":166,"column":3}},"166":{"start":{"line":167,"column":0},"end":{"line":167,"column":0}},"167":{"start":{"line":168,"column":0},"end":{"line":168,"column":50}},"168":{"start":{"line":169,"column":0},"end":{"line":169,"column":55}},"169":{"start":{"line":170,"column":0},"end":{"line":170,"column":18}},"170":{"start":{"line":171,"column":0},"end":{"line":171,"column":48}},"171":{"start":{"line":172,"column":0},"end":{"line":172,"column":5}},"172":{"start":{"line":173,"column":0},"end":{"line":173,"column":48}},"173":{"start":{"line":174,"column":0},"end":{"line":174,"column":18}},"174":{"start":{"line":175,"column":0},"end":{"line":175,"column":7}},"175":{"start":{"line":176,"column":0},"end":{"line":176,"column":0}},"176":{"start":{"line":177,"column":0},"end":{"line":177,"column":18}},"177":{"start":{"line":178,"column":0},"end":{"line":178,"column":3}},"178":{"start":{"line":179,"column":0},"end":{"line":179,"column":0}},"179":{"start":{"line":180,"column":0},"end":{"line":180,"column":56}},"180":{"start":{"line":181,"column":0},"end":{"line":181,"column":44}},"181":{"start":{"line":182,"column":0},"end":{"line":182,"column":60}},"182":{"start":{"line":183,"column":0},"end":{"line":183,"column":61}},"183":{"start":{"line":184,"column":0},"end":{"line":184,"column":59}},"184":{"start":{"line":185,"column":0},"end":{"line":185,"column":5}},"185":{"start":{"line":186,"column":0},"end":{"line":186,"column":0}},"186":{"start":{"line":187,"column":0},"end":{"line":187,"column":18}},"187":{"start":{"line":188,"column":0},"end":{"line":188,"column":3}},"188":{"start":{"line":189,"column":0},"end":{"line":189,"column":0}},"189":{"start":{"line":190,"column":0},"end":{"line":190,"column":54}},"190":{"start":{"line":191,"column":0},"end":{"line":191,"column":62}},"191":{"start":{"line":192,"column":0},"end":{"line":192,"column":3}},"192":{"start":{"line":193,"column":0},"end":{"line":193,"column":0}},"193":{"start":{"line":194,"column":0},"end":{"line":194,"column":47}},"194":{"start":{"line":195,"column":0},"end":{"line":195,"column":69}},"195":{"start":{"line":196,"column":0},"end":{"line":196,"column":3}},"196":{"start":{"line":197,"column":0},"end":{"line":197,"column":0}},"197":{"start":{"line":198,"column":0},"end":{"line":198,"column":49}},"198":{"start":{"line":199,"column":0},"end":{"line":199,"column":59}},"199":{"start":{"line":200,"column":0},"end":{"line":200,"column":0}},"200":{"start":{"line":201,"column":0},"end":{"line":201,"column":86}},"201":{"start":{"line":202,"column":0},"end":{"line":202,"column":0}},"202":{"start":{"line":203,"column":0},"end":{"line":203,"column":42}},"203":{"start":{"line":204,"column":0},"end":{"line":204,"column":28}},"204":{"start":{"line":205,"column":0},"end":{"line":205,"column":20}},"205":{"start":{"line":206,"column":0},"end":{"line":206,"column":27}},"206":{"start":{"line":207,"column":0},"end":{"line":207,"column":14}},"207":{"start":{"line":208,"column":0},"end":{"line":208,"column":17}},"208":{"start":{"line":209,"column":0},"end":{"line":209,"column":20}},"209":{"start":{"line":210,"column":0},"end":{"line":210,"column":20}},"210":{"start":{"line":211,"column":0},"end":{"line":211,"column":28}},"211":{"start":{"line":212,"column":0},"end":{"line":212,"column":36}},"212":{"start":{"line":213,"column":0},"end":{"line":213,"column":29}},"213":{"start":{"line":214,"column":0},"end":{"line":214,"column":27}},"214":{"start":{"line":215,"column":0},"end":{"line":215,"column":6}},"215":{"start":{"line":216,"column":0},"end":{"line":216,"column":0}},"216":{"start":{"line":217,"column":0},"end":{"line":217,"column":51}},"217":{"start":{"line":218,"column":0},"end":{"line":218,"column":0}},"218":{"start":{"line":219,"column":0},"end":{"line":219,"column":71}},"219":{"start":{"line":220,"column":0},"end":{"line":220,"column":0}},"220":{"start":{"line":221,"column":0},"end":{"line":221,"column":30}},"221":{"start":{"line":222,"column":0},"end":{"line":222,"column":48}},"222":{"start":{"line":223,"column":0},"end":{"line":223,"column":0}},"223":{"start":{"line":224,"column":0},"end":{"line":224,"column":24}},"224":{"start":{"line":225,"column":0},"end":{"line":225,"column":46}},"225":{"start":{"line":226,"column":0},"end":{"line":226,"column":56}},"226":{"start":{"line":227,"column":0},"end":{"line":227,"column":48}},"227":{"start":{"line":228,"column":0},"end":{"line":228,"column":58}},"228":{"start":{"line":229,"column":0},"end":{"line":229,"column":9}},"229":{"start":{"line":230,"column":0},"end":{"line":230,"column":5}},"230":{"start":{"line":231,"column":0},"end":{"line":231,"column":32}},"231":{"start":{"line":232,"column":0},"end":{"line":232,"column":47}},"232":{"start":{"line":233,"column":0},"end":{"line":233,"column":12}},"233":{"start":{"line":234,"column":0},"end":{"line":234,"column":85}},"234":{"start":{"line":235,"column":0},"end":{"line":235,"column":13}},"235":{"start":{"line":236,"column":0},"end":{"line":236,"column":45}},"236":{"start":{"line":237,"column":0},"end":{"line":237,"column":253}},"237":{"start":{"line":238,"column":0},"end":{"line":238,"column":8}},"238":{"start":{"line":239,"column":0},"end":{"line":239,"column":5}},"239":{"start":{"line":240,"column":0},"end":{"line":240,"column":35}},"240":{"start":{"line":241,"column":0},"end":{"line":241,"column":35}},"241":{"start":{"line":242,"column":0},"end":{"line":242,"column":5}},"242":{"start":{"line":243,"column":0},"end":{"line":243,"column":0}},"243":{"start":{"line":244,"column":0},"end":{"line":244,"column":41}},"244":{"start":{"line":245,"column":0},"end":{"line":245,"column":41}},"245":{"start":{"line":246,"column":0},"end":{"line":246,"column":5}},"246":{"start":{"line":247,"column":0},"end":{"line":247,"column":0}},"247":{"start":{"line":248,"column":0},"end":{"line":248,"column":115}},"248":{"start":{"line":249,"column":0},"end":{"line":249,"column":73}},"249":{"start":{"line":250,"column":0},"end":{"line":250,"column":45}},"250":{"start":{"line":251,"column":0},"end":{"line":251,"column":5}},"251":{"start":{"line":252,"column":0},"end":{"line":252,"column":0}},"252":{"start":{"line":253,"column":0},"end":{"line":253,"column":62}},"253":{"start":{"line":254,"column":0},"end":{"line":254,"column":62}},"254":{"start":{"line":255,"column":0},"end":{"line":255,"column":5}},"255":{"start":{"line":256,"column":0},"end":{"line":256,"column":41}},"256":{"start":{"line":257,"column":0},"end":{"line":257,"column":46}},"257":{"start":{"line":258,"column":0},"end":{"line":258,"column":5}},"258":{"start":{"line":259,"column":0},"end":{"line":259,"column":32}},"259":{"start":{"line":260,"column":0},"end":{"line":260,"column":71}},"260":{"start":{"line":261,"column":0},"end":{"line":261,"column":5}},"261":{"start":{"line":262,"column":0},"end":{"line":262,"column":0}},"262":{"start":{"line":263,"column":0},"end":{"line":263,"column":39}},"263":{"start":{"line":264,"column":0},"end":{"line":264,"column":45}},"264":{"start":{"line":265,"column":0},"end":{"line":265,"column":65}},"265":{"start":{"line":266,"column":0},"end":{"line":266,"column":105}},"266":{"start":{"line":267,"column":0},"end":{"line":267,"column":73}},"267":{"start":{"line":268,"column":0},"end":{"line":268,"column":82}},"268":{"start":{"line":269,"column":0},"end":{"line":269,"column":5}},"269":{"start":{"line":270,"column":0},"end":{"line":270,"column":3}},"270":{"start":{"line":271,"column":0},"end":{"line":271,"column":0}},"271":{"start":{"line":272,"column":0},"end":{"line":272,"column":73}},"272":{"start":{"line":273,"column":0},"end":{"line":273,"column":77}},"273":{"start":{"line":274,"column":0},"end":{"line":274,"column":3}},"274":{"start":{"line":275,"column":0},"end":{"line":275,"column":0}},"275":{"start":{"line":276,"column":0},"end":{"line":276,"column":66}},"276":{"start":{"line":277,"column":0},"end":{"line":277,"column":68}},"277":{"start":{"line":278,"column":0},"end":{"line":278,"column":0}},"278":{"start":{"line":279,"column":0},"end":{"line":279,"column":40}},"279":{"start":{"line":280,"column":0},"end":{"line":280,"column":45}},"280":{"start":{"line":281,"column":0},"end":{"line":281,"column":5}},"281":{"start":{"line":282,"column":0},"end":{"line":282,"column":21}},"282":{"start":{"line":283,"column":0},"end":{"line":283,"column":3}},"283":{"start":{"line":284,"column":0},"end":{"line":284,"column":0}},"284":{"start":{"line":285,"column":0},"end":{"line":285,"column":42}},"285":{"start":{"line":286,"column":0},"end":{"line":286,"column":9}},"286":{"start":{"line":287,"column":0},"end":{"line":287,"column":54}},"287":{"start":{"line":288,"column":0},"end":{"line":288,"column":22}},"288":{"start":{"line":289,"column":0},"end":{"line":289,"column":22}},"289":{"start":{"line":290,"column":0},"end":{"line":290,"column":22}},"290":{"start":{"line":291,"column":0},"end":{"line":291,"column":5}},"291":{"start":{"line":292,"column":0},"end":{"line":292,"column":3}},"292":{"start":{"line":293,"column":0},"end":{"line":293,"column":0}},"293":{"start":{"line":294,"column":0},"end":{"line":294,"column":29}},"294":{"start":{"line":295,"column":0},"end":{"line":295,"column":77}},"295":{"start":{"line":296,"column":0},"end":{"line":296,"column":49}},"296":{"start":{"line":297,"column":0},"end":{"line":297,"column":63}},"297":{"start":{"line":298,"column":0},"end":{"line":298,"column":0}},"298":{"start":{"line":299,"column":0},"end":{"line":299,"column":42}},"299":{"start":{"line":300,"column":0},"end":{"line":300,"column":3}},"300":{"start":{"line":301,"column":0},"end":{"line":301,"column":0}},"301":{"start":{"line":302,"column":0},"end":{"line":302,"column":54}},"302":{"start":{"line":303,"column":0},"end":{"line":303,"column":52}},"303":{"start":{"line":304,"column":0},"end":{"line":304,"column":54}},"304":{"start":{"line":305,"column":0},"end":{"line":305,"column":48}},"305":{"start":{"line":306,"column":0},"end":{"line":306,"column":18}},"306":{"start":{"line":307,"column":0},"end":{"line":307,"column":5}},"307":{"start":{"line":308,"column":0},"end":{"line":308,"column":0}},"308":{"start":{"line":309,"column":0},"end":{"line":309,"column":64}},"309":{"start":{"line":310,"column":0},"end":{"line":310,"column":48}},"310":{"start":{"line":311,"column":0},"end":{"line":311,"column":95}},"311":{"start":{"line":312,"column":0},"end":{"line":312,"column":3}},"312":{"start":{"line":313,"column":0},"end":{"line":313,"column":0}},"313":{"start":{"line":314,"column":0},"end":{"line":314,"column":61}},"314":{"start":{"line":315,"column":0},"end":{"line":315,"column":49}},"315":{"start":{"line":316,"column":0},"end":{"line":316,"column":74}},"316":{"start":{"line":317,"column":0},"end":{"line":317,"column":0}},"317":{"start":{"line":318,"column":0},"end":{"line":318,"column":49}},"318":{"start":{"line":319,"column":0},"end":{"line":319,"column":13}},"319":{"start":{"line":320,"column":0},"end":{"line":320,"column":36}},"320":{"start":{"line":321,"column":0},"end":{"line":321,"column":39}},"321":{"start":{"line":322,"column":0},"end":{"line":322,"column":41}},"322":{"start":{"line":323,"column":0},"end":{"line":323,"column":68}},"323":{"start":{"line":324,"column":0},"end":{"line":324,"column":6}},"324":{"start":{"line":325,"column":0},"end":{"line":325,"column":3}},"325":{"start":{"line":326,"column":0},"end":{"line":326,"column":0}},"326":{"start":{"line":327,"column":0},"end":{"line":327,"column":19}},"327":{"start":{"line":328,"column":0},"end":{"line":328,"column":45}},"328":{"start":{"line":329,"column":0},"end":{"line":329,"column":63}},"329":{"start":{"line":330,"column":0},"end":{"line":330,"column":42}},"330":{"start":{"line":331,"column":0},"end":{"line":331,"column":0}},"331":{"start":{"line":332,"column":0},"end":{"line":332,"column":62}},"332":{"start":{"line":333,"column":0},"end":{"line":333,"column":0}},"333":{"start":{"line":334,"column":0},"end":{"line":334,"column":47}},"334":{"start":{"line":335,"column":0},"end":{"line":335,"column":44}},"335":{"start":{"line":336,"column":0},"end":{"line":336,"column":37}},"336":{"start":{"line":337,"column":0},"end":{"line":337,"column":0}},"337":{"start":{"line":338,"column":0},"end":{"line":338,"column":36}},"338":{"start":{"line":339,"column":0},"end":{"line":339,"column":47}},"339":{"start":{"line":340,"column":0},"end":{"line":340,"column":38}},"340":{"start":{"line":341,"column":0},"end":{"line":341,"column":33}},"341":{"start":{"line":342,"column":0},"end":{"line":342,"column":77}},"342":{"start":{"line":343,"column":0},"end":{"line":343,"column":71}},"343":{"start":{"line":344,"column":0},"end":{"line":344,"column":28}},"344":{"start":{"line":345,"column":0},"end":{"line":345,"column":10}},"345":{"start":{"line":346,"column":0},"end":{"line":346,"column":7}},"346":{"start":{"line":347,"column":0},"end":{"line":347,"column":0}},"347":{"start":{"line":348,"column":0},"end":{"line":348,"column":46}},"348":{"start":{"line":349,"column":0},"end":{"line":349,"column":122}},"349":{"start":{"line":350,"column":0},"end":{"line":350,"column":21}},"350":{"start":{"line":351,"column":0},"end":{"line":351,"column":99}},"351":{"start":{"line":352,"column":0},"end":{"line":352,"column":93}},"352":{"start":{"line":353,"column":0},"end":{"line":353,"column":15}},"353":{"start":{"line":354,"column":0},"end":{"line":354,"column":15}},"354":{"start":{"line":355,"column":0},"end":{"line":355,"column":0}},"355":{"start":{"line":356,"column":0},"end":{"line":356,"column":44}},"356":{"start":{"line":357,"column":0},"end":{"line":357,"column":58}},"357":{"start":{"line":358,"column":0},"end":{"line":358,"column":96}},"358":{"start":{"line":359,"column":0},"end":{"line":359,"column":10}},"359":{"start":{"line":360,"column":0},"end":{"line":360,"column":26}},"360":{"start":{"line":361,"column":0},"end":{"line":361,"column":81}},"361":{"start":{"line":362,"column":0},"end":{"line":362,"column":83}},"362":{"start":{"line":363,"column":0},"end":{"line":363,"column":11}},"363":{"start":{"line":364,"column":0},"end":{"line":364,"column":0}},"364":{"start":{"line":365,"column":0},"end":{"line":365,"column":85}},"365":{"start":{"line":366,"column":0},"end":{"line":366,"column":105}},"366":{"start":{"line":367,"column":0},"end":{"line":367,"column":0}},"367":{"start":{"line":368,"column":0},"end":{"line":368,"column":39}},"368":{"start":{"line":369,"column":0},"end":{"line":369,"column":91}},"369":{"start":{"line":370,"column":0},"end":{"line":370,"column":62}},"370":{"start":{"line":371,"column":0},"end":{"line":371,"column":9}},"371":{"start":{"line":372,"column":0},"end":{"line":372,"column":5}},"372":{"start":{"line":373,"column":0},"end":{"line":373,"column":0}},"373":{"start":{"line":374,"column":0},"end":{"line":374,"column":37}},"374":{"start":{"line":375,"column":0},"end":{"line":375,"column":3}},"375":{"start":{"line":376,"column":0},"end":{"line":376,"column":0}},"376":{"start":{"line":377,"column":0},"end":{"line":377,"column":72}},"377":{"start":{"line":378,"column":0},"end":{"line":378,"column":66}},"378":{"start":{"line":379,"column":0},"end":{"line":379,"column":19}},"379":{"start":{"line":380,"column":0},"end":{"line":380,"column":125}},"380":{"start":{"line":381,"column":0},"end":{"line":381,"column":8}},"381":{"start":{"line":382,"column":0},"end":{"line":382,"column":22}},"382":{"start":{"line":383,"column":0},"end":{"line":383,"column":5}},"383":{"start":{"line":384,"column":0},"end":{"line":384,"column":0}},"384":{"start":{"line":385,"column":0},"end":{"line":385,"column":34}},"385":{"start":{"line":386,"column":0},"end":{"line":386,"column":3}},"386":{"start":{"line":387,"column":0},"end":{"line":387,"column":0}},"387":{"start":{"line":388,"column":0},"end":{"line":388,"column":66}},"388":{"start":{"line":389,"column":0},"end":{"line":389,"column":70}},"389":{"start":{"line":390,"column":0},"end":{"line":390,"column":3}},"390":{"start":{"line":391,"column":0},"end":{"line":391,"column":0}},"391":{"start":{"line":392,"column":0},"end":{"line":392,"column":5}},"392":{"start":{"line":393,"column":0},"end":{"line":393,"column":128}},"393":{"start":{"line":394,"column":0},"end":{"line":394,"column":73}},"394":{"start":{"line":395,"column":0},"end":{"line":395,"column":7}},"395":{"start":{"line":396,"column":0},"end":{"line":396,"column":86}},"396":{"start":{"line":397,"column":0},"end":{"line":397,"column":63}},"397":{"start":{"line":398,"column":0},"end":{"line":398,"column":24}},"398":{"start":{"line":399,"column":0},"end":{"line":399,"column":18}},"399":{"start":{"line":400,"column":0},"end":{"line":400,"column":22}},"400":{"start":{"line":401,"column":0},"end":{"line":401,"column":21}},"401":{"start":{"line":402,"column":0},"end":{"line":402,"column":18}},"402":{"start":{"line":403,"column":0},"end":{"line":403,"column":41}},"403":{"start":{"line":404,"column":0},"end":{"line":404,"column":6}},"404":{"start":{"line":405,"column":0},"end":{"line":405,"column":0}},"405":{"start":{"line":406,"column":0},"end":{"line":406,"column":49}},"406":{"start":{"line":407,"column":0},"end":{"line":407,"column":45}},"407":{"start":{"line":408,"column":0},"end":{"line":408,"column":0}},"408":{"start":{"line":409,"column":0},"end":{"line":409,"column":23}},"409":{"start":{"line":410,"column":0},"end":{"line":410,"column":70}},"410":{"start":{"line":411,"column":0},"end":{"line":411,"column":0}},"411":{"start":{"line":412,"column":0},"end":{"line":412,"column":50}},"412":{"start":{"line":413,"column":0},"end":{"line":413,"column":39}},"413":{"start":{"line":414,"column":0},"end":{"line":414,"column":66}},"414":{"start":{"line":415,"column":0},"end":{"line":415,"column":26}},"415":{"start":{"line":416,"column":0},"end":{"line":416,"column":68}},"416":{"start":{"line":417,"column":0},"end":{"line":417,"column":10}},"417":{"start":{"line":418,"column":0},"end":{"line":418,"column":14}},"418":{"start":{"line":419,"column":0},"end":{"line":419,"column":72}},"419":{"start":{"line":420,"column":0},"end":{"line":420,"column":35}},"420":{"start":{"line":421,"column":0},"end":{"line":421,"column":25}},"421":{"start":{"line":422,"column":0},"end":{"line":422,"column":118}},"422":{"start":{"line":423,"column":0},"end":{"line":423,"column":14}},"423":{"start":{"line":424,"column":0},"end":{"line":424,"column":28}},"424":{"start":{"line":425,"column":0},"end":{"line":425,"column":11}},"425":{"start":{"line":426,"column":0},"end":{"line":426,"column":57}},"426":{"start":{"line":427,"column":0},"end":{"line":427,"column":94}},"427":{"start":{"line":428,"column":0},"end":{"line":428,"column":28}},"428":{"start":{"line":429,"column":0},"end":{"line":429,"column":11}},"429":{"start":{"line":430,"column":0},"end":{"line":430,"column":102}},"430":{"start":{"line":431,"column":0},"end":{"line":431,"column":43}},"431":{"start":{"line":432,"column":0},"end":{"line":432,"column":34}},"432":{"start":{"line":433,"column":0},"end":{"line":433,"column":9}},"433":{"start":{"line":434,"column":0},"end":{"line":434,"column":7}},"434":{"start":{"line":435,"column":0},"end":{"line":435,"column":5}},"435":{"start":{"line":436,"column":0},"end":{"line":436,"column":21}},"436":{"start":{"line":437,"column":0},"end":{"line":437,"column":3}},"437":{"start":{"line":438,"column":0},"end":{"line":438,"column":0}},"438":{"start":{"line":439,"column":0},"end":{"line":439,"column":54}},"439":{"start":{"line":440,"column":0},"end":{"line":440,"column":64}},"440":{"start":{"line":441,"column":0},"end":{"line":441,"column":32}},"441":{"start":{"line":442,"column":0},"end":{"line":442,"column":5}},"442":{"start":{"line":443,"column":0},"end":{"line":443,"column":0}},"443":{"start":{"line":444,"column":0},"end":{"line":444,"column":45}},"444":{"start":{"line":445,"column":0},"end":{"line":445,"column":60}},"445":{"start":{"line":446,"column":0},"end":{"line":446,"column":0}},"446":{"start":{"line":447,"column":0},"end":{"line":447,"column":45}},"447":{"start":{"line":448,"column":0},"end":{"line":448,"column":3}},"448":{"start":{"line":449,"column":0},"end":{"line":449,"column":0}},"449":{"start":{"line":450,"column":0},"end":{"line":450,"column":59}},"450":{"start":{"line":451,"column":0},"end":{"line":451,"column":68}},"451":{"start":{"line":452,"column":0},"end":{"line":452,"column":0}},"452":{"start":{"line":453,"column":0},"end":{"line":453,"column":44}},"453":{"start":{"line":454,"column":0},"end":{"line":454,"column":73}},"454":{"start":{"line":455,"column":0},"end":{"line":455,"column":5}},"455":{"start":{"line":456,"column":0},"end":{"line":456,"column":0}},"456":{"start":{"line":457,"column":0},"end":{"line":457,"column":19}},"457":{"start":{"line":458,"column":0},"end":{"line":458,"column":42}},"458":{"start":{"line":459,"column":0},"end":{"line":459,"column":24}},"459":{"start":{"line":460,"column":0},"end":{"line":460,"column":26}},"460":{"start":{"line":461,"column":0},"end":{"line":461,"column":24}},"461":{"start":{"line":462,"column":0},"end":{"line":462,"column":35}},"462":{"start":{"line":463,"column":0},"end":{"line":463,"column":28}},"463":{"start":{"line":464,"column":0},"end":{"line":464,"column":21}},"464":{"start":{"line":465,"column":0},"end":{"line":465,"column":33}},"465":{"start":{"line":466,"column":0},"end":{"line":466,"column":64}},"466":{"start":{"line":467,"column":0},"end":{"line":467,"column":72}},"467":{"start":{"line":468,"column":0},"end":{"line":468,"column":6}},"468":{"start":{"line":469,"column":0},"end":{"line":469,"column":3}},"469":{"start":{"line":470,"column":0},"end":{"line":470,"column":1}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"35":80,"36":80,"37":1,"38":1,"39":1,"40":1,"41":1,"42":1,"43":1,"44":1,"45":1,"46":1,"47":1,"48":1,"49":1,"50":1,"51":1,"52":1,"53":1,"54":20,"55":20,"56":20,"57":20,"58":20,"59":20,"60":20,"61":20,"62":20,"63":20,"64":20,"65":20,"66":20,"67":20,"68":0,"69":0,"70":0,"71":0,"72":20,"73":20,"74":0,"75":0,"76":20,"77":1,"78":1,"79":60,"80":60,"81":60,"82":1,"83":1,"84":20,"85":20,"86":20,"87":1,"88":1,"89":0,"90":0,"91":1,"92":1,"93":0,"94":0,"95":1,"96":1,"97":20,"98":20,"99":1,"100":1,"101":20,"102":35,"103":35,"104":20,"105":20,"106":20,"107":20,"108":20,"109":20,"110":20,"111":20,"112":20,"113":20,"114":20,"115":20,"116":20,"117":20,"118":20,"119":20,"120":20,"121":20,"122":20,"123":20,"124":20,"125":20,"126":20,"127":20,"128":20,"129":20,"130":20,"131":20,"132":20,"133":0,"134":0,"135":0,"136":0,"137":0,"138":0,"139":20,"140":20,"141":20,"142":20,"143":20,"144":0,"145":0,"146":20,"147":20,"148":20,"149":20,"150":0,"151":0,"152":20,"153":20,"154":20,"155":20,"156":0,"157":0,"158":0,"159":0,"160":0,"161":0,"162":20,"163":20,"164":20,"165":20,"166":1,"167":1,"168":20,"169":20,"170":19,"171":19,"172":20,"173":20,"174":20,"175":20,"176":20,"177":20,"178":1,"179":1,"180":19,"181":19,"182":19,"183":19,"184":19,"185":19,"186":19,"187":19,"188":1,"189":1,"190":20,"191":20,"192":1,"193":1,"194":20,"195":20,"196":1,"197":1,"198":20,"199":20,"200":20,"201":20,"202":20,"203":20,"204":20,"205":20,"206":20,"207":20,"208":20,"209":20,"210":20,"211":20,"212":20,"213":20,"214":20,"215":20,"216":20,"217":20,"218":20,"219":20,"220":20,"221":20,"222":20,"223":20,"224":20,"225":20,"226":20,"227":20,"228":20,"229":20,"230":20,"231":20,"232":20,"233":0,"234":0,"235":0,"236":0,"237":0,"238":0,"239":20,"240":20,"241":20,"242":20,"243":20,"244":20,"245":20,"246":20,"247":20,"248":20,"249":20,"250":20,"251":20,"252":20,"253":20,"254":20,"255":20,"256":0,"257":0,"258":20,"259":20,"260":20,"261":20,"262":20,"263":20,"264":20,"265":0,"266":0,"267":0,"268":0,"269":20,"270":1,"271":1,"272":40,"273":40,"274":1,"275":1,"276":20,"277":20,"278":20,"279":0,"280":0,"281":20,"282":20,"283":1,"284":1,"285":40,"286":40,"287":40,"288":0,"289":0,"290":0,"291":40,"292":1,"293":1,"294":0,"295":0,"296":0,"297":0,"298":0,"299":0,"300":1,"301":1,"302":3,"303":3,"304":3,"305":1,"306":1,"307":2,"308":2,"309":2,"310":2,"311":2,"312":1,"313":1,"314":20,"315":20,"316":20,"317":20,"318":20,"319":20,"320":0,"321":0,"322":0,"323":20,"324":20,"325":1,"326":1,"327":1,"328":6,"329":6,"330":6,"331":6,"332":6,"333":6,"334":8,"335":8,"336":8,"337":8,"338":2,"339":2,"340":2,"341":2,"342":2,"343":2,"344":2,"345":2,"346":8,"347":8,"348":8,"349":8,"350":8,"351":8,"352":8,"353":8,"354":8,"355":8,"356":8,"357":24,"358":8,"359":8,"360":23,"361":23,"362":8,"363":8,"364":8,"365":8,"366":8,"367":8,"368":39,"369":39,"370":8,"371":8,"372":8,"373":8,"374":8,"375":1,"376":1,"377":20,"378":0,"379":0,"380":0,"381":0,"382":0,"383":20,"384":20,"385":20,"386":1,"387":1,"388":20,"389":20,"390":1,"391":1,"392":1,"393":1,"394":1,"395":1,"396":20,"397":20,"398":20,"399":20,"400":20,"401":20,"402":20,"403":20,"404":20,"405":20,"406":20,"407":20,"408":20,"409":20,"410":20,"411":20,"412":20,"413":20,"414":20,"415":20,"416":20,"417":20,"418":0,"419":0,"420":0,"421":0,"422":0,"423":0,"424":0,"425":0,"426":0,"427":0,"428":0,"429":0,"430":0,"431":0,"432":0,"433":0,"434":20,"435":20,"436":20,"437":1,"438":1,"439":13,"440":0,"441":0,"442":13,"443":13,"444":13,"445":13,"446":13,"447":13,"448":1,"449":1,"450":0,"451":0,"452":0,"453":0,"454":0,"455":0,"456":0,"457":0,"458":0,"459":0,"460":0,"461":0,"462":0,"463":0,"464":0,"465":0,"466":0,"467":0,"468":0,"469":1},"branchMap":{"0":{"type":"branch","line":35,"loc":{"start":{"line":35,"column":2},"end":{"line":37,"column":3}},"locations":[{"start":{"line":35,"column":2},"end":{"line":37,"column":3}}]},"1":{"type":"branch","line":54,"loc":{"start":{"line":54,"column":2},"end":{"line":77,"column":3}},"locations":[{"start":{"line":54,"column":2},"end":{"line":77,"column":3}}]},"2":{"type":"branch","line":68,"loc":{"start":{"line":68,"column":32},"end":{"line":72,"column":5}},"locations":[{"start":{"line":68,"column":32},"end":{"line":72,"column":5}}]},"3":{"type":"branch","line":74,"loc":{"start":{"line":74,"column":41},"end":{"line":74,"column":81}},"locations":[{"start":{"line":74,"column":41},"end":{"line":74,"column":81}}]},"4":{"type":"branch","line":74,"loc":{"start":{"line":74,"column":83},"end":{"line":76,"column":5}},"locations":[{"start":{"line":74,"column":83},"end":{"line":76,"column":5}}]},"5":{"type":"branch","line":79,"loc":{"start":{"line":79,"column":2},"end":{"line":82,"column":3}},"locations":[{"start":{"line":79,"column":2},"end":{"line":82,"column":3}}]},"6":{"type":"branch","line":84,"loc":{"start":{"line":84,"column":2},"end":{"line":87,"column":3}},"locations":[{"start":{"line":84,"column":2},"end":{"line":87,"column":3}}]},"7":{"type":"branch","line":97,"loc":{"start":{"line":97,"column":10},"end":{"line":99,"column":3}},"locations":[{"start":{"line":97,"column":10},"end":{"line":99,"column":3}}]},"8":{"type":"branch","line":101,"loc":{"start":{"line":101,"column":2},"end":{"line":166,"column":3}},"locations":[{"start":{"line":101,"column":2},"end":{"line":166,"column":3}}]},"9":{"type":"branch","line":102,"loc":{"start":{"line":102,"column":73},"end":{"line":104,"column":5}},"locations":[{"start":{"line":102,"column":73},"end":{"line":104,"column":5}}]},"10":{"type":"branch","line":133,"loc":{"start":{"line":133,"column":40},"end":{"line":139,"column":7}},"locations":[{"start":{"line":133,"column":40},"end":{"line":139,"column":7}}]},"11":{"type":"branch","line":144,"loc":{"start":{"line":144,"column":46},"end":{"line":146,"column":7}},"locations":[{"start":{"line":144,"column":46},"end":{"line":146,"column":7}}]},"12":{"type":"branch","line":150,"loc":{"start":{"line":150,"column":42},"end":{"line":152,"column":7}},"locations":[{"start":{"line":150,"column":42},"end":{"line":152,"column":7}}]},"13":{"type":"branch","line":156,"loc":{"start":{"line":156,"column":5},"end":{"line":162,"column":5}},"locations":[{"start":{"line":156,"column":5},"end":{"line":162,"column":5}}]},"14":{"type":"branch","line":168,"loc":{"start":{"line":168,"column":10},"end":{"line":178,"column":3}},"locations":[{"start":{"line":168,"column":10},"end":{"line":178,"column":3}}]},"15":{"type":"branch","line":170,"loc":{"start":{"line":170,"column":17},"end":{"line":172,"column":5}},"locations":[{"start":{"line":170,"column":17},"end":{"line":172,"column":5}}]},"16":{"type":"branch","line":180,"loc":{"start":{"line":180,"column":10},"end":{"line":188,"column":3}},"locations":[{"start":{"line":180,"column":10},"end":{"line":188,"column":3}}]},"17":{"type":"branch","line":190,"loc":{"start":{"line":190,"column":10},"end":{"line":192,"column":3}},"locations":[{"start":{"line":190,"column":10},"end":{"line":192,"column":3}}]},"18":{"type":"branch","line":194,"loc":{"start":{"line":194,"column":10},"end":{"line":196,"column":3}},"locations":[{"start":{"line":194,"column":10},"end":{"line":196,"column":3}}]},"19":{"type":"branch","line":198,"loc":{"start":{"line":198,"column":10},"end":{"line":270,"column":3}},"locations":[{"start":{"line":198,"column":10},"end":{"line":270,"column":3}}]},"20":{"type":"branch","line":233,"loc":{"start":{"line":233,"column":5},"end":{"line":239,"column":5}},"locations":[{"start":{"line":233,"column":5},"end":{"line":239,"column":5}}]},"21":{"type":"branch","line":256,"loc":{"start":{"line":256,"column":40},"end":{"line":258,"column":5}},"locations":[{"start":{"line":256,"column":40},"end":{"line":258,"column":5}}]},"22":{"type":"branch","line":265,"loc":{"start":{"line":265,"column":5},"end":{"line":269,"column":5}},"locations":[{"start":{"line":265,"column":5},"end":{"line":269,"column":5}}]},"23":{"type":"branch","line":272,"loc":{"start":{"line":272,"column":12},"end":{"line":274,"column":3}},"locations":[{"start":{"line":272,"column":12},"end":{"line":274,"column":3}}]},"24":{"type":"branch","line":276,"loc":{"start":{"line":276,"column":10},"end":{"line":283,"column":3}},"locations":[{"start":{"line":276,"column":10},"end":{"line":283,"column":3}}]},"25":{"type":"branch","line":279,"loc":{"start":{"line":279,"column":39},"end":{"line":281,"column":5}},"locations":[{"start":{"line":279,"column":39},"end":{"line":281,"column":5}}]},"26":{"type":"branch","line":285,"loc":{"start":{"line":285,"column":2},"end":{"line":292,"column":3}},"locations":[{"start":{"line":285,"column":2},"end":{"line":292,"column":3}}]},"27":{"type":"branch","line":288,"loc":{"start":{"line":288,"column":6},"end":{"line":291,"column":5}},"locations":[{"start":{"line":288,"column":6},"end":{"line":291,"column":5}}]},"28":{"type":"branch","line":302,"loc":{"start":{"line":302,"column":2},"end":{"line":312,"column":3}},"locations":[{"start":{"line":302,"column":2},"end":{"line":312,"column":3}}]},"29":{"type":"branch","line":305,"loc":{"start":{"line":305,"column":47},"end":{"line":307,"column":5}},"locations":[{"start":{"line":305,"column":47},"end":{"line":307,"column":5}}]},"30":{"type":"branch","line":308,"loc":{"start":{"line":308,"column":-1},"end":{"line":312,"column":3}},"locations":[{"start":{"line":308,"column":-1},"end":{"line":312,"column":3}}]},"31":{"type":"branch","line":311,"loc":{"start":{"line":311,"column":43},"end":{"line":311,"column":93}},"locations":[{"start":{"line":311,"column":43},"end":{"line":311,"column":93}}]},"32":{"type":"branch","line":311,"loc":{"start":{"line":311,"column":80},"end":{"line":311,"column":93}},"locations":[{"start":{"line":311,"column":80},"end":{"line":311,"column":93}}]},"33":{"type":"branch","line":314,"loc":{"start":{"line":314,"column":2},"end":{"line":325,"column":3}},"locations":[{"start":{"line":314,"column":2},"end":{"line":325,"column":3}}]},"34":{"type":"branch","line":319,"loc":{"start":{"line":319,"column":6},"end":{"line":323,"column":68}},"locations":[{"start":{"line":319,"column":6},"end":{"line":323,"column":68}}]},"35":{"type":"branch","line":320,"loc":{"start":{"line":320,"column":33},"end":{"line":323,"column":68}},"locations":[{"start":{"line":320,"column":33},"end":{"line":323,"column":68}}]},"36":{"type":"branch","line":328,"loc":{"start":{"line":328,"column":2},"end":{"line":375,"column":3}},"locations":[{"start":{"line":328,"column":2},"end":{"line":375,"column":3}}]},"37":{"type":"branch","line":334,"loc":{"start":{"line":334,"column":46},"end":{"line":375,"column":3}},"locations":[{"start":{"line":334,"column":46},"end":{"line":375,"column":3}}]},"38":{"type":"branch","line":338,"loc":{"start":{"line":338,"column":35},"end":{"line":346,"column":7}},"locations":[{"start":{"line":338,"column":35},"end":{"line":346,"column":7}}]},"39":{"type":"branch","line":342,"loc":{"start":{"line":342,"column":20},"end":{"line":342,"column":76}},"locations":[{"start":{"line":342,"column":20},"end":{"line":342,"column":76}}]},"40":{"type":"branch","line":357,"loc":{"start":{"line":357,"column":16},"end":{"line":359,"column":9}},"locations":[{"start":{"line":357,"column":16},"end":{"line":359,"column":9}}]},"41":{"type":"branch","line":358,"loc":{"start":{"line":358,"column":56},"end":{"line":358,"column":94}},"locations":[{"start":{"line":358,"column":56},"end":{"line":358,"column":94}}]},"42":{"type":"branch","line":360,"loc":{"start":{"line":360,"column":17},"end":{"line":363,"column":9}},"locations":[{"start":{"line":360,"column":17},"end":{"line":363,"column":9}}]},"43":{"type":"branch","line":362,"loc":{"start":{"line":362,"column":27},"end":{"line":362,"column":83}},"locations":[{"start":{"line":362,"column":27},"end":{"line":362,"column":83}}]},"44":{"type":"branch","line":366,"loc":{"start":{"line":366,"column":39},"end":{"line":366,"column":103}},"locations":[{"start":{"line":366,"column":39},"end":{"line":366,"column":103}}]},"45":{"type":"branch","line":366,"loc":{"start":{"line":366,"column":66},"end":{"line":366,"column":103}},"locations":[{"start":{"line":366,"column":66},"end":{"line":366,"column":103}}]},"46":{"type":"branch","line":368,"loc":{"start":{"line":368,"column":27},"end":{"line":371,"column":7}},"locations":[{"start":{"line":368,"column":27},"end":{"line":371,"column":7}}]},"47":{"type":"branch","line":369,"loc":{"start":{"line":369,"column":20},"end":{"line":369,"column":53}},"locations":[{"start":{"line":369,"column":20},"end":{"line":369,"column":53}}]},"48":{"type":"branch","line":369,"loc":{"start":{"line":369,"column":54},"end":{"line":369,"column":90}},"locations":[{"start":{"line":369,"column":54},"end":{"line":369,"column":90}}]},"49":{"type":"branch","line":377,"loc":{"start":{"line":377,"column":10},"end":{"line":386,"column":3}},"locations":[{"start":{"line":377,"column":10},"end":{"line":386,"column":3}}]},"50":{"type":"branch","line":378,"loc":{"start":{"line":378,"column":41},"end":{"line":378,"column":63}},"locations":[{"start":{"line":378,"column":41},"end":{"line":378,"column":63}}]},"51":{"type":"branch","line":378,"loc":{"start":{"line":378,"column":65},"end":{"line":383,"column":5}},"locations":[{"start":{"line":378,"column":65},"end":{"line":383,"column":5}}]},"52":{"type":"branch","line":388,"loc":{"start":{"line":388,"column":12},"end":{"line":390,"column":3}},"locations":[{"start":{"line":388,"column":12},"end":{"line":390,"column":3}}]},"53":{"type":"branch","line":396,"loc":{"start":{"line":396,"column":10},"end":{"line":437,"column":3}},"locations":[{"start":{"line":396,"column":10},"end":{"line":437,"column":3}}]},"54":{"type":"branch","line":418,"loc":{"start":{"line":418,"column":7},"end":{"line":434,"column":7}},"locations":[{"start":{"line":418,"column":7},"end":{"line":434,"column":7}}]},"55":{"type":"branch","line":439,"loc":{"start":{"line":439,"column":10},"end":{"line":448,"column":3}},"locations":[{"start":{"line":439,"column":10},"end":{"line":448,"column":3}}]},"56":{"type":"branch","line":440,"loc":{"start":{"line":440,"column":63},"end":{"line":442,"column":5}},"locations":[{"start":{"line":440,"column":63},"end":{"line":442,"column":5}}]}},"b":{"0":[80],"1":[20],"2":[0],"3":[0],"4":[0],"5":[60],"6":[20],"7":[20],"8":[20],"9":[35],"10":[0],"11":[0],"12":[0],"13":[0],"14":[20],"15":[19],"16":[19],"17":[20],"18":[20],"19":[20],"20":[0],"21":[0],"22":[0],"23":[40],"24":[20],"25":[0],"26":[40],"27":[0],"28":[3],"29":[1],"30":[2],"31":[15],"32":[1],"33":[20],"34":[20],"35":[0],"36":[6],"37":[8],"38":[2],"39":[2],"40":[24],"41":[3],"42":[23],"43":[16],"44":[81],"45":[4],"46":[39],"47":[23],"48":[16],"49":[20],"50":[0],"51":[0],"52":[20],"53":[20],"54":[0],"55":[13],"56":[0]},"fnMap":{"0":{"name":"NotInitError","decl":{"start":{"line":35,"column":2},"end":{"line":37,"column":3}},"loc":{"start":{"line":35,"column":2},"end":{"line":37,"column":3}},"line":35},"1":{"name":"BaseProjectService","decl":{"start":{"line":54,"column":2},"end":{"line":77,"column":3}},"loc":{"start":{"line":54,"column":2},"end":{"line":77,"column":3}},"line":54},"2":{"name":"get schema","decl":{"start":{"line":79,"column":2},"end":{"line":82,"column":3}},"loc":{"start":{"line":79,"column":2},"end":{"line":82,"column":3}},"line":79},"3":{"name":"get startHeight","decl":{"start":{"line":84,"column":2},"end":{"line":87,"column":3}},"loc":{"start":{"line":84,"column":2},"end":{"line":87,"column":3}},"line":84},"4":{"name":"get blockOffset","decl":{"start":{"line":89,"column":2},"end":{"line":91,"column":3}},"loc":{"start":{"line":89,"column":2},"end":{"line":91,"column":3}},"line":89},"5":{"name":"get isHistorical","decl":{"start":{"line":93,"column":2},"end":{"line":95,"column":3}},"loc":{"start":{"line":93,"column":2},"end":{"line":95,"column":3}},"line":93},"6":{"name":"getExistingProjectSchema","decl":{"start":{"line":97,"column":10},"end":{"line":99,"column":3}},"loc":{"start":{"line":97,"column":10},"end":{"line":99,"column":3}},"line":97},"7":{"name":"init","decl":{"start":{"line":101,"column":2},"end":{"line":166,"column":3}},"loc":{"start":{"line":101,"column":2},"end":{"line":166,"column":3}},"line":101},"8":{"name":"ensureProject","decl":{"start":{"line":168,"column":10},"end":{"line":178,"column":3}},"loc":{"start":{"line":168,"column":10},"end":{"line":178,"column":3}},"line":168},"9":{"name":"createProjectSchema","decl":{"start":{"line":180,"column":10},"end":{"line":188,"column":3}},"loc":{"start":{"line":180,"column":10},"end":{"line":188,"column":3}},"line":180},"10":{"name":"initHotSchemaReload","decl":{"start":{"line":190,"column":10},"end":{"line":192,"column":3}},"loc":{"start":{"line":190,"column":10},"end":{"line":192,"column":3}},"line":190},"11":{"name":"initDbSchema","decl":{"start":{"line":194,"column":10},"end":{"line":196,"column":3}},"loc":{"start":{"line":194,"column":10},"end":{"line":196,"column":3}},"line":194},"12":{"name":"ensureMetadata","decl":{"start":{"line":198,"column":10},"end":{"line":270,"column":3}},"loc":{"start":{"line":198,"column":10},"end":{"line":270,"column":3}},"line":198},"13":{"name":"getLastProcessedHeight","decl":{"start":{"line":272,"column":12},"end":{"line":274,"column":3}},"loc":{"start":{"line":272,"column":12},"end":{"line":274,"column":3}},"line":272},"14":{"name":"nextProcessHeight","decl":{"start":{"line":276,"column":10},"end":{"line":283,"column":3}},"loc":{"start":{"line":276,"column":10},"end":{"line":283,"column":3}},"line":276},"15":{"name":"getStartBlockFromDataSources","decl":{"start":{"line":285,"column":2},"end":{"line":292,"column":3}},"loc":{"start":{"line":285,"column":2},"end":{"line":292,"column":3}},"line":285},"16":{"name":"getAllDataSources","decl":{"start":{"line":294,"column":2},"end":{"line":300,"column":3}},"loc":{"start":{"line":294,"column":2},"end":{"line":300,"column":3}},"line":294},"17":{"name":"hasDataSourcesAfterHeight","decl":{"start":{"line":302,"column":2},"end":{"line":312,"column":3}},"loc":{"start":{"line":302,"column":2},"end":{"line":312,"column":3}},"line":302},"18":{"name":"getDataSources","decl":{"start":{"line":314,"column":2},"end":{"line":325,"column":3}},"loc":{"start":{"line":314,"column":2},"end":{"line":325,"column":3}},"line":314},"19":{"name":"getDataSourcesMap","decl":{"start":{"line":328,"column":2},"end":{"line":375,"column":3}},"loc":{"start":{"line":328,"column":2},"end":{"line":375,"column":3}},"line":328},"20":{"name":"initUnfinalizedInternal","decl":{"start":{"line":377,"column":10},"end":{"line":386,"column":3}},"loc":{"start":{"line":377,"column":10},"end":{"line":386,"column":3}},"line":377},"21":{"name":"initUnfinalized","decl":{"start":{"line":388,"column":12},"end":{"line":390,"column":3}},"loc":{"start":{"line":388,"column":12},"end":{"line":390,"column":3}},"line":388},"22":{"name":"initUpgradeService","decl":{"start":{"line":396,"column":10},"end":{"line":437,"column":3}},"loc":{"start":{"line":396,"column":10},"end":{"line":437,"column":3}},"line":396},"23":{"name":"handleProjectChange","decl":{"start":{"line":439,"column":10},"end":{"line":448,"column":3}},"loc":{"start":{"line":439,"column":10},"end":{"line":448,"column":3}},"line":439},"24":{"name":"reindex","decl":{"start":{"line":450,"column":2},"end":{"line":469,"column":3}},"loc":{"start":{"line":450,"column":2},"end":{"line":469,"column":3}},"line":450}},"f":{"0":80,"1":20,"2":60,"3":20,"4":0,"5":0,"6":20,"7":20,"8":20,"9":19,"10":20,"11":20,"12":20,"13":40,"14":20,"15":40,"16":0,"17":3,"18":20,"19":6,"20":20,"21":20,"22":20,"23":13,"24":0}},"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/indexer/sandbox.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/indexer/sandbox.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":44}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":24}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":41}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":47}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":41}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":35}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":69}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":52}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":51}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":36}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":33}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":0}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":32}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":16}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":16}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":15}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":16}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":18}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":1}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":0}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":59}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":10}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":24}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":17}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":16}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":14}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":86}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":21}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":25}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":6}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":24}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":36}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":4}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":2}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":0}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":36}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":0}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":37}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":23}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":24}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":37}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":0}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":105}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":10}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":44}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":18}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":28}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":44}},"51":{"start":{"line":52,"column":0},"end":{"line":52,"column":71}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":12}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":10}},"54":{"start":{"line":55,"column":0},"end":{"line":55,"column":8}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":6}},"56":{"start":{"line":57,"column":0},"end":{"line":57,"column":0}},"57":{"start":{"line":58,"column":0},"end":{"line":58,"column":35}},"58":{"start":{"line":59,"column":0},"end":{"line":59,"column":46}},"59":{"start":{"line":60,"column":0},"end":{"line":60,"column":73}},"60":{"start":{"line":61,"column":0},"end":{"line":61,"column":30}},"61":{"start":{"line":62,"column":0},"end":{"line":62,"column":0}},"62":{"start":{"line":63,"column":0},"end":{"line":63,"column":43}},"63":{"start":{"line":64,"column":0},"end":{"line":64,"column":0}},"64":{"start":{"line":65,"column":0},"end":{"line":65,"column":59}},"65":{"start":{"line":66,"column":0},"end":{"line":66,"column":0}},"66":{"start":{"line":67,"column":0},"end":{"line":67,"column":36}},"67":{"start":{"line":68,"column":0},"end":{"line":68,"column":59}},"68":{"start":{"line":69,"column":0},"end":{"line":69,"column":5}},"69":{"start":{"line":70,"column":0},"end":{"line":70,"column":3}},"70":{"start":{"line":71,"column":0},"end":{"line":71,"column":0}},"71":{"start":{"line":72,"column":0},"end":{"line":72,"column":63}},"72":{"start":{"line":73,"column":0},"end":{"line":73,"column":19}},"73":{"start":{"line":74,"column":0},"end":{"line":74,"column":28}},"74":{"start":{"line":75,"column":0},"end":{"line":75,"column":15}},"75":{"start":{"line":76,"column":0},"end":{"line":76,"column":83}},"76":{"start":{"line":77,"column":0},"end":{"line":77,"column":6}},"77":{"start":{"line":78,"column":0},"end":{"line":78,"column":3}},"78":{"start":{"line":79,"column":0},"end":{"line":79,"column":0}},"79":{"start":{"line":80,"column":0},"end":{"line":80,"column":93}},"80":{"start":{"line":81,"column":0},"end":{"line":81,"column":38}},"81":{"start":{"line":82,"column":0},"end":{"line":82,"column":26}},"82":{"start":{"line":83,"column":0},"end":{"line":83,"column":120}},"83":{"start":{"line":84,"column":0},"end":{"line":84,"column":53}},"84":{"start":{"line":85,"column":0},"end":{"line":85,"column":24}},"85":{"start":{"line":86,"column":0},"end":{"line":86,"column":5}},"86":{"start":{"line":87,"column":0},"end":{"line":87,"column":0}},"87":{"start":{"line":88,"column":0},"end":{"line":88,"column":56}},"88":{"start":{"line":89,"column":0},"end":{"line":89,"column":44}},"89":{"start":{"line":90,"column":0},"end":{"line":90,"column":90}},"90":{"start":{"line":91,"column":0},"end":{"line":91,"column":52}},"91":{"start":{"line":92,"column":0},"end":{"line":92,"column":0}},"92":{"start":{"line":93,"column":0},"end":{"line":93,"column":34}},"93":{"start":{"line":94,"column":0},"end":{"line":94,"column":51}},"94":{"start":{"line":95,"column":0},"end":{"line":95,"column":53}},"95":{"start":{"line":96,"column":0},"end":{"line":96,"column":89}},"96":{"start":{"line":97,"column":0},"end":{"line":97,"column":84}},"97":{"start":{"line":98,"column":0},"end":{"line":98,"column":115}},"98":{"start":{"line":99,"column":0},"end":{"line":99,"column":5}},"99":{"start":{"line":100,"column":0},"end":{"line":100,"column":0}},"100":{"start":{"line":101,"column":0},"end":{"line":101,"column":22}},"101":{"start":{"line":102,"column":0},"end":{"line":102,"column":3}},"102":{"start":{"line":103,"column":0},"end":{"line":103,"column":0}},"103":{"start":{"line":104,"column":0},"end":{"line":104,"column":47}},"104":{"start":{"line":105,"column":0},"end":{"line":105,"column":58}},"105":{"start":{"line":106,"column":0},"end":{"line":106,"column":112}},"106":{"start":{"line":107,"column":0},"end":{"line":107,"column":27}},"107":{"start":{"line":108,"column":0},"end":{"line":108,"column":61}},"108":{"start":{"line":109,"column":0},"end":{"line":109,"column":88}},"109":{"start":{"line":110,"column":0},"end":{"line":110,"column":13}},"110":{"start":{"line":111,"column":0},"end":{"line":111,"column":5}},"111":{"start":{"line":112,"column":0},"end":{"line":112,"column":72}},"112":{"start":{"line":113,"column":0},"end":{"line":113,"column":39}},"113":{"start":{"line":114,"column":0},"end":{"line":114,"column":0}},"114":{"start":{"line":115,"column":0},"end":{"line":115,"column":16}},"115":{"start":{"line":116,"column":0},"end":{"line":116,"column":3}},"116":{"start":{"line":117,"column":0},"end":{"line":117,"column":0}},"117":{"start":{"line":118,"column":0},"end":{"line":118,"column":62}},"118":{"start":{"line":119,"column":0},"end":{"line":119,"column":21}},"119":{"start":{"line":120,"column":0},"end":{"line":120,"column":19}},"120":{"start":{"line":121,"column":0},"end":{"line":121,"column":31}},"121":{"start":{"line":122,"column":0},"end":{"line":122,"column":32}},"122":{"start":{"line":123,"column":0},"end":{"line":123,"column":38}},"123":{"start":{"line":124,"column":0},"end":{"line":124,"column":65}},"124":{"start":{"line":125,"column":0},"end":{"line":125,"column":60}},"125":{"start":{"line":126,"column":0},"end":{"line":126,"column":108}},"126":{"start":{"line":127,"column":0},"end":{"line":127,"column":0}},"127":{"start":{"line":128,"column":0},"end":{"line":128,"column":20}},"128":{"start":{"line":129,"column":0},"end":{"line":129,"column":3}},"129":{"start":{"line":130,"column":0},"end":{"line":130,"column":1}},"130":{"start":{"line":131,"column":0},"end":{"line":131,"column":0}},"131":{"start":{"line":132,"column":0},"end":{"line":132,"column":45}},"132":{"start":{"line":133,"column":0},"end":{"line":133,"column":58}},"133":{"start":{"line":134,"column":0},"end":{"line":134,"column":10}},"134":{"start":{"line":135,"column":0},"end":{"line":135,"column":13}},"135":{"start":{"line":136,"column":0},"end":{"line":136,"column":19}},"136":{"start":{"line":137,"column":0},"end":{"line":137,"column":61}},"137":{"start":{"line":138,"column":0},"end":{"line":138,"column":53}},"138":{"start":{"line":139,"column":0},"end":{"line":139,"column":144}},"139":{"start":{"line":140,"column":0},"end":{"line":140,"column":9}},"140":{"start":{"line":141,"column":0},"end":{"line":141,"column":59}},"141":{"start":{"line":142,"column":0},"end":{"line":142,"column":6}},"142":{"start":{"line":143,"column":0},"end":{"line":143,"column":41}},"143":{"start":{"line":144,"column":0},"end":{"line":144,"column":8}},"144":{"start":{"line":145,"column":0},"end":{"line":145,"column":12}},"145":{"start":{"line":146,"column":0},"end":{"line":146,"column":6}},"146":{"start":{"line":147,"column":0},"end":{"line":147,"column":31}},"147":{"start":{"line":148,"column":0},"end":{"line":148,"column":3}},"148":{"start":{"line":149,"column":0},"end":{"line":149,"column":0}},"149":{"start":{"line":150,"column":0},"end":{"line":150,"column":71}},"150":{"start":{"line":151,"column":0},"end":{"line":151,"column":33}},"151":{"start":{"line":152,"column":0},"end":{"line":152,"column":41}},"152":{"start":{"line":153,"column":0},"end":{"line":153,"column":9}},"153":{"start":{"line":154,"column":0},"end":{"line":154,"column":49}},"154":{"start":{"line":155,"column":0},"end":{"line":155,"column":22}},"155":{"start":{"line":156,"column":0},"end":{"line":156,"column":67}},"156":{"start":{"line":157,"column":0},"end":{"line":157,"column":25}},"157":{"start":{"line":158,"column":0},"end":{"line":158,"column":27}},"158":{"start":{"line":159,"column":0},"end":{"line":159,"column":79}},"159":{"start":{"line":160,"column":0},"end":{"line":160,"column":45}},"160":{"start":{"line":161,"column":0},"end":{"line":161,"column":7}},"161":{"start":{"line":162,"column":0},"end":{"line":162,"column":14}},"162":{"start":{"line":163,"column":0},"end":{"line":163,"column":15}},"163":{"start":{"line":164,"column":0},"end":{"line":164,"column":33}},"164":{"start":{"line":165,"column":0},"end":{"line":165,"column":37}},"165":{"start":{"line":166,"column":0},"end":{"line":166,"column":5}},"166":{"start":{"line":167,"column":0},"end":{"line":167,"column":3}},"167":{"start":{"line":168,"column":0},"end":{"line":168,"column":0}},"168":{"start":{"line":169,"column":0},"end":{"line":169,"column":56}},"169":{"start":{"line":170,"column":0},"end":{"line":170,"column":16}},"170":{"start":{"line":171,"column":0},"end":{"line":171,"column":34}},"171":{"start":{"line":172,"column":0},"end":{"line":172,"column":5}},"172":{"start":{"line":173,"column":0},"end":{"line":173,"column":16}},"173":{"start":{"line":174,"column":0},"end":{"line":174,"column":34}},"174":{"start":{"line":175,"column":0},"end":{"line":175,"column":5}},"175":{"start":{"line":176,"column":0},"end":{"line":176,"column":34}},"176":{"start":{"line":177,"column":0},"end":{"line":177,"column":3}},"177":{"start":{"line":178,"column":0},"end":{"line":178,"column":1}},"178":{"start":{"line":179,"column":0},"end":{"line":179,"column":0}},"179":{"start":{"line":180,"column":0},"end":{"line":180,"column":42}},"180":{"start":{"line":181,"column":0},"end":{"line":181,"column":58}},"181":{"start":{"line":182,"column":0},"end":{"line":182,"column":10}},"182":{"start":{"line":183,"column":0},"end":{"line":183,"column":7}},"183":{"start":{"line":184,"column":0},"end":{"line":184,"column":18}},"184":{"start":{"line":185,"column":0},"end":{"line":185,"column":8}},"185":{"start":{"line":186,"column":0},"end":{"line":186,"column":99}},"186":{"start":{"line":187,"column":0},"end":{"line":187,"column":12}},"187":{"start":{"line":188,"column":0},"end":{"line":188,"column":6}},"188":{"start":{"line":189,"column":0},"end":{"line":189,"column":31}},"189":{"start":{"line":190,"column":0},"end":{"line":190,"column":3}},"190":{"start":{"line":191,"column":0},"end":{"line":191,"column":0}},"191":{"start":{"line":192,"column":0},"end":{"line":192,"column":49}},"192":{"start":{"line":193,"column":0},"end":{"line":193,"column":16}},"193":{"start":{"line":194,"column":0},"end":{"line":194,"column":34}},"194":{"start":{"line":195,"column":0},"end":{"line":195,"column":5}},"195":{"start":{"line":196,"column":0},"end":{"line":196,"column":34}},"196":{"start":{"line":197,"column":0},"end":{"line":197,"column":3}},"197":{"start":{"line":198,"column":0},"end":{"line":198,"column":0}},"198":{"start":{"line":199,"column":0},"end":{"line":199,"column":27}},"199":{"start":{"line":200,"column":0},"end":{"line":200,"column":26}},"200":{"start":{"line":201,"column":0},"end":{"line":201,"column":40}},"201":{"start":{"line":202,"column":0},"end":{"line":202,"column":3}},"202":{"start":{"line":203,"column":0},"end":{"line":203,"column":1}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"38":1,"39":1,"40":1,"41":1,"42":1,"43":1,"44":1,"45":1,"46":1,"47":1,"48":1,"49":1,"50":1,"51":4,"52":1,"53":1,"54":1,"55":1,"56":1,"57":1,"58":1,"59":1,"60":1,"61":1,"62":1,"63":1,"64":1,"65":1,"66":1,"67":1,"68":1,"69":1,"70":1,"71":1,"72":1,"73":1,"74":1,"75":1,"76":1,"77":1,"78":1,"79":1,"80":0,"81":0,"82":0,"83":0,"84":0,"85":0,"86":0,"87":0,"88":0,"89":0,"90":0,"91":0,"92":0,"93":0,"94":0,"95":0,"96":0,"97":0,"98":0,"99":0,"100":0,"101":0,"102":1,"103":1,"104":1,"105":1,"106":1,"107":1,"108":1,"109":1,"110":1,"111":0,"112":0,"113":0,"114":0,"115":0,"116":1,"117":1,"118":1,"119":0,"120":0,"121":0,"122":0,"123":0,"124":0,"125":0,"126":0,"127":0,"128":0,"129":1,"130":1,"131":1,"132":1,"133":1,"134":1,"135":1,"136":1,"137":1,"138":1,"139":1,"140":1,"141":1,"142":1,"143":1,"144":1,"145":1,"146":1,"147":1,"148":1,"149":1,"150":1,"151":1,"152":1,"153":1,"154":1,"155":0,"156":0,"157":0,"158":0,"159":0,"160":0,"161":0,"162":1,"163":1,"164":1,"165":1,"166":1,"167":1,"168":1,"169":1,"170":0,"171":0,"172":1,"173":0,"174":0,"175":1,"176":1,"177":1,"178":1,"179":1,"180":1,"181":0,"182":0,"183":0,"184":0,"185":0,"186":0,"187":0,"188":0,"189":0,"190":1,"191":1,"192":0,"193":0,"194":0,"195":0,"196":0,"197":1,"198":1,"199":0,"200":0,"201":0,"202":1},"branchMap":{"0":{"type":"branch","line":24,"loc":{"start":{"line":24,"column":23},"end":{"line":37,"column":2}},"locations":[{"start":{"line":24,"column":23},"end":{"line":37,"column":2}}]},"1":{"type":"branch","line":30,"loc":{"start":{"line":30,"column":22},"end":{"line":30,"column":29}},"locations":[{"start":{"line":30,"column":22},"end":{"line":30,"column":29}}]},"2":{"type":"branch","line":46,"loc":{"start":{"line":46,"column":2},"end":{"line":70,"column":3}},"locations":[{"start":{"line":46,"column":2},"end":{"line":70,"column":3}}]},"3":{"type":"branch","line":60,"loc":{"start":{"line":60,"column":54},"end":{"line":60,"column":58}},"locations":[{"start":{"line":60,"column":54},"end":{"line":60,"column":58}}]},"4":{"type":"branch","line":51,"loc":{"start":{"line":51,"column":19},"end":{"line":53,"column":11}},"locations":[{"start":{"line":51,"column":19},"end":{"line":53,"column":11}}]},"5":{"type":"branch","line":72,"loc":{"start":{"line":72,"column":2},"end":{"line":78,"column":3}},"locations":[{"start":{"line":72,"column":2},"end":{"line":78,"column":3}}]},"6":{"type":"branch","line":104,"loc":{"start":{"line":104,"column":2},"end":{"line":116,"column":3}},"locations":[{"start":{"line":104,"column":2},"end":{"line":116,"column":3}}]},"7":{"type":"branch","line":112,"loc":{"start":{"line":112,"column":-1},"end":{"line":116,"column":3}},"locations":[{"start":{"line":112,"column":-1},"end":{"line":116,"column":3}}]},"8":{"type":"branch","line":133,"loc":{"start":{"line":133,"column":2},"end":{"line":148,"column":3}},"locations":[{"start":{"line":133,"column":2},"end":{"line":148,"column":3}}]},"9":{"type":"branch","line":150,"loc":{"start":{"line":150,"column":2},"end":{"line":167,"column":3}},"locations":[{"start":{"line":150,"column":2},"end":{"line":167,"column":3}}]},"10":{"type":"branch","line":155,"loc":{"start":{"line":155,"column":6},"end":{"line":163,"column":14}},"locations":[{"start":{"line":155,"column":6},"end":{"line":163,"column":14}}]},"11":{"type":"branch","line":169,"loc":{"start":{"line":169,"column":10},"end":{"line":177,"column":3}},"locations":[{"start":{"line":169,"column":10},"end":{"line":177,"column":3}}]},"12":{"type":"branch","line":170,"loc":{"start":{"line":170,"column":15},"end":{"line":172,"column":5}},"locations":[{"start":{"line":170,"column":15},"end":{"line":172,"column":5}}]},"13":{"type":"branch","line":173,"loc":{"start":{"line":173,"column":15},"end":{"line":175,"column":5}},"locations":[{"start":{"line":173,"column":15},"end":{"line":175,"column":5}}]}},"b":{"0":[1],"1":[0],"2":[1],"3":[0],"4":[4],"5":[1],"6":[1],"7":[0],"8":[1],"9":[1],"10":[0],"11":[1],"12":[0],"13":[0]},"fnMap":{"0":{"name":"DEFAULT_OPTION","decl":{"start":{"line":24,"column":23},"end":{"line":37,"column":2}},"loc":{"start":{"line":24,"column":23},"end":{"line":37,"column":2}},"line":24},"1":{"name":"Sandbox","decl":{"start":{"line":46,"column":2},"end":{"line":70,"column":3}},"loc":{"start":{"line":46,"column":2},"end":{"line":70,"column":3}},"line":46},"2":{"name":"resolve","decl":{"start":{"line":51,"column":19},"end":{"line":53,"column":11}},"loc":{"start":{"line":51,"column":19},"end":{"line":53,"column":11}},"line":51},"3":{"name":"runTimeout","decl":{"start":{"line":72,"column":2},"end":{"line":78,"column":3}},"loc":{"start":{"line":72,"column":2},"end":{"line":78,"column":3}},"line":72},"4":{"name":"convertStack","decl":{"start":{"line":80,"column":12},"end":{"line":102,"column":3}},"loc":{"start":{"line":80,"column":12},"end":{"line":102,"column":3}},"line":80},"5":{"name":"decodeSourceMap","decl":{"start":{"line":104,"column":2},"end":{"line":116,"column":3}},"loc":{"start":{"line":104,"column":2},"end":{"line":116,"column":3}},"line":104},"6":{"name":"findLineInfo","decl":{"start":{"line":119,"column":2},"end":{"line":129,"column":3}},"loc":{"start":{"line":119,"column":2},"end":{"line":129,"column":3}},"line":119},"7":{"name":"IndexerSandbox","decl":{"start":{"line":133,"column":2},"end":{"line":148,"column":3}},"loc":{"start":{"line":133,"column":2},"end":{"line":148,"column":3}},"line":133},"8":{"name":"securedExec","decl":{"start":{"line":150,"column":2},"end":{"line":167,"column":3}},"loc":{"start":{"line":150,"column":2},"end":{"line":167,"column":3}},"line":150},"9":{"name":"injectGlobals","decl":{"start":{"line":169,"column":10},"end":{"line":177,"column":3}},"loc":{"start":{"line":169,"column":10},"end":{"line":177,"column":3}},"line":169},"10":{"name":"TestSandbox","decl":{"start":{"line":181,"column":2},"end":{"line":190,"column":3}},"loc":{"start":{"line":181,"column":2},"end":{"line":190,"column":3}},"line":181},"11":{"name":"injectGlobals","decl":{"start":{"line":192,"column":10},"end":{"line":197,"column":3}},"loc":{"start":{"line":192,"column":10},"end":{"line":197,"column":3}},"line":192},"12":{"name":"getTests","decl":{"start":{"line":199,"column":2},"end":{"line":202,"column":3}},"loc":{"start":{"line":199,"column":2},"end":{"line":202,"column":3}},"line":199}},"f":{"0":1,"1":1,"2":4,"3":1,"4":0,"5":1,"6":0,"7":1,"8":1,"9":1,"10":0,"11":0,"12":0}},"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/indexer/smartBatch.service.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/indexer/smartBatch.service.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":37}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":42}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":41}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":57}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":0}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":13}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":32}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":43}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":0}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":101}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":61}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":3}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":0}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":37}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":32}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":3}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":0}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":40}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":54}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":72}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":54}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":69}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":63}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":5}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":79}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":3}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":0}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":33}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":17}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":44}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":31}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":30}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":28}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":0}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":30}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":33}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":31}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":26}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":31}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":30}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":0}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":30}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":39}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":96}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":35}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":37}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":38}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":38}},"51":{"start":{"line":52,"column":0},"end":{"line":52,"column":37}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":56}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":51}},"54":{"start":{"line":55,"column":0},"end":{"line":55,"column":45}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":9}},"56":{"start":{"line":57,"column":0},"end":{"line":57,"column":37}},"57":{"start":{"line":58,"column":0},"end":{"line":58,"column":35}},"58":{"start":{"line":59,"column":0},"end":{"line":59,"column":56}},"59":{"start":{"line":60,"column":0},"end":{"line":60,"column":45}},"60":{"start":{"line":61,"column":0},"end":{"line":61,"column":52}},"61":{"start":{"line":62,"column":0},"end":{"line":62,"column":30}},"62":{"start":{"line":63,"column":0},"end":{"line":63,"column":49}},"63":{"start":{"line":64,"column":0},"end":{"line":64,"column":9}},"64":{"start":{"line":65,"column":0},"end":{"line":65,"column":14}},"65":{"start":{"line":66,"column":0},"end":{"line":66,"column":52}},"66":{"start":{"line":67,"column":0},"end":{"line":67,"column":7}},"67":{"start":{"line":68,"column":0},"end":{"line":68,"column":0}},"68":{"start":{"line":69,"column":0},"end":{"line":69,"column":87}},"69":{"start":{"line":70,"column":0},"end":{"line":70,"column":42}},"70":{"start":{"line":71,"column":0},"end":{"line":71,"column":52}},"71":{"start":{"line":72,"column":0},"end":{"line":72,"column":7}},"72":{"start":{"line":73,"column":0},"end":{"line":73,"column":5}},"73":{"start":{"line":74,"column":0},"end":{"line":74,"column":0}},"74":{"start":{"line":75,"column":0},"end":{"line":75,"column":16}},"75":{"start":{"line":76,"column":0},"end":{"line":76,"column":3}},"76":{"start":{"line":77,"column":0},"end":{"line":77,"column":0}},"77":{"start":{"line":78,"column":0},"end":{"line":78,"column":29}},"78":{"start":{"line":79,"column":0},"end":{"line":79,"column":70}},"79":{"start":{"line":80,"column":0},"end":{"line":80,"column":3}},"80":{"start":{"line":81,"column":0},"end":{"line":81,"column":0}},"81":{"start":{"line":82,"column":0},"end":{"line":82,"column":30}},"82":{"start":{"line":83,"column":0},"end":{"line":83,"column":56}},"83":{"start":{"line":84,"column":0},"end":{"line":84,"column":25}},"84":{"start":{"line":85,"column":0},"end":{"line":85,"column":0}},"85":{"start":{"line":86,"column":0},"end":{"line":86,"column":9}},"86":{"start":{"line":87,"column":0},"end":{"line":87,"column":56}},"87":{"start":{"line":88,"column":0},"end":{"line":88,"column":17}},"88":{"start":{"line":89,"column":0},"end":{"line":89,"column":31}},"89":{"start":{"line":90,"column":0},"end":{"line":90,"column":5}},"90":{"start":{"line":91,"column":0},"end":{"line":91,"column":0}},"91":{"start":{"line":92,"column":0},"end":{"line":92,"column":55}},"92":{"start":{"line":93,"column":0},"end":{"line":93,"column":0}},"93":{"start":{"line":94,"column":0},"end":{"line":94,"column":41}},"94":{"start":{"line":95,"column":0},"end":{"line":95,"column":24}},"95":{"start":{"line":96,"column":0},"end":{"line":96,"column":15}},"96":{"start":{"line":97,"column":0},"end":{"line":97,"column":5}},"97":{"start":{"line":98,"column":0},"end":{"line":98,"column":0}},"98":{"start":{"line":99,"column":0},"end":{"line":99,"column":66}},"99":{"start":{"line":100,"column":0},"end":{"line":100,"column":54}},"100":{"start":{"line":101,"column":0},"end":{"line":101,"column":3}},"101":{"start":{"line":102,"column":0},"end":{"line":102,"column":0}},"102":{"start":{"line":103,"column":0},"end":{"line":103,"column":60}},"103":{"start":{"line":104,"column":0},"end":{"line":104,"column":25}},"104":{"start":{"line":105,"column":0},"end":{"line":105,"column":0}},"105":{"start":{"line":106,"column":0},"end":{"line":106,"column":9}},"106":{"start":{"line":107,"column":0},"end":{"line":107,"column":56}},"107":{"start":{"line":108,"column":0},"end":{"line":108,"column":17}},"108":{"start":{"line":109,"column":0},"end":{"line":109,"column":31}},"109":{"start":{"line":110,"column":0},"end":{"line":110,"column":5}},"110":{"start":{"line":111,"column":0},"end":{"line":111,"column":0}},"111":{"start":{"line":112,"column":0},"end":{"line":112,"column":65}},"112":{"start":{"line":113,"column":0},"end":{"line":113,"column":54}},"113":{"start":{"line":114,"column":0},"end":{"line":114,"column":3}},"114":{"start":{"line":115,"column":0},"end":{"line":115,"column":1}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":20,"14":20,"15":1,"16":1,"17":0,"18":0,"19":1,"20":1,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":1,"30":1,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"59":0,"60":0,"61":0,"62":0,"63":0,"64":0,"65":0,"66":0,"67":0,"68":0,"69":0,"70":0,"71":0,"72":0,"73":0,"74":0,"75":0,"76":1,"77":1,"78":0,"79":0,"80":1,"81":1,"82":0,"83":0,"84":0,"85":0,"86":0,"87":0,"88":0,"89":0,"90":0,"91":0,"92":0,"93":0,"94":0,"95":0,"96":0,"97":0,"98":0,"99":0,"100":0,"101":1,"102":1,"103":0,"104":0,"105":0,"106":0,"107":0,"108":0,"109":0,"110":0,"111":0,"112":0,"113":0,"114":1},"branchMap":{"0":{"type":"branch","line":13,"loc":{"start":{"line":13,"column":2},"end":{"line":15,"column":3}},"locations":[{"start":{"line":13,"column":2},"end":{"line":15,"column":3}}]}},"b":{"0":[20]},"fnMap":{"0":{"name":"SmartBatchService","decl":{"start":{"line":13,"column":2},"end":{"line":15,"column":3}},"loc":{"start":{"line":13,"column":2},"end":{"line":15,"column":3}},"line":13},"1":{"name":"get minimumHeapRequired","decl":{"start":{"line":17,"column":2},"end":{"line":19,"column":3}},"loc":{"start":{"line":17,"column":2},"end":{"line":19,"column":3}},"line":17},"2":{"name":"addToSizeBuffer","decl":{"start":{"line":21,"column":2},"end":{"line":29,"column":3}},"loc":{"start":{"line":21,"column":2},"end":{"line":29,"column":3}},"line":21},"3":{"name":"blockSize","decl":{"start":{"line":31,"column":2},"end":{"line":76,"column":3}},"loc":{"start":{"line":31,"column":2},"end":{"line":76,"column":3}},"line":31},"4":{"name":"heapMemoryLimit","decl":{"start":{"line":78,"column":2},"end":{"line":80,"column":3}},"loc":{"start":{"line":78,"column":2},"end":{"line":80,"column":3}},"line":78},"5":{"name":"getSafeBatchSize","decl":{"start":{"line":82,"column":2},"end":{"line":101,"column":3}},"loc":{"start":{"line":82,"column":2},"end":{"line":101,"column":3}},"line":82},"6":{"name":"safeBatchSizeForRemainingMemory","decl":{"start":{"line":103,"column":2},"end":{"line":114,"column":3}},"loc":{"start":{"line":103,"column":2},"end":{"line":114,"column":3}},"line":103}},"f":{"0":20,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0}},"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/indexer/store.service.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/indexer/store.service.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":28}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":50}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":52}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":56}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":8}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":30}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":11}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":17}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":23}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":11}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":20}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":22}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":120}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":54}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":40}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":8}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":35}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":22}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":30}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":14}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":25}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":15}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":36}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":44}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":99}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":30}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":48}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":66}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":50}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":41}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":0}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":41}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":42}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":0}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":22}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":21}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":20}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":20}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":15}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":1}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":0}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":33}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":17}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":51}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":3}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":1}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":0}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":13}},"51":{"start":{"line":52,"column":0},"end":{"line":52,"column":27}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":20}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":45}},"54":{"start":{"line":55,"column":0},"end":{"line":55,"column":57}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":39}},"56":{"start":{"line":57,"column":0},"end":{"line":57,"column":32}},"57":{"start":{"line":58,"column":0},"end":{"line":58,"column":31}},"58":{"start":{"line":59,"column":0},"end":{"line":59,"column":46}},"59":{"start":{"line":60,"column":0},"end":{"line":60,"column":0}},"60":{"start":{"line":61,"column":0},"end":{"line":61,"column":33}},"61":{"start":{"line":62,"column":0},"end":{"line":62,"column":32}},"62":{"start":{"line":63,"column":0},"end":{"line":63,"column":44}},"63":{"start":{"line":64,"column":0},"end":{"line":64,"column":0}},"64":{"start":{"line":65,"column":0},"end":{"line":65,"column":14}},"65":{"start":{"line":66,"column":0},"end":{"line":66,"column":33}},"66":{"start":{"line":67,"column":0},"end":{"line":67,"column":31}},"67":{"start":{"line":68,"column":0},"end":{"line":68,"column":43}},"68":{"start":{"line":69,"column":0},"end":{"line":69,"column":96}},"69":{"start":{"line":70,"column":0},"end":{"line":70,"column":6}},"70":{"start":{"line":71,"column":0},"end":{"line":71,"column":0}},"71":{"start":{"line":72,"column":0},"end":{"line":72,"column":50}},"72":{"start":{"line":73,"column":0},"end":{"line":73,"column":56}},"73":{"start":{"line":74,"column":0},"end":{"line":74,"column":36}},"74":{"start":{"line":75,"column":0},"end":{"line":75,"column":3}},"75":{"start":{"line":76,"column":0},"end":{"line":76,"column":0}},"76":{"start":{"line":77,"column":0},"end":{"line":77,"column":62}},"77":{"start":{"line":78,"column":0},"end":{"line":78,"column":53}},"78":{"start":{"line":79,"column":0},"end":{"line":79,"column":33}},"79":{"start":{"line":80,"column":0},"end":{"line":80,"column":3}},"80":{"start":{"line":81,"column":0},"end":{"line":81,"column":0}},"81":{"start":{"line":82,"column":0},"end":{"line":82,"column":44}},"82":{"start":{"line":83,"column":0},"end":{"line":83,"column":50}},"83":{"start":{"line":84,"column":0},"end":{"line":84,"column":30}},"84":{"start":{"line":85,"column":0},"end":{"line":85,"column":3}},"85":{"start":{"line":86,"column":0},"end":{"line":86,"column":0}},"86":{"start":{"line":87,"column":0},"end":{"line":87,"column":63}},"87":{"start":{"line":88,"column":0},"end":{"line":88,"column":30}},"88":{"start":{"line":89,"column":0},"end":{"line":89,"column":3}},"89":{"start":{"line":90,"column":0},"end":{"line":90,"column":0}},"90":{"start":{"line":91,"column":0},"end":{"line":91,"column":53}},"91":{"start":{"line":92,"column":0},"end":{"line":92,"column":32}},"92":{"start":{"line":93,"column":0},"end":{"line":93,"column":3}},"93":{"start":{"line":94,"column":0},"end":{"line":94,"column":0}},"94":{"start":{"line":95,"column":0},"end":{"line":95,"column":29}},"95":{"start":{"line":96,"column":0},"end":{"line":96,"column":92}},"96":{"start":{"line":97,"column":0},"end":{"line":97,"column":29}},"97":{"start":{"line":98,"column":0},"end":{"line":98,"column":3}},"98":{"start":{"line":99,"column":0},"end":{"line":99,"column":0}},"99":{"start":{"line":100,"column":0},"end":{"line":100,"column":29}},"100":{"start":{"line":101,"column":0},"end":{"line":101,"column":62}},"101":{"start":{"line":102,"column":0},"end":{"line":102,"column":28}},"102":{"start":{"line":103,"column":0},"end":{"line":103,"column":3}},"103":{"start":{"line":104,"column":0},"end":{"line":104,"column":0}},"104":{"start":{"line":105,"column":0},"end":{"line":105,"column":36}},"105":{"start":{"line":106,"column":0},"end":{"line":106,"column":44}},"106":{"start":{"line":107,"column":0},"end":{"line":107,"column":24}},"107":{"start":{"line":108,"column":0},"end":{"line":108,"column":3}},"108":{"start":{"line":109,"column":0},"end":{"line":109,"column":0}},"109":{"start":{"line":110,"column":0},"end":{"line":110,"column":51}},"110":{"start":{"line":111,"column":0},"end":{"line":111,"column":51}},"111":{"start":{"line":112,"column":0},"end":{"line":112,"column":31}},"112":{"start":{"line":113,"column":0},"end":{"line":113,"column":3}},"113":{"start":{"line":114,"column":0},"end":{"line":114,"column":0}},"114":{"start":{"line":115,"column":0},"end":{"line":115,"column":69}},"115":{"start":{"line":116,"column":0},"end":{"line":116,"column":55}},"116":{"start":{"line":117,"column":0},"end":{"line":117,"column":35}},"117":{"start":{"line":118,"column":0},"end":{"line":118,"column":100}},"118":{"start":{"line":119,"column":0},"end":{"line":119,"column":59}},"119":{"start":{"line":120,"column":0},"end":{"line":120,"column":5}},"120":{"start":{"line":121,"column":0},"end":{"line":121,"column":0}},"121":{"start":{"line":122,"column":0},"end":{"line":122,"column":47}},"122":{"start":{"line":123,"column":0},"end":{"line":123,"column":21}},"123":{"start":{"line":124,"column":0},"end":{"line":124,"column":13}},"124":{"start":{"line":125,"column":0},"end":{"line":125,"column":29}},"125":{"start":{"line":126,"column":0},"end":{"line":126,"column":42}},"126":{"start":{"line":127,"column":0},"end":{"line":127,"column":6}},"127":{"start":{"line":128,"column":0},"end":{"line":128,"column":0}},"128":{"start":{"line":129,"column":0},"end":{"line":129,"column":51}},"129":{"start":{"line":130,"column":0},"end":{"line":130,"column":0}},"130":{"start":{"line":131,"column":0},"end":{"line":131,"column":32}},"131":{"start":{"line":132,"column":0},"end":{"line":132,"column":0}},"132":{"start":{"line":133,"column":0},"end":{"line":133,"column":68}},"133":{"start":{"line":134,"column":0},"end":{"line":134,"column":66}},"134":{"start":{"line":135,"column":0},"end":{"line":135,"column":31}},"135":{"start":{"line":136,"column":0},"end":{"line":136,"column":77}},"136":{"start":{"line":137,"column":0},"end":{"line":137,"column":5}},"137":{"start":{"line":138,"column":0},"end":{"line":138,"column":83}},"138":{"start":{"line":139,"column":0},"end":{"line":139,"column":0}},"139":{"start":{"line":140,"column":0},"end":{"line":140,"column":113}},"140":{"start":{"line":141,"column":0},"end":{"line":141,"column":0}},"141":{"start":{"line":142,"column":0},"end":{"line":142,"column":51}},"142":{"start":{"line":143,"column":0},"end":{"line":143,"column":0}},"143":{"start":{"line":144,"column":0},"end":{"line":144,"column":70}},"144":{"start":{"line":145,"column":0},"end":{"line":145,"column":60}},"145":{"start":{"line":146,"column":0},"end":{"line":146,"column":3}},"146":{"start":{"line":147,"column":0},"end":{"line":147,"column":0}},"147":{"start":{"line":148,"column":0},"end":{"line":148,"column":91}},"148":{"start":{"line":149,"column":0},"end":{"line":149,"column":44}},"149":{"start":{"line":150,"column":0},"end":{"line":150,"column":0}},"150":{"start":{"line":151,"column":0},"end":{"line":151,"column":9}},"151":{"start":{"line":152,"column":0},"end":{"line":152,"column":36}},"152":{"start":{"line":153,"column":0},"end":{"line":153,"column":22}},"153":{"start":{"line":154,"column":0},"end":{"line":154,"column":62}},"154":{"start":{"line":155,"column":0},"end":{"line":155,"column":22}},"155":{"start":{"line":156,"column":0},"end":{"line":156,"column":5}},"156":{"start":{"line":157,"column":0},"end":{"line":157,"column":53}},"157":{"start":{"line":158,"column":0},"end":{"line":158,"column":3}},"158":{"start":{"line":159,"column":0},"end":{"line":159,"column":0}},"159":{"start":{"line":160,"column":0},"end":{"line":160,"column":67}},"160":{"start":{"line":161,"column":0},"end":{"line":161,"column":47}},"161":{"start":{"line":162,"column":0},"end":{"line":162,"column":84}},"162":{"start":{"line":163,"column":0},"end":{"line":163,"column":13}},"163":{"start":{"line":164,"column":0},"end":{"line":164,"column":5}},"164":{"start":{"line":165,"column":0},"end":{"line":165,"column":0}},"165":{"start":{"line":166,"column":0},"end":{"line":166,"column":75}},"166":{"start":{"line":167,"column":0},"end":{"line":167,"column":94}},"167":{"start":{"line":168,"column":0},"end":{"line":168,"column":80}},"168":{"start":{"line":169,"column":0},"end":{"line":169,"column":0}},"169":{"start":{"line":170,"column":0},"end":{"line":170,"column":9}},"170":{"start":{"line":171,"column":0},"end":{"line":171,"column":13}},"171":{"start":{"line":172,"column":0},"end":{"line":172,"column":100}},"172":{"start":{"line":173,"column":0},"end":{"line":173,"column":68}},"173":{"start":{"line":174,"column":0},"end":{"line":174,"column":97}},"174":{"start":{"line":175,"column":0},"end":{"line":175,"column":75}},"175":{"start":{"line":176,"column":0},"end":{"line":176,"column":0}},"176":{"start":{"line":177,"column":0},"end":{"line":177,"column":40}},"177":{"start":{"line":178,"column":0},"end":{"line":178,"column":93}},"178":{"start":{"line":179,"column":0},"end":{"line":179,"column":7}},"179":{"start":{"line":180,"column":0},"end":{"line":180,"column":17}},"180":{"start":{"line":181,"column":0},"end":{"line":181,"column":55}},"181":{"start":{"line":182,"column":0},"end":{"line":182,"column":5}},"182":{"start":{"line":183,"column":0},"end":{"line":183,"column":3}},"183":{"start":{"line":184,"column":0},"end":{"line":184,"column":0}},"184":{"start":{"line":185,"column":0},"end":{"line":185,"column":51}},"185":{"start":{"line":186,"column":0},"end":{"line":186,"column":50}},"186":{"start":{"line":187,"column":0},"end":{"line":187,"column":26}},"187":{"start":{"line":188,"column":0},"end":{"line":188,"column":85}},"188":{"start":{"line":189,"column":0},"end":{"line":189,"column":33}},"189":{"start":{"line":190,"column":0},"end":{"line":190,"column":116}},"190":{"start":{"line":191,"column":0},"end":{"line":191,"column":7}},"191":{"start":{"line":192,"column":0},"end":{"line":192,"column":5}},"192":{"start":{"line":193,"column":0},"end":{"line":193,"column":0}},"193":{"start":{"line":194,"column":0},"end":{"line":194,"column":6}},"194":{"start":{"line":195,"column":0},"end":{"line":195,"column":132}},"195":{"start":{"line":196,"column":0},"end":{"line":196,"column":33}},"196":{"start":{"line":197,"column":0},"end":{"line":197,"column":7}},"197":{"start":{"line":198,"column":0},"end":{"line":198,"column":62}},"198":{"start":{"line":199,"column":0},"end":{"line":199,"column":21}},"199":{"start":{"line":200,"column":0},"end":{"line":200,"column":11}},"200":{"start":{"line":201,"column":0},"end":{"line":201,"column":56}},"201":{"start":{"line":202,"column":0},"end":{"line":202,"column":13}},"202":{"start":{"line":203,"column":0},"end":{"line":203,"column":17}},"203":{"start":{"line":204,"column":0},"end":{"line":204,"column":6}},"204":{"start":{"line":205,"column":0},"end":{"line":205,"column":76}},"205":{"start":{"line":206,"column":0},"end":{"line":206,"column":3}},"206":{"start":{"line":207,"column":0},"end":{"line":207,"column":0}},"207":{"start":{"line":208,"column":0},"end":{"line":208,"column":99}},"208":{"start":{"line":209,"column":0},"end":{"line":209,"column":44}},"209":{"start":{"line":210,"column":0},"end":{"line":210,"column":9}},"210":{"start":{"line":211,"column":0},"end":{"line":211,"column":70}},"211":{"start":{"line":212,"column":0},"end":{"line":212,"column":22}},"212":{"start":{"line":213,"column":0},"end":{"line":213,"column":66}},"213":{"start":{"line":214,"column":0},"end":{"line":214,"column":22}},"214":{"start":{"line":215,"column":0},"end":{"line":215,"column":5}},"215":{"start":{"line":216,"column":0},"end":{"line":216,"column":3}},"216":{"start":{"line":217,"column":0},"end":{"line":217,"column":0}},"217":{"start":{"line":218,"column":0},"end":{"line":218,"column":14}},"218":{"start":{"line":219,"column":0},"end":{"line":219,"column":29}},"219":{"start":{"line":220,"column":0},"end":{"line":220,"column":37}},"220":{"start":{"line":221,"column":0},"end":{"line":221,"column":30}},"221":{"start":{"line":222,"column":0},"end":{"line":222,"column":18}},"222":{"start":{"line":223,"column":0},"end":{"line":223,"column":23}},"223":{"start":{"line":224,"column":0},"end":{"line":224,"column":74}},"224":{"start":{"line":225,"column":0},"end":{"line":225,"column":24}},"225":{"start":{"line":226,"column":0},"end":{"line":226,"column":33}},"226":{"start":{"line":227,"column":0},"end":{"line":227,"column":29}},"227":{"start":{"line":228,"column":0},"end":{"line":228,"column":24}},"228":{"start":{"line":229,"column":0},"end":{"line":229,"column":13}},"229":{"start":{"line":230,"column":0},"end":{"line":230,"column":14}},"230":{"start":{"line":231,"column":0},"end":{"line":231,"column":7}},"231":{"start":{"line":232,"column":0},"end":{"line":232,"column":0}},"232":{"start":{"line":233,"column":0},"end":{"line":233,"column":26}},"233":{"start":{"line":234,"column":0},"end":{"line":234,"column":139}},"234":{"start":{"line":235,"column":0},"end":{"line":235,"column":47}},"235":{"start":{"line":236,"column":0},"end":{"line":236,"column":21}},"236":{"start":{"line":237,"column":0},"end":{"line":237,"column":45}},"237":{"start":{"line":238,"column":0},"end":{"line":238,"column":10}},"238":{"start":{"line":239,"column":0},"end":{"line":239,"column":9}},"239":{"start":{"line":240,"column":0},"end":{"line":240,"column":0}},"240":{"start":{"line":241,"column":0},"end":{"line":241,"column":57}},"241":{"start":{"line":242,"column":0},"end":{"line":242,"column":48}},"242":{"start":{"line":243,"column":0},"end":{"line":243,"column":49}},"243":{"start":{"line":244,"column":0},"end":{"line":244,"column":10}},"244":{"start":{"line":245,"column":0},"end":{"line":245,"column":9}},"245":{"start":{"line":246,"column":0},"end":{"line":246,"column":73}},"246":{"start":{"line":247,"column":0},"end":{"line":247,"column":60}},"247":{"start":{"line":248,"column":0},"end":{"line":248,"column":9}},"248":{"start":{"line":249,"column":0},"end":{"line":249,"column":69}},"249":{"start":{"line":250,"column":0},"end":{"line":250,"column":58}},"250":{"start":{"line":251,"column":0},"end":{"line":251,"column":5}},"251":{"start":{"line":252,"column":0},"end":{"line":252,"column":0}},"252":{"start":{"line":253,"column":0},"end":{"line":253,"column":26}},"253":{"start":{"line":254,"column":0},"end":{"line":254,"column":3}},"254":{"start":{"line":255,"column":0},"end":{"line":255,"column":0}},"255":{"start":{"line":256,"column":0},"end":{"line":256,"column":67}},"256":{"start":{"line":257,"column":0},"end":{"line":257,"column":136}},"257":{"start":{"line":258,"column":0},"end":{"line":258,"column":79}},"258":{"start":{"line":259,"column":0},"end":{"line":259,"column":27}},"259":{"start":{"line":260,"column":0},"end":{"line":260,"column":3}},"260":{"start":{"line":261,"column":0},"end":{"line":261,"column":0}},"261":{"start":{"line":262,"column":0},"end":{"line":262,"column":69}},"262":{"start":{"line":263,"column":0},"end":{"line":263,"column":56}},"263":{"start":{"line":264,"column":0},"end":{"line":264,"column":0}},"264":{"start":{"line":265,"column":0},"end":{"line":265,"column":9}},"265":{"start":{"line":266,"column":0},"end":{"line":266,"column":65}},"266":{"start":{"line":267,"column":0},"end":{"line":267,"column":90}},"267":{"start":{"line":268,"column":0},"end":{"line":268,"column":33}},"268":{"start":{"line":269,"column":0},"end":{"line":269,"column":8}},"269":{"start":{"line":270,"column":0},"end":{"line":270,"column":0}},"270":{"start":{"line":271,"column":0},"end":{"line":271,"column":58}},"271":{"start":{"line":272,"column":0},"end":{"line":272,"column":89}},"272":{"start":{"line":273,"column":0},"end":{"line":273,"column":8}},"273":{"start":{"line":274,"column":0},"end":{"line":274,"column":0}},"274":{"start":{"line":275,"column":0},"end":{"line":275,"column":57}},"275":{"start":{"line":276,"column":0},"end":{"line":276,"column":21}},"276":{"start":{"line":277,"column":0},"end":{"line":277,"column":120}},"277":{"start":{"line":278,"column":0},"end":{"line":278,"column":10}},"278":{"start":{"line":279,"column":0},"end":{"line":279,"column":24}},"279":{"start":{"line":280,"column":0},"end":{"line":280,"column":7}},"280":{"start":{"line":281,"column":0},"end":{"line":281,"column":0}},"281":{"start":{"line":282,"column":0},"end":{"line":282,"column":44}},"282":{"start":{"line":283,"column":0},"end":{"line":283,"column":87}},"283":{"start":{"line":284,"column":0},"end":{"line":284,"column":136}},"284":{"start":{"line":285,"column":0},"end":{"line":285,"column":35}},"285":{"start":{"line":286,"column":0},"end":{"line":286,"column":10}},"286":{"start":{"line":287,"column":0},"end":{"line":287,"column":0}},"287":{"start":{"line":288,"column":0},"end":{"line":288,"column":60}},"288":{"start":{"line":289,"column":0},"end":{"line":289,"column":45}},"289":{"start":{"line":290,"column":0},"end":{"line":290,"column":23}},"290":{"start":{"line":291,"column":0},"end":{"line":291,"column":52}},"291":{"start":{"line":292,"column":0},"end":{"line":292,"column":0}},"292":{"start":{"line":293,"column":0},"end":{"line":293,"column":29}},"293":{"start":{"line":294,"column":0},"end":{"line":294,"column":118}},"294":{"start":{"line":295,"column":0},"end":{"line":295,"column":0}},"295":{"start":{"line":296,"column":0},"end":{"line":296,"column":42}},"296":{"start":{"line":297,"column":0},"end":{"line":297,"column":26}},"297":{"start":{"line":298,"column":0},"end":{"line":298,"column":163}},"298":{"start":{"line":299,"column":0},"end":{"line":299,"column":12}},"299":{"start":{"line":300,"column":0},"end":{"line":300,"column":9}},"300":{"start":{"line":301,"column":0},"end":{"line":301,"column":29}},"301":{"start":{"line":302,"column":0},"end":{"line":302,"column":7}},"302":{"start":{"line":303,"column":0},"end":{"line":303,"column":55}},"303":{"start":{"line":304,"column":0},"end":{"line":304,"column":17}},"304":{"start":{"line":305,"column":0},"end":{"line":305,"column":45}},"305":{"start":{"line":306,"column":0},"end":{"line":306,"column":108}},"306":{"start":{"line":307,"column":0},"end":{"line":307,"column":21}},"307":{"start":{"line":308,"column":0},"end":{"line":308,"column":7}},"308":{"start":{"line":309,"column":0},"end":{"line":309,"column":0}},"309":{"start":{"line":310,"column":0},"end":{"line":310,"column":70}},"310":{"start":{"line":311,"column":0},"end":{"line":311,"column":32}},"311":{"start":{"line":312,"column":0},"end":{"line":312,"column":5}},"312":{"start":{"line":313,"column":0},"end":{"line":313,"column":3}},"313":{"start":{"line":314,"column":0},"end":{"line":314,"column":45}},"314":{"start":{"line":315,"column":0},"end":{"line":315,"column":36}},"315":{"start":{"line":316,"column":0},"end":{"line":316,"column":35}},"316":{"start":{"line":317,"column":0},"end":{"line":317,"column":77}},"317":{"start":{"line":318,"column":0},"end":{"line":318,"column":5}},"318":{"start":{"line":319,"column":0},"end":{"line":319,"column":3}},"319":{"start":{"line":320,"column":0},"end":{"line":320,"column":0}},"320":{"start":{"line":321,"column":0},"end":{"line":321,"column":40}},"321":{"start":{"line":322,"column":0},"end":{"line":322,"column":35}},"322":{"start":{"line":323,"column":0},"end":{"line":323,"column":118}},"323":{"start":{"line":324,"column":0},"end":{"line":324,"column":52}},"324":{"start":{"line":325,"column":0},"end":{"line":325,"column":70}},"325":{"start":{"line":326,"column":0},"end":{"line":326,"column":32}},"326":{"start":{"line":327,"column":0},"end":{"line":327,"column":32}},"327":{"start":{"line":328,"column":0},"end":{"line":328,"column":7}},"328":{"start":{"line":329,"column":0},"end":{"line":329,"column":24}},"329":{"start":{"line":330,"column":0},"end":{"line":330,"column":5}},"330":{"start":{"line":331,"column":0},"end":{"line":331,"column":28}},"331":{"start":{"line":332,"column":0},"end":{"line":332,"column":3}},"332":{"start":{"line":333,"column":0},"end":{"line":333,"column":0}},"333":{"start":{"line":334,"column":0},"end":{"line":334,"column":51}},"334":{"start":{"line":335,"column":0},"end":{"line":335,"column":38}},"335":{"start":{"line":336,"column":0},"end":{"line":336,"column":55}},"336":{"start":{"line":337,"column":0},"end":{"line":337,"column":54}},"337":{"start":{"line":338,"column":0},"end":{"line":338,"column":92}},"338":{"start":{"line":339,"column":0},"end":{"line":339,"column":31}},"339":{"start":{"line":340,"column":0},"end":{"line":340,"column":5}},"340":{"start":{"line":341,"column":0},"end":{"line":341,"column":27}},"341":{"start":{"line":342,"column":0},"end":{"line":342,"column":3}},"342":{"start":{"line":343,"column":0},"end":{"line":343,"column":0}},"343":{"start":{"line":344,"column":0},"end":{"line":344,"column":104}},"344":{"start":{"line":345,"column":0},"end":{"line":345,"column":44}},"345":{"start":{"line":346,"column":0},"end":{"line":346,"column":13}},"346":{"start":{"line":347,"column":0},"end":{"line":347,"column":31}},"347":{"start":{"line":348,"column":0},"end":{"line":348,"column":28}},"348":{"start":{"line":349,"column":0},"end":{"line":349,"column":33}},"349":{"start":{"line":350,"column":0},"end":{"line":350,"column":21}},"350":{"start":{"line":351,"column":0},"end":{"line":351,"column":4}},"351":{"start":{"line":352,"column":0},"end":{"line":352,"column":16}},"352":{"start":{"line":353,"column":0},"end":{"line":353,"column":47}},"353":{"start":{"line":354,"column":0},"end":{"line":354,"column":45}},"354":{"start":{"line":355,"column":0},"end":{"line":355,"column":38}},"355":{"start":{"line":356,"column":0},"end":{"line":356,"column":19}},"356":{"start":{"line":357,"column":0},"end":{"line":357,"column":18}},"357":{"start":{"line":358,"column":0},"end":{"line":358,"column":5}},"358":{"start":{"line":359,"column":0},"end":{"line":359,"column":25}},"359":{"start":{"line":360,"column":0},"end":{"line":360,"column":30}},"360":{"start":{"line":361,"column":0},"end":{"line":361,"column":26}},"361":{"start":{"line":362,"column":0},"end":{"line":362,"column":32}},"362":{"start":{"line":363,"column":0},"end":{"line":363,"column":26}},"363":{"start":{"line":364,"column":0},"end":{"line":364,"column":8}},"364":{"start":{"line":365,"column":0},"end":{"line":365,"column":14}},"365":{"start":{"line":366,"column":0},"end":{"line":366,"column":14}},"366":{"start":{"line":367,"column":0},"end":{"line":367,"column":16}},"367":{"start":{"line":368,"column":0},"end":{"line":368,"column":20}},"368":{"start":{"line":369,"column":0},"end":{"line":369,"column":15}},"369":{"start":{"line":370,"column":0},"end":{"line":370,"column":7}},"370":{"start":{"line":371,"column":0},"end":{"line":371,"column":32}},"371":{"start":{"line":372,"column":0},"end":{"line":372,"column":7}},"372":{"start":{"line":373,"column":0},"end":{"line":373,"column":6}},"373":{"start":{"line":374,"column":0},"end":{"line":374,"column":76}},"374":{"start":{"line":375,"column":0},"end":{"line":375,"column":3}},"375":{"start":{"line":376,"column":0},"end":{"line":376,"column":0}},"376":{"start":{"line":377,"column":0},"end":{"line":377,"column":5}},"377":{"start":{"line":378,"column":0},"end":{"line":378,"column":68}},"378":{"start":{"line":379,"column":0},"end":{"line":379,"column":17}},"379":{"start":{"line":380,"column":0},"end":{"line":380,"column":88}},"380":{"start":{"line":381,"column":0},"end":{"line":381,"column":29}},"381":{"start":{"line":382,"column":0},"end":{"line":382,"column":23}},"382":{"start":{"line":383,"column":0},"end":{"line":383,"column":5}},"383":{"start":{"line":384,"column":0},"end":{"line":384,"column":84}},"384":{"start":{"line":385,"column":0},"end":{"line":385,"column":27}},"385":{"start":{"line":386,"column":0},"end":{"line":386,"column":73}},"386":{"start":{"line":387,"column":0},"end":{"line":387,"column":5}},"387":{"start":{"line":388,"column":0},"end":{"line":388,"column":125}},"388":{"start":{"line":389,"column":0},"end":{"line":389,"column":58}},"389":{"start":{"line":390,"column":0},"end":{"line":390,"column":42}},"390":{"start":{"line":391,"column":0},"end":{"line":391,"column":45}},"391":{"start":{"line":392,"column":0},"end":{"line":392,"column":5}},"392":{"start":{"line":393,"column":0},"end":{"line":393,"column":63}},"393":{"start":{"line":394,"column":0},"end":{"line":394,"column":53}},"394":{"start":{"line":395,"column":0},"end":{"line":395,"column":94}},"395":{"start":{"line":396,"column":0},"end":{"line":396,"column":7}},"396":{"start":{"line":397,"column":0},"end":{"line":397,"column":5}},"397":{"start":{"line":398,"column":0},"end":{"line":398,"column":69}},"398":{"start":{"line":399,"column":0},"end":{"line":399,"column":60}},"399":{"start":{"line":400,"column":0},"end":{"line":400,"column":3}},"400":{"start":{"line":401,"column":0},"end":{"line":401,"column":0}},"401":{"start":{"line":402,"column":0},"end":{"line":402,"column":53}},"402":{"start":{"line":403,"column":0},"end":{"line":403,"column":12}},"403":{"start":{"line":404,"column":0},"end":{"line":404,"column":40}},"404":{"start":{"line":405,"column":0},"end":{"line":405,"column":23}},"405":{"start":{"line":406,"column":0},"end":{"line":406,"column":110}},"406":{"start":{"line":407,"column":0},"end":{"line":407,"column":12}},"407":{"start":{"line":408,"column":0},"end":{"line":408,"column":6}},"408":{"start":{"line":409,"column":0},"end":{"line":409,"column":3}},"409":{"start":{"line":410,"column":0},"end":{"line":410,"column":0}},"410":{"start":{"line":411,"column":0},"end":{"line":411,"column":63}},"411":{"start":{"line":412,"column":0},"end":{"line":412,"column":12}},"412":{"start":{"line":413,"column":0},"end":{"line":413,"column":40}},"413":{"start":{"line":414,"column":0},"end":{"line":414,"column":23}},"414":{"start":{"line":415,"column":0},"end":{"line":415,"column":68}},"415":{"start":{"line":416,"column":0},"end":{"line":416,"column":54}},"416":{"start":{"line":417,"column":0},"end":{"line":417,"column":51}},"417":{"start":{"line":418,"column":0},"end":{"line":418,"column":50}},"418":{"start":{"line":419,"column":0},"end":{"line":419,"column":12}},"419":{"start":{"line":420,"column":0},"end":{"line":420,"column":6}},"420":{"start":{"line":421,"column":0},"end":{"line":421,"column":3}},"421":{"start":{"line":422,"column":0},"end":{"line":422,"column":0}},"422":{"start":{"line":423,"column":0},"end":{"line":423,"column":21}},"423":{"start":{"line":424,"column":0},"end":{"line":424,"column":57}},"424":{"start":{"line":425,"column":0},"end":{"line":425,"column":3}},"425":{"start":{"line":426,"column":0},"end":{"line":426,"column":1}},"426":{"start":{"line":427,"column":0},"end":{"line":427,"column":0}},"427":{"start":{"line":428,"column":0},"end":{"line":428,"column":33}},"428":{"start":{"line":429,"column":0},"end":{"line":429,"column":40}},"429":{"start":{"line":430,"column":0},"end":{"line":430,"column":23}},"430":{"start":{"line":431,"column":0},"end":{"line":431,"column":26}},"431":{"start":{"line":432,"column":0},"end":{"line":432,"column":27}},"432":{"start":{"line":433,"column":0},"end":{"line":433,"column":28}},"433":{"start":{"line":434,"column":0},"end":{"line":434,"column":19}},"434":{"start":{"line":435,"column":0},"end":{"line":435,"column":18}},"435":{"start":{"line":436,"column":0},"end":{"line":436,"column":31}},"436":{"start":{"line":437,"column":0},"end":{"line":437,"column":30}},"437":{"start":{"line":438,"column":0},"end":{"line":438,"column":49}},"438":{"start":{"line":439,"column":0},"end":{"line":439,"column":9}},"439":{"start":{"line":440,"column":0},"end":{"line":440,"column":68}},"440":{"start":{"line":441,"column":0},"end":{"line":441,"column":24}},"441":{"start":{"line":442,"column":0},"end":{"line":442,"column":13}},"442":{"start":{"line":443,"column":0},"end":{"line":443,"column":27}},"443":{"start":{"line":444,"column":0},"end":{"line":444,"column":26}},"444":{"start":{"line":445,"column":0},"end":{"line":445,"column":27}},"445":{"start":{"line":446,"column":0},"end":{"line":446,"column":31}},"446":{"start":{"line":447,"column":0},"end":{"line":447,"column":117}},"447":{"start":{"line":448,"column":0},"end":{"line":448,"column":15}},"448":{"start":{"line":449,"column":0},"end":{"line":449,"column":23}},"449":{"start":{"line":450,"column":0},"end":{"line":450,"column":15}},"450":{"start":{"line":451,"column":0},"end":{"line":451,"column":25}},"451":{"start":{"line":452,"column":0},"end":{"line":452,"column":15}},"452":{"start":{"line":453,"column":0},"end":{"line":453,"column":117}},"453":{"start":{"line":454,"column":0},"end":{"line":454,"column":16}},"454":{"start":{"line":455,"column":0},"end":{"line":455,"column":15}},"455":{"start":{"line":456,"column":0},"end":{"line":456,"column":28}},"456":{"start":{"line":457,"column":0},"end":{"line":457,"column":33}},"457":{"start":{"line":458,"column":0},"end":{"line":458,"column":29}},"458":{"start":{"line":459,"column":0},"end":{"line":459,"column":24}},"459":{"start":{"line":460,"column":0},"end":{"line":460,"column":29}},"460":{"start":{"line":461,"column":0},"end":{"line":461,"column":21}},"461":{"start":{"line":462,"column":0},"end":{"line":462,"column":38}},"462":{"start":{"line":463,"column":0},"end":{"line":463,"column":57}},"463":{"start":{"line":464,"column":0},"end":{"line":464,"column":24}},"464":{"start":{"line":465,"column":0},"end":{"line":465,"column":22}},"465":{"start":{"line":466,"column":0},"end":{"line":466,"column":104}},"466":{"start":{"line":467,"column":0},"end":{"line":467,"column":20}},"467":{"start":{"line":468,"column":0},"end":{"line":468,"column":18}},"468":{"start":{"line":469,"column":0},"end":{"line":469,"column":15}},"469":{"start":{"line":470,"column":0},"end":{"line":470,"column":14}},"470":{"start":{"line":471,"column":0},"end":{"line":471,"column":9}},"471":{"start":{"line":472,"column":0},"end":{"line":472,"column":105}},"472":{"start":{"line":473,"column":0},"end":{"line":473,"column":33}},"473":{"start":{"line":474,"column":0},"end":{"line":474,"column":32}},"474":{"start":{"line":475,"column":0},"end":{"line":475,"column":7}},"475":{"start":{"line":476,"column":0},"end":{"line":476,"column":33}},"476":{"start":{"line":477,"column":0},"end":{"line":477,"column":31}},"477":{"start":{"line":478,"column":0},"end":{"line":478,"column":7}},"478":{"start":{"line":479,"column":0},"end":{"line":479,"column":17}},"479":{"start":{"line":480,"column":0},"end":{"line":480,"column":102}},"480":{"start":{"line":481,"column":0},"end":{"line":481,"column":5}},"481":{"start":{"line":482,"column":0},"end":{"line":482,"column":3}},"482":{"start":{"line":483,"column":0},"end":{"line":483,"column":1}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"38":1,"39":1,"40":1,"41":1,"42":1,"43":1,"44":1,"45":1,"46":414,"47":414,"48":1,"49":1,"50":1,"51":1,"52":1,"53":1,"54":1,"55":1,"56":1,"57":1,"58":1,"59":1,"60":1,"61":1,"62":1,"63":1,"64":1,"65":11,"66":11,"67":11,"68":11,"69":11,"70":1,"71":1,"72":0,"73":0,"74":0,"75":1,"76":1,"77":32,"78":32,"79":32,"80":1,"81":1,"82":60,"83":60,"84":60,"85":1,"86":1,"87":0,"88":0,"89":1,"90":1,"91":0,"92":0,"93":1,"94":1,"95":0,"96":0,"97":0,"98":1,"99":1,"100":230,"101":230,"102":230,"103":1,"104":1,"105":52,"106":52,"107":52,"108":1,"109":1,"110":40,"111":40,"112":40,"113":1,"114":1,"115":1,"116":20,"117":0,"118":0,"119":0,"120":20,"121":20,"122":20,"123":20,"124":20,"125":20,"126":20,"127":20,"128":20,"129":20,"130":20,"131":20,"132":20,"133":20,"134":0,"135":0,"136":0,"137":20,"138":20,"139":20,"140":20,"141":20,"142":20,"143":20,"144":20,"145":20,"146":1,"147":1,"148":20,"149":20,"150":20,"151":20,"152":20,"153":0,"154":0,"155":0,"156":20,"157":20,"158":1,"159":1,"160":20,"161":0,"162":0,"163":0,"164":20,"165":20,"166":20,"167":20,"168":20,"169":20,"170":20,"171":20,"172":20,"173":20,"174":20,"175":20,"176":20,"177":20,"178":20,"179":20,"180":0,"181":0,"182":20,"183":1,"184":1,"185":20,"186":20,"187":12,"188":12,"189":0,"190":0,"191":12,"192":20,"193":20,"194":20,"195":20,"196":20,"197":20,"198":20,"199":20,"200":20,"201":20,"202":20,"203":20,"204":20,"205":20,"206":1,"207":1,"208":32,"209":32,"210":32,"211":32,"212":0,"213":0,"214":0,"215":32,"216":1,"217":1,"218":130,"219":130,"220":130,"221":130,"222":130,"223":130,"224":130,"225":130,"226":130,"227":130,"228":130,"229":130,"230":130,"231":130,"232":130,"233":75,"234":75,"235":75,"236":75,"237":75,"238":75,"239":75,"240":75,"241":0,"242":0,"243":0,"244":75,"245":75,"246":0,"247":75,"248":75,"249":75,"250":75,"251":130,"252":130,"253":130,"254":1,"255":1,"256":0,"257":0,"258":0,"259":0,"260":1,"261":1,"262":20,"263":20,"264":20,"265":20,"266":20,"267":20,"268":20,"269":20,"270":20,"271":20,"272":20,"273":20,"274":20,"275":0,"276":0,"277":0,"278":0,"279":0,"280":20,"281":20,"282":20,"283":20,"284":20,"285":20,"286":20,"287":20,"288":0,"289":0,"290":20,"291":20,"292":20,"293":20,"294":20,"295":20,"296":0,"297":0,"298":0,"299":0,"300":20,"301":20,"302":0,"303":0,"304":0,"305":0,"306":0,"307":0,"308":0,"309":0,"310":0,"311":0,"312":20,"313":1,"314":0,"315":0,"316":0,"317":0,"318":0,"319":1,"320":1,"321":0,"322":0,"323":0,"324":0,"325":0,"326":0,"327":0,"328":0,"329":0,"330":0,"331":0,"332":1,"333":1,"334":32,"335":32,"336":126,"337":126,"338":126,"339":126,"340":32,"341":32,"342":1,"343":1,"344":126,"345":126,"346":126,"347":126,"348":126,"349":126,"350":126,"351":126,"352":126,"353":126,"354":126,"355":126,"356":126,"357":126,"358":126,"359":126,"360":126,"361":126,"362":126,"363":126,"364":126,"365":126,"366":126,"367":126,"368":126,"369":126,"370":126,"371":126,"372":126,"373":126,"374":126,"375":1,"376":1,"377":1,"378":1,"379":1,"380":1,"381":1,"382":1,"383":1,"384":0,"385":0,"386":0,"387":0,"388":0,"389":0,"390":0,"391":0,"392":0,"393":0,"394":0,"395":0,"396":0,"397":0,"398":0,"399":0,"400":1,"401":1,"402":0,"403":0,"404":0,"405":0,"406":0,"407":0,"408":0,"409":1,"410":1,"411":0,"412":0,"413":0,"414":0,"415":0,"416":0,"417":0,"418":0,"419":0,"420":0,"421":1,"422":1,"423":0,"424":0,"425":1,"426":1,"427":1,"428":0,"429":0,"430":0,"431":0,"432":0,"433":0,"434":0,"435":0,"436":0,"437":0,"438":0,"439":0,"440":0,"441":0,"442":0,"443":0,"444":0,"445":0,"446":0,"447":0,"448":0,"449":0,"450":0,"451":0,"452":0,"453":0,"454":0,"455":0,"456":0,"457":0,"458":0,"459":0,"460":0,"461":0,"462":0,"463":0,"464":0,"465":0,"466":0,"467":0,"468":0,"469":0,"470":0,"471":0,"472":0,"473":0,"474":0,"475":0,"476":0,"477":0,"478":0,"479":0,"480":0,"481":0,"482":0},"branchMap":{"0":{"type":"branch","line":46,"loc":{"start":{"line":46,"column":2},"end":{"line":48,"column":3}},"locations":[{"start":{"line":46,"column":2},"end":{"line":48,"column":3}}]},"1":{"type":"branch","line":65,"loc":{"start":{"line":65,"column":2},"end":{"line":70,"column":6}},"locations":[{"start":{"line":65,"column":2},"end":{"line":70,"column":6}}]},"2":{"type":"branch","line":77,"loc":{"start":{"line":77,"column":2},"end":{"line":80,"column":3}},"locations":[{"start":{"line":77,"column":2},"end":{"line":80,"column":3}}]},"3":{"type":"branch","line":82,"loc":{"start":{"line":82,"column":2},"end":{"line":85,"column":3}},"locations":[{"start":{"line":82,"column":2},"end":{"line":85,"column":3}}]},"4":{"type":"branch","line":100,"loc":{"start":{"line":100,"column":2},"end":{"line":103,"column":3}},"locations":[{"start":{"line":100,"column":2},"end":{"line":103,"column":3}}]},"5":{"type":"branch","line":105,"loc":{"start":{"line":105,"column":2},"end":{"line":108,"column":3}},"locations":[{"start":{"line":105,"column":2},"end":{"line":108,"column":3}}]},"6":{"type":"branch","line":110,"loc":{"start":{"line":110,"column":2},"end":{"line":113,"column":3}},"locations":[{"start":{"line":110,"column":2},"end":{"line":113,"column":3}}]},"7":{"type":"branch","line":116,"loc":{"start":{"line":116,"column":2},"end":{"line":146,"column":3}},"locations":[{"start":{"line":116,"column":2},"end":{"line":146,"column":3}}]},"8":{"type":"branch","line":117,"loc":{"start":{"line":117,"column":34},"end":{"line":120,"column":5}},"locations":[{"start":{"line":117,"column":34},"end":{"line":120,"column":5}}]},"9":{"type":"branch","line":134,"loc":{"start":{"line":134,"column":23},"end":{"line":134,"column":63}},"locations":[{"start":{"line":134,"column":23},"end":{"line":134,"column":63}}]},"10":{"type":"branch","line":134,"loc":{"start":{"line":134,"column":65},"end":{"line":137,"column":5}},"locations":[{"start":{"line":134,"column":65},"end":{"line":137,"column":5}}]},"11":{"type":"branch","line":138,"loc":{"start":{"line":138,"column":55},"end":{"line":138,"column":66}},"locations":[{"start":{"line":138,"column":55},"end":{"line":138,"column":66}}]},"12":{"type":"branch","line":138,"loc":{"start":{"line":138,"column":67},"end":{"line":138,"column":79}},"locations":[{"start":{"line":138,"column":67},"end":{"line":138,"column":79}}]},"13":{"type":"branch","line":148,"loc":{"start":{"line":148,"column":2},"end":{"line":158,"column":3}},"locations":[{"start":{"line":148,"column":2},"end":{"line":158,"column":3}}]},"14":{"type":"branch","line":153,"loc":{"start":{"line":153,"column":6},"end":{"line":156,"column":5}},"locations":[{"start":{"line":153,"column":6},"end":{"line":156,"column":5}}]},"15":{"type":"branch","line":160,"loc":{"start":{"line":160,"column":2},"end":{"line":183,"column":3}},"locations":[{"start":{"line":160,"column":2},"end":{"line":183,"column":3}}]},"16":{"type":"branch","line":161,"loc":{"start":{"line":161,"column":46},"end":{"line":164,"column":5}},"locations":[{"start":{"line":161,"column":46},"end":{"line":164,"column":5}}]},"17":{"type":"branch","line":180,"loc":{"start":{"line":180,"column":6},"end":{"line":182,"column":5}},"locations":[{"start":{"line":180,"column":6},"end":{"line":182,"column":5}}]},"18":{"type":"branch","line":185,"loc":{"start":{"line":185,"column":2},"end":{"line":206,"column":3}},"locations":[{"start":{"line":185,"column":2},"end":{"line":206,"column":3}}]},"19":{"type":"branch","line":187,"loc":{"start":{"line":187,"column":25},"end":{"line":192,"column":5}},"locations":[{"start":{"line":187,"column":25},"end":{"line":192,"column":5}}]},"20":{"type":"branch","line":189,"loc":{"start":{"line":189,"column":32},"end":{"line":191,"column":7}},"locations":[{"start":{"line":189,"column":32},"end":{"line":191,"column":7}}]},"21":{"type":"branch","line":208,"loc":{"start":{"line":208,"column":2},"end":{"line":216,"column":3}},"locations":[{"start":{"line":208,"column":2},"end":{"line":216,"column":3}}]},"22":{"type":"branch","line":212,"loc":{"start":{"line":212,"column":6},"end":{"line":215,"column":5}},"locations":[{"start":{"line":212,"column":6},"end":{"line":215,"column":5}}]},"23":{"type":"branch","line":218,"loc":{"start":{"line":218,"column":2},"end":{"line":254,"column":3}},"locations":[{"start":{"line":218,"column":2},"end":{"line":254,"column":3}}]},"24":{"type":"branch","line":233,"loc":{"start":{"line":233,"column":25},"end":{"line":251,"column":5}},"locations":[{"start":{"line":233,"column":25},"end":{"line":251,"column":5}}]},"25":{"type":"branch","line":262,"loc":{"start":{"line":262,"column":2},"end":{"line":313,"column":3}},"locations":[{"start":{"line":262,"column":2},"end":{"line":313,"column":3}}]},"26":{"type":"branch","line":275,"loc":{"start":{"line":275,"column":39},"end":{"line":275,"column":54}},"locations":[{"start":{"line":275,"column":39},"end":{"line":275,"column":54}}]},"27":{"type":"branch","line":275,"loc":{"start":{"line":275,"column":56},"end":{"line":280,"column":7}},"locations":[{"start":{"line":275,"column":56},"end":{"line":280,"column":7}}]},"28":{"type":"branch","line":294,"loc":{"start":{"line":294,"column":74},"end":{"line":294,"column":117}},"locations":[{"start":{"line":294,"column":74},"end":{"line":294,"column":117}}]},"29":{"type":"branch","line":296,"loc":{"start":{"line":296,"column":25},"end":{"line":296,"column":39}},"locations":[{"start":{"line":296,"column":25},"end":{"line":296,"column":39}}]},"30":{"type":"branch","line":296,"loc":{"start":{"line":296,"column":41},"end":{"line":300,"column":9}},"locations":[{"start":{"line":296,"column":41},"end":{"line":300,"column":9}}]},"31":{"type":"branch","line":303,"loc":{"start":{"line":303,"column":-1},"end":{"line":312,"column":5}},"locations":[{"start":{"line":303,"column":-1},"end":{"line":312,"column":5}}]},"32":{"type":"branch","line":272,"loc":{"start":{"line":272,"column":8},"end":{"line":272,"column":89}},"locations":[{"start":{"line":272,"column":8},"end":{"line":272,"column":89}}]},"33":{"type":"branch","line":272,"loc":{"start":{"line":272,"column":53},"end":{"line":272,"column":89}},"locations":[{"start":{"line":272,"column":53},"end":{"line":272,"column":89}}]},"34":{"type":"branch","line":334,"loc":{"start":{"line":334,"column":10},"end":{"line":342,"column":3}},"locations":[{"start":{"line":334,"column":10},"end":{"line":342,"column":3}}]},"35":{"type":"branch","line":336,"loc":{"start":{"line":336,"column":54},"end":{"line":340,"column":5}},"locations":[{"start":{"line":336,"column":54},"end":{"line":340,"column":5}}]},"36":{"type":"branch","line":344,"loc":{"start":{"line":344,"column":10},"end":{"line":375,"column":3}},"locations":[{"start":{"line":344,"column":10},"end":{"line":375,"column":3}}]},"37":{"type":"branch","line":374,"loc":{"start":{"line":374,"column":20},"end":{"line":374,"column":58}},"locations":[{"start":{"line":374,"column":20},"end":{"line":374,"column":58}}]}},"b":{"0":[414],"1":[11],"2":[32],"3":[60],"4":[230],"5":[52],"6":[40],"7":[20],"8":[0],"9":[12],"10":[0],"11":[12],"12":[8],"13":[20],"14":[0],"15":[20],"16":[0],"17":[0],"18":[20],"19":[12],"20":[0],"21":[32],"22":[0],"23":[130],"24":[75],"25":[20],"26":[0],"27":[0],"28":[0],"29":[12],"30":[0],"31":[0],"32":[22],"33":[2],"34":[32],"35":[126],"36":[126],"37":[413]},"fnMap":{"0":{"name":"NoInitError","decl":{"start":{"line":46,"column":2},"end":{"line":48,"column":3}},"loc":{"start":{"line":46,"column":2},"end":{"line":48,"column":3}},"line":46},"1":{"name":"StoreService","decl":{"start":{"line":65,"column":2},"end":{"line":70,"column":6}},"loc":{"start":{"line":65,"column":2},"end":{"line":70,"column":6}},"line":65},"2":{"name":"get modelIndexedFields","decl":{"start":{"line":72,"column":2},"end":{"line":75,"column":3}},"loc":{"start":{"line":72,"column":2},"end":{"line":75,"column":3}},"line":72},"3":{"name":"get modelsRelations","decl":{"start":{"line":77,"column":2},"end":{"line":80,"column":3}},"loc":{"start":{"line":77,"column":2},"end":{"line":80,"column":3}},"line":77},"4":{"name":"get metaDataRepo","decl":{"start":{"line":82,"column":2},"end":{"line":85,"column":3}},"loc":{"start":{"line":82,"column":2},"end":{"line":85,"column":3}},"line":82},"5":{"name":"set operationStack","decl":{"start":{"line":87,"column":2},"end":{"line":89,"column":3}},"loc":{"start":{"line":87,"column":2},"end":{"line":89,"column":3}},"line":87},"6":{"name":"get operationStack","decl":{"start":{"line":91,"column":2},"end":{"line":93,"column":3}},"loc":{"start":{"line":91,"column":2},"end":{"line":93,"column":3}},"line":91},"7":{"name":"get blockHeight","decl":{"start":{"line":95,"column":2},"end":{"line":98,"column":3}},"loc":{"start":{"line":95,"column":2},"end":{"line":98,"column":3}},"line":95},"8":{"name":"get historical","decl":{"start":{"line":100,"column":2},"end":{"line":103,"column":3}},"loc":{"start":{"line":100,"column":2},"end":{"line":103,"column":3}},"line":100},"9":{"name":"get dbType","decl":{"start":{"line":105,"column":2},"end":{"line":108,"column":3}},"loc":{"start":{"line":105,"column":2},"end":{"line":108,"column":3}},"line":105},"10":{"name":"get metadataModel","decl":{"start":{"line":110,"column":2},"end":{"line":113,"column":3}},"loc":{"start":{"line":110,"column":2},"end":{"line":113,"column":3}},"line":110},"11":{"name":"initCoreTables","decl":{"start":{"line":116,"column":2},"end":{"line":146,"column":3}},"loc":{"start":{"line":116,"column":2},"end":{"line":146,"column":3}},"line":116},"12":{"name":"init","decl":{"start":{"line":148,"column":2},"end":{"line":158,"column":3}},"loc":{"start":{"line":148,"column":2},"end":{"line":158,"column":3}},"line":148},"13":{"name":"initHotSchemaReloadQueries","decl":{"start":{"line":160,"column":2},"end":{"line":183,"column":3}},"loc":{"start":{"line":160,"column":2},"end":{"line":183,"column":3}},"line":160},"14":{"name":"syncSchema","decl":{"start":{"line":185,"column":2},"end":{"line":206,"column":3}},"loc":{"start":{"line":185,"column":2},"end":{"line":206,"column":3}},"line":185},"15":{"name":"updateModels","decl":{"start":{"line":208,"column":2},"end":{"line":216,"column":3}},"loc":{"start":{"line":208,"column":2},"end":{"line":216,"column":3}},"line":208},"16":{"name":"defineModel","decl":{"start":{"line":218,"column":2},"end":{"line":254,"column":3}},"loc":{"start":{"line":218,"column":2},"end":{"line":254,"column":3}},"line":218},"17":{"name":"useDeprecatePoi","decl":{"start":{"line":256,"column":10},"end":{"line":260,"column":3}},"loc":{"start":{"line":256,"column":10},"end":{"line":260,"column":3}},"line":256},"18":{"name":"getHistoricalStateEnabled","decl":{"start":{"line":262,"column":2},"end":{"line":313,"column":3}},"loc":{"start":{"line":262,"column":2},"end":{"line":313,"column":3}},"line":262},"19":{"name":"setBlockHeight","decl":{"start":{"line":314,"column":2},"end":{"line":319,"column":3}},"loc":{"start":{"line":314,"column":2},"end":{"line":319,"column":3}},"line":314},"20":{"name":"getOperationMerkleRoot","decl":{"start":{"line":321,"column":2},"end":{"line":332,"column":3}},"loc":{"start":{"line":321,"column":2},"end":{"line":332,"column":3}},"line":321},"21":{"name":"getAllIndexFields","decl":{"start":{"line":334,"column":10},"end":{"line":342,"column":3}},"loc":{"start":{"line":334,"column":10},"end":{"line":342,"column":3}},"line":334},"22":{"name":"packEntityFields","decl":{"start":{"line":344,"column":10},"end":{"line":375,"column":3}},"loc":{"start":{"line":344,"column":10},"end":{"line":375,"column":3}},"line":344},"23":{"name":"rewind","decl":{"start":{"line":384,"column":2},"end":{"line":400,"column":3}},"loc":{"start":{"line":384,"column":2},"end":{"line":400,"column":3}},"line":384},"24":{"name":"isIndexed","decl":{"start":{"line":402,"column":2},"end":{"line":409,"column":3}},"loc":{"start":{"line":402,"column":2},"end":{"line":409,"column":3}},"line":402},"25":{"name":"isIndexedHistorical","decl":{"start":{"line":411,"column":2},"end":{"line":421,"column":3}},"loc":{"start":{"line":411,"column":2},"end":{"line":421,"column":3}},"line":411},"26":{"name":"getStore","decl":{"start":{"line":423,"column":2},"end":{"line":425,"column":3}},"loc":{"start":{"line":423,"column":2},"end":{"line":425,"column":3}},"line":423},"27":{"name":"batchDeleteAndThenUpdate","decl":{"start":{"line":429,"column":0},"end":{"line":483,"column":1}},"loc":{"start":{"line":429,"column":0},"end":{"line":483,"column":1}},"line":429}},"f":{"0":414,"1":11,"2":0,"3":32,"4":60,"5":0,"6":0,"7":0,"8":230,"9":52,"10":40,"11":20,"12":20,"13":20,"14":20,"15":32,"16":130,"17":0,"18":20,"19":0,"20":0,"21":32,"22":126,"23":0,"24":0,"25":0,"26":0,"27":0}},"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/indexer/store/entity.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/indexer/store/entity.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":48}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":0}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":44}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":13}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":79}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":16}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":0}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":83}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":22}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":28}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":36}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":3}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":0}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":119}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":38}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":0}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":68}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":3}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":0}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":31}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":53}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":3}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":1}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":0,"12":0,"13":0,"14":0,"15":1,"16":1,"17":0,"18":0,"19":0,"20":0,"21":1,"22":1,"23":0,"24":0,"25":1},"branchMap":{},"b":{},"fnMap":{"0":{"name":"EntityClass","decl":{"start":{"line":11,"column":2},"end":{"line":15,"column":3}},"loc":{"start":{"line":11,"column":2},"end":{"line":15,"column":3}},"line":11},"1":{"name":"create","decl":{"start":{"line":17,"column":9},"end":{"line":21,"column":3}},"loc":{"start":{"line":17,"column":9},"end":{"line":21,"column":3}},"line":17},"2":{"name":"save","decl":{"start":{"line":23,"column":2},"end":{"line":25,"column":3}},"loc":{"start":{"line":23,"column":2},"end":{"line":25,"column":3}},"line":23}},"f":{"0":0,"1":0,"2":0}},"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/indexer/store/index.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/indexer/store/index.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":24}}},"s":{"0":1,"1":1,"2":1,"3":1},"branchMap":{},"b":{},"fnMap":{},"f":{}},"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/indexer/store/store.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/indexer/store/store.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":28}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":76}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":43}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":39}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":48}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":51}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":39}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":37}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":0}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":34}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":0}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":16}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":18}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":17}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":2}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":0}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":88}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":16}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":22}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":35}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":56}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":66}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":2}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":0}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":38}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":118}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":22}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":33}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":20}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":0}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":84}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":26}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":34}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":28}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":3}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":0}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":76}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":69}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":18}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":104}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":33}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":61}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":8}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":5}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":3}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":0}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":83}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":9}},"51":{"start":{"line":52,"column":0},"end":{"line":52,"column":69}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":54}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":17}},"54":{"start":{"line":55,"column":0},"end":{"line":55,"column":76}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":5}},"56":{"start":{"line":57,"column":0},"end":{"line":57,"column":3}},"57":{"start":{"line":58,"column":0},"end":{"line":58,"column":0}},"58":{"start":{"line":59,"column":0},"end":{"line":59,"column":37}},"59":{"start":{"line":60,"column":0},"end":{"line":60,"column":19}},"60":{"start":{"line":61,"column":0},"end":{"line":61,"column":19}},"61":{"start":{"line":62,"column":0},"end":{"line":62,"column":37}},"62":{"start":{"line":63,"column":0},"end":{"line":63,"column":25}},"63":{"start":{"line":64,"column":0},"end":{"line":64,"column":19}},"64":{"start":{"line":65,"column":0},"end":{"line":65,"column":9}},"65":{"start":{"line":66,"column":0},"end":{"line":66,"column":69}},"66":{"start":{"line":67,"column":0},"end":{"line":67,"column":105}},"67":{"start":{"line":68,"column":0},"end":{"line":68,"column":59}},"68":{"start":{"line":69,"column":0},"end":{"line":69,"column":0}},"69":{"start":{"line":70,"column":0},"end":{"line":70,"column":116}},"70":{"start":{"line":71,"column":0},"end":{"line":71,"column":41}},"71":{"start":{"line":72,"column":0},"end":{"line":72,"column":27}},"72":{"start":{"line":73,"column":0},"end":{"line":73,"column":7}},"73":{"start":{"line":74,"column":0},"end":{"line":74,"column":40}},"74":{"start":{"line":75,"column":0},"end":{"line":75,"column":28}},"75":{"start":{"line":76,"column":0},"end":{"line":76,"column":79}},"76":{"start":{"line":77,"column":0},"end":{"line":77,"column":0}},"77":{"start":{"line":78,"column":0},"end":{"line":78,"column":75}},"78":{"start":{"line":79,"column":0},"end":{"line":79,"column":17}},"79":{"start":{"line":80,"column":0},"end":{"line":80,"column":97}},"80":{"start":{"line":81,"column":0},"end":{"line":81,"column":5}},"81":{"start":{"line":82,"column":0},"end":{"line":82,"column":3}},"82":{"start":{"line":83,"column":0},"end":{"line":83,"column":0}},"83":{"start":{"line":84,"column":0},"end":{"line":84,"column":119}},"84":{"start":{"line":85,"column":0},"end":{"line":85,"column":9}},"85":{"start":{"line":86,"column":0},"end":{"line":86,"column":42}},"86":{"start":{"line":87,"column":0},"end":{"line":87,"column":29}},"87":{"start":{"line":88,"column":0},"end":{"line":88,"column":15}},"88":{"start":{"line":89,"column":0},"end":{"line":89,"column":56}},"89":{"start":{"line":90,"column":0},"end":{"line":90,"column":90}},"90":{"start":{"line":91,"column":0},"end":{"line":91,"column":10}},"91":{"start":{"line":92,"column":0},"end":{"line":92,"column":9}},"92":{"start":{"line":93,"column":0},"end":{"line":93,"column":0}},"93":{"start":{"line":94,"column":0},"end":{"line":94,"column":60}},"94":{"start":{"line":95,"column":0},"end":{"line":95,"column":0}},"95":{"start":{"line":96,"column":0},"end":{"line":96,"column":28}},"96":{"start":{"line":97,"column":0},"end":{"line":97,"column":37}},"97":{"start":{"line":98,"column":0},"end":{"line":98,"column":92}},"98":{"start":{"line":99,"column":0},"end":{"line":99,"column":8}},"99":{"start":{"line":100,"column":0},"end":{"line":100,"column":0}},"100":{"start":{"line":101,"column":0},"end":{"line":101,"column":95}},"101":{"start":{"line":102,"column":0},"end":{"line":102,"column":0}},"102":{"start":{"line":103,"column":0},"end":{"line":103,"column":75}},"103":{"start":{"line":104,"column":0},"end":{"line":104,"column":17}},"104":{"start":{"line":105,"column":0},"end":{"line":105,"column":70}},"105":{"start":{"line":106,"column":0},"end":{"line":106,"column":5}},"106":{"start":{"line":107,"column":0},"end":{"line":107,"column":3}},"107":{"start":{"line":108,"column":0},"end":{"line":108,"column":0}},"108":{"start":{"line":109,"column":0},"end":{"line":109,"column":116}},"109":{"start":{"line":110,"column":0},"end":{"line":110,"column":9}},"110":{"start":{"line":111,"column":0},"end":{"line":111,"column":81}},"111":{"start":{"line":112,"column":0},"end":{"line":112,"column":111}},"112":{"start":{"line":113,"column":0},"end":{"line":113,"column":89}},"113":{"start":{"line":114,"column":0},"end":{"line":114,"column":0}},"114":{"start":{"line":115,"column":0},"end":{"line":115,"column":54}},"115":{"start":{"line":116,"column":0},"end":{"line":116,"column":17}},"116":{"start":{"line":117,"column":0},"end":{"line":117,"column":100}},"117":{"start":{"line":118,"column":0},"end":{"line":118,"column":5}},"118":{"start":{"line":119,"column":0},"end":{"line":119,"column":3}},"119":{"start":{"line":120,"column":0},"end":{"line":120,"column":0}},"120":{"start":{"line":121,"column":0},"end":{"line":121,"column":62}},"121":{"start":{"line":122,"column":0},"end":{"line":122,"column":71}},"122":{"start":{"line":123,"column":0},"end":{"line":123,"column":9}},"123":{"start":{"line":124,"column":0},"end":{"line":124,"column":82}},"124":{"start":{"line":125,"column":0},"end":{"line":125,"column":0}},"125":{"start":{"line":126,"column":0},"end":{"line":126,"column":73}},"126":{"start":{"line":127,"column":0},"end":{"line":127,"column":17}},"127":{"start":{"line":128,"column":0},"end":{"line":128,"column":78}},"128":{"start":{"line":129,"column":0},"end":{"line":129,"column":5}},"129":{"start":{"line":130,"column":0},"end":{"line":130,"column":3}},"130":{"start":{"line":131,"column":0},"end":{"line":131,"column":62}},"131":{"start":{"line":132,"column":0},"end":{"line":132,"column":67}},"132":{"start":{"line":133,"column":0},"end":{"line":133,"column":9}},"133":{"start":{"line":134,"column":0},"end":{"line":134,"column":84}},"134":{"start":{"line":135,"column":0},"end":{"line":135,"column":0}},"135":{"start":{"line":136,"column":0},"end":{"line":136,"column":32}},"136":{"start":{"line":137,"column":0},"end":{"line":137,"column":75}},"137":{"start":{"line":138,"column":0},"end":{"line":138,"column":7}},"138":{"start":{"line":139,"column":0},"end":{"line":139,"column":17}},"139":{"start":{"line":140,"column":0},"end":{"line":140,"column":69}},"140":{"start":{"line":141,"column":0},"end":{"line":141,"column":5}},"141":{"start":{"line":142,"column":0},"end":{"line":142,"column":3}},"142":{"start":{"line":143,"column":0},"end":{"line":143,"column":0}},"143":{"start":{"line":144,"column":0},"end":{"line":144,"column":62}},"144":{"start":{"line":145,"column":0},"end":{"line":145,"column":86}},"145":{"start":{"line":146,"column":0},"end":{"line":146,"column":9}},"146":{"start":{"line":147,"column":0},"end":{"line":147,"column":92}},"147":{"start":{"line":148,"column":0},"end":{"line":148,"column":32}},"148":{"start":{"line":149,"column":0},"end":{"line":149,"column":75}},"149":{"start":{"line":150,"column":0},"end":{"line":150,"column":7}},"150":{"start":{"line":151,"column":0},"end":{"line":151,"column":17}},"151":{"start":{"line":152,"column":0},"end":{"line":152,"column":69}},"152":{"start":{"line":153,"column":0},"end":{"line":153,"column":5}},"153":{"start":{"line":154,"column":0},"end":{"line":154,"column":3}},"154":{"start":{"line":155,"column":0},"end":{"line":155,"column":62}},"155":{"start":{"line":156,"column":0},"end":{"line":156,"column":59}},"156":{"start":{"line":157,"column":0},"end":{"line":157,"column":9}},"157":{"start":{"line":158,"column":0},"end":{"line":158,"column":78}},"158":{"start":{"line":159,"column":0},"end":{"line":159,"column":0}},"159":{"start":{"line":160,"column":0},"end":{"line":160,"column":74}},"160":{"start":{"line":161,"column":0},"end":{"line":161,"column":17}},"161":{"start":{"line":162,"column":0},"end":{"line":162,"column":79}},"162":{"start":{"line":163,"column":0},"end":{"line":163,"column":5}},"163":{"start":{"line":164,"column":0},"end":{"line":164,"column":3}},"164":{"start":{"line":165,"column":0},"end":{"line":165,"column":62}},"165":{"start":{"line":166,"column":0},"end":{"line":166,"column":66}},"166":{"start":{"line":167,"column":0},"end":{"line":167,"column":9}},"167":{"start":{"line":168,"column":0},"end":{"line":168,"column":83}},"168":{"start":{"line":169,"column":0},"end":{"line":169,"column":0}},"169":{"start":{"line":170,"column":0},"end":{"line":170,"column":29}},"170":{"start":{"line":171,"column":0},"end":{"line":171,"column":76}},"171":{"start":{"line":172,"column":0},"end":{"line":172,"column":7}},"172":{"start":{"line":173,"column":0},"end":{"line":173,"column":17}},"173":{"start":{"line":174,"column":0},"end":{"line":174,"column":69}},"174":{"start":{"line":175,"column":0},"end":{"line":175,"column":5}},"175":{"start":{"line":176,"column":0},"end":{"line":176,"column":3}},"176":{"start":{"line":177,"column":0},"end":{"line":177,"column":1}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":0,"35":0,"36":0,"37":0,"38":1,"39":1,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":1,"49":1,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":1,"58":1,"59":0,"60":0,"61":0,"62":0,"63":0,"64":0,"65":0,"66":0,"67":0,"68":0,"69":0,"70":0,"71":0,"72":0,"73":0,"74":0,"75":0,"76":0,"77":0,"78":0,"79":0,"80":0,"81":0,"82":1,"83":1,"84":0,"85":0,"86":0,"87":0,"88":0,"89":0,"90":0,"91":0,"92":0,"93":0,"94":0,"95":0,"96":0,"97":0,"98":0,"99":0,"100":0,"101":0,"102":0,"103":0,"104":0,"105":0,"106":0,"107":1,"108":1,"109":0,"110":0,"111":0,"112":0,"113":0,"114":0,"115":0,"116":0,"117":0,"118":0,"119":1,"120":1,"121":1,"122":0,"123":0,"124":0,"125":0,"126":0,"127":0,"128":0,"129":0,"130":1,"131":1,"132":0,"133":0,"134":0,"135":0,"136":0,"137":0,"138":0,"139":0,"140":0,"141":0,"142":1,"143":1,"144":1,"145":0,"146":0,"147":0,"148":0,"149":0,"150":0,"151":0,"152":0,"153":0,"154":1,"155":1,"156":0,"157":0,"158":0,"159":0,"160":0,"161":0,"162":0,"163":0,"164":1,"165":1,"166":0,"167":0,"168":0,"169":0,"170":0,"171":0,"172":0,"173":0,"174":0,"175":0,"176":1},"branchMap":{},"b":{},"fnMap":{"0":{"name":"Store","decl":{"start":{"line":34,"column":2},"end":{"line":38,"column":3}},"loc":{"start":{"line":34,"column":2},"end":{"line":38,"column":3}},"line":34},"1":{"name":"get","decl":{"start":{"line":50,"column":2},"end":{"line":57,"column":3}},"loc":{"start":{"line":50,"column":2},"end":{"line":57,"column":3}},"line":50},"2":{"name":"getByField","decl":{"start":{"line":59,"column":2},"end":{"line":82,"column":3}},"loc":{"start":{"line":59,"column":2},"end":{"line":82,"column":3}},"line":59},"3":{"name":"getByFields","decl":{"start":{"line":84,"column":2},"end":{"line":107,"column":3}},"loc":{"start":{"line":84,"column":2},"end":{"line":107,"column":3}},"line":84},"4":{"name":"getOneByField","decl":{"start":{"line":109,"column":2},"end":{"line":119,"column":3}},"loc":{"start":{"line":109,"column":2},"end":{"line":119,"column":3}},"line":109},"5":{"name":"set","decl":{"start":{"line":122,"column":2},"end":{"line":130,"column":3}},"loc":{"start":{"line":122,"column":2},"end":{"line":130,"column":3}},"line":122},"6":{"name":"bulkCreate","decl":{"start":{"line":132,"column":2},"end":{"line":142,"column":3}},"loc":{"start":{"line":132,"column":2},"end":{"line":142,"column":3}},"line":132},"7":{"name":"bulkUpdate","decl":{"start":{"line":145,"column":2},"end":{"line":154,"column":3}},"loc":{"start":{"line":145,"column":2},"end":{"line":154,"column":3}},"line":145},"8":{"name":"remove","decl":{"start":{"line":156,"column":2},"end":{"line":164,"column":3}},"loc":{"start":{"line":156,"column":2},"end":{"line":164,"column":3}},"line":156},"9":{"name":"bulkRemove","decl":{"start":{"line":166,"column":2},"end":{"line":176,"column":3}},"loc":{"start":{"line":166,"column":2},"end":{"line":176,"column":3}},"line":166},"10":{"name":"_Store_queryLimitCheck","decl":{"start":{"line":40,"column":19},"end":{"line":48,"column":3}},"loc":{"start":{"line":40,"column":19},"end":{"line":48,"column":3}},"line":40}},"f":{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0}},"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/indexer/storeCache/baseCache.service.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/indexer/storeCache/baseCache.service.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":69}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":24}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":39}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":40}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":44}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":0}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":13}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":77}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":39}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":38}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":32}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":0}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":53}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":40}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":3}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":0}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":13}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":77}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":78}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":84}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":71}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":44}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":32}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":7}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":76}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":55}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":62}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":73}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":32}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":7}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":6}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":0}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":118}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":41}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":55}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":0}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":69}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":5}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":0}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":28}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":3}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":37}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":29}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":3}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":58}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":47}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":34}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":42}},"51":{"start":{"line":52,"column":0},"end":{"line":52,"column":46}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":0}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":52}},"54":{"start":{"line":55,"column":0},"end":{"line":55,"column":84}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":54}},"56":{"start":{"line":57,"column":0},"end":{"line":57,"column":35}},"57":{"start":{"line":58,"column":0},"end":{"line":58,"column":56}},"58":{"start":{"line":59,"column":0},"end":{"line":59,"column":3}},"59":{"start":{"line":60,"column":0},"end":{"line":60,"column":1}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":6,"17":6,"18":1,"19":1,"20":1,"21":40,"22":40,"23":40,"24":40,"25":0,"26":0,"27":40,"28":20,"29":20,"30":20,"31":20,"32":20,"33":40,"34":40,"35":40,"36":40,"37":40,"38":40,"39":40,"40":40,"41":40,"42":40,"43":40,"44":1,"45":0,"46":0,"47":1,"48":1,"49":1,"50":1,"51":1,"52":1,"53":1,"54":20,"55":20,"56":20,"57":20,"58":20,"59":1},"branchMap":{"0":{"type":"branch","line":16,"loc":{"start":{"line":16,"column":2},"end":{"line":18,"column":3}},"locations":[{"start":{"line":16,"column":2},"end":{"line":18,"column":3}}]},"1":{"type":"branch","line":21,"loc":{"start":{"line":21,"column":8},"end":{"line":44,"column":3}},"locations":[{"start":{"line":21,"column":8},"end":{"line":44,"column":3}}]},"2":{"type":"branch","line":22,"loc":{"start":{"line":22,"column":30},"end":{"line":34,"column":5}},"locations":[{"start":{"line":22,"column":30},"end":{"line":34,"column":5}}]},"3":{"type":"branch","line":25,"loc":{"start":{"line":25,"column":43},"end":{"line":27,"column":7}},"locations":[{"start":{"line":25,"column":43},"end":{"line":27,"column":7}}]},"4":{"type":"branch","line":28,"loc":{"start":{"line":28,"column":75},"end":{"line":33,"column":7}},"locations":[{"start":{"line":28,"column":75},"end":{"line":33,"column":7}}]},"5":{"type":"branch","line":31,"loc":{"start":{"line":31,"column":34},"end":{"line":31,"column":71}},"locations":[{"start":{"line":31,"column":34},"end":{"line":31,"column":71}}]},"6":{"type":"branch","line":40,"loc":{"start":{"line":40,"column":31},"end":{"line":40,"column":67}},"locations":[{"start":{"line":40,"column":31},"end":{"line":40,"column":67}}]},"7":{"type":"branch","line":54,"loc":{"start":{"line":54,"column":2},"end":{"line":59,"column":3}},"locations":[{"start":{"line":54,"column":2},"end":{"line":59,"column":3}}]}},"b":{"0":[6],"1":[40],"2":[40],"3":[0],"4":[20],"5":[20],"6":[40],"7":[20]},"fnMap":{"0":{"name":"BaseCacheService","decl":{"start":{"line":16,"column":2},"end":{"line":18,"column":3}},"loc":{"start":{"line":16,"column":2},"end":{"line":18,"column":3}},"line":16},"1":{"name":"flushCache","decl":{"start":{"line":21,"column":8},"end":{"line":44,"column":3}},"loc":{"start":{"line":21,"column":8},"end":{"line":44,"column":3}},"line":21},"2":{"name":"flushCacheGuarded","decl":{"start":{"line":22,"column":30},"end":{"line":34,"column":5}},"loc":{"start":{"line":22,"column":30},"end":{"line":34,"column":5}},"line":22},"3":{"name":"resetCache","decl":{"start":{"line":45,"column":2},"end":{"line":47,"column":3}},"loc":{"start":{"line":45,"column":2},"end":{"line":47,"column":3}},"line":45},"4":{"name":"beforeApplicationShutdown","decl":{"start":{"line":54,"column":2},"end":{"line":59,"column":3}},"loc":{"start":{"line":54,"column":2},"end":{"line":59,"column":3}},"line":54}},"f":{"0":6,"1":40,"2":40,"3":0,"4":20}},"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/indexer/storeCache/cacheMetadata.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/indexer/storeCache/cacheMetadata.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":28}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":47}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":37}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":55}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":65}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":38}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":44}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":0}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":38}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":85}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":77}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":0}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":76}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":0}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":82}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":47}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":35}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":47}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":37}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":0}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":104}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":53}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":0}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":29}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":0}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":45}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":12}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":3}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":0}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":111}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":30}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":52}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":0}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":29}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":58}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":38}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":38}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":7}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":5}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":0}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":39}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":124}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":51}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":53}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":7}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":57}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":14}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":78}},"51":{"start":{"line":52,"column":0},"end":{"line":52,"column":34}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":27}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":5}},"54":{"start":{"line":55,"column":0},"end":{"line":55,"column":0}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":61}},"56":{"start":{"line":57,"column":0},"end":{"line":57,"column":3}},"57":{"start":{"line":58,"column":0},"end":{"line":58,"column":0}},"58":{"start":{"line":59,"column":0},"end":{"line":59,"column":93}},"59":{"start":{"line":60,"column":0},"end":{"line":60,"column":46}},"60":{"start":{"line":61,"column":0},"end":{"line":61,"column":14}},"61":{"start":{"line":62,"column":0},"end":{"line":62,"column":18}},"62":{"start":{"line":63,"column":0},"end":{"line":63,"column":8}},"63":{"start":{"line":64,"column":0},"end":{"line":64,"column":7}},"64":{"start":{"line":65,"column":0},"end":{"line":65,"column":0}},"65":{"start":{"line":66,"column":0},"end":{"line":66,"column":52}},"66":{"start":{"line":67,"column":0},"end":{"line":67,"column":57}},"67":{"start":{"line":68,"column":0},"end":{"line":68,"column":17}},"68":{"start":{"line":69,"column":0},"end":{"line":69,"column":36}},"69":{"start":{"line":70,"column":0},"end":{"line":70,"column":0}},"70":{"start":{"line":71,"column":0},"end":{"line":71,"column":30}},"71":{"start":{"line":72,"column":0},"end":{"line":72,"column":20}},"72":{"start":{"line":73,"column":0},"end":{"line":73,"column":18}},"73":{"start":{"line":74,"column":0},"end":{"line":74,"column":23}},"74":{"start":{"line":75,"column":0},"end":{"line":75,"column":6}},"75":{"start":{"line":76,"column":0},"end":{"line":76,"column":0}},"76":{"start":{"line":77,"column":0},"end":{"line":77,"column":19}},"77":{"start":{"line":78,"column":0},"end":{"line":78,"column":21}},"78":{"start":{"line":79,"column":0},"end":{"line":79,"column":23}},"79":{"start":{"line":80,"column":0},"end":{"line":80,"column":16}},"80":{"start":{"line":81,"column":0},"end":{"line":81,"column":6}},"81":{"start":{"line":82,"column":0},"end":{"line":82,"column":0}},"82":{"start":{"line":83,"column":0},"end":{"line":83,"column":18}},"83":{"start":{"line":84,"column":0},"end":{"line":84,"column":3}},"84":{"start":{"line":85,"column":0},"end":{"line":85,"column":0}},"85":{"start":{"line":86,"column":0},"end":{"line":86,"column":68}},"86":{"start":{"line":87,"column":0},"end":{"line":87,"column":43}},"87":{"start":{"line":88,"column":0},"end":{"line":88,"column":39}},"88":{"start":{"line":89,"column":0},"end":{"line":89,"column":5}},"89":{"start":{"line":90,"column":0},"end":{"line":90,"column":31}},"90":{"start":{"line":91,"column":0},"end":{"line":91,"column":31}},"91":{"start":{"line":92,"column":0},"end":{"line":92,"column":39}},"92":{"start":{"line":93,"column":0},"end":{"line":93,"column":34}},"93":{"start":{"line":94,"column":0},"end":{"line":94,"column":5}},"94":{"start":{"line":95,"column":0},"end":{"line":95,"column":3}},"95":{"start":{"line":96,"column":0},"end":{"line":96,"column":0}},"96":{"start":{"line":97,"column":0},"end":{"line":97,"column":39}},"97":{"start":{"line":98,"column":0},"end":{"line":98,"column":50}},"98":{"start":{"line":99,"column":0},"end":{"line":99,"column":3}},"99":{"start":{"line":100,"column":0},"end":{"line":100,"column":0}},"100":{"start":{"line":101,"column":0},"end":{"line":101,"column":63}},"101":{"start":{"line":102,"column":0},"end":{"line":102,"column":60}},"102":{"start":{"line":103,"column":0},"end":{"line":103,"column":3}},"103":{"start":{"line":104,"column":0},"end":{"line":104,"column":0}},"104":{"start":{"line":105,"column":0},"end":{"line":105,"column":57}},"105":{"start":{"line":106,"column":0},"end":{"line":106,"column":38}},"106":{"start":{"line":107,"column":0},"end":{"line":107,"column":3}},"107":{"start":{"line":108,"column":0},"end":{"line":108,"column":0}},"108":{"start":{"line":109,"column":0},"end":{"line":109,"column":111}},"109":{"start":{"line":110,"column":0},"end":{"line":110,"column":50}},"110":{"start":{"line":111,"column":0},"end":{"line":111,"column":0}},"111":{"start":{"line":112,"column":0},"end":{"line":112,"column":85}},"112":{"start":{"line":113,"column":0},"end":{"line":113,"column":0}},"113":{"start":{"line":114,"column":0},"end":{"line":114,"column":37}},"114":{"start":{"line":115,"column":0},"end":{"line":115,"column":7}},"115":{"start":{"line":116,"column":0},"end":{"line":116,"column":75}},"116":{"start":{"line":117,"column":0},"end":{"line":117,"column":77}},"117":{"start":{"line":118,"column":0},"end":{"line":118,"column":32}},"118":{"start":{"line":119,"column":0},"end":{"line":119,"column":98}},"119":{"start":{"line":120,"column":0},"end":{"line":120,"column":43}},"120":{"start":{"line":121,"column":0},"end":{"line":121,"column":48}},"121":{"start":{"line":122,"column":0},"end":{"line":122,"column":29}},"122":{"start":{"line":123,"column":0},"end":{"line":123,"column":6}},"123":{"start":{"line":124,"column":0},"end":{"line":124,"column":3}},"124":{"start":{"line":125,"column":0},"end":{"line":125,"column":0}},"125":{"start":{"line":126,"column":0},"end":{"line":126,"column":102}},"126":{"start":{"line":127,"column":0},"end":{"line":127,"column":50}},"127":{"start":{"line":128,"column":0},"end":{"line":128,"column":0}},"128":{"start":{"line":129,"column":0},"end":{"line":129,"column":85}},"129":{"start":{"line":130,"column":0},"end":{"line":130,"column":0}},"130":{"start":{"line":131,"column":0},"end":{"line":131,"column":28}},"131":{"start":{"line":132,"column":0},"end":{"line":132,"column":0}},"132":{"start":{"line":133,"column":0},"end":{"line":133,"column":81}},"133":{"start":{"line":134,"column":0},"end":{"line":134,"column":101}},"134":{"start":{"line":135,"column":0},"end":{"line":135,"column":12}},"135":{"start":{"line":136,"column":0},"end":{"line":136,"column":25}},"136":{"start":{"line":137,"column":0},"end":{"line":137,"column":0}},"137":{"start":{"line":138,"column":0},"end":{"line":138,"column":37}},"138":{"start":{"line":139,"column":0},"end":{"line":139,"column":7}},"139":{"start":{"line":140,"column":0},"end":{"line":140,"column":27}},"140":{"start":{"line":141,"column":0},"end":{"line":141,"column":97}},"141":{"start":{"line":142,"column":0},"end":{"line":142,"column":39}},"142":{"start":{"line":143,"column":0},"end":{"line":143,"column":54}},"143":{"start":{"line":144,"column":0},"end":{"line":144,"column":6}},"144":{"start":{"line":145,"column":0},"end":{"line":145,"column":29}},"145":{"start":{"line":146,"column":0},"end":{"line":146,"column":6}},"146":{"start":{"line":147,"column":0},"end":{"line":147,"column":3}},"147":{"start":{"line":148,"column":0},"end":{"line":148,"column":0}},"148":{"start":{"line":149,"column":0},"end":{"line":149,"column":68}},"149":{"start":{"line":150,"column":0},"end":{"line":150,"column":22}},"150":{"start":{"line":151,"column":0},"end":{"line":151,"column":38}},"151":{"start":{"line":152,"column":0},"end":{"line":152,"column":22}},"152":{"start":{"line":153,"column":0},"end":{"line":153,"column":38}},"153":{"start":{"line":154,"column":0},"end":{"line":154,"column":15}},"154":{"start":{"line":155,"column":0},"end":{"line":155,"column":107}},"155":{"start":{"line":156,"column":0},"end":{"line":156,"column":54}},"156":{"start":{"line":157,"column":0},"end":{"line":157,"column":52}},"157":{"start":{"line":158,"column":0},"end":{"line":158,"column":16}},"158":{"start":{"line":159,"column":0},"end":{"line":159,"column":43}},"159":{"start":{"line":160,"column":0},"end":{"line":160,"column":36}},"160":{"start":{"line":161,"column":0},"end":{"line":161,"column":119}},"161":{"start":{"line":162,"column":0},"end":{"line":162,"column":55}},"162":{"start":{"line":163,"column":0},"end":{"line":163,"column":78}},"163":{"start":{"line":164,"column":0},"end":{"line":164,"column":13}},"164":{"start":{"line":165,"column":0},"end":{"line":165,"column":18}},"165":{"start":{"line":166,"column":0},"end":{"line":166,"column":11}},"166":{"start":{"line":167,"column":0},"end":{"line":167,"column":37}},"167":{"start":{"line":168,"column":0},"end":{"line":168,"column":40}},"168":{"start":{"line":169,"column":0},"end":{"line":169,"column":43}},"169":{"start":{"line":170,"column":0},"end":{"line":170,"column":41}},"170":{"start":{"line":171,"column":0},"end":{"line":171,"column":108}},"171":{"start":{"line":172,"column":0},"end":{"line":172,"column":18}},"172":{"start":{"line":173,"column":0},"end":{"line":173,"column":11}},"173":{"start":{"line":174,"column":0},"end":{"line":174,"column":18}},"174":{"start":{"line":175,"column":0},"end":{"line":175,"column":58}},"175":{"start":{"line":176,"column":0},"end":{"line":176,"column":9}},"176":{"start":{"line":177,"column":0},"end":{"line":177,"column":8}},"177":{"start":{"line":178,"column":0},"end":{"line":178,"column":6}},"178":{"start":{"line":179,"column":0},"end":{"line":179,"column":3}},"179":{"start":{"line":180,"column":0},"end":{"line":180,"column":0}},"180":{"start":{"line":181,"column":0},"end":{"line":181,"column":30}},"181":{"start":{"line":182,"column":0},"end":{"line":182,"column":47}},"182":{"start":{"line":183,"column":0},"end":{"line":183,"column":3}},"183":{"start":{"line":184,"column":0},"end":{"line":184,"column":0}},"184":{"start":{"line":185,"column":0},"end":{"line":185,"column":72}},"185":{"start":{"line":186,"column":0},"end":{"line":186,"column":45}},"186":{"start":{"line":187,"column":0},"end":{"line":187,"column":67}},"187":{"start":{"line":188,"column":0},"end":{"line":188,"column":57}},"188":{"start":{"line":189,"column":0},"end":{"line":189,"column":0}},"189":{"start":{"line":190,"column":0},"end":{"line":190,"column":89}},"190":{"start":{"line":191,"column":0},"end":{"line":191,"column":67}},"191":{"start":{"line":192,"column":0},"end":{"line":192,"column":76}},"192":{"start":{"line":193,"column":0},"end":{"line":193,"column":69}},"193":{"start":{"line":194,"column":0},"end":{"line":194,"column":134}},"194":{"start":{"line":195,"column":0},"end":{"line":195,"column":130}},"195":{"start":{"line":196,"column":0},"end":{"line":196,"column":108}},"196":{"start":{"line":197,"column":0},"end":{"line":197,"column":97}},"197":{"start":{"line":198,"column":0},"end":{"line":198,"column":5}},"198":{"start":{"line":199,"column":0},"end":{"line":199,"column":0}},"199":{"start":{"line":200,"column":0},"end":{"line":200,"column":23}},"200":{"start":{"line":201,"column":0},"end":{"line":201,"column":34}},"201":{"start":{"line":202,"column":0},"end":{"line":202,"column":24}},"202":{"start":{"line":203,"column":0},"end":{"line":203,"column":44}},"203":{"start":{"line":204,"column":0},"end":{"line":204,"column":9}},"204":{"start":{"line":205,"column":0},"end":{"line":205,"column":33}},"205":{"start":{"line":206,"column":0},"end":{"line":206,"column":59}},"206":{"start":{"line":207,"column":0},"end":{"line":207,"column":7}},"207":{"start":{"line":208,"column":0},"end":{"line":208,"column":3}},"208":{"start":{"line":209,"column":0},"end":{"line":209,"column":0}},"209":{"start":{"line":210,"column":0},"end":{"line":210,"column":45}},"210":{"start":{"line":211,"column":0},"end":{"line":211,"column":62}},"211":{"start":{"line":212,"column":0},"end":{"line":212,"column":54}},"212":{"start":{"line":213,"column":0},"end":{"line":213,"column":35}},"213":{"start":{"line":214,"column":0},"end":{"line":214,"column":29}},"214":{"start":{"line":215,"column":0},"end":{"line":215,"column":32}},"215":{"start":{"line":216,"column":0},"end":{"line":216,"column":32}},"216":{"start":{"line":217,"column":0},"end":{"line":217,"column":5}},"217":{"start":{"line":218,"column":0},"end":{"line":218,"column":3}},"218":{"start":{"line":219,"column":0},"end":{"line":219,"column":0}},"219":{"start":{"line":220,"column":0},"end":{"line":220,"column":37}},"220":{"start":{"line":221,"column":0},"end":{"line":221,"column":50}},"221":{"start":{"line":222,"column":0},"end":{"line":222,"column":36}},"222":{"start":{"line":223,"column":0},"end":{"line":223,"column":8}},"223":{"start":{"line":224,"column":0},"end":{"line":224,"column":34}},"224":{"start":{"line":225,"column":0},"end":{"line":225,"column":56}},"225":{"start":{"line":226,"column":0},"end":{"line":226,"column":55}},"226":{"start":{"line":227,"column":0},"end":{"line":227,"column":7}},"227":{"start":{"line":228,"column":0},"end":{"line":228,"column":74}},"228":{"start":{"line":229,"column":0},"end":{"line":229,"column":38}},"229":{"start":{"line":230,"column":0},"end":{"line":230,"column":5}},"230":{"start":{"line":231,"column":0},"end":{"line":231,"column":37}},"231":{"start":{"line":232,"column":0},"end":{"line":232,"column":37}},"232":{"start":{"line":233,"column":0},"end":{"line":233,"column":32}},"233":{"start":{"line":234,"column":0},"end":{"line":234,"column":3}},"234":{"start":{"line":235,"column":0},"end":{"line":235,"column":1}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":18,"30":18,"31":1,"32":1,"33":61,"34":54,"35":54,"36":54,"37":0,"38":54,"39":0,"40":0,"41":54,"42":61,"43":61,"44":5,"45":5,"46":0,"47":0,"48":5,"49":5,"50":5,"51":5,"52":5,"53":5,"54":56,"55":56,"56":56,"57":1,"58":1,"59":20,"60":20,"61":20,"62":20,"63":20,"64":20,"65":20,"66":0,"67":0,"68":20,"69":20,"70":20,"71":20,"72":20,"73":20,"74":20,"75":20,"76":20,"77":20,"78":20,"79":20,"80":20,"81":20,"82":20,"83":20,"84":1,"85":1,"86":94,"87":76,"88":76,"89":94,"90":94,"91":94,"92":5,"93":5,"94":94,"95":1,"96":1,"97":20,"98":20,"99":1,"100":1,"101":20,"102":20,"103":1,"104":1,"105":7,"106":7,"107":1,"108":1,"109":40,"110":40,"111":40,"112":40,"113":40,"114":40,"115":40,"116":40,"117":40,"118":40,"119":40,"120":40,"121":40,"122":40,"123":40,"124":1,"125":1,"126":2,"127":2,"128":2,"129":2,"130":2,"131":2,"132":2,"133":4,"134":4,"135":2,"136":2,"137":2,"138":2,"139":2,"140":2,"141":2,"142":2,"143":2,"144":2,"145":2,"146":2,"147":1,"148":1,"149":53,"150":53,"151":159,"152":159,"153":53,"154":53,"155":53,"156":53,"157":53,"158":53,"159":53,"160":20,"161":48,"162":0,"163":0,"164":53,"165":53,"166":159,"167":159,"168":106,"169":106,"170":40,"171":40,"172":40,"173":159,"174":0,"175":159,"176":53,"177":53,"178":53,"179":1,"180":1,"181":53,"182":53,"183":1,"184":1,"185":53,"186":53,"187":53,"188":53,"189":53,"190":53,"191":0,"192":0,"193":0,"194":0,"195":0,"196":0,"197":0,"198":53,"199":53,"200":53,"201":53,"202":53,"203":53,"204":53,"205":53,"206":53,"207":53,"208":1,"209":1,"210":1,"211":1,"212":0,"213":0,"214":0,"215":0,"216":0,"217":0,"218":1,"219":1,"220":53,"221":53,"222":53,"223":53,"224":53,"225":0,"226":53,"227":0,"228":0,"229":0,"230":53,"231":53,"232":53,"233":53,"234":1},"branchMap":{"0":{"type":"branch","line":29,"loc":{"start":{"line":29,"column":2},"end":{"line":31,"column":3}},"locations":[{"start":{"line":29,"column":2},"end":{"line":31,"column":3}}]},"1":{"type":"branch","line":33,"loc":{"start":{"line":33,"column":2},"end":{"line":57,"column":3}},"locations":[{"start":{"line":33,"column":2},"end":{"line":57,"column":3}}]},"2":{"type":"branch","line":34,"loc":{"start":{"line":34,"column":29},"end":{"line":42,"column":5}},"locations":[{"start":{"line":34,"column":29},"end":{"line":42,"column":5}}]},"3":{"type":"branch","line":37,"loc":{"start":{"line":37,"column":28},"end":{"line":39,"column":13}},"locations":[{"start":{"line":37,"column":28},"end":{"line":39,"column":13}}]},"4":{"type":"branch","line":39,"loc":{"start":{"line":39,"column":37},"end":{"line":41,"column":7}},"locations":[{"start":{"line":39,"column":37},"end":{"line":41,"column":7}}]},"5":{"type":"branch","line":44,"loc":{"start":{"line":44,"column":38},"end":{"line":54,"column":5}},"locations":[{"start":{"line":44,"column":38},"end":{"line":54,"column":5}}]},"6":{"type":"branch","line":46,"loc":{"start":{"line":46,"column":50},"end":{"line":48,"column":7}},"locations":[{"start":{"line":46,"column":50},"end":{"line":48,"column":7}}]},"7":{"type":"branch","line":51,"loc":{"start":{"line":51,"column":70},"end":{"line":51,"column":76}},"locations":[{"start":{"line":51,"column":70},"end":{"line":51,"column":76}}]},"8":{"type":"branch","line":55,"loc":{"start":{"line":55,"column":-1},"end":{"line":57,"column":3}},"locations":[{"start":{"line":55,"column":-1},"end":{"line":57,"column":3}}]},"9":{"type":"branch","line":59,"loc":{"start":{"line":59,"column":2},"end":{"line":84,"column":3}},"locations":[{"start":{"line":59,"column":2},"end":{"line":84,"column":3}}]},"10":{"type":"branch","line":86,"loc":{"start":{"line":86,"column":2},"end":{"line":95,"column":3}},"locations":[{"start":{"line":86,"column":2},"end":{"line":95,"column":3}}]},"11":{"type":"branch","line":87,"loc":{"start":{"line":87,"column":42},"end":{"line":89,"column":5}},"locations":[{"start":{"line":87,"column":42},"end":{"line":89,"column":5}}]},"12":{"type":"branch","line":92,"loc":{"start":{"line":92,"column":38},"end":{"line":94,"column":5}},"locations":[{"start":{"line":92,"column":38},"end":{"line":94,"column":5}}]},"13":{"type":"branch","line":97,"loc":{"start":{"line":97,"column":2},"end":{"line":99,"column":3}},"locations":[{"start":{"line":97,"column":2},"end":{"line":99,"column":3}}]},"14":{"type":"branch","line":98,"loc":{"start":{"line":98,"column":17},"end":{"line":98,"column":48}},"locations":[{"start":{"line":98,"column":17},"end":{"line":98,"column":48}}]},"15":{"type":"branch","line":101,"loc":{"start":{"line":101,"column":2},"end":{"line":103,"column":3}},"locations":[{"start":{"line":101,"column":2},"end":{"line":103,"column":3}}]},"16":{"type":"branch","line":105,"loc":{"start":{"line":105,"column":2},"end":{"line":107,"column":3}},"locations":[{"start":{"line":105,"column":2},"end":{"line":107,"column":3}}]},"17":{"type":"branch","line":109,"loc":{"start":{"line":109,"column":10},"end":{"line":124,"column":3}},"locations":[{"start":{"line":109,"column":10},"end":{"line":124,"column":3}}]},"18":{"type":"branch","line":126,"loc":{"start":{"line":126,"column":10},"end":{"line":147,"column":3}},"locations":[{"start":{"line":126,"column":10},"end":{"line":147,"column":3}}]},"19":{"type":"branch","line":133,"loc":{"start":{"line":133,"column":20},"end":{"line":136,"column":24}},"locations":[{"start":{"line":133,"column":20},"end":{"line":136,"column":24}}]},"20":{"type":"branch","line":141,"loc":{"start":{"line":141,"column":36},"end":{"line":141,"column":87}},"locations":[{"start":{"line":141,"column":36},"end":{"line":141,"column":87}}]},"21":{"type":"branch","line":149,"loc":{"start":{"line":149,"column":10},"end":{"line":179,"column":3}},"locations":[{"start":{"line":149,"column":10},"end":{"line":179,"column":3}}]},"22":{"type":"branch","line":151,"loc":{"start":{"line":151,"column":22},"end":{"line":177,"column":7}},"locations":[{"start":{"line":151,"column":22},"end":{"line":177,"column":7}}]},"23":{"type":"branch","line":153,"loc":{"start":{"line":153,"column":10},"end":{"line":166,"column":11}},"locations":[{"start":{"line":153,"column":10},"end":{"line":166,"column":11}}]},"24":{"type":"branch","line":160,"loc":{"start":{"line":160,"column":35},"end":{"line":164,"column":13}},"locations":[{"start":{"line":160,"column":35},"end":{"line":164,"column":13}}]},"25":{"type":"branch","line":160,"loc":{"start":{"line":160,"column":35},"end":{"line":162,"column":19}},"locations":[{"start":{"line":160,"column":35},"end":{"line":162,"column":19}}]},"26":{"type":"branch","line":162,"loc":{"start":{"line":162,"column":13},"end":{"line":164,"column":13}},"locations":[{"start":{"line":162,"column":13},"end":{"line":164,"column":13}}]},"27":{"type":"branch","line":162,"loc":{"start":{"line":162,"column":54},"end":{"line":164,"column":13}},"locations":[{"start":{"line":162,"column":54},"end":{"line":164,"column":13}}]},"28":{"type":"branch","line":167,"loc":{"start":{"line":167,"column":10},"end":{"line":167,"column":37}},"locations":[{"start":{"line":167,"column":10},"end":{"line":167,"column":37}}]},"29":{"type":"branch","line":168,"loc":{"start":{"line":168,"column":10},"end":{"line":173,"column":11}},"locations":[{"start":{"line":168,"column":10},"end":{"line":173,"column":11}}]},"30":{"type":"branch","line":170,"loc":{"start":{"line":170,"column":35},"end":{"line":173,"column":11}},"locations":[{"start":{"line":170,"column":35},"end":{"line":173,"column":11}}]},"31":{"type":"branch","line":170,"loc":{"start":{"line":170,"column":35},"end":{"line":170,"column":41}},"locations":[{"start":{"line":170,"column":35},"end":{"line":170,"column":41}}]},"32":{"type":"branch","line":171,"loc":{"start":{"line":171,"column":-1},"end":{"line":173,"column":11}},"locations":[{"start":{"line":171,"column":-1},"end":{"line":173,"column":11}}]},"33":{"type":"branch","line":174,"loc":{"start":{"line":174,"column":10},"end":{"line":175,"column":58}},"locations":[{"start":{"line":174,"column":10},"end":{"line":175,"column":58}}]},"34":{"type":"branch","line":181,"loc":{"start":{"line":181,"column":2},"end":{"line":183,"column":3}},"locations":[{"start":{"line":181,"column":2},"end":{"line":183,"column":3}}]},"35":{"type":"branch","line":185,"loc":{"start":{"line":185,"column":2},"end":{"line":208,"column":3}},"locations":[{"start":{"line":185,"column":2},"end":{"line":208,"column":3}}]},"36":{"type":"branch","line":191,"loc":{"start":{"line":191,"column":33},"end":{"line":191,"column":64}},"locations":[{"start":{"line":191,"column":33},"end":{"line":191,"column":64}}]},"37":{"type":"branch","line":191,"loc":{"start":{"line":191,"column":66},"end":{"line":198,"column":5}},"locations":[{"start":{"line":191,"column":66},"end":{"line":198,"column":5}}]},"38":{"type":"branch","line":187,"loc":{"start":{"line":187,"column":14},"end":{"line":187,"column":66}},"locations":[{"start":{"line":187,"column":14},"end":{"line":187,"column":66}}]},"39":{"type":"branch","line":188,"loc":{"start":{"line":188,"column":11},"end":{"line":188,"column":56}},"locations":[{"start":{"line":188,"column":11},"end":{"line":188,"column":56}}]},"40":{"type":"branch","line":190,"loc":{"start":{"line":190,"column":49},"end":{"line":190,"column":87}},"locations":[{"start":{"line":190,"column":49},"end":{"line":190,"column":87}}]},"41":{"type":"branch","line":220,"loc":{"start":{"line":220,"column":2},"end":{"line":234,"column":3}},"locations":[{"start":{"line":220,"column":2},"end":{"line":234,"column":3}}]},"42":{"type":"branch","line":224,"loc":{"start":{"line":224,"column":31},"end":{"line":225,"column":53}},"locations":[{"start":{"line":224,"column":31},"end":{"line":225,"column":53}}]},"43":{"type":"branch","line":225,"loc":{"start":{"line":225,"column":53},"end":{"line":226,"column":55}},"locations":[{"start":{"line":225,"column":53},"end":{"line":226,"column":55}}]},"44":{"type":"branch","line":227,"loc":{"start":{"line":227,"column":6},"end":{"line":230,"column":5}},"locations":[{"start":{"line":227,"column":6},"end":{"line":230,"column":5}}]}},"b":{"0":[18],"1":[61],"2":[54],"3":[0],"4":[0],"5":[5],"6":[0],"7":[0],"8":[56],"9":[20],"10":[94],"11":[76],"12":[5],"13":[20],"14":[80],"15":[20],"16":[7],"17":[40],"18":[2],"19":[4],"20":[4],"21":[53],"22":[159],"23":[53],"24":[48],"25":[20],"26":[33],"27":[0],"28":[53],"29":[106],"30":[96],"31":[66],"32":[40],"33":[0],"34":[53],"35":[53],"36":[0],"37":[0],"38":[293],"39":[233],"40":[233],"41":[53],"42":[0],"43":[0],"44":[0]},"fnMap":{"0":{"name":"CacheMetadataModel","decl":{"start":{"line":29,"column":2},"end":{"line":31,"column":3}},"loc":{"start":{"line":29,"column":2},"end":{"line":31,"column":3}},"line":29},"1":{"name":"find","decl":{"start":{"line":33,"column":2},"end":{"line":57,"column":3}},"loc":{"start":{"line":33,"column":2},"end":{"line":57,"column":3}},"line":33},"2":{"name":"findMany","decl":{"start":{"line":59,"column":2},"end":{"line":84,"column":3}},"loc":{"start":{"line":59,"column":2},"end":{"line":84,"column":3}},"line":59},"3":{"name":"set","decl":{"start":{"line":86,"column":2},"end":{"line":95,"column":3}},"loc":{"start":{"line":86,"column":2},"end":{"line":95,"column":3}},"line":86},"4":{"name":"setBulk","decl":{"start":{"line":97,"column":2},"end":{"line":99,"column":3}},"loc":{"start":{"line":97,"column":2},"end":{"line":99,"column":3}},"line":97},"5":{"name":"setIncrement","decl":{"start":{"line":101,"column":2},"end":{"line":103,"column":3}},"loc":{"start":{"line":101,"column":2},"end":{"line":103,"column":3}},"line":101},"6":{"name":"setNewDynamicDatasource","decl":{"start":{"line":105,"column":2},"end":{"line":107,"column":3}},"loc":{"start":{"line":105,"column":2},"end":{"line":107,"column":3}},"line":105},"7":{"name":"incrementJsonbCount","decl":{"start":{"line":109,"column":10},"end":{"line":124,"column":3}},"loc":{"start":{"line":109,"column":10},"end":{"line":124,"column":3}},"line":109},"8":{"name":"appendDynamicDatasources","decl":{"start":{"line":126,"column":10},"end":{"line":147,"column":3}},"loc":{"start":{"line":126,"column":10},"end":{"line":147,"column":3}},"line":126},"9":{"name":"makeSet","decl":{"start":{"line":133,"column":20},"end":{"line":136,"column":24}},"loc":{"start":{"line":133,"column":20},"end":{"line":136,"column":24}},"line":133},"10":{"name":"handleSpecialKeys","decl":{"start":{"line":149,"column":10},"end":{"line":179,"column":3}},"loc":{"start":{"line":149,"column":10},"end":{"line":179,"column":3}},"line":149},"11":{"name":"get isFlushable","decl":{"start":{"line":181,"column":2},"end":{"line":183,"column":3}},"loc":{"start":{"line":181,"column":2},"end":{"line":183,"column":3}},"line":181},"12":{"name":"runFlush","decl":{"start":{"line":185,"column":2},"end":{"line":208,"column":3}},"loc":{"start":{"line":185,"column":2},"end":{"line":208,"column":3}},"line":185},"13":{"name":"bulkRemove","decl":{"start":{"line":212,"column":2},"end":{"line":218,"column":3}},"loc":{"start":{"line":212,"column":2},"end":{"line":218,"column":3}},"line":212},"14":{"name":"clear","decl":{"start":{"line":220,"column":2},"end":{"line":234,"column":3}},"loc":{"start":{"line":220,"column":2},"end":{"line":234,"column":3}},"line":220}},"f":{"0":18,"1":61,"2":20,"3":94,"4":20,"5":20,"6":7,"7":40,"8":2,"9":4,"10":53,"11":53,"12":53,"13":0,"14":53}},"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/indexer/storeCache/cacheModel.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/indexer/storeCache/cacheModel.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":28}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":67}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":102}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":50}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":67}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":43}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":38}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":51}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":46}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":8}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":22}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":14}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":10}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":15}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":10}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":24}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":11}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":11}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":17}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":0}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":25}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":28}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":31}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":75}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":2}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":0}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":51}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":13}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":14}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":12}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":18}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":2}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":0}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":25}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":70}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":17}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":45}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":5}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":3}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":19}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":49}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":1}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":51}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":31}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":36}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":56}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":44}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":37}},"51":{"start":{"line":52,"column":0},"end":{"line":52,"column":0}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":29}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":0}},"54":{"start":{"line":55,"column":0},"end":{"line":55,"column":14}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":45}},"56":{"start":{"line":57,"column":0},"end":{"line":57,"column":39}},"57":{"start":{"line":58,"column":0},"end":{"line":58,"column":23}},"58":{"start":{"line":59,"column":0},"end":{"line":59,"column":53}},"59":{"start":{"line":60,"column":0},"end":{"line":60,"column":77}},"60":{"start":{"line":61,"column":0},"end":{"line":61,"column":42}},"61":{"start":{"line":62,"column":0},"end":{"line":62,"column":43}},"62":{"start":{"line":63,"column":0},"end":{"line":63,"column":5}},"63":{"start":{"line":64,"column":0},"end":{"line":64,"column":12}},"64":{"start":{"line":65,"column":0},"end":{"line":65,"column":42}},"65":{"start":{"line":66,"column":0},"end":{"line":66,"column":49}},"66":{"start":{"line":67,"column":0},"end":{"line":67,"column":53}},"67":{"start":{"line":68,"column":0},"end":{"line":68,"column":5}},"68":{"start":{"line":69,"column":0},"end":{"line":69,"column":52}},"69":{"start":{"line":70,"column":0},"end":{"line":70,"column":58}},"70":{"start":{"line":71,"column":0},"end":{"line":71,"column":34}},"71":{"start":{"line":72,"column":0},"end":{"line":72,"column":5}},"72":{"start":{"line":73,"column":0},"end":{"line":73,"column":3}},"73":{"start":{"line":74,"column":0},"end":{"line":74,"column":0}},"74":{"start":{"line":75,"column":0},"end":{"line":75,"column":28}},"75":{"start":{"line":76,"column":0},"end":{"line":76,"column":18}},"76":{"start":{"line":77,"column":0},"end":{"line":77,"column":115}},"77":{"start":{"line":78,"column":0},"end":{"line":78,"column":113}},"78":{"start":{"line":79,"column":0},"end":{"line":79,"column":3}},"79":{"start":{"line":80,"column":0},"end":{"line":80,"column":0}},"80":{"start":{"line":81,"column":0},"end":{"line":81,"column":49}},"81":{"start":{"line":82,"column":0},"end":{"line":82,"column":35}},"82":{"start":{"line":83,"column":0},"end":{"line":83,"column":59}},"83":{"start":{"line":84,"column":0},"end":{"line":84,"column":0}},"84":{"start":{"line":85,"column":0},"end":{"line":85,"column":31}},"85":{"start":{"line":86,"column":0},"end":{"line":86,"column":54}},"86":{"start":{"line":87,"column":0},"end":{"line":87,"column":10}},"87":{"start":{"line":88,"column":0},"end":{"line":88,"column":26}},"88":{"start":{"line":89,"column":0},"end":{"line":89,"column":35}},"89":{"start":{"line":90,"column":0},"end":{"line":90,"column":74}},"90":{"start":{"line":91,"column":0},"end":{"line":91,"column":9}},"91":{"start":{"line":92,"column":0},"end":{"line":92,"column":36}},"92":{"start":{"line":93,"column":0},"end":{"line":93,"column":7}},"93":{"start":{"line":94,"column":0},"end":{"line":94,"column":13}},"94":{"start":{"line":95,"column":0},"end":{"line":95,"column":5}},"95":{"start":{"line":96,"column":0},"end":{"line":96,"column":33}},"96":{"start":{"line":97,"column":0},"end":{"line":97,"column":81}},"97":{"start":{"line":98,"column":0},"end":{"line":98,"column":39}},"98":{"start":{"line":99,"column":0},"end":{"line":99,"column":41}},"99":{"start":{"line":100,"column":0},"end":{"line":100,"column":37}},"100":{"start":{"line":101,"column":0},"end":{"line":101,"column":25}},"101":{"start":{"line":102,"column":0},"end":{"line":102,"column":7}},"102":{"start":{"line":103,"column":0},"end":{"line":103,"column":20}},"103":{"start":{"line":104,"column":0},"end":{"line":104,"column":41}},"104":{"start":{"line":105,"column":0},"end":{"line":105,"column":18}},"105":{"start":{"line":106,"column":0},"end":{"line":106,"column":36}},"106":{"start":{"line":107,"column":0},"end":{"line":107,"column":66}},"107":{"start":{"line":108,"column":0},"end":{"line":108,"column":31}},"108":{"start":{"line":109,"column":0},"end":{"line":109,"column":12}},"109":{"start":{"line":110,"column":0},"end":{"line":110,"column":20}},"110":{"start":{"line":111,"column":0},"end":{"line":111,"column":21}},"111":{"start":{"line":112,"column":0},"end":{"line":112,"column":47}},"112":{"start":{"line":113,"column":0},"end":{"line":113,"column":40}},"113":{"start":{"line":114,"column":0},"end":{"line":114,"column":9}},"114":{"start":{"line":115,"column":0},"end":{"line":115,"column":7}},"115":{"start":{"line":116,"column":0},"end":{"line":116,"column":20}},"116":{"start":{"line":117,"column":0},"end":{"line":117,"column":5}},"117":{"start":{"line":118,"column":0},"end":{"line":118,"column":0}},"118":{"start":{"line":119,"column":0},"end":{"line":119,"column":33}},"119":{"start":{"line":120,"column":0},"end":{"line":120,"column":3}},"120":{"start":{"line":121,"column":0},"end":{"line":121,"column":0}},"121":{"start":{"line":122,"column":0},"end":{"line":122,"column":55}},"122":{"start":{"line":123,"column":0},"end":{"line":123,"column":36}},"123":{"start":{"line":124,"column":0},"end":{"line":124,"column":3}},"124":{"start":{"line":125,"column":0},"end":{"line":125,"column":0}},"125":{"start":{"line":126,"column":0},"end":{"line":126,"column":19}},"126":{"start":{"line":127,"column":0},"end":{"line":127,"column":19}},"127":{"start":{"line":128,"column":0},"end":{"line":128,"column":37}},"128":{"start":{"line":129,"column":0},"end":{"line":129,"column":14}},"129":{"start":{"line":130,"column":0},"end":{"line":130,"column":21}},"130":{"start":{"line":131,"column":0},"end":{"line":131,"column":20}},"131":{"start":{"line":132,"column":0},"end":{"line":132,"column":5}},"132":{"start":{"line":133,"column":0},"end":{"line":133,"column":19}},"133":{"start":{"line":134,"column":0},"end":{"line":134,"column":53}},"134":{"start":{"line":135,"column":0},"end":{"line":135,"column":46}},"135":{"start":{"line":136,"column":0},"end":{"line":136,"column":46}},"136":{"start":{"line":137,"column":0},"end":{"line":137,"column":35}},"137":{"start":{"line":138,"column":0},"end":{"line":138,"column":22}},"138":{"start":{"line":139,"column":0},"end":{"line":139,"column":69}},"139":{"start":{"line":140,"column":0},"end":{"line":140,"column":60}},"140":{"start":{"line":141,"column":0},"end":{"line":141,"column":43}},"141":{"start":{"line":142,"column":0},"end":{"line":142,"column":78}},"142":{"start":{"line":143,"column":0},"end":{"line":143,"column":68}},"143":{"start":{"line":144,"column":0},"end":{"line":144,"column":59}},"144":{"start":{"line":145,"column":0},"end":{"line":145,"column":78}},"145":{"start":{"line":146,"column":0},"end":{"line":146,"column":71}},"146":{"start":{"line":147,"column":0},"end":{"line":147,"column":75}},"147":{"start":{"line":148,"column":0},"end":{"line":148,"column":5}},"148":{"start":{"line":149,"column":0},"end":{"line":149,"column":0}},"149":{"start":{"line":150,"column":0},"end":{"line":150,"column":37}},"150":{"start":{"line":151,"column":0},"end":{"line":151,"column":46}},"151":{"start":{"line":152,"column":0},"end":{"line":152,"column":76}},"152":{"start":{"line":153,"column":0},"end":{"line":153,"column":59}},"153":{"start":{"line":154,"column":0},"end":{"line":154,"column":30}},"154":{"start":{"line":155,"column":0},"end":{"line":155,"column":7}},"155":{"start":{"line":156,"column":0},"end":{"line":156,"column":0}},"156":{"start":{"line":157,"column":0},"end":{"line":157,"column":33}},"157":{"start":{"line":158,"column":0},"end":{"line":158,"column":29}},"158":{"start":{"line":159,"column":0},"end":{"line":159,"column":38}},"159":{"start":{"line":160,"column":0},"end":{"line":160,"column":39}},"160":{"start":{"line":161,"column":0},"end":{"line":161,"column":7}},"161":{"start":{"line":162,"column":0},"end":{"line":162,"column":0}},"162":{"start":{"line":163,"column":0},"end":{"line":163,"column":76}},"163":{"start":{"line":164,"column":0},"end":{"line":164,"column":3}},"164":{"start":{"line":165,"column":0},"end":{"line":165,"column":0}},"165":{"start":{"line":166,"column":0},"end":{"line":166,"column":20}},"166":{"start":{"line":167,"column":0},"end":{"line":167,"column":34}},"167":{"start":{"line":168,"column":0},"end":{"line":168,"column":14}},"168":{"start":{"line":169,"column":0},"end":{"line":169,"column":21}},"169":{"start":{"line":170,"column":0},"end":{"line":170,"column":20}},"170":{"start":{"line":171,"column":0},"end":{"line":171,"column":5}},"171":{"start":{"line":172,"column":0},"end":{"line":172,"column":19}},"172":{"start":{"line":173,"column":0},"end":{"line":173,"column":22}},"173":{"start":{"line":174,"column":0},"end":{"line":174,"column":43}},"174":{"start":{"line":175,"column":0},"end":{"line":175,"column":13}},"175":{"start":{"line":176,"column":0},"end":{"line":176,"column":31}},"176":{"start":{"line":177,"column":0},"end":{"line":177,"column":120}},"177":{"start":{"line":178,"column":0},"end":{"line":178,"column":14}},"178":{"start":{"line":179,"column":0},"end":{"line":179,"column":11}},"179":{"start":{"line":180,"column":0},"end":{"line":180,"column":8}},"180":{"start":{"line":181,"column":0},"end":{"line":181,"column":7}},"181":{"start":{"line":182,"column":0},"end":{"line":182,"column":0}},"182":{"start":{"line":183,"column":0},"end":{"line":183,"column":57}},"183":{"start":{"line":184,"column":0},"end":{"line":184,"column":30}},"184":{"start":{"line":185,"column":0},"end":{"line":185,"column":49}},"185":{"start":{"line":186,"column":0},"end":{"line":186,"column":50}},"186":{"start":{"line":187,"column":0},"end":{"line":187,"column":54}},"187":{"start":{"line":188,"column":0},"end":{"line":188,"column":7}},"188":{"start":{"line":189,"column":0},"end":{"line":189,"column":5}},"189":{"start":{"line":190,"column":0},"end":{"line":190,"column":0}},"190":{"start":{"line":191,"column":0},"end":{"line":191,"column":111}},"191":{"start":{"line":192,"column":0},"end":{"line":192,"column":27}},"192":{"start":{"line":193,"column":0},"end":{"line":193,"column":37}},"193":{"start":{"line":194,"column":0},"end":{"line":194,"column":28}},"194":{"start":{"line":195,"column":0},"end":{"line":195,"column":5}},"195":{"start":{"line":196,"column":0},"end":{"line":196,"column":0}},"196":{"start":{"line":197,"column":0},"end":{"line":197,"column":67}},"197":{"start":{"line":198,"column":0},"end":{"line":198,"column":47}},"198":{"start":{"line":199,"column":0},"end":{"line":199,"column":0}},"199":{"start":{"line":200,"column":0},"end":{"line":200,"column":9}},"200":{"start":{"line":201,"column":0},"end":{"line":201,"column":48}},"201":{"start":{"line":202,"column":0},"end":{"line":202,"column":16}},"202":{"start":{"line":203,"column":0},"end":{"line":203,"column":59}},"203":{"start":{"line":204,"column":0},"end":{"line":204,"column":146}},"204":{"start":{"line":205,"column":0},"end":{"line":205,"column":10}},"205":{"start":{"line":206,"column":0},"end":{"line":206,"column":30}},"206":{"start":{"line":207,"column":0},"end":{"line":207,"column":32}},"207":{"start":{"line":208,"column":0},"end":{"line":208,"column":9}},"208":{"start":{"line":209,"column":0},"end":{"line":209,"column":0}},"209":{"start":{"line":210,"column":0},"end":{"line":210,"column":44}},"210":{"start":{"line":211,"column":0},"end":{"line":211,"column":15}},"211":{"start":{"line":212,"column":0},"end":{"line":212,"column":16}},"212":{"start":{"line":213,"column":0},"end":{"line":213,"column":5}},"213":{"start":{"line":214,"column":0},"end":{"line":214,"column":3}},"214":{"start":{"line":215,"column":0},"end":{"line":215,"column":0}},"215":{"start":{"line":216,"column":0},"end":{"line":216,"column":82}},"216":{"start":{"line":217,"column":0},"end":{"line":217,"column":25}},"217":{"start":{"line":218,"column":0},"end":{"line":218,"column":34}},"218":{"start":{"line":219,"column":0},"end":{"line":219,"column":12}},"219":{"start":{"line":220,"column":0},"end":{"line":220,"column":69}},"220":{"start":{"line":221,"column":0},"end":{"line":221,"column":26}},"221":{"start":{"line":222,"column":0},"end":{"line":222,"column":29}},"222":{"start":{"line":223,"column":0},"end":{"line":223,"column":14}},"223":{"start":{"line":224,"column":0},"end":{"line":224,"column":41}},"224":{"start":{"line":225,"column":0},"end":{"line":225,"column":24}},"225":{"start":{"line":226,"column":0},"end":{"line":226,"column":36}},"226":{"start":{"line":227,"column":0},"end":{"line":227,"column":82}},"227":{"start":{"line":228,"column":0},"end":{"line":228,"column":12}},"228":{"start":{"line":229,"column":0},"end":{"line":229,"column":23}},"229":{"start":{"line":230,"column":0},"end":{"line":230,"column":0}},"230":{"start":{"line":231,"column":0},"end":{"line":231,"column":21}},"231":{"start":{"line":232,"column":0},"end":{"line":232,"column":47}},"232":{"start":{"line":233,"column":0},"end":{"line":233,"column":9}},"233":{"start":{"line":234,"column":0},"end":{"line":234,"column":22}},"234":{"start":{"line":235,"column":0},"end":{"line":235,"column":7}},"235":{"start":{"line":236,"column":0},"end":{"line":236,"column":5}},"236":{"start":{"line":237,"column":0},"end":{"line":237,"column":3}},"237":{"start":{"line":238,"column":0},"end":{"line":238,"column":0}},"238":{"start":{"line":239,"column":0},"end":{"line":239,"column":55}},"239":{"start":{"line":240,"column":0},"end":{"line":240,"column":42}},"240":{"start":{"line":241,"column":0},"end":{"line":241,"column":46}},"241":{"start":{"line":242,"column":0},"end":{"line":242,"column":5}},"242":{"start":{"line":243,"column":0},"end":{"line":243,"column":80}},"243":{"start":{"line":244,"column":0},"end":{"line":244,"column":76}},"244":{"start":{"line":245,"column":0},"end":{"line":245,"column":50}},"245":{"start":{"line":246,"column":0},"end":{"line":246,"column":32}},"246":{"start":{"line":247,"column":0},"end":{"line":247,"column":64}},"247":{"start":{"line":248,"column":0},"end":{"line":248,"column":86}},"248":{"start":{"line":249,"column":0},"end":{"line":249,"column":34}},"249":{"start":{"line":250,"column":0},"end":{"line":250,"column":5}},"250":{"start":{"line":251,"column":0},"end":{"line":251,"column":37}},"251":{"start":{"line":252,"column":0},"end":{"line":252,"column":3}},"252":{"start":{"line":253,"column":0},"end":{"line":253,"column":0}},"253":{"start":{"line":254,"column":0},"end":{"line":254,"column":52}},"254":{"start":{"line":255,"column":0},"end":{"line":255,"column":32}},"255":{"start":{"line":256,"column":0},"end":{"line":256,"column":47}},"256":{"start":{"line":257,"column":0},"end":{"line":257,"column":5}},"257":{"start":{"line":258,"column":0},"end":{"line":258,"column":3}},"258":{"start":{"line":259,"column":0},"end":{"line":259,"column":0}},"259":{"start":{"line":260,"column":0},"end":{"line":260,"column":83}},"260":{"start":{"line":261,"column":0},"end":{"line":261,"column":25}},"261":{"start":{"line":262,"column":0},"end":{"line":262,"column":17}},"262":{"start":{"line":263,"column":0},"end":{"line":263,"column":67}},"263":{"start":{"line":264,"column":0},"end":{"line":264,"column":5}},"264":{"start":{"line":265,"column":0},"end":{"line":265,"column":32}},"265":{"start":{"line":266,"column":0},"end":{"line":266,"column":47}},"266":{"start":{"line":267,"column":0},"end":{"line":267,"column":5}},"267":{"start":{"line":268,"column":0},"end":{"line":268,"column":3}},"268":{"start":{"line":269,"column":0},"end":{"line":269,"column":0}},"269":{"start":{"line":270,"column":0},"end":{"line":270,"column":49}},"270":{"start":{"line":271,"column":0},"end":{"line":271,"column":60}},"271":{"start":{"line":272,"column":0},"end":{"line":272,"column":59}},"272":{"start":{"line":273,"column":0},"end":{"line":273,"column":63}},"273":{"start":{"line":274,"column":0},"end":{"line":274,"column":28}},"274":{"start":{"line":275,"column":0},"end":{"line":275,"column":34}},"275":{"start":{"line":276,"column":0},"end":{"line":276,"column":56}},"276":{"start":{"line":277,"column":0},"end":{"line":277,"column":6}},"277":{"start":{"line":278,"column":0},"end":{"line":278,"column":37}},"278":{"start":{"line":279,"column":0},"end":{"line":279,"column":32}},"279":{"start":{"line":280,"column":0},"end":{"line":280,"column":31}},"280":{"start":{"line":281,"column":0},"end":{"line":281,"column":84}},"281":{"start":{"line":282,"column":0},"end":{"line":282,"column":5}},"282":{"start":{"line":283,"column":0},"end":{"line":283,"column":28}},"283":{"start":{"line":284,"column":0},"end":{"line":284,"column":26}},"284":{"start":{"line":285,"column":0},"end":{"line":285,"column":51}},"285":{"start":{"line":286,"column":0},"end":{"line":286,"column":5}},"286":{"start":{"line":287,"column":0},"end":{"line":287,"column":3}},"287":{"start":{"line":288,"column":0},"end":{"line":288,"column":0}},"288":{"start":{"line":289,"column":0},"end":{"line":289,"column":56}},"289":{"start":{"line":290,"column":0},"end":{"line":290,"column":50}},"290":{"start":{"line":291,"column":0},"end":{"line":291,"column":3}},"291":{"start":{"line":292,"column":0},"end":{"line":292,"column":0}},"292":{"start":{"line":293,"column":0},"end":{"line":293,"column":30}},"293":{"start":{"line":294,"column":0},"end":{"line":294,"column":89}},"294":{"start":{"line":295,"column":0},"end":{"line":295,"column":3}},"295":{"start":{"line":296,"column":0},"end":{"line":296,"column":0}},"296":{"start":{"line":297,"column":0},"end":{"line":297,"column":72}},"297":{"start":{"line":298,"column":0},"end":{"line":298,"column":47}},"298":{"start":{"line":299,"column":0},"end":{"line":299,"column":51}},"299":{"start":{"line":300,"column":0},"end":{"line":300,"column":49}},"300":{"start":{"line":301,"column":0},"end":{"line":301,"column":69}},"301":{"start":{"line":302,"column":0},"end":{"line":302,"column":74}},"302":{"start":{"line":303,"column":0},"end":{"line":303,"column":70}},"303":{"start":{"line":304,"column":0},"end":{"line":304,"column":38}},"304":{"start":{"line":305,"column":0},"end":{"line":305,"column":26}},"305":{"start":{"line":306,"column":0},"end":{"line":306,"column":33}},"306":{"start":{"line":307,"column":0},"end":{"line":307,"column":70}},"307":{"start":{"line":308,"column":0},"end":{"line":308,"column":85}},"308":{"start":{"line":309,"column":0},"end":{"line":309,"column":54}},"309":{"start":{"line":310,"column":0},"end":{"line":310,"column":47}},"310":{"start":{"line":311,"column":0},"end":{"line":311,"column":40}},"311":{"start":{"line":312,"column":0},"end":{"line":312,"column":26}},"312":{"start":{"line":313,"column":0},"end":{"line":313,"column":11}},"313":{"start":{"line":314,"column":0},"end":{"line":314,"column":9}},"314":{"start":{"line":315,"column":0},"end":{"line":315,"column":12}},"315":{"start":{"line":316,"column":0},"end":{"line":316,"column":107}},"316":{"start":{"line":317,"column":0},"end":{"line":317,"column":92}},"317":{"start":{"line":318,"column":0},"end":{"line":318,"column":66}},"318":{"start":{"line":319,"column":0},"end":{"line":319,"column":0}},"319":{"start":{"line":320,"column":0},"end":{"line":320,"column":110}},"320":{"start":{"line":321,"column":0},"end":{"line":321,"column":79}},"321":{"start":{"line":322,"column":0},"end":{"line":322,"column":50}},"322":{"start":{"line":323,"column":0},"end":{"line":323,"column":40}},"323":{"start":{"line":324,"column":0},"end":{"line":324,"column":74}},"324":{"start":{"line":325,"column":0},"end":{"line":325,"column":91}},"325":{"start":{"line":326,"column":0},"end":{"line":326,"column":72}},"326":{"start":{"line":327,"column":0},"end":{"line":327,"column":98}},"327":{"start":{"line":328,"column":0},"end":{"line":328,"column":52}},"328":{"start":{"line":329,"column":0},"end":{"line":329,"column":18}},"329":{"start":{"line":330,"column":0},"end":{"line":330,"column":28}},"330":{"start":{"line":331,"column":0},"end":{"line":331,"column":123}},"331":{"start":{"line":332,"column":0},"end":{"line":332,"column":14}},"332":{"start":{"line":333,"column":0},"end":{"line":333,"column":11}},"333":{"start":{"line":334,"column":0},"end":{"line":334,"column":9}},"334":{"start":{"line":335,"column":0},"end":{"line":335,"column":7}},"335":{"start":{"line":336,"column":0},"end":{"line":336,"column":0}},"336":{"start":{"line":337,"column":0},"end":{"line":337,"column":33}},"337":{"start":{"line":338,"column":0},"end":{"line":338,"column":25}},"338":{"start":{"line":339,"column":0},"end":{"line":339,"column":42}},"339":{"start":{"line":340,"column":0},"end":{"line":340,"column":28}},"340":{"start":{"line":341,"column":0},"end":{"line":341,"column":81}},"341":{"start":{"line":342,"column":0},"end":{"line":342,"column":13}},"342":{"start":{"line":343,"column":0},"end":{"line":343,"column":44}},"343":{"start":{"line":344,"column":0},"end":{"line":344,"column":96}},"344":{"start":{"line":345,"column":0},"end":{"line":345,"column":9}},"345":{"start":{"line":346,"column":0},"end":{"line":346,"column":5}},"346":{"start":{"line":347,"column":0},"end":{"line":347,"column":49}},"347":{"start":{"line":348,"column":0},"end":{"line":348,"column":34}},"348":{"start":{"line":349,"column":0},"end":{"line":349,"column":36}},"349":{"start":{"line":350,"column":0},"end":{"line":350,"column":9}},"350":{"start":{"line":351,"column":0},"end":{"line":351,"column":7}},"351":{"start":{"line":352,"column":0},"end":{"line":352,"column":22}},"352":{"start":{"line":353,"column":0},"end":{"line":353,"column":3}},"353":{"start":{"line":354,"column":0},"end":{"line":354,"column":0}},"354":{"start":{"line":355,"column":0},"end":{"line":355,"column":72}},"355":{"start":{"line":356,"column":0},"end":{"line":356,"column":80}},"356":{"start":{"line":357,"column":0},"end":{"line":357,"column":63}},"357":{"start":{"line":358,"column":0},"end":{"line":358,"column":70}},"358":{"start":{"line":359,"column":0},"end":{"line":359,"column":6}},"359":{"start":{"line":360,"column":0},"end":{"line":360,"column":40}},"360":{"start":{"line":361,"column":0},"end":{"line":361,"column":87}},"361":{"start":{"line":362,"column":0},"end":{"line":362,"column":47}},"362":{"start":{"line":363,"column":0},"end":{"line":363,"column":12}},"363":{"start":{"line":364,"column":0},"end":{"line":364,"column":45}},"364":{"start":{"line":365,"column":0},"end":{"line":365,"column":53}},"365":{"start":{"line":366,"column":0},"end":{"line":366,"column":59}},"366":{"start":{"line":367,"column":0},"end":{"line":367,"column":29}},"367":{"start":{"line":368,"column":0},"end":{"line":368,"column":7}},"368":{"start":{"line":369,"column":0},"end":{"line":369,"column":22}},"369":{"start":{"line":370,"column":0},"end":{"line":370,"column":113}},"370":{"start":{"line":371,"column":0},"end":{"line":371,"column":7}},"371":{"start":{"line":372,"column":0},"end":{"line":372,"column":13}},"372":{"start":{"line":373,"column":0},"end":{"line":373,"column":5}},"373":{"start":{"line":374,"column":0},"end":{"line":374,"column":3}},"374":{"start":{"line":375,"column":0},"end":{"line":375,"column":0}},"375":{"start":{"line":376,"column":0},"end":{"line":376,"column":82}},"376":{"start":{"line":377,"column":0},"end":{"line":377,"column":12}},"377":{"start":{"line":378,"column":0},"end":{"line":378,"column":85}},"378":{"start":{"line":379,"column":0},"end":{"line":379,"column":50}},"379":{"start":{"line":380,"column":0},"end":{"line":380,"column":27}},"380":{"start":{"line":381,"column":0},"end":{"line":381,"column":9}},"381":{"start":{"line":382,"column":0},"end":{"line":382,"column":0}},"382":{"start":{"line":383,"column":0},"end":{"line":383,"column":19}},"383":{"start":{"line":384,"column":0},"end":{"line":384,"column":44}},"384":{"start":{"line":385,"column":0},"end":{"line":385,"column":79}},"385":{"start":{"line":386,"column":0},"end":{"line":386,"column":64}},"386":{"start":{"line":387,"column":0},"end":{"line":387,"column":42}},"387":{"start":{"line":388,"column":0},"end":{"line":388,"column":30}},"388":{"start":{"line":389,"column":0},"end":{"line":389,"column":9}},"389":{"start":{"line":390,"column":0},"end":{"line":390,"column":19}},"390":{"start":{"line":391,"column":0},"end":{"line":391,"column":27}},"391":{"start":{"line":392,"column":0},"end":{"line":392,"column":6}},"392":{"start":{"line":393,"column":0},"end":{"line":393,"column":3}},"393":{"start":{"line":394,"column":0},"end":{"line":394,"column":0}},"394":{"start":{"line":395,"column":0},"end":{"line":395,"column":40}},"395":{"start":{"line":396,"column":0},"end":{"line":396,"column":52}},"396":{"start":{"line":397,"column":0},"end":{"line":397,"column":46}},"397":{"start":{"line":398,"column":0},"end":{"line":398,"column":19}},"398":{"start":{"line":399,"column":0},"end":{"line":399,"column":44}},"399":{"start":{"line":400,"column":0},"end":{"line":400,"column":31}},"400":{"start":{"line":401,"column":0},"end":{"line":401,"column":37}},"401":{"start":{"line":402,"column":0},"end":{"line":402,"column":9}},"402":{"start":{"line":403,"column":0},"end":{"line":403,"column":21}},"403":{"start":{"line":404,"column":0},"end":{"line":404,"column":118}},"404":{"start":{"line":405,"column":0},"end":{"line":405,"column":16}},"405":{"start":{"line":406,"column":0},"end":{"line":406,"column":22}},"406":{"start":{"line":407,"column":0},"end":{"line":407,"column":37}},"407":{"start":{"line":408,"column":0},"end":{"line":408,"column":41}},"408":{"start":{"line":409,"column":0},"end":{"line":409,"column":65}},"409":{"start":{"line":410,"column":0},"end":{"line":410,"column":103}},"410":{"start":{"line":411,"column":0},"end":{"line":411,"column":21}},"411":{"start":{"line":412,"column":0},"end":{"line":412,"column":13}},"412":{"start":{"line":413,"column":0},"end":{"line":413,"column":67}},"413":{"start":{"line":414,"column":0},"end":{"line":414,"column":26}},"414":{"start":{"line":415,"column":0},"end":{"line":415,"column":42}},"415":{"start":{"line":416,"column":0},"end":{"line":416,"column":39}},"416":{"start":{"line":417,"column":0},"end":{"line":417,"column":14}},"417":{"start":{"line":418,"column":0},"end":{"line":418,"column":40}},"418":{"start":{"line":419,"column":0},"end":{"line":419,"column":12}},"419":{"start":{"line":420,"column":0},"end":{"line":420,"column":30}},"420":{"start":{"line":421,"column":0},"end":{"line":421,"column":8}},"421":{"start":{"line":422,"column":0},"end":{"line":422,"column":54}},"422":{"start":{"line":423,"column":0},"end":{"line":423,"column":3}},"423":{"start":{"line":424,"column":0},"end":{"line":424,"column":0}},"424":{"start":{"line":425,"column":0},"end":{"line":425,"column":37}},"425":{"start":{"line":426,"column":0},"end":{"line":426,"column":23}},"426":{"start":{"line":427,"column":0},"end":{"line":427,"column":25}},"427":{"start":{"line":428,"column":0},"end":{"line":428,"column":50}},"428":{"start":{"line":429,"column":0},"end":{"line":429,"column":54}},"429":{"start":{"line":430,"column":0},"end":{"line":430,"column":28}},"430":{"start":{"line":431,"column":0},"end":{"line":431,"column":38}},"431":{"start":{"line":432,"column":0},"end":{"line":432,"column":13}},"432":{"start":{"line":433,"column":0},"end":{"line":433,"column":5}},"433":{"start":{"line":434,"column":0},"end":{"line":434,"column":0}},"434":{"start":{"line":435,"column":0},"end":{"line":435,"column":23}},"435":{"start":{"line":436,"column":0},"end":{"line":436,"column":0}},"436":{"start":{"line":437,"column":0},"end":{"line":437,"column":46}},"437":{"start":{"line":438,"column":0},"end":{"line":438,"column":81}},"438":{"start":{"line":439,"column":0},"end":{"line":439,"column":58}},"439":{"start":{"line":440,"column":0},"end":{"line":440,"column":52}},"440":{"start":{"line":441,"column":0},"end":{"line":441,"column":22}},"441":{"start":{"line":442,"column":0},"end":{"line":442,"column":32}},"442":{"start":{"line":443,"column":0},"end":{"line":443,"column":28}},"443":{"start":{"line":444,"column":0},"end":{"line":444,"column":7}},"444":{"start":{"line":445,"column":0},"end":{"line":445,"column":17}},"445":{"start":{"line":446,"column":0},"end":{"line":446,"column":25}},"446":{"start":{"line":447,"column":0},"end":{"line":447,"column":0}},"447":{"start":{"line":448,"column":0},"end":{"line":448,"column":87}},"448":{"start":{"line":449,"column":0},"end":{"line":449,"column":47}},"449":{"start":{"line":450,"column":0},"end":{"line":450,"column":21}},"450":{"start":{"line":451,"column":0},"end":{"line":451,"column":25}},"451":{"start":{"line":452,"column":0},"end":{"line":452,"column":7}},"452":{"start":{"line":453,"column":0},"end":{"line":453,"column":17}},"453":{"start":{"line":454,"column":0},"end":{"line":454,"column":42}},"454":{"start":{"line":455,"column":0},"end":{"line":455,"column":0}},"455":{"start":{"line":456,"column":0},"end":{"line":456,"column":45}},"456":{"start":{"line":457,"column":0},"end":{"line":457,"column":3}},"457":{"start":{"line":458,"column":0},"end":{"line":458,"column":0}},"458":{"start":{"line":459,"column":0},"end":{"line":459,"column":51}},"459":{"start":{"line":460,"column":0},"end":{"line":460,"column":39}},"460":{"start":{"line":461,"column":0},"end":{"line":461,"column":100}},"461":{"start":{"line":462,"column":0},"end":{"line":462,"column":31}},"462":{"start":{"line":463,"column":0},"end":{"line":463,"column":36}},"463":{"start":{"line":464,"column":0},"end":{"line":464,"column":54}},"464":{"start":{"line":465,"column":0},"end":{"line":465,"column":44}},"465":{"start":{"line":466,"column":0},"end":{"line":466,"column":92}},"466":{"start":{"line":467,"column":0},"end":{"line":467,"column":25}},"467":{"start":{"line":468,"column":0},"end":{"line":468,"column":41}},"468":{"start":{"line":469,"column":0},"end":{"line":469,"column":38}},"469":{"start":{"line":470,"column":0},"end":{"line":470,"column":9}},"470":{"start":{"line":471,"column":0},"end":{"line":471,"column":7}},"471":{"start":{"line":472,"column":0},"end":{"line":472,"column":7}},"472":{"start":{"line":473,"column":0},"end":{"line":473,"column":29}},"473":{"start":{"line":474,"column":0},"end":{"line":474,"column":45}},"474":{"start":{"line":475,"column":0},"end":{"line":475,"column":24}},"475":{"start":{"line":476,"column":0},"end":{"line":476,"column":5}},"476":{"start":{"line":477,"column":0},"end":{"line":477,"column":0}},"477":{"start":{"line":478,"column":0},"end":{"line":478,"column":46}},"478":{"start":{"line":479,"column":0},"end":{"line":479,"column":10}},"479":{"start":{"line":480,"column":0},"end":{"line":480,"column":19}},"480":{"start":{"line":481,"column":0},"end":{"line":481,"column":36}},"481":{"start":{"line":482,"column":0},"end":{"line":482,"column":31}},"482":{"start":{"line":483,"column":0},"end":{"line":483,"column":32}},"483":{"start":{"line":484,"column":0},"end":{"line":484,"column":71}},"484":{"start":{"line":485,"column":0},"end":{"line":485,"column":42}},"485":{"start":{"line":486,"column":0},"end":{"line":486,"column":9}},"486":{"start":{"line":487,"column":0},"end":{"line":487,"column":34}},"487":{"start":{"line":488,"column":0},"end":{"line":488,"column":7}},"488":{"start":{"line":489,"column":0},"end":{"line":489,"column":7}},"489":{"start":{"line":490,"column":0},"end":{"line":490,"column":22}},"490":{"start":{"line":491,"column":0},"end":{"line":491,"column":3}},"491":{"start":{"line":492,"column":0},"end":{"line":492,"column":0}},"492":{"start":{"line":493,"column":0},"end":{"line":493,"column":100}},"493":{"start":{"line":494,"column":0},"end":{"line":494,"column":73}},"494":{"start":{"line":495,"column":0},"end":{"line":495,"column":77}},"495":{"start":{"line":496,"column":0},"end":{"line":496,"column":57}},"496":{"start":{"line":497,"column":0},"end":{"line":497,"column":20}},"497":{"start":{"line":498,"column":0},"end":{"line":498,"column":27}},"498":{"start":{"line":499,"column":0},"end":{"line":499,"column":46}},"499":{"start":{"line":500,"column":0},"end":{"line":500,"column":20}},"500":{"start":{"line":501,"column":0},"end":{"line":501,"column":68}},"501":{"start":{"line":502,"column":0},"end":{"line":502,"column":59}},"502":{"start":{"line":503,"column":0},"end":{"line":503,"column":42}},"503":{"start":{"line":504,"column":0},"end":{"line":504,"column":37}},"504":{"start":{"line":505,"column":0},"end":{"line":505,"column":72}},"505":{"start":{"line":506,"column":0},"end":{"line":506,"column":7}},"506":{"start":{"line":507,"column":0},"end":{"line":507,"column":5}},"507":{"start":{"line":508,"column":0},"end":{"line":508,"column":83}},"508":{"start":{"line":509,"column":0},"end":{"line":509,"column":53}},"509":{"start":{"line":510,"column":0},"end":{"line":510,"column":7}},"510":{"start":{"line":511,"column":0},"end":{"line":511,"column":69}},"511":{"start":{"line":512,"column":0},"end":{"line":512,"column":0}},"512":{"start":{"line":513,"column":0},"end":{"line":513,"column":32}},"513":{"start":{"line":514,"column":0},"end":{"line":514,"column":13}},"514":{"start":{"line":515,"column":0},"end":{"line":515,"column":5}},"515":{"start":{"line":516,"column":0},"end":{"line":516,"column":0}},"516":{"start":{"line":517,"column":0},"end":{"line":517,"column":31}},"517":{"start":{"line":518,"column":0},"end":{"line":518,"column":120}},"518":{"start":{"line":519,"column":0},"end":{"line":519,"column":64}},"519":{"start":{"line":520,"column":0},"end":{"line":520,"column":41}},"520":{"start":{"line":521,"column":0},"end":{"line":521,"column":106}},"521":{"start":{"line":522,"column":0},"end":{"line":522,"column":83}},"522":{"start":{"line":523,"column":0},"end":{"line":523,"column":23}},"523":{"start":{"line":524,"column":0},"end":{"line":524,"column":6}},"524":{"start":{"line":525,"column":0},"end":{"line":525,"column":3}},"525":{"start":{"line":526,"column":0},"end":{"line":526,"column":0}},"526":{"start":{"line":527,"column":0},"end":{"line":527,"column":38}},"527":{"start":{"line":528,"column":0},"end":{"line":528,"column":43}},"528":{"start":{"line":529,"column":0},"end":{"line":529,"column":0}},"529":{"start":{"line":530,"column":0},"end":{"line":530,"column":21}},"530":{"start":{"line":531,"column":0},"end":{"line":531,"column":74}},"531":{"start":{"line":532,"column":0},"end":{"line":532,"column":5}},"532":{"start":{"line":533,"column":0},"end":{"line":533,"column":0}},"533":{"start":{"line":534,"column":0},"end":{"line":534,"column":21}},"534":{"start":{"line":535,"column":0},"end":{"line":535,"column":3}},"535":{"start":{"line":536,"column":0},"end":{"line":536,"column":1}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"38":1,"39":1,"40":1,"41":1,"42":1,"43":1,"44":1,"45":1,"46":1,"47":1,"48":1,"49":1,"50":1,"51":1,"52":1,"53":1,"54":1,"55":38,"56":38,"57":38,"58":38,"59":38,"60":38,"61":38,"62":38,"63":38,"64":38,"65":38,"66":25,"67":25,"68":38,"69":38,"70":18,"71":18,"72":38,"73":1,"74":1,"75":4,"76":4,"77":4,"78":4,"79":1,"80":1,"81":8,"82":8,"83":8,"84":8,"85":3,"86":3,"87":3,"88":3,"89":1,"90":3,"91":1,"92":1,"93":2,"94":2,"95":8,"96":2,"97":2,"98":2,"99":2,"100":0,"101":0,"102":2,"103":2,"104":2,"105":2,"106":2,"107":2,"108":2,"109":2,"110":2,"111":2,"112":2,"113":2,"114":2,"115":2,"116":2,"117":3,"118":3,"119":3,"120":1,"121":1,"122":0,"123":0,"124":1,"125":1,"126":4,"127":4,"128":4,"129":4,"130":4,"131":4,"132":4,"133":4,"134":4,"135":2,"136":2,"137":2,"138":2,"139":0,"140":0,"141":0,"142":2,"143":2,"144":2,"145":2,"146":2,"147":2,"148":4,"149":4,"150":4,"151":4,"152":4,"153":4,"154":4,"155":4,"156":4,"157":4,"158":4,"159":4,"160":4,"161":4,"162":4,"163":4,"164":1,"165":1,"166":3,"167":3,"168":3,"169":3,"170":3,"171":3,"172":3,"173":3,"174":4,"175":4,"176":4,"177":4,"178":4,"179":4,"180":3,"181":3,"182":3,"183":3,"184":1,"185":1,"186":1,"187":1,"188":1,"189":1,"190":1,"191":1,"192":1,"193":1,"194":1,"195":1,"196":1,"197":1,"198":1,"199":1,"200":1,"201":1,"202":1,"203":1,"204":1,"205":3,"206":3,"207":3,"208":1,"209":1,"210":1,"211":1,"212":1,"213":3,"214":1,"215":1,"216":1,"217":0,"218":1,"219":1,"220":1,"221":1,"222":1,"223":0,"224":0,"225":0,"226":0,"227":0,"228":0,"229":0,"230":0,"231":0,"232":0,"233":0,"234":0,"235":1,"236":1,"237":1,"238":1,"239":17,"240":16,"241":16,"242":17,"243":17,"244":17,"245":17,"246":17,"247":17,"248":3,"249":3,"250":17,"251":17,"252":1,"253":1,"254":0,"255":0,"256":0,"257":0,"258":1,"259":1,"260":0,"261":0,"262":0,"263":0,"264":0,"265":0,"266":0,"267":0,"268":1,"269":1,"270":10,"271":10,"272":10,"273":10,"274":10,"275":10,"276":10,"277":10,"278":10,"279":6,"280":6,"281":6,"282":10,"283":6,"284":6,"285":6,"286":10,"287":1,"288":1,"289":0,"290":0,"291":1,"292":1,"293":4,"294":4,"295":1,"296":1,"297":4,"298":4,"299":4,"300":4,"301":4,"302":4,"303":4,"304":4,"305":2,"306":2,"307":2,"308":2,"309":2,"310":2,"311":2,"312":2,"313":2,"314":2,"315":2,"316":2,"317":2,"318":2,"319":2,"320":2,"321":2,"322":2,"323":2,"324":0,"325":0,"326":0,"327":0,"328":0,"329":0,"330":0,"331":0,"332":0,"333":0,"334":2,"335":2,"336":2,"337":2,"338":2,"339":2,"340":2,"341":2,"342":2,"343":2,"344":2,"345":2,"346":4,"347":0,"348":0,"349":0,"350":4,"351":4,"352":4,"353":1,"354":1,"355":1,"356":0,"357":0,"358":0,"359":0,"360":0,"361":0,"362":0,"363":0,"364":0,"365":0,"366":0,"367":0,"368":0,"369":0,"370":0,"371":0,"372":0,"373":0,"374":1,"375":1,"376":1,"377":1,"378":2,"379":2,"380":2,"381":2,"382":2,"383":1,"384":1,"385":1,"386":1,"387":1,"388":1,"389":1,"390":1,"391":1,"392":1,"393":1,"394":1,"395":1,"396":6,"397":6,"398":6,"399":8,"400":2,"401":2,"402":6,"403":6,"404":6,"405":6,"406":6,"407":6,"408":6,"409":6,"410":1,"411":1,"412":5,"413":5,"414":5,"415":5,"416":5,"417":5,"418":6,"419":6,"420":6,"421":6,"422":6,"423":1,"424":1,"425":4,"426":3,"427":3,"428":3,"429":3,"430":3,"431":3,"432":3,"433":1,"434":1,"435":1,"436":1,"437":1,"438":1,"439":1,"440":1,"441":0,"442":0,"443":0,"444":1,"445":1,"446":1,"447":1,"448":2,"449":0,"450":0,"451":0,"452":2,"453":1,"454":1,"455":1,"456":1,"457":1,"458":1,"459":1,"460":1,"461":4,"462":4,"463":4,"464":4,"465":2,"466":2,"467":2,"468":2,"469":2,"470":2,"471":4,"472":4,"473":4,"474":0,"475":0,"476":4,"477":4,"478":4,"479":4,"480":4,"481":2,"482":2,"483":2,"484":2,"485":4,"486":0,"487":0,"488":4,"489":4,"490":4,"491":1,"492":1,"493":1,"494":1,"495":1,"496":2,"497":2,"498":2,"499":2,"500":2,"501":2,"502":2,"503":2,"504":2,"505":2,"506":2,"507":2,"508":0,"509":2,"510":2,"511":2,"512":2,"513":0,"514":0,"515":2,"516":2,"517":2,"518":2,"519":2,"520":2,"521":2,"522":2,"523":2,"524":2,"525":1,"526":1,"527":9,"528":9,"529":9,"530":0,"531":0,"532":9,"533":9,"534":9,"535":1},"branchMap":{"0":{"type":"branch","line":55,"loc":{"start":{"line":55,"column":2},"end":{"line":73,"column":3}},"locations":[{"start":{"line":55,"column":2},"end":{"line":73,"column":3}}]},"1":{"type":"branch","line":66,"loc":{"start":{"line":66,"column":48},"end":{"line":68,"column":5}},"locations":[{"start":{"line":66,"column":48},"end":{"line":68,"column":5}}]},"2":{"type":"branch","line":70,"loc":{"start":{"line":70,"column":57},"end":{"line":72,"column":5}},"locations":[{"start":{"line":70,"column":57},"end":{"line":72,"column":5}}]},"3":{"type":"branch","line":75,"loc":{"start":{"line":75,"column":2},"end":{"line":79,"column":3}},"locations":[{"start":{"line":75,"column":2},"end":{"line":79,"column":3}}]},"4":{"type":"branch","line":81,"loc":{"start":{"line":81,"column":2},"end":{"line":120,"column":3}},"locations":[{"start":{"line":81,"column":2},"end":{"line":120,"column":3}}]},"5":{"type":"branch","line":83,"loc":{"start":{"line":83,"column":45},"end":{"line":83,"column":56}},"locations":[{"start":{"line":83,"column":45},"end":{"line":83,"column":56}}]},"6":{"type":"branch","line":85,"loc":{"start":{"line":85,"column":30},"end":{"line":95,"column":5}},"locations":[{"start":{"line":85,"column":30},"end":{"line":95,"column":5}}]},"7":{"type":"branch","line":89,"loc":{"start":{"line":89,"column":32},"end":{"line":90,"column":74}},"locations":[{"start":{"line":89,"column":32},"end":{"line":90,"column":74}}]},"8":{"type":"branch","line":91,"loc":{"start":{"line":91,"column":8},"end":{"line":93,"column":7}},"locations":[{"start":{"line":91,"column":8},"end":{"line":93,"column":7}}]},"9":{"type":"branch","line":94,"loc":{"start":{"line":94,"column":-1},"end":{"line":95,"column":5}},"locations":[{"start":{"line":94,"column":-1},"end":{"line":95,"column":5}}]},"10":{"type":"branch","line":96,"loc":{"start":{"line":96,"column":-1},"end":{"line":96,"column":32}},"locations":[{"start":{"line":96,"column":-1},"end":{"line":96,"column":32}}]},"11":{"type":"branch","line":96,"loc":{"start":{"line":96,"column":32},"end":{"line":117,"column":5}},"locations":[{"start":{"line":96,"column":32},"end":{"line":117,"column":5}}]},"12":{"type":"branch","line":99,"loc":{"start":{"line":99,"column":34},"end":{"line":99,"column":40}},"locations":[{"start":{"line":99,"column":34},"end":{"line":99,"column":40}}]},"13":{"type":"branch","line":100,"loc":{"start":{"line":100,"column":25},"end":{"line":100,"column":34}},"locations":[{"start":{"line":100,"column":25},"end":{"line":100,"column":34}}]},"14":{"type":"branch","line":100,"loc":{"start":{"line":100,"column":36},"end":{"line":102,"column":7}},"locations":[{"start":{"line":100,"column":36},"end":{"line":102,"column":7}}]},"15":{"type":"branch","line":118,"loc":{"start":{"line":118,"column":-1},"end":{"line":120,"column":3}},"locations":[{"start":{"line":118,"column":-1},"end":{"line":120,"column":3}}]},"16":{"type":"branch","line":126,"loc":{"start":{"line":126,"column":2},"end":{"line":164,"column":3}},"locations":[{"start":{"line":126,"column":2},"end":{"line":164,"column":3}}]},"17":{"type":"branch","line":135,"loc":{"start":{"line":135,"column":45},"end":{"line":148,"column":5}},"locations":[{"start":{"line":135,"column":45},"end":{"line":148,"column":5}}]},"18":{"type":"branch","line":139,"loc":{"start":{"line":139,"column":68},"end":{"line":143,"column":11}},"locations":[{"start":{"line":139,"column":68},"end":{"line":143,"column":11}}]},"19":{"type":"branch","line":158,"loc":{"start":{"line":158,"column":16},"end":{"line":161,"column":5}},"locations":[{"start":{"line":158,"column":16},"end":{"line":161,"column":5}}]},"20":{"type":"branch","line":163,"loc":{"start":{"line":163,"column":41},"end":{"line":163,"column":73}},"locations":[{"start":{"line":163,"column":41},"end":{"line":163,"column":73}}]},"21":{"type":"branch","line":166,"loc":{"start":{"line":166,"column":2},"end":{"line":214,"column":3}},"locations":[{"start":{"line":166,"column":2},"end":{"line":214,"column":3}}]},"22":{"type":"branch","line":184,"loc":{"start":{"line":184,"column":29},"end":{"line":206,"column":29}},"locations":[{"start":{"line":184,"column":29},"end":{"line":206,"column":29}}]},"23":{"type":"branch","line":186,"loc":{"start":{"line":186,"column":26},"end":{"line":186,"column":47}},"locations":[{"start":{"line":186,"column":26},"end":{"line":186,"column":47}}]},"24":{"type":"branch","line":207,"loc":{"start":{"line":207,"column":23},"end":{"line":207,"column":31}},"locations":[{"start":{"line":207,"column":23},"end":{"line":207,"column":31}}]},"25":{"type":"branch","line":209,"loc":{"start":{"line":209,"column":-1},"end":{"line":213,"column":5}},"locations":[{"start":{"line":209,"column":-1},"end":{"line":213,"column":5}}]},"26":{"type":"branch","line":174,"loc":{"start":{"line":174,"column":19},"end":{"line":181,"column":5}},"locations":[{"start":{"line":174,"column":19},"end":{"line":181,"column":5}}]},"27":{"type":"branch","line":204,"loc":{"start":{"line":204,"column":31},"end":{"line":204,"column":107}},"locations":[{"start":{"line":204,"column":31},"end":{"line":204,"column":107}}]},"28":{"type":"branch","line":210,"loc":{"start":{"line":210,"column":25},"end":{"line":210,"column":42}},"locations":[{"start":{"line":210,"column":25},"end":{"line":210,"column":42}}]},"29":{"type":"branch","line":216,"loc":{"start":{"line":216,"column":2},"end":{"line":237,"column":3}},"locations":[{"start":{"line":216,"column":2},"end":{"line":237,"column":3}}]},"30":{"type":"branch","line":217,"loc":{"start":{"line":217,"column":24},"end":{"line":219,"column":11}},"locations":[{"start":{"line":217,"column":24},"end":{"line":219,"column":11}}]},"31":{"type":"branch","line":223,"loc":{"start":{"line":223,"column":7},"end":{"line":235,"column":7}},"locations":[{"start":{"line":223,"column":7},"end":{"line":235,"column":7}}]},"32":{"type":"branch","line":239,"loc":{"start":{"line":239,"column":2},"end":{"line":252,"column":3}},"locations":[{"start":{"line":239,"column":2},"end":{"line":252,"column":3}}]},"33":{"type":"branch","line":240,"loc":{"start":{"line":240,"column":41},"end":{"line":242,"column":5}},"locations":[{"start":{"line":240,"column":41},"end":{"line":242,"column":5}}]},"34":{"type":"branch","line":248,"loc":{"start":{"line":248,"column":28},"end":{"line":248,"column":83}},"locations":[{"start":{"line":248,"column":28},"end":{"line":248,"column":83}}]},"35":{"type":"branch","line":248,"loc":{"start":{"line":248,"column":85},"end":{"line":250,"column":5}},"locations":[{"start":{"line":248,"column":85},"end":{"line":250,"column":5}}]},"36":{"type":"branch","line":270,"loc":{"start":{"line":270,"column":2},"end":{"line":287,"column":3}},"locations":[{"start":{"line":270,"column":2},"end":{"line":287,"column":3}}]},"37":{"type":"branch","line":279,"loc":{"start":{"line":279,"column":31},"end":{"line":282,"column":5}},"locations":[{"start":{"line":279,"column":31},"end":{"line":282,"column":5}}]},"38":{"type":"branch","line":283,"loc":{"start":{"line":283,"column":27},"end":{"line":286,"column":5}},"locations":[{"start":{"line":283,"column":27},"end":{"line":286,"column":5}}]},"39":{"type":"branch","line":293,"loc":{"start":{"line":293,"column":2},"end":{"line":295,"column":3}},"locations":[{"start":{"line":293,"column":2},"end":{"line":295,"column":3}}]},"40":{"type":"branch","line":294,"loc":{"start":{"line":294,"column":46},"end":{"line":294,"column":88}},"locations":[{"start":{"line":294,"column":46},"end":{"line":294,"column":88}}]},"41":{"type":"branch","line":297,"loc":{"start":{"line":297,"column":2},"end":{"line":353,"column":3}},"locations":[{"start":{"line":297,"column":2},"end":{"line":353,"column":3}}]},"42":{"type":"branch","line":300,"loc":{"start":{"line":300,"column":6},"end":{"line":300,"column":49}},"locations":[{"start":{"line":300,"column":6},"end":{"line":300,"column":49}}]},"43":{"type":"branch","line":301,"loc":{"start":{"line":301,"column":6},"end":{"line":301,"column":68}},"locations":[{"start":{"line":301,"column":6},"end":{"line":301,"column":68}}]},"44":{"type":"branch","line":305,"loc":{"start":{"line":305,"column":25},"end":{"line":346,"column":5}},"locations":[{"start":{"line":305,"column":25},"end":{"line":346,"column":5}}]},"45":{"type":"branch","line":324,"loc":{"start":{"line":324,"column":73},"end":{"line":334,"column":9}},"locations":[{"start":{"line":324,"column":73},"end":{"line":334,"column":9}}]},"46":{"type":"branch","line":343,"loc":{"start":{"line":343,"column":41},"end":{"line":344,"column":95}},"locations":[{"start":{"line":343,"column":41},"end":{"line":344,"column":95}}]},"47":{"type":"branch","line":303,"loc":{"start":{"line":303,"column":58},"end":{"line":303,"column":68}},"locations":[{"start":{"line":303,"column":58},"end":{"line":303,"column":68}}]},"48":{"type":"branch","line":376,"loc":{"start":{"line":376,"column":10},"end":{"line":393,"column":3}},"locations":[{"start":{"line":376,"column":10},"end":{"line":393,"column":3}}]},"49":{"type":"branch","line":378,"loc":{"start":{"line":378,"column":61},"end":{"line":384,"column":7}},"locations":[{"start":{"line":378,"column":61},"end":{"line":384,"column":7}}]},"50":{"type":"branch","line":385,"loc":{"start":{"line":385,"column":55},"end":{"line":391,"column":7}},"locations":[{"start":{"line":385,"column":55},"end":{"line":391,"column":7}}]},"51":{"type":"branch","line":396,"loc":{"start":{"line":396,"column":10},"end":{"line":423,"column":3}},"locations":[{"start":{"line":396,"column":10},"end":{"line":423,"column":3}}]},"52":{"type":"branch","line":399,"loc":{"start":{"line":399,"column":36},"end":{"line":421,"column":7}},"locations":[{"start":{"line":399,"column":36},"end":{"line":421,"column":7}}]},"53":{"type":"branch","line":400,"loc":{"start":{"line":400,"column":30},"end":{"line":402,"column":9}},"locations":[{"start":{"line":400,"column":30},"end":{"line":402,"column":9}}]},"54":{"type":"branch","line":403,"loc":{"start":{"line":403,"column":-1},"end":{"line":421,"column":7}},"locations":[{"start":{"line":403,"column":-1},"end":{"line":421,"column":7}}]},"55":{"type":"branch","line":407,"loc":{"start":{"line":407,"column":15},"end":{"line":419,"column":11}},"locations":[{"start":{"line":407,"column":15},"end":{"line":419,"column":11}}]},"56":{"type":"branch","line":410,"loc":{"start":{"line":410,"column":39},"end":{"line":410,"column":100}},"locations":[{"start":{"line":410,"column":39},"end":{"line":410,"column":100}}]},"57":{"type":"branch","line":410,"loc":{"start":{"line":410,"column":102},"end":{"line":412,"column":13}},"locations":[{"start":{"line":410,"column":102},"end":{"line":412,"column":13}}]},"58":{"type":"branch","line":413,"loc":{"start":{"line":413,"column":-1},"end":{"line":419,"column":11}},"locations":[{"start":{"line":413,"column":-1},"end":{"line":419,"column":11}}]},"59":{"type":"branch","line":420,"loc":{"start":{"line":420,"column":18},"end":{"line":420,"column":28}},"locations":[{"start":{"line":420,"column":18},"end":{"line":420,"column":28}}]},"60":{"type":"branch","line":425,"loc":{"start":{"line":425,"column":2},"end":{"line":457,"column":3}},"locations":[{"start":{"line":425,"column":2},"end":{"line":457,"column":3}}]},"61":{"type":"branch","line":426,"loc":{"start":{"line":426,"column":22},"end":{"line":433,"column":5}},"locations":[{"start":{"line":426,"column":22},"end":{"line":433,"column":5}}]},"62":{"type":"branch","line":434,"loc":{"start":{"line":434,"column":-1},"end":{"line":457,"column":3}},"locations":[{"start":{"line":434,"column":-1},"end":{"line":457,"column":3}}]},"63":{"type":"branch","line":438,"loc":{"start":{"line":438,"column":57},"end":{"line":446,"column":5}},"locations":[{"start":{"line":438,"column":57},"end":{"line":446,"column":5}}]},"64":{"type":"branch","line":441,"loc":{"start":{"line":441,"column":21},"end":{"line":444,"column":7}},"locations":[{"start":{"line":441,"column":21},"end":{"line":444,"column":7}}]},"65":{"type":"branch","line":448,"loc":{"start":{"line":448,"column":63},"end":{"line":454,"column":5}},"locations":[{"start":{"line":448,"column":63},"end":{"line":454,"column":5}}]},"66":{"type":"branch","line":449,"loc":{"start":{"line":449,"column":46},"end":{"line":452,"column":7}},"locations":[{"start":{"line":449,"column":46},"end":{"line":452,"column":7}}]},"67":{"type":"branch","line":461,"loc":{"start":{"line":461,"column":10},"end":{"line":491,"column":3}},"locations":[{"start":{"line":461,"column":10},"end":{"line":491,"column":3}}]},"68":{"type":"branch","line":474,"loc":{"start":{"line":474,"column":15},"end":{"line":474,"column":42}},"locations":[{"start":{"line":474,"column":15},"end":{"line":474,"column":42}}]},"69":{"type":"branch","line":474,"loc":{"start":{"line":474,"column":44},"end":{"line":476,"column":5}},"locations":[{"start":{"line":474,"column":44},"end":{"line":476,"column":5}}]},"70":{"type":"branch","line":464,"loc":{"start":{"line":464,"column":38},"end":{"line":472,"column":5}},"locations":[{"start":{"line":464,"column":38},"end":{"line":472,"column":5}}]},"71":{"type":"branch","line":465,"loc":{"start":{"line":465,"column":43},"end":{"line":471,"column":7}},"locations":[{"start":{"line":465,"column":43},"end":{"line":471,"column":7}}]},"72":{"type":"branch","line":466,"loc":{"start":{"line":466,"column":54},"end":{"line":466,"column":65}},"locations":[{"start":{"line":466,"column":54},"end":{"line":466,"column":65}}]},"73":{"type":"branch","line":478,"loc":{"start":{"line":478,"column":26},"end":{"line":489,"column":5}},"locations":[{"start":{"line":478,"column":26},"end":{"line":489,"column":5}}]},"74":{"type":"branch","line":481,"loc":{"start":{"line":481,"column":33},"end":{"line":485,"column":42}},"locations":[{"start":{"line":481,"column":33},"end":{"line":485,"column":42}}]},"75":{"type":"branch","line":484,"loc":{"start":{"line":484,"column":31},"end":{"line":484,"column":67}},"locations":[{"start":{"line":484,"column":31},"end":{"line":484,"column":67}}]},"76":{"type":"branch","line":486,"loc":{"start":{"line":486,"column":8},"end":{"line":488,"column":7}},"locations":[{"start":{"line":486,"column":8},"end":{"line":488,"column":7}}]},"77":{"type":"branch","line":496,"loc":{"start":{"line":496,"column":10},"end":{"line":525,"column":3}},"locations":[{"start":{"line":496,"column":10},"end":{"line":525,"column":3}}]},"78":{"type":"branch","line":513,"loc":{"start":{"line":513,"column":31},"end":{"line":515,"column":5}},"locations":[{"start":{"line":513,"column":31},"end":{"line":515,"column":5}}]},"79":{"type":"branch","line":519,"loc":{"start":{"line":519,"column":58},"end":{"line":520,"column":41}},"locations":[{"start":{"line":519,"column":58},"end":{"line":520,"column":41}}]},"80":{"type":"branch","line":521,"loc":{"start":{"line":521,"column":57},"end":{"line":521,"column":77}},"locations":[{"start":{"line":521,"column":57},"end":{"line":521,"column":77}}]},"81":{"type":"branch","line":527,"loc":{"start":{"line":527,"column":2},"end":{"line":535,"column":3}},"locations":[{"start":{"line":527,"column":2},"end":{"line":535,"column":3}}]},"82":{"type":"branch","line":530,"loc":{"start":{"line":530,"column":20},"end":{"line":532,"column":5}},"locations":[{"start":{"line":530,"column":20},"end":{"line":532,"column":5}}]}},"b":{"0":[38],"1":[25],"2":[18],"3":[4],"4":[8],"5":[5],"6":[3],"7":[1],"8":[1],"9":[2],"10":[5],"11":[2],"12":[0],"13":[0],"14":[0],"15":[3],"16":[4],"17":[2],"18":[0],"19":[4],"20":[4],"21":[3],"22":[1],"23":[0],"24":[1],"25":[1],"26":[4],"27":[2],"28":[1],"29":[1],"30":[0],"31":[0],"32":[17],"33":[16],"34":[5],"35":[3],"36":[10],"37":[6],"38":[6],"39":[4],"40":[3],"41":[4],"42":[1],"43":[3],"44":[2],"45":[0],"46":[0],"47":[4],"48":[1],"49":[2],"50":[1],"51":[6],"52":[8],"53":[2],"54":[6],"55":[6],"56":[2],"57":[1],"58":[5],"59":[6],"60":[4],"61":[3],"62":[1],"63":[1],"64":[0],"65":[2],"66":[0],"67":[4],"68":[0],"69":[0],"70":[4],"71":[2],"72":[0],"73":[4],"74":[2],"75":[0],"76":[0],"77":[2],"78":[0],"79":[2],"80":[2],"81":[9],"82":[0]},"fnMap":{"0":{"name":"CachedModel","decl":{"start":{"line":55,"column":2},"end":{"line":73,"column":3}},"loc":{"start":{"line":55,"column":2},"end":{"line":73,"column":3}},"line":55},"1":{"name":"allCachedIds","decl":{"start":{"line":75,"column":2},"end":{"line":79,"column":3}},"loc":{"start":{"line":75,"column":2},"end":{"line":79,"column":3}},"line":75},"2":{"name":"get","decl":{"start":{"line":81,"column":2},"end":{"line":120,"column":3}},"loc":{"start":{"line":81,"column":2},"end":{"line":120,"column":3}},"line":81},"3":{"name":"addExporterStore","decl":{"start":{"line":122,"column":2},"end":{"line":124,"column":3}},"loc":{"start":{"line":122,"column":2},"end":{"line":124,"column":3}},"line":122},"4":{"name":"getByField","decl":{"start":{"line":126,"column":2},"end":{"line":164,"column":3}},"loc":{"start":{"line":126,"column":2},"end":{"line":164,"column":3}},"line":126},"5":{"name":"getByFields","decl":{"start":{"line":166,"column":2},"end":{"line":214,"column":3}},"loc":{"start":{"line":166,"column":2},"end":{"line":214,"column":3}},"line":166},"6":{"name":"getOneByField","decl":{"start":{"line":216,"column":2},"end":{"line":237,"column":3}},"loc":{"start":{"line":216,"column":2},"end":{"line":237,"column":3}},"line":216},"7":{"name":"set","decl":{"start":{"line":239,"column":2},"end":{"line":252,"column":3}},"loc":{"start":{"line":239,"column":2},"end":{"line":252,"column":3}},"line":239},"8":{"name":"bulkCreate","decl":{"start":{"line":254,"column":2},"end":{"line":258,"column":3}},"loc":{"start":{"line":254,"column":2},"end":{"line":258,"column":3}},"line":254},"9":{"name":"bulkUpdate","decl":{"start":{"line":260,"column":2},"end":{"line":268,"column":3}},"loc":{"start":{"line":260,"column":2},"end":{"line":268,"column":3}},"line":260},"10":{"name":"remove","decl":{"start":{"line":270,"column":2},"end":{"line":287,"column":3}},"loc":{"start":{"line":270,"column":2},"end":{"line":287,"column":3}},"line":270},"11":{"name":"bulkRemove","decl":{"start":{"line":289,"column":2},"end":{"line":291,"column":3}},"loc":{"start":{"line":289,"column":2},"end":{"line":291,"column":3}},"line":289},"12":{"name":"get isFlushable","decl":{"start":{"line":293,"column":2},"end":{"line":295,"column":3}},"loc":{"start":{"line":293,"column":2},"end":{"line":295,"column":3}},"line":293},"13":{"name":"runFlush","decl":{"start":{"line":297,"column":2},"end":{"line":353,"column":3}},"loc":{"start":{"line":297,"column":2},"end":{"line":353,"column":3}},"line":297},"14":{"name":"flushOperation","decl":{"start":{"line":356,"column":2},"end":{"line":374,"column":3}},"loc":{"start":{"line":356,"column":2},"end":{"line":374,"column":3}},"line":356},"15":{"name":"filterRecordsWithHeight","decl":{"start":{"line":376,"column":10},"end":{"line":393,"column":3}},"loc":{"start":{"line":376,"column":10},"end":{"line":393,"column":3}},"line":376},"16":{"name":"applyBlockRange","decl":{"start":{"line":396,"column":10},"end":{"line":423,"column":3}},"loc":{"start":{"line":396,"column":10},"end":{"line":423,"column":3}},"line":396},"17":{"name":"clear","decl":{"start":{"line":425,"column":2},"end":{"line":457,"column":3}},"loc":{"start":{"line":425,"column":2},"end":{"line":457,"column":3}},"line":425},"18":{"name":"getFromCache","decl":{"start":{"line":461,"column":10},"end":{"line":491,"column":3}},"loc":{"start":{"line":461,"column":10},"end":{"line":491,"column":3}},"line":461},"19":{"name":"historicalMarkPreviousHeightRecordsBatch","decl":{"start":{"line":496,"column":10},"end":{"line":525,"column":3}},"loc":{"start":{"line":496,"column":10},"end":{"line":525,"column":3}},"line":496},"20":{"name":"get sequelize","decl":{"start":{"line":527,"column":2},"end":{"line":535,"column":3}},"loc":{"start":{"line":527,"column":2},"end":{"line":535,"column":3}},"line":527}},"f":{"0":38,"1":4,"2":8,"3":0,"4":4,"5":3,"6":1,"7":17,"8":0,"9":0,"10":10,"11":0,"12":4,"13":4,"14":0,"15":1,"16":6,"17":4,"18":4,"19":2,"20":9}},"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/indexer/storeCache/cachePoi.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/indexer/storeCache/cachePoi.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":50}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":41}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":47}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":39}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":50}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":60}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":38}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":44}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":37}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":0}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":91}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":54}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":29}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":39}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":0}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":40}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":12}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":50}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":3}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":0}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":44}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":33}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":42}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":65}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":7}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":37}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":45}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":7}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":43}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":57}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":7}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":38}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":5}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":3}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":0}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":30}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":50}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":3}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":0}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":82}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":77}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":23}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":59}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":24}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":50}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":9}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":7}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":3}},"51":{"start":{"line":52,"column":0},"end":{"line":52,"column":0}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":37}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":23}},"54":{"start":{"line":55,"column":0},"end":{"line":55,"column":25}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":38}},"56":{"start":{"line":57,"column":0},"end":{"line":57,"column":13}},"57":{"start":{"line":58,"column":0},"end":{"line":58,"column":5}},"58":{"start":{"line":59,"column":0},"end":{"line":59,"column":46}},"59":{"start":{"line":60,"column":0},"end":{"line":60,"column":59}},"60":{"start":{"line":61,"column":0},"end":{"line":61,"column":57}},"61":{"start":{"line":62,"column":0},"end":{"line":62,"column":36}},"62":{"start":{"line":63,"column":0},"end":{"line":63,"column":37}},"63":{"start":{"line":64,"column":0},"end":{"line":64,"column":7}},"64":{"start":{"line":65,"column":0},"end":{"line":65,"column":5}},"65":{"start":{"line":66,"column":0},"end":{"line":66,"column":34}},"66":{"start":{"line":67,"column":0},"end":{"line":67,"column":71}},"67":{"start":{"line":68,"column":0},"end":{"line":68,"column":3}},"68":{"start":{"line":69,"column":0},"end":{"line":69,"column":0}},"69":{"start":{"line":70,"column":0},"end":{"line":70,"column":27}},"70":{"start":{"line":71,"column":0},"end":{"line":71,"column":24}},"71":{"start":{"line":72,"column":0},"end":{"line":72,"column":59}},"72":{"start":{"line":73,"column":0},"end":{"line":73,"column":30}},"73":{"start":{"line":74,"column":0},"end":{"line":74,"column":37}},"74":{"start":{"line":75,"column":0},"end":{"line":75,"column":0}},"75":{"start":{"line":76,"column":0},"end":{"line":76,"column":66}},"76":{"start":{"line":77,"column":0},"end":{"line":77,"column":53}},"77":{"start":{"line":78,"column":0},"end":{"line":78,"column":34}},"78":{"start":{"line":79,"column":0},"end":{"line":79,"column":79}},"79":{"start":{"line":80,"column":0},"end":{"line":80,"column":31}},"80":{"start":{"line":81,"column":0},"end":{"line":81,"column":0}},"81":{"start":{"line":82,"column":0},"end":{"line":82,"column":43}},"82":{"start":{"line":83,"column":0},"end":{"line":83,"column":68}},"83":{"start":{"line":84,"column":0},"end":{"line":84,"column":0}},"84":{"start":{"line":85,"column":0},"end":{"line":85,"column":67}},"85":{"start":{"line":86,"column":0},"end":{"line":86,"column":32}},"86":{"start":{"line":87,"column":0},"end":{"line":87,"column":26}},"87":{"start":{"line":88,"column":0},"end":{"line":88,"column":5}},"88":{"start":{"line":89,"column":0},"end":{"line":89,"column":0}},"89":{"start":{"line":90,"column":0},"end":{"line":90,"column":93}},"90":{"start":{"line":91,"column":0},"end":{"line":91,"column":0}},"91":{"start":{"line":92,"column":0},"end":{"line":92,"column":45}},"92":{"start":{"line":93,"column":0},"end":{"line":93,"column":3}},"93":{"start":{"line":94,"column":0},"end":{"line":94,"column":1}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":5,"20":5,"21":5,"22":1,"23":1,"24":8,"25":27,"26":27,"27":27,"28":27,"29":0,"30":0,"31":27,"32":0,"33":0,"34":27,"35":27,"36":8,"37":1,"38":1,"39":0,"40":0,"41":1,"42":1,"43":3,"44":3,"45":3,"46":3,"47":3,"48":3,"49":3,"50":3,"51":1,"52":1,"53":5,"54":4,"55":4,"56":4,"57":4,"58":1,"59":1,"60":5,"61":3,"62":1,"63":1,"64":3,"65":1,"66":1,"67":1,"68":1,"69":1,"70":3,"71":3,"72":3,"73":3,"74":3,"75":3,"76":3,"77":3,"78":3,"79":3,"80":3,"81":3,"82":3,"83":3,"84":3,"85":3,"86":1,"87":1,"88":2,"89":2,"90":2,"91":2,"92":2,"93":1},"branchMap":{"0":{"type":"branch","line":19,"loc":{"start":{"line":19,"column":2},"end":{"line":22,"column":3}},"locations":[{"start":{"line":19,"column":2},"end":{"line":22,"column":3}}]},"1":{"type":"branch","line":24,"loc":{"start":{"line":24,"column":2},"end":{"line":37,"column":3}},"locations":[{"start":{"line":24,"column":2},"end":{"line":37,"column":3}}]},"2":{"type":"branch","line":25,"loc":{"start":{"line":25,"column":32},"end":{"line":36,"column":5}},"locations":[{"start":{"line":25,"column":32},"end":{"line":36,"column":5}}]},"3":{"type":"branch","line":29,"loc":{"start":{"line":29,"column":36},"end":{"line":31,"column":7}},"locations":[{"start":{"line":29,"column":36},"end":{"line":31,"column":7}}]},"4":{"type":"branch","line":32,"loc":{"start":{"line":32,"column":42},"end":{"line":34,"column":7}},"locations":[{"start":{"line":32,"column":42},"end":{"line":34,"column":7}}]},"5":{"type":"branch","line":43,"loc":{"start":{"line":43,"column":12},"end":{"line":51,"column":3}},"locations":[{"start":{"line":43,"column":12},"end":{"line":51,"column":3}}]},"6":{"type":"branch","line":53,"loc":{"start":{"line":53,"column":2},"end":{"line":68,"column":3}},"locations":[{"start":{"line":53,"column":2},"end":{"line":68,"column":3}}]},"7":{"type":"branch","line":54,"loc":{"start":{"line":54,"column":22},"end":{"line":58,"column":5}},"locations":[{"start":{"line":54,"column":22},"end":{"line":58,"column":5}}]},"8":{"type":"branch","line":59,"loc":{"start":{"line":59,"column":-1},"end":{"line":61,"column":56}},"locations":[{"start":{"line":59,"column":-1},"end":{"line":61,"column":56}}]},"9":{"type":"branch","line":61,"loc":{"start":{"line":61,"column":56},"end":{"line":65,"column":5}},"locations":[{"start":{"line":61,"column":56},"end":{"line":65,"column":5}}]},"10":{"type":"branch","line":62,"loc":{"start":{"line":62,"column":35},"end":{"line":64,"column":7}},"locations":[{"start":{"line":62,"column":35},"end":{"line":64,"column":7}}]},"11":{"type":"branch","line":66,"loc":{"start":{"line":66,"column":-1},"end":{"line":68,"column":3}},"locations":[{"start":{"line":66,"column":-1},"end":{"line":68,"column":3}}]},"12":{"type":"branch","line":70,"loc":{"start":{"line":70,"column":2},"end":{"line":93,"column":3}},"locations":[{"start":{"line":70,"column":2},"end":{"line":93,"column":3}}]},"13":{"type":"branch","line":86,"loc":{"start":{"line":86,"column":31},"end":{"line":88,"column":5}},"locations":[{"start":{"line":86,"column":31},"end":{"line":88,"column":5}}]},"14":{"type":"branch","line":89,"loc":{"start":{"line":89,"column":-1},"end":{"line":93,"column":3}},"locations":[{"start":{"line":89,"column":-1},"end":{"line":93,"column":3}}]},"15":{"type":"branch","line":78,"loc":{"start":{"line":78,"column":12},"end":{"line":78,"column":33}},"locations":[{"start":{"line":78,"column":12},"end":{"line":78,"column":33}}]},"16":{"type":"branch","line":79,"loc":{"start":{"line":79,"column":14},"end":{"line":79,"column":78}},"locations":[{"start":{"line":79,"column":14},"end":{"line":79,"column":78}}]},"17":{"type":"branch","line":79,"loc":{"start":{"line":79,"column":44},"end":{"line":79,"column":78}},"locations":[{"start":{"line":79,"column":44},"end":{"line":79,"column":78}}]}},"b":{"0":[5],"1":[8],"2":[27],"3":[0],"4":[0],"5":[3],"6":[5],"7":[4],"8":[1],"9":[3],"10":[1],"11":[1],"12":[3],"13":[1],"14":[2],"15":[6],"16":[9],"17":[4]},"fnMap":{"0":{"name":"CachePoiModel","decl":{"start":{"line":19,"column":2},"end":{"line":22,"column":3}},"loc":{"start":{"line":19,"column":2},"end":{"line":22,"column":3}},"line":19},"1":{"name":"bulkUpsert","decl":{"start":{"line":24,"column":2},"end":{"line":37,"column":3}},"loc":{"start":{"line":24,"column":2},"end":{"line":37,"column":3}},"line":24},"2":{"name":"get isFlushable","decl":{"start":{"line":39,"column":2},"end":{"line":41,"column":3}},"loc":{"start":{"line":39,"column":2},"end":{"line":41,"column":3}},"line":39},"3":{"name":"runFlush","decl":{"start":{"line":43,"column":12},"end":{"line":51,"column":3}},"loc":{"start":{"line":43,"column":12},"end":{"line":51,"column":3}},"line":43},"4":{"name":"clear","decl":{"start":{"line":53,"column":2},"end":{"line":68,"column":3}},"loc":{"start":{"line":53,"column":2},"end":{"line":68,"column":3}},"line":53},"5":{"name":"getPoiBlocksBefore","decl":{"start":{"line":70,"column":2},"end":{"line":93,"column":3}},"loc":{"start":{"line":70,"column":2},"end":{"line":93,"column":3}},"line":70}},"f":{"0":5,"1":8,"2":0,"3":3,"4":5,"5":3}},"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/indexer/storeCache/cacheable.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/indexer/storeCache/cacheable.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":47}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":34}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":0}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":33}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":32}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":0}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":45}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":84}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":0}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":69}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":47}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":0}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":9}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":28}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":18}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":9}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":0}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":58}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":0}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":63}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":57}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":30}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":25}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":17}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":16}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":14}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":5}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":3}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":1}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":23,"7":23,"8":23,"9":23,"10":23,"11":23,"12":23,"13":56,"14":56,"15":56,"16":56,"17":56,"18":56,"19":56,"20":56,"21":56,"22":56,"23":56,"24":56,"25":56,"26":56,"27":0,"28":0,"29":0,"30":56,"31":23},"branchMap":{"0":{"type":"branch","line":7,"loc":{"start":{"line":7,"column":0},"end":{"line":32,"column":1}},"locations":[{"start":{"line":7,"column":0},"end":{"line":32,"column":1}}]},"1":{"type":"branch","line":13,"loc":{"start":{"line":13,"column":2},"end":{"line":31,"column":3}},"locations":[{"start":{"line":13,"column":2},"end":{"line":31,"column":3}}]},"2":{"type":"branch","line":27,"loc":{"start":{"line":27,"column":6},"end":{"line":30,"column":5}},"locations":[{"start":{"line":27,"column":6},"end":{"line":30,"column":5}}]},"3":{"type":"branch","line":17,"loc":{"start":{"line":17,"column":21},"end":{"line":19,"column":7}},"locations":[{"start":{"line":17,"column":21},"end":{"line":19,"column":7}}]}},"b":{"0":[23],"1":[56],"2":[0],"3":[56]},"fnMap":{"0":{"name":"Cacheable","decl":{"start":{"line":7,"column":0},"end":{"line":32,"column":1}},"loc":{"start":{"line":7,"column":0},"end":{"line":32,"column":1}},"line":7},"1":{"name":"flush","decl":{"start":{"line":13,"column":2},"end":{"line":31,"column":3}},"loc":{"start":{"line":13,"column":2},"end":{"line":31,"column":3}},"line":13}},"f":{"0":23,"1":56}},"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/indexer/storeCache/csvStore.service.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/indexer/storeCache/csvStore.service.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":33}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":24}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":53}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":39}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":33}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":0}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":37}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":50}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":30}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":39}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":47}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":0}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":70}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":81}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":0}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":86}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":50}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":22}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":7}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":48}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":3}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":0}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":36}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":54}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":38}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":59}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":5}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":51}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":63}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":5}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":0}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":69}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":45}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":20}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":3}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":47}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":22}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":13}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":26}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":25}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":57}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":44}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":20}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":27}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":44}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":14}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":11}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":27}},"51":{"start":{"line":52,"column":0},"end":{"line":52,"column":10}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":21}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":51}},"54":{"start":{"line":55,"column":0},"end":{"line":55,"column":54}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":26}},"56":{"start":{"line":57,"column":0},"end":{"line":57,"column":30}},"57":{"start":{"line":58,"column":0},"end":{"line":58,"column":22}},"58":{"start":{"line":59,"column":0},"end":{"line":59,"column":35}},"59":{"start":{"line":60,"column":0},"end":{"line":60,"column":15}},"60":{"start":{"line":61,"column":0},"end":{"line":61,"column":15}},"61":{"start":{"line":62,"column":0},"end":{"line":62,"column":13}},"62":{"start":{"line":63,"column":0},"end":{"line":63,"column":10}},"63":{"start":{"line":64,"column":0},"end":{"line":64,"column":6}},"64":{"start":{"line":65,"column":0},"end":{"line":65,"column":3}},"65":{"start":{"line":66,"column":0},"end":{"line":66,"column":0}},"66":{"start":{"line":67,"column":0},"end":{"line":67,"column":35}},"67":{"start":{"line":68,"column":0},"end":{"line":68,"column":37}},"68":{"start":{"line":69,"column":0},"end":{"line":69,"column":45}},"69":{"start":{"line":70,"column":0},"end":{"line":70,"column":66}},"70":{"start":{"line":71,"column":0},"end":{"line":71,"column":18}},"71":{"start":{"line":72,"column":0},"end":{"line":72,"column":9}},"72":{"start":{"line":73,"column":0},"end":{"line":73,"column":0}},"73":{"start":{"line":74,"column":0},"end":{"line":74,"column":33}},"74":{"start":{"line":75,"column":0},"end":{"line":75,"column":56}},"75":{"start":{"line":76,"column":0},"end":{"line":76,"column":7}},"76":{"start":{"line":77,"column":0},"end":{"line":77,"column":3}},"77":{"start":{"line":78,"column":0},"end":{"line":78,"column":1}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":2,"17":2,"18":2,"19":0,"20":0,"21":2,"22":2,"23":2,"24":1,"25":1,"26":2,"27":2,"28":0,"29":0,"30":2,"31":0,"32":0,"33":2,"34":2,"35":2,"36":2,"37":2,"38":1,"39":3,"40":3,"41":3,"42":3,"43":3,"44":3,"45":2,"46":2,"47":2,"48":2,"49":2,"50":1,"51":3,"52":3,"53":3,"54":3,"55":3,"56":0,"57":3,"58":3,"59":3,"60":3,"61":3,"62":3,"63":3,"64":3,"65":1,"66":1,"67":2,"68":2,"69":2,"70":2,"71":2,"72":2,"73":2,"74":2,"75":2,"76":2,"77":1},"branchMap":{"0":{"type":"branch","line":16,"loc":{"start":{"line":16,"column":2},"end":{"line":24,"column":3}},"locations":[{"start":{"line":16,"column":2},"end":{"line":24,"column":3}}]},"1":{"type":"branch","line":26,"loc":{"start":{"line":26,"column":10},"end":{"line":38,"column":3}},"locations":[{"start":{"line":26,"column":10},"end":{"line":38,"column":3}}]},"2":{"type":"branch","line":28,"loc":{"start":{"line":28,"column":37},"end":{"line":30,"column":5}},"locations":[{"start":{"line":28,"column":37},"end":{"line":30,"column":5}}]},"3":{"type":"branch","line":31,"loc":{"start":{"line":31,"column":50},"end":{"line":33,"column":5}},"locations":[{"start":{"line":31,"column":50},"end":{"line":33,"column":5}}]},"4":{"type":"branch","line":39,"loc":{"start":{"line":39,"column":2},"end":{"line":65,"column":3}},"locations":[{"start":{"line":39,"column":2},"end":{"line":65,"column":3}}]},"5":{"type":"branch","line":42,"loc":{"start":{"line":42,"column":13},"end":{"line":52,"column":9}},"locations":[{"start":{"line":42,"column":13},"end":{"line":52,"column":9}}]},"6":{"type":"branch","line":45,"loc":{"start":{"line":45,"column":43},"end":{"line":50,"column":11}},"locations":[{"start":{"line":45,"column":43},"end":{"line":50,"column":11}}]},"7":{"type":"branch","line":51,"loc":{"start":{"line":51,"column":-1},"end":{"line":52,"column":9}},"locations":[{"start":{"line":51,"column":-1},"end":{"line":52,"column":9}}]},"8":{"type":"branch","line":53,"loc":{"start":{"line":53,"column":13},"end":{"line":63,"column":9}},"locations":[{"start":{"line":53,"column":13},"end":{"line":63,"column":9}}]},"9":{"type":"branch","line":54,"loc":{"start":{"line":54,"column":29},"end":{"line":62,"column":11}},"locations":[{"start":{"line":54,"column":29},"end":{"line":62,"column":11}}]},"10":{"type":"branch","line":55,"loc":{"start":{"line":55,"column":42},"end":{"line":61,"column":13}},"locations":[{"start":{"line":55,"column":42},"end":{"line":61,"column":13}}]},"11":{"type":"branch","line":56,"loc":{"start":{"line":56,"column":25},"end":{"line":58,"column":21}},"locations":[{"start":{"line":56,"column":25},"end":{"line":58,"column":21}}]},"12":{"type":"branch","line":67,"loc":{"start":{"line":67,"column":2},"end":{"line":77,"column":3}},"locations":[{"start":{"line":67,"column":2},"end":{"line":77,"column":3}}]},"13":{"type":"branch","line":68,"loc":{"start":{"line":68,"column":23},"end":{"line":76,"column":5}},"locations":[{"start":{"line":68,"column":23},"end":{"line":76,"column":5}}]},"14":{"type":"branch","line":69,"loc":{"start":{"line":69,"column":38},"end":{"line":72,"column":7}},"locations":[{"start":{"line":69,"column":38},"end":{"line":72,"column":7}}]}},"b":{"0":[2],"1":[2],"2":[0],"3":[0],"4":[3],"5":[3],"6":[2],"7":[1],"8":[3],"9":[3],"10":[3],"11":[0],"12":[2],"13":[2],"14":[2]},"fnMap":{"0":{"name":"CsvStoreService","decl":{"start":{"line":16,"column":2},"end":{"line":24,"column":3}},"loc":{"start":{"line":16,"column":2},"end":{"line":24,"column":3}},"line":16},"1":{"name":"getCsvFilePath","decl":{"start":{"line":26,"column":10},"end":{"line":38,"column":3}},"loc":{"start":{"line":26,"column":10},"end":{"line":38,"column":3}},"line":26},"2":{"name":"export","decl":{"start":{"line":39,"column":2},"end":{"line":65,"column":3}},"loc":{"start":{"line":39,"column":2},"end":{"line":65,"column":3}},"line":39},"3":{"name":"shutdown","decl":{"start":{"line":67,"column":2},"end":{"line":77,"column":3}},"loc":{"start":{"line":67,"column":2},"end":{"line":77,"column":3}},"line":67}},"f":{"0":2,"1":2,"2":3,"3":2}},"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/indexer/storeCache/index.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/indexer/storeCache/index.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":37}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":24}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":29}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":32}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1},"branchMap":{},"b":{},"fnMap":{},"f":{}},"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/indexer/storeCache/setValueModel.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/indexer/storeCache/setValueModel.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":31}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":33}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":0}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":31}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":47}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":28}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":0}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":73}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":71}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":49}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":7}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":34}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":66}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":52}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":23}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":5}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":3}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":0}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":67}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":43}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":0}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":27}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":74}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":75}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":55}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":60}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":59}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":80}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":24}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":109}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":10}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":14}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":59}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":67}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":55}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":7}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":12}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":53}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":5}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":3}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":0}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":25}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":45}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":16}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":12}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":64}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":67}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":97}},"51":{"start":{"line":52,"column":0},"end":{"line":52,"column":7}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":31}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":5}},"54":{"start":{"line":55,"column":0},"end":{"line":55,"column":3}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":0}},"56":{"start":{"line":57,"column":0},"end":{"line":57,"column":47}},"57":{"start":{"line":58,"column":0},"end":{"line":58,"column":112}},"58":{"start":{"line":59,"column":0},"end":{"line":59,"column":40}},"59":{"start":{"line":60,"column":0},"end":{"line":60,"column":43}},"60":{"start":{"line":61,"column":0},"end":{"line":61,"column":29}},"61":{"start":{"line":62,"column":0},"end":{"line":62,"column":13}},"62":{"start":{"line":63,"column":0},"end":{"line":63,"column":5}},"63":{"start":{"line":64,"column":0},"end":{"line":64,"column":46}},"64":{"start":{"line":65,"column":0},"end":{"line":65,"column":3}},"65":{"start":{"line":66,"column":0},"end":{"line":66,"column":0}},"66":{"start":{"line":67,"column":0},"end":{"line":67,"column":39}},"67":{"start":{"line":68,"column":0},"end":{"line":68,"column":36}},"68":{"start":{"line":69,"column":0},"end":{"line":69,"column":3}},"69":{"start":{"line":70,"column":0},"end":{"line":70,"column":0}},"70":{"start":{"line":71,"column":0},"end":{"line":71,"column":30}},"71":{"start":{"line":72,"column":0},"end":{"line":72,"column":33}},"72":{"start":{"line":73,"column":0},"end":{"line":73,"column":3}},"73":{"start":{"line":74,"column":0},"end":{"line":74,"column":0}},"74":{"start":{"line":75,"column":0},"end":{"line":75,"column":53}},"75":{"start":{"line":76,"column":0},"end":{"line":76,"column":44}},"76":{"start":{"line":77,"column":0},"end":{"line":77,"column":0}},"77":{"start":{"line":78,"column":0},"end":{"line":78,"column":53}},"78":{"start":{"line":79,"column":0},"end":{"line":79,"column":44}},"79":{"start":{"line":80,"column":0},"end":{"line":80,"column":19}},"80":{"start":{"line":81,"column":0},"end":{"line":81,"column":50}},"81":{"start":{"line":82,"column":0},"end":{"line":82,"column":19}},"82":{"start":{"line":83,"column":0},"end":{"line":83,"column":9}},"83":{"start":{"line":84,"column":0},"end":{"line":84,"column":0}},"84":{"start":{"line":85,"column":0},"end":{"line":85,"column":16}},"85":{"start":{"line":86,"column":0},"end":{"line":86,"column":15}},"86":{"start":{"line":87,"column":0},"end":{"line":87,"column":26}},"87":{"start":{"line":88,"column":0},"end":{"line":88,"column":10}},"88":{"start":{"line":89,"column":0},"end":{"line":89,"column":9}},"89":{"start":{"line":90,"column":0},"end":{"line":90,"column":0}},"90":{"start":{"line":91,"column":0},"end":{"line":91,"column":20}},"91":{"start":{"line":92,"column":0},"end":{"line":92,"column":3}},"92":{"start":{"line":93,"column":0},"end":{"line":93,"column":0}},"93":{"start":{"line":94,"column":0},"end":{"line":94,"column":53}},"94":{"start":{"line":95,"column":0},"end":{"line":95,"column":44}},"95":{"start":{"line":96,"column":0},"end":{"line":96,"column":0}},"96":{"start":{"line":97,"column":0},"end":{"line":97,"column":92}},"97":{"start":{"line":98,"column":0},"end":{"line":98,"column":0}},"98":{"start":{"line":99,"column":0},"end":{"line":99,"column":20}},"99":{"start":{"line":100,"column":0},"end":{"line":100,"column":3}},"100":{"start":{"line":101,"column":0},"end":{"line":101,"column":0}},"101":{"start":{"line":102,"column":0},"end":{"line":102,"column":46}},"102":{"start":{"line":103,"column":0},"end":{"line":103,"column":43}},"103":{"start":{"line":104,"column":0},"end":{"line":104,"column":29}},"104":{"start":{"line":105,"column":0},"end":{"line":105,"column":13}},"105":{"start":{"line":106,"column":0},"end":{"line":106,"column":5}},"106":{"start":{"line":107,"column":0},"end":{"line":107,"column":65}},"107":{"start":{"line":108,"column":0},"end":{"line":108,"column":54}},"108":{"start":{"line":109,"column":0},"end":{"line":109,"column":3}},"109":{"start":{"line":110,"column":0},"end":{"line":110,"column":0}},"110":{"start":{"line":111,"column":0},"end":{"line":111,"column":76}},"111":{"start":{"line":112,"column":0},"end":{"line":112,"column":53}},"112":{"start":{"line":113,"column":0},"end":{"line":113,"column":18}},"113":{"start":{"line":114,"column":0},"end":{"line":114,"column":5}},"114":{"start":{"line":115,"column":0},"end":{"line":115,"column":31}},"115":{"start":{"line":116,"column":0},"end":{"line":116,"column":69}},"116":{"start":{"line":117,"column":0},"end":{"line":117,"column":12}},"117":{"start":{"line":118,"column":0},"end":{"line":118,"column":50}},"118":{"start":{"line":119,"column":0},"end":{"line":119,"column":61}},"119":{"start":{"line":120,"column":0},"end":{"line":120,"column":5}},"120":{"start":{"line":121,"column":0},"end":{"line":121,"column":3}},"121":{"start":{"line":122,"column":0},"end":{"line":122,"column":0}},"122":{"start":{"line":123,"column":0},"end":{"line":123,"column":78}},"123":{"start":{"line":124,"column":0},"end":{"line":124,"column":32}},"124":{"start":{"line":125,"column":0},"end":{"line":125,"column":11}},"125":{"start":{"line":126,"column":0},"end":{"line":126,"column":31}},"126":{"start":{"line":127,"column":0},"end":{"line":127,"column":22}},"127":{"start":{"line":128,"column":0},"end":{"line":128,"column":37}},"128":{"start":{"line":129,"column":0},"end":{"line":129,"column":21}},"129":{"start":{"line":130,"column":0},"end":{"line":130,"column":7}},"130":{"start":{"line":131,"column":0},"end":{"line":131,"column":27}},"131":{"start":{"line":132,"column":0},"end":{"line":132,"column":3}},"132":{"start":{"line":133,"column":0},"end":{"line":133,"column":0}},"133":{"start":{"line":134,"column":0},"end":{"line":134,"column":47}},"134":{"start":{"line":135,"column":0},"end":{"line":135,"column":43}},"135":{"start":{"line":136,"column":0},"end":{"line":136,"column":67}},"136":{"start":{"line":137,"column":0},"end":{"line":137,"column":27}},"137":{"start":{"line":138,"column":0},"end":{"line":138,"column":3}},"138":{"start":{"line":139,"column":0},"end":{"line":139,"column":1}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":23,"7":23,"8":23,"9":23,"10":23,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":23,"21":23,"22":22,"23":22,"24":22,"25":5,"26":5,"27":1,"28":1,"29":1,"30":5,"31":0,"32":0,"33":0,"34":4,"35":4,"36":4,"37":4,"38":4,"39":22,"40":17,"41":17,"42":22,"43":23,"44":23,"45":48,"46":17,"47":48,"48":31,"49":31,"50":0,"51":0,"52":31,"53":31,"54":48,"55":23,"56":23,"57":23,"58":23,"59":20,"60":20,"61":0,"62":0,"63":20,"64":20,"65":23,"66":23,"67":2,"68":2,"69":23,"70":23,"71":13,"72":13,"73":23,"74":23,"75":3,"76":3,"77":3,"78":3,"79":3,"80":8,"81":5,"82":5,"83":3,"84":3,"85":3,"86":3,"87":3,"88":3,"89":3,"90":3,"91":3,"92":23,"93":23,"94":3,"95":3,"96":3,"97":3,"98":3,"99":3,"100":23,"101":23,"102":6,"103":6,"104":0,"105":0,"106":6,"107":6,"108":6,"109":23,"110":23,"111":4,"112":0,"113":0,"114":4,"115":0,"116":4,"117":4,"118":4,"119":4,"120":4,"121":23,"122":23,"123":21,"124":21,"125":21,"126":21,"127":21,"128":21,"129":21,"130":21,"131":21,"132":23,"133":23,"134":0,"135":0,"136":0,"137":0,"138":23},"branchMap":{"0":{"type":"branch","line":7,"loc":{"start":{"line":7,"column":0},"end":{"line":139,"column":1}},"locations":[{"start":{"line":7,"column":0},"end":{"line":139,"column":1}}]},"1":{"type":"branch","line":22,"loc":{"start":{"line":22,"column":2},"end":{"line":43,"column":3}},"locations":[{"start":{"line":22,"column":2},"end":{"line":43,"column":3}}]},"2":{"type":"branch","line":25,"loc":{"start":{"line":25,"column":26},"end":{"line":40,"column":11}},"locations":[{"start":{"line":25,"column":26},"end":{"line":40,"column":11}}]},"3":{"type":"branch","line":27,"loc":{"start":{"line":27,"column":74},"end":{"line":31,"column":13}},"locations":[{"start":{"line":27,"column":74},"end":{"line":31,"column":13}}]},"4":{"type":"branch","line":31,"loc":{"start":{"line":31,"column":7},"end":{"line":39,"column":7}},"locations":[{"start":{"line":31,"column":7},"end":{"line":39,"column":7}}]},"5":{"type":"branch","line":31,"loc":{"start":{"line":31,"column":79},"end":{"line":35,"column":13}},"locations":[{"start":{"line":31,"column":79},"end":{"line":35,"column":13}}]},"6":{"type":"branch","line":40,"loc":{"start":{"line":40,"column":5},"end":{"line":42,"column":5}},"locations":[{"start":{"line":40,"column":5},"end":{"line":42,"column":5}}]},"7":{"type":"branch","line":45,"loc":{"start":{"line":45,"column":2},"end":{"line":55,"column":3}},"locations":[{"start":{"line":45,"column":2},"end":{"line":55,"column":3}}]},"8":{"type":"branch","line":46,"loc":{"start":{"line":46,"column":44},"end":{"line":48,"column":11}},"locations":[{"start":{"line":46,"column":44},"end":{"line":48,"column":11}}]},"9":{"type":"branch","line":48,"loc":{"start":{"line":48,"column":5},"end":{"line":54,"column":5}},"locations":[{"start":{"line":48,"column":5},"end":{"line":54,"column":5}}]},"10":{"type":"branch","line":50,"loc":{"start":{"line":50,"column":66},"end":{"line":52,"column":7}},"locations":[{"start":{"line":50,"column":66},"end":{"line":52,"column":7}}]},"11":{"type":"branch","line":51,"loc":{"start":{"line":51,"column":60},"end":{"line":51,"column":95}},"locations":[{"start":{"line":51,"column":60},"end":{"line":51,"column":95}}]},"12":{"type":"branch","line":59,"loc":{"start":{"line":59,"column":2},"end":{"line":65,"column":3}},"locations":[{"start":{"line":59,"column":2},"end":{"line":65,"column":3}}]},"13":{"type":"branch","line":61,"loc":{"start":{"line":61,"column":28},"end":{"line":63,"column":5}},"locations":[{"start":{"line":61,"column":28},"end":{"line":63,"column":5}}]},"14":{"type":"branch","line":67,"loc":{"start":{"line":67,"column":2},"end":{"line":69,"column":3}},"locations":[{"start":{"line":67,"column":2},"end":{"line":69,"column":3}}]},"15":{"type":"branch","line":71,"loc":{"start":{"line":71,"column":2},"end":{"line":73,"column":3}},"locations":[{"start":{"line":71,"column":2},"end":{"line":73,"column":3}}]},"16":{"type":"branch","line":75,"loc":{"start":{"line":75,"column":2},"end":{"line":92,"column":3}},"locations":[{"start":{"line":75,"column":2},"end":{"line":92,"column":3}}]},"17":{"type":"branch","line":79,"loc":{"start":{"line":79,"column":14},"end":{"line":79,"column":43}},"locations":[{"start":{"line":79,"column":14},"end":{"line":79,"column":43}}]},"18":{"type":"branch","line":80,"loc":{"start":{"line":80,"column":11},"end":{"line":89,"column":7}},"locations":[{"start":{"line":80,"column":11},"end":{"line":89,"column":7}}]},"19":{"type":"branch","line":81,"loc":{"start":{"line":81,"column":23},"end":{"line":81,"column":47}},"locations":[{"start":{"line":81,"column":23},"end":{"line":81,"column":47}}]},"20":{"type":"branch","line":81,"loc":{"start":{"line":81,"column":49},"end":{"line":83,"column":9}},"locations":[{"start":{"line":81,"column":49},"end":{"line":83,"column":9}}]},"21":{"type":"branch","line":84,"loc":{"start":{"line":84,"column":-1},"end":{"line":89,"column":7}},"locations":[{"start":{"line":84,"column":-1},"end":{"line":89,"column":7}}]},"22":{"type":"branch","line":94,"loc":{"start":{"line":94,"column":2},"end":{"line":100,"column":3}},"locations":[{"start":{"line":94,"column":2},"end":{"line":100,"column":3}}]},"23":{"type":"branch","line":97,"loc":{"start":{"line":97,"column":61},"end":{"line":97,"column":90}},"locations":[{"start":{"line":97,"column":61},"end":{"line":97,"column":90}}]},"24":{"type":"branch","line":102,"loc":{"start":{"line":102,"column":2},"end":{"line":109,"column":3}},"locations":[{"start":{"line":102,"column":2},"end":{"line":109,"column":3}}]},"25":{"type":"branch","line":104,"loc":{"start":{"line":104,"column":28},"end":{"line":106,"column":5}},"locations":[{"start":{"line":104,"column":28},"end":{"line":106,"column":5}}]},"26":{"type":"branch","line":111,"loc":{"start":{"line":111,"column":2},"end":{"line":121,"column":3}},"locations":[{"start":{"line":111,"column":2},"end":{"line":121,"column":3}}]},"27":{"type":"branch","line":112,"loc":{"start":{"line":112,"column":52},"end":{"line":114,"column":5}},"locations":[{"start":{"line":112,"column":52},"end":{"line":114,"column":5}}]},"28":{"type":"branch","line":115,"loc":{"start":{"line":115,"column":30},"end":{"line":117,"column":11}},"locations":[{"start":{"line":115,"column":30},"end":{"line":117,"column":11}}]},"29":{"type":"branch","line":118,"loc":{"start":{"line":118,"column":37},"end":{"line":118,"column":50}},"locations":[{"start":{"line":118,"column":37},"end":{"line":118,"column":50}}]},"30":{"type":"branch","line":119,"loc":{"start":{"line":119,"column":-1},"end":{"line":119,"column":52}},"locations":[{"start":{"line":119,"column":-1},"end":{"line":119,"column":52}}]},"31":{"type":"branch","line":123,"loc":{"start":{"line":123,"column":10},"end":{"line":132,"column":3}},"locations":[{"start":{"line":123,"column":10},"end":{"line":132,"column":3}}]}},"b":{"0":[23],"1":[22],"2":[5],"3":[1],"4":[4],"5":[0],"6":[17],"7":[48],"8":[17],"9":[31],"10":[0],"11":[4],"12":[20],"13":[0],"14":[2],"15":[13],"16":[3],"17":[11],"18":[8],"19":[6],"20":[5],"21":[3],"22":[3],"23":[11],"24":[6],"25":[0],"26":[4],"27":[0],"28":[0],"29":[1],"30":[3],"31":[21]},"fnMap":{"0":{"name":"SetValueModel","decl":{"start":{"line":7,"column":0},"end":{"line":139,"column":1}},"loc":{"start":{"line":7,"column":0},"end":{"line":139,"column":1}},"line":7},"1":{"name":"popRecordWithOpIndex","decl":{"start":{"line":11,"column":2},"end":{"line":20,"column":3}},"loc":{"start":{"line":11,"column":2},"end":{"line":20,"column":3}},"line":11},"2":{"name":"set","decl":{"start":{"line":22,"column":2},"end":{"line":43,"column":3}},"loc":{"start":{"line":22,"column":2},"end":{"line":43,"column":3}},"line":22},"3":{"name":"latestIndex","decl":{"start":{"line":45,"column":2},"end":{"line":55,"column":3}},"loc":{"start":{"line":45,"column":2},"end":{"line":55,"column":3}},"line":45},"4":{"name":"getLatest","decl":{"start":{"line":59,"column":2},"end":{"line":65,"column":3}},"loc":{"start":{"line":59,"column":2},"end":{"line":65,"column":3}},"line":59},"5":{"name":"getFirst","decl":{"start":{"line":67,"column":2},"end":{"line":69,"column":3}},"loc":{"start":{"line":67,"column":2},"end":{"line":69,"column":3}},"line":67},"6":{"name":"getValues","decl":{"start":{"line":71,"column":2},"end":{"line":73,"column":3}},"loc":{"start":{"line":71,"column":2},"end":{"line":73,"column":3}},"line":71},"7":{"name":"fromBelowHeight","decl":{"start":{"line":75,"column":2},"end":{"line":92,"column":3}},"loc":{"start":{"line":75,"column":2},"end":{"line":92,"column":3}},"line":75},"8":{"name":"fromAboveHeight","decl":{"start":{"line":94,"column":2},"end":{"line":100,"column":3}},"loc":{"start":{"line":94,"column":2},"end":{"line":100,"column":3}},"line":94},"9":{"name":"markAsRemoved","decl":{"start":{"line":102,"column":2},"end":{"line":109,"column":3}},"loc":{"start":{"line":102,"column":2},"end":{"line":109,"column":3}},"line":102},"10":{"name":"isMatchData","decl":{"start":{"line":111,"column":2},"end":{"line":121,"column":3}},"loc":{"start":{"line":111,"column":2},"end":{"line":121,"column":3}},"line":111},"11":{"name":"create","decl":{"start":{"line":123,"column":10},"end":{"line":132,"column":3}},"loc":{"start":{"line":123,"column":10},"end":{"line":132,"column":3}},"line":123},"12":{"name":"deleteFromHistorical","decl":{"start":{"line":134,"column":10},"end":{"line":138,"column":3}},"loc":{"start":{"line":134,"column":10},"end":{"line":138,"column":3}},"line":134}},"f":{"0":23,"1":0,"2":22,"3":48,"4":20,"5":2,"6":13,"7":3,"8":3,"9":6,"10":4,"11":21,"12":0}},"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/indexer/storeCache/storeCache.service.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/indexer/storeCache/storeCache.service.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":28}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":42}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":52}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":98}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":27}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":43}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":42}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":39}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":40}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":50}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":53}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":51}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":41}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":41}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":51}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":68}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":0}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":46}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":0}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":13}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":57}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":65}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":38}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":28}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":47}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":43}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":29}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":36}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":35}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":41}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":29}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":35}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":0}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":112}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":24}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":58}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":55}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":35}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":0}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":58}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":90}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":22}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":5}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":3}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":0}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":95}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":42}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":34}},"51":{"start":{"line":52,"column":0},"end":{"line":52,"column":29}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":23}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":3}},"54":{"start":{"line":55,"column":0},"end":{"line":55,"column":0}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":40}},"56":{"start":{"line":57,"column":0},"end":{"line":57,"column":35}},"57":{"start":{"line":58,"column":0},"end":{"line":58,"column":37}},"58":{"start":{"line":59,"column":0},"end":{"line":59,"column":3}},"59":{"start":{"line":60,"column":0},"end":{"line":60,"column":0}},"60":{"start":{"line":61,"column":0},"end":{"line":61,"column":48}},"61":{"start":{"line":62,"column":0},"end":{"line":62,"column":33}},"62":{"start":{"line":63,"column":0},"end":{"line":63,"column":61}},"63":{"start":{"line":64,"column":0},"end":{"line":64,"column":5}},"64":{"start":{"line":65,"column":0},"end":{"line":65,"column":28}},"65":{"start":{"line":66,"column":0},"end":{"line":66,"column":56}},"66":{"start":{"line":67,"column":0},"end":{"line":67,"column":5}},"67":{"start":{"line":68,"column":0},"end":{"line":68,"column":37}},"68":{"start":{"line":69,"column":0},"end":{"line":69,"column":59}},"69":{"start":{"line":70,"column":0},"end":{"line":70,"column":5}},"70":{"start":{"line":71,"column":0},"end":{"line":71,"column":67}},"71":{"start":{"line":72,"column":0},"end":{"line":72,"column":3}},"72":{"start":{"line":73,"column":0},"end":{"line":73,"column":0}},"73":{"start":{"line":74,"column":0},"end":{"line":74,"column":61}},"74":{"start":{"line":75,"column":0},"end":{"line":75,"column":51}},"75":{"start":{"line":76,"column":0},"end":{"line":76,"column":52}},"76":{"start":{"line":77,"column":0},"end":{"line":77,"column":40}},"77":{"start":{"line":78,"column":0},"end":{"line":78,"column":12}},"78":{"start":{"line":79,"column":0},"end":{"line":79,"column":23}},"79":{"start":{"line":80,"column":0},"end":{"line":80,"column":18}},"80":{"start":{"line":81,"column":0},"end":{"line":81,"column":49}},"81":{"start":{"line":82,"column":0},"end":{"line":82,"column":34}},"82":{"start":{"line":83,"column":0},"end":{"line":83,"column":26}},"83":{"start":{"line":84,"column":0},"end":{"line":84,"column":6}},"84":{"start":{"line":85,"column":0},"end":{"line":85,"column":32}},"85":{"start":{"line":86,"column":0},"end":{"line":86,"column":83}},"86":{"start":{"line":87,"column":0},"end":{"line":87,"column":51}},"87":{"start":{"line":88,"column":0},"end":{"line":88,"column":5}},"88":{"start":{"line":89,"column":0},"end":{"line":89,"column":0}},"89":{"start":{"line":90,"column":0},"end":{"line":90,"column":23}},"90":{"start":{"line":91,"column":0},"end":{"line":91,"column":3}},"91":{"start":{"line":92,"column":0},"end":{"line":92,"column":0}},"92":{"start":{"line":93,"column":0},"end":{"line":93,"column":79}},"93":{"start":{"line":94,"column":0},"end":{"line":94,"column":48}},"94":{"start":{"line":95,"column":0},"end":{"line":95,"column":37}},"95":{"start":{"line":96,"column":0},"end":{"line":96,"column":3}},"96":{"start":{"line":97,"column":0},"end":{"line":97,"column":0}},"97":{"start":{"line":98,"column":0},"end":{"line":98,"column":44}},"98":{"start":{"line":99,"column":0},"end":{"line":99,"column":61}},"99":{"start":{"line":100,"column":0},"end":{"line":100,"column":3}},"100":{"start":{"line":101,"column":0},"end":{"line":101,"column":50}},"101":{"start":{"line":102,"column":0},"end":{"line":102,"column":27}},"102":{"start":{"line":103,"column":0},"end":{"line":103,"column":59}},"103":{"start":{"line":104,"column":0},"end":{"line":104,"column":7}},"104":{"start":{"line":105,"column":0},"end":{"line":105,"column":3}},"105":{"start":{"line":106,"column":0},"end":{"line":106,"column":38}},"106":{"start":{"line":107,"column":0},"end":{"line":107,"column":31}},"107":{"start":{"line":108,"column":0},"end":{"line":108,"column":37}},"108":{"start":{"line":109,"column":0},"end":{"line":109,"column":31}},"109":{"start":{"line":110,"column":0},"end":{"line":110,"column":75}},"110":{"start":{"line":111,"column":0},"end":{"line":111,"column":7}},"111":{"start":{"line":112,"column":0},"end":{"line":112,"column":76}},"112":{"start":{"line":113,"column":0},"end":{"line":113,"column":5}},"113":{"start":{"line":114,"column":0},"end":{"line":114,"column":70}},"114":{"start":{"line":115,"column":0},"end":{"line":115,"column":3}},"115":{"start":{"line":116,"column":0},"end":{"line":116,"column":0}},"116":{"start":{"line":117,"column":0},"end":{"line":117,"column":35}},"117":{"start":{"line":118,"column":0},"end":{"line":118,"column":26}},"118":{"start":{"line":119,"column":0},"end":{"line":119,"column":37}},"119":{"start":{"line":120,"column":0},"end":{"line":120,"column":26}},"120":{"start":{"line":121,"column":0},"end":{"line":121,"column":20}},"121":{"start":{"line":122,"column":0},"end":{"line":122,"column":73}},"122":{"start":{"line":123,"column":0},"end":{"line":123,"column":7}},"123":{"start":{"line":124,"column":0},"end":{"line":124,"column":66}},"124":{"start":{"line":125,"column":0},"end":{"line":125,"column":5}},"125":{"start":{"line":126,"column":0},"end":{"line":126,"column":0}},"126":{"start":{"line":127,"column":0},"end":{"line":127,"column":65}},"127":{"start":{"line":128,"column":0},"end":{"line":128,"column":3}},"128":{"start":{"line":129,"column":0},"end":{"line":129,"column":0}},"129":{"start":{"line":130,"column":0},"end":{"line":130,"column":118}},"130":{"start":{"line":131,"column":0},"end":{"line":131,"column":78}},"131":{"start":{"line":132,"column":0},"end":{"line":132,"column":70}},"132":{"start":{"line":133,"column":0},"end":{"line":133,"column":61}},"133":{"start":{"line":134,"column":0},"end":{"line":134,"column":0}},"134":{"start":{"line":135,"column":0},"end":{"line":135,"column":51}},"135":{"start":{"line":136,"column":0},"end":{"line":136,"column":74}},"136":{"start":{"line":137,"column":0},"end":{"line":137,"column":69}},"137":{"start":{"line":138,"column":0},"end":{"line":138,"column":80}},"138":{"start":{"line":139,"column":0},"end":{"line":139,"column":5}},"139":{"start":{"line":140,"column":0},"end":{"line":140,"column":51}},"140":{"start":{"line":141,"column":0},"end":{"line":141,"column":3}},"141":{"start":{"line":142,"column":0},"end":{"line":142,"column":0}},"142":{"start":{"line":143,"column":0},"end":{"line":143,"column":13}},"143":{"start":{"line":144,"column":0},"end":{"line":144,"column":56}},"144":{"start":{"line":145,"column":0},"end":{"line":145,"column":40}},"145":{"start":{"line":146,"column":0},"end":{"line":146,"column":121}},"146":{"start":{"line":147,"column":0},"end":{"line":147,"column":49}},"147":{"start":{"line":148,"column":0},"end":{"line":148,"column":99}},"148":{"start":{"line":149,"column":0},"end":{"line":149,"column":7}},"149":{"start":{"line":150,"column":0},"end":{"line":150,"column":9}},"150":{"start":{"line":151,"column":0},"end":{"line":151,"column":64}},"151":{"start":{"line":152,"column":0},"end":{"line":152,"column":97}},"152":{"start":{"line":153,"column":0},"end":{"line":153,"column":43}},"153":{"start":{"line":154,"column":0},"end":{"line":154,"column":92}},"154":{"start":{"line":155,"column":0},"end":{"line":155,"column":33}},"155":{"start":{"line":156,"column":0},"end":{"line":156,"column":74}},"156":{"start":{"line":157,"column":0},"end":{"line":157,"column":26}},"157":{"start":{"line":158,"column":0},"end":{"line":158,"column":104}},"158":{"start":{"line":159,"column":0},"end":{"line":159,"column":10}},"159":{"start":{"line":160,"column":0},"end":{"line":160,"column":60}},"160":{"start":{"line":161,"column":0},"end":{"line":161,"column":69}},"161":{"start":{"line":162,"column":0},"end":{"line":162,"column":14}},"162":{"start":{"line":163,"column":0},"end":{"line":163,"column":88}},"163":{"start":{"line":164,"column":0},"end":{"line":164,"column":7}},"164":{"start":{"line":165,"column":0},"end":{"line":165,"column":24}},"165":{"start":{"line":166,"column":0},"end":{"line":166,"column":22}},"166":{"start":{"line":167,"column":0},"end":{"line":167,"column":39}},"167":{"start":{"line":168,"column":0},"end":{"line":168,"column":103}},"168":{"start":{"line":169,"column":0},"end":{"line":169,"column":7}},"169":{"start":{"line":170,"column":0},"end":{"line":170,"column":72}},"170":{"start":{"line":171,"column":0},"end":{"line":171,"column":26}},"171":{"start":{"line":172,"column":0},"end":{"line":172,"column":14}},"172":{"start":{"line":173,"column":0},"end":{"line":173,"column":5}},"173":{"start":{"line":174,"column":0},"end":{"line":174,"column":35}},"174":{"start":{"line":175,"column":0},"end":{"line":175,"column":3}},"175":{"start":{"line":176,"column":0},"end":{"line":176,"column":0}},"176":{"start":{"line":177,"column":0},"end":{"line":177,"column":23}},"177":{"start":{"line":178,"column":0},"end":{"line":178,"column":59}},"178":{"start":{"line":179,"column":0},"end":{"line":179,"column":20}},"179":{"start":{"line":180,"column":0},"end":{"line":180,"column":5}},"180":{"start":{"line":181,"column":0},"end":{"line":181,"column":3}},"181":{"start":{"line":182,"column":0},"end":{"line":182,"column":0}},"182":{"start":{"line":183,"column":0},"end":{"line":183,"column":90}},"183":{"start":{"line":184,"column":0},"end":{"line":184,"column":51}},"184":{"start":{"line":185,"column":0},"end":{"line":185,"column":0}},"185":{"start":{"line":186,"column":0},"end":{"line":186,"column":63}},"186":{"start":{"line":187,"column":0},"end":{"line":187,"column":0}},"187":{"start":{"line":188,"column":0},"end":{"line":188,"column":51}},"188":{"start":{"line":189,"column":0},"end":{"line":189,"column":25}},"189":{"start":{"line":190,"column":0},"end":{"line":190,"column":5}},"190":{"start":{"line":191,"column":0},"end":{"line":191,"column":3}},"191":{"start":{"line":192,"column":0},"end":{"line":192,"column":0}},"192":{"start":{"line":193,"column":0},"end":{"line":193,"column":34}},"193":{"start":{"line":194,"column":0},"end":{"line":194,"column":69}},"194":{"start":{"line":195,"column":0},"end":{"line":195,"column":107}},"195":{"start":{"line":196,"column":0},"end":{"line":196,"column":3}},"196":{"start":{"line":197,"column":0},"end":{"line":197,"column":0}},"197":{"start":{"line":198,"column":0},"end":{"line":198,"column":26}},"198":{"start":{"line":199,"column":0},"end":{"line":199,"column":47}},"199":{"start":{"line":200,"column":0},"end":{"line":200,"column":64}},"200":{"start":{"line":201,"column":0},"end":{"line":201,"column":26}},"201":{"start":{"line":202,"column":0},"end":{"line":202,"column":7}},"202":{"start":{"line":203,"column":0},"end":{"line":203,"column":118}},"203":{"start":{"line":204,"column":0},"end":{"line":204,"column":70}},"204":{"start":{"line":205,"column":0},"end":{"line":205,"column":3}},"205":{"start":{"line":206,"column":0},"end":{"line":206,"column":1}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":6,"38":6,"39":6,"40":6,"41":6,"42":6,"43":0,"44":0,"45":0,"46":6,"47":1,"48":1,"49":6,"50":6,"51":6,"52":6,"53":6,"54":1,"55":1,"56":38,"57":38,"58":38,"59":1,"60":1,"61":12,"62":0,"63":0,"64":12,"65":0,"66":0,"67":12,"68":12,"69":12,"70":12,"71":12,"72":1,"73":1,"74":37,"75":37,"76":37,"77":37,"78":37,"79":37,"80":37,"81":37,"82":37,"83":37,"84":37,"85":0,"86":0,"87":0,"88":37,"89":37,"90":37,"91":1,"92":1,"93":0,"94":0,"95":0,"96":1,"97":1,"98":20,"99":20,"100":1,"101":12,"102":25,"103":12,"104":12,"105":1,"106":69,"107":69,"108":6,"109":0,"110":0,"111":6,"112":6,"113":69,"114":69,"115":1,"116":1,"117":80,"118":80,"119":80,"120":80,"121":80,"122":80,"123":0,"124":0,"125":0,"126":0,"127":0,"128":1,"129":1,"130":0,"131":0,"132":0,"133":0,"134":0,"135":0,"136":0,"137":0,"138":0,"139":0,"140":0,"141":1,"142":1,"143":1,"144":53,"145":53,"146":53,"147":53,"148":53,"149":53,"150":53,"151":53,"152":0,"153":0,"154":0,"155":0,"156":0,"157":0,"158":0,"159":0,"160":0,"161":53,"162":53,"163":53,"164":53,"165":53,"166":0,"167":0,"168":0,"169":0,"170":0,"171":0,"172":0,"173":53,"174":53,"175":1,"176":1,"177":0,"178":0,"179":0,"180":0,"181":1,"182":1,"183":2,"184":2,"185":2,"186":2,"187":2,"188":1,"189":1,"190":2,"191":1,"192":1,"193":80,"194":80,"195":80,"196":1,"197":1,"198":40,"199":40,"200":40,"201":40,"202":40,"203":40,"204":40,"205":1},"branchMap":{"0":{"type":"branch","line":37,"loc":{"start":{"line":37,"column":2},"end":{"line":47,"column":3}},"locations":[{"start":{"line":37,"column":2},"end":{"line":47,"column":3}}]},"1":{"type":"branch","line":43,"loc":{"start":{"line":43,"column":57},"end":{"line":46,"column":5}},"locations":[{"start":{"line":43,"column":57},"end":{"line":46,"column":5}}]},"2":{"type":"branch","line":49,"loc":{"start":{"line":49,"column":2},"end":{"line":54,"column":3}},"locations":[{"start":{"line":49,"column":2},"end":{"line":54,"column":3}}]},"3":{"type":"branch","line":56,"loc":{"start":{"line":56,"column":2},"end":{"line":59,"column":3}},"locations":[{"start":{"line":56,"column":2},"end":{"line":59,"column":3}}]},"4":{"type":"branch","line":61,"loc":{"start":{"line":61,"column":2},"end":{"line":72,"column":3}},"locations":[{"start":{"line":61,"column":2},"end":{"line":72,"column":3}}]},"5":{"type":"branch","line":62,"loc":{"start":{"line":62,"column":32},"end":{"line":64,"column":5}},"locations":[{"start":{"line":62,"column":32},"end":{"line":64,"column":5}}]},"6":{"type":"branch","line":65,"loc":{"start":{"line":65,"column":27},"end":{"line":67,"column":5}},"locations":[{"start":{"line":65,"column":27},"end":{"line":67,"column":5}}]},"7":{"type":"branch","line":74,"loc":{"start":{"line":74,"column":10},"end":{"line":91,"column":3}},"locations":[{"start":{"line":74,"column":10},"end":{"line":91,"column":3}}]},"8":{"type":"branch","line":85,"loc":{"start":{"line":85,"column":31},"end":{"line":88,"column":5}},"locations":[{"start":{"line":85,"column":31},"end":{"line":88,"column":5}}]},"9":{"type":"branch","line":98,"loc":{"start":{"line":98,"column":2},"end":{"line":100,"column":3}},"locations":[{"start":{"line":98,"column":2},"end":{"line":100,"column":3}}]},"10":{"type":"branch","line":101,"loc":{"start":{"line":101,"column":2},"end":{"line":105,"column":3}},"locations":[{"start":{"line":101,"column":2},"end":{"line":105,"column":3}}]},"11":{"type":"branch","line":102,"loc":{"start":{"line":102,"column":19},"end":{"line":104,"column":5}},"locations":[{"start":{"line":102,"column":19},"end":{"line":104,"column":5}}]},"12":{"type":"branch","line":106,"loc":{"start":{"line":106,"column":2},"end":{"line":115,"column":3}},"locations":[{"start":{"line":106,"column":2},"end":{"line":115,"column":3}}]},"13":{"type":"branch","line":108,"loc":{"start":{"line":108,"column":36},"end":{"line":113,"column":5}},"locations":[{"start":{"line":108,"column":36},"end":{"line":113,"column":5}}]},"14":{"type":"branch","line":109,"loc":{"start":{"line":109,"column":30},"end":{"line":111,"column":7}},"locations":[{"start":{"line":109,"column":30},"end":{"line":111,"column":7}}]},"15":{"type":"branch","line":117,"loc":{"start":{"line":117,"column":2},"end":{"line":128,"column":3}},"locations":[{"start":{"line":117,"column":2},"end":{"line":128,"column":3}}]},"16":{"type":"branch","line":124,"loc":{"start":{"line":124,"column":-1},"end":{"line":128,"column":3}},"locations":[{"start":{"line":124,"column":-1},"end":{"line":128,"column":3}}]},"17":{"type":"branch","line":144,"loc":{"start":{"line":144,"column":8},"end":{"line":175,"column":3}},"locations":[{"start":{"line":144,"column":8},"end":{"line":175,"column":3}}]},"18":{"type":"branch","line":148,"loc":{"start":{"line":148,"column":34},"end":{"line":148,"column":58}},"locations":[{"start":{"line":148,"column":34},"end":{"line":148,"column":58}}]},"19":{"type":"branch","line":148,"loc":{"start":{"line":148,"column":59},"end":{"line":148,"column":70}},"locations":[{"start":{"line":148,"column":59},"end":{"line":148,"column":70}}]},"20":{"type":"branch","line":148,"loc":{"start":{"line":148,"column":71},"end":{"line":148,"column":98}},"locations":[{"start":{"line":148,"column":71},"end":{"line":148,"column":98}}]},"21":{"type":"branch","line":152,"loc":{"start":{"line":152,"column":47},"end":{"line":152,"column":96}},"locations":[{"start":{"line":152,"column":47},"end":{"line":152,"column":96}}]},"22":{"type":"branch","line":153,"loc":{"start":{"line":153,"column":-1},"end":{"line":162,"column":13}},"locations":[{"start":{"line":153,"column":-1},"end":{"line":162,"column":13}}]},"23":{"type":"branch","line":166,"loc":{"start":{"line":166,"column":6},"end":{"line":173,"column":5}},"locations":[{"start":{"line":166,"column":6},"end":{"line":173,"column":5}}]},"24":{"type":"branch","line":154,"loc":{"start":{"line":154,"column":70},"end":{"line":154,"column":90}},"locations":[{"start":{"line":154,"column":70},"end":{"line":154,"column":90}}]},"25":{"type":"branch","line":163,"loc":{"start":{"line":163,"column":46},"end":{"line":163,"column":85}},"locations":[{"start":{"line":163,"column":46},"end":{"line":163,"column":85}}]},"26":{"type":"branch","line":183,"loc":{"start":{"line":183,"column":2},"end":{"line":191,"column":3}},"locations":[{"start":{"line":183,"column":2},"end":{"line":191,"column":3}}]},"27":{"type":"branch","line":188,"loc":{"start":{"line":188,"column":50},"end":{"line":190,"column":5}},"locations":[{"start":{"line":188,"column":50},"end":{"line":190,"column":5}}]},"28":{"type":"branch","line":193,"loc":{"start":{"line":193,"column":2},"end":{"line":196,"column":3}},"locations":[{"start":{"line":193,"column":2},"end":{"line":196,"column":3}}]},"29":{"type":"branch","line":194,"loc":{"start":{"line":194,"column":39},"end":{"line":194,"column":63}},"locations":[{"start":{"line":194,"column":39},"end":{"line":194,"column":63}}]},"30":{"type":"branch","line":195,"loc":{"start":{"line":195,"column":52},"end":{"line":195,"column":83}},"locations":[{"start":{"line":195,"column":52},"end":{"line":195,"column":83}}]},"31":{"type":"branch","line":198,"loc":{"start":{"line":198,"column":2},"end":{"line":205,"column":3}},"locations":[{"start":{"line":198,"column":2},"end":{"line":205,"column":3}}]}},"b":{"0":[6],"1":[0],"2":[6],"3":[38],"4":[12],"5":[0],"6":[0],"7":[37],"8":[0],"9":[20],"10":[12],"11":[25],"12":[69],"13":[6],"14":[0],"15":[80],"16":[0],"17":[53],"18":[21],"19":[32],"20":[21],"21":[0],"22":[0],"23":[0],"24":[56],"25":[53],"26":[2],"27":[1],"28":[80],"29":[0],"30":[128],"31":[40]},"fnMap":{"0":{"name":"StoreCacheService","decl":{"start":{"line":37,"column":2},"end":{"line":47,"column":3}},"loc":{"start":{"line":37,"column":2},"end":{"line":47,"column":3}},"line":37},"1":{"name":"init","decl":{"start":{"line":49,"column":2},"end":{"line":54,"column":3}},"loc":{"start":{"line":49,"column":2},"end":{"line":54,"column":3}},"line":49},"2":{"name":"getNextStoreOperationIndex","decl":{"start":{"line":56,"column":2},"end":{"line":59,"column":3}},"loc":{"start":{"line":56,"column":2},"end":{"line":59,"column":3}},"line":56},"3":{"name":"getModel","decl":{"start":{"line":61,"column":2},"end":{"line":72,"column":3}},"loc":{"start":{"line":61,"column":2},"end":{"line":72,"column":3}},"line":61},"4":{"name":"createModel","decl":{"start":{"line":74,"column":10},"end":{"line":91,"column":3}},"loc":{"start":{"line":74,"column":10},"end":{"line":91,"column":3}},"line":74},"5":{"name":"addExporter","decl":{"start":{"line":93,"column":2},"end":{"line":96,"column":3}},"loc":{"start":{"line":93,"column":2},"end":{"line":96,"column":3}},"line":93},"6":{"name":"flushExportStores","decl":{"start":{"line":98,"column":2},"end":{"line":100,"column":3}},"loc":{"start":{"line":98,"column":2},"end":{"line":100,"column":3}},"line":98},"7":{"name":"updateModels","decl":{"start":{"line":101,"column":2},"end":{"line":105,"column":3}},"loc":{"start":{"line":101,"column":2},"end":{"line":105,"column":3}},"line":101},"8":{"name":"get metadata","decl":{"start":{"line":106,"column":2},"end":{"line":115,"column":3}},"loc":{"start":{"line":106,"column":2},"end":{"line":115,"column":3}},"line":106},"9":{"name":"get poi","decl":{"start":{"line":117,"column":2},"end":{"line":128,"column":3}},"loc":{"start":{"line":117,"column":2},"end":{"line":128,"column":3}},"line":117},"10":{"name":"flushRelationalModelsInOrder","decl":{"start":{"line":130,"column":10},"end":{"line":141,"column":3}},"loc":{"start":{"line":130,"column":10},"end":{"line":141,"column":3}},"line":130},"11":{"name":"_flushCache","decl":{"start":{"line":144,"column":8},"end":{"line":175,"column":3}},"loc":{"start":{"line":144,"column":8},"end":{"line":175,"column":3}},"line":144},"12":{"name":"_resetCache","decl":{"start":{"line":177,"column":2},"end":{"line":181,"column":3}},"loc":{"start":{"line":177,"column":2},"end":{"line":181,"column":3}},"line":177},"13":{"name":"flushAndWaitForCapacity","decl":{"start":{"line":183,"column":2},"end":{"line":191,"column":3}},"loc":{"start":{"line":183,"column":2},"end":{"line":191,"column":3}},"line":183},"14":{"name":"get flushableRecords","decl":{"start":{"line":193,"column":2},"end":{"line":196,"column":3}},"loc":{"start":{"line":193,"column":2},"end":{"line":196,"column":3}},"line":193},"15":{"name":"isFlushable","decl":{"start":{"line":198,"column":2},"end":{"line":205,"column":3}},"loc":{"start":{"line":198,"column":2},"end":{"line":205,"column":3}},"line":198}},"f":{"0":6,"1":6,"2":38,"3":12,"4":37,"5":0,"6":20,"7":12,"8":69,"9":80,"10":0,"11":53,"12":0,"13":2,"14":80,"15":40}},"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/indexer/storeCache/types.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/indexer/storeCache/types.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":51}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":47}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":35}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":46}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":0}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":51}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":0}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":34}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":46}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":36}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":15}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":19}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":37}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":44}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":20}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":105}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":79}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":58}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":55}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":74}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":52}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":59}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":1}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":38}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":23}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":28}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":33}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":62}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":61}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":5}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":4}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":69}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":5}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":40}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":1}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":0}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":40}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":45}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":25}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":2}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":0}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":57}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":0}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":27}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":51}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":17}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":50}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":2}},"51":{"start":{"line":52,"column":0},"end":{"line":52,"column":0}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":27}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":25}},"54":{"start":{"line":55,"column":0},"end":{"line":55,"column":25}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":2}},"56":{"start":{"line":57,"column":0},"end":{"line":57,"column":0}},"57":{"start":{"line":58,"column":0},"end":{"line":58,"column":27}},"58":{"start":{"line":59,"column":0},"end":{"line":59,"column":10}},"59":{"start":{"line":60,"column":0},"end":{"line":60,"column":22}},"60":{"start":{"line":61,"column":0},"end":{"line":61,"column":27}},"61":{"start":{"line":62,"column":0},"end":{"line":62,"column":25}},"62":{"start":{"line":63,"column":0},"end":{"line":63,"column":19}},"63":{"start":{"line":64,"column":0},"end":{"line":64,"column":2}},"64":{"start":{"line":65,"column":0},"end":{"line":65,"column":0}},"65":{"start":{"line":66,"column":0},"end":{"line":66,"column":58}},"66":{"start":{"line":67,"column":0},"end":{"line":67,"column":0}},"67":{"start":{"line":68,"column":0},"end":{"line":68,"column":74}},"68":{"start":{"line":69,"column":0},"end":{"line":69,"column":0}},"69":{"start":{"line":70,"column":0},"end":{"line":70,"column":27}},"70":{"start":{"line":71,"column":0},"end":{"line":71,"column":5}},"71":{"start":{"line":72,"column":0},"end":{"line":72,"column":33}},"72":{"start":{"line":73,"column":0},"end":{"line":73,"column":70}},"73":{"start":{"line":74,"column":0},"end":{"line":74,"column":4}},"74":{"start":{"line":75,"column":0},"end":{"line":75,"column":55}},"75":{"start":{"line":76,"column":0},"end":{"line":76,"column":78}},"76":{"start":{"line":77,"column":0},"end":{"line":77,"column":5}},"77":{"start":{"line":78,"column":0},"end":{"line":78,"column":43}},"78":{"start":{"line":79,"column":0},"end":{"line":79,"column":5}},"79":{"start":{"line":80,"column":0},"end":{"line":80,"column":37}},"80":{"start":{"line":81,"column":0},"end":{"line":81,"column":69}},"81":{"start":{"line":82,"column":0},"end":{"line":82,"column":70}},"82":{"start":{"line":83,"column":0},"end":{"line":83,"column":4}},"83":{"start":{"line":84,"column":0},"end":{"line":84,"column":76}},"84":{"start":{"line":85,"column":0},"end":{"line":85,"column":5}},"85":{"start":{"line":86,"column":0},"end":{"line":86,"column":32}},"86":{"start":{"line":87,"column":0},"end":{"line":87,"column":1}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"38":1,"39":1,"40":1,"41":1,"42":1,"43":1,"44":1,"45":1,"46":1,"47":1,"48":1,"49":1,"50":1,"51":1,"52":1,"53":1,"54":1,"55":1,"56":1,"57":1,"58":1,"59":1,"60":1,"61":1,"62":1,"63":1,"64":1,"65":1,"66":1,"67":1,"68":1,"69":1,"70":1,"71":1,"72":1,"73":1,"74":1,"75":1,"76":1,"77":1,"78":1,"79":1,"80":1,"81":1,"82":1,"83":1,"84":1,"85":1,"86":1},"branchMap":{},"b":{},"fnMap":{},"f":{}},"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/indexer/test.runner.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/indexer/test.runner.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":50}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":41}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":45}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":26}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":31}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":36}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":51}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":36}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":38}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":45}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":48}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":0}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":40}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":0}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":36}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":19}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":31}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":33}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":29}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":1}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":0}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":13}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":39}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":59}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":26}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":26}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":14}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":76}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":50}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":44}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":46}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":88}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":6}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":0}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":16}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":20}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":25}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":17}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":23}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":22}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":45}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":43}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":22}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":14}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":24}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":24}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":53}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":6}},"51":{"start":{"line":52,"column":0},"end":{"line":52,"column":44}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":0}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":9}},"54":{"start":{"line":55,"column":0},"end":{"line":55,"column":20}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":37}},"56":{"start":{"line":57,"column":0},"end":{"line":57,"column":76}},"57":{"start":{"line":58,"column":0},"end":{"line":58,"column":0}},"58":{"start":{"line":59,"column":0},"end":{"line":59,"column":57}},"59":{"start":{"line":60,"column":0},"end":{"line":60,"column":49}},"60":{"start":{"line":61,"column":0},"end":{"line":61,"column":37}},"61":{"start":{"line":62,"column":0},"end":{"line":62,"column":0}},"62":{"start":{"line":63,"column":0},"end":{"line":63,"column":22}},"63":{"start":{"line":64,"column":0},"end":{"line":64,"column":44}},"64":{"start":{"line":65,"column":0},"end":{"line":65,"column":81}},"65":{"start":{"line":66,"column":0},"end":{"line":66,"column":0}},"66":{"start":{"line":67,"column":0},"end":{"line":67,"column":38}},"67":{"start":{"line":68,"column":0},"end":{"line":68,"column":0}},"68":{"start":{"line":69,"column":0},"end":{"line":69,"column":11}},"69":{"start":{"line":70,"column":0},"end":{"line":70,"column":84}},"70":{"start":{"line":71,"column":0},"end":{"line":71,"column":66}},"71":{"start":{"line":72,"column":0},"end":{"line":72,"column":24}},"72":{"start":{"line":73,"column":0},"end":{"line":73,"column":72}},"73":{"start":{"line":74,"column":0},"end":{"line":74,"column":34}},"74":{"start":{"line":75,"column":0},"end":{"line":75,"column":30}},"75":{"start":{"line":76,"column":0},"end":{"line":76,"column":30}},"76":{"start":{"line":77,"column":0},"end":{"line":77,"column":32}},"77":{"start":{"line":78,"column":0},"end":{"line":78,"column":59}},"78":{"start":{"line":79,"column":0},"end":{"line":79,"column":10}},"79":{"start":{"line":80,"column":0},"end":{"line":80,"column":0}},"80":{"start":{"line":81,"column":0},"end":{"line":81,"column":27}},"81":{"start":{"line":82,"column":0},"end":{"line":82,"column":16}},"82":{"start":{"line":83,"column":0},"end":{"line":83,"column":7}},"83":{"start":{"line":84,"column":0},"end":{"line":84,"column":0}},"84":{"start":{"line":85,"column":0},"end":{"line":85,"column":32}},"85":{"start":{"line":86,"column":0},"end":{"line":86,"column":49}},"86":{"start":{"line":87,"column":0},"end":{"line":87,"column":0}},"87":{"start":{"line":88,"column":0},"end":{"line":88,"column":62}},"88":{"start":{"line":89,"column":0},"end":{"line":89,"column":56}},"89":{"start":{"line":90,"column":0},"end":{"line":90,"column":75}},"90":{"start":{"line":91,"column":0},"end":{"line":91,"column":87}},"91":{"start":{"line":92,"column":0},"end":{"line":92,"column":0}},"92":{"start":{"line":93,"column":0},"end":{"line":93,"column":46}},"93":{"start":{"line":94,"column":0},"end":{"line":94,"column":28}},"94":{"start":{"line":95,"column":0},"end":{"line":95,"column":69}},"95":{"start":{"line":96,"column":0},"end":{"line":96,"column":16}},"96":{"start":{"line":97,"column":0},"end":{"line":97,"column":55}},"97":{"start":{"line":98,"column":0},"end":{"line":98,"column":75}},"98":{"start":{"line":99,"column":0},"end":{"line":99,"column":41}},"99":{"start":{"line":100,"column":0},"end":{"line":100,"column":0}},"100":{"start":{"line":101,"column":0},"end":{"line":101,"column":87}},"101":{"start":{"line":102,"column":0},"end":{"line":102,"column":83}},"102":{"start":{"line":103,"column":0},"end":{"line":103,"column":0}},"103":{"start":{"line":104,"column":0},"end":{"line":104,"column":53}},"104":{"start":{"line":105,"column":0},"end":{"line":105,"column":36}},"105":{"start":{"line":106,"column":0},"end":{"line":106,"column":113}},"106":{"start":{"line":107,"column":0},"end":{"line":107,"column":16}},"107":{"start":{"line":108,"column":0},"end":{"line":108,"column":13}},"108":{"start":{"line":109,"column":0},"end":{"line":109,"column":13}},"109":{"start":{"line":110,"column":0},"end":{"line":110,"column":9}},"110":{"start":{"line":111,"column":0},"end":{"line":111,"column":0}},"111":{"start":{"line":112,"column":0},"end":{"line":112,"column":39}},"112":{"start":{"line":113,"column":0},"end":{"line":113,"column":79}},"113":{"start":{"line":114,"column":0},"end":{"line":114,"column":29}},"114":{"start":{"line":115,"column":0},"end":{"line":115,"column":16}},"115":{"start":{"line":116,"column":0},"end":{"line":116,"column":79}},"116":{"start":{"line":117,"column":0},"end":{"line":117,"column":36}},"117":{"start":{"line":118,"column":0},"end":{"line":118,"column":32}},"118":{"start":{"line":119,"column":0},"end":{"line":119,"column":40}},"119":{"start":{"line":120,"column":0},"end":{"line":120,"column":45}},"120":{"start":{"line":121,"column":0},"end":{"line":121,"column":47}},"121":{"start":{"line":122,"column":0},"end":{"line":122,"column":12}},"122":{"start":{"line":123,"column":0},"end":{"line":123,"column":0}},"123":{"start":{"line":124,"column":0},"end":{"line":124,"column":29}},"124":{"start":{"line":125,"column":0},"end":{"line":125,"column":9}},"125":{"start":{"line":126,"column":0},"end":{"line":126,"column":7}},"126":{"start":{"line":127,"column":0},"end":{"line":127,"column":0}},"127":{"start":{"line":128,"column":0},"end":{"line":128,"column":64}},"128":{"start":{"line":129,"column":0},"end":{"line":129,"column":18}},"129":{"start":{"line":130,"column":0},"end":{"line":130,"column":104}},"130":{"start":{"line":131,"column":0},"end":{"line":131,"column":38}},"131":{"start":{"line":132,"column":0},"end":{"line":132,"column":18}},"132":{"start":{"line":133,"column":0},"end":{"line":133,"column":8}},"133":{"start":{"line":134,"column":0},"end":{"line":134,"column":22}},"134":{"start":{"line":135,"column":0},"end":{"line":135,"column":55}},"135":{"start":{"line":136,"column":0},"end":{"line":136,"column":56}},"136":{"start":{"line":137,"column":0},"end":{"line":137,"column":15}},"137":{"start":{"line":138,"column":0},"end":{"line":138,"column":54}},"138":{"start":{"line":139,"column":0},"end":{"line":139,"column":23}},"139":{"start":{"line":140,"column":0},"end":{"line":140,"column":25}},"140":{"start":{"line":141,"column":0},"end":{"line":141,"column":9}},"141":{"start":{"line":142,"column":0},"end":{"line":142,"column":5}},"142":{"start":{"line":143,"column":0},"end":{"line":143,"column":0}},"143":{"start":{"line":144,"column":0},"end":{"line":144,"column":12}},"144":{"start":{"line":145,"column":0},"end":{"line":145,"column":36}},"145":{"start":{"line":146,"column":0},"end":{"line":146,"column":36}},"146":{"start":{"line":147,"column":0},"end":{"line":147,"column":48}},"147":{"start":{"line":148,"column":0},"end":{"line":148,"column":6}},"148":{"start":{"line":149,"column":0},"end":{"line":149,"column":3}},"149":{"start":{"line":150,"column":0},"end":{"line":150,"column":1}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":4,"31":4,"32":4,"33":4,"34":4,"35":4,"36":1,"37":1,"38":4,"39":4,"40":4,"41":4,"42":4,"43":4,"44":4,"45":4,"46":4,"47":4,"48":4,"49":4,"50":4,"51":4,"52":4,"53":4,"54":4,"55":4,"56":4,"57":4,"58":4,"59":4,"60":4,"61":4,"62":4,"63":4,"64":4,"65":4,"66":4,"67":4,"68":4,"69":4,"70":3,"71":4,"72":1,"73":1,"74":1,"75":1,"76":1,"77":1,"78":1,"79":1,"80":1,"81":1,"82":1,"83":3,"84":3,"85":3,"86":3,"87":4,"88":2,"89":2,"90":2,"91":2,"92":2,"93":2,"94":0,"95":2,"96":2,"97":6,"98":6,"99":6,"100":6,"101":6,"102":6,"103":6,"104":1,"105":1,"106":1,"107":1,"108":2,"109":2,"110":2,"111":2,"112":1,"113":1,"114":1,"115":1,"116":1,"117":1,"118":1,"119":1,"120":1,"121":1,"122":1,"123":1,"124":1,"125":2,"126":2,"127":2,"128":3,"129":3,"130":3,"131":3,"132":3,"133":4,"134":1,"135":1,"136":4,"137":4,"138":4,"139":4,"140":4,"141":4,"142":4,"143":4,"144":4,"145":4,"146":4,"147":4,"148":4,"149":1},"branchMap":{"0":{"type":"branch","line":30,"loc":{"start":{"line":30,"column":2},"end":{"line":36,"column":6}},"locations":[{"start":{"line":30,"column":2},"end":{"line":36,"column":6}}]},"1":{"type":"branch","line":38,"loc":{"start":{"line":38,"column":2},"end":{"line":149,"column":3}},"locations":[{"start":{"line":38,"column":2},"end":{"line":149,"column":3}}]},"2":{"type":"branch","line":71,"loc":{"start":{"line":71,"column":-1},"end":{"line":72,"column":15}},"locations":[{"start":{"line":71,"column":-1},"end":{"line":72,"column":15}}]},"3":{"type":"branch","line":72,"loc":{"start":{"line":72,"column":8},"end":{"line":83,"column":7}},"locations":[{"start":{"line":72,"column":8},"end":{"line":83,"column":7}}]},"4":{"type":"branch","line":84,"loc":{"start":{"line":84,"column":-1},"end":{"line":88,"column":61}},"locations":[{"start":{"line":84,"column":-1},"end":{"line":88,"column":61}}]},"5":{"type":"branch","line":88,"loc":{"start":{"line":88,"column":61},"end":{"line":128,"column":64}},"locations":[{"start":{"line":88,"column":61},"end":{"line":128,"column":64}}]},"6":{"type":"branch","line":94,"loc":{"start":{"line":94,"column":27},"end":{"line":96,"column":15}},"locations":[{"start":{"line":94,"column":27},"end":{"line":96,"column":15}}]},"7":{"type":"branch","line":112,"loc":{"start":{"line":112,"column":38},"end":{"line":125,"column":9}},"locations":[{"start":{"line":112,"column":38},"end":{"line":125,"column":9}}]},"8":{"type":"branch","line":129,"loc":{"start":{"line":129,"column":-1},"end":{"line":134,"column":13}},"locations":[{"start":{"line":129,"column":-1},"end":{"line":134,"column":13}}]},"9":{"type":"branch","line":134,"loc":{"start":{"line":134,"column":6},"end":{"line":137,"column":14}},"locations":[{"start":{"line":134,"column":6},"end":{"line":137,"column":14}}]},"10":{"type":"branch","line":97,"loc":{"start":{"line":97,"column":44},"end":{"line":109,"column":11}},"locations":[{"start":{"line":97,"column":44},"end":{"line":109,"column":11}}]},"11":{"type":"branch","line":99,"loc":{"start":{"line":99,"column":34},"end":{"line":99,"column":41}},"locations":[{"start":{"line":99,"column":34},"end":{"line":99,"column":41}}]},"12":{"type":"branch","line":101,"loc":{"start":{"line":101,"column":78},"end":{"line":101,"column":86}},"locations":[{"start":{"line":101,"column":78},"end":{"line":101,"column":86}}]},"13":{"type":"branch","line":102,"loc":{"start":{"line":102,"column":74},"end":{"line":102,"column":82}},"locations":[{"start":{"line":102,"column":74},"end":{"line":102,"column":82}}]},"14":{"type":"branch","line":104,"loc":{"start":{"line":104,"column":52},"end":{"line":108,"column":13}},"locations":[{"start":{"line":104,"column":52},"end":{"line":108,"column":13}}]}},"b":{"0":[4],"1":[4],"2":[3],"3":[1],"4":[3],"5":[2],"6":[0],"7":[1],"8":[3],"9":[1],"10":[6],"11":[0],"12":[0],"13":[0],"14":[1]},"fnMap":{"0":{"name":"TestRunner","decl":{"start":{"line":30,"column":2},"end":{"line":36,"column":6}},"loc":{"start":{"line":30,"column":2},"end":{"line":36,"column":6}},"line":30},"1":{"name":"runTest","decl":{"start":{"line":38,"column":2},"end":{"line":149,"column":3}},"loc":{"start":{"line":38,"column":2},"end":{"line":149,"column":3}},"line":38}},"f":{"0":4,"1":4}},"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/indexer/testing.service.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/indexer/testing.service.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":53}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":24}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":42}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":52}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":72}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":26}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":33}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":36}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":40}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":36}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":53}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":41}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":66}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":0}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":42}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":0}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":13}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":75}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":50}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":39}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":31}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":21}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":22}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":24}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":31}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":11}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":0}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":25}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":31}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":31}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":0}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":113}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":42}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":35}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":76}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":0}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":28}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":50}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":37}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":32}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":20}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":46}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":8}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":0}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":54}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":7}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":0}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":65}},"51":{"start":{"line":52,"column":0},"end":{"line":52,"column":0}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":73}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":3}},"54":{"start":{"line":55,"column":0},"end":{"line":55,"column":0}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":153}},"56":{"start":{"line":57,"column":0},"end":{"line":57,"column":0}},"57":{"start":{"line":58,"column":0},"end":{"line":58,"column":19}},"58":{"start":{"line":59,"column":0},"end":{"line":59,"column":21}},"59":{"start":{"line":60,"column":0},"end":{"line":60,"column":20}},"60":{"start":{"line":61,"column":0},"end":{"line":61,"column":43}},"61":{"start":{"line":62,"column":0},"end":{"line":62,"column":41}},"62":{"start":{"line":63,"column":0},"end":{"line":63,"column":20}},"63":{"start":{"line":64,"column":0},"end":{"line":64,"column":75}},"64":{"start":{"line":65,"column":0},"end":{"line":65,"column":3}},"65":{"start":{"line":66,"column":0},"end":{"line":66,"column":0}},"66":{"start":{"line":67,"column":0},"end":{"line":67,"column":15}},"67":{"start":{"line":68,"column":0},"end":{"line":68,"column":47}},"68":{"start":{"line":69,"column":0},"end":{"line":69,"column":46}},"69":{"start":{"line":70,"column":0},"end":{"line":70,"column":47}},"70":{"start":{"line":71,"column":0},"end":{"line":71,"column":40}},"71":{"start":{"line":72,"column":0},"end":{"line":72,"column":35}},"72":{"start":{"line":73,"column":0},"end":{"line":73,"column":69}},"73":{"start":{"line":74,"column":0},"end":{"line":74,"column":9}},"74":{"start":{"line":75,"column":0},"end":{"line":75,"column":7}},"75":{"start":{"line":76,"column":0},"end":{"line":76,"column":35}},"76":{"start":{"line":77,"column":0},"end":{"line":77,"column":12}},"77":{"start":{"line":78,"column":0},"end":{"line":78,"column":107}},"78":{"start":{"line":79,"column":0},"end":{"line":79,"column":18}},"79":{"start":{"line":80,"column":0},"end":{"line":80,"column":114}},"80":{"start":{"line":81,"column":0},"end":{"line":81,"column":8}},"81":{"start":{"line":82,"column":0},"end":{"line":82,"column":5}},"82":{"start":{"line":83,"column":0},"end":{"line":83,"column":3}},"83":{"start":{"line":84,"column":0},"end":{"line":84,"column":0}},"84":{"start":{"line":85,"column":0},"end":{"line":85,"column":55}},"85":{"start":{"line":86,"column":0},"end":{"line":86,"column":31}},"86":{"start":{"line":87,"column":0},"end":{"line":87,"column":0}},"87":{"start":{"line":88,"column":0},"end":{"line":88,"column":31}},"88":{"start":{"line":89,"column":0},"end":{"line":89,"column":16}},"89":{"start":{"line":90,"column":0},"end":{"line":90,"column":5}},"90":{"start":{"line":91,"column":0},"end":{"line":91,"column":0}},"91":{"start":{"line":92,"column":0},"end":{"line":92,"column":44}},"92":{"start":{"line":93,"column":0},"end":{"line":93,"column":48}},"93":{"start":{"line":94,"column":0},"end":{"line":94,"column":38}},"94":{"start":{"line":95,"column":0},"end":{"line":95,"column":0}},"95":{"start":{"line":96,"column":0},"end":{"line":96,"column":31}},"96":{"start":{"line":97,"column":0},"end":{"line":97,"column":55}},"97":{"start":{"line":98,"column":0},"end":{"line":98,"column":49}},"98":{"start":{"line":99,"column":0},"end":{"line":99,"column":29}},"99":{"start":{"line":100,"column":0},"end":{"line":100,"column":7}},"100":{"start":{"line":101,"column":0},"end":{"line":101,"column":7}},"101":{"start":{"line":102,"column":0},"end":{"line":102,"column":0}},"102":{"start":{"line":103,"column":0},"end":{"line":103,"column":17}},"103":{"start":{"line":104,"column":0},"end":{"line":104,"column":3}},"104":{"start":{"line":105,"column":0},"end":{"line":105,"column":0}},"105":{"start":{"line":106,"column":0},"end":{"line":106,"column":64}},"106":{"start":{"line":107,"column":0},"end":{"line":107,"column":47}},"107":{"start":{"line":108,"column":0},"end":{"line":108,"column":0}},"108":{"start":{"line":109,"column":0},"end":{"line":109,"column":59}},"109":{"start":{"line":110,"column":0},"end":{"line":110,"column":0}},"110":{"start":{"line":111,"column":0},"end":{"line":111,"column":9}},"111":{"start":{"line":112,"column":0},"end":{"line":112,"column":85}},"112":{"start":{"line":113,"column":0},"end":{"line":113,"column":13}},"113":{"start":{"line":114,"column":0},"end":{"line":114,"column":16}},"114":{"start":{"line":115,"column":0},"end":{"line":115,"column":34}},"115":{"start":{"line":116,"column":0},"end":{"line":116,"column":8}},"116":{"start":{"line":117,"column":0},"end":{"line":117,"column":0}},"117":{"start":{"line":118,"column":0},"end":{"line":118,"column":74}},"118":{"start":{"line":119,"column":0},"end":{"line":119,"column":0}},"119":{"start":{"line":120,"column":0},"end":{"line":120,"column":30}},"120":{"start":{"line":121,"column":0},"end":{"line":121,"column":56}},"121":{"start":{"line":122,"column":0},"end":{"line":122,"column":7}},"122":{"start":{"line":123,"column":0},"end":{"line":123,"column":15}},"123":{"start":{"line":124,"column":0},"end":{"line":124,"column":20}},"124":{"start":{"line":125,"column":0},"end":{"line":125,"column":5}},"125":{"start":{"line":126,"column":0},"end":{"line":126,"column":3}},"126":{"start":{"line":127,"column":0},"end":{"line":127,"column":0}},"127":{"start":{"line":128,"column":0},"end":{"line":128,"column":53}},"128":{"start":{"line":129,"column":0},"end":{"line":129,"column":33}},"129":{"start":{"line":130,"column":0},"end":{"line":130,"column":0}},"130":{"start":{"line":131,"column":0},"end":{"line":131,"column":48}},"131":{"start":{"line":132,"column":0},"end":{"line":132,"column":44}},"132":{"start":{"line":133,"column":0},"end":{"line":133,"column":35}},"133":{"start":{"line":134,"column":0},"end":{"line":134,"column":0}},"134":{"start":{"line":135,"column":0},"end":{"line":135,"column":37}},"135":{"start":{"line":136,"column":0},"end":{"line":136,"column":40}},"136":{"start":{"line":137,"column":0},"end":{"line":137,"column":0}},"137":{"start":{"line":138,"column":0},"end":{"line":138,"column":49}},"138":{"start":{"line":139,"column":0},"end":{"line":139,"column":46}},"139":{"start":{"line":140,"column":0},"end":{"line":140,"column":50}},"140":{"start":{"line":141,"column":0},"end":{"line":141,"column":0}},"141":{"start":{"line":142,"column":0},"end":{"line":142,"column":31}},"142":{"start":{"line":143,"column":0},"end":{"line":143,"column":9}},"143":{"start":{"line":144,"column":0},"end":{"line":144,"column":7}},"144":{"start":{"line":145,"column":0},"end":{"line":145,"column":5}},"145":{"start":{"line":146,"column":0},"end":{"line":146,"column":0}},"146":{"start":{"line":147,"column":0},"end":{"line":147,"column":30}},"147":{"start":{"line":148,"column":0},"end":{"line":148,"column":22}},"148":{"start":{"line":149,"column":0},"end":{"line":149,"column":110}},"149":{"start":{"line":150,"column":0},"end":{"line":150,"column":8}},"150":{"start":{"line":151,"column":0},"end":{"line":151,"column":5}},"151":{"start":{"line":152,"column":0},"end":{"line":152,"column":0}},"152":{"start":{"line":153,"column":0},"end":{"line":153,"column":23}},"153":{"start":{"line":154,"column":0},"end":{"line":154,"column":3}},"154":{"start":{"line":155,"column":0},"end":{"line":155,"column":0}},"155":{"start":{"line":156,"column":0},"end":{"line":156,"column":35}},"156":{"start":{"line":157,"column":0},"end":{"line":157,"column":45}},"157":{"start":{"line":158,"column":0},"end":{"line":158,"column":72}},"158":{"start":{"line":159,"column":0},"end":{"line":159,"column":57}},"159":{"start":{"line":160,"column":0},"end":{"line":160,"column":25}},"160":{"start":{"line":161,"column":0},"end":{"line":161,"column":54}},"161":{"start":{"line":162,"column":0},"end":{"line":162,"column":119}},"162":{"start":{"line":163,"column":0},"end":{"line":163,"column":61}},"163":{"start":{"line":164,"column":0},"end":{"line":164,"column":57}},"164":{"start":{"line":165,"column":0},"end":{"line":165,"column":41}},"165":{"start":{"line":166,"column":0},"end":{"line":166,"column":9}},"166":{"start":{"line":167,"column":0},"end":{"line":167,"column":33}},"167":{"start":{"line":168,"column":0},"end":{"line":168,"column":7}},"168":{"start":{"line":169,"column":0},"end":{"line":169,"column":5}},"169":{"start":{"line":170,"column":0},"end":{"line":170,"column":0}},"170":{"start":{"line":171,"column":0},"end":{"line":171,"column":69}},"171":{"start":{"line":172,"column":0},"end":{"line":172,"column":77}},"172":{"start":{"line":173,"column":0},"end":{"line":173,"column":75}},"173":{"start":{"line":174,"column":0},"end":{"line":174,"column":3}},"174":{"start":{"line":175,"column":0},"end":{"line":175,"column":1}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":1,"55":1,"56":1,"57":1,"58":0,"59":0,"60":0,"61":0,"62":0,"63":0,"64":0,"65":1,"66":1,"67":0,"68":0,"69":0,"70":0,"71":0,"72":0,"73":0,"74":0,"75":0,"76":0,"77":0,"78":0,"79":0,"80":0,"81":0,"82":0,"83":1,"84":1,"85":0,"86":0,"87":0,"88":0,"89":0,"90":0,"91":0,"92":0,"93":0,"94":0,"95":0,"96":0,"97":0,"98":0,"99":0,"100":0,"101":0,"102":0,"103":0,"104":1,"105":1,"106":0,"107":0,"108":0,"109":0,"110":0,"111":0,"112":0,"113":0,"114":0,"115":0,"116":0,"117":0,"118":0,"119":0,"120":0,"121":0,"122":0,"123":0,"124":0,"125":0,"126":1,"127":1,"128":0,"129":0,"130":0,"131":0,"132":0,"133":0,"134":0,"135":0,"136":0,"137":0,"138":0,"139":0,"140":0,"141":0,"142":0,"143":0,"144":0,"145":0,"146":0,"147":0,"148":0,"149":0,"150":0,"151":0,"152":0,"153":0,"154":1,"155":1,"156":0,"157":0,"158":0,"159":0,"160":0,"161":0,"162":0,"163":0,"164":0,"165":0,"166":0,"167":0,"168":0,"169":0,"170":0,"171":0,"172":0,"173":0,"174":1},"branchMap":{},"b":{},"fnMap":{"0":{"name":"TestingService","decl":{"start":{"line":35,"column":2},"end":{"line":54,"column":3}},"loc":{"start":{"line":35,"column":2},"end":{"line":54,"column":3}},"line":35},"1":{"name":"indexBlock","decl":{"start":{"line":58,"column":2},"end":{"line":65,"column":3}},"loc":{"start":{"line":58,"column":2},"end":{"line":65,"column":3}},"line":58},"2":{"name":"run","decl":{"start":{"line":67,"column":2},"end":{"line":83,"column":3}},"loc":{"start":{"line":67,"column":2},"end":{"line":83,"column":3}},"line":67},"3":{"name":"findAllTestFiles","decl":{"start":{"line":85,"column":10},"end":{"line":104,"column":3}},"loc":{"start":{"line":85,"column":10},"end":{"line":104,"column":3}},"line":85},"4":{"name":"runTest","decl":{"start":{"line":106,"column":10},"end":{"line":126,"column":3}},"loc":{"start":{"line":106,"column":10},"end":{"line":126,"column":3}},"line":106},"5":{"name":"getDsWithHandler","decl":{"start":{"line":128,"column":12},"end":{"line":154,"column":3}},"loc":{"start":{"line":128,"column":12},"end":{"line":154,"column":3}},"line":128},"6":{"name":"logFailedTestsSummary","decl":{"start":{"line":156,"column":10},"end":{"line":174,"column":3}},"loc":{"start":{"line":156,"column":10},"end":{"line":174,"column":3}},"line":156}},"f":{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0}},"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/indexer/types.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/indexer/types.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":8}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":17}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":25}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":24}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":9}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":24}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":27}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":38}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":55}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":55}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":0}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":34}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":58}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":45}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":68}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":13}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":112}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":33}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":95}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":22}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":48}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":24}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":1}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":0}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":27}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":14}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":20}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":1}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":0}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":31}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":27}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":21}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":24}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":2}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":0}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":41}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":97}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":1}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":0}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":38}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":34}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":22}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":52}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":5}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":100}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":7}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":28}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":5}},"51":{"start":{"line":52,"column":0},"end":{"line":52,"column":108}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":4}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":7}},"54":{"start":{"line":55,"column":0},"end":{"line":55,"column":54}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":41}},"56":{"start":{"line":57,"column":0},"end":{"line":57,"column":44}},"57":{"start":{"line":58,"column":0},"end":{"line":58,"column":53}},"58":{"start":{"line":59,"column":0},"end":{"line":59,"column":1}},"59":{"start":{"line":60,"column":0},"end":{"line":60,"column":0}},"60":{"start":{"line":61,"column":0},"end":{"line":61,"column":34}},"61":{"start":{"line":62,"column":0},"end":{"line":62,"column":22}},"62":{"start":{"line":63,"column":0},"end":{"line":63,"column":11}},"63":{"start":{"line":64,"column":0},"end":{"line":64,"column":1}},"64":{"start":{"line":65,"column":0},"end":{"line":65,"column":0}},"65":{"start":{"line":66,"column":0},"end":{"line":66,"column":22}},"66":{"start":{"line":67,"column":0},"end":{"line":67,"column":22}},"67":{"start":{"line":68,"column":0},"end":{"line":68,"column":20}},"68":{"start":{"line":69,"column":0},"end":{"line":69,"column":33}},"69":{"start":{"line":70,"column":0},"end":{"line":70,"column":2}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":5,"28":5,"29":5,"30":5,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"38":1,"39":1,"40":1,"41":1,"42":1,"43":1,"44":1,"45":1,"46":1,"47":1,"48":1,"49":1,"50":1,"51":1,"52":1,"53":1,"54":1,"55":1,"56":1,"57":1,"58":1,"59":1,"60":1,"61":1,"62":1,"63":1,"64":1,"65":1,"66":1,"67":1,"68":1,"69":1},"branchMap":{"0":{"type":"branch","line":28,"loc":{"start":{"line":28,"column":0},"end":{"line":31,"column":1}},"locations":[{"start":{"line":28,"column":0},"end":{"line":31,"column":1}}]}},"b":{"0":[5]},"fnMap":{},"f":{}},"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/indexer/unfinalizedBlocks.service.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/indexer/unfinalizedBlocks.service.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":28}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":37}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":40}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":48}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":36}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":40}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":40}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":31}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":47}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":0}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":46}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":0}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":67}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":83}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":0}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":108}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":0}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":34}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":0}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":34}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":0}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":47}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":86}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":86}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":89}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":33}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":43}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":61}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":1}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":0}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":95}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":49}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":36}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":44}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":0}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":56}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":57}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":69}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":73}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":0}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":19}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":53}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":29}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":3}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":0}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":71}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":48}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":3}},"51":{"start":{"line":52,"column":0},"end":{"line":52,"column":0}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":56}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":116}},"54":{"start":{"line":55,"column":0},"end":{"line":55,"column":35}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":3}},"56":{"start":{"line":57,"column":0},"end":{"line":57,"column":0}},"57":{"start":{"line":58,"column":0},"end":{"line":58,"column":56}},"58":{"start":{"line":59,"column":0},"end":{"line":59,"column":44}},"59":{"start":{"line":60,"column":0},"end":{"line":60,"column":3}},"60":{"start":{"line":61,"column":0},"end":{"line":61,"column":0}},"61":{"start":{"line":62,"column":0},"end":{"line":62,"column":43}},"62":{"start":{"line":63,"column":0},"end":{"line":63,"column":114}},"63":{"start":{"line":64,"column":0},"end":{"line":64,"column":33}},"64":{"start":{"line":65,"column":0},"end":{"line":65,"column":3}},"65":{"start":{"line":66,"column":0},"end":{"line":66,"column":0}},"66":{"start":{"line":67,"column":0},"end":{"line":67,"column":109}},"67":{"start":{"line":68,"column":0},"end":{"line":68,"column":0}},"68":{"start":{"line":69,"column":0},"end":{"line":69,"column":93}},"69":{"start":{"line":70,"column":0},"end":{"line":70,"column":103}},"70":{"start":{"line":71,"column":0},"end":{"line":71,"column":0}},"71":{"start":{"line":72,"column":0},"end":{"line":72,"column":71}},"72":{"start":{"line":73,"column":0},"end":{"line":73,"column":78}},"73":{"start":{"line":74,"column":0},"end":{"line":74,"column":57}},"74":{"start":{"line":75,"column":0},"end":{"line":75,"column":0}},"75":{"start":{"line":76,"column":0},"end":{"line":76,"column":40}},"76":{"start":{"line":77,"column":0},"end":{"line":77,"column":51}},"77":{"start":{"line":78,"column":0},"end":{"line":78,"column":51}},"78":{"start":{"line":79,"column":0},"end":{"line":79,"column":0}},"79":{"start":{"line":80,"column":0},"end":{"line":80,"column":65}},"80":{"start":{"line":81,"column":0},"end":{"line":81,"column":39}},"81":{"start":{"line":82,"column":0},"end":{"line":82,"column":20}},"82":{"start":{"line":83,"column":0},"end":{"line":83,"column":129}},"83":{"start":{"line":84,"column":0},"end":{"line":84,"column":10}},"84":{"start":{"line":85,"column":0},"end":{"line":85,"column":36}},"85":{"start":{"line":86,"column":0},"end":{"line":86,"column":67}},"86":{"start":{"line":87,"column":0},"end":{"line":87,"column":28}},"87":{"start":{"line":88,"column":0},"end":{"line":88,"column":14}},"88":{"start":{"line":89,"column":0},"end":{"line":89,"column":38}},"89":{"start":{"line":90,"column":0},"end":{"line":90,"column":48}},"90":{"start":{"line":91,"column":0},"end":{"line":91,"column":7}},"91":{"start":{"line":92,"column":0},"end":{"line":92,"column":5}},"92":{"start":{"line":93,"column":0},"end":{"line":93,"column":3}},"93":{"start":{"line":94,"column":0},"end":{"line":94,"column":0}},"94":{"start":{"line":95,"column":0},"end":{"line":95,"column":46}},"95":{"start":{"line":96,"column":0},"end":{"line":96,"column":44}},"96":{"start":{"line":97,"column":0},"end":{"line":97,"column":3}},"97":{"start":{"line":98,"column":0},"end":{"line":98,"column":0}},"98":{"start":{"line":99,"column":0},"end":{"line":99,"column":85}},"99":{"start":{"line":100,"column":0},"end":{"line":100,"column":17}},"100":{"start":{"line":101,"column":0},"end":{"line":101,"column":44}},"101":{"start":{"line":102,"column":0},"end":{"line":102,"column":5}},"102":{"start":{"line":103,"column":0},"end":{"line":103,"column":0}},"103":{"start":{"line":104,"column":0},"end":{"line":104,"column":48}},"104":{"start":{"line":105,"column":0},"end":{"line":105,"column":0}},"105":{"start":{"line":106,"column":0},"end":{"line":106,"column":24}},"106":{"start":{"line":107,"column":0},"end":{"line":107,"column":55}},"107":{"start":{"line":108,"column":0},"end":{"line":108,"column":34}},"108":{"start":{"line":109,"column":0},"end":{"line":109,"column":12}},"109":{"start":{"line":110,"column":0},"end":{"line":110,"column":61}},"110":{"start":{"line":111,"column":0},"end":{"line":111,"column":61}},"111":{"start":{"line":112,"column":0},"end":{"line":112,"column":5}},"112":{"start":{"line":113,"column":0},"end":{"line":113,"column":0}},"113":{"start":{"line":114,"column":0},"end":{"line":114,"column":11}},"114":{"start":{"line":115,"column":0},"end":{"line":115,"column":3}},"115":{"start":{"line":116,"column":0},"end":{"line":116,"column":0}},"116":{"start":{"line":117,"column":0},"end":{"line":117,"column":82}},"117":{"start":{"line":118,"column":0},"end":{"line":118,"column":93}},"118":{"start":{"line":119,"column":0},"end":{"line":119,"column":3}},"119":{"start":{"line":120,"column":0},"end":{"line":120,"column":0}},"120":{"start":{"line":121,"column":0},"end":{"line":121,"column":48}},"121":{"start":{"line":122,"column":0},"end":{"line":122,"column":82}},"122":{"start":{"line":123,"column":0},"end":{"line":123,"column":13}},"123":{"start":{"line":124,"column":0},"end":{"line":124,"column":5}},"124":{"start":{"line":125,"column":0},"end":{"line":125,"column":34}},"125":{"start":{"line":126,"column":0},"end":{"line":126,"column":3}},"126":{"start":{"line":127,"column":0},"end":{"line":127,"column":0}},"127":{"start":{"line":128,"column":0},"end":{"line":128,"column":58}},"128":{"start":{"line":129,"column":0},"end":{"line":129,"column":64}},"129":{"start":{"line":130,"column":0},"end":{"line":130,"column":0}},"130":{"start":{"line":131,"column":0},"end":{"line":131,"column":19}},"131":{"start":{"line":132,"column":0},"end":{"line":132,"column":76}},"132":{"start":{"line":133,"column":0},"end":{"line":133,"column":98}},"133":{"start":{"line":134,"column":0},"end":{"line":134,"column":19}},"134":{"start":{"line":135,"column":0},"end":{"line":135,"column":139}},"135":{"start":{"line":136,"column":0},"end":{"line":136,"column":8}},"136":{"start":{"line":137,"column":0},"end":{"line":137,"column":22}},"137":{"start":{"line":138,"column":0},"end":{"line":138,"column":5}},"138":{"start":{"line":139,"column":0},"end":{"line":139,"column":0}},"139":{"start":{"line":140,"column":0},"end":{"line":140,"column":40}},"140":{"start":{"line":141,"column":0},"end":{"line":141,"column":55}},"141":{"start":{"line":142,"column":0},"end":{"line":142,"column":3}},"142":{"start":{"line":143,"column":0},"end":{"line":143,"column":0}},"143":{"start":{"line":144,"column":0},"end":{"line":144,"column":40}},"144":{"start":{"line":145,"column":0},"end":{"line":145,"column":111}},"145":{"start":{"line":146,"column":0},"end":{"line":146,"column":54}},"146":{"start":{"line":147,"column":0},"end":{"line":147,"column":70}},"147":{"start":{"line":148,"column":0},"end":{"line":148,"column":57}},"148":{"start":{"line":149,"column":0},"end":{"line":149,"column":5}},"149":{"start":{"line":150,"column":0},"end":{"line":150,"column":60}},"150":{"start":{"line":151,"column":0},"end":{"line":151,"column":3}},"151":{"start":{"line":152,"column":0},"end":{"line":152,"column":0}},"152":{"start":{"line":153,"column":0},"end":{"line":153,"column":71}},"153":{"start":{"line":154,"column":0},"end":{"line":154,"column":54}},"154":{"start":{"line":155,"column":0},"end":{"line":155,"column":108}},"155":{"start":{"line":156,"column":0},"end":{"line":156,"column":3}},"156":{"start":{"line":157,"column":0},"end":{"line":157,"column":0}},"157":{"start":{"line":158,"column":0},"end":{"line":158,"column":43}},"158":{"start":{"line":159,"column":0},"end":{"line":159,"column":69}},"159":{"start":{"line":160,"column":0},"end":{"line":160,"column":56}},"160":{"start":{"line":161,"column":0},"end":{"line":161,"column":64}},"161":{"start":{"line":162,"column":0},"end":{"line":162,"column":62}},"162":{"start":{"line":163,"column":0},"end":{"line":163,"column":62}},"163":{"start":{"line":164,"column":0},"end":{"line":164,"column":3}},"164":{"start":{"line":165,"column":0},"end":{"line":165,"column":0}},"165":{"start":{"line":166,"column":0},"end":{"line":166,"column":82}},"166":{"start":{"line":167,"column":0},"end":{"line":167,"column":60}},"167":{"start":{"line":168,"column":0},"end":{"line":168,"column":81}},"168":{"start":{"line":169,"column":0},"end":{"line":169,"column":0}},"169":{"start":{"line":170,"column":0},"end":{"line":170,"column":28}},"170":{"start":{"line":171,"column":0},"end":{"line":171,"column":31}},"171":{"start":{"line":172,"column":0},"end":{"line":172,"column":13}},"172":{"start":{"line":173,"column":0},"end":{"line":173,"column":5}},"173":{"start":{"line":174,"column":0},"end":{"line":174,"column":0}},"174":{"start":{"line":175,"column":0},"end":{"line":175,"column":48}},"175":{"start":{"line":176,"column":0},"end":{"line":176,"column":72}},"176":{"start":{"line":177,"column":0},"end":{"line":177,"column":77}},"177":{"start":{"line":178,"column":0},"end":{"line":178,"column":20}},"178":{"start":{"line":179,"column":0},"end":{"line":179,"column":189}},"179":{"start":{"line":180,"column":0},"end":{"line":180,"column":10}},"180":{"start":{"line":181,"column":0},"end":{"line":181,"column":36}},"181":{"start":{"line":182,"column":0},"end":{"line":182,"column":7}},"182":{"start":{"line":183,"column":0},"end":{"line":183,"column":12}},"183":{"start":{"line":184,"column":0},"end":{"line":184,"column":49}},"184":{"start":{"line":185,"column":0},"end":{"line":185,"column":40}},"185":{"start":{"line":186,"column":0},"end":{"line":186,"column":8}},"186":{"start":{"line":187,"column":0},"end":{"line":187,"column":92}},"187":{"start":{"line":188,"column":0},"end":{"line":188,"column":100}},"188":{"start":{"line":189,"column":0},"end":{"line":189,"column":100}},"189":{"start":{"line":190,"column":0},"end":{"line":190,"column":9}},"190":{"start":{"line":191,"column":0},"end":{"line":191,"column":89}},"191":{"start":{"line":192,"column":0},"end":{"line":192,"column":80}},"192":{"start":{"line":193,"column":0},"end":{"line":193,"column":14}},"193":{"start":{"line":194,"column":0},"end":{"line":194,"column":72}},"194":{"start":{"line":195,"column":0},"end":{"line":195,"column":17}},"195":{"start":{"line":196,"column":0},"end":{"line":196,"column":30}},"196":{"start":{"line":197,"column":0},"end":{"line":197,"column":103}},"197":{"start":{"line":198,"column":0},"end":{"line":198,"column":12}},"198":{"start":{"line":199,"column":0},"end":{"line":199,"column":66}},"199":{"start":{"line":200,"column":0},"end":{"line":200,"column":9}},"200":{"start":{"line":201,"column":0},"end":{"line":201,"column":7}},"201":{"start":{"line":202,"column":0},"end":{"line":202,"column":0}},"202":{"start":{"line":203,"column":0},"end":{"line":203,"column":63}},"203":{"start":{"line":204,"column":0},"end":{"line":204,"column":20}},"204":{"start":{"line":205,"column":0},"end":{"line":205,"column":174}},"205":{"start":{"line":206,"column":0},"end":{"line":206,"column":10}},"206":{"start":{"line":207,"column":0},"end":{"line":207,"column":22}},"207":{"start":{"line":208,"column":0},"end":{"line":208,"column":7}},"208":{"start":{"line":209,"column":0},"end":{"line":209,"column":5}},"209":{"start":{"line":210,"column":0},"end":{"line":210,"column":0}},"210":{"start":{"line":211,"column":0},"end":{"line":211,"column":11}},"211":{"start":{"line":212,"column":0},"end":{"line":212,"column":3}},"212":{"start":{"line":213,"column":0},"end":{"line":213,"column":0}},"213":{"start":{"line":214,"column":0},"end":{"line":214,"column":99}},"214":{"start":{"line":215,"column":0},"end":{"line":215,"column":63}},"215":{"start":{"line":216,"column":0},"end":{"line":216,"column":65}},"216":{"start":{"line":217,"column":0},"end":{"line":217,"column":6}},"217":{"start":{"line":218,"column":0},"end":{"line":218,"column":0}},"218":{"start":{"line":219,"column":0},"end":{"line":219,"column":38}},"219":{"start":{"line":220,"column":0},"end":{"line":220,"column":0}},"220":{"start":{"line":221,"column":0},"end":{"line":221,"column":70}},"221":{"start":{"line":222,"column":0},"end":{"line":222,"column":76}},"222":{"start":{"line":223,"column":0},"end":{"line":223,"column":94}},"223":{"start":{"line":224,"column":0},"end":{"line":224,"column":27}},"224":{"start":{"line":225,"column":0},"end":{"line":225,"column":7}},"225":{"start":{"line":226,"column":0},"end":{"line":226,"column":0}},"226":{"start":{"line":227,"column":0},"end":{"line":227,"column":27}},"227":{"start":{"line":228,"column":0},"end":{"line":228,"column":89}},"228":{"start":{"line":229,"column":0},"end":{"line":229,"column":78}},"229":{"start":{"line":230,"column":0},"end":{"line":230,"column":5}},"230":{"start":{"line":231,"column":0},"end":{"line":231,"column":0}},"231":{"start":{"line":232,"column":0},"end":{"line":232,"column":39}},"232":{"start":{"line":233,"column":0},"end":{"line":233,"column":3}},"233":{"start":{"line":234,"column":0},"end":{"line":234,"column":0}},"234":{"start":{"line":235,"column":0},"end":{"line":235,"column":84}},"235":{"start":{"line":236,"column":0},"end":{"line":236,"column":74}},"236":{"start":{"line":237,"column":0},"end":{"line":237,"column":41}},"237":{"start":{"line":238,"column":0},"end":{"line":238,"column":20}},"238":{"start":{"line":239,"column":0},"end":{"line":239,"column":53}},"239":{"start":{"line":240,"column":0},"end":{"line":240,"column":5}},"240":{"start":{"line":241,"column":0},"end":{"line":241,"column":0}},"241":{"start":{"line":242,"column":0},"end":{"line":242,"column":40}},"242":{"start":{"line":243,"column":0},"end":{"line":243,"column":0}},"243":{"start":{"line":244,"column":0},"end":{"line":244,"column":53}},"244":{"start":{"line":245,"column":0},"end":{"line":245,"column":18}},"245":{"start":{"line":246,"column":0},"end":{"line":246,"column":90}},"246":{"start":{"line":247,"column":0},"end":{"line":247,"column":0}},"247":{"start":{"line":248,"column":0},"end":{"line":248,"column":34}},"248":{"start":{"line":249,"column":0},"end":{"line":249,"column":14}},"249":{"start":{"line":250,"column":0},"end":{"line":250,"column":7}},"250":{"start":{"line":251,"column":0},"end":{"line":251,"column":0}},"251":{"start":{"line":252,"column":0},"end":{"line":252,"column":65}},"252":{"start":{"line":253,"column":0},"end":{"line":253,"column":49}},"253":{"start":{"line":254,"column":0},"end":{"line":254,"column":75}},"254":{"start":{"line":255,"column":0},"end":{"line":255,"column":0}},"255":{"start":{"line":256,"column":0},"end":{"line":256,"column":82}},"256":{"start":{"line":257,"column":0},"end":{"line":257,"column":45}},"257":{"start":{"line":258,"column":0},"end":{"line":258,"column":34}},"258":{"start":{"line":259,"column":0},"end":{"line":259,"column":32}},"259":{"start":{"line":260,"column":0},"end":{"line":260,"column":27}},"260":{"start":{"line":261,"column":0},"end":{"line":261,"column":38}},"261":{"start":{"line":262,"column":0},"end":{"line":262,"column":10}},"262":{"start":{"line":263,"column":0},"end":{"line":263,"column":0}},"263":{"start":{"line":264,"column":0},"end":{"line":264,"column":50}},"264":{"start":{"line":265,"column":0},"end":{"line":265,"column":80}},"265":{"start":{"line":266,"column":0},"end":{"line":266,"column":29}},"266":{"start":{"line":267,"column":0},"end":{"line":267,"column":9}},"267":{"start":{"line":268,"column":0},"end":{"line":268,"column":7}},"268":{"start":{"line":269,"column":0},"end":{"line":269,"column":0}},"269":{"start":{"line":270,"column":0},"end":{"line":270,"column":96}},"270":{"start":{"line":271,"column":0},"end":{"line":271,"column":66}},"271":{"start":{"line":272,"column":0},"end":{"line":272,"column":5}},"272":{"start":{"line":273,"column":0},"end":{"line":273,"column":0}},"273":{"start":{"line":274,"column":0},"end":{"line":274,"column":75}},"274":{"start":{"line":275,"column":0},"end":{"line":275,"column":3}},"275":{"start":{"line":276,"column":0},"end":{"line":276,"column":0}},"276":{"start":{"line":277,"column":0},"end":{"line":277,"column":77}},"277":{"start":{"line":278,"column":0},"end":{"line":278,"column":108}},"278":{"start":{"line":279,"column":0},"end":{"line":279,"column":3}},"279":{"start":{"line":280,"column":0},"end":{"line":280,"column":0}},"280":{"start":{"line":281,"column":0},"end":{"line":281,"column":65}},"281":{"start":{"line":282,"column":0},"end":{"line":282,"column":87}},"282":{"start":{"line":283,"column":0},"end":{"line":283,"column":3}},"283":{"start":{"line":284,"column":0},"end":{"line":284,"column":0}},"284":{"start":{"line":285,"column":0},"end":{"line":285,"column":34}},"285":{"start":{"line":286,"column":0},"end":{"line":286,"column":72}},"286":{"start":{"line":287,"column":0},"end":{"line":287,"column":32}},"287":{"start":{"line":288,"column":0},"end":{"line":288,"column":3}},"288":{"start":{"line":289,"column":0},"end":{"line":289,"column":0}},"289":{"start":{"line":290,"column":0},"end":{"line":290,"column":44}},"290":{"start":{"line":291,"column":0},"end":{"line":291,"column":92}},"291":{"start":{"line":292,"column":0},"end":{"line":292,"column":3}},"292":{"start":{"line":293,"column":0},"end":{"line":293,"column":0}},"293":{"start":{"line":294,"column":0},"end":{"line":294,"column":33}},"294":{"start":{"line":295,"column":0},"end":{"line":295,"column":68}},"295":{"start":{"line":296,"column":0},"end":{"line":296,"column":85}},"296":{"start":{"line":297,"column":0},"end":{"line":297,"column":14}},"297":{"start":{"line":298,"column":0},"end":{"line":298,"column":50}},"298":{"start":{"line":299,"column":0},"end":{"line":299,"column":5}},"299":{"start":{"line":300,"column":0},"end":{"line":300,"column":14}},"300":{"start":{"line":301,"column":0},"end":{"line":301,"column":3}},"301":{"start":{"line":302,"column":0},"end":{"line":302,"column":0}},"302":{"start":{"line":303,"column":0},"end":{"line":303,"column":71}},"303":{"start":{"line":304,"column":0},"end":{"line":304,"column":80}},"304":{"start":{"line":305,"column":0},"end":{"line":305,"column":3}},"305":{"start":{"line":306,"column":0},"end":{"line":306,"column":1}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"38":1,"39":1,"40":1,"41":1,"42":1,"43":1,"44":1,"45":27,"46":27,"47":1,"48":1,"49":32,"50":32,"51":1,"52":1,"53":131,"54":131,"55":131,"56":1,"57":1,"58":36,"59":36,"60":1,"61":1,"62":179,"63":179,"64":179,"65":1,"66":1,"67":1,"68":1,"69":18,"70":18,"71":18,"72":18,"73":18,"74":18,"75":18,"76":1,"77":1,"78":1,"79":1,"80":1,"81":1,"82":1,"83":1,"84":1,"85":1,"86":1,"87":1,"88":0,"89":0,"90":0,"91":1,"92":18,"93":1,"94":1,"95":144,"96":144,"97":1,"98":1,"99":28,"100":27,"101":27,"102":28,"103":28,"104":28,"105":28,"106":21,"107":21,"108":28,"109":7,"110":7,"111":7,"112":21,"113":21,"114":21,"115":1,"116":1,"117":28,"118":28,"119":1,"120":1,"121":19,"122":1,"123":1,"124":18,"125":18,"126":1,"127":1,"128":29,"129":24,"130":24,"131":29,"132":29,"133":0,"134":0,"135":0,"136":0,"137":0,"138":24,"139":24,"140":24,"141":24,"142":1,"143":1,"144":21,"145":1,"146":1,"147":1,"148":1,"149":21,"150":21,"151":1,"152":1,"153":1,"154":1,"155":1,"156":1,"157":1,"158":1,"159":28,"160":28,"161":28,"162":28,"163":28,"164":1,"165":1,"166":1,"167":28,"168":28,"169":28,"170":28,"171":20,"172":20,"173":8,"174":8,"175":28,"176":5,"177":4,"178":4,"179":4,"180":4,"181":4,"182":28,"183":3,"184":3,"185":3,"186":3,"187":3,"188":3,"189":3,"190":3,"191":1,"192":3,"193":2,"194":16,"195":16,"196":16,"197":16,"198":16,"199":16,"200":2,"201":3,"202":3,"203":3,"204":3,"205":3,"206":3,"207":3,"208":3,"209":1,"210":1,"211":1,"212":1,"213":1,"214":7,"215":7,"216":7,"217":7,"218":7,"219":7,"220":7,"221":7,"222":13,"223":2,"224":2,"225":11,"226":11,"227":11,"228":11,"229":11,"230":5,"231":5,"232":5,"233":1,"234":1,"235":1,"236":0,"237":0,"238":0,"239":0,"240":0,"241":0,"242":0,"243":0,"244":0,"245":0,"246":0,"247":0,"248":0,"249":0,"250":0,"251":0,"252":0,"253":0,"254":0,"255":0,"256":0,"257":0,"258":0,"259":0,"260":0,"261":0,"262":0,"263":0,"264":0,"265":0,"266":0,"267":0,"268":0,"269":0,"270":0,"271":0,"272":0,"273":0,"274":0,"275":1,"276":1,"277":25,"278":25,"279":1,"280":1,"281":1,"282":1,"283":1,"284":1,"285":1,"286":1,"287":1,"288":1,"289":1,"290":0,"291":0,"292":1,"293":1,"294":1,"295":18,"296":18,"297":1,"298":1,"299":17,"300":17,"301":1,"302":1,"303":18,"304":18,"305":1},"branchMap":{"0":{"type":"branch","line":45,"loc":{"start":{"line":45,"column":12},"end":{"line":47,"column":3}},"locations":[{"start":{"line":45,"column":12},"end":{"line":47,"column":3}}]},"1":{"type":"branch","line":49,"loc":{"start":{"line":49,"column":2},"end":{"line":51,"column":3}},"locations":[{"start":{"line":49,"column":2},"end":{"line":51,"column":3}}]},"2":{"type":"branch","line":53,"loc":{"start":{"line":53,"column":2},"end":{"line":56,"column":3}},"locations":[{"start":{"line":53,"column":2},"end":{"line":56,"column":3}}]},"3":{"type":"branch","line":58,"loc":{"start":{"line":58,"column":2},"end":{"line":60,"column":3}},"locations":[{"start":{"line":58,"column":2},"end":{"line":60,"column":3}}]},"4":{"type":"branch","line":62,"loc":{"start":{"line":62,"column":2},"end":{"line":65,"column":3}},"locations":[{"start":{"line":62,"column":2},"end":{"line":65,"column":3}}]},"5":{"type":"branch","line":67,"loc":{"start":{"line":67,"column":2},"end":{"line":67,"column":109}},"locations":[{"start":{"line":67,"column":2},"end":{"line":67,"column":109}}]},"6":{"type":"branch","line":69,"loc":{"start":{"line":69,"column":2},"end":{"line":93,"column":3}},"locations":[{"start":{"line":69,"column":2},"end":{"line":93,"column":3}}]},"7":{"type":"branch","line":70,"loc":{"start":{"line":70,"column":75},"end":{"line":70,"column":86}},"locations":[{"start":{"line":70,"column":75},"end":{"line":70,"column":86}}]},"8":{"type":"branch","line":70,"loc":{"start":{"line":70,"column":87},"end":{"line":70,"column":99}},"locations":[{"start":{"line":70,"column":87},"end":{"line":70,"column":99}}]},"9":{"type":"branch","line":76,"loc":{"start":{"line":76,"column":39},"end":{"line":92,"column":5}},"locations":[{"start":{"line":76,"column":39},"end":{"line":92,"column":5}}]},"10":{"type":"branch","line":88,"loc":{"start":{"line":88,"column":7},"end":{"line":91,"column":7}},"locations":[{"start":{"line":88,"column":7},"end":{"line":91,"column":7}}]},"11":{"type":"branch","line":95,"loc":{"start":{"line":95,"column":2},"end":{"line":97,"column":3}},"locations":[{"start":{"line":95,"column":2},"end":{"line":97,"column":3}}]},"12":{"type":"branch","line":99,"loc":{"start":{"line":99,"column":2},"end":{"line":115,"column":3}},"locations":[{"start":{"line":99,"column":2},"end":{"line":115,"column":3}}]},"13":{"type":"branch","line":100,"loc":{"start":{"line":100,"column":16},"end":{"line":102,"column":5}},"locations":[{"start":{"line":100,"column":16},"end":{"line":102,"column":5}}]},"14":{"type":"branch","line":106,"loc":{"start":{"line":106,"column":23},"end":{"line":109,"column":11}},"locations":[{"start":{"line":106,"column":23},"end":{"line":109,"column":11}}]},"15":{"type":"branch","line":109,"loc":{"start":{"line":109,"column":5},"end":{"line":112,"column":5}},"locations":[{"start":{"line":109,"column":5},"end":{"line":112,"column":5}}]},"16":{"type":"branch","line":113,"loc":{"start":{"line":113,"column":-1},"end":{"line":115,"column":3}},"locations":[{"start":{"line":113,"column":-1},"end":{"line":115,"column":3}}]},"17":{"type":"branch","line":117,"loc":{"start":{"line":117,"column":2},"end":{"line":119,"column":3}},"locations":[{"start":{"line":117,"column":2},"end":{"line":119,"column":3}}]},"18":{"type":"branch","line":118,"loc":{"start":{"line":118,"column":52},"end":{"line":118,"column":79}},"locations":[{"start":{"line":118,"column":52},"end":{"line":118,"column":79}}]},"19":{"type":"branch","line":118,"loc":{"start":{"line":118,"column":80},"end":{"line":118,"column":91}},"locations":[{"start":{"line":118,"column":80},"end":{"line":118,"column":91}}]},"20":{"type":"branch","line":121,"loc":{"start":{"line":121,"column":2},"end":{"line":126,"column":3}},"locations":[{"start":{"line":121,"column":2},"end":{"line":126,"column":3}}]},"21":{"type":"branch","line":122,"loc":{"start":{"line":122,"column":81},"end":{"line":124,"column":5}},"locations":[{"start":{"line":122,"column":81},"end":{"line":124,"column":5}}]},"22":{"type":"branch","line":125,"loc":{"start":{"line":125,"column":-1},"end":{"line":126,"column":3}},"locations":[{"start":{"line":125,"column":-1},"end":{"line":126,"column":3}}]},"23":{"type":"branch","line":128,"loc":{"start":{"line":128,"column":10},"end":{"line":142,"column":3}},"locations":[{"start":{"line":128,"column":10},"end":{"line":142,"column":3}}]},"24":{"type":"branch","line":129,"loc":{"start":{"line":129,"column":57},"end":{"line":129,"column":64}},"locations":[{"start":{"line":129,"column":57},"end":{"line":129,"column":64}}]},"25":{"type":"branch","line":130,"loc":{"start":{"line":130,"column":-1},"end":{"line":132,"column":62}},"locations":[{"start":{"line":130,"column":-1},"end":{"line":132,"column":62}}]},"26":{"type":"branch","line":132,"loc":{"start":{"line":132,"column":62},"end":{"line":132,"column":75}},"locations":[{"start":{"line":132,"column":62},"end":{"line":132,"column":75}}]},"27":{"type":"branch","line":133,"loc":{"start":{"line":133,"column":43},"end":{"line":133,"column":95}},"locations":[{"start":{"line":133,"column":43},"end":{"line":133,"column":95}}]},"28":{"type":"branch","line":133,"loc":{"start":{"line":133,"column":97},"end":{"line":138,"column":5}},"locations":[{"start":{"line":133,"column":97},"end":{"line":138,"column":5}}]},"29":{"type":"branch","line":139,"loc":{"start":{"line":139,"column":-1},"end":{"line":142,"column":3}},"locations":[{"start":{"line":139,"column":-1},"end":{"line":142,"column":3}}]},"30":{"type":"branch","line":144,"loc":{"start":{"line":144,"column":10},"end":{"line":151,"column":3}},"locations":[{"start":{"line":144,"column":10},"end":{"line":151,"column":3}}]},"31":{"type":"branch","line":145,"loc":{"start":{"line":145,"column":49},"end":{"line":145,"column":108}},"locations":[{"start":{"line":145,"column":49},"end":{"line":145,"column":108}}]},"32":{"type":"branch","line":145,"loc":{"start":{"line":145,"column":110},"end":{"line":149,"column":5}},"locations":[{"start":{"line":145,"column":110},"end":{"line":149,"column":5}}]},"33":{"type":"branch","line":154,"loc":{"start":{"line":154,"column":10},"end":{"line":156,"column":3}},"locations":[{"start":{"line":154,"column":10},"end":{"line":156,"column":3}}]},"34":{"type":"branch","line":155,"loc":{"start":{"line":155,"column":59},"end":{"line":155,"column":106}},"locations":[{"start":{"line":155,"column":59},"end":{"line":155,"column":106}}]},"35":{"type":"branch","line":159,"loc":{"start":{"line":159,"column":10},"end":{"line":164,"column":3}},"locations":[{"start":{"line":159,"column":10},"end":{"line":164,"column":3}}]},"36":{"type":"branch","line":163,"loc":{"start":{"line":163,"column":12},"end":{"line":163,"column":60}},"locations":[{"start":{"line":163,"column":12},"end":{"line":163,"column":60}}]},"37":{"type":"branch","line":167,"loc":{"start":{"line":167,"column":12},"end":{"line":212,"column":3}},"locations":[{"start":{"line":167,"column":12},"end":{"line":212,"column":3}}]},"38":{"type":"branch","line":171,"loc":{"start":{"line":171,"column":30},"end":{"line":173,"column":5}},"locations":[{"start":{"line":171,"column":30},"end":{"line":173,"column":5}}]},"39":{"type":"branch","line":174,"loc":{"start":{"line":174,"column":-1},"end":{"line":176,"column":71}},"locations":[{"start":{"line":174,"column":-1},"end":{"line":176,"column":71}}]},"40":{"type":"branch","line":176,"loc":{"start":{"line":176,"column":71},"end":{"line":183,"column":11}},"locations":[{"start":{"line":176,"column":71},"end":{"line":183,"column":11}}]},"41":{"type":"branch","line":177,"loc":{"start":{"line":177,"column":76},"end":{"line":182,"column":7}},"locations":[{"start":{"line":177,"column":76},"end":{"line":182,"column":7}}]},"42":{"type":"branch","line":183,"loc":{"start":{"line":183,"column":5},"end":{"line":209,"column":5}},"locations":[{"start":{"line":183,"column":5},"end":{"line":209,"column":5}}]},"43":{"type":"branch","line":191,"loc":{"start":{"line":191,"column":88},"end":{"line":193,"column":13}},"locations":[{"start":{"line":191,"column":88},"end":{"line":193,"column":13}}]},"44":{"type":"branch","line":193,"loc":{"start":{"line":193,"column":7},"end":{"line":201,"column":7}},"locations":[{"start":{"line":193,"column":7},"end":{"line":201,"column":7}}]},"45":{"type":"branch","line":194,"loc":{"start":{"line":194,"column":71},"end":{"line":200,"column":9}},"locations":[{"start":{"line":194,"column":71},"end":{"line":200,"column":9}}]},"46":{"type":"branch","line":210,"loc":{"start":{"line":210,"column":-1},"end":{"line":212,"column":3}},"locations":[{"start":{"line":210,"column":-1},"end":{"line":212,"column":3}}]},"47":{"type":"branch","line":214,"loc":{"start":{"line":214,"column":12},"end":{"line":233,"column":3}},"locations":[{"start":{"line":214,"column":12},"end":{"line":233,"column":3}}]},"48":{"type":"branch","line":222,"loc":{"start":{"line":222,"column":75},"end":{"line":230,"column":5}},"locations":[{"start":{"line":222,"column":75},"end":{"line":230,"column":5}}]},"49":{"type":"branch","line":223,"loc":{"start":{"line":223,"column":48},"end":{"line":223,"column":91}},"locations":[{"start":{"line":223,"column":48},"end":{"line":223,"column":91}}]},"50":{"type":"branch","line":223,"loc":{"start":{"line":223,"column":93},"end":{"line":225,"column":7}},"locations":[{"start":{"line":223,"column":93},"end":{"line":225,"column":7}}]},"51":{"type":"branch","line":226,"loc":{"start":{"line":226,"column":-1},"end":{"line":230,"column":5}},"locations":[{"start":{"line":226,"column":-1},"end":{"line":230,"column":5}}]},"52":{"type":"branch","line":231,"loc":{"start":{"line":231,"column":-1},"end":{"line":233,"column":3}},"locations":[{"start":{"line":231,"column":-1},"end":{"line":233,"column":3}}]},"53":{"type":"branch","line":216,"loc":{"start":{"line":216,"column":6},"end":{"line":216,"column":65}},"locations":[{"start":{"line":216,"column":6},"end":{"line":216,"column":65}}]},"54":{"type":"branch","line":277,"loc":{"start":{"line":277,"column":10},"end":{"line":279,"column":3}},"locations":[{"start":{"line":277,"column":10},"end":{"line":279,"column":3}}]},"55":{"type":"branch","line":281,"loc":{"start":{"line":281,"column":10},"end":{"line":283,"column":3}},"locations":[{"start":{"line":281,"column":10},"end":{"line":283,"column":3}}]},"56":{"type":"branch","line":285,"loc":{"start":{"line":285,"column":2},"end":{"line":288,"column":3}},"locations":[{"start":{"line":285,"column":2},"end":{"line":288,"column":3}}]},"57":{"type":"branch","line":295,"loc":{"start":{"line":295,"column":2},"end":{"line":301,"column":3}},"locations":[{"start":{"line":295,"column":2},"end":{"line":301,"column":3}}]},"58":{"type":"branch","line":297,"loc":{"start":{"line":297,"column":13},"end":{"line":299,"column":5}},"locations":[{"start":{"line":297,"column":13},"end":{"line":299,"column":5}}]},"59":{"type":"branch","line":300,"loc":{"start":{"line":300,"column":-1},"end":{"line":301,"column":3}},"locations":[{"start":{"line":300,"column":-1},"end":{"line":301,"column":3}}]},"60":{"type":"branch","line":303,"loc":{"start":{"line":303,"column":2},"end":{"line":305,"column":3}},"locations":[{"start":{"line":303,"column":2},"end":{"line":305,"column":3}}]}},"b":{"0":[27],"1":[32],"2":[131],"3":[36],"4":[179],"5":[18],"6":[18],"7":[12],"8":[6],"9":[1],"10":[0],"11":[144],"12":[28],"13":[27],"14":[21],"15":[7],"16":[21],"17":[28],"18":[27],"19":[1],"20":[19],"21":[1],"22":[18],"23":[29],"24":[5],"25":[24],"26":[16],"27":[16],"28":[0],"29":[24],"30":[21],"31":[13],"32":[1],"33":[1],"34":[3],"35":[28],"36":[56],"37":[28],"38":[20],"39":[8],"40":[5],"41":[4],"42":[3],"43":[1],"44":[2],"45":[16],"46":[1],"47":[7],"48":[13],"49":[11],"50":[2],"51":[11],"52":[5],"53":[22],"54":[25],"55":[1],"56":[1],"57":[18],"58":[1],"59":[17],"60":[18]},"fnMap":{"0":{"name":"blockToHeader","decl":{"start":{"line":45,"column":12},"end":{"line":47,"column":3}},"loc":{"start":{"line":45,"column":12},"end":{"line":47,"column":3}},"line":45},"1":{"name":"set unfinalizedBlocks","decl":{"start":{"line":49,"column":2},"end":{"line":51,"column":3}},"loc":{"start":{"line":49,"column":2},"end":{"line":51,"column":3}},"line":49},"2":{"name":"get unfinalizedBlocks","decl":{"start":{"line":53,"column":2},"end":{"line":56,"column":3}},"loc":{"start":{"line":53,"column":2},"end":{"line":56,"column":3}},"line":53},"3":{"name":"set finalizedHeader","decl":{"start":{"line":58,"column":2},"end":{"line":60,"column":3}},"loc":{"start":{"line":58,"column":2},"end":{"line":60,"column":3}},"line":58},"4":{"name":"get finalizedHeader","decl":{"start":{"line":62,"column":2},"end":{"line":65,"column":3}},"loc":{"start":{"line":62,"column":2},"end":{"line":65,"column":3}},"line":62},"5":{"name":"BaseUnfinalizedBlocksService","decl":{"start":{"line":67,"column":2},"end":{"line":67,"column":109}},"loc":{"start":{"line":67,"column":2},"end":{"line":67,"column":109}},"line":67},"6":{"name":"init","decl":{"start":{"line":69,"column":2},"end":{"line":93,"column":3}},"loc":{"start":{"line":69,"column":2},"end":{"line":93,"column":3}},"line":69},"7":{"name":"get finalizedBlockNumber","decl":{"start":{"line":95,"column":2},"end":{"line":97,"column":3}},"loc":{"start":{"line":95,"column":2},"end":{"line":97,"column":3}},"line":95},"8":{"name":"processUnfinalizedBlockHeader","decl":{"start":{"line":99,"column":2},"end":{"line":115,"column":3}},"loc":{"start":{"line":99,"column":2},"end":{"line":115,"column":3}},"line":99},"9":{"name":"processUnfinalizedBlocks","decl":{"start":{"line":117,"column":2},"end":{"line":119,"column":3}},"loc":{"start":{"line":117,"column":2},"end":{"line":119,"column":3}},"line":117},"10":{"name":"registerFinalizedBlock","decl":{"start":{"line":121,"column":2},"end":{"line":126,"column":3}},"loc":{"start":{"line":121,"column":2},"end":{"line":126,"column":3}},"line":121},"11":{"name":"registerUnfinalizedBlock","decl":{"start":{"line":128,"column":10},"end":{"line":142,"column":3}},"loc":{"start":{"line":128,"column":10},"end":{"line":142,"column":3}},"line":128},"12":{"name":"deleteFinalizedBlock","decl":{"start":{"line":144,"column":10},"end":{"line":151,"column":3}},"loc":{"start":{"line":144,"column":10},"end":{"line":151,"column":3}},"line":144},"13":{"name":"removeFinalized","decl":{"start":{"line":154,"column":10},"end":{"line":156,"column":3}},"loc":{"start":{"line":154,"column":10},"end":{"line":156,"column":3}},"line":154},"14":{"name":"getClosestRecord","decl":{"start":{"line":159,"column":10},"end":{"line":164,"column":3}},"loc":{"start":{"line":159,"column":10},"end":{"line":164,"column":3}},"line":159},"15":{"name":"hasForked","decl":{"start":{"line":167,"column":12},"end":{"line":212,"column":3}},"loc":{"start":{"line":167,"column":12},"end":{"line":212,"column":3}},"line":167},"16":{"name":"getLastCorrectFinalizedBlock","decl":{"start":{"line":214,"column":12},"end":{"line":233,"column":3}},"loc":{"start":{"line":214,"column":12},"end":{"line":233,"column":3}},"line":214},"17":{"name":"findFinalizedUsingPOI","decl":{"start":{"line":236,"column":12},"end":{"line":275,"column":3}},"loc":{"start":{"line":236,"column":12},"end":{"line":275,"column":3}},"line":236},"18":{"name":"saveUnfinalizedBlocks","decl":{"start":{"line":277,"column":10},"end":{"line":279,"column":3}},"loc":{"start":{"line":277,"column":10},"end":{"line":279,"column":3}},"line":277},"19":{"name":"saveLastFinalizedVerifiedHeight","decl":{"start":{"line":281,"column":10},"end":{"line":283,"column":3}},"loc":{"start":{"line":281,"column":10},"end":{"line":283,"column":3}},"line":281},"20":{"name":"resetUnfinalizedBlocks","decl":{"start":{"line":285,"column":2},"end":{"line":288,"column":3}},"loc":{"start":{"line":285,"column":2},"end":{"line":288,"column":3}},"line":285},"21":{"name":"resetLastFinalizedVerifiedHeight","decl":{"start":{"line":290,"column":2},"end":{"line":292,"column":3}},"loc":{"start":{"line":290,"column":2},"end":{"line":292,"column":3}},"line":290},"22":{"name":"getMetadataUnfinalizedBlocks","decl":{"start":{"line":295,"column":2},"end":{"line":301,"column":3}},"loc":{"start":{"line":295,"column":2},"end":{"line":301,"column":3}},"line":295},"23":{"name":"getLastFinalizedVerifiedHeight","decl":{"start":{"line":303,"column":2},"end":{"line":305,"column":3}},"loc":{"start":{"line":303,"column":2},"end":{"line":305,"column":3}},"line":303}},"f":{"0":27,"1":32,"2":131,"3":36,"4":179,"5":18,"6":18,"7":144,"8":28,"9":28,"10":19,"11":29,"12":21,"13":1,"14":28,"15":28,"16":7,"17":0,"18":25,"19":1,"20":1,"21":0,"22":18,"23":18}},"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/indexer/worker/index.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/indexer/worker/index.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":33}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":39}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":39}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":44}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":53}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":51}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":33}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":25}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":24}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1},"branchMap":{},"b":{},"fnMap":{},"f":{}},"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/indexer/worker/test.store.worker.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/indexer/worker/test.store.worker.ts","all":true,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":40}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":44}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":71}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":0}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":31}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":0}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":61}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":23}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":37}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":3}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":57}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":1}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":0}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":31}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":16}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":3}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":22}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":4}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":13}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":2}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":0}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":38}}},"s":{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0},"branchMap":{"0":{"type":"branch","line":1,"loc":{"start":{"line":1,"column":0},"end":{"line":25,"column":38}},"locations":[{"start":{"line":1,"column":0},"end":{"line":25,"column":38}}]}},"b":{"0":[0]},"fnMap":{"0":{"name":"(empty-report)","decl":{"start":{"line":1,"column":0},"end":{"line":25,"column":38}},"loc":{"start":{"line":1,"column":0},"end":{"line":25,"column":38}},"line":1}},"f":{"0":0}},"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/indexer/worker/utils.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/indexer/worker/utils.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":29}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":50}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":0}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":71}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":0}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":3}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":60}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":55}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":114}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":5}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":44}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":104}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":77}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":39}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":3}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":0}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":35}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":17}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":3}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":0}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":37}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":1}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":0}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":64}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":100}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":61}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":1}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":0}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":50}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":53}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":19}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":65}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":3}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":1}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":77}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":84}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":52}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":88}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":1}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":1,"26":1,"27":0,"28":0,"29":0,"30":1,"31":1,"32":1,"33":0,"34":0,"35":0,"36":1,"37":0,"38":0,"39":0,"40":0,"41":0},"branchMap":{},"b":{},"fnMap":{"0":{"name":"unwrapProxy","decl":{"start":{"line":14,"column":0},"end":{"line":25,"column":1}},"loc":{"start":{"line":14,"column":0},"end":{"line":25,"column":1}},"line":14},"1":{"name":"unwrapProxyArgs","decl":{"start":{"line":28,"column":0},"end":{"line":30,"column":1}},"loc":{"start":{"line":28,"column":0},"end":{"line":30,"column":1}},"line":28},"2":{"name":"BlockUnavailableError","decl":{"start":{"line":33,"column":2},"end":{"line":36,"column":3}},"loc":{"start":{"line":33,"column":2},"end":{"line":36,"column":3}},"line":33},"3":{"name":"isBlockUnavailableError","decl":{"start":{"line":38,"column":0},"end":{"line":42,"column":1}},"loc":{"start":{"line":38,"column":0},"end":{"line":42,"column":1}},"line":38}},"f":{"0":0,"1":0,"2":0,"3":0}},"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/indexer/worker/worker.builder.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/indexer/worker/worker.builder.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":42}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":28}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":39}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":28}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":0}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":33}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":18}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":17}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":2}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":0}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":23}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":22}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":15}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":14}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":2}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":0}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":33}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":22}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":28}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":13}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":2}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":0}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":69}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":37}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":1}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":0}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":71}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":29}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":1}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":0}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":97}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":0}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":82}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":53}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":0}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":25}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":51}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":55}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":0}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":40}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":0}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":14}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":66}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":24}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":34}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":28}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":5}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":16}},"51":{"start":{"line":52,"column":0},"end":{"line":52,"column":105}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":5}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":21}},"54":{"start":{"line":55,"column":0},"end":{"line":55,"column":70}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":0}},"56":{"start":{"line":57,"column":0},"end":{"line":57,"column":36}},"57":{"start":{"line":58,"column":0},"end":{"line":58,"column":27}},"58":{"start":{"line":59,"column":0},"end":{"line":59,"column":30}},"59":{"start":{"line":60,"column":0},"end":{"line":60,"column":67}},"60":{"start":{"line":61,"column":0},"end":{"line":61,"column":7}},"61":{"start":{"line":62,"column":0},"end":{"line":62,"column":78}},"62":{"start":{"line":63,"column":0},"end":{"line":63,"column":7}},"63":{"start":{"line":64,"column":0},"end":{"line":64,"column":3}},"64":{"start":{"line":65,"column":0},"end":{"line":65,"column":0}},"65":{"start":{"line":66,"column":0},"end":{"line":66,"column":60}},"66":{"start":{"line":67,"column":0},"end":{"line":67,"column":30}},"67":{"start":{"line":68,"column":0},"end":{"line":68,"column":47}},"68":{"start":{"line":69,"column":0},"end":{"line":69,"column":74}},"69":{"start":{"line":70,"column":0},"end":{"line":70,"column":0}},"70":{"start":{"line":71,"column":0},"end":{"line":71,"column":50}},"71":{"start":{"line":72,"column":0},"end":{"line":72,"column":14}},"72":{"start":{"line":73,"column":0},"end":{"line":73,"column":74}},"73":{"start":{"line":74,"column":0},"end":{"line":74,"column":7}},"74":{"start":{"line":75,"column":0},"end":{"line":75,"column":36}},"75":{"start":{"line":76,"column":0},"end":{"line":76,"column":39}},"76":{"start":{"line":77,"column":0},"end":{"line":77,"column":12}},"77":{"start":{"line":78,"column":0},"end":{"line":78,"column":60}},"78":{"start":{"line":79,"column":0},"end":{"line":79,"column":5}},"79":{"start":{"line":80,"column":0},"end":{"line":80,"column":3}},"80":{"start":{"line":81,"column":0},"end":{"line":81,"column":0}},"81":{"start":{"line":82,"column":0},"end":{"line":82,"column":60}},"82":{"start":{"line":83,"column":0},"end":{"line":83,"column":38}},"83":{"start":{"line":84,"column":0},"end":{"line":84,"column":0}},"84":{"start":{"line":85,"column":0},"end":{"line":85,"column":14}},"85":{"start":{"line":86,"column":0},"end":{"line":86,"column":39}},"86":{"start":{"line":87,"column":0},"end":{"line":87,"column":19}},"87":{"start":{"line":88,"column":0},"end":{"line":88,"column":16}},"88":{"start":{"line":89,"column":0},"end":{"line":89,"column":69}},"89":{"start":{"line":90,"column":0},"end":{"line":90,"column":10}},"90":{"start":{"line":91,"column":0},"end":{"line":91,"column":9}},"91":{"start":{"line":92,"column":0},"end":{"line":92,"column":13}},"92":{"start":{"line":93,"column":0},"end":{"line":93,"column":5}},"93":{"start":{"line":94,"column":0},"end":{"line":94,"column":0}},"94":{"start":{"line":95,"column":0},"end":{"line":95,"column":9}},"95":{"start":{"line":96,"column":0},"end":{"line":96,"column":40}},"96":{"start":{"line":97,"column":0},"end":{"line":97,"column":0}},"97":{"start":{"line":98,"column":0},"end":{"line":98,"column":39}},"98":{"start":{"line":99,"column":0},"end":{"line":99,"column":19}},"99":{"start":{"line":100,"column":0},"end":{"line":100,"column":20}},"100":{"start":{"line":101,"column":0},"end":{"line":101,"column":9}},"101":{"start":{"line":102,"column":0},"end":{"line":102,"column":17}},"102":{"start":{"line":103,"column":0},"end":{"line":103,"column":39}},"103":{"start":{"line":104,"column":0},"end":{"line":104,"column":19}},"104":{"start":{"line":105,"column":0},"end":{"line":105,"column":17}},"105":{"start":{"line":106,"column":0},"end":{"line":106,"column":9}},"106":{"start":{"line":107,"column":0},"end":{"line":107,"column":5}},"107":{"start":{"line":108,"column":0},"end":{"line":108,"column":3}},"108":{"start":{"line":109,"column":0},"end":{"line":109,"column":0}},"109":{"start":{"line":110,"column":0},"end":{"line":110,"column":72}},"110":{"start":{"line":111,"column":0},"end":{"line":111,"column":31}},"111":{"start":{"line":112,"column":0},"end":{"line":112,"column":0}},"112":{"start":{"line":113,"column":0},"end":{"line":113,"column":48}},"113":{"start":{"line":114,"column":0},"end":{"line":114,"column":11}},"114":{"start":{"line":115,"column":0},"end":{"line":115,"column":55}},"115":{"start":{"line":116,"column":0},"end":{"line":116,"column":22}},"116":{"start":{"line":117,"column":0},"end":{"line":117,"column":47}},"117":{"start":{"line":118,"column":0},"end":{"line":118,"column":45}},"118":{"start":{"line":119,"column":0},"end":{"line":119,"column":22}},"119":{"start":{"line":120,"column":0},"end":{"line":120,"column":18}},"120":{"start":{"line":121,"column":0},"end":{"line":121,"column":26}},"121":{"start":{"line":122,"column":0},"end":{"line":122,"column":11}},"122":{"start":{"line":123,"column":0},"end":{"line":123,"column":10}},"123":{"start":{"line":124,"column":0},"end":{"line":124,"column":0}},"124":{"start":{"line":125,"column":0},"end":{"line":125,"column":40}},"125":{"start":{"line":126,"column":0},"end":{"line":126,"column":13}},"126":{"start":{"line":127,"column":0},"end":{"line":127,"column":23}},"127":{"start":{"line":128,"column":0},"end":{"line":128,"column":15}},"128":{"start":{"line":129,"column":0},"end":{"line":129,"column":11}},"129":{"start":{"line":130,"column":0},"end":{"line":130,"column":19}},"130":{"start":{"line":131,"column":0},"end":{"line":131,"column":26}},"131":{"start":{"line":132,"column":0},"end":{"line":132,"column":19}},"132":{"start":{"line":133,"column":0},"end":{"line":133,"column":96}},"133":{"start":{"line":134,"column":0},"end":{"line":134,"column":10}},"134":{"start":{"line":135,"column":0},"end":{"line":135,"column":18}},"135":{"start":{"line":136,"column":0},"end":{"line":136,"column":7}},"136":{"start":{"line":137,"column":0},"end":{"line":137,"column":7}},"137":{"start":{"line":138,"column":0},"end":{"line":138,"column":3}},"138":{"start":{"line":139,"column":0},"end":{"line":139,"column":1}},"139":{"start":{"line":140,"column":0},"end":{"line":140,"column":0}},"140":{"start":{"line":141,"column":0},"end":{"line":141,"column":67}},"141":{"start":{"line":142,"column":0},"end":{"line":142,"column":66}},"142":{"start":{"line":143,"column":0},"end":{"line":143,"column":27}},"143":{"start":{"line":144,"column":0},"end":{"line":144,"column":0}},"144":{"start":{"line":145,"column":0},"end":{"line":145,"column":86}},"145":{"start":{"line":146,"column":0},"end":{"line":146,"column":70}},"146":{"start":{"line":147,"column":0},"end":{"line":147,"column":3}},"147":{"start":{"line":148,"column":0},"end":{"line":148,"column":0}},"148":{"start":{"line":149,"column":0},"end":{"line":149,"column":64}},"149":{"start":{"line":150,"column":0},"end":{"line":150,"column":27}},"150":{"start":{"line":151,"column":0},"end":{"line":151,"column":15}},"151":{"start":{"line":152,"column":0},"end":{"line":152,"column":18}},"152":{"start":{"line":153,"column":0},"end":{"line":153,"column":24}},"153":{"start":{"line":154,"column":0},"end":{"line":154,"column":66}},"154":{"start":{"line":155,"column":0},"end":{"line":155,"column":0}},"155":{"start":{"line":156,"column":0},"end":{"line":156,"column":43}},"156":{"start":{"line":157,"column":0},"end":{"line":157,"column":3}},"157":{"start":{"line":158,"column":0},"end":{"line":158,"column":0}},"158":{"start":{"line":159,"column":0},"end":{"line":159,"column":86}},"159":{"start":{"line":160,"column":0},"end":{"line":160,"column":32}},"160":{"start":{"line":161,"column":0},"end":{"line":161,"column":30}},"161":{"start":{"line":162,"column":0},"end":{"line":162,"column":3}},"162":{"start":{"line":163,"column":0},"end":{"line":163,"column":1}},"163":{"start":{"line":164,"column":0},"end":{"line":164,"column":0}},"164":{"start":{"line":165,"column":0},"end":{"line":165,"column":60}},"165":{"start":{"line":166,"column":0},"end":{"line":166,"column":62}},"166":{"start":{"line":167,"column":0},"end":{"line":167,"column":26}},"167":{"start":{"line":168,"column":0},"end":{"line":168,"column":0}},"168":{"start":{"line":169,"column":0},"end":{"line":169,"column":5}},"169":{"start":{"line":170,"column":0},"end":{"line":170,"column":38}},"170":{"start":{"line":171,"column":0},"end":{"line":171,"column":91}},"171":{"start":{"line":172,"column":0},"end":{"line":172,"column":62}},"172":{"start":{"line":173,"column":0},"end":{"line":173,"column":75}},"173":{"start":{"line":174,"column":0},"end":{"line":174,"column":7}},"174":{"start":{"line":175,"column":0},"end":{"line":175,"column":119}},"175":{"start":{"line":176,"column":0},"end":{"line":176,"column":91}},"176":{"start":{"line":177,"column":0},"end":{"line":177,"column":0}},"177":{"start":{"line":178,"column":0},"end":{"line":178,"column":40}},"178":{"start":{"line":179,"column":0},"end":{"line":179,"column":47}},"179":{"start":{"line":180,"column":0},"end":{"line":180,"column":7}},"180":{"start":{"line":181,"column":0},"end":{"line":181,"column":0}},"181":{"start":{"line":182,"column":0},"end":{"line":182,"column":47}},"182":{"start":{"line":183,"column":0},"end":{"line":183,"column":55}},"183":{"start":{"line":184,"column":0},"end":{"line":184,"column":7}},"184":{"start":{"line":185,"column":0},"end":{"line":185,"column":0}},"185":{"start":{"line":186,"column":0},"end":{"line":186,"column":38}},"186":{"start":{"line":187,"column":0},"end":{"line":187,"column":59}},"187":{"start":{"line":188,"column":0},"end":{"line":188,"column":21}},"188":{"start":{"line":189,"column":0},"end":{"line":189,"column":27}},"189":{"start":{"line":190,"column":0},"end":{"line":190,"column":7}},"190":{"start":{"line":191,"column":0},"end":{"line":191,"column":7}},"191":{"start":{"line":192,"column":0},"end":{"line":192,"column":3}},"192":{"start":{"line":193,"column":0},"end":{"line":193,"column":0}},"193":{"start":{"line":194,"column":0},"end":{"line":194,"column":64}},"194":{"start":{"line":195,"column":0},"end":{"line":195,"column":17}},"195":{"start":{"line":196,"column":0},"end":{"line":196,"column":27}},"196":{"start":{"line":197,"column":0},"end":{"line":197,"column":15}},"197":{"start":{"line":198,"column":0},"end":{"line":198,"column":17}},"198":{"start":{"line":199,"column":0},"end":{"line":199,"column":19}},"199":{"start":{"line":200,"column":0},"end":{"line":200,"column":20}},"200":{"start":{"line":201,"column":0},"end":{"line":201,"column":30}},"201":{"start":{"line":202,"column":0},"end":{"line":202,"column":32}},"202":{"start":{"line":203,"column":0},"end":{"line":203,"column":48}},"203":{"start":{"line":204,"column":0},"end":{"line":204,"column":9}},"204":{"start":{"line":205,"column":0},"end":{"line":205,"column":16}},"205":{"start":{"line":206,"column":0},"end":{"line":206,"column":14}},"206":{"start":{"line":207,"column":0},"end":{"line":207,"column":14}},"207":{"start":{"line":208,"column":0},"end":{"line":208,"column":6}},"208":{"start":{"line":209,"column":0},"end":{"line":209,"column":0}},"209":{"start":{"line":210,"column":0},"end":{"line":210,"column":35}},"210":{"start":{"line":211,"column":0},"end":{"line":211,"column":3}},"211":{"start":{"line":212,"column":0},"end":{"line":212,"column":0}},"212":{"start":{"line":213,"column":0},"end":{"line":213,"column":86}},"213":{"start":{"line":214,"column":0},"end":{"line":214,"column":32}},"214":{"start":{"line":215,"column":0},"end":{"line":215,"column":30}},"215":{"start":{"line":216,"column":0},"end":{"line":216,"column":3}},"216":{"start":{"line":217,"column":0},"end":{"line":217,"column":0}},"217":{"start":{"line":218,"column":0},"end":{"line":218,"column":38}},"218":{"start":{"line":219,"column":0},"end":{"line":219,"column":35}},"219":{"start":{"line":220,"column":0},"end":{"line":220,"column":3}},"220":{"start":{"line":221,"column":0},"end":{"line":221,"column":1}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":6,"26":6,"27":6,"28":1,"29":4,"30":4,"31":4,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"38":1,"39":1,"40":1,"41":1,"42":1,"43":1,"44":1,"45":2,"46":2,"47":2,"48":2,"49":2,"50":2,"51":0,"52":0,"53":2,"54":2,"55":2,"56":2,"57":2,"58":2,"59":0,"60":0,"61":2,"62":2,"63":2,"64":1,"65":1,"66":4,"67":2,"68":2,"69":2,"70":2,"71":2,"72":0,"73":0,"74":2,"75":2,"76":2,"77":0,"78":0,"79":4,"80":1,"81":1,"82":2,"83":2,"84":2,"85":0,"86":0,"87":0,"88":0,"89":0,"90":0,"91":0,"92":0,"93":2,"94":2,"95":2,"96":2,"97":2,"98":2,"99":2,"100":2,"101":2,"102":0,"103":0,"104":0,"105":0,"106":0,"107":2,"108":1,"109":1,"110":2,"111":2,"112":2,"113":2,"114":2,"115":2,"116":0,"117":0,"118":0,"119":2,"120":2,"121":2,"122":2,"123":2,"124":2,"125":2,"126":2,"127":2,"128":2,"129":2,"130":0,"131":0,"132":0,"133":0,"134":0,"135":0,"136":2,"137":2,"138":1,"139":1,"140":1,"141":1,"142":1,"143":1,"144":1,"145":0,"146":0,"147":1,"148":1,"149":0,"150":0,"151":0,"152":0,"153":0,"154":0,"155":0,"156":0,"157":1,"158":1,"159":1,"160":0,"161":0,"162":1,"163":1,"164":1,"165":1,"166":1,"167":1,"168":1,"169":1,"170":1,"171":1,"172":1,"173":1,"174":1,"175":2,"176":2,"177":2,"178":0,"179":2,"180":2,"181":2,"182":0,"183":2,"184":2,"185":2,"186":2,"187":2,"188":0,"189":0,"190":2,"191":2,"192":1,"193":1,"194":2,"195":2,"196":2,"197":2,"198":2,"199":2,"200":2,"201":2,"202":2,"203":2,"204":2,"205":2,"206":2,"207":2,"208":2,"209":2,"210":2,"211":1,"212":1,"213":1,"214":2,"215":2,"216":1,"217":1,"218":2,"219":2,"220":1},"branchMap":{"0":{"type":"branch","line":26,"loc":{"start":{"line":26,"column":0},"end":{"line":28,"column":1}},"locations":[{"start":{"line":26,"column":0},"end":{"line":28,"column":1}}]},"1":{"type":"branch","line":30,"loc":{"start":{"line":30,"column":0},"end":{"line":32,"column":1}},"locations":[{"start":{"line":30,"column":0},"end":{"line":32,"column":1}}]},"2":{"type":"branch","line":45,"loc":{"start":{"line":45,"column":2},"end":{"line":64,"column":3}},"locations":[{"start":{"line":45,"column":2},"end":{"line":64,"column":3}}]},"3":{"type":"branch","line":51,"loc":{"start":{"line":51,"column":15},"end":{"line":53,"column":5}},"locations":[{"start":{"line":51,"column":15},"end":{"line":53,"column":5}}]},"4":{"type":"branch","line":55,"loc":{"start":{"line":55,"column":28},"end":{"line":55,"column":68}},"locations":[{"start":{"line":55,"column":28},"end":{"line":55,"column":68}}]},"5":{"type":"branch","line":58,"loc":{"start":{"line":58,"column":18},"end":{"line":63,"column":5}},"locations":[{"start":{"line":58,"column":18},"end":{"line":63,"column":5}}]},"6":{"type":"branch","line":59,"loc":{"start":{"line":59,"column":29},"end":{"line":61,"column":7}},"locations":[{"start":{"line":59,"column":29},"end":{"line":61,"column":7}}]},"7":{"type":"branch","line":62,"loc":{"start":{"line":62,"column":33},"end":{"line":62,"column":75}},"locations":[{"start":{"line":62,"column":33},"end":{"line":62,"column":75}}]},"8":{"type":"branch","line":66,"loc":{"start":{"line":66,"column":10},"end":{"line":80,"column":3}},"locations":[{"start":{"line":66,"column":10},"end":{"line":80,"column":3}}]},"9":{"type":"branch","line":67,"loc":{"start":{"line":67,"column":29},"end":{"line":79,"column":5}},"locations":[{"start":{"line":67,"column":29},"end":{"line":79,"column":5}}]},"10":{"type":"branch","line":72,"loc":{"start":{"line":72,"column":7},"end":{"line":74,"column":7}},"locations":[{"start":{"line":72,"column":7},"end":{"line":74,"column":7}}]},"11":{"type":"branch","line":77,"loc":{"start":{"line":77,"column":5},"end":{"line":79,"column":5}},"locations":[{"start":{"line":77,"column":5},"end":{"line":79,"column":5}}]},"12":{"type":"branch","line":82,"loc":{"start":{"line":82,"column":10},"end":{"line":108,"column":3}},"locations":[{"start":{"line":82,"column":10},"end":{"line":108,"column":3}}]},"13":{"type":"branch","line":85,"loc":{"start":{"line":85,"column":13},"end":{"line":93,"column":5}},"locations":[{"start":{"line":85,"column":13},"end":{"line":93,"column":5}}]},"14":{"type":"branch","line":102,"loc":{"start":{"line":102,"column":6},"end":{"line":107,"column":5}},"locations":[{"start":{"line":102,"column":6},"end":{"line":107,"column":5}}]},"15":{"type":"branch","line":110,"loc":{"start":{"line":110,"column":12},"end":{"line":138,"column":3}},"locations":[{"start":{"line":110,"column":12},"end":{"line":138,"column":3}}]},"16":{"type":"branch","line":113,"loc":{"start":{"line":113,"column":26},"end":{"line":137,"column":5}},"locations":[{"start":{"line":113,"column":26},"end":{"line":137,"column":5}}]},"17":{"type":"branch","line":130,"loc":{"start":{"line":130,"column":8},"end":{"line":136,"column":7}},"locations":[{"start":{"line":130,"column":8},"end":{"line":136,"column":7}}]},"18":{"type":"branch","line":115,"loc":{"start":{"line":115,"column":37},"end":{"line":123,"column":9}},"locations":[{"start":{"line":115,"column":37},"end":{"line":123,"column":9}}]},"19":{"type":"branch","line":116,"loc":{"start":{"line":116,"column":21},"end":{"line":120,"column":17}},"locations":[{"start":{"line":116,"column":21},"end":{"line":120,"column":17}}]},"20":{"type":"branch","line":175,"loc":{"start":{"line":175,"column":2},"end":{"line":192,"column":3}},"locations":[{"start":{"line":175,"column":2},"end":{"line":192,"column":3}}]},"21":{"type":"branch","line":186,"loc":{"start":{"line":186,"column":27},"end":{"line":191,"column":5}},"locations":[{"start":{"line":186,"column":27},"end":{"line":191,"column":5}}]},"22":{"type":"branch","line":188,"loc":{"start":{"line":188,"column":20},"end":{"line":190,"column":7}},"locations":[{"start":{"line":188,"column":20},"end":{"line":190,"column":7}}]},"23":{"type":"branch","line":194,"loc":{"start":{"line":194,"column":9},"end":{"line":211,"column":3}},"locations":[{"start":{"line":194,"column":9},"end":{"line":211,"column":3}}]},"24":{"type":"branch","line":214,"loc":{"start":{"line":214,"column":12},"end":{"line":216,"column":3}},"locations":[{"start":{"line":214,"column":12},"end":{"line":216,"column":3}}]},"25":{"type":"branch","line":218,"loc":{"start":{"line":218,"column":2},"end":{"line":220,"column":3}},"locations":[{"start":{"line":218,"column":2},"end":{"line":220,"column":3}}]}},"b":{"0":[6],"1":[4],"2":[2],"3":[0],"4":[4],"5":[2],"6":[0],"7":[2],"8":[4],"9":[2],"10":[0],"11":[0],"12":[2],"13":[0],"14":[0],"15":[2],"16":[2],"17":[0],"18":[2],"19":[0],"20":[2],"21":[2],"22":[0],"23":[2],"24":[2],"25":[2]},"fnMap":{"0":{"name":"isRequest","decl":{"start":{"line":26,"column":0},"end":{"line":28,"column":1}},"loc":{"start":{"line":26,"column":0},"end":{"line":28,"column":1}},"line":26},"1":{"name":"isResponse","decl":{"start":{"line":30,"column":0},"end":{"line":32,"column":1}},"loc":{"start":{"line":30,"column":0},"end":{"line":32,"column":1}},"line":30},"2":{"name":"WorkerIO","decl":{"start":{"line":45,"column":2},"end":{"line":64,"column":3}},"loc":{"start":{"line":45,"column":2},"end":{"line":64,"column":3}},"line":45},"3":{"name":"Object.assign","decl":{"start":{"line":62,"column":33},"end":{"line":62,"column":75}},"loc":{"start":{"line":62,"column":33},"end":{"line":62,"column":75}},"line":62},"4":{"name":"handleMessage","decl":{"start":{"line":66,"column":10},"end":{"line":80,"column":3}},"loc":{"start":{"line":66,"column":10},"end":{"line":80,"column":3}},"line":66},"5":{"name":"handleRequest","decl":{"start":{"line":82,"column":10},"end":{"line":108,"column":3}},"loc":{"start":{"line":82,"column":10},"end":{"line":108,"column":3}},"line":82},"6":{"name":"execute","decl":{"start":{"line":110,"column":12},"end":{"line":138,"column":3}},"loc":{"start":{"line":110,"column":12},"end":{"line":138,"column":3}},"line":110},"7":{"name":"responseListeners.","decl":{"start":{"line":115,"column":37},"end":{"line":123,"column":9}},"loc":{"start":{"line":115,"column":37},"end":{"line":123,"column":9}},"line":115},"8":{"name":"WorkerHost","decl":{"start":{"line":145,"column":2},"end":{"line":147,"column":3}},"loc":{"start":{"line":145,"column":2},"end":{"line":147,"column":3}},"line":145},"9":{"name":"create","decl":{"start":{"line":149,"column":9},"end":{"line":157,"column":3}},"loc":{"start":{"line":149,"column":9},"end":{"line":157,"column":3}},"line":149},"10":{"name":"getReqId","decl":{"start":{"line":160,"column":12},"end":{"line":162,"column":3}},"loc":{"start":{"line":160,"column":12},"end":{"line":162,"column":3}},"line":160},"11":{"name":"Worker","decl":{"start":{"line":175,"column":2},"end":{"line":192,"column":3}},"loc":{"start":{"line":175,"column":2},"end":{"line":192,"column":3}},"line":175},"12":{"name":"create","decl":{"start":{"line":194,"column":9},"end":{"line":211,"column":3}},"loc":{"start":{"line":194,"column":9},"end":{"line":211,"column":3}},"line":194},"13":{"name":"getReqId","decl":{"start":{"line":214,"column":12},"end":{"line":216,"column":3}},"loc":{"start":{"line":214,"column":12},"end":{"line":216,"column":3}},"line":214},"14":{"name":"terminate","decl":{"start":{"line":218,"column":2},"end":{"line":220,"column":3}},"loc":{"start":{"line":218,"column":2},"end":{"line":220,"column":3}},"line":218}},"f":{"0":6,"1":4,"2":2,"3":2,"4":4,"5":2,"6":2,"7":2,"8":0,"9":0,"10":0,"11":2,"12":2,"13":2,"14":2}},"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/indexer/worker/worker.cache.service.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/indexer/worker/worker.cache.service.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":44}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":42}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":40}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":40}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":0}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":25}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":51}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":38}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":2}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":0}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":75}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":0}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":61}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":10}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":40}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":40}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":4}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":2}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":0}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":61}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":10}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":36}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":36}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":4}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":1}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":0}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":13}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":41}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":40}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":23}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":54}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":5}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":3}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":0}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":21}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":39}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":3}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":1}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":0,"17":0,"18":0,"19":0,"20":0,"21":1,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":1,"29":1,"30":1,"31":1,"32":0,"33":0,"34":0,"35":0,"36":1,"37":1,"38":0,"39":0,"40":1},"branchMap":{},"b":{},"fnMap":{"0":{"name":"hostCacheToCache","decl":{"start":{"line":16,"column":32},"end":{"line":21,"column":2}},"loc":{"start":{"line":16,"column":32},"end":{"line":21,"column":2}},"line":16},"1":{"name":"cacheHostFunctions","decl":{"start":{"line":23,"column":0},"end":{"line":28,"column":1}},"loc":{"start":{"line":23,"column":0},"end":{"line":28,"column":1}},"line":23},"2":{"name":"WorkerInMemoryCacheService","decl":{"start":{"line":32,"column":2},"end":{"line":36,"column":3}},"loc":{"start":{"line":32,"column":2},"end":{"line":36,"column":3}},"line":32},"3":{"name":"getCache","decl":{"start":{"line":38,"column":2},"end":{"line":40,"column":3}},"loc":{"start":{"line":38,"column":2},"end":{"line":40,"column":3}},"line":38}},"f":{"0":0,"1":0,"2":0,"3":0}},"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/indexer/worker/worker.connectionPoolState.manager.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/indexer/worker/worker.connectionPoolState.manager.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":49}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":42}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":56}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":57}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":8}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":29}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":21}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":30}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":40}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":0}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":42}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":95}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":78}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":78}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":21}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":12}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":41}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":76}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":21}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":13}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":35}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":21}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":53}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":65}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":108}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":107}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":56}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":2}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":0}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":84}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":33}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":25}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":39}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":37}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":30}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":30}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":28}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":30}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":33}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":2}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":0}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":83}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":52}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":31}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":10}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":89}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":105}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":100}},"51":{"start":{"line":52,"column":0},"end":{"line":52,"column":98}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":99}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":99}},"54":{"start":{"line":55,"column":0},"end":{"line":55,"column":95}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":99}},"56":{"start":{"line":57,"column":0},"end":{"line":57,"column":105}},"57":{"start":{"line":58,"column":0},"end":{"line":58,"column":4}},"58":{"start":{"line":59,"column":0},"end":{"line":59,"column":1}},"59":{"start":{"line":60,"column":0},"end":{"line":60,"column":0}},"60":{"start":{"line":61,"column":0},"end":{"line":61,"column":13}},"61":{"start":{"line":62,"column":0},"end":{"line":62,"column":79}},"62":{"start":{"line":63,"column":0},"end":{"line":63,"column":43}},"63":{"start":{"line":64,"column":0},"end":{"line":64,"column":1}},"64":{"start":{"line":65,"column":0},"end":{"line":65,"column":59}},"65":{"start":{"line":66,"column":0},"end":{"line":66,"column":23}},"66":{"start":{"line":67,"column":0},"end":{"line":67,"column":54}},"67":{"start":{"line":68,"column":0},"end":{"line":68,"column":5}},"68":{"start":{"line":69,"column":0},"end":{"line":69,"column":3}},"69":{"start":{"line":70,"column":0},"end":{"line":70,"column":0}},"70":{"start":{"line":71,"column":0},"end":{"line":71,"column":94}},"71":{"start":{"line":72,"column":0},"end":{"line":72,"column":70}},"72":{"start":{"line":73,"column":0},"end":{"line":73,"column":3}},"73":{"start":{"line":74,"column":0},"end":{"line":74,"column":0}},"74":{"start":{"line":75,"column":0},"end":{"line":75,"column":76}},"75":{"start":{"line":76,"column":0},"end":{"line":76,"column":61}},"76":{"start":{"line":77,"column":0},"end":{"line":77,"column":3}},"77":{"start":{"line":78,"column":0},"end":{"line":78,"column":0}},"78":{"start":{"line":79,"column":0},"end":{"line":79,"column":61}},"79":{"start":{"line":80,"column":0},"end":{"line":80,"column":21}},"80":{"start":{"line":81,"column":0},"end":{"line":81,"column":12}},"81":{"start":{"line":82,"column":0},"end":{"line":82,"column":40}},"82":{"start":{"line":83,"column":0},"end":{"line":83,"column":73}},"83":{"start":{"line":84,"column":0},"end":{"line":84,"column":3}},"84":{"start":{"line":85,"column":0},"end":{"line":85,"column":0}},"85":{"start":{"line":86,"column":0},"end":{"line":86,"column":61}},"86":{"start":{"line":87,"column":0},"end":{"line":87,"column":21}},"87":{"start":{"line":88,"column":0},"end":{"line":88,"column":13}},"88":{"start":{"line":89,"column":0},"end":{"line":89,"column":35}},"89":{"start":{"line":90,"column":0},"end":{"line":90,"column":20}},"90":{"start":{"line":91,"column":0},"end":{"line":91,"column":78}},"91":{"start":{"line":92,"column":0},"end":{"line":92,"column":3}},"92":{"start":{"line":93,"column":0},"end":{"line":93,"column":0}},"93":{"start":{"line":94,"column":0},"end":{"line":94,"column":52}},"94":{"start":{"line":95,"column":0},"end":{"line":95,"column":49}},"95":{"start":{"line":96,"column":0},"end":{"line":96,"column":3}},"96":{"start":{"line":97,"column":0},"end":{"line":97,"column":0}},"97":{"start":{"line":98,"column":0},"end":{"line":98,"column":64}},"98":{"start":{"line":99,"column":0},"end":{"line":99,"column":57}},"99":{"start":{"line":100,"column":0},"end":{"line":100,"column":3}},"100":{"start":{"line":101,"column":0},"end":{"line":101,"column":0}},"101":{"start":{"line":102,"column":0},"end":{"line":102,"column":61}},"102":{"start":{"line":103,"column":0},"end":{"line":103,"column":82}},"103":{"start":{"line":104,"column":0},"end":{"line":104,"column":74}},"104":{"start":{"line":105,"column":0},"end":{"line":105,"column":3}},"105":{"start":{"line":106,"column":0},"end":{"line":106,"column":0}},"106":{"start":{"line":107,"column":0},"end":{"line":107,"column":61}},"107":{"start":{"line":108,"column":0},"end":{"line":108,"column":81}},"108":{"start":{"line":109,"column":0},"end":{"line":109,"column":76}},"109":{"start":{"line":110,"column":0},"end":{"line":110,"column":3}},"110":{"start":{"line":111,"column":0},"end":{"line":111,"column":0}},"111":{"start":{"line":112,"column":0},"end":{"line":112,"column":111}},"112":{"start":{"line":113,"column":0},"end":{"line":113,"column":63}},"113":{"start":{"line":114,"column":0},"end":{"line":114,"column":3}},"114":{"start":{"line":115,"column":0},"end":{"line":115,"column":0}},"115":{"start":{"line":116,"column":0},"end":{"line":116,"column":110}},"116":{"start":{"line":117,"column":0},"end":{"line":117,"column":59}},"117":{"start":{"line":118,"column":0},"end":{"line":118,"column":3}},"118":{"start":{"line":119,"column":0},"end":{"line":119,"column":0}},"119":{"start":{"line":120,"column":0},"end":{"line":120,"column":55}},"120":{"start":{"line":121,"column":0},"end":{"line":121,"column":52}},"121":{"start":{"line":122,"column":0},"end":{"line":122,"column":3}},"122":{"start":{"line":123,"column":0},"end":{"line":123,"column":1}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"38":1,"39":1,"40":1,"41":1,"42":1,"43":1,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"59":1,"60":1,"61":1,"62":1,"63":1,"64":1,"65":0,"66":0,"67":0,"68":0,"69":1,"70":1,"71":0,"72":0,"73":1,"74":1,"75":0,"76":0,"77":1,"78":1,"79":0,"80":0,"81":0,"82":0,"83":0,"84":1,"85":1,"86":0,"87":0,"88":0,"89":0,"90":0,"91":0,"92":1,"93":1,"94":0,"95":0,"96":1,"97":1,"98":0,"99":0,"100":1,"101":1,"102":1,"103":0,"104":0,"105":1,"106":1,"107":1,"108":0,"109":0,"110":1,"111":1,"112":0,"113":0,"114":1,"115":1,"116":0,"117":0,"118":1,"119":1,"120":0,"121":0,"122":1},"branchMap":{},"b":{},"fnMap":{"0":{"name":"connectionPoolStateHostFunctions","decl":{"start":{"line":45,"column":0},"end":{"line":59,"column":1}},"loc":{"start":{"line":45,"column":0},"end":{"line":59,"column":1}},"line":45},"1":{"name":"WorkerConnectionPoolStateManager","decl":{"start":{"line":65,"column":2},"end":{"line":69,"column":3}},"loc":{"start":{"line":65,"column":2},"end":{"line":69,"column":3}},"line":65},"2":{"name":"getNextConnectedEndpoint","decl":{"start":{"line":71,"column":2},"end":{"line":73,"column":3}},"loc":{"start":{"line":71,"column":2},"end":{"line":73,"column":3}},"line":71},"3":{"name":"addToConnections","decl":{"start":{"line":75,"column":2},"end":{"line":77,"column":3}},"loc":{"start":{"line":75,"column":2},"end":{"line":77,"column":3}},"line":75},"4":{"name":"getFieldValue","decl":{"start":{"line":79,"column":2},"end":{"line":84,"column":3}},"loc":{"start":{"line":79,"column":2},"end":{"line":84,"column":3}},"line":79},"5":{"name":"setFieldValue","decl":{"start":{"line":86,"column":2},"end":{"line":92,"column":3}},"loc":{"start":{"line":86,"column":2},"end":{"line":92,"column":3}},"line":86},"6":{"name":"getSuspendedEndpoints","decl":{"start":{"line":94,"column":2},"end":{"line":96,"column":3}},"loc":{"start":{"line":94,"column":2},"end":{"line":96,"column":3}},"line":94},"7":{"name":"removeFromConnections","decl":{"start":{"line":98,"column":2},"end":{"line":100,"column":3}},"loc":{"start":{"line":98,"column":2},"end":{"line":100,"column":3}},"line":98},"8":{"name":"handleApiError","decl":{"start":{"line":103,"column":2},"end":{"line":105,"column":3}},"loc":{"start":{"line":103,"column":2},"end":{"line":105,"column":3}},"line":103},"9":{"name":"handleApiSuccess","decl":{"start":{"line":108,"column":2},"end":{"line":110,"column":3}},"loc":{"start":{"line":108,"column":2},"end":{"line":110,"column":3}},"line":108},"10":{"name":"handleBatchApiSuccess","decl":{"start":{"line":112,"column":2},"end":{"line":114,"column":3}},"loc":{"start":{"line":112,"column":2},"end":{"line":114,"column":3}},"line":112},"11":{"name":"handleBatchApiError","decl":{"start":{"line":116,"column":2},"end":{"line":118,"column":3}},"loc":{"start":{"line":116,"column":2},"end":{"line":118,"column":3}},"line":116},"12":{"name":"getDisconnectedEndpoints","decl":{"start":{"line":120,"column":2},"end":{"line":122,"column":3}},"loc":{"start":{"line":120,"column":2},"end":{"line":122,"column":3}},"line":120}},"f":{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0}},"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/indexer/worker/worker.dynamic-ds.service.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/indexer/worker/worker.dynamic-ds.service.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":49}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":42}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":74}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":0}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":33}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":78}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":54}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":2}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":0}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":64}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":37}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":35}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":2}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":0}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":13}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":74}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":48}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":23}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":54}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":5}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":3}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":0}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":34}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":96}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":3}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":0}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":72}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":85}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":90}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":3}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":0}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":48}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":54}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":3}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":1}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":0}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":104}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":10}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":102}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":98}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":4}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":1}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":0,"21":0,"22":0,"23":0,"24":1,"25":1,"26":0,"27":0,"28":1,"29":1,"30":0,"31":0,"32":0,"33":1,"34":1,"35":0,"36":0,"37":1,"38":1,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0},"branchMap":{},"b":{},"fnMap":{"0":{"name":"WorkerDynamicDsService","decl":{"start":{"line":20,"column":2},"end":{"line":24,"column":3}},"loc":{"start":{"line":20,"column":2},"end":{"line":24,"column":3}},"line":20},"1":{"name":"get dynamicDatasources","decl":{"start":{"line":26,"column":2},"end":{"line":28,"column":3}},"loc":{"start":{"line":26,"column":2},"end":{"line":28,"column":3}},"line":26},"2":{"name":"createDynamicDatasource","decl":{"start":{"line":30,"column":2},"end":{"line":33,"column":3}},"loc":{"start":{"line":30,"column":2},"end":{"line":33,"column":3}},"line":30},"3":{"name":"getDynamicDatasources","decl":{"start":{"line":35,"column":2},"end":{"line":37,"column":3}},"loc":{"start":{"line":35,"column":2},"end":{"line":37,"column":3}},"line":35},"4":{"name":"dynamicDsHostFunctions","decl":{"start":{"line":40,"column":0},"end":{"line":45,"column":1}},"loc":{"start":{"line":40,"column":0},"end":{"line":45,"column":1}},"line":40}},"f":{"0":0,"1":0,"2":0,"3":0,"4":0}},"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/indexer/worker/worker.service.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/indexer/worker/worker.service.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":45}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":49}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":67}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":39}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":70}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":56}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":49}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":71}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":0}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":87}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":0}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":36}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":19}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":22}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":24}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":24}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":2}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":0}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":56}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":0}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":40}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":23}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":29}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":45}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":82}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":3}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":56}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":30}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":0}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":30}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":0}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":84}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":50}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":109}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":0}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":14}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":48}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":58}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":26}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":5}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":102}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":3}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":0}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":70}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":9}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":47}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":98}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":42}},"51":{"start":{"line":52,"column":0},"end":{"line":52,"column":38}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":37}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":45}},"54":{"start":{"line":55,"column":0},"end":{"line":55,"column":35}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":68}},"56":{"start":{"line":57,"column":0},"end":{"line":57,"column":11}},"57":{"start":{"line":58,"column":0},"end":{"line":58,"column":0}},"58":{"start":{"line":59,"column":0},"end":{"line":59,"column":66}},"59":{"start":{"line":60,"column":0},"end":{"line":60,"column":45}},"60":{"start":{"line":61,"column":0},"end":{"line":61,"column":9}},"61":{"start":{"line":62,"column":0},"end":{"line":62,"column":0}},"62":{"start":{"line":63,"column":0},"end":{"line":63,"column":49}},"63":{"start":{"line":64,"column":0},"end":{"line":64,"column":83}},"64":{"start":{"line":65,"column":0},"end":{"line":65,"column":49}},"65":{"start":{"line":66,"column":0},"end":{"line":66,"column":9}},"66":{"start":{"line":67,"column":0},"end":{"line":67,"column":22}},"67":{"start":{"line":68,"column":0},"end":{"line":68,"column":34}},"68":{"start":{"line":69,"column":0},"end":{"line":69,"column":15}},"69":{"start":{"line":70,"column":0},"end":{"line":70,"column":7}},"70":{"start":{"line":71,"column":0},"end":{"line":71,"column":57}},"71":{"start":{"line":72,"column":0},"end":{"line":72,"column":14}},"72":{"start":{"line":73,"column":0},"end":{"line":73,"column":5}},"73":{"start":{"line":74,"column":0},"end":{"line":74,"column":3}},"74":{"start":{"line":75,"column":0},"end":{"line":75,"column":0}},"75":{"start":{"line":76,"column":0},"end":{"line":76,"column":69}},"76":{"start":{"line":77,"column":0},"end":{"line":77,"column":9}},"77":{"start":{"line":78,"column":0},"end":{"line":78,"column":30}},"78":{"start":{"line":79,"column":0},"end":{"line":79,"column":47}},"79":{"start":{"line":80,"column":0},"end":{"line":80,"column":0}},"80":{"start":{"line":81,"column":0},"end":{"line":81,"column":32}},"81":{"start":{"line":82,"column":0},"end":{"line":82,"column":64}},"82":{"start":{"line":83,"column":0},"end":{"line":83,"column":7}},"83":{"start":{"line":84,"column":0},"end":{"line":84,"column":0}},"84":{"start":{"line":85,"column":0},"end":{"line":85,"column":40}},"85":{"start":{"line":86,"column":0},"end":{"line":86,"column":0}},"86":{"start":{"line":87,"column":0},"end":{"line":87,"column":63}},"87":{"start":{"line":88,"column":0},"end":{"line":88,"column":64}},"88":{"start":{"line":89,"column":0},"end":{"line":89,"column":0}},"89":{"start":{"line":90,"column":0},"end":{"line":90,"column":101}},"90":{"start":{"line":91,"column":0},"end":{"line":91,"column":22}},"91":{"start":{"line":92,"column":0},"end":{"line":92,"column":40}},"92":{"start":{"line":93,"column":0},"end":{"line":93,"column":71}},"93":{"start":{"line":94,"column":0},"end":{"line":94,"column":7}},"94":{"start":{"line":95,"column":0},"end":{"line":95,"column":14}},"95":{"start":{"line":96,"column":0},"end":{"line":96,"column":15}},"96":{"start":{"line":97,"column":0},"end":{"line":97,"column":31}},"97":{"start":{"line":98,"column":0},"end":{"line":98,"column":5}},"98":{"start":{"line":99,"column":0},"end":{"line":99,"column":3}},"99":{"start":{"line":100,"column":0},"end":{"line":100,"column":0}},"100":{"start":{"line":101,"column":0},"end":{"line":101,"column":34}},"101":{"start":{"line":102,"column":0},"end":{"line":102,"column":50}},"102":{"start":{"line":103,"column":0},"end":{"line":103,"column":3}},"103":{"start":{"line":104,"column":0},"end":{"line":104,"column":0}},"104":{"start":{"line":105,"column":0},"end":{"line":105,"column":35}},"105":{"start":{"line":106,"column":0},"end":{"line":106,"column":27}},"106":{"start":{"line":107,"column":0},"end":{"line":107,"column":3}},"107":{"start":{"line":108,"column":0},"end":{"line":108,"column":0}},"108":{"start":{"line":109,"column":0},"end":{"line":109,"column":29}},"109":{"start":{"line":110,"column":0},"end":{"line":110,"column":28}},"110":{"start":{"line":111,"column":0},"end":{"line":111,"column":3}},"111":{"start":{"line":112,"column":0},"end":{"line":112,"column":1}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"38":1,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":1,"46":1,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"59":0,"60":0,"61":0,"62":0,"63":0,"64":0,"65":0,"66":0,"67":0,"68":0,"69":0,"70":0,"71":0,"72":0,"73":0,"74":1,"75":1,"76":0,"77":0,"78":0,"79":0,"80":0,"81":0,"82":0,"83":0,"84":0,"85":0,"86":0,"87":0,"88":0,"89":0,"90":0,"91":0,"92":0,"93":0,"94":0,"95":0,"96":0,"97":0,"98":0,"99":1,"100":1,"101":0,"102":0,"103":1,"104":1,"105":0,"106":0,"107":1,"108":1,"109":0,"110":0,"111":1},"branchMap":{},"b":{},"fnMap":{"0":{"name":"BaseWorkerService","decl":{"start":{"line":39,"column":2},"end":{"line":45,"column":3}},"loc":{"start":{"line":39,"column":2},"end":{"line":45,"column":3}},"line":39},"1":{"name":"fetchBlock","decl":{"start":{"line":47,"column":2},"end":{"line":74,"column":3}},"loc":{"start":{"line":47,"column":2},"end":{"line":74,"column":3}},"line":47},"2":{"name":"processBlock","decl":{"start":{"line":76,"column":2},"end":{"line":99,"column":3}},"loc":{"start":{"line":76,"column":2},"end":{"line":99,"column":3}},"line":76},"3":{"name":"get numFetchedBlocks","decl":{"start":{"line":101,"column":2},"end":{"line":103,"column":3}},"loc":{"start":{"line":101,"column":2},"end":{"line":103,"column":3}},"line":101},"4":{"name":"get numFetchingBlocks","decl":{"start":{"line":105,"column":2},"end":{"line":107,"column":3}},"loc":{"start":{"line":105,"column":2},"end":{"line":107,"column":3}},"line":105},"5":{"name":"get isIndexing","decl":{"start":{"line":109,"column":2},"end":{"line":111,"column":3}},"loc":{"start":{"line":109,"column":2},"end":{"line":111,"column":3}},"line":109}},"f":{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0}},"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/indexer/worker/worker.store.service.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/indexer/worker/worker.store.service.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":58}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":40}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":0}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":25}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":37}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":64}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":20}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":19}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":18}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":15}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":47}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":22}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":21}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":19}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":36}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":47}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":22}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":89}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":69}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":66}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":85}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":61}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":68}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":2}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":0}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":51}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":13}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":20}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":21}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":23}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":13}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":20}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":20}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":16}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":20}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":2}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":0}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":76}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":45}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":61}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":10}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":40}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":54}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":56}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":60}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":40}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":54}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":54}},"51":{"start":{"line":52,"column":0},"end":{"line":52,"column":46}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":54}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":4}},"54":{"start":{"line":55,"column":0},"end":{"line":55,"column":2}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":0}},"56":{"start":{"line":57,"column":0},"end":{"line":57,"column":61}},"57":{"start":{"line":58,"column":0},"end":{"line":58,"column":10}},"58":{"start":{"line":59,"column":0},"end":{"line":59,"column":36}},"59":{"start":{"line":60,"column":0},"end":{"line":60,"column":50}},"60":{"start":{"line":61,"column":0},"end":{"line":61,"column":52}},"61":{"start":{"line":62,"column":0},"end":{"line":62,"column":56}},"62":{"start":{"line":63,"column":0},"end":{"line":63,"column":36}},"63":{"start":{"line":64,"column":0},"end":{"line":64,"column":50}},"64":{"start":{"line":65,"column":0},"end":{"line":65,"column":50}},"65":{"start":{"line":66,"column":0},"end":{"line":66,"column":42}},"66":{"start":{"line":67,"column":0},"end":{"line":67,"column":50}},"67":{"start":{"line":68,"column":0},"end":{"line":68,"column":4}},"68":{"start":{"line":69,"column":0},"end":{"line":69,"column":1}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"38":1,"39":1,"40":1,"41":1,"42":1,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":1,"56":2,"57":2,"58":2,"59":2,"60":2,"61":2,"62":2,"63":2,"64":2,"65":2,"66":2,"67":2,"68":2},"branchMap":{"0":{"type":"branch","line":57,"loc":{"start":{"line":57,"column":0},"end":{"line":69,"column":1}},"locations":[{"start":{"line":57,"column":0},"end":{"line":69,"column":1}}]}},"b":{"0":[2]},"fnMap":{"0":{"name":"hostStoreToStore","decl":{"start":{"line":43,"column":32},"end":{"line":55,"column":2}},"loc":{"start":{"line":43,"column":32},"end":{"line":55,"column":2}},"line":43},"1":{"name":"storeHostFunctions","decl":{"start":{"line":57,"column":0},"end":{"line":69,"column":1}},"loc":{"start":{"line":57,"column":0},"end":{"line":69,"column":1}},"line":57}},"f":{"0":0,"1":2}},"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/indexer/worker/worker.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/indexer/worker/worker.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":33}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":42}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":45}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":48}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":63}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":57}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":39}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":45}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":56}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":74}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":56}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":71}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":66}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":84}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":8}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":35}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":26}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":30}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":46}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":101}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":73}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":84}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":100}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":0}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":35}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":42}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":44}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":111}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":0}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":32}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":47}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":0}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":48}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":0}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":106}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":18}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":46}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":11}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":3}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":21}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":26}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":1}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":0}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":50}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":46}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":19}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":1}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":0}},"51":{"start":{"line":52,"column":0},"end":{"line":52,"column":78}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":50}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":28}},"54":{"start":{"line":55,"column":0},"end":{"line":55,"column":1}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":60}},"56":{"start":{"line":57,"column":0},"end":{"line":57,"column":51}},"57":{"start":{"line":58,"column":0},"end":{"line":58,"column":74}},"58":{"start":{"line":59,"column":0},"end":{"line":59,"column":1}},"59":{"start":{"line":60,"column":0},"end":{"line":60,"column":0}},"60":{"start":{"line":61,"column":0},"end":{"line":61,"column":60}},"61":{"start":{"line":62,"column":0},"end":{"line":62,"column":49}},"62":{"start":{"line":63,"column":0},"end":{"line":63,"column":56}},"63":{"start":{"line":64,"column":0},"end":{"line":64,"column":50}},"64":{"start":{"line":65,"column":0},"end":{"line":65,"column":0}},"65":{"start":{"line":66,"column":0},"end":{"line":66,"column":30}},"66":{"start":{"line":67,"column":0},"end":{"line":67,"column":1}},"67":{"start":{"line":68,"column":0},"end":{"line":68,"column":0}},"68":{"start":{"line":69,"column":0},"end":{"line":69,"column":60}},"69":{"start":{"line":70,"column":0},"end":{"line":70,"column":59}},"70":{"start":{"line":71,"column":0},"end":{"line":71,"column":50}},"71":{"start":{"line":72,"column":0},"end":{"line":72,"column":10}},"72":{"start":{"line":73,"column":0},"end":{"line":73,"column":13}},"73":{"start":{"line":74,"column":0},"end":{"line":74,"column":50}},"74":{"start":{"line":75,"column":0},"end":{"line":75,"column":51}},"75":{"start":{"line":76,"column":0},"end":{"line":76,"column":41}},"76":{"start":{"line":77,"column":0},"end":{"line":77,"column":4}},"77":{"start":{"line":78,"column":0},"end":{"line":78,"column":1}},"78":{"start":{"line":79,"column":0},"end":{"line":79,"column":0}},"79":{"start":{"line":80,"column":0},"end":{"line":80,"column":105}},"80":{"start":{"line":81,"column":0},"end":{"line":81,"column":50}},"81":{"start":{"line":82,"column":0},"end":{"line":82,"column":57}},"82":{"start":{"line":83,"column":0},"end":{"line":83,"column":1}},"83":{"start":{"line":84,"column":0},"end":{"line":84,"column":0}},"84":{"start":{"line":85,"column":0},"end":{"line":85,"column":60}},"85":{"start":{"line":86,"column":0},"end":{"line":86,"column":76}},"86":{"start":{"line":87,"column":0},"end":{"line":87,"column":50}},"87":{"start":{"line":88,"column":0},"end":{"line":88,"column":44}},"88":{"start":{"line":89,"column":0},"end":{"line":89,"column":1}},"89":{"start":{"line":90,"column":0},"end":{"line":90,"column":0}},"90":{"start":{"line":91,"column":0},"end":{"line":91,"column":60}},"91":{"start":{"line":92,"column":0},"end":{"line":92,"column":52}},"92":{"start":{"line":93,"column":0},"end":{"line":93,"column":50}},"93":{"start":{"line":94,"column":0},"end":{"line":94,"column":40}},"94":{"start":{"line":95,"column":0},"end":{"line":95,"column":1}},"95":{"start":{"line":96,"column":0},"end":{"line":96,"column":0}},"96":{"start":{"line":97,"column":0},"end":{"line":97,"column":60}},"97":{"start":{"line":98,"column":0},"end":{"line":98,"column":53}},"98":{"start":{"line":99,"column":0},"end":{"line":99,"column":50}},"99":{"start":{"line":100,"column":0},"end":{"line":100,"column":41}},"100":{"start":{"line":101,"column":0},"end":{"line":101,"column":1}},"101":{"start":{"line":102,"column":0},"end":{"line":102,"column":0}},"102":{"start":{"line":103,"column":0},"end":{"line":103,"column":79}},"103":{"start":{"line":104,"column":0},"end":{"line":104,"column":42}},"104":{"start":{"line":105,"column":0},"end":{"line":105,"column":1}},"105":{"start":{"line":106,"column":0},"end":{"line":106,"column":0}},"106":{"start":{"line":107,"column":0},"end":{"line":107,"column":40}},"107":{"start":{"line":108,"column":0},"end":{"line":108,"column":36}},"108":{"start":{"line":109,"column":0},"end":{"line":109,"column":40}},"109":{"start":{"line":110,"column":0},"end":{"line":110,"column":48}},"110":{"start":{"line":111,"column":0},"end":{"line":111,"column":50}},"111":{"start":{"line":112,"column":0},"end":{"line":112,"column":40}},"112":{"start":{"line":113,"column":0},"end":{"line":113,"column":42}},"113":{"start":{"line":114,"column":0},"end":{"line":114,"column":46}},"114":{"start":{"line":115,"column":0},"end":{"line":115,"column":60}},"115":{"start":{"line":116,"column":0},"end":{"line":116,"column":0}},"116":{"start":{"line":117,"column":0},"end":{"line":117,"column":34}},"117":{"start":{"line":118,"column":0},"end":{"line":118,"column":29}},"118":{"start":{"line":119,"column":0},"end":{"line":119,"column":25}},"119":{"start":{"line":120,"column":0},"end":{"line":120,"column":37}},"120":{"start":{"line":121,"column":0},"end":{"line":121,"column":39}},"121":{"start":{"line":122,"column":0},"end":{"line":122,"column":29}},"122":{"start":{"line":123,"column":0},"end":{"line":123,"column":31}},"123":{"start":{"line":124,"column":0},"end":{"line":124,"column":35}},"124":{"start":{"line":125,"column":0},"end":{"line":125,"column":49}},"125":{"start":{"line":126,"column":0},"end":{"line":126,"column":2}},"126":{"start":{"line":127,"column":0},"end":{"line":127,"column":0}},"127":{"start":{"line":128,"column":0},"end":{"line":128,"column":66}},"128":{"start":{"line":129,"column":0},"end":{"line":129,"column":17}},"129":{"start":{"line":130,"column":0},"end":{"line":130,"column":15}},"130":{"start":{"line":131,"column":0},"end":{"line":131,"column":21}},"131":{"start":{"line":132,"column":0},"end":{"line":132,"column":22}},"132":{"start":{"line":133,"column":0},"end":{"line":133,"column":14}},"133":{"start":{"line":134,"column":0},"end":{"line":134,"column":18}},"134":{"start":{"line":135,"column":0},"end":{"line":135,"column":20}},"135":{"start":{"line":136,"column":0},"end":{"line":136,"column":27}},"136":{"start":{"line":137,"column":0},"end":{"line":137,"column":2}},"137":{"start":{"line":138,"column":0},"end":{"line":138,"column":0}},"138":{"start":{"line":139,"column":0},"end":{"line":139,"column":33}},"139":{"start":{"line":140,"column":0},"end":{"line":140,"column":25}},"140":{"start":{"line":141,"column":0},"end":{"line":141,"column":76}},"141":{"start":{"line":142,"column":0},"end":{"line":142,"column":42}},"142":{"start":{"line":143,"column":0},"end":{"line":143,"column":44}},"143":{"start":{"line":144,"column":0},"end":{"line":144,"column":108}},"144":{"start":{"line":145,"column":0},"end":{"line":145,"column":58}},"145":{"start":{"line":146,"column":0},"end":{"line":146,"column":98}},"146":{"start":{"line":147,"column":0},"end":{"line":147,"column":5}},"147":{"start":{"line":148,"column":0},"end":{"line":148,"column":62}},"148":{"start":{"line":149,"column":0},"end":{"line":149,"column":24}},"149":{"start":{"line":150,"column":0},"end":{"line":150,"column":23}},"150":{"start":{"line":151,"column":0},"end":{"line":151,"column":23}},"151":{"start":{"line":152,"column":0},"end":{"line":152,"column":27}},"152":{"start":{"line":153,"column":0},"end":{"line":153,"column":35}},"153":{"start":{"line":154,"column":0},"end":{"line":154,"column":37}},"154":{"start":{"line":155,"column":0},"end":{"line":155,"column":6}},"155":{"start":{"line":156,"column":0},"end":{"line":156,"column":5}},"156":{"start":{"line":157,"column":0},"end":{"line":157,"column":62}},"157":{"start":{"line":158,"column":0},"end":{"line":158,"column":22}},"158":{"start":{"line":159,"column":0},"end":{"line":159,"column":17}},"159":{"start":{"line":160,"column":0},"end":{"line":160,"column":19}},"160":{"start":{"line":161,"column":0},"end":{"line":161,"column":23}},"161":{"start":{"line":162,"column":0},"end":{"line":162,"column":24}},"162":{"start":{"line":163,"column":0},"end":{"line":163,"column":16}},"163":{"start":{"line":164,"column":0},"end":{"line":164,"column":20}},"164":{"start":{"line":165,"column":0},"end":{"line":165,"column":22}},"165":{"start":{"line":166,"column":0},"end":{"line":166,"column":29}},"166":{"start":{"line":167,"column":0},"end":{"line":167,"column":6}},"167":{"start":{"line":168,"column":0},"end":{"line":168,"column":10}},"168":{"start":{"line":169,"column":0},"end":{"line":169,"column":4}},"169":{"start":{"line":170,"column":0},"end":{"line":170,"column":1}},"170":{"start":{"line":171,"column":0},"end":{"line":171,"column":0}},"171":{"start":{"line":172,"column":0},"end":{"line":172,"column":42}},"172":{"start":{"line":173,"column":0},"end":{"line":173,"column":31}},"173":{"start":{"line":174,"column":0},"end":{"line":174,"column":112}},"174":{"start":{"line":175,"column":0},"end":{"line":175,"column":4}},"175":{"start":{"line":176,"column":0},"end":{"line":176,"column":44}},"176":{"start":{"line":177,"column":0},"end":{"line":177,"column":2}},"177":{"start":{"line":178,"column":0},"end":{"line":178,"column":21}},"178":{"start":{"line":179,"column":0},"end":{"line":179,"column":57}},"179":{"start":{"line":180,"column":0},"end":{"line":180,"column":15}},"180":{"start":{"line":181,"column":0},"end":{"line":181,"column":15}},"181":{"start":{"line":182,"column":0},"end":{"line":182,"column":42}},"182":{"start":{"line":183,"column":0},"end":{"line":183,"column":57}},"183":{"start":{"line":184,"column":0},"end":{"line":184,"column":65}},"184":{"start":{"line":185,"column":0},"end":{"line":185,"column":15}},"185":{"start":{"line":186,"column":0},"end":{"line":186,"column":21}},"186":{"start":{"line":187,"column":0},"end":{"line":187,"column":52}},"187":{"start":{"line":188,"column":0},"end":{"line":188,"column":38}},"188":{"start":{"line":189,"column":0},"end":{"line":189,"column":61}},"189":{"start":{"line":190,"column":0},"end":{"line":190,"column":45}},"190":{"start":{"line":191,"column":0},"end":{"line":191,"column":4}},"191":{"start":{"line":192,"column":0},"end":{"line":192,"column":15}},"192":{"start":{"line":193,"column":0},"end":{"line":193,"column":57}},"193":{"start":{"line":194,"column":0},"end":{"line":194,"column":5}},"194":{"start":{"line":195,"column":0},"end":{"line":195,"column":35}},"195":{"start":{"line":196,"column":0},"end":{"line":196,"column":35}},"196":{"start":{"line":197,"column":0},"end":{"line":197,"column":50}},"197":{"start":{"line":198,"column":0},"end":{"line":198,"column":118}},"198":{"start":{"line":199,"column":0},"end":{"line":199,"column":63}},"199":{"start":{"line":200,"column":0},"end":{"line":200,"column":6}},"200":{"start":{"line":201,"column":0},"end":{"line":201,"column":8}},"201":{"start":{"line":202,"column":0},"end":{"line":202,"column":4}},"202":{"start":{"line":203,"column":0},"end":{"line":203,"column":0}},"203":{"start":{"line":204,"column":0},"end":{"line":204,"column":46}},"204":{"start":{"line":205,"column":0},"end":{"line":205,"column":0}},"205":{"start":{"line":206,"column":0},"end":{"line":206,"column":23}},"206":{"start":{"line":207,"column":0},"end":{"line":207,"column":1}},"207":{"start":{"line":208,"column":0},"end":{"line":208,"column":0}},"208":{"start":{"line":209,"column":0},"end":{"line":209,"column":40}},"209":{"start":{"line":210,"column":0},"end":{"line":210,"column":40}},"210":{"start":{"line":211,"column":0},"end":{"line":211,"column":10}},"211":{"start":{"line":212,"column":0},"end":{"line":212,"column":3}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":1,"46":0,"47":0,"48":0,"49":0,"50":1,"51":0,"52":0,"53":0,"54":0,"55":1,"56":0,"57":0,"58":0,"59":1,"60":1,"61":0,"62":0,"63":0,"64":0,"65":0,"66":0,"67":1,"68":1,"69":0,"70":0,"71":0,"72":0,"73":0,"74":0,"75":0,"76":0,"77":0,"78":1,"79":0,"80":0,"81":0,"82":0,"83":1,"84":1,"85":0,"86":0,"87":0,"88":0,"89":1,"90":1,"91":0,"92":0,"93":0,"94":0,"95":1,"96":1,"97":0,"98":0,"99":0,"100":0,"101":1,"102":0,"103":0,"104":0,"105":1,"106":1,"107":1,"108":1,"109":1,"110":1,"111":1,"112":1,"113":1,"114":1,"115":1,"116":1,"117":1,"118":1,"119":1,"120":1,"121":1,"122":1,"123":1,"124":1,"125":1,"126":1,"127":1,"128":1,"129":1,"130":1,"131":1,"132":1,"133":1,"134":1,"135":1,"136":1,"137":1,"138":0,"139":0,"140":0,"141":0,"142":0,"143":0,"144":0,"145":0,"146":0,"147":0,"148":0,"149":0,"150":0,"151":0,"152":0,"153":0,"154":0,"155":0,"156":0,"157":0,"158":0,"159":0,"160":0,"161":0,"162":0,"163":0,"164":0,"165":0,"166":0,"167":0,"168":0,"169":0,"170":1,"171":1,"172":0,"173":0,"174":0,"175":0,"176":0,"177":0,"178":0,"179":0,"180":0,"181":0,"182":0,"183":0,"184":0,"185":0,"186":0,"187":0,"188":0,"189":0,"190":0,"191":0,"192":0,"193":0,"194":0,"195":0,"196":0,"197":0,"198":0,"199":0,"200":0,"201":0,"202":0,"203":0,"204":0,"205":0,"206":0,"207":1,"208":1,"209":0,"210":0,"211":1},"branchMap":{},"b":{},"fnMap":{"0":{"name":"initWorkerServices","decl":{"start":{"line":38,"column":0},"end":{"line":45,"column":1}},"loc":{"start":{"line":38,"column":0},"end":{"line":45,"column":1}},"line":38},"1":{"name":"getWorkerApp","decl":{"start":{"line":47,"column":0},"end":{"line":50,"column":1}},"loc":{"start":{"line":47,"column":0},"end":{"line":50,"column":1}},"line":47},"2":{"name":"getWorkerService","decl":{"start":{"line":52,"column":0},"end":{"line":55,"column":1}},"loc":{"start":{"line":52,"column":0},"end":{"line":55,"column":1}},"line":52},"3":{"name":"getBlocksLoaded","decl":{"start":{"line":57,"column":0},"end":{"line":59,"column":1}},"loc":{"start":{"line":57,"column":0},"end":{"line":59,"column":1}},"line":57},"4":{"name":"getMemoryLeft","decl":{"start":{"line":62,"column":0},"end":{"line":67,"column":1}},"loc":{"start":{"line":62,"column":0},"end":{"line":67,"column":1}},"line":62},"5":{"name":"getStatus","decl":{"start":{"line":70,"column":0},"end":{"line":78,"column":1}},"loc":{"start":{"line":70,"column":0},"end":{"line":78,"column":1}},"line":70},"6":{"name":"fetchBlock","decl":{"start":{"line":80,"column":0},"end":{"line":83,"column":1}},"loc":{"start":{"line":80,"column":0},"end":{"line":83,"column":1}},"line":80},"7":{"name":"processBlock","decl":{"start":{"line":86,"column":0},"end":{"line":89,"column":1}},"loc":{"start":{"line":86,"column":0},"end":{"line":89,"column":1}},"line":86},"8":{"name":"numFetchedBlocks","decl":{"start":{"line":92,"column":0},"end":{"line":95,"column":1}},"loc":{"start":{"line":92,"column":0},"end":{"line":95,"column":1}},"line":92},"9":{"name":"numFetchingBlocks","decl":{"start":{"line":98,"column":0},"end":{"line":101,"column":1}},"loc":{"start":{"line":98,"column":0},"end":{"line":101,"column":1}},"line":98},"10":{"name":"waitForWorkerBatchSize","decl":{"start":{"line":103,"column":0},"end":{"line":105,"column":1}},"loc":{"start":{"line":103,"column":0},"end":{"line":105,"column":1}},"line":103},"11":{"name":"createWorkerHost","decl":{"start":{"line":139,"column":0},"end":{"line":170,"column":1}},"loc":{"start":{"line":139,"column":0},"end":{"line":170,"column":1}},"line":139},"12":{"name":"createIndexerWorker","decl":{"start":{"line":172,"column":7},"end":{"line":207,"column":1}},"loc":{"start":{"line":172,"column":7},"end":{"line":207,"column":1}},"line":172}},"f":{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0}},"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/indexer/worker/worker.unfinalizedBlocks.service.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/indexer/worker/worker.unfinalizedBlocks.service.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":37}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":0}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":37}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":88}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":2}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":0}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":103}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1},"branchMap":{},"b":{},"fnMap":{},"f":{}},"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/logger.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/logger.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":59}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":45}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":36}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":24}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":0}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":19}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":0}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":27}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":40}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":33}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":19}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":9}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":23}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":46}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":28}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":25}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":72}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":5}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":1}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":0}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":24}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":31}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":15}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":1}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":0}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":58}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":79}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":1}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":0}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":61}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":25}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":1}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":0}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":65}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":22}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":29}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":3}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":73}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":1}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":0}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":50}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":84}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":0}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":53}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":0}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":45}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":16}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":42}},"51":{"start":{"line":52,"column":0},"end":{"line":52,"column":12}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":33}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":5}},"54":{"start":{"line":55,"column":0},"end":{"line":55,"column":3}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":0}},"56":{"start":{"line":57,"column":0},"end":{"line":57,"column":27}},"57":{"start":{"line":58,"column":0},"end":{"line":58,"column":36}},"58":{"start":{"line":59,"column":0},"end":{"line":59,"column":30}},"59":{"start":{"line":60,"column":0},"end":{"line":60,"column":3}},"60":{"start":{"line":61,"column":0},"end":{"line":61,"column":0}},"61":{"start":{"line":62,"column":0},"end":{"line":62,"column":28}},"62":{"start":{"line":63,"column":0},"end":{"line":63,"column":36}},"63":{"start":{"line":64,"column":0},"end":{"line":64,"column":30}},"64":{"start":{"line":65,"column":0},"end":{"line":65,"column":3}},"65":{"start":{"line":66,"column":0},"end":{"line":66,"column":0}},"66":{"start":{"line":67,"column":0},"end":{"line":67,"column":29}},"67":{"start":{"line":68,"column":0},"end":{"line":68,"column":33}},"68":{"start":{"line":69,"column":0},"end":{"line":69,"column":31}},"69":{"start":{"line":70,"column":0},"end":{"line":70,"column":3}},"70":{"start":{"line":71,"column":0},"end":{"line":71,"column":0}},"71":{"start":{"line":72,"column":0},"end":{"line":72,"column":31}},"72":{"start":{"line":73,"column":0},"end":{"line":73,"column":33}},"73":{"start":{"line":74,"column":0},"end":{"line":74,"column":33}},"74":{"start":{"line":75,"column":0},"end":{"line":75,"column":3}},"75":{"start":{"line":76,"column":0},"end":{"line":76,"column":1}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":5,"11":5,"12":5,"13":5,"14":5,"15":5,"16":5,"17":5,"18":5,"19":5,"20":5,"21":5,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":218,"29":218,"30":218,"31":1,"32":0,"33":0,"34":0,"35":1,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":1,"43":1,"44":1,"45":1,"46":1,"47":1,"48":1,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":1,"56":1,"57":0,"58":0,"59":0,"60":1,"61":1,"62":0,"63":0,"64":0,"65":1,"66":1,"67":0,"68":0,"69":0,"70":1,"71":1,"72":0,"73":0,"74":0,"75":1},"branchMap":{"0":{"type":"branch","line":11,"loc":{"start":{"line":11,"column":0},"end":{"line":22,"column":1}},"locations":[{"start":{"line":11,"column":0},"end":{"line":22,"column":1}}]},"1":{"type":"branch","line":17,"loc":{"start":{"line":17,"column":25},"end":{"line":17,"column":34}},"locations":[{"start":{"line":17,"column":25},"end":{"line":17,"column":34}}]},"2":{"type":"branch","line":20,"loc":{"start":{"line":20,"column":23},"end":{"line":20,"column":40}},"locations":[{"start":{"line":20,"column":23},"end":{"line":20,"column":40}}]},"3":{"type":"branch","line":20,"loc":{"start":{"line":20,"column":53},"end":{"line":20,"column":71}},"locations":[{"start":{"line":20,"column":53},"end":{"line":20,"column":71}}]},"4":{"type":"branch","line":29,"loc":{"start":{"line":29,"column":0},"end":{"line":31,"column":1}},"locations":[{"start":{"line":29,"column":0},"end":{"line":31,"column":1}}]},"5":{"type":"branch","line":30,"loc":{"start":{"line":30,"column":58},"end":{"line":30,"column":75}},"locations":[{"start":{"line":30,"column":58},"end":{"line":30,"column":75}}]}},"b":{"0":[5],"1":[0],"2":[0],"3":[0],"4":[218],"5":[0]},"fnMap":{"0":{"name":"initLogger","decl":{"start":{"line":11,"column":0},"end":{"line":22,"column":1}},"loc":{"start":{"line":11,"column":0},"end":{"line":22,"column":1}},"line":11},"1":{"name":"getLogger","decl":{"start":{"line":29,"column":0},"end":{"line":31,"column":1}},"loc":{"start":{"line":29,"column":0},"end":{"line":31,"column":1}},"line":29},"2":{"name":"setLevel","decl":{"start":{"line":33,"column":0},"end":{"line":35,"column":1}},"loc":{"start":{"line":33,"column":0},"end":{"line":35,"column":1}},"line":33},"3":{"name":"setDebugFilter","decl":{"start":{"line":37,"column":0},"end":{"line":42,"column":1}},"loc":{"start":{"line":37,"column":0},"end":{"line":42,"column":1}},"line":37},"4":{"name":"NestLogger","decl":{"start":{"line":47,"column":2},"end":{"line":47,"column":53}},"loc":{"start":{"line":47,"column":2},"end":{"line":47,"column":53}},"line":47},"5":{"name":"error","decl":{"start":{"line":49,"column":2},"end":{"line":55,"column":3}},"loc":{"start":{"line":49,"column":2},"end":{"line":55,"column":3}},"line":49},"6":{"name":"log","decl":{"start":{"line":57,"column":2},"end":{"line":60,"column":3}},"loc":{"start":{"line":57,"column":2},"end":{"line":60,"column":3}},"line":57},"7":{"name":"warn","decl":{"start":{"line":62,"column":2},"end":{"line":65,"column":3}},"loc":{"start":{"line":62,"column":2},"end":{"line":65,"column":3}},"line":62},"8":{"name":"debug","decl":{"start":{"line":67,"column":2},"end":{"line":70,"column":3}},"loc":{"start":{"line":67,"column":2},"end":{"line":70,"column":3}},"line":67},"9":{"name":"verbose","decl":{"start":{"line":72,"column":2},"end":{"line":75,"column":3}},"loc":{"start":{"line":72,"column":2},"end":{"line":75,"column":3}},"line":72}},"f":{"0":5,"1":218,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0}},"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/meta/event.listener.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/meta/event.listener.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":46}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":57}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":34}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":8}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":19}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":15}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":15}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":22}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":29}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":21}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":19}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":0}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":34}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":34}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":0}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":14}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":48}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":46}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":51}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":48}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":57}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":54}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":58}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":49}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":54}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":46}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":52}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":44}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":51}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":49}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":56}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":53}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":56}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":53}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":56}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":47}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":59}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":48}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":6}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":0}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":37}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":59}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":39}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":3}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":0}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":39}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":67}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":41}},"51":{"start":{"line":52,"column":0},"end":{"line":52,"column":3}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":0}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":45}},"54":{"start":{"line":55,"column":0},"end":{"line":55,"column":73}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":47}},"56":{"start":{"line":57,"column":0},"end":{"line":57,"column":3}},"57":{"start":{"line":58,"column":0},"end":{"line":58,"column":0}},"58":{"start":{"line":59,"column":0},"end":{"line":59,"column":40}},"59":{"start":{"line":60,"column":0},"end":{"line":60,"column":66}},"60":{"start":{"line":61,"column":0},"end":{"line":61,"column":56}},"61":{"start":{"line":62,"column":0},"end":{"line":62,"column":3}},"62":{"start":{"line":63,"column":0},"end":{"line":63,"column":0}},"63":{"start":{"line":64,"column":0},"end":{"line":64,"column":44}},"64":{"start":{"line":65,"column":0},"end":{"line":65,"column":77}},"65":{"start":{"line":66,"column":0},"end":{"line":66,"column":73}},"66":{"start":{"line":67,"column":0},"end":{"line":67,"column":3}},"67":{"start":{"line":68,"column":0},"end":{"line":68,"column":0}},"68":{"start":{"line":69,"column":0},"end":{"line":69,"column":36}},"69":{"start":{"line":70,"column":0},"end":{"line":70,"column":61}},"70":{"start":{"line":71,"column":0},"end":{"line":71,"column":53}},"71":{"start":{"line":72,"column":0},"end":{"line":72,"column":3}},"72":{"start":{"line":73,"column":0},"end":{"line":73,"column":0}},"73":{"start":{"line":74,"column":0},"end":{"line":74,"column":34}},"74":{"start":{"line":75,"column":0},"end":{"line":75,"column":57}},"75":{"start":{"line":76,"column":0},"end":{"line":76,"column":51}},"76":{"start":{"line":77,"column":0},"end":{"line":77,"column":3}},"77":{"start":{"line":78,"column":0},"end":{"line":78,"column":0}},"78":{"start":{"line":79,"column":0},"end":{"line":79,"column":40}},"79":{"start":{"line":80,"column":0},"end":{"line":80,"column":62}},"80":{"start":{"line":81,"column":0},"end":{"line":81,"column":42}},"81":{"start":{"line":82,"column":0},"end":{"line":82,"column":3}},"82":{"start":{"line":83,"column":0},"end":{"line":83,"column":0}},"83":{"start":{"line":84,"column":0},"end":{"line":84,"column":39}},"84":{"start":{"line":85,"column":0},"end":{"line":85,"column":32}},"85":{"start":{"line":86,"column":0},"end":{"line":86,"column":34}},"86":{"start":{"line":87,"column":0},"end":{"line":87,"column":65}},"87":{"start":{"line":88,"column":0},"end":{"line":88,"column":3}},"88":{"start":{"line":89,"column":0},"end":{"line":89,"column":0}},"89":{"start":{"line":90,"column":0},"end":{"line":90,"column":44}},"90":{"start":{"line":91,"column":0},"end":{"line":91,"column":66}},"91":{"start":{"line":92,"column":0},"end":{"line":92,"column":40}},"92":{"start":{"line":93,"column":0},"end":{"line":93,"column":3}},"93":{"start":{"line":94,"column":0},"end":{"line":94,"column":0}},"94":{"start":{"line":95,"column":0},"end":{"line":95,"column":46}},"95":{"start":{"line":96,"column":0},"end":{"line":96,"column":68}},"96":{"start":{"line":97,"column":0},"end":{"line":97,"column":42}},"97":{"start":{"line":98,"column":0},"end":{"line":98,"column":3}},"98":{"start":{"line":99,"column":0},"end":{"line":99,"column":1}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":20,"20":20,"21":20,"22":20,"23":20,"24":20,"25":20,"26":20,"27":20,"28":20,"29":20,"30":20,"31":20,"32":20,"33":20,"34":20,"35":20,"36":20,"37":20,"38":20,"39":20,"40":20,"41":20,"42":1,"43":1,"44":1,"45":20,"46":20,"47":1,"48":1,"49":1,"50":0,"51":0,"52":1,"53":1,"54":1,"55":0,"56":0,"57":1,"58":1,"59":1,"60":0,"61":0,"62":1,"63":1,"64":1,"65":0,"66":0,"67":1,"68":1,"69":1,"70":0,"71":0,"72":1,"73":1,"74":1,"75":0,"76":0,"77":1,"78":1,"79":1,"80":0,"81":0,"82":1,"83":1,"84":1,"85":0,"86":0,"87":0,"88":1,"89":1,"90":1,"91":0,"92":0,"93":1,"94":1,"95":1,"96":40,"97":40,"98":1},"branchMap":{"0":{"type":"branch","line":19,"loc":{"start":{"line":19,"column":2},"end":{"line":42,"column":6}},"locations":[{"start":{"line":19,"column":2},"end":{"line":42,"column":6}}]},"1":{"type":"branch","line":45,"loc":{"start":{"line":45,"column":2},"end":{"line":47,"column":3}},"locations":[{"start":{"line":45,"column":2},"end":{"line":47,"column":3}}]},"2":{"type":"branch","line":96,"loc":{"start":{"line":96,"column":2},"end":{"line":98,"column":3}},"locations":[{"start":{"line":96,"column":2},"end":{"line":98,"column":3}}]}},"b":{"0":[20],"1":[20],"2":[40]},"fnMap":{"0":{"name":"MetricEventListener","decl":{"start":{"line":19,"column":2},"end":{"line":42,"column":6}},"loc":{"start":{"line":19,"column":2},"end":{"line":42,"column":6}},"line":19},"1":{"name":"handleApiConnected","decl":{"start":{"line":45,"column":2},"end":{"line":47,"column":3}},"loc":{"start":{"line":45,"column":2},"end":{"line":47,"column":3}},"line":45},"2":{"name":"handleBlockQueueSizeMetric","decl":{"start":{"line":50,"column":2},"end":{"line":52,"column":3}},"loc":{"start":{"line":50,"column":2},"end":{"line":52,"column":3}},"line":50},"3":{"name":"handleBlocknumberQueueSizeMetric","decl":{"start":{"line":55,"column":2},"end":{"line":57,"column":3}},"loc":{"start":{"line":55,"column":2},"end":{"line":57,"column":3}},"line":55},"4":{"name":"handleProcessingBlock","decl":{"start":{"line":60,"column":2},"end":{"line":62,"column":3}},"loc":{"start":{"line":60,"column":2},"end":{"line":62,"column":3}},"line":60},"5":{"name":"handleProcessedBlockCount","decl":{"start":{"line":65,"column":2},"end":{"line":67,"column":3}},"loc":{"start":{"line":65,"column":2},"end":{"line":67,"column":3}},"line":65},"6":{"name":"handleTargetBlock","decl":{"start":{"line":70,"column":2},"end":{"line":72,"column":3}},"loc":{"start":{"line":70,"column":2},"end":{"line":72,"column":3}},"line":70},"7":{"name":"handleBestBlock","decl":{"start":{"line":75,"column":2},"end":{"line":77,"column":3}},"loc":{"start":{"line":75,"column":2},"end":{"line":77,"column":3}},"line":75},"8":{"name":"handleUsingDictionary","decl":{"start":{"line":80,"column":2},"end":{"line":82,"column":3}},"loc":{"start":{"line":80,"column":2},"end":{"line":82,"column":3}},"line":80},"9":{"name":"handleSkipDictionary","decl":{"start":{"line":85,"column":2},"end":{"line":88,"column":3}},"loc":{"start":{"line":85,"column":2},"end":{"line":88,"column":3}},"line":85},"10":{"name":"handleStoreCacheThreshold","decl":{"start":{"line":91,"column":2},"end":{"line":93,"column":3}},"loc":{"start":{"line":91,"column":2},"end":{"line":93,"column":3}},"line":91},"11":{"name":"handleStoreCacheRecordsSize","decl":{"start":{"line":96,"column":2},"end":{"line":98,"column":3}},"loc":{"start":{"line":96,"column":2},"end":{"line":98,"column":3}},"line":96}},"f":{"0":20,"1":20,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":40}},"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/meta/health.controller.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/meta/health.controller.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":74}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":36}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":47}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":0}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":35}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":0}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":21}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":31}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":54}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":0}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":8}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":21}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":9}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":37}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":22}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":22}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":30}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":9}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":51}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":27}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":10}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":40}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":8}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":5}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":3}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":1}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":1},"branchMap":{"0":{"type":"branch","line":12,"loc":{"start":{"line":12,"column":2},"end":{"line":12,"column":54}},"locations":[{"start":{"line":12,"column":2},"end":{"line":12,"column":54}}]}},"b":{"0":[20]},"fnMap":{"0":{"name":"HealthController","decl":{"start":{"line":12,"column":2},"end":{"line":12,"column":54}},"loc":{"start":{"line":12,"column":2},"end":{"line":12,"column":54}},"line":12},"1":{"name":"getHealth","decl":{"start":{"line":15,"column":2},"end":{"line":28,"column":3}},"loc":{"start":{"line":15,"column":2},"end":{"line":28,"column":3}},"line":15}},"f":{"0":20,"1":0}},"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/meta/health.service.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/meta/health.service.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":42}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":46}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":42}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":40}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":80}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":40}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":0}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":31}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":32}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":36}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":0}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":13}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":28}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":37}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":40}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":43}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":46}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":28}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":32}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":35}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":0}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":85}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":83}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":77}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":3}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":0}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":34}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":44}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":25}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":0}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":9}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":23}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":21}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":17}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":22}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":5}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":0}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":42}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":104}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":36}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":5}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":3}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":0}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":69}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":101}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":34}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":61}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":57}},"51":{"start":{"line":52,"column":0},"end":{"line":52,"column":51}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":45}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":5}},"54":{"start":{"line":55,"column":0},"end":{"line":55,"column":3}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":0}},"56":{"start":{"line":57,"column":0},"end":{"line":57,"column":40}},"57":{"start":{"line":58,"column":0},"end":{"line":58,"column":66}},"58":{"start":{"line":59,"column":0},"end":{"line":59,"column":63}},"59":{"start":{"line":60,"column":0},"end":{"line":60,"column":57}},"60":{"start":{"line":61,"column":0},"end":{"line":61,"column":63}},"61":{"start":{"line":62,"column":0},"end":{"line":62,"column":5}},"62":{"start":{"line":63,"column":0},"end":{"line":63,"column":3}},"63":{"start":{"line":64,"column":0},"end":{"line":64,"column":0}},"64":{"start":{"line":65,"column":0},"end":{"line":65,"column":21}},"65":{"start":{"line":66,"column":0},"end":{"line":66,"column":100}},"66":{"start":{"line":67,"column":0},"end":{"line":67,"column":49}},"67":{"start":{"line":68,"column":0},"end":{"line":68,"column":5}},"68":{"start":{"line":69,"column":0},"end":{"line":69,"column":111}},"69":{"start":{"line":70,"column":0},"end":{"line":70,"column":48}},"70":{"start":{"line":71,"column":0},"end":{"line":71,"column":5}},"71":{"start":{"line":72,"column":0},"end":{"line":72,"column":3}},"72":{"start":{"line":73,"column":0},"end":{"line":73,"column":1}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":20,"26":20,"27":20,"28":1,"29":1,"30":1,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":1,"46":1,"47":1,"48":1,"49":1,"50":0,"51":0,"52":0,"53":0,"54":0,"55":1,"56":1,"57":1,"58":0,"59":0,"60":0,"61":0,"62":0,"63":1,"64":1,"65":0,"66":0,"67":0,"68":0,"69":0,"70":0,"71":0,"72":1},"branchMap":{"0":{"type":"branch","line":25,"loc":{"start":{"line":25,"column":2},"end":{"line":28,"column":3}},"locations":[{"start":{"line":25,"column":2},"end":{"line":28,"column":3}}]}},"b":{"0":[20]},"fnMap":{"0":{"name":"HealthService","decl":{"start":{"line":25,"column":2},"end":{"line":28,"column":3}},"loc":{"start":{"line":25,"column":2},"end":{"line":28,"column":3}},"line":25},"1":{"name":"checkHealthStatus","decl":{"start":{"line":31,"column":8},"end":{"line":45,"column":3}},"loc":{"start":{"line":31,"column":8},"end":{"line":45,"column":3}},"line":31},"2":{"name":"handleTargetBlock","decl":{"start":{"line":50,"column":2},"end":{"line":55,"column":3}},"loc":{"start":{"line":50,"column":2},"end":{"line":55,"column":3}},"line":50},"3":{"name":"handleProcessingBlock","decl":{"start":{"line":58,"column":2},"end":{"line":63,"column":3}},"loc":{"start":{"line":58,"column":2},"end":{"line":63,"column":3}},"line":58},"4":{"name":"getHealth","decl":{"start":{"line":65,"column":2},"end":{"line":72,"column":3}},"loc":{"start":{"line":65,"column":2},"end":{"line":72,"column":3}},"line":65}},"f":{"0":20,"1":0,"2":0,"3":0,"4":0}},"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/meta/index.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/meta/index.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":53}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":53}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":47}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":38}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":51}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":45}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":0}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":31}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":0}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":67}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":0}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":98}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1},"branchMap":{},"b":{},"fnMap":{},"f":{}},"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/meta/meta.service.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/meta/meta.service.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":46}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":42}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":40}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":8}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":19}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":15}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":15}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":25}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":22}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":29}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":21}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":19}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":45}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":0}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":36}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":0}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":39}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":43}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":46}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":30}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":32}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":47}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":33}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":36}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":39}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":42}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":39}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":0}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":81}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":150}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":3}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":0}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":44}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":0}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":36}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":17}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":20}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":4}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":0}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":13}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":55}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":0}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":12}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":60}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":66}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":38}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":34}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":46}},"51":{"start":{"line":52,"column":0},"end":{"line":52,"column":52}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":58}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":31}},"54":{"start":{"line":55,"column":0},"end":{"line":55,"column":52}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":38}},"56":{"start":{"line":57,"column":0},"end":{"line":57,"column":44}},"57":{"start":{"line":58,"column":0},"end":{"line":58,"column":25}},"58":{"start":{"line":59,"column":0},"end":{"line":59,"column":26}},"59":{"start":{"line":60,"column":0},"end":{"line":60,"column":6}},"60":{"start":{"line":61,"column":0},"end":{"line":61,"column":3}},"61":{"start":{"line":62,"column":0},"end":{"line":62,"column":0}},"62":{"start":{"line":63,"column":0},"end":{"line":63,"column":35}},"63":{"start":{"line":64,"column":0},"end":{"line":64,"column":27}},"64":{"start":{"line":65,"column":0},"end":{"line":65,"column":48}},"65":{"start":{"line":66,"column":0},"end":{"line":66,"column":75}},"66":{"start":{"line":67,"column":0},"end":{"line":67,"column":3}},"67":{"start":{"line":68,"column":0},"end":{"line":68,"column":0}},"68":{"start":{"line":69,"column":0},"end":{"line":69,"column":40}},"69":{"start":{"line":70,"column":0},"end":{"line":70,"column":66}},"70":{"start":{"line":71,"column":0},"end":{"line":71,"column":55}},"71":{"start":{"line":72,"column":0},"end":{"line":72,"column":61}},"72":{"start":{"line":73,"column":0},"end":{"line":73,"column":3}},"73":{"start":{"line":74,"column":0},"end":{"line":74,"column":0}},"74":{"start":{"line":75,"column":0},"end":{"line":75,"column":44}},"75":{"start":{"line":76,"column":0},"end":{"line":76,"column":72}},"76":{"start":{"line":77,"column":0},"end":{"line":77,"column":64}},"77":{"start":{"line":78,"column":0},"end":{"line":78,"column":61}},"78":{"start":{"line":79,"column":0},"end":{"line":79,"column":3}},"79":{"start":{"line":80,"column":0},"end":{"line":80,"column":0}},"80":{"start":{"line":81,"column":0},"end":{"line":81,"column":36}},"81":{"start":{"line":82,"column":0},"end":{"line":82,"column":61}},"82":{"start":{"line":83,"column":0},"end":{"line":83,"column":44}},"83":{"start":{"line":84,"column":0},"end":{"line":84,"column":3}},"84":{"start":{"line":85,"column":0},"end":{"line":85,"column":0}},"85":{"start":{"line":86,"column":0},"end":{"line":86,"column":34}},"86":{"start":{"line":87,"column":0},"end":{"line":87,"column":57}},"87":{"start":{"line":88,"column":0},"end":{"line":88,"column":42}},"88":{"start":{"line":89,"column":0},"end":{"line":89,"column":3}},"89":{"start":{"line":90,"column":0},"end":{"line":90,"column":0}},"90":{"start":{"line":91,"column":0},"end":{"line":91,"column":40}},"91":{"start":{"line":92,"column":0},"end":{"line":92,"column":68}},"92":{"start":{"line":93,"column":0},"end":{"line":93,"column":35}},"93":{"start":{"line":94,"column":0},"end":{"line":94,"column":3}},"94":{"start":{"line":95,"column":0},"end":{"line":95,"column":0}},"95":{"start":{"line":96,"column":0},"end":{"line":96,"column":37}},"96":{"start":{"line":97,"column":0},"end":{"line":97,"column":59}},"97":{"start":{"line":98,"column":0},"end":{"line":98,"column":32}},"98":{"start":{"line":99,"column":0},"end":{"line":99,"column":3}},"99":{"start":{"line":100,"column":0},"end":{"line":100,"column":0}},"100":{"start":{"line":101,"column":0},"end":{"line":101,"column":40}},"101":{"start":{"line":102,"column":0},"end":{"line":102,"column":62}},"102":{"start":{"line":103,"column":0},"end":{"line":103,"column":35}},"103":{"start":{"line":104,"column":0},"end":{"line":104,"column":3}},"104":{"start":{"line":105,"column":0},"end":{"line":105,"column":1}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":20,"33":20,"34":1,"35":1,"36":1,"37":1,"38":1,"39":1,"40":1,"41":1,"42":1,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"59":0,"60":0,"61":1,"62":1,"63":1,"64":6,"65":0,"66":0,"67":1,"68":1,"69":1,"70":0,"71":0,"72":0,"73":1,"74":1,"75":1,"76":0,"77":0,"78":0,"79":1,"80":1,"81":1,"82":0,"83":0,"84":1,"85":1,"86":1,"87":0,"88":0,"89":1,"90":1,"91":1,"92":20,"93":20,"94":1,"95":1,"96":1,"97":20,"98":20,"99":1,"100":1,"101":1,"102":0,"103":0,"104":1},"branchMap":{"0":{"type":"branch","line":32,"loc":{"start":{"line":32,"column":2},"end":{"line":34,"column":3}},"locations":[{"start":{"line":32,"column":2},"end":{"line":34,"column":3}}]},"1":{"type":"branch","line":64,"loc":{"start":{"line":64,"column":2},"end":{"line":67,"column":3}},"locations":[{"start":{"line":64,"column":2},"end":{"line":67,"column":3}}]},"2":{"type":"branch","line":66,"loc":{"start":{"line":66,"column":-1},"end":{"line":67,"column":3}},"locations":[{"start":{"line":66,"column":-1},"end":{"line":67,"column":3}}]},"3":{"type":"branch","line":92,"loc":{"start":{"line":92,"column":2},"end":{"line":94,"column":3}},"locations":[{"start":{"line":92,"column":2},"end":{"line":94,"column":3}}]},"4":{"type":"branch","line":97,"loc":{"start":{"line":97,"column":2},"end":{"line":99,"column":3}},"locations":[{"start":{"line":97,"column":2},"end":{"line":99,"column":3}}]}},"b":{"0":[20],"1":[6],"2":[0],"3":[20],"4":[20]},"fnMap":{"0":{"name":"BaseMetaService","decl":{"start":{"line":32,"column":2},"end":{"line":34,"column":3}},"loc":{"start":{"line":32,"column":2},"end":{"line":34,"column":3}},"line":32},"1":{"name":"getMeta","decl":{"start":{"line":43,"column":2},"end":{"line":61,"column":3}},"loc":{"start":{"line":43,"column":2},"end":{"line":61,"column":3}},"line":43},"2":{"name":"getTargetHeight","decl":{"start":{"line":64,"column":2},"end":{"line":67,"column":3}},"loc":{"start":{"line":64,"column":2},"end":{"line":67,"column":3}},"line":64},"3":{"name":"handleProcessingBlock","decl":{"start":{"line":70,"column":2},"end":{"line":73,"column":3}},"loc":{"start":{"line":70,"column":2},"end":{"line":73,"column":3}},"line":70},"4":{"name":"handleProcessedBlock","decl":{"start":{"line":76,"column":2},"end":{"line":79,"column":3}},"loc":{"start":{"line":76,"column":2},"end":{"line":79,"column":3}},"line":76},"5":{"name":"handleTargetBlock","decl":{"start":{"line":82,"column":2},"end":{"line":84,"column":3}},"loc":{"start":{"line":82,"column":2},"end":{"line":84,"column":3}},"line":82},"6":{"name":"handleBestBlock","decl":{"start":{"line":87,"column":2},"end":{"line":89,"column":3}},"loc":{"start":{"line":87,"column":2},"end":{"line":89,"column":3}},"line":87},"7":{"name":"handleNetworkMetadata","decl":{"start":{"line":92,"column":2},"end":{"line":94,"column":3}},"loc":{"start":{"line":92,"column":2},"end":{"line":94,"column":3}},"line":92},"8":{"name":"handleApiConnected","decl":{"start":{"line":97,"column":2},"end":{"line":99,"column":3}},"loc":{"start":{"line":97,"column":2},"end":{"line":99,"column":3}},"line":97},"9":{"name":"handleUsingDictionary","decl":{"start":{"line":102,"column":2},"end":{"line":104,"column":3}},"loc":{"start":{"line":102,"column":2},"end":{"line":104,"column":3}},"line":102}},"f":{"0":20,"1":0,"2":6,"3":0,"4":0,"5":0,"6":0,"7":20,"8":20,"9":0}},"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/meta/meta.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/meta/meta.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":62}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":0}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":31}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":21}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":40}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":46}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":5}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":21}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":50}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":48}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":5}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":21}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":46}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":46}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":5}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":21}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":44}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":41}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":5}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":21}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":43}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":44}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":5}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":21}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":49}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":51}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":5}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":21}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":43}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":58}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":5}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":21}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":48}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":65}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":5}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":21}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":48}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":42}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":5}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":21}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":48}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":80}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":5}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":21}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":51}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":62}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":5}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":2}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"38":1,"39":1,"40":1,"41":1,"42":1,"43":1,"44":1,"45":1,"46":1,"47":1,"48":1,"49":1,"50":1},"branchMap":{},"b":{},"fnMap":{},"f":{}},"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/meta/ready.controller.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/meta/ready.controller.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":74}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":45}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":0}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":20}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":30}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":52}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":0}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":8}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":14}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":35}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":30}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":9}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":49}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":59}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":10}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":38}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":8}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":5}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":3}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":1}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":1},"branchMap":{"0":{"type":"branch","line":9,"loc":{"start":{"line":9,"column":2},"end":{"line":9,"column":52}},"locations":[{"start":{"line":9,"column":2},"end":{"line":9,"column":52}}]}},"b":{"0":[20]},"fnMap":{"0":{"name":"ReadyController","decl":{"start":{"line":9,"column":2},"end":{"line":9,"column":52}},"loc":{"start":{"line":9,"column":2},"end":{"line":9,"column":52}},"line":9},"1":{"name":"getReady","decl":{"start":{"line":12,"column":2},"end":{"line":22,"column":3}},"loc":{"start":{"line":12,"column":2},"end":{"line":22,"column":3}},"line":12}},"f":{"0":20,"1":0}},"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/meta/ready.service.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/meta/ready.service.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":42}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":46}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":53}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":0}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":13}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":27}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":26}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":0}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":17}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":24}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":3}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":0}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":30}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":53}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":24}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":3}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":0}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":24}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":23}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":3}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":1}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":20,"13":20,"14":1,"15":1,"16":1,"17":20,"18":20,"19":1,"20":1,"21":0,"22":0,"23":1},"branchMap":{"0":{"type":"branch","line":12,"loc":{"start":{"line":12,"column":2},"end":{"line":14,"column":3}},"locations":[{"start":{"line":12,"column":2},"end":{"line":14,"column":3}}]},"1":{"type":"branch","line":17,"loc":{"start":{"line":17,"column":2},"end":{"line":19,"column":3}},"locations":[{"start":{"line":17,"column":2},"end":{"line":19,"column":3}}]}},"b":{"0":[20],"1":[20]},"fnMap":{"0":{"name":"ReadyService","decl":{"start":{"line":12,"column":2},"end":{"line":14,"column":3}},"loc":{"start":{"line":12,"column":2},"end":{"line":14,"column":3}},"line":12},"1":{"name":"handleReady","decl":{"start":{"line":17,"column":2},"end":{"line":19,"column":3}},"loc":{"start":{"line":17,"column":2},"end":{"line":19,"column":3}},"line":17},"2":{"name":"get ready","decl":{"start":{"line":21,"column":2},"end":{"line":23,"column":3}},"loc":{"start":{"line":21,"column":2},"end":{"line":23,"column":3}},"line":21}},"f":{"0":20,"1":20,"2":0}},"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/profiler.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/profiler.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":21}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":0}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":39}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":35}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":0}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":37}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":45}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":1}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":0}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":37}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":0}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":95}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":68}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":1}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":0}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":27}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":0}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":53}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":27}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":1}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":0}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":45}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":83}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":83}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":36}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":62}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":57}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":40}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":45}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":29}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":19}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":25}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":81}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":23}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":14}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":27}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":81}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":24}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":13}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":12}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":16}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":77}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":9}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":19}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":8}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":5}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":4}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":1}},"51":{"start":{"line":52,"column":0},"end":{"line":52,"column":0}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":37}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":0}},"54":{"start":{"line":55,"column":0},"end":{"line":55,"column":27}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":60}},"56":{"start":{"line":57,"column":0},"end":{"line":57,"column":46}},"57":{"start":{"line":58,"column":0},"end":{"line":58,"column":36}},"58":{"start":{"line":59,"column":0},"end":{"line":59,"column":32}},"59":{"start":{"line":60,"column":0},"end":{"line":60,"column":25}},"60":{"start":{"line":61,"column":0},"end":{"line":61,"column":15}},"61":{"start":{"line":62,"column":0},"end":{"line":62,"column":21}},"62":{"start":{"line":63,"column":0},"end":{"line":63,"column":60}},"63":{"start":{"line":64,"column":0},"end":{"line":64,"column":19}},"64":{"start":{"line":65,"column":0},"end":{"line":65,"column":10}},"65":{"start":{"line":66,"column":0},"end":{"line":66,"column":23}},"66":{"start":{"line":67,"column":0},"end":{"line":67,"column":60}},"67":{"start":{"line":68,"column":0},"end":{"line":68,"column":20}},"68":{"start":{"line":69,"column":0},"end":{"line":69,"column":9}},"69":{"start":{"line":70,"column":0},"end":{"line":70,"column":8}},"70":{"start":{"line":71,"column":0},"end":{"line":71,"column":12}},"71":{"start":{"line":72,"column":0},"end":{"line":72,"column":56}},"72":{"start":{"line":73,"column":0},"end":{"line":73,"column":5}},"73":{"start":{"line":74,"column":0},"end":{"line":74,"column":15}},"74":{"start":{"line":75,"column":0},"end":{"line":75,"column":4}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":0,"9":0,"10":0,"11":1,"12":1,"13":1,"14":0,"15":0,"16":0,"17":1,"18":1,"19":1,"20":0,"21":0,"22":0,"23":1,"24":17,"25":17,"26":17,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":17,"50":17,"51":1,"52":1,"53":1,"54":1,"55":1,"56":0,"57":0,"58":0,"59":0,"60":0,"61":0,"62":0,"63":0,"64":0,"65":0,"66":0,"67":0,"68":0,"69":0,"70":0,"71":0,"72":0,"73":0,"74":0},"branchMap":{"0":{"type":"branch","line":25,"loc":{"start":{"line":25,"column":0},"end":{"line":51,"column":1}},"locations":[{"start":{"line":25,"column":0},"end":{"line":51,"column":1}}]},"1":{"type":"branch","line":26,"loc":{"start":{"line":26,"column":9},"end":{"line":50,"column":3}},"locations":[{"start":{"line":26,"column":9},"end":{"line":50,"column":3}}]},"2":{"type":"branch","line":27,"loc":{"start":{"line":27,"column":22},"end":{"line":27,"column":38}},"locations":[{"start":{"line":27,"column":22},"end":{"line":27,"column":38}}]},"3":{"type":"branch","line":27,"loc":{"start":{"line":27,"column":38},"end":{"line":27,"column":80}},"locations":[{"start":{"line":27,"column":38},"end":{"line":27,"column":80}}]},"4":{"type":"branch","line":27,"loc":{"start":{"line":27,"column":82},"end":{"line":49,"column":5}},"locations":[{"start":{"line":27,"column":82},"end":{"line":49,"column":5}}]}},"b":{"0":[17],"1":[17],"2":[0],"3":[0],"4":[0]},"fnMap":{"0":{"name":"isPromise","decl":{"start":{"line":9,"column":0},"end":{"line":11,"column":1}},"loc":{"start":{"line":9,"column":0},"end":{"line":11,"column":1}},"line":9},"1":{"name":"printCost","decl":{"start":{"line":15,"column":0},"end":{"line":17,"column":1}},"loc":{"start":{"line":15,"column":0},"end":{"line":17,"column":1}},"line":15},"2":{"name":"setProfiler","decl":{"start":{"line":21,"column":0},"end":{"line":23,"column":1}},"loc":{"start":{"line":21,"column":0},"end":{"line":23,"column":1}},"line":21},"3":{"name":"profiler","decl":{"start":{"line":25,"column":0},"end":{"line":51,"column":1}},"loc":{"start":{"line":25,"column":0},"end":{"line":51,"column":1}},"line":25},"4":{"name":"descriptor.value","decl":{"start":{"line":30,"column":25},"end":{"line":48,"column":7}},"loc":{"start":{"line":30,"column":25},"end":{"line":48,"column":7}},"line":30},"5":{"name":"profilerWrap","decl":{"start":{"line":56,"column":2},"end":{"line":75,"column":4}},"loc":{"start":{"line":56,"column":2},"end":{"line":75,"column":4}},"line":56}},"f":{"0":0,"1":0,"2":0,"3":17,"4":0,"5":0}},"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/subcommands/forceClean.module.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/subcommands/forceClean.module.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":38}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":51}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":55}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":0}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":9}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":52}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":18}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":2}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":39}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1},"branchMap":{},"b":{},"fnMap":{},"f":{}},"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/subcommands/forceClean.service.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/subcommands/forceClean.service.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":50}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":53}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":57}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":40}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":37}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":50}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":36}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":69}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":0}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":40}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":0}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":13}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":32}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":14}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":42}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":44}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":67}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":6}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":0}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":37}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":83}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":18}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":46}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":48}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":5}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":72}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":0}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":9}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":56}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":54}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":23}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":25}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":9}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":0}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":63}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":91}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":24}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":47}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":84}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":100}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":47}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":40}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":50}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":13}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":11}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":10}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":8}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":0}},"51":{"start":{"line":52,"column":0},"end":{"line":52,"column":60}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":49}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":9}},"54":{"start":{"line":55,"column":0},"end":{"line":55,"column":115}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":8}},"56":{"start":{"line":57,"column":0},"end":{"line":57,"column":0}},"57":{"start":{"line":58,"column":0},"end":{"line":58,"column":45}},"58":{"start":{"line":59,"column":0},"end":{"line":59,"column":35}},"59":{"start":{"line":60,"column":0},"end":{"line":60,"column":18}},"60":{"start":{"line":61,"column":0},"end":{"line":61,"column":40}},"61":{"start":{"line":62,"column":0},"end":{"line":62,"column":38}},"62":{"start":{"line":63,"column":0},"end":{"line":63,"column":11}},"63":{"start":{"line":64,"column":0},"end":{"line":64,"column":63}},"64":{"start":{"line":65,"column":0},"end":{"line":65,"column":36}},"65":{"start":{"line":66,"column":0},"end":{"line":66,"column":11}},"66":{"start":{"line":67,"column":0},"end":{"line":67,"column":10}},"67":{"start":{"line":68,"column":0},"end":{"line":68,"column":7}},"68":{"start":{"line":69,"column":0},"end":{"line":69,"column":0}},"69":{"start":{"line":70,"column":0},"end":{"line":70,"column":53}},"70":{"start":{"line":71,"column":0},"end":{"line":71,"column":24}},"71":{"start":{"line":72,"column":0},"end":{"line":72,"column":49}},"72":{"start":{"line":73,"column":0},"end":{"line":73,"column":16}},"73":{"start":{"line":74,"column":0},"end":{"line":74,"column":5}},"74":{"start":{"line":75,"column":0},"end":{"line":75,"column":3}},"75":{"start":{"line":76,"column":0},"end":{"line":76,"column":1}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":0,"18":0,"19":0,"20":0,"21":1,"22":1,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"59":0,"60":0,"61":0,"62":0,"63":0,"64":0,"65":0,"66":0,"67":0,"68":0,"69":0,"70":0,"71":0,"72":0,"73":0,"74":0,"75":1},"branchMap":{},"b":{},"fnMap":{"0":{"name":"ForceCleanService","decl":{"start":{"line":17,"column":2},"end":{"line":21,"column":6}},"loc":{"start":{"line":17,"column":2},"end":{"line":21,"column":6}},"line":17},"1":{"name":"forceClean","decl":{"start":{"line":23,"column":2},"end":{"line":75,"column":3}},"loc":{"start":{"line":23,"column":2},"end":{"line":75,"column":3}},"line":23}},"f":{"0":0,"1":0}},"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/subcommands/index.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/subcommands/index.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":37}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":36}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":34}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1},"branchMap":{},"b":{},"fnMap":{},"f":{}},"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/subcommands/reindex.service.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/subcommands/reindex.service.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":28}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":50}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":49}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":45}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":63}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":117}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":63}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":36}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":73}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":55}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":0}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":36}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":0}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":13}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":87}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":45}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":0}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":14}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":42}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":44}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":48}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":44}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":100}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":60}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":58}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":112}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":87}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":6}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":0}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":50}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":71}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":30}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":3}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":0}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":31}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":57}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":0}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":18}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":46}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":48}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":5}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":0}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":51}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":39}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":41}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":5}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":64}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":0}},"51":{"start":{"line":52,"column":0},"end":{"line":52,"column":63}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":0}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":56}},"54":{"start":{"line":55,"column":0},"end":{"line":55,"column":3}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":0}},"56":{"start":{"line":57,"column":0},"end":{"line":57,"column":84}},"57":{"start":{"line":58,"column":0},"end":{"line":58,"column":97}},"58":{"start":{"line":59,"column":0},"end":{"line":59,"column":95}},"59":{"start":{"line":60,"column":0},"end":{"line":60,"column":34}},"60":{"start":{"line":61,"column":0},"end":{"line":61,"column":25}},"61":{"start":{"line":62,"column":0},"end":{"line":62,"column":5}},"62":{"start":{"line":63,"column":0},"end":{"line":63,"column":56}},"63":{"start":{"line":64,"column":0},"end":{"line":64,"column":49}},"64":{"start":{"line":65,"column":0},"end":{"line":65,"column":3}},"65":{"start":{"line":66,"column":0},"end":{"line":66,"column":0}},"66":{"start":{"line":67,"column":0},"end":{"line":67,"column":73}},"67":{"start":{"line":68,"column":0},"end":{"line":68,"column":69}},"68":{"start":{"line":69,"column":0},"end":{"line":69,"column":3}},"69":{"start":{"line":70,"column":0},"end":{"line":70,"column":0}},"70":{"start":{"line":71,"column":0},"end":{"line":71,"column":71}},"71":{"start":{"line":72,"column":0},"end":{"line":72,"column":57}},"72":{"start":{"line":73,"column":0},"end":{"line":73,"column":3}},"73":{"start":{"line":74,"column":0},"end":{"line":74,"column":0}},"74":{"start":{"line":75,"column":0},"end":{"line":75,"column":67}},"75":{"start":{"line":76,"column":0},"end":{"line":76,"column":59}},"76":{"start":{"line":77,"column":0},"end":{"line":77,"column":3}},"77":{"start":{"line":78,"column":0},"end":{"line":78,"column":0}},"78":{"start":{"line":79,"column":0},"end":{"line":79,"column":42}},"79":{"start":{"line":80,"column":0},"end":{"line":80,"column":49}},"80":{"start":{"line":81,"column":0},"end":{"line":81,"column":0}},"81":{"start":{"line":82,"column":0},"end":{"line":82,"column":76}},"82":{"start":{"line":83,"column":0},"end":{"line":83,"column":39}},"83":{"start":{"line":84,"column":0},"end":{"line":84,"column":112}},"84":{"start":{"line":85,"column":0},"end":{"line":85,"column":22}},"85":{"start":{"line":86,"column":0},"end":{"line":86,"column":12}},"86":{"start":{"line":87,"column":0},"end":{"line":87,"column":42}},"87":{"start":{"line":88,"column":0},"end":{"line":88,"column":5}},"88":{"start":{"line":89,"column":0},"end":{"line":89,"column":3}},"89":{"start":{"line":90,"column":0},"end":{"line":90,"column":0}},"90":{"start":{"line":91,"column":0},"end":{"line":91,"column":59}},"91":{"start":{"line":92,"column":0},"end":{"line":92,"column":66}},"92":{"start":{"line":93,"column":0},"end":{"line":93,"column":42}},"93":{"start":{"line":94,"column":0},"end":{"line":94,"column":36}},"94":{"start":{"line":95,"column":0},"end":{"line":95,"column":7}},"95":{"start":{"line":96,"column":0},"end":{"line":96,"column":0}},"96":{"start":{"line":97,"column":0},"end":{"line":97,"column":114}},"97":{"start":{"line":98,"column":0},"end":{"line":98,"column":0}},"98":{"start":{"line":99,"column":0},"end":{"line":99,"column":18}},"99":{"start":{"line":100,"column":0},"end":{"line":100,"column":18}},"100":{"start":{"line":101,"column":0},"end":{"line":101,"column":24}},"101":{"start":{"line":102,"column":0},"end":{"line":102,"column":26}},"102":{"start":{"line":103,"column":0},"end":{"line":103,"column":24}},"103":{"start":{"line":104,"column":0},"end":{"line":104,"column":36}},"104":{"start":{"line":105,"column":0},"end":{"line":105,"column":28}},"105":{"start":{"line":106,"column":0},"end":{"line":106,"column":21}},"106":{"start":{"line":107,"column":0},"end":{"line":107,"column":33}},"107":{"start":{"line":108,"column":0},"end":{"line":108,"column":65}},"108":{"start":{"line":109,"column":0},"end":{"line":109,"column":28}},"109":{"start":{"line":110,"column":0},"end":{"line":110,"column":6}},"110":{"start":{"line":111,"column":0},"end":{"line":111,"column":0}},"111":{"start":{"line":112,"column":0},"end":{"line":112,"column":62}},"112":{"start":{"line":113,"column":0},"end":{"line":113,"column":3}},"113":{"start":{"line":114,"column":0},"end":{"line":114,"column":1}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":1,"32":1,"33":0,"34":0,"35":0,"36":1,"37":1,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":1,"56":1,"57":0,"58":0,"59":0,"60":0,"61":0,"62":0,"63":0,"64":0,"65":1,"66":1,"67":0,"68":0,"69":1,"70":1,"71":0,"72":0,"73":1,"74":1,"75":0,"76":0,"77":1,"78":1,"79":0,"80":0,"81":0,"82":0,"83":0,"84":0,"85":0,"86":0,"87":0,"88":0,"89":1,"90":1,"91":0,"92":0,"93":0,"94":0,"95":0,"96":0,"97":0,"98":0,"99":0,"100":0,"101":0,"102":0,"103":0,"104":0,"105":0,"106":0,"107":0,"108":0,"109":0,"110":0,"111":0,"112":0,"113":1},"branchMap":{},"b":{},"fnMap":{"0":{"name":"ReindexService","decl":{"start":{"line":21,"column":2},"end":{"line":31,"column":6}},"loc":{"start":{"line":21,"column":2},"end":{"line":31,"column":6}},"line":21},"1":{"name":"get metadataRepo","decl":{"start":{"line":33,"column":2},"end":{"line":36,"column":3}},"loc":{"start":{"line":33,"column":2},"end":{"line":36,"column":3}},"line":33},"2":{"name":"init","decl":{"start":{"line":38,"column":2},"end":{"line":55,"column":3}},"loc":{"start":{"line":38,"column":2},"end":{"line":55,"column":3}},"line":38},"3":{"name":"getTargetHeightWithUnfinalizedBlocks","decl":{"start":{"line":57,"column":2},"end":{"line":65,"column":3}},"loc":{"start":{"line":57,"column":2},"end":{"line":65,"column":3}},"line":57},"4":{"name":"getExistingProjectSchema","decl":{"start":{"line":67,"column":10},"end":{"line":69,"column":3}},"loc":{"start":{"line":67,"column":10},"end":{"line":69,"column":3}},"line":67},"5":{"name":"getLastProcessedHeight","decl":{"start":{"line":71,"column":10},"end":{"line":73,"column":3}},"loc":{"start":{"line":71,"column":10},"end":{"line":73,"column":3}},"line":71},"6":{"name":"getSyncedPoiHeight","decl":{"start":{"line":75,"column":10},"end":{"line":77,"column":3}},"loc":{"start":{"line":75,"column":10},"end":{"line":77,"column":3}},"line":75},"7":{"name":"getStartBlockFromDataSources","decl":{"start":{"line":79,"column":10},"end":{"line":89,"column":3}},"loc":{"start":{"line":79,"column":10},"end":{"line":89,"column":3}},"line":79},"8":{"name":"reindex","decl":{"start":{"line":91,"column":2},"end":{"line":113,"column":3}},"loc":{"start":{"line":91,"column":2},"end":{"line":113,"column":3}},"line":91}},"f":{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0}},"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/utils/autoQueue.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/utils/autoQueue.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":52}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":34}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":0}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":25}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":15}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":31}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":32}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":0}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":16}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":1}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":0}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":45}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":35}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":81}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":3}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":1}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":0}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":67}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":39}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":1}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":0}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":41}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":28}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":29}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":0}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":34}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":30}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":3}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":0}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":22}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":29}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":3}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":0}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":38}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":26}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":3}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":0}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":39}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":42}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":0}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":38}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":3}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":0}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":22}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":25}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":3}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":0}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":29}},"51":{"start":{"line":52,"column":0},"end":{"line":52,"column":58}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":48}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":5}},"54":{"start":{"line":55,"column":0},"end":{"line":55,"column":30}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":3}},"56":{"start":{"line":57,"column":0},"end":{"line":57,"column":0}},"57":{"start":{"line":58,"column":0},"end":{"line":58,"column":25}},"58":{"start":{"line":59,"column":0},"end":{"line":59,"column":25}},"59":{"start":{"line":60,"column":0},"end":{"line":60,"column":3}},"60":{"start":{"line":61,"column":0},"end":{"line":61,"column":0}},"61":{"start":{"line":62,"column":0},"end":{"line":62,"column":25}},"62":{"start":{"line":63,"column":0},"end":{"line":63,"column":30}},"63":{"start":{"line":64,"column":0},"end":{"line":64,"column":3}},"64":{"start":{"line":65,"column":0},"end":{"line":65,"column":0}},"65":{"start":{"line":66,"column":0},"end":{"line":66,"column":31}},"66":{"start":{"line":67,"column":0},"end":{"line":67,"column":49}},"67":{"start":{"line":68,"column":0},"end":{"line":68,"column":0}},"68":{"start":{"line":69,"column":0},"end":{"line":69,"column":51}},"69":{"start":{"line":70,"column":0},"end":{"line":70,"column":46}},"70":{"start":{"line":71,"column":0},"end":{"line":71,"column":0}},"71":{"start":{"line":72,"column":0},"end":{"line":72,"column":18}},"72":{"start":{"line":73,"column":0},"end":{"line":73,"column":3}},"73":{"start":{"line":74,"column":0},"end":{"line":74,"column":0}},"74":{"start":{"line":75,"column":0},"end":{"line":75,"column":18}},"75":{"start":{"line":76,"column":0},"end":{"line":76,"column":30}},"76":{"start":{"line":77,"column":0},"end":{"line":77,"column":0}},"77":{"start":{"line":78,"column":0},"end":{"line":78,"column":20}},"78":{"start":{"line":79,"column":0},"end":{"line":79,"column":18}},"79":{"start":{"line":80,"column":0},"end":{"line":80,"column":3}},"80":{"start":{"line":81,"column":0},"end":{"line":81,"column":0}},"81":{"start":{"line":82,"column":0},"end":{"line":82,"column":17}},"82":{"start":{"line":83,"column":0},"end":{"line":83,"column":19}},"83":{"start":{"line":84,"column":0},"end":{"line":84,"column":3}},"84":{"start":{"line":85,"column":0},"end":{"line":85,"column":1}},"85":{"start":{"line":86,"column":0},"end":{"line":86,"column":0}},"86":{"start":{"line":87,"column":0},"end":{"line":87,"column":36}},"87":{"start":{"line":88,"column":0},"end":{"line":88,"column":0}},"88":{"start":{"line":89,"column":0},"end":{"line":89,"column":18}},"89":{"start":{"line":90,"column":0},"end":{"line":90,"column":16}},"90":{"start":{"line":91,"column":0},"end":{"line":91,"column":16}},"91":{"start":{"line":92,"column":0},"end":{"line":92,"column":30}},"92":{"start":{"line":93,"column":0},"end":{"line":93,"column":32}},"93":{"start":{"line":94,"column":0},"end":{"line":94,"column":2}},"94":{"start":{"line":95,"column":0},"end":{"line":95,"column":0}},"95":{"start":{"line":96,"column":0},"end":{"line":96,"column":2}},"96":{"start":{"line":97,"column":0},"end":{"line":97,"column":75}},"97":{"start":{"line":98,"column":0},"end":{"line":98,"column":75}},"98":{"start":{"line":99,"column":0},"end":{"line":99,"column":89}},"99":{"start":{"line":100,"column":0},"end":{"line":100,"column":3}},"100":{"start":{"line":101,"column":0},"end":{"line":101,"column":45}},"101":{"start":{"line":102,"column":0},"end":{"line":102,"column":33}},"102":{"start":{"line":103,"column":0},"end":{"line":103,"column":34}},"103":{"start":{"line":104,"column":0},"end":{"line":104,"column":25}},"104":{"start":{"line":105,"column":0},"end":{"line":105,"column":33}},"105":{"start":{"line":106,"column":0},"end":{"line":106,"column":0}},"106":{"start":{"line":107,"column":0},"end":{"line":107,"column":45}},"107":{"start":{"line":108,"column":0},"end":{"line":108,"column":0}},"108":{"start":{"line":109,"column":0},"end":{"line":109,"column":49}},"109":{"start":{"line":110,"column":0},"end":{"line":110,"column":0}},"110":{"start":{"line":111,"column":0},"end":{"line":111,"column":61}},"111":{"start":{"line":112,"column":0},"end":{"line":112,"column":97}},"112":{"start":{"line":113,"column":0},"end":{"line":113,"column":60}},"113":{"start":{"line":114,"column":0},"end":{"line":114,"column":24}},"114":{"start":{"line":115,"column":0},"end":{"line":115,"column":60}},"115":{"start":{"line":116,"column":0},"end":{"line":116,"column":23}},"116":{"start":{"line":117,"column":0},"end":{"line":117,"column":0}},"117":{"start":{"line":118,"column":0},"end":{"line":118,"column":5}},"118":{"start":{"line":119,"column":0},"end":{"line":119,"column":91}},"119":{"start":{"line":120,"column":0},"end":{"line":120,"column":106}},"120":{"start":{"line":121,"column":0},"end":{"line":121,"column":137}},"121":{"start":{"line":122,"column":0},"end":{"line":122,"column":73}},"122":{"start":{"line":123,"column":0},"end":{"line":123,"column":7}},"123":{"start":{"line":124,"column":0},"end":{"line":124,"column":111}},"124":{"start":{"line":125,"column":0},"end":{"line":125,"column":48}},"125":{"start":{"line":126,"column":0},"end":{"line":126,"column":3}},"126":{"start":{"line":127,"column":0},"end":{"line":127,"column":0}},"127":{"start":{"line":128,"column":0},"end":{"line":128,"column":22}},"128":{"start":{"line":129,"column":0},"end":{"line":129,"column":97}},"129":{"start":{"line":130,"column":0},"end":{"line":130,"column":3}},"130":{"start":{"line":131,"column":0},"end":{"line":131,"column":0}},"131":{"start":{"line":132,"column":0},"end":{"line":132,"column":38}},"132":{"start":{"line":133,"column":0},"end":{"line":133,"column":31}},"133":{"start":{"line":134,"column":0},"end":{"line":134,"column":3}},"134":{"start":{"line":135,"column":0},"end":{"line":135,"column":0}},"135":{"start":{"line":136,"column":0},"end":{"line":136,"column":39}},"136":{"start":{"line":137,"column":0},"end":{"line":137,"column":41}},"137":{"start":{"line":138,"column":0},"end":{"line":138,"column":37}},"138":{"start":{"line":139,"column":0},"end":{"line":139,"column":3}},"139":{"start":{"line":140,"column":0},"end":{"line":140,"column":0}},"140":{"start":{"line":141,"column":0},"end":{"line":141,"column":4}},"141":{"start":{"line":142,"column":0},"end":{"line":142,"column":44}},"142":{"start":{"line":143,"column":0},"end":{"line":143,"column":90}},"143":{"start":{"line":144,"column":0},"end":{"line":144,"column":5}},"144":{"start":{"line":145,"column":0},"end":{"line":145,"column":40}},"145":{"start":{"line":146,"column":0},"end":{"line":146,"column":35}},"146":{"start":{"line":147,"column":0},"end":{"line":147,"column":3}},"147":{"start":{"line":148,"column":0},"end":{"line":148,"column":0}},"148":{"start":{"line":149,"column":0},"end":{"line":149,"column":48}},"149":{"start":{"line":150,"column":0},"end":{"line":150,"column":58}},"150":{"start":{"line":151,"column":0},"end":{"line":151,"column":61}},"151":{"start":{"line":152,"column":0},"end":{"line":152,"column":5}},"152":{"start":{"line":153,"column":0},"end":{"line":153,"column":0}},"153":{"start":{"line":154,"column":0},"end":{"line":154,"column":22}},"154":{"start":{"line":155,"column":0},"end":{"line":155,"column":61}},"155":{"start":{"line":156,"column":0},"end":{"line":156,"column":5}},"156":{"start":{"line":157,"column":0},"end":{"line":157,"column":0}},"157":{"start":{"line":158,"column":0},"end":{"line":158,"column":39}},"158":{"start":{"line":159,"column":0},"end":{"line":159,"column":47}},"159":{"start":{"line":160,"column":0},"end":{"line":160,"column":73}},"160":{"start":{"line":161,"column":0},"end":{"line":161,"column":41}},"161":{"start":{"line":162,"column":0},"end":{"line":162,"column":27}},"162":{"start":{"line":163,"column":0},"end":{"line":163,"column":9}},"163":{"start":{"line":164,"column":0},"end":{"line":164,"column":9}},"164":{"start":{"line":165,"column":0},"end":{"line":165,"column":7}},"165":{"start":{"line":166,"column":0},"end":{"line":166,"column":3}},"166":{"start":{"line":167,"column":0},"end":{"line":167,"column":0}},"167":{"start":{"line":168,"column":0},"end":{"line":168,"column":36}},"168":{"start":{"line":169,"column":0},"end":{"line":169,"column":53}},"169":{"start":{"line":170,"column":0},"end":{"line":170,"column":0}},"170":{"start":{"line":171,"column":0},"end":{"line":171,"column":22}},"171":{"start":{"line":172,"column":0},"end":{"line":172,"column":0}},"172":{"start":{"line":173,"column":0},"end":{"line":173,"column":65}},"173":{"start":{"line":174,"column":0},"end":{"line":174,"column":21}},"174":{"start":{"line":175,"column":0},"end":{"line":175,"column":37}},"175":{"start":{"line":176,"column":0},"end":{"line":176,"column":23}},"176":{"start":{"line":177,"column":0},"end":{"line":177,"column":31}},"177":{"start":{"line":178,"column":0},"end":{"line":178,"column":5}},"178":{"start":{"line":179,"column":0},"end":{"line":179,"column":47}},"179":{"start":{"line":180,"column":0},"end":{"line":180,"column":20}},"180":{"start":{"line":181,"column":0},"end":{"line":181,"column":31}},"181":{"start":{"line":182,"column":0},"end":{"line":182,"column":34}},"182":{"start":{"line":183,"column":0},"end":{"line":183,"column":3}},"183":{"start":{"line":184,"column":0},"end":{"line":184,"column":0}},"184":{"start":{"line":185,"column":0},"end":{"line":185,"column":39}},"185":{"start":{"line":186,"column":0},"end":{"line":186,"column":36}},"186":{"start":{"line":187,"column":0},"end":{"line":187,"column":22}},"187":{"start":{"line":188,"column":0},"end":{"line":188,"column":13}},"188":{"start":{"line":189,"column":0},"end":{"line":189,"column":5}},"189":{"start":{"line":190,"column":0},"end":{"line":190,"column":0}},"190":{"start":{"line":191,"column":0},"end":{"line":191,"column":26}},"191":{"start":{"line":192,"column":0},"end":{"line":192,"column":39}},"192":{"start":{"line":193,"column":0},"end":{"line":193,"column":0}},"193":{"start":{"line":194,"column":0},"end":{"line":194,"column":86}},"194":{"start":{"line":195,"column":0},"end":{"line":195,"column":25}},"195":{"start":{"line":196,"column":0},"end":{"line":196,"column":0}},"196":{"start":{"line":197,"column":0},"end":{"line":197,"column":33}},"197":{"start":{"line":198,"column":0},"end":{"line":198,"column":0}},"198":{"start":{"line":199,"column":0},"end":{"line":199,"column":24}},"199":{"start":{"line":200,"column":0},"end":{"line":200,"column":39}},"200":{"start":{"line":201,"column":0},"end":{"line":201,"column":28}},"201":{"start":{"line":202,"column":0},"end":{"line":202,"column":110}},"202":{"start":{"line":203,"column":0},"end":{"line":203,"column":7}},"203":{"start":{"line":204,"column":0},"end":{"line":204,"column":27}},"204":{"start":{"line":205,"column":0},"end":{"line":205,"column":76}},"205":{"start":{"line":206,"column":0},"end":{"line":206,"column":45}},"206":{"start":{"line":207,"column":0},"end":{"line":207,"column":59}},"207":{"start":{"line":208,"column":0},"end":{"line":208,"column":19}},"208":{"start":{"line":209,"column":0},"end":{"line":209,"column":11}},"209":{"start":{"line":210,"column":0},"end":{"line":210,"column":64}},"210":{"start":{"line":211,"column":0},"end":{"line":211,"column":10}},"211":{"start":{"line":212,"column":0},"end":{"line":212,"column":27}},"212":{"start":{"line":213,"column":0},"end":{"line":213,"column":76}},"213":{"start":{"line":214,"column":0},"end":{"line":214,"column":45}},"214":{"start":{"line":215,"column":0},"end":{"line":215,"column":59}},"215":{"start":{"line":216,"column":0},"end":{"line":216,"column":19}},"216":{"start":{"line":217,"column":0},"end":{"line":217,"column":11}},"217":{"start":{"line":218,"column":0},"end":{"line":218,"column":63}},"218":{"start":{"line":219,"column":0},"end":{"line":219,"column":10}},"219":{"start":{"line":220,"column":0},"end":{"line":220,"column":24}},"220":{"start":{"line":221,"column":0},"end":{"line":221,"column":53}},"221":{"start":{"line":222,"column":0},"end":{"line":222,"column":69}},"222":{"start":{"line":223,"column":0},"end":{"line":223,"column":27}},"223":{"start":{"line":224,"column":0},"end":{"line":224,"column":42}},"224":{"start":{"line":225,"column":0},"end":{"line":225,"column":47}},"225":{"start":{"line":226,"column":0},"end":{"line":226,"column":11}},"226":{"start":{"line":227,"column":0},"end":{"line":227,"column":11}},"227":{"start":{"line":228,"column":0},"end":{"line":228,"column":0}},"228":{"start":{"line":229,"column":0},"end":{"line":229,"column":32}},"229":{"start":{"line":230,"column":0},"end":{"line":230,"column":0}},"230":{"start":{"line":231,"column":0},"end":{"line":231,"column":57}},"231":{"start":{"line":232,"column":0},"end":{"line":232,"column":47}},"232":{"start":{"line":233,"column":0},"end":{"line":233,"column":45}},"233":{"start":{"line":234,"column":0},"end":{"line":234,"column":7}},"234":{"start":{"line":235,"column":0},"end":{"line":235,"column":5}},"235":{"start":{"line":236,"column":0},"end":{"line":236,"column":0}},"236":{"start":{"line":237,"column":0},"end":{"line":237,"column":32}},"237":{"start":{"line":238,"column":0},"end":{"line":238,"column":3}},"238":{"start":{"line":239,"column":0},"end":{"line":239,"column":0}},"239":{"start":{"line":240,"column":0},"end":{"line":240,"column":17}},"240":{"start":{"line":241,"column":0},"end":{"line":241,"column":22}},"241":{"start":{"line":242,"column":0},"end":{"line":242,"column":25}},"242":{"start":{"line":243,"column":0},"end":{"line":243,"column":0}},"243":{"start":{"line":244,"column":0},"end":{"line":244,"column":101}},"244":{"start":{"line":245,"column":0},"end":{"line":245,"column":27}},"245":{"start":{"line":246,"column":0},"end":{"line":246,"column":0}},"246":{"start":{"line":247,"column":0},"end":{"line":247,"column":68}},"247":{"start":{"line":248,"column":0},"end":{"line":248,"column":35}},"248":{"start":{"line":249,"column":0},"end":{"line":249,"column":34}},"249":{"start":{"line":250,"column":0},"end":{"line":250,"column":62}},"250":{"start":{"line":251,"column":0},"end":{"line":251,"column":81}},"251":{"start":{"line":252,"column":0},"end":{"line":252,"column":58}},"252":{"start":{"line":253,"column":0},"end":{"line":253,"column":7}},"253":{"start":{"line":254,"column":0},"end":{"line":254,"column":30}},"254":{"start":{"line":255,"column":0},"end":{"line":255,"column":32}},"255":{"start":{"line":256,"column":0},"end":{"line":256,"column":3}},"256":{"start":{"line":257,"column":0},"end":{"line":257,"column":0}},"257":{"start":{"line":258,"column":0},"end":{"line":258,"column":17}},"258":{"start":{"line":259,"column":0},"end":{"line":259,"column":23}},"259":{"start":{"line":260,"column":0},"end":{"line":260,"column":3}},"260":{"start":{"line":261,"column":0},"end":{"line":261,"column":0}},"261":{"start":{"line":262,"column":0},"end":{"line":262,"column":81}},"262":{"start":{"line":263,"column":0},"end":{"line":263,"column":66}},"263":{"start":{"line":264,"column":0},"end":{"line":264,"column":0}},"264":{"start":{"line":265,"column":0},"end":{"line":265,"column":80}},"265":{"start":{"line":266,"column":0},"end":{"line":266,"column":3}},"266":{"start":{"line":267,"column":0},"end":{"line":267,"column":1}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":4,"17":4,"18":1,"19":1,"20":0,"21":0,"22":0,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":117,"30":117,"31":1,"32":1,"33":384,"34":384,"35":1,"36":1,"37":289,"38":289,"39":1,"40":1,"41":212,"42":212,"43":212,"44":212,"45":1,"46":1,"47":92,"48":92,"49":1,"50":1,"51":92,"52":0,"53":0,"54":92,"55":92,"56":1,"57":1,"58":0,"59":0,"60":1,"61":1,"62":80,"63":80,"64":1,"65":1,"66":0,"67":0,"68":0,"69":0,"70":0,"71":0,"72":0,"73":1,"74":1,"75":7,"76":7,"77":7,"78":7,"79":7,"80":1,"81":1,"82":0,"83":0,"84":1,"85":1,"86":1,"87":1,"88":1,"89":1,"90":1,"91":1,"92":1,"93":1,"94":1,"95":1,"96":1,"97":1,"98":1,"99":1,"100":1,"101":1,"102":1,"103":1,"104":1,"105":1,"106":1,"107":1,"108":1,"109":1,"110":1,"111":1,"112":1,"113":1,"114":1,"115":1,"116":1,"117":1,"118":1,"119":1,"120":1,"121":1,"122":1,"123":1,"124":46,"125":46,"126":1,"127":1,"128":147,"129":147,"130":1,"131":1,"132":289,"133":289,"134":1,"135":1,"136":144,"137":144,"138":144,"139":1,"140":1,"141":1,"142":1,"143":1,"144":1,"145":71,"146":71,"147":1,"148":1,"149":71,"150":0,"151":0,"152":71,"153":71,"154":0,"155":0,"156":71,"157":71,"158":71,"159":71,"160":71,"161":71,"162":71,"163":71,"164":71,"165":71,"166":1,"167":1,"168":110,"169":110,"170":110,"171":55,"172":55,"173":110,"174":53,"175":110,"176":1,"177":1,"178":55,"179":55,"180":55,"181":55,"182":55,"183":1,"184":1,"185":71,"186":71,"187":0,"188":0,"189":21,"190":71,"191":80,"192":80,"193":80,"194":80,"195":59,"196":59,"197":59,"198":59,"199":59,"200":59,"201":59,"202":59,"203":59,"204":58,"205":58,"206":4,"207":4,"208":4,"209":54,"210":59,"211":59,"212":1,"213":1,"214":0,"215":0,"216":0,"217":1,"218":59,"219":59,"220":59,"221":59,"222":59,"223":55,"224":55,"225":55,"226":59,"227":59,"228":59,"229":59,"230":80,"231":45,"232":45,"233":45,"234":80,"235":21,"236":21,"237":21,"238":1,"239":1,"240":2,"241":2,"242":2,"243":2,"244":2,"245":2,"246":2,"247":2,"248":2,"249":2,"250":0,"251":0,"252":2,"253":2,"254":2,"255":2,"256":1,"257":1,"258":20,"259":20,"260":1,"261":1,"262":0,"263":0,"264":0,"265":0,"266":1},"branchMap":{"0":{"type":"branch","line":16,"loc":{"start":{"line":16,"column":2},"end":{"line":18,"column":3}},"locations":[{"start":{"line":16,"column":2},"end":{"line":18,"column":3}}]},"1":{"type":"branch","line":29,"loc":{"start":{"line":29,"column":2},"end":{"line":31,"column":3}},"locations":[{"start":{"line":29,"column":2},"end":{"line":31,"column":3}}]},"2":{"type":"branch","line":33,"loc":{"start":{"line":33,"column":2},"end":{"line":35,"column":3}},"locations":[{"start":{"line":33,"column":2},"end":{"line":35,"column":3}}]},"3":{"type":"branch","line":37,"loc":{"start":{"line":37,"column":2},"end":{"line":39,"column":3}},"locations":[{"start":{"line":37,"column":2},"end":{"line":39,"column":3}}]},"4":{"type":"branch","line":41,"loc":{"start":{"line":41,"column":2},"end":{"line":45,"column":3}},"locations":[{"start":{"line":41,"column":2},"end":{"line":45,"column":3}}]},"5":{"type":"branch","line":42,"loc":{"start":{"line":42,"column":25},"end":{"line":42,"column":42}},"locations":[{"start":{"line":42,"column":25},"end":{"line":42,"column":42}}]},"6":{"type":"branch","line":47,"loc":{"start":{"line":47,"column":2},"end":{"line":49,"column":3}},"locations":[{"start":{"line":47,"column":2},"end":{"line":49,"column":3}}]},"7":{"type":"branch","line":51,"loc":{"start":{"line":51,"column":2},"end":{"line":56,"column":3}},"locations":[{"start":{"line":51,"column":2},"end":{"line":56,"column":3}}]},"8":{"type":"branch","line":52,"loc":{"start":{"line":52,"column":57},"end":{"line":54,"column":5}},"locations":[{"start":{"line":52,"column":57},"end":{"line":54,"column":5}}]},"9":{"type":"branch","line":62,"loc":{"start":{"line":62,"column":2},"end":{"line":64,"column":3}},"locations":[{"start":{"line":62,"column":2},"end":{"line":64,"column":3}}]},"10":{"type":"branch","line":75,"loc":{"start":{"line":75,"column":2},"end":{"line":80,"column":3}},"locations":[{"start":{"line":75,"column":2},"end":{"line":80,"column":3}}]},"11":{"type":"branch","line":124,"loc":{"start":{"line":124,"column":2},"end":{"line":126,"column":3}},"locations":[{"start":{"line":124,"column":2},"end":{"line":126,"column":3}}]},"12":{"type":"branch","line":128,"loc":{"start":{"line":128,"column":2},"end":{"line":130,"column":3}},"locations":[{"start":{"line":128,"column":2},"end":{"line":130,"column":3}}]},"13":{"type":"branch","line":132,"loc":{"start":{"line":132,"column":2},"end":{"line":134,"column":3}},"locations":[{"start":{"line":132,"column":2},"end":{"line":134,"column":3}}]},"14":{"type":"branch","line":136,"loc":{"start":{"line":136,"column":2},"end":{"line":139,"column":3}},"locations":[{"start":{"line":136,"column":2},"end":{"line":139,"column":3}}]},"15":{"type":"branch","line":137,"loc":{"start":{"line":137,"column":24},"end":{"line":137,"column":41}},"locations":[{"start":{"line":137,"column":24},"end":{"line":137,"column":41}}]},"16":{"type":"branch","line":145,"loc":{"start":{"line":145,"column":2},"end":{"line":147,"column":3}},"locations":[{"start":{"line":145,"column":2},"end":{"line":147,"column":3}}]},"17":{"type":"branch","line":149,"loc":{"start":{"line":149,"column":2},"end":{"line":166,"column":3}},"locations":[{"start":{"line":149,"column":2},"end":{"line":166,"column":3}}]},"18":{"type":"branch","line":150,"loc":{"start":{"line":150,"column":57},"end":{"line":152,"column":5}},"locations":[{"start":{"line":150,"column":57},"end":{"line":152,"column":5}}]},"19":{"type":"branch","line":154,"loc":{"start":{"line":154,"column":21},"end":{"line":156,"column":5}},"locations":[{"start":{"line":154,"column":21},"end":{"line":156,"column":5}}]},"20":{"type":"branch","line":158,"loc":{"start":{"line":158,"column":21},"end":{"line":165,"column":5}},"locations":[{"start":{"line":158,"column":21},"end":{"line":165,"column":5}}]},"21":{"type":"branch","line":159,"loc":{"start":{"line":159,"column":25},"end":{"line":164,"column":7}},"locations":[{"start":{"line":159,"column":25},"end":{"line":164,"column":7}}]},"22":{"type":"branch","line":168,"loc":{"start":{"line":168,"column":10},"end":{"line":183,"column":3}},"locations":[{"start":{"line":168,"column":10},"end":{"line":183,"column":3}}]},"23":{"type":"branch","line":171,"loc":{"start":{"line":171,"column":15},"end":{"line":174,"column":20}},"locations":[{"start":{"line":171,"column":15},"end":{"line":174,"column":20}}]},"24":{"type":"branch","line":174,"loc":{"start":{"line":174,"column":20},"end":{"line":176,"column":11}},"locations":[{"start":{"line":174,"column":20},"end":{"line":176,"column":11}}]},"25":{"type":"branch","line":176,"loc":{"start":{"line":176,"column":5},"end":{"line":178,"column":5}},"locations":[{"start":{"line":176,"column":5},"end":{"line":178,"column":5}}]},"26":{"type":"branch","line":176,"loc":{"start":{"line":176,"column":22},"end":{"line":178,"column":5}},"locations":[{"start":{"line":176,"column":22},"end":{"line":178,"column":5}}]},"27":{"type":"branch","line":179,"loc":{"start":{"line":179,"column":-1},"end":{"line":183,"column":3}},"locations":[{"start":{"line":179,"column":-1},"end":{"line":183,"column":3}}]},"28":{"type":"branch","line":185,"loc":{"start":{"line":185,"column":10},"end":{"line":238,"column":3}},"locations":[{"start":{"line":185,"column":10},"end":{"line":238,"column":3}}]},"29":{"type":"branch","line":186,"loc":{"start":{"line":186,"column":29},"end":{"line":186,"column":36}},"locations":[{"start":{"line":186,"column":29},"end":{"line":186,"column":36}}]},"30":{"type":"branch","line":187,"loc":{"start":{"line":187,"column":-1},"end":{"line":187,"column":21}},"locations":[{"start":{"line":187,"column":-1},"end":{"line":187,"column":21}}]},"31":{"type":"branch","line":187,"loc":{"start":{"line":187,"column":21},"end":{"line":189,"column":5}},"locations":[{"start":{"line":187,"column":21},"end":{"line":189,"column":5}}]},"32":{"type":"branch","line":190,"loc":{"start":{"line":190,"column":-1},"end":{"line":191,"column":25}},"locations":[{"start":{"line":190,"column":-1},"end":{"line":191,"column":25}}]},"33":{"type":"branch","line":191,"loc":{"start":{"line":191,"column":25},"end":{"line":235,"column":5}},"locations":[{"start":{"line":191,"column":25},"end":{"line":235,"column":5}}]},"34":{"type":"branch","line":195,"loc":{"start":{"line":195,"column":19},"end":{"line":195,"column":25}},"locations":[{"start":{"line":195,"column":19},"end":{"line":195,"column":25}}]},"35":{"type":"branch","line":196,"loc":{"start":{"line":196,"column":-1},"end":{"line":231,"column":56}},"locations":[{"start":{"line":196,"column":-1},"end":{"line":231,"column":56}}]},"36":{"type":"branch","line":231,"loc":{"start":{"line":231,"column":56},"end":{"line":234,"column":7}},"locations":[{"start":{"line":231,"column":56},"end":{"line":234,"column":7}}]},"37":{"type":"branch","line":236,"loc":{"start":{"line":236,"column":-1},"end":{"line":238,"column":3}},"locations":[{"start":{"line":236,"column":-1},"end":{"line":238,"column":3}}]},"38":{"type":"branch","line":204,"loc":{"start":{"line":204,"column":14},"end":{"line":211,"column":9}},"locations":[{"start":{"line":204,"column":14},"end":{"line":211,"column":9}}]},"39":{"type":"branch","line":206,"loc":{"start":{"line":206,"column":44},"end":{"line":209,"column":11}},"locations":[{"start":{"line":206,"column":44},"end":{"line":209,"column":11}}]},"40":{"type":"branch","line":210,"loc":{"start":{"line":210,"column":-1},"end":{"line":211,"column":9}},"locations":[{"start":{"line":210,"column":-1},"end":{"line":211,"column":9}}]},"41":{"type":"branch","line":212,"loc":{"start":{"line":212,"column":15},"end":{"line":219,"column":9}},"locations":[{"start":{"line":212,"column":15},"end":{"line":219,"column":9}}]},"42":{"type":"branch","line":214,"loc":{"start":{"line":214,"column":44},"end":{"line":217,"column":11}},"locations":[{"start":{"line":214,"column":44},"end":{"line":217,"column":11}}]},"43":{"type":"branch","line":220,"loc":{"start":{"line":220,"column":17},"end":{"line":227,"column":9}},"locations":[{"start":{"line":220,"column":17},"end":{"line":227,"column":9}}]},"44":{"type":"branch","line":223,"loc":{"start":{"line":223,"column":26},"end":{"line":226,"column":11}},"locations":[{"start":{"line":223,"column":26},"end":{"line":226,"column":11}}]},"45":{"type":"branch","line":240,"loc":{"start":{"line":240,"column":2},"end":{"line":256,"column":3}},"locations":[{"start":{"line":240,"column":2},"end":{"line":256,"column":3}}]},"46":{"type":"branch","line":258,"loc":{"start":{"line":258,"column":2},"end":{"line":260,"column":3}},"locations":[{"start":{"line":258,"column":2},"end":{"line":260,"column":3}}]}},"b":{"0":[4],"1":[117],"2":[384],"3":[289],"4":[212],"5":[0],"6":[92],"7":[92],"8":[0],"9":[80],"10":[7],"11":[46],"12":[147],"13":[289],"14":[144],"15":[0],"16":[71],"17":[71],"18":[0],"19":[0],"20":[71],"21":[71],"22":[110],"23":[55],"24":[53],"25":[2],"26":[1],"27":[55],"28":[71],"29":[50],"30":[21],"31":[0],"32":[21],"33":[80],"34":[21],"35":[59],"36":[45],"37":[21],"38":[58],"39":[4],"40":[54],"41":[1],"42":[0],"43":[59],"44":[55],"45":[2],"46":[20]},"fnMap":{"0":{"name":"TaskFlushedError","decl":{"start":{"line":16,"column":2},"end":{"line":18,"column":3}},"loc":{"start":{"line":16,"column":2},"end":{"line":18,"column":3}},"line":16},"1":{"name":"isTaskFlushedError","decl":{"start":{"line":21,"column":0},"end":{"line":23,"column":1}},"loc":{"start":{"line":21,"column":0},"end":{"line":23,"column":1}},"line":21},"2":{"name":"Queue","decl":{"start":{"line":29,"column":2},"end":{"line":31,"column":3}},"loc":{"start":{"line":29,"column":2},"end":{"line":31,"column":3}},"line":29},"3":{"name":"get size","decl":{"start":{"line":33,"column":2},"end":{"line":35,"column":3}},"loc":{"start":{"line":33,"column":2},"end":{"line":35,"column":3}},"line":33},"4":{"name":"get capacity","decl":{"start":{"line":37,"column":2},"end":{"line":39,"column":3}},"loc":{"start":{"line":37,"column":2},"end":{"line":39,"column":3}},"line":37},"5":{"name":"get freeSpace","decl":{"start":{"line":41,"column":2},"end":{"line":45,"column":3}},"loc":{"start":{"line":41,"column":2},"end":{"line":45,"column":3}},"line":41},"6":{"name":"put","decl":{"start":{"line":47,"column":2},"end":{"line":49,"column":3}},"loc":{"start":{"line":47,"column":2},"end":{"line":49,"column":3}},"line":47},"7":{"name":"putMany","decl":{"start":{"line":51,"column":2},"end":{"line":56,"column":3}},"loc":{"start":{"line":51,"column":2},"end":{"line":56,"column":3}},"line":51},"8":{"name":"peek","decl":{"start":{"line":58,"column":2},"end":{"line":60,"column":3}},"loc":{"start":{"line":58,"column":2},"end":{"line":60,"column":3}},"line":58},"9":{"name":"take","decl":{"start":{"line":62,"column":2},"end":{"line":64,"column":3}},"loc":{"start":{"line":62,"column":2},"end":{"line":64,"column":3}},"line":62},"10":{"name":"takeMany","decl":{"start":{"line":66,"column":2},"end":{"line":73,"column":3}},"loc":{"start":{"line":66,"column":2},"end":{"line":73,"column":3}},"line":66},"11":{"name":"takeAll","decl":{"start":{"line":75,"column":2},"end":{"line":80,"column":3}},"loc":{"start":{"line":75,"column":2},"end":{"line":80,"column":3}},"line":75},"12":{"name":"flush","decl":{"start":{"line":82,"column":2},"end":{"line":84,"column":3}},"loc":{"start":{"line":82,"column":2},"end":{"line":84,"column":3}},"line":82},"13":{"name":"AutoQueue","decl":{"start":{"line":124,"column":2},"end":{"line":126,"column":3}},"loc":{"start":{"line":124,"column":2},"end":{"line":126,"column":3}},"line":124},"14":{"name":"get size","decl":{"start":{"line":128,"column":2},"end":{"line":130,"column":3}},"loc":{"start":{"line":128,"column":2},"end":{"line":130,"column":3}},"line":128},"15":{"name":"get capacity","decl":{"start":{"line":132,"column":2},"end":{"line":134,"column":3}},"loc":{"start":{"line":132,"column":2},"end":{"line":134,"column":3}},"line":132},"16":{"name":"get freeSpace","decl":{"start":{"line":136,"column":2},"end":{"line":139,"column":3}},"loc":{"start":{"line":136,"column":2},"end":{"line":139,"column":3}},"line":136},"17":{"name":"put","decl":{"start":{"line":145,"column":2},"end":{"line":147,"column":3}},"loc":{"start":{"line":145,"column":2},"end":{"line":147,"column":3}},"line":145},"18":{"name":"putMany","decl":{"start":{"line":149,"column":2},"end":{"line":166,"column":3}},"loc":{"start":{"line":149,"column":2},"end":{"line":166,"column":3}},"line":149},"19":{"name":"processOutOfOrderTasks","decl":{"start":{"line":168,"column":10},"end":{"line":183,"column":3}},"loc":{"start":{"line":168,"column":10},"end":{"line":183,"column":3}},"line":168},"20":{"name":"take","decl":{"start":{"line":185,"column":10},"end":{"line":238,"column":3}},"loc":{"start":{"line":185,"column":10},"end":{"line":238,"column":3}},"line":185},"21":{"name":"flush","decl":{"start":{"line":240,"column":2},"end":{"line":256,"column":3}},"loc":{"start":{"line":240,"column":2},"end":{"line":256,"column":3}},"line":240},"22":{"name":"abort","decl":{"start":{"line":258,"column":2},"end":{"line":260,"column":3}},"loc":{"start":{"line":258,"column":2},"end":{"line":260,"column":3}},"line":258},"23":{"name":"on","decl":{"start":{"line":262,"column":2},"end":{"line":266,"column":3}},"loc":{"start":{"line":262,"column":2},"end":{"line":266,"column":3}},"line":262}},"f":{"0":4,"1":0,"2":117,"3":384,"4":289,"5":212,"6":92,"7":92,"8":0,"9":80,"10":0,"11":7,"12":0,"13":46,"14":147,"15":289,"16":144,"17":71,"18":71,"19":110,"20":71,"21":2,"22":20,"23":0}},"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/utils/batch-size.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/utils/batch-size.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":37}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":34}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":36}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":0}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":35}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":0}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":38}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":0}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":76}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":23}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":33}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":58}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":45}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":47}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":52}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":22}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":34}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":29}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":7}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":13}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":5}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":33}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":33}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":5}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":20}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":69}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":24}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":5}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":4}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":20}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":1}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":0}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":59}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":32}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":1}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":0}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":62}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":35}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":1}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":1,"35":20,"36":20,"37":20,"38":1,"39":0,"40":0,"41":0},"branchMap":{"0":{"type":"branch","line":36,"loc":{"start":{"line":36,"column":0},"end":{"line":38,"column":1}},"locations":[{"start":{"line":36,"column":0},"end":{"line":38,"column":1}}]}},"b":{"0":[20]},"fnMap":{"0":{"name":"waitForBatchSize","decl":{"start":{"line":12,"column":7},"end":{"line":34,"column":1}},"loc":{"start":{"line":12,"column":7},"end":{"line":34,"column":1}},"line":12},"1":{"name":"formatMBtoBytes","decl":{"start":{"line":36,"column":0},"end":{"line":38,"column":1}},"loc":{"start":{"line":36,"column":0},"end":{"line":38,"column":1}},"line":36},"2":{"name":"formatBytesToMB","decl":{"start":{"line":40,"column":0},"end":{"line":42,"column":1}},"loc":{"start":{"line":40,"column":0},"end":{"line":42,"column":1}},"line":40}},"f":{"0":0,"1":20,"2":0}},"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/utils/bigint.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/utils/bigint.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":18}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":19}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":1}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":0}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":89}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":39}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":31}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":2}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":0,"10":0},"branchMap":{},"b":{},"fnMap":{"0":{"name":"Object..BigInt.toJSON","decl":{"start":{"line":9,"column":26},"end":{"line":11,"column":2}},"loc":{"start":{"line":9,"column":26},"end":{"line":11,"column":2}},"line":9}},"f":{"0":0}},"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/utils/blockHeightMap.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/utils/blockHeightMap.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":71}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":0}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":32}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":23}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":0}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":46}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":42}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":82}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":3}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":0}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":28}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":21}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":3}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":0}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":26}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":44}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":0}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":32}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":65}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":5}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":0}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":25}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":3}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":0}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":72}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":42}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":9}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":30}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":17}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":23}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":5}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":3}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":0}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":55}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":40}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":0}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":41}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":0}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":42}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":44}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":40}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":17}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":14}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":35}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":57}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":8}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":0}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":37}},"51":{"start":{"line":52,"column":0},"end":{"line":52,"column":19}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":14}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":7}},"54":{"start":{"line":55,"column":0},"end":{"line":55,"column":36}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":19}},"56":{"start":{"line":57,"column":0},"end":{"line":57,"column":7}},"57":{"start":{"line":58,"column":0},"end":{"line":58,"column":0}},"58":{"start":{"line":59,"column":0},"end":{"line":59,"column":35}},"59":{"start":{"line":60,"column":0},"end":{"line":60,"column":14}},"60":{"start":{"line":61,"column":0},"end":{"line":61,"column":7}},"61":{"start":{"line":62,"column":0},"end":{"line":62,"column":5}},"62":{"start":{"line":63,"column":0},"end":{"line":63,"column":0}},"63":{"start":{"line":64,"column":0},"end":{"line":64,"column":18}},"64":{"start":{"line":65,"column":0},"end":{"line":65,"column":3}},"65":{"start":{"line":66,"column":0},"end":{"line":66,"column":0}},"66":{"start":{"line":67,"column":0},"end":{"line":67,"column":36}},"67":{"start":{"line":68,"column":0},"end":{"line":68,"column":75}},"68":{"start":{"line":69,"column":0},"end":{"line":69,"column":14}},"69":{"start":{"line":70,"column":0},"end":{"line":70,"column":14}},"70":{"start":{"line":71,"column":0},"end":{"line":71,"column":25}},"71":{"start":{"line":72,"column":0},"end":{"line":72,"column":79}},"72":{"start":{"line":73,"column":0},"end":{"line":73,"column":8}},"73":{"start":{"line":74,"column":0},"end":{"line":74,"column":7}},"74":{"start":{"line":75,"column":0},"end":{"line":75,"column":3}},"75":{"start":{"line":76,"column":0},"end":{"line":76,"column":0}},"76":{"start":{"line":77,"column":0},"end":{"line":77,"column":74}},"77":{"start":{"line":78,"column":0},"end":{"line":78,"column":40}},"78":{"start":{"line":79,"column":0},"end":{"line":79,"column":27}},"79":{"start":{"line":80,"column":0},"end":{"line":80,"column":0}},"80":{"start":{"line":81,"column":0},"end":{"line":81,"column":43}},"81":{"start":{"line":82,"column":0},"end":{"line":82,"column":84}},"82":{"start":{"line":83,"column":0},"end":{"line":83,"column":57}},"83":{"start":{"line":84,"column":0},"end":{"line":84,"column":42}},"84":{"start":{"line":85,"column":0},"end":{"line":85,"column":49}},"85":{"start":{"line":86,"column":0},"end":{"line":86,"column":9}},"86":{"start":{"line":87,"column":0},"end":{"line":87,"column":7}},"87":{"start":{"line":88,"column":0},"end":{"line":88,"column":0}},"88":{"start":{"line":89,"column":0},"end":{"line":89,"column":51}},"89":{"start":{"line":90,"column":0},"end":{"line":90,"column":31}},"90":{"start":{"line":91,"column":0},"end":{"line":91,"column":7}},"91":{"start":{"line":92,"column":0},"end":{"line":92,"column":0}},"92":{"start":{"line":93,"column":0},"end":{"line":93,"column":24}},"93":{"start":{"line":94,"column":0},"end":{"line":94,"column":5}},"94":{"start":{"line":95,"column":0},"end":{"line":95,"column":0}},"95":{"start":{"line":96,"column":0},"end":{"line":96,"column":18}},"96":{"start":{"line":97,"column":0},"end":{"line":97,"column":3}},"97":{"start":{"line":98,"column":0},"end":{"line":98,"column":0}},"98":{"start":{"line":99,"column":0},"end":{"line":99,"column":53}},"99":{"start":{"line":100,"column":0},"end":{"line":100,"column":41}},"100":{"start":{"line":101,"column":0},"end":{"line":101,"column":0}},"101":{"start":{"line":102,"column":0},"end":{"line":102,"column":43}},"102":{"start":{"line":103,"column":0},"end":{"line":103,"column":33}},"103":{"start":{"line":104,"column":0},"end":{"line":104,"column":5}},"104":{"start":{"line":105,"column":0},"end":{"line":105,"column":0}},"105":{"start":{"line":106,"column":0},"end":{"line":106,"column":38}},"106":{"start":{"line":107,"column":0},"end":{"line":107,"column":3}},"107":{"start":{"line":108,"column":0},"end":{"line":108,"column":1}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":78,"10":78,"11":78,"12":1,"13":1,"14":32,"15":32,"16":1,"17":1,"18":35,"19":35,"20":35,"21":3,"22":3,"23":32,"24":32,"25":32,"26":1,"27":1,"28":1,"29":12,"30":12,"31":12,"32":3,"33":3,"34":12,"35":1,"36":1,"37":56,"38":56,"39":56,"40":56,"41":56,"42":115,"43":115,"44":115,"45":115,"46":115,"47":115,"48":115,"49":115,"50":115,"51":37,"52":37,"53":37,"54":105,"55":66,"56":66,"57":78,"58":105,"59":12,"60":12,"61":115,"62":56,"63":56,"64":56,"65":1,"66":1,"67":0,"68":0,"69":0,"70":0,"71":0,"72":0,"73":0,"74":0,"75":1,"76":1,"77":1,"78":1,"79":1,"80":1,"81":3,"82":1,"83":1,"84":1,"85":1,"86":1,"87":3,"88":3,"89":1,"90":1,"91":3,"92":3,"93":3,"94":1,"95":1,"96":1,"97":1,"98":1,"99":84,"100":84,"101":84,"102":252,"103":252,"104":84,"105":84,"106":84,"107":1},"branchMap":{"0":{"type":"branch","line":9,"loc":{"start":{"line":9,"column":2},"end":{"line":12,"column":3}},"locations":[{"start":{"line":9,"column":2},"end":{"line":12,"column":3}}]},"1":{"type":"branch","line":11,"loc":{"start":{"line":11,"column":58},"end":{"line":11,"column":79}},"locations":[{"start":{"line":11,"column":58},"end":{"line":11,"column":79}}]},"2":{"type":"branch","line":14,"loc":{"start":{"line":14,"column":2},"end":{"line":16,"column":3}},"locations":[{"start":{"line":14,"column":2},"end":{"line":16,"column":3}}]},"3":{"type":"branch","line":18,"loc":{"start":{"line":18,"column":2},"end":{"line":26,"column":3}},"locations":[{"start":{"line":18,"column":2},"end":{"line":26,"column":3}}]},"4":{"type":"branch","line":21,"loc":{"start":{"line":21,"column":31},"end":{"line":23,"column":5}},"locations":[{"start":{"line":21,"column":31},"end":{"line":23,"column":5}}]},"5":{"type":"branch","line":24,"loc":{"start":{"line":24,"column":-1},"end":{"line":26,"column":3}},"locations":[{"start":{"line":24,"column":-1},"end":{"line":26,"column":3}}]},"6":{"type":"branch","line":29,"loc":{"start":{"line":29,"column":2},"end":{"line":35,"column":3}},"locations":[{"start":{"line":29,"column":2},"end":{"line":35,"column":3}}]},"7":{"type":"branch","line":32,"loc":{"start":{"line":32,"column":6},"end":{"line":34,"column":5}},"locations":[{"start":{"line":32,"column":6},"end":{"line":34,"column":5}}]},"8":{"type":"branch","line":37,"loc":{"start":{"line":37,"column":2},"end":{"line":65,"column":3}},"locations":[{"start":{"line":37,"column":2},"end":{"line":65,"column":3}}]},"9":{"type":"branch","line":42,"loc":{"start":{"line":42,"column":41},"end":{"line":62,"column":5}},"locations":[{"start":{"line":42,"column":41},"end":{"line":62,"column":5}}]},"10":{"type":"branch","line":44,"loc":{"start":{"line":44,"column":34},"end":{"line":44,"column":39}},"locations":[{"start":{"line":44,"column":34},"end":{"line":44,"column":39}}]},"11":{"type":"branch","line":48,"loc":{"start":{"line":48,"column":29},"end":{"line":48,"column":44}},"locations":[{"start":{"line":48,"column":29},"end":{"line":48,"column":44}}]},"12":{"type":"branch","line":48,"loc":{"start":{"line":48,"column":45},"end":{"line":48,"column":56}},"locations":[{"start":{"line":48,"column":45},"end":{"line":48,"column":56}}]},"13":{"type":"branch","line":51,"loc":{"start":{"line":51,"column":36},"end":{"line":54,"column":7}},"locations":[{"start":{"line":51,"column":36},"end":{"line":54,"column":7}}]},"14":{"type":"branch","line":55,"loc":{"start":{"line":55,"column":-1},"end":{"line":61,"column":7}},"locations":[{"start":{"line":55,"column":-1},"end":{"line":61,"column":7}}]},"15":{"type":"branch","line":55,"loc":{"start":{"line":55,"column":-1},"end":{"line":55,"column":35}},"locations":[{"start":{"line":55,"column":-1},"end":{"line":55,"column":35}}]},"16":{"type":"branch","line":55,"loc":{"start":{"line":55,"column":35},"end":{"line":57,"column":7}},"locations":[{"start":{"line":55,"column":35},"end":{"line":57,"column":7}}]},"17":{"type":"branch","line":58,"loc":{"start":{"line":58,"column":-1},"end":{"line":59,"column":34}},"locations":[{"start":{"line":58,"column":-1},"end":{"line":59,"column":34}}]},"18":{"type":"branch","line":59,"loc":{"start":{"line":59,"column":34},"end":{"line":61,"column":7}},"locations":[{"start":{"line":59,"column":34},"end":{"line":61,"column":7}}]},"19":{"type":"branch","line":77,"loc":{"start":{"line":77,"column":2},"end":{"line":97,"column":3}},"locations":[{"start":{"line":77,"column":2},"end":{"line":97,"column":3}}]},"20":{"type":"branch","line":81,"loc":{"start":{"line":81,"column":42},"end":{"line":94,"column":5}},"locations":[{"start":{"line":81,"column":42},"end":{"line":94,"column":5}}]},"21":{"type":"branch","line":82,"loc":{"start":{"line":82,"column":30},"end":{"line":82,"column":59}},"locations":[{"start":{"line":82,"column":30},"end":{"line":82,"column":59}}]},"22":{"type":"branch","line":82,"loc":{"start":{"line":82,"column":59},"end":{"line":82,"column":81}},"locations":[{"start":{"line":82,"column":59},"end":{"line":82,"column":81}}]},"23":{"type":"branch","line":82,"loc":{"start":{"line":82,"column":83},"end":{"line":87,"column":7}},"locations":[{"start":{"line":82,"column":83},"end":{"line":87,"column":7}}]},"24":{"type":"branch","line":89,"loc":{"start":{"line":89,"column":28},"end":{"line":89,"column":48}},"locations":[{"start":{"line":89,"column":28},"end":{"line":89,"column":48}}]},"25":{"type":"branch","line":89,"loc":{"start":{"line":89,"column":50},"end":{"line":91,"column":7}},"locations":[{"start":{"line":89,"column":50},"end":{"line":91,"column":7}}]},"26":{"type":"branch","line":99,"loc":{"start":{"line":99,"column":2},"end":{"line":107,"column":3}},"locations":[{"start":{"line":99,"column":2},"end":{"line":107,"column":3}}]},"27":{"type":"branch","line":102,"loc":{"start":{"line":102,"column":42},"end":{"line":104,"column":5}},"locations":[{"start":{"line":102,"column":42},"end":{"line":104,"column":5}}]}},"b":{"0":[78],"1":[143],"2":[32],"3":[35],"4":[3],"5":[32],"6":[12],"7":[3],"8":[56],"9":[115],"10":[78],"11":[78],"12":[37],"13":[37],"14":[105],"15":[78],"16":[66],"17":[78],"18":[12],"19":[1],"20":[3],"21":[2],"22":[1],"23":[1],"24":[2],"25":[1],"26":[84],"27":[252]},"fnMap":{"0":{"name":"BlockHeightMap","decl":{"start":{"line":9,"column":2},"end":{"line":12,"column":3}},"loc":{"start":{"line":9,"column":2},"end":{"line":12,"column":3}},"line":9},"1":{"name":"getAll","decl":{"start":{"line":14,"column":2},"end":{"line":16,"column":3}},"loc":{"start":{"line":14,"column":2},"end":{"line":16,"column":3}},"line":14},"2":{"name":"get","decl":{"start":{"line":18,"column":2},"end":{"line":26,"column":3}},"loc":{"start":{"line":18,"column":2},"end":{"line":26,"column":3}},"line":18},"3":{"name":"getSafe","decl":{"start":{"line":29,"column":2},"end":{"line":35,"column":3}},"loc":{"start":{"line":29,"column":2},"end":{"line":35,"column":3}},"line":29},"4":{"name":"getDetails","decl":{"start":{"line":37,"column":2},"end":{"line":65,"column":3}},"loc":{"start":{"line":37,"column":2},"end":{"line":65,"column":3}},"line":37},"5":{"name":"getAllWithRange","decl":{"start":{"line":67,"column":2},"end":{"line":75,"column":3}},"loc":{"start":{"line":67,"column":2},"end":{"line":75,"column":3}},"line":67},"6":{"name":"getWithinRange","decl":{"start":{"line":77,"column":2},"end":{"line":97,"column":3}},"loc":{"start":{"line":77,"column":2},"end":{"line":97,"column":3}},"line":77},"7":{"name":"map","decl":{"start":{"line":99,"column":2},"end":{"line":107,"column":3}},"loc":{"start":{"line":99,"column":2},"end":{"line":107,"column":3}},"line":99}},"f":{"0":78,"1":32,"2":35,"3":12,"4":56,"5":0,"6":1,"7":84}},"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/utils/blockSizeBuffer.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/utils/blockSizeBuffer.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":34}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":0}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":52}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":33}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":20}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":3}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":0}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":21}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":26}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":51}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":5}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":0}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":16}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":41}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":27}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":5}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":0}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":25}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":82}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":5}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":43}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":3}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":1}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":20,"8":20,"9":1,"10":1,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":1},"branchMap":{"0":{"type":"branch","line":7,"loc":{"start":{"line":7,"column":2},"end":{"line":9,"column":3}},"locations":[{"start":{"line":7,"column":2},"end":{"line":9,"column":3}}]}},"b":{"0":[20]},"fnMap":{"0":{"name":"BlockSizeBuffer","decl":{"start":{"line":7,"column":2},"end":{"line":9,"column":3}},"loc":{"start":{"line":7,"column":2},"end":{"line":9,"column":3}},"line":7},"1":{"name":"average","decl":{"start":{"line":11,"column":2},"end":{"line":25,"column":3}},"loc":{"start":{"line":11,"column":2},"end":{"line":25,"column":3}},"line":11}},"f":{"0":20,"1":0}},"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/utils/blocks.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/utils/blocks.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":70}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":53}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":40}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":0}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":39}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":25}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":44}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":28}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":118}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":49}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":64}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":33}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":54}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":21}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":43}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":14}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":6}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":5}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":16}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":1}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":0}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":84}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":39}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":0}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":14}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":12}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":41}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":56}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":89}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":55}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":8}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":5}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":4}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":1}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":6,"8":6,"9":6,"10":6,"11":6,"12":6,"13":6,"14":6,"15":6,"16":494,"17":494,"18":494,"19":494,"20":6,"21":6,"22":6,"23":1,"24":11,"25":11,"26":11,"27":11,"28":11,"29":11,"30":4887731,"31":4,"32":4,"33":11,"34":11,"35":11,"36":11},"branchMap":{"0":{"type":"branch","line":8,"loc":{"start":{"line":8,"column":0},"end":{"line":23,"column":1}},"locations":[{"start":{"line":8,"column":0},"end":{"line":23,"column":1}}]},"1":{"type":"branch","line":16,"loc":{"start":{"line":16,"column":42},"end":{"line":21,"column":3}},"locations":[{"start":{"line":16,"column":42},"end":{"line":21,"column":3}}]},"2":{"type":"branch","line":18,"loc":{"start":{"line":18,"column":17},"end":{"line":18,"column":41}},"locations":[{"start":{"line":18,"column":17},"end":{"line":18,"column":41}}]},"3":{"type":"branch","line":25,"loc":{"start":{"line":25,"column":0},"end":{"line":37,"column":1}},"locations":[{"start":{"line":25,"column":0},"end":{"line":37,"column":1}}]},"4":{"type":"branch","line":26,"loc":{"start":{"line":26,"column":29},"end":{"line":26,"column":39}},"locations":[{"start":{"line":26,"column":29},"end":{"line":26,"column":39}}]},"5":{"type":"branch","line":30,"loc":{"start":{"line":30,"column":23},"end":{"line":34,"column":7}},"locations":[{"start":{"line":30,"column":23},"end":{"line":34,"column":7}}]},"6":{"type":"branch","line":31,"loc":{"start":{"line":31,"column":35},"end":{"line":31,"column":56}},"locations":[{"start":{"line":31,"column":35},"end":{"line":31,"column":56}}]},"7":{"type":"branch","line":32,"loc":{"start":{"line":32,"column":-1},"end":{"line":34,"column":7}},"locations":[{"start":{"line":32,"column":-1},"end":{"line":34,"column":7}}]},"8":{"type":"branch","line":32,"loc":{"start":{"line":32,"column":54},"end":{"line":32,"column":87}},"locations":[{"start":{"line":32,"column":54},"end":{"line":32,"column":87}}]}},"b":{"0":[6],"1":[494],"2":[48457],"3":[11],"4":[0],"5":[4887731],"6":[4887727],"7":[4],"8":[8]},"fnMap":{"0":{"name":"cleanedBatchBlocks","decl":{"start":{"line":8,"column":0},"end":{"line":23,"column":1}},"loc":{"start":{"line":8,"column":0},"end":{"line":23,"column":1}},"line":8},"1":{"name":"transformBypassBlocks","decl":{"start":{"line":25,"column":0},"end":{"line":37,"column":1}},"loc":{"start":{"line":25,"column":0},"end":{"line":37,"column":1}},"line":25}},"f":{"0":6,"1":11}},"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/utils/configure.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/utils/configure.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":24}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":92}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":47}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":28}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":59}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":0}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":45}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":38}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":19}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":30}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":30}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":29}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":1}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":0}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":74}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":38}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":83}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":3}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":54}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":10}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":14}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":17}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":28}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":16}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":49}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":81}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":17}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":1}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":0}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":96}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":100}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":17}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":11}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":3}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":0}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":82}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":112}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":23}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":63}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":33}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":34}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":29}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":43}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":9}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":15}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":7}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":60}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":27}},"51":{"start":{"line":52,"column":0},"end":{"line":52,"column":7}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":5}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":4}},"54":{"start":{"line":55,"column":0},"end":{"line":55,"column":1}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":20,"18":20,"19":0,"20":0,"21":20,"22":20,"23":20,"24":20,"25":20,"26":20,"27":20,"28":20,"29":20,"30":20,"31":1,"32":20,"33":20,"34":20,"35":20,"36":20,"37":0,"38":0,"39":0,"40":0,"41":3,"42":3,"43":1,"44":1,"45":1,"46":1,"47":1,"48":1,"49":3,"50":1,"51":1,"52":3,"53":0,"54":0},"branchMap":{"0":{"type":"branch","line":18,"loc":{"start":{"line":18,"column":0},"end":{"line":31,"column":1}},"locations":[{"start":{"line":18,"column":0},"end":{"line":31,"column":1}}]},"1":{"type":"branch","line":19,"loc":{"start":{"line":19,"column":37},"end":{"line":21,"column":3}},"locations":[{"start":{"line":19,"column":37},"end":{"line":21,"column":3}}]},"2":{"type":"branch","line":29,"loc":{"start":{"line":29,"column":8},"end":{"line":29,"column":79}},"locations":[{"start":{"line":29,"column":8},"end":{"line":29,"column":79}}]},"3":{"type":"branch","line":33,"loc":{"start":{"line":33,"column":0},"end":{"line":55,"column":1}},"locations":[{"start":{"line":33,"column":0},"end":{"line":55,"column":1}}]},"4":{"type":"branch","line":38,"loc":{"start":{"line":38,"column":-1},"end":{"line":55,"column":1}},"locations":[{"start":{"line":38,"column":-1},"end":{"line":55,"column":1}}]},"5":{"type":"branch","line":41,"loc":{"start":{"line":41,"column":4},"end":{"line":53,"column":5}},"locations":[{"start":{"line":41,"column":4},"end":{"line":53,"column":5}}]},"6":{"type":"branch","line":43,"loc":{"start":{"line":43,"column":32},"end":{"line":49,"column":7}},"locations":[{"start":{"line":43,"column":32},"end":{"line":49,"column":7}}]},"7":{"type":"branch","line":50,"loc":{"start":{"line":50,"column":-1},"end":{"line":50,"column":57}},"locations":[{"start":{"line":50,"column":-1},"end":{"line":50,"column":57}}]},"8":{"type":"branch","line":50,"loc":{"start":{"line":50,"column":59},"end":{"line":52,"column":7}},"locations":[{"start":{"line":50,"column":59},"end":{"line":52,"column":7}}]}},"b":{"0":[20],"1":[0],"2":[0],"3":[20],"4":[0],"5":[3],"6":[1],"7":[2],"8":[1]},"fnMap":{"0":{"name":"defaultSubqueryName","decl":{"start":{"line":18,"column":0},"end":{"line":31,"column":1}},"loc":{"start":{"line":18,"column":0},"end":{"line":31,"column":1}},"line":18},"1":{"name":"rebaseArgsWithManifest","decl":{"start":{"line":33,"column":0},"end":{"line":55,"column":1}},"loc":{"start":{"line":33,"column":0},"end":{"line":55,"column":1}},"line":33}},"f":{"0":20,"1":20}},"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/utils/decorators.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/utils/decorators.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":44}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":36}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":0}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":33}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":51}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":83}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":65}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":36}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":62}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":57}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":28}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":76}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":9}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":40}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":8}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":5}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":4}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":1}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":38,"8":38,"9":38,"10":38,"11":38,"12":38,"13":37,"14":0,"15":0,"16":37,"17":38,"18":38,"19":38,"20":38},"branchMap":{"0":{"type":"branch","line":8,"loc":{"start":{"line":8,"column":0},"end":{"line":21,"column":1}},"locations":[{"start":{"line":8,"column":0},"end":{"line":21,"column":1}}]},"1":{"type":"branch","line":9,"loc":{"start":{"line":9,"column":9},"end":{"line":20,"column":3}},"locations":[{"start":{"line":9,"column":9},"end":{"line":20,"column":3}}]},"2":{"type":"branch","line":13,"loc":{"start":{"line":13,"column":25},"end":{"line":18,"column":7}},"locations":[{"start":{"line":13,"column":25},"end":{"line":18,"column":7}}]},"3":{"type":"branch","line":14,"loc":{"start":{"line":14,"column":27},"end":{"line":16,"column":9}},"locations":[{"start":{"line":14,"column":27},"end":{"line":16,"column":9}}]}},"b":{"0":[38],"1":[38],"2":[37],"3":[0]},"fnMap":{"0":{"name":"mainThreadOnly","decl":{"start":{"line":8,"column":0},"end":{"line":21,"column":1}},"loc":{"start":{"line":8,"column":0},"end":{"line":21,"column":1}},"line":8},"1":{"name":"descriptor.value","decl":{"start":{"line":13,"column":25},"end":{"line":18,"column":7}},"loc":{"start":{"line":13,"column":25},"end":{"line":18,"column":7}},"line":13}},"f":{"0":38,"1":37}},"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/utils/fetchHelpers.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/utils/fetchHelpers.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":36}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":32}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":0}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":34}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":0}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":22}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":22}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":0}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":37}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":28}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":39}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":23}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":15}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":7}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":27}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":15}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":33}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":22}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":31}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":58}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":12}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":70}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":14}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":5}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":3}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":1}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":0}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":49}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":105}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":91}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":1}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":6,"13":6,"14":6,"15":6,"16":6,"17":6,"18":6,"19":6,"20":6,"21":4,"22":4,"23":6,"24":1,"25":1,"26":1,"27":6,"28":6,"29":1,"30":1,"31":1,"32":2,"33":2},"branchMap":{"0":{"type":"branch","line":12,"loc":{"start":{"line":12,"column":7},"end":{"line":29,"column":1}},"locations":[{"start":{"line":12,"column":7},"end":{"line":29,"column":1}}]},"1":{"type":"branch","line":20,"loc":{"start":{"line":20,"column":25},"end":{"line":20,"column":33}},"locations":[{"start":{"line":20,"column":25},"end":{"line":20,"column":33}}]},"2":{"type":"branch","line":21,"loc":{"start":{"line":21,"column":-1},"end":{"line":21,"column":21}},"locations":[{"start":{"line":21,"column":-1},"end":{"line":21,"column":21}}]},"3":{"type":"branch","line":21,"loc":{"start":{"line":21,"column":21},"end":{"line":24,"column":11}},"locations":[{"start":{"line":21,"column":21},"end":{"line":24,"column":11}}]},"4":{"type":"branch","line":24,"loc":{"start":{"line":24,"column":5},"end":{"line":27,"column":5}},"locations":[{"start":{"line":24,"column":5},"end":{"line":27,"column":5}}]},"5":{"type":"branch","line":32,"loc":{"start":{"line":32,"column":7},"end":{"line":34,"column":1}},"locations":[{"start":{"line":32,"column":7},"end":{"line":34,"column":1}}]},"6":{"type":"branch","line":33,"loc":{"start":{"line":33,"column":30},"end":{"line":33,"column":89}},"locations":[{"start":{"line":33,"column":30},"end":{"line":33,"column":89}}]},"7":{"type":"branch","line":33,"loc":{"start":{"line":33,"column":56},"end":{"line":33,"column":88}},"locations":[{"start":{"line":33,"column":56},"end":{"line":33,"column":88}}]},"8":{"type":"branch","line":33,"loc":{"start":{"line":33,"column":80},"end":{"line":33,"column":88}},"locations":[{"start":{"line":33,"column":80},"end":{"line":33,"column":88}}]}},"b":{"0":[6],"1":[1],"2":[5],"3":[4],"4":[1],"5":[2],"6":[6],"7":[6],"8":[5]},"fnMap":{"0":{"name":"retryOnFail","decl":{"start":{"line":12,"column":7},"end":{"line":29,"column":1}},"loc":{"start":{"line":12,"column":7},"end":{"line":29,"column":1}},"line":12},"1":{"name":"retryOnFailAxios","decl":{"start":{"line":32,"column":7},"end":{"line":34,"column":1}},"loc":{"start":{"line":32,"column":7},"end":{"line":34,"column":1}},"line":32}},"f":{"0":6,"1":2}},"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/utils/graphql.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/utils/graphql.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":8}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":22}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":20}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":8}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":11}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":14}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":11}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":14}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":11}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":9}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":21}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":22}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":80}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":37}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":0}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":27}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":23}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":16}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":16}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":1}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":0}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":44}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":31}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":31}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":16}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":20}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":34}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":55}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":60}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":15}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":33}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":1}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":0}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":32}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":28}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":31}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":16}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":32}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":35}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":0}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":37}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":21}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":52}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":82}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":0}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":59}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":25}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":93}},"51":{"start":{"line":52,"column":0},"end":{"line":52,"column":7}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":7}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":3}},"54":{"start":{"line":55,"column":0},"end":{"line":55,"column":0}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":76}},"56":{"start":{"line":57,"column":0},"end":{"line":57,"column":0}},"57":{"start":{"line":58,"column":0},"end":{"line":58,"column":27}},"58":{"start":{"line":59,"column":0},"end":{"line":59,"column":47}},"59":{"start":{"line":60,"column":0},"end":{"line":60,"column":19}},"60":{"start":{"line":61,"column":0},"end":{"line":61,"column":48}},"61":{"start":{"line":62,"column":0},"end":{"line":62,"column":53}},"62":{"start":{"line":63,"column":0},"end":{"line":63,"column":0}},"63":{"start":{"line":64,"column":0},"end":{"line":64,"column":27}},"64":{"start":{"line":65,"column":0},"end":{"line":65,"column":48}},"65":{"start":{"line":66,"column":0},"end":{"line":66,"column":3}},"66":{"start":{"line":67,"column":0},"end":{"line":67,"column":0}},"67":{"start":{"line":68,"column":0},"end":{"line":68,"column":58}},"68":{"start":{"line":69,"column":0},"end":{"line":69,"column":9}},"69":{"start":{"line":70,"column":0},"end":{"line":70,"column":31}},"70":{"start":{"line":71,"column":0},"end":{"line":71,"column":14}},"71":{"start":{"line":72,"column":0},"end":{"line":72,"column":36}},"72":{"start":{"line":73,"column":0},"end":{"line":73,"column":4}},"73":{"start":{"line":74,"column":0},"end":{"line":74,"column":32}},"74":{"start":{"line":75,"column":0},"end":{"line":75,"column":36}},"75":{"start":{"line":76,"column":0},"end":{"line":76,"column":54}},"76":{"start":{"line":77,"column":0},"end":{"line":77,"column":26}},"77":{"start":{"line":78,"column":0},"end":{"line":78,"column":71}},"78":{"start":{"line":79,"column":0},"end":{"line":79,"column":7}},"79":{"start":{"line":80,"column":0},"end":{"line":80,"column":50}},"80":{"start":{"line":81,"column":0},"end":{"line":81,"column":6}},"81":{"start":{"line":82,"column":0},"end":{"line":82,"column":44}},"82":{"start":{"line":83,"column":0},"end":{"line":83,"column":26}},"83":{"start":{"line":84,"column":0},"end":{"line":84,"column":26}},"84":{"start":{"line":85,"column":0},"end":{"line":85,"column":21}},"85":{"start":{"line":86,"column":0},"end":{"line":86,"column":50}},"86":{"start":{"line":87,"column":0},"end":{"line":87,"column":10}},"87":{"start":{"line":88,"column":0},"end":{"line":88,"column":14}},"88":{"start":{"line":89,"column":0},"end":{"line":89,"column":55}},"89":{"start":{"line":90,"column":0},"end":{"line":90,"column":7}},"90":{"start":{"line":91,"column":0},"end":{"line":91,"column":6}},"91":{"start":{"line":92,"column":0},"end":{"line":92,"column":3}},"92":{"start":{"line":93,"column":0},"end":{"line":93,"column":31}},"93":{"start":{"line":94,"column":0},"end":{"line":94,"column":36}},"94":{"start":{"line":95,"column":0},"end":{"line":95,"column":54}},"95":{"start":{"line":96,"column":0},"end":{"line":96,"column":23}},"96":{"start":{"line":97,"column":0},"end":{"line":97,"column":20}},"97":{"start":{"line":98,"column":0},"end":{"line":98,"column":7}},"98":{"start":{"line":99,"column":0},"end":{"line":99,"column":33}},"99":{"start":{"line":100,"column":0},"end":{"line":100,"column":79}},"100":{"start":{"line":101,"column":0},"end":{"line":101,"column":7}},"101":{"start":{"line":102,"column":0},"end":{"line":102,"column":46}},"102":{"start":{"line":103,"column":0},"end":{"line":103,"column":6}},"103":{"start":{"line":104,"column":0},"end":{"line":104,"column":48}},"104":{"start":{"line":105,"column":0},"end":{"line":105,"column":45}},"105":{"start":{"line":106,"column":0},"end":{"line":106,"column":44}},"106":{"start":{"line":107,"column":0},"end":{"line":107,"column":30}},"107":{"start":{"line":108,"column":0},"end":{"line":108,"column":52}},"108":{"start":{"line":109,"column":0},"end":{"line":109,"column":48}},"109":{"start":{"line":110,"column":0},"end":{"line":110,"column":14}},"110":{"start":{"line":111,"column":0},"end":{"line":111,"column":79}},"111":{"start":{"line":112,"column":0},"end":{"line":112,"column":7}},"112":{"start":{"line":113,"column":0},"end":{"line":113,"column":6}},"113":{"start":{"line":114,"column":0},"end":{"line":114,"column":3}},"114":{"start":{"line":115,"column":0},"end":{"line":115,"column":22}},"115":{"start":{"line":116,"column":0},"end":{"line":116,"column":1}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":130,"25":130,"26":130,"27":130,"28":130,"29":130,"30":130,"31":973,"32":973,"33":130,"34":130,"35":1,"36":990,"37":990,"38":990,"39":990,"40":990,"41":990,"42":990,"43":990,"44":990,"45":8,"46":8,"47":8,"48":8,"49":16,"50":8,"51":8,"52":8,"53":8,"54":990,"55":990,"56":990,"57":990,"58":990,"59":990,"60":982,"61":990,"62":990,"63":990,"64":0,"65":0,"66":990,"67":990,"68":990,"69":990,"70":990,"71":990,"72":990,"73":990,"74":186,"75":0,"76":0,"77":0,"78":0,"79":0,"80":186,"81":186,"82":0,"83":0,"84":0,"85":0,"86":0,"87":0,"88":0,"89":0,"90":186,"91":186,"92":990,"93":0,"94":0,"95":0,"96":0,"97":0,"98":0,"99":0,"100":0,"101":0,"102":0,"103":0,"104":0,"105":0,"106":0,"107":0,"108":0,"109":0,"110":0,"111":0,"112":0,"113":0,"114":990,"115":990},"branchMap":{"0":{"type":"branch","line":25,"loc":{"start":{"line":25,"column":0},"end":{"line":35,"column":1}},"locations":[{"start":{"line":25,"column":0},"end":{"line":35,"column":1}}]},"1":{"type":"branch","line":31,"loc":{"start":{"line":31,"column":38},"end":{"line":34,"column":3}},"locations":[{"start":{"line":31,"column":38},"end":{"line":34,"column":3}}]},"2":{"type":"branch","line":37,"loc":{"start":{"line":37,"column":0},"end":{"line":116,"column":1}},"locations":[{"start":{"line":37,"column":0},"end":{"line":116,"column":1}}]},"3":{"type":"branch","line":45,"loc":{"start":{"line":45,"column":20},"end":{"line":54,"column":3}},"locations":[{"start":{"line":45,"column":20},"end":{"line":54,"column":3}}]},"4":{"type":"branch","line":56,"loc":{"start":{"line":56,"column":18},"end":{"line":56,"column":31}},"locations":[{"start":{"line":56,"column":18},"end":{"line":56,"column":31}}]},"5":{"type":"branch","line":56,"loc":{"start":{"line":56,"column":33},"end":{"line":56,"column":76}},"locations":[{"start":{"line":56,"column":33},"end":{"line":56,"column":76}}]},"6":{"type":"branch","line":59,"loc":{"start":{"line":59,"column":4},"end":{"line":59,"column":47}},"locations":[{"start":{"line":59,"column":4},"end":{"line":59,"column":47}}]},"7":{"type":"branch","line":59,"loc":{"start":{"line":59,"column":34},"end":{"line":59,"column":40}},"locations":[{"start":{"line":59,"column":34},"end":{"line":59,"column":40}}]},"8":{"type":"branch","line":60,"loc":{"start":{"line":60,"column":4},"end":{"line":62,"column":52}},"locations":[{"start":{"line":60,"column":4},"end":{"line":62,"column":52}}]},"9":{"type":"branch","line":61,"loc":{"start":{"line":61,"column":4},"end":{"line":61,"column":48}},"locations":[{"start":{"line":61,"column":4},"end":{"line":61,"column":48}}]},"10":{"type":"branch","line":62,"loc":{"start":{"line":62,"column":4},"end":{"line":62,"column":52}},"locations":[{"start":{"line":62,"column":4},"end":{"line":62,"column":52}}]},"11":{"type":"branch","line":64,"loc":{"start":{"line":64,"column":26},"end":{"line":66,"column":3}},"locations":[{"start":{"line":64,"column":26},"end":{"line":66,"column":3}}]},"12":{"type":"branch","line":74,"loc":{"start":{"line":74,"column":31},"end":{"line":92,"column":3}},"locations":[{"start":{"line":74,"column":31},"end":{"line":92,"column":3}}]},"13":{"type":"branch","line":93,"loc":{"start":{"line":93,"column":30},"end":{"line":114,"column":3}},"locations":[{"start":{"line":93,"column":30},"end":{"line":114,"column":3}}]},"14":{"type":"branch","line":49,"loc":{"start":{"line":49,"column":51},"end":{"line":53,"column":5}},"locations":[{"start":{"line":49,"column":51},"end":{"line":53,"column":5}}]},"15":{"type":"branch","line":50,"loc":{"start":{"line":50,"column":24},"end":{"line":52,"column":7}},"locations":[{"start":{"line":50,"column":24},"end":{"line":52,"column":7}}]},"16":{"type":"branch","line":51,"loc":{"start":{"line":51,"column":48},"end":{"line":51,"column":58}},"locations":[{"start":{"line":51,"column":48},"end":{"line":51,"column":58}}]}},"b":{"0":[130],"1":[973],"2":[990],"3":[8],"4":[8],"5":[0],"6":[8],"7":[0],"8":[982],"9":[3],"10":[979],"11":[0],"12":[186],"13":[0],"14":[16],"15":[8],"16":[0]},"fnMap":{"0":{"name":"modelsTypeToModelAttributes","decl":{"start":{"line":25,"column":0},"end":{"line":35,"column":1}},"loc":{"start":{"line":25,"column":0},"end":{"line":35,"column":1}},"line":25},"1":{"name":"getColumnOption","decl":{"start":{"line":37,"column":0},"end":{"line":116,"column":1}},"loc":{"start":{"line":37,"column":0},"end":{"line":116,"column":1}},"line":37},"2":{"name":"columnOption.get","decl":{"start":{"line":75,"column":23},"end":{"line":81,"column":5}},"loc":{"start":{"line":75,"column":23},"end":{"line":81,"column":5}},"line":75},"3":{"name":"columnOption.set","decl":{"start":{"line":82,"column":23},"end":{"line":91,"column":5}},"loc":{"start":{"line":82,"column":23},"end":{"line":91,"column":5}},"line":82},"4":{"name":"columnOption.get","decl":{"start":{"line":94,"column":23},"end":{"line":103,"column":5}},"loc":{"start":{"line":94,"column":23},"end":{"line":103,"column":5}},"line":94},"5":{"name":"columnOption.set","decl":{"start":{"line":104,"column":23},"end":{"line":113,"column":5}},"loc":{"start":{"line":104,"column":23},"end":{"line":113,"column":5}},"line":104}},"f":{"0":130,"1":990,"2":0,"3":0,"4":0,"5":0}},"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/utils/index.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/utils/index.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":25}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":26}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":26}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":29}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":28}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":26}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":31}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":34}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":28}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":26}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":29}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":25}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":33}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1},"branchMap":{},"b":{},"fnMap":{},"f":{}},"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/utils/object.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/utils/object.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":58}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":0}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":52}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":18}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":16}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":17}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":48}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":110}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":1}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":0}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":73}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":36}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":23}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":16}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":36}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":7}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":6}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":4}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":1}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":0}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":81}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":32}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":16}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":44}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":60}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":39}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":16}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":3}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":16}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":1}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":0}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":66}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":43}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":1}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":17,"6":17,"7":17,"8":17,"9":17,"10":17,"11":17,"12":1,"13":413,"14":413,"15":413,"16":1652,"17":1652,"18":413,"19":413,"20":413,"21":413,"22":1,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":1,"34":115,"35":115,"36":115},"branchMap":{"0":{"type":"branch","line":6,"loc":{"start":{"line":6,"column":0},"end":{"line":12,"column":1}},"locations":[{"start":{"line":6,"column":0},"end":{"line":12,"column":1}}]},"1":{"type":"branch","line":11,"loc":{"start":{"line":11,"column":39},"end":{"line":11,"column":108}},"locations":[{"start":{"line":11,"column":39},"end":{"line":11,"column":108}}]},"2":{"type":"branch","line":11,"loc":{"start":{"line":11,"column":86},"end":{"line":11,"column":96}},"locations":[{"start":{"line":11,"column":86},"end":{"line":11,"column":96}}]},"3":{"type":"branch","line":11,"loc":{"start":{"line":11,"column":97},"end":{"line":11,"column":107}},"locations":[{"start":{"line":11,"column":97},"end":{"line":11,"column":107}}]},"4":{"type":"branch","line":14,"loc":{"start":{"line":14,"column":0},"end":{"line":22,"column":1}},"locations":[{"start":{"line":14,"column":0},"end":{"line":22,"column":1}}]},"5":{"type":"branch","line":16,"loc":{"start":{"line":16,"column":4},"end":{"line":19,"column":6}},"locations":[{"start":{"line":16,"column":4},"end":{"line":19,"column":6}}]},"6":{"type":"branch","line":35,"loc":{"start":{"line":35,"column":0},"end":{"line":37,"column":1}},"locations":[{"start":{"line":35,"column":0},"end":{"line":37,"column":1}}]},"7":{"type":"branch","line":36,"loc":{"start":{"line":36,"column":26},"end":{"line":36,"column":42}},"locations":[{"start":{"line":36,"column":26},"end":{"line":36,"column":42}}]}},"b":{"0":[17],"1":[422],"2":[17],"3":[405],"4":[413],"5":[1652],"6":[115],"7":[32]},"fnMap":{"0":{"name":"assign","decl":{"start":{"line":6,"column":0},"end":{"line":12,"column":1}},"loc":{"start":{"line":6,"column":0},"end":{"line":12,"column":1}},"line":6},"1":{"name":"camelCaseObjectKey","decl":{"start":{"line":14,"column":0},"end":{"line":22,"column":1}},"loc":{"start":{"line":14,"column":0},"end":{"line":22,"column":1}},"line":14},"2":{"name":"splitArrayByRatio","decl":{"start":{"line":24,"column":0},"end":{"line":33,"column":1}},"loc":{"start":{"line":24,"column":0},"end":{"line":33,"column":1}},"line":24},"3":{"name":"hasValue","decl":{"start":{"line":35,"column":0},"end":{"line":37,"column":1}},"loc":{"start":{"line":35,"column":0},"end":{"line":37,"column":1}},"line":35}},"f":{"0":17,"1":413,"2":0,"3":115}},"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/utils/project.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/utils/project.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":20}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":20}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":24}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":101}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":115}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":53}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":57}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":34}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":70}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":22}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":51}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":58}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":36}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":0}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":42}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":0}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":71}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":32}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":26}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":31}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":4}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":0}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":77}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":14}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":17}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":71}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":17}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":71}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":6}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":20}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":3}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":14}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":1}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":0}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":79}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":41}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":23}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":25}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":31}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":55}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":56}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":52}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":39}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":35}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":23}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":3}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":64}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":1}},"51":{"start":{"line":52,"column":0},"end":{"line":52,"column":0}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":47}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":25}},"54":{"start":{"line":55,"column":0},"end":{"line":55,"column":22}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":32}},"56":{"start":{"line":57,"column":0},"end":{"line":57,"column":37}},"57":{"start":{"line":58,"column":0},"end":{"line":58,"column":0}},"58":{"start":{"line":59,"column":0},"end":{"line":59,"column":24}},"59":{"start":{"line":60,"column":0},"end":{"line":60,"column":7}},"60":{"start":{"line":61,"column":0},"end":{"line":61,"column":97}},"61":{"start":{"line":62,"column":0},"end":{"line":62,"column":30}},"62":{"start":{"line":63,"column":0},"end":{"line":63,"column":7}},"63":{"start":{"line":64,"column":0},"end":{"line":64,"column":52}},"64":{"start":{"line":65,"column":0},"end":{"line":65,"column":17}},"65":{"start":{"line":66,"column":0},"end":{"line":66,"column":56}},"66":{"start":{"line":67,"column":0},"end":{"line":67,"column":20}},"67":{"start":{"line":68,"column":0},"end":{"line":68,"column":3}},"68":{"start":{"line":69,"column":0},"end":{"line":69,"column":34}},"69":{"start":{"line":70,"column":0},"end":{"line":70,"column":21}},"70":{"start":{"line":71,"column":0},"end":{"line":71,"column":3}},"71":{"start":{"line":72,"column":0},"end":{"line":72,"column":16}},"72":{"start":{"line":73,"column":0},"end":{"line":73,"column":1}},"73":{"start":{"line":74,"column":0},"end":{"line":74,"column":0}},"74":{"start":{"line":75,"column":0},"end":{"line":75,"column":115}},"75":{"start":{"line":76,"column":0},"end":{"line":76,"column":52}},"76":{"start":{"line":77,"column":0},"end":{"line":77,"column":37}},"77":{"start":{"line":78,"column":0},"end":{"line":78,"column":23}},"78":{"start":{"line":79,"column":0},"end":{"line":79,"column":46}},"79":{"start":{"line":80,"column":0},"end":{"line":80,"column":28}},"80":{"start":{"line":81,"column":0},"end":{"line":81,"column":34}},"81":{"start":{"line":82,"column":0},"end":{"line":82,"column":44}},"82":{"start":{"line":83,"column":0},"end":{"line":83,"column":4}},"83":{"start":{"line":84,"column":0},"end":{"line":84,"column":27}},"84":{"start":{"line":85,"column":0},"end":{"line":85,"column":1}},"85":{"start":{"line":86,"column":0},"end":{"line":86,"column":0}},"86":{"start":{"line":87,"column":0},"end":{"line":87,"column":53}},"87":{"start":{"line":88,"column":0},"end":{"line":88,"column":69}},"88":{"start":{"line":89,"column":0},"end":{"line":89,"column":3}},"89":{"start":{"line":90,"column":0},"end":{"line":90,"column":58}},"90":{"start":{"line":91,"column":0},"end":{"line":91,"column":5}},"91":{"start":{"line":92,"column":0},"end":{"line":92,"column":59}},"92":{"start":{"line":93,"column":0},"end":{"line":93,"column":0}},"93":{"start":{"line":94,"column":0},"end":{"line":94,"column":93}},"94":{"start":{"line":95,"column":0},"end":{"line":95,"column":20}},"95":{"start":{"line":96,"column":0},"end":{"line":96,"column":34}},"96":{"start":{"line":97,"column":0},"end":{"line":97,"column":26}},"97":{"start":{"line":98,"column":0},"end":{"line":98,"column":13}},"98":{"start":{"line":99,"column":0},"end":{"line":99,"column":31}},"99":{"start":{"line":100,"column":0},"end":{"line":100,"column":33}},"100":{"start":{"line":101,"column":0},"end":{"line":101,"column":25}},"101":{"start":{"line":102,"column":0},"end":{"line":102,"column":15}},"102":{"start":{"line":103,"column":0},"end":{"line":103,"column":5}},"103":{"start":{"line":104,"column":0},"end":{"line":104,"column":48}},"104":{"start":{"line":105,"column":0},"end":{"line":105,"column":89}},"105":{"start":{"line":106,"column":0},"end":{"line":106,"column":44}},"106":{"start":{"line":107,"column":0},"end":{"line":107,"column":7}},"107":{"start":{"line":108,"column":0},"end":{"line":108,"column":5}},"108":{"start":{"line":109,"column":0},"end":{"line":109,"column":3}},"109":{"start":{"line":110,"column":0},"end":{"line":110,"column":17}},"110":{"start":{"line":111,"column":0},"end":{"line":111,"column":1}},"111":{"start":{"line":112,"column":0},"end":{"line":112,"column":0}},"112":{"start":{"line":113,"column":0},"end":{"line":113,"column":69}},"113":{"start":{"line":114,"column":0},"end":{"line":114,"column":30}},"114":{"start":{"line":115,"column":0},"end":{"line":115,"column":1}},"115":{"start":{"line":116,"column":0},"end":{"line":116,"column":0}},"116":{"start":{"line":117,"column":0},"end":{"line":117,"column":112}},"117":{"start":{"line":118,"column":0},"end":{"line":118,"column":29}},"118":{"start":{"line":119,"column":0},"end":{"line":119,"column":17}},"119":{"start":{"line":120,"column":0},"end":{"line":120,"column":15}},"120":{"start":{"line":121,"column":0},"end":{"line":121,"column":33}},"121":{"start":{"line":122,"column":0},"end":{"line":122,"column":26}},"122":{"start":{"line":123,"column":0},"end":{"line":123,"column":32}},"123":{"start":{"line":124,"column":0},"end":{"line":124,"column":21}},"124":{"start":{"line":125,"column":0},"end":{"line":125,"column":44}},"125":{"start":{"line":126,"column":0},"end":{"line":126,"column":57}},"126":{"start":{"line":127,"column":0},"end":{"line":127,"column":86}},"127":{"start":{"line":128,"column":0},"end":{"line":128,"column":35}},"128":{"start":{"line":129,"column":0},"end":{"line":129,"column":62}},"129":{"start":{"line":130,"column":0},"end":{"line":130,"column":53}},"130":{"start":{"line":131,"column":0},"end":{"line":131,"column":46}},"131":{"start":{"line":132,"column":0},"end":{"line":132,"column":56}},"132":{"start":{"line":133,"column":0},"end":{"line":133,"column":18}},"133":{"start":{"line":134,"column":0},"end":{"line":134,"column":78}},"134":{"start":{"line":135,"column":0},"end":{"line":135,"column":11}},"135":{"start":{"line":136,"column":0},"end":{"line":136,"column":9}},"136":{"start":{"line":137,"column":0},"end":{"line":137,"column":7}},"137":{"start":{"line":138,"column":0},"end":{"line":138,"column":100}},"138":{"start":{"line":139,"column":0},"end":{"line":139,"column":35}},"139":{"start":{"line":140,"column":0},"end":{"line":140,"column":35}},"140":{"start":{"line":141,"column":0},"end":{"line":141,"column":101}},"141":{"start":{"line":142,"column":0},"end":{"line":142,"column":9}},"142":{"start":{"line":143,"column":0},"end":{"line":143,"column":16}},"143":{"start":{"line":144,"column":0},"end":{"line":144,"column":24}},"144":{"start":{"line":145,"column":0},"end":{"line":145,"column":49}},"145":{"start":{"line":146,"column":0},"end":{"line":146,"column":10}},"146":{"start":{"line":147,"column":0},"end":{"line":147,"column":14}},"147":{"start":{"line":148,"column":0},"end":{"line":148,"column":16}},"148":{"start":{"line":149,"column":0},"end":{"line":149,"column":24}},"149":{"start":{"line":150,"column":0},"end":{"line":150,"column":49}},"150":{"start":{"line":151,"column":0},"end":{"line":151,"column":10}},"151":{"start":{"line":152,"column":0},"end":{"line":152,"column":7}},"152":{"start":{"line":153,"column":0},"end":{"line":153,"column":6}},"153":{"start":{"line":154,"column":0},"end":{"line":154,"column":4}},"154":{"start":{"line":155,"column":0},"end":{"line":155,"column":1}},"155":{"start":{"line":156,"column":0},"end":{"line":156,"column":0}},"156":{"start":{"line":157,"column":0},"end":{"line":157,"column":45}},"157":{"start":{"line":158,"column":0},"end":{"line":158,"column":17}},"158":{"start":{"line":159,"column":0},"end":{"line":159,"column":15}},"159":{"start":{"line":160,"column":0},"end":{"line":160,"column":15}},"160":{"start":{"line":161,"column":0},"end":{"line":161,"column":16}},"161":{"start":{"line":162,"column":0},"end":{"line":162,"column":20}},"162":{"start":{"line":163,"column":0},"end":{"line":163,"column":49}},"163":{"start":{"line":164,"column":0},"end":{"line":164,"column":76}},"164":{"start":{"line":165,"column":0},"end":{"line":165,"column":48}},"165":{"start":{"line":166,"column":0},"end":{"line":166,"column":3}},"166":{"start":{"line":167,"column":0},"end":{"line":167,"column":42}},"167":{"start":{"line":168,"column":0},"end":{"line":168,"column":1}},"168":{"start":{"line":169,"column":0},"end":{"line":169,"column":0}},"169":{"start":{"line":170,"column":0},"end":{"line":170,"column":100}},"170":{"start":{"line":171,"column":0},"end":{"line":171,"column":38}},"171":{"start":{"line":172,"column":0},"end":{"line":172,"column":36}},"172":{"start":{"line":173,"column":0},"end":{"line":173,"column":10}},"173":{"start":{"line":174,"column":0},"end":{"line":174,"column":48}},"174":{"start":{"line":175,"column":0},"end":{"line":175,"column":3}},"175":{"start":{"line":176,"column":0},"end":{"line":176,"column":1}},"176":{"start":{"line":177,"column":0},"end":{"line":177,"column":0}},"177":{"start":{"line":178,"column":0},"end":{"line":178,"column":113}},"178":{"start":{"line":179,"column":0},"end":{"line":179,"column":74}},"179":{"start":{"line":180,"column":0},"end":{"line":180,"column":74}},"180":{"start":{"line":181,"column":0},"end":{"line":181,"column":3}},"181":{"start":{"line":182,"column":0},"end":{"line":182,"column":41}},"182":{"start":{"line":183,"column":0},"end":{"line":183,"column":13}},"183":{"start":{"line":184,"column":0},"end":{"line":184,"column":51}},"184":{"start":{"line":185,"column":0},"end":{"line":185,"column":3}},"185":{"start":{"line":186,"column":0},"end":{"line":186,"column":48}},"186":{"start":{"line":187,"column":0},"end":{"line":187,"column":1}},"187":{"start":{"line":188,"column":0},"end":{"line":188,"column":0}},"188":{"start":{"line":189,"column":0},"end":{"line":189,"column":119}},"189":{"start":{"line":190,"column":0},"end":{"line":190,"column":74}},"190":{"start":{"line":191,"column":0},"end":{"line":191,"column":74}},"191":{"start":{"line":192,"column":0},"end":{"line":192,"column":3}},"192":{"start":{"line":193,"column":0},"end":{"line":193,"column":67}},"193":{"start":{"line":194,"column":0},"end":{"line":194,"column":59}},"194":{"start":{"line":195,"column":0},"end":{"line":195,"column":34}},"195":{"start":{"line":196,"column":0},"end":{"line":196,"column":22}},"196":{"start":{"line":197,"column":0},"end":{"line":197,"column":3}},"197":{"start":{"line":198,"column":0},"end":{"line":198,"column":48}},"198":{"start":{"line":199,"column":0},"end":{"line":199,"column":20}},"199":{"start":{"line":200,"column":0},"end":{"line":200,"column":1}},"200":{"start":{"line":201,"column":0},"end":{"line":201,"column":0}},"201":{"start":{"line":202,"column":0},"end":{"line":202,"column":92}},"202":{"start":{"line":203,"column":0},"end":{"line":203,"column":19}},"203":{"start":{"line":204,"column":0},"end":{"line":204,"column":31}},"204":{"start":{"line":205,"column":0},"end":{"line":205,"column":15}},"205":{"start":{"line":206,"column":0},"end":{"line":206,"column":38}},"206":{"start":{"line":207,"column":0},"end":{"line":207,"column":80}},"207":{"start":{"line":208,"column":0},"end":{"line":208,"column":19}},"208":{"start":{"line":209,"column":0},"end":{"line":209,"column":69}},"209":{"start":{"line":210,"column":0},"end":{"line":210,"column":12}},"210":{"start":{"line":211,"column":0},"end":{"line":211,"column":23}},"211":{"start":{"line":212,"column":0},"end":{"line":212,"column":5}},"212":{"start":{"line":213,"column":0},"end":{"line":213,"column":3}},"213":{"start":{"line":214,"column":0},"end":{"line":214,"column":17}},"214":{"start":{"line":215,"column":0},"end":{"line":215,"column":50}},"215":{"start":{"line":216,"column":0},"end":{"line":216,"column":34}},"216":{"start":{"line":217,"column":0},"end":{"line":217,"column":68}},"217":{"start":{"line":218,"column":0},"end":{"line":218,"column":3}},"218":{"start":{"line":219,"column":0},"end":{"line":219,"column":21}},"219":{"start":{"line":220,"column":0},"end":{"line":220,"column":1}},"220":{"start":{"line":221,"column":0},"end":{"line":221,"column":0}},"221":{"start":{"line":222,"column":0},"end":{"line":222,"column":35}},"222":{"start":{"line":223,"column":0},"end":{"line":223,"column":28}},"223":{"start":{"line":224,"column":0},"end":{"line":224,"column":17}},"224":{"start":{"line":225,"column":0},"end":{"line":225,"column":28}},"225":{"start":{"line":226,"column":0},"end":{"line":226,"column":18}},"226":{"start":{"line":227,"column":0},"end":{"line":227,"column":65}},"227":{"start":{"line":228,"column":0},"end":{"line":228,"column":50}},"228":{"start":{"line":229,"column":0},"end":{"line":229,"column":1}},"229":{"start":{"line":230,"column":0},"end":{"line":230,"column":0}},"230":{"start":{"line":231,"column":0},"end":{"line":231,"column":102}},"231":{"start":{"line":232,"column":0},"end":{"line":232,"column":56}},"232":{"start":{"line":233,"column":0},"end":{"line":233,"column":1}},"233":{"start":{"line":234,"column":0},"end":{"line":234,"column":0}},"234":{"start":{"line":235,"column":0},"end":{"line":235,"column":51}},"235":{"start":{"line":236,"column":0},"end":{"line":236,"column":0}},"236":{"start":{"line":237,"column":0},"end":{"line":237,"column":60}},"237":{"start":{"line":238,"column":0},"end":{"line":238,"column":98}},"238":{"start":{"line":239,"column":0},"end":{"line":239,"column":20}},"239":{"start":{"line":240,"column":0},"end":{"line":240,"column":55}},"240":{"start":{"line":241,"column":0},"end":{"line":241,"column":27}},"241":{"start":{"line":242,"column":0},"end":{"line":242,"column":26}},"242":{"start":{"line":243,"column":0},"end":{"line":243,"column":18}},"243":{"start":{"line":244,"column":0},"end":{"line":244,"column":26}},"244":{"start":{"line":245,"column":0},"end":{"line":245,"column":0}},"245":{"start":{"line":246,"column":0},"end":{"line":246,"column":34}},"246":{"start":{"line":247,"column":0},"end":{"line":247,"column":35}},"247":{"start":{"line":248,"column":0},"end":{"line":248,"column":28}},"248":{"start":{"line":249,"column":0},"end":{"line":249,"column":46}},"249":{"start":{"line":250,"column":0},"end":{"line":250,"column":37}},"250":{"start":{"line":251,"column":0},"end":{"line":251,"column":0}},"251":{"start":{"line":252,"column":0},"end":{"line":252,"column":48}},"252":{"start":{"line":253,"column":0},"end":{"line":253,"column":54}},"253":{"start":{"line":254,"column":0},"end":{"line":254,"column":52}},"254":{"start":{"line":255,"column":0},"end":{"line":255,"column":46}},"255":{"start":{"line":256,"column":0},"end":{"line":256,"column":42}},"256":{"start":{"line":257,"column":0},"end":{"line":257,"column":75}},"257":{"start":{"line":258,"column":0},"end":{"line":258,"column":17}},"258":{"start":{"line":259,"column":0},"end":{"line":259,"column":21}},"259":{"start":{"line":260,"column":0},"end":{"line":260,"column":60}},"260":{"start":{"line":261,"column":0},"end":{"line":261,"column":29}},"261":{"start":{"line":262,"column":0},"end":{"line":262,"column":86}},"262":{"start":{"line":263,"column":0},"end":{"line":263,"column":17}},"263":{"start":{"line":264,"column":0},"end":{"line":264,"column":0}},"264":{"start":{"line":265,"column":0},"end":{"line":265,"column":67}},"265":{"start":{"line":266,"column":0},"end":{"line":266,"column":47}},"266":{"start":{"line":267,"column":0},"end":{"line":267,"column":37}},"267":{"start":{"line":268,"column":0},"end":{"line":268,"column":30}},"268":{"start":{"line":269,"column":0},"end":{"line":269,"column":69}},"269":{"start":{"line":270,"column":0},"end":{"line":270,"column":20}},"270":{"start":{"line":271,"column":0},"end":{"line":271,"column":18}},"271":{"start":{"line":272,"column":0},"end":{"line":272,"column":15}},"272":{"start":{"line":273,"column":0},"end":{"line":273,"column":13}},"273":{"start":{"line":274,"column":0},"end":{"line":274,"column":27}},"274":{"start":{"line":275,"column":0},"end":{"line":275,"column":12}},"275":{"start":{"line":276,"column":0},"end":{"line":276,"column":10}},"276":{"start":{"line":277,"column":0},"end":{"line":277,"column":7}},"277":{"start":{"line":278,"column":0},"end":{"line":278,"column":16}},"278":{"start":{"line":279,"column":0},"end":{"line":279,"column":6}},"279":{"start":{"line":280,"column":0},"end":{"line":280,"column":4}},"280":{"start":{"line":281,"column":0},"end":{"line":281,"column":0}},"281":{"start":{"line":282,"column":0},"end":{"line":282,"column":21}},"282":{"start":{"line":283,"column":0},"end":{"line":283,"column":1}},"283":{"start":{"line":284,"column":0},"end":{"line":284,"column":0}},"284":{"start":{"line":285,"column":0},"end":{"line":285,"column":84}},"285":{"start":{"line":286,"column":0},"end":{"line":286,"column":29}},"286":{"start":{"line":287,"column":0},"end":{"line":287,"column":15}},"287":{"start":{"line":288,"column":0},"end":{"line":288,"column":17}},"288":{"start":{"line":289,"column":0},"end":{"line":289,"column":62}},"289":{"start":{"line":290,"column":0},"end":{"line":290,"column":17}},"290":{"start":{"line":291,"column":0},"end":{"line":291,"column":40}},"291":{"start":{"line":292,"column":0},"end":{"line":292,"column":14}},"292":{"start":{"line":293,"column":0},"end":{"line":293,"column":3}},"293":{"start":{"line":294,"column":0},"end":{"line":294,"column":89}},"294":{"start":{"line":295,"column":0},"end":{"line":295,"column":42}},"295":{"start":{"line":296,"column":0},"end":{"line":296,"column":10}},"296":{"start":{"line":297,"column":0},"end":{"line":297,"column":32}},"297":{"start":{"line":298,"column":0},"end":{"line":298,"column":45}},"298":{"start":{"line":299,"column":0},"end":{"line":299,"column":1}},"299":{"start":{"line":300,"column":0},"end":{"line":300,"column":0}},"300":{"start":{"line":301,"column":0},"end":{"line":301,"column":71}},"301":{"start":{"line":302,"column":0},"end":{"line":302,"column":74}},"302":{"start":{"line":303,"column":0},"end":{"line":303,"column":37}},"303":{"start":{"line":304,"column":0},"end":{"line":304,"column":113}},"304":{"start":{"line":305,"column":0},"end":{"line":305,"column":10}},"305":{"start":{"line":306,"column":0},"end":{"line":306,"column":40}},"306":{"start":{"line":307,"column":0},"end":{"line":307,"column":3}},"307":{"start":{"line":308,"column":0},"end":{"line":308,"column":1}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":1,"37":1,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":1,"52":1,"53":20,"54":20,"55":20,"56":20,"57":20,"58":20,"59":20,"60":20,"61":20,"62":20,"63":20,"64":20,"65":0,"66":0,"67":0,"68":20,"69":19,"70":19,"71":1,"72":1,"73":1,"74":1,"75":0,"76":0,"77":0,"78":0,"79":0,"80":0,"81":0,"82":0,"83":0,"84":0,"85":1,"86":1,"87":1,"88":1,"89":1,"90":1,"91":1,"92":1,"93":1,"94":1,"95":1,"96":1,"97":1,"98":1,"99":1,"100":3,"101":0,"102":0,"103":3,"104":4,"105":2,"106":2,"107":4,"108":3,"109":1,"110":1,"111":1,"112":47,"113":47,"114":47,"115":1,"116":1,"117":44,"118":44,"119":44,"120":44,"121":44,"122":44,"123":44,"124":44,"125":47,"126":47,"127":47,"128":8,"129":8,"130":8,"131":5,"132":8,"133":3,"134":3,"135":8,"136":8,"137":47,"138":47,"139":8,"140":8,"141":8,"142":8,"143":8,"144":8,"145":8,"146":47,"147":39,"148":39,"149":39,"150":39,"151":39,"152":44,"153":44,"154":44,"155":1,"156":1,"157":47,"158":47,"159":47,"160":47,"161":47,"162":47,"163":39,"164":39,"165":39,"166":0,"167":0,"168":1,"169":1,"170":8,"171":5,"172":8,"173":3,"174":3,"175":8,"176":1,"177":1,"178":6,"179":0,"180":0,"181":6,"182":6,"183":0,"184":0,"185":6,"186":6,"187":1,"188":1,"189":47,"190":0,"191":0,"192":47,"193":47,"194":47,"195":18,"196":18,"197":29,"198":29,"199":29,"200":1,"201":1,"202":47,"203":47,"204":47,"205":0,"206":0,"207":0,"208":0,"209":0,"210":0,"211":0,"212":0,"213":47,"214":47,"215":47,"216":0,"217":0,"218":47,"219":47,"220":1,"221":1,"222":20,"223":20,"224":20,"225":20,"226":20,"227":20,"228":20,"229":1,"230":1,"231":20,"232":20,"233":1,"234":1,"235":1,"236":1,"237":1,"238":35,"239":35,"240":35,"241":35,"242":35,"243":35,"244":35,"245":35,"246":35,"247":35,"248":35,"249":35,"250":35,"251":35,"252":35,"253":35,"254":0,"255":0,"256":0,"257":0,"258":0,"259":0,"260":0,"261":0,"262":0,"263":0,"264":0,"265":0,"266":0,"267":0,"268":0,"269":0,"270":0,"271":0,"272":0,"273":35,"274":35,"275":35,"276":35,"277":35,"278":35,"279":35,"280":35,"281":35,"282":35,"283":1,"284":1,"285":41,"286":41,"287":41,"288":41,"289":41,"290":41,"291":39,"292":39,"293":2,"294":2,"295":2,"296":2,"297":2,"298":2,"299":1,"300":121,"301":121,"302":121,"303":0,"304":121,"305":121,"306":121,"307":121},"branchMap":{"0":{"type":"branch","line":53,"loc":{"start":{"line":53,"column":7},"end":{"line":73,"column":1}},"locations":[{"start":{"line":53,"column":7},"end":{"line":73,"column":1}}]},"1":{"type":"branch","line":65,"loc":{"start":{"line":65,"column":4},"end":{"line":68,"column":3}},"locations":[{"start":{"line":65,"column":4},"end":{"line":68,"column":3}}]},"2":{"type":"branch","line":69,"loc":{"start":{"line":69,"column":33},"end":{"line":71,"column":3}},"locations":[{"start":{"line":69,"column":33},"end":{"line":71,"column":3}}]},"3":{"type":"branch","line":72,"loc":{"start":{"line":72,"column":-1},"end":{"line":73,"column":1}},"locations":[{"start":{"line":72,"column":-1},"end":{"line":73,"column":1}}]},"4":{"type":"branch","line":64,"loc":{"start":{"line":64,"column":25},"end":{"line":64,"column":50}},"locations":[{"start":{"line":64,"column":25},"end":{"line":64,"column":50}}]},"5":{"type":"branch","line":94,"loc":{"start":{"line":94,"column":0},"end":{"line":111,"column":1}},"locations":[{"start":{"line":94,"column":0},"end":{"line":111,"column":1}}]},"6":{"type":"branch","line":100,"loc":{"start":{"line":100,"column":32},"end":{"line":109,"column":3}},"locations":[{"start":{"line":100,"column":32},"end":{"line":109,"column":3}}]},"7":{"type":"branch","line":101,"loc":{"start":{"line":101,"column":24},"end":{"line":103,"column":5}},"locations":[{"start":{"line":101,"column":24},"end":{"line":103,"column":5}}]},"8":{"type":"branch","line":104,"loc":{"start":{"line":104,"column":47},"end":{"line":108,"column":5}},"locations":[{"start":{"line":104,"column":47},"end":{"line":108,"column":5}}]},"9":{"type":"branch","line":105,"loc":{"start":{"line":105,"column":43},"end":{"line":105,"column":61}},"locations":[{"start":{"line":105,"column":43},"end":{"line":105,"column":61}}]},"10":{"type":"branch","line":105,"loc":{"start":{"line":105,"column":61},"end":{"line":105,"column":86}},"locations":[{"start":{"line":105,"column":61},"end":{"line":105,"column":86}}]},"11":{"type":"branch","line":105,"loc":{"start":{"line":105,"column":88},"end":{"line":107,"column":7}},"locations":[{"start":{"line":105,"column":88},"end":{"line":107,"column":7}}]},"12":{"type":"branch","line":113,"loc":{"start":{"line":113,"column":0},"end":{"line":115,"column":1}},"locations":[{"start":{"line":113,"column":0},"end":{"line":115,"column":1}}]},"13":{"type":"branch","line":117,"loc":{"start":{"line":117,"column":7},"end":{"line":155,"column":1}},"locations":[{"start":{"line":117,"column":7},"end":{"line":155,"column":1}}]},"14":{"type":"branch","line":125,"loc":{"start":{"line":125,"column":21},"end":{"line":153,"column":5}},"locations":[{"start":{"line":125,"column":21},"end":{"line":153,"column":5}}]},"15":{"type":"branch","line":126,"loc":{"start":{"line":126,"column":51},"end":{"line":126,"column":56}},"locations":[{"start":{"line":126,"column":51},"end":{"line":126,"column":56}}]},"16":{"type":"branch","line":128,"loc":{"start":{"line":128,"column":34},"end":{"line":137,"column":7}},"locations":[{"start":{"line":128,"column":34},"end":{"line":137,"column":7}}]},"17":{"type":"branch","line":131,"loc":{"start":{"line":131,"column":45},"end":{"line":133,"column":17}},"locations":[{"start":{"line":131,"column":45},"end":{"line":133,"column":17}}]},"18":{"type":"branch","line":133,"loc":{"start":{"line":133,"column":11},"end":{"line":135,"column":11}},"locations":[{"start":{"line":133,"column":11},"end":{"line":135,"column":11}}]},"19":{"type":"branch","line":139,"loc":{"start":{"line":139,"column":34},"end":{"line":147,"column":13}},"locations":[{"start":{"line":139,"column":34},"end":{"line":147,"column":13}}]},"20":{"type":"branch","line":147,"loc":{"start":{"line":147,"column":7},"end":{"line":152,"column":7}},"locations":[{"start":{"line":147,"column":7},"end":{"line":152,"column":7}}]},"21":{"type":"branch","line":157,"loc":{"start":{"line":157,"column":7},"end":{"line":168,"column":1}},"locations":[{"start":{"line":157,"column":7},"end":{"line":168,"column":1}}]},"22":{"type":"branch","line":163,"loc":{"start":{"line":163,"column":37},"end":{"line":163,"column":49}},"locations":[{"start":{"line":163,"column":37},"end":{"line":163,"column":49}}]},"23":{"type":"branch","line":164,"loc":{"start":{"line":164,"column":-1},"end":{"line":166,"column":3}},"locations":[{"start":{"line":164,"column":-1},"end":{"line":166,"column":3}}]},"24":{"type":"branch","line":164,"loc":{"start":{"line":164,"column":39},"end":{"line":164,"column":73}},"locations":[{"start":{"line":164,"column":39},"end":{"line":164,"column":73}}]},"25":{"type":"branch","line":167,"loc":{"start":{"line":167,"column":-1},"end":{"line":168,"column":1}},"locations":[{"start":{"line":167,"column":-1},"end":{"line":168,"column":1}}]},"26":{"type":"branch","line":170,"loc":{"start":{"line":170,"column":7},"end":{"line":176,"column":1}},"locations":[{"start":{"line":170,"column":7},"end":{"line":176,"column":1}}]},"27":{"type":"branch","line":171,"loc":{"start":{"line":171,"column":37},"end":{"line":173,"column":9}},"locations":[{"start":{"line":171,"column":37},"end":{"line":173,"column":9}}]},"28":{"type":"branch","line":173,"loc":{"start":{"line":173,"column":3},"end":{"line":175,"column":3}},"locations":[{"start":{"line":173,"column":3},"end":{"line":175,"column":3}}]},"29":{"type":"branch","line":178,"loc":{"start":{"line":178,"column":7},"end":{"line":187,"column":1}},"locations":[{"start":{"line":178,"column":7},"end":{"line":187,"column":1}}]},"30":{"type":"branch","line":179,"loc":{"start":{"line":179,"column":36},"end":{"line":179,"column":70}},"locations":[{"start":{"line":179,"column":36},"end":{"line":179,"column":70}}]},"31":{"type":"branch","line":179,"loc":{"start":{"line":179,"column":73},"end":{"line":181,"column":3}},"locations":[{"start":{"line":179,"column":73},"end":{"line":181,"column":3}}]},"32":{"type":"branch","line":183,"loc":{"start":{"line":183,"column":12},"end":{"line":185,"column":3}},"locations":[{"start":{"line":183,"column":12},"end":{"line":185,"column":3}}]},"33":{"type":"branch","line":189,"loc":{"start":{"line":189,"column":7},"end":{"line":200,"column":1}},"locations":[{"start":{"line":189,"column":7},"end":{"line":200,"column":1}}]},"34":{"type":"branch","line":190,"loc":{"start":{"line":190,"column":36},"end":{"line":190,"column":70}},"locations":[{"start":{"line":190,"column":36},"end":{"line":190,"column":70}}]},"35":{"type":"branch","line":190,"loc":{"start":{"line":190,"column":73},"end":{"line":192,"column":3}},"locations":[{"start":{"line":190,"column":73},"end":{"line":192,"column":3}}]},"36":{"type":"branch","line":194,"loc":{"start":{"line":194,"column":25},"end":{"line":194,"column":47}},"locations":[{"start":{"line":194,"column":25},"end":{"line":194,"column":47}}]},"37":{"type":"branch","line":194,"loc":{"start":{"line":194,"column":48},"end":{"line":194,"column":58}},"locations":[{"start":{"line":194,"column":48},"end":{"line":194,"column":58}}]},"38":{"type":"branch","line":195,"loc":{"start":{"line":195,"column":33},"end":{"line":197,"column":3}},"locations":[{"start":{"line":195,"column":33},"end":{"line":197,"column":3}}]},"39":{"type":"branch","line":198,"loc":{"start":{"line":198,"column":-1},"end":{"line":200,"column":1}},"locations":[{"start":{"line":198,"column":-1},"end":{"line":200,"column":1}}]},"40":{"type":"branch","line":202,"loc":{"start":{"line":202,"column":7},"end":{"line":220,"column":1}},"locations":[{"start":{"line":202,"column":7},"end":{"line":220,"column":1}}]},"41":{"type":"branch","line":205,"loc":{"start":{"line":205,"column":14},"end":{"line":213,"column":3}},"locations":[{"start":{"line":205,"column":14},"end":{"line":213,"column":3}}]},"42":{"type":"branch","line":216,"loc":{"start":{"line":216,"column":33},"end":{"line":218,"column":3}},"locations":[{"start":{"line":216,"column":33},"end":{"line":218,"column":3}}]},"43":{"type":"branch","line":222,"loc":{"start":{"line":222,"column":7},"end":{"line":229,"column":1}},"locations":[{"start":{"line":222,"column":7},"end":{"line":229,"column":1}}]},"44":{"type":"branch","line":231,"loc":{"start":{"line":231,"column":7},"end":{"line":233,"column":1}},"locations":[{"start":{"line":231,"column":7},"end":{"line":233,"column":1}}]},"45":{"type":"branch","line":238,"loc":{"start":{"line":238,"column":7},"end":{"line":283,"column":1}},"locations":[{"start":{"line":238,"column":7},"end":{"line":283,"column":1}}]},"46":{"type":"branch","line":247,"loc":{"start":{"line":247,"column":20},"end":{"line":279,"column":5}},"locations":[{"start":{"line":247,"column":20},"end":{"line":279,"column":5}}]},"47":{"type":"branch","line":249,"loc":{"start":{"line":249,"column":40},"end":{"line":249,"column":45}},"locations":[{"start":{"line":249,"column":40},"end":{"line":249,"column":45}}]},"48":{"type":"branch","line":253,"loc":{"start":{"line":253,"column":34},"end":{"line":275,"column":11}},"locations":[{"start":{"line":253,"column":34},"end":{"line":275,"column":11}}]},"49":{"type":"branch","line":254,"loc":{"start":{"line":254,"column":51},"end":{"line":273,"column":13}},"locations":[{"start":{"line":254,"column":51},"end":{"line":273,"column":13}}]},"50":{"type":"branch","line":285,"loc":{"start":{"line":285,"column":7},"end":{"line":299,"column":1}},"locations":[{"start":{"line":285,"column":7},"end":{"line":299,"column":1}}]},"51":{"type":"branch","line":291,"loc":{"start":{"line":291,"column":16},"end":{"line":291,"column":37}},"locations":[{"start":{"line":291,"column":16},"end":{"line":291,"column":37}}]},"52":{"type":"branch","line":291,"loc":{"start":{"line":291,"column":39},"end":{"line":293,"column":3}},"locations":[{"start":{"line":291,"column":39},"end":{"line":293,"column":3}}]},"53":{"type":"branch","line":294,"loc":{"start":{"line":294,"column":-1},"end":{"line":299,"column":1}},"locations":[{"start":{"line":294,"column":-1},"end":{"line":299,"column":1}}]},"54":{"type":"branch","line":295,"loc":{"start":{"line":295,"column":25},"end":{"line":298,"column":4}},"locations":[{"start":{"line":295,"column":25},"end":{"line":298,"column":4}}]},"55":{"type":"branch","line":301,"loc":{"start":{"line":301,"column":0},"end":{"line":308,"column":1}},"locations":[{"start":{"line":301,"column":0},"end":{"line":308,"column":1}}]},"56":{"type":"branch","line":303,"loc":{"start":{"line":303,"column":36},"end":{"line":305,"column":9}},"locations":[{"start":{"line":303,"column":36},"end":{"line":305,"column":9}}]},"57":{"type":"branch","line":302,"loc":{"start":{"line":302,"column":42},"end":{"line":302,"column":72}},"locations":[{"start":{"line":302,"column":42},"end":{"line":302,"column":72}}]},"58":{"type":"branch","line":302,"loc":{"start":{"line":302,"column":67},"end":{"line":302,"column":72}},"locations":[{"start":{"line":302,"column":67},"end":{"line":302,"column":72}}]}},"b":{"0":[20],"1":[0],"2":[19],"3":[1],"4":[141],"5":[1],"6":[3],"7":[0],"8":[4],"9":[2],"10":[2],"11":[2],"12":[47],"13":[44],"14":[47],"15":[1],"16":[8],"17":[5],"18":[3],"19":[8],"20":[39],"21":[47],"22":[8],"23":[39],"24":[0],"25":[0],"26":[8],"27":[5],"28":[3],"29":[6],"30":[0],"31":[0],"32":[0],"33":[47],"34":[0],"35":[0],"36":[44],"37":[3],"38":[18],"39":[29],"40":[47],"41":[0],"42":[0],"43":[20],"44":[20],"45":[35],"46":[35],"47":[0],"48":[35],"49":[0],"50":[41],"51":[2],"52":[39],"53":[2],"54":[2],"55":[121],"56":[0],"57":[121],"58":[0]},"fnMap":{"0":{"name":"getValidPort","decl":{"start":{"line":20,"column":7},"end":{"line":36,"column":1}},"loc":{"start":{"line":20,"column":7},"end":{"line":36,"column":1}},"line":20},"1":{"name":"prepareProjectDir","decl":{"start":{"line":38,"column":7},"end":{"line":51,"column":1}},"loc":{"start":{"line":38,"column":7},"end":{"line":51,"column":1}},"line":38},"2":{"name":"getExistingProjectSchema","decl":{"start":{"line":53,"column":7},"end":{"line":73,"column":1}},"loc":{"start":{"line":53,"column":7},"end":{"line":73,"column":1}},"line":53},"3":{"name":"getEnumDeprecated","decl":{"start":{"line":75,"column":7},"end":{"line":85,"column":1}},"loc":{"start":{"line":75,"column":7},"end":{"line":85,"column":1}},"line":75},"4":{"name":"getModulos","decl":{"start":{"line":94,"column":0},"end":{"line":111,"column":1}},"loc":{"start":{"line":94,"column":0},"end":{"line":111,"column":1}},"line":94},"5":{"name":"isAssetsDs","decl":{"start":{"line":113,"column":0},"end":{"line":115,"column":1}},"loc":{"start":{"line":113,"column":0},"end":{"line":115,"column":1}},"line":113},"6":{"name":"updateDataSourcesV1_0_0","decl":{"start":{"line":117,"column":7},"end":{"line":155,"column":1}},"loc":{"start":{"line":117,"column":7},"end":{"line":155,"column":1}},"line":117},"7":{"name":"updateDataSourcesEntry","decl":{"start":{"line":157,"column":7},"end":{"line":168,"column":1}},"loc":{"start":{"line":157,"column":7},"end":{"line":168,"column":1}},"line":157},"8":{"name":"updateProcessor","decl":{"start":{"line":170,"column":7},"end":{"line":176,"column":1}},"loc":{"start":{"line":170,"column":7},"end":{"line":176,"column":1}},"line":170},"9":{"name":"fetchAndSaveFile","decl":{"start":{"line":178,"column":7},"end":{"line":187,"column":1}},"loc":{"start":{"line":178,"column":7},"end":{"line":187,"column":1}},"line":178},"10":{"name":"saveFile","decl":{"start":{"line":189,"column":7},"end":{"line":200,"column":1}},"loc":{"start":{"line":189,"column":7},"end":{"line":200,"column":1}},"line":189},"11":{"name":"loadDataSourceScript","decl":{"start":{"line":202,"column":7},"end":{"line":220,"column":1}},"loc":{"start":{"line":202,"column":7},"end":{"line":220,"column":1}},"line":202},"12":{"name":"initDbSchema","decl":{"start":{"line":222,"column":7},"end":{"line":229,"column":1}},"loc":{"start":{"line":222,"column":7},"end":{"line":229,"column":1}},"line":222},"13":{"name":"initHotSchemaReload","decl":{"start":{"line":231,"column":7},"end":{"line":233,"column":1}},"loc":{"start":{"line":231,"column":7},"end":{"line":233,"column":1}},"line":231},"14":{"name":"insertBlockFiltersCronSchedules","decl":{"start":{"line":238,"column":7},"end":{"line":283,"column":1}},"loc":{"start":{"line":238,"column":7},"end":{"line":283,"column":1}},"line":238},"15":{"name":"get next","decl":{"start":{"line":268,"column":18},"end":{"line":270,"column":19}},"loc":{"start":{"line":268,"column":18},"end":{"line":270,"column":19}},"line":268},"16":{"name":"loadProjectTemplates","decl":{"start":{"line":285,"column":7},"end":{"line":299,"column":1}},"loc":{"start":{"line":285,"column":7},"end":{"line":299,"column":1}},"line":285},"17":{"name":"getStartHeight","decl":{"start":{"line":301,"column":0},"end":{"line":308,"column":1}},"loc":{"start":{"line":301,"column":0},"end":{"line":308,"column":1}},"line":301}},"f":{"0":0,"1":0,"2":20,"3":0,"4":1,"5":47,"6":44,"7":47,"8":8,"9":6,"10":47,"11":47,"12":20,"13":20,"14":35,"15":0,"16":41,"17":121}},"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/utils/promise.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/utils/promise.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":48}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":57}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":35}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":36}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":5}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":1}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":0}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":100}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":52}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":32}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":30}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":23}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":17}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":14}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":30}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":17}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":8}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":14}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":30}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":16}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":7}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":6}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":45}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":58}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":7}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":5}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":1}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":0}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":41}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":26}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":0}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":31}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":47}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":31}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":3}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":1}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":0}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":67}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":39}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":1}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":0}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":115}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":7}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":22}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":15}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":45}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":32}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":5}},"51":{"start":{"line":52,"column":0},"end":{"line":52,"column":45}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":69}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":3}},"54":{"start":{"line":55,"column":0},"end":{"line":55,"column":1}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":0}},"56":{"start":{"line":57,"column":0},"end":{"line":57,"column":87}},"57":{"start":{"line":58,"column":0},"end":{"line":58,"column":44}},"58":{"start":{"line":59,"column":0},"end":{"line":59,"column":1}},"59":{"start":{"line":60,"column":0},"end":{"line":60,"column":0}},"60":{"start":{"line":61,"column":0},"end":{"line":61,"column":59}},"61":{"start":{"line":62,"column":0},"end":{"line":62,"column":116}},"62":{"start":{"line":63,"column":0},"end":{"line":63,"column":54}},"63":{"start":{"line":64,"column":0},"end":{"line":64,"column":49}},"64":{"start":{"line":65,"column":0},"end":{"line":65,"column":29}},"65":{"start":{"line":66,"column":0},"end":{"line":66,"column":0}},"66":{"start":{"line":67,"column":0},"end":{"line":67,"column":48}},"67":{"start":{"line":68,"column":0},"end":{"line":68,"column":11}},"68":{"start":{"line":69,"column":0},"end":{"line":69,"column":37}},"69":{"start":{"line":70,"column":0},"end":{"line":70,"column":28}},"70":{"start":{"line":71,"column":0},"end":{"line":71,"column":30}},"71":{"start":{"line":72,"column":0},"end":{"line":72,"column":51}},"72":{"start":{"line":73,"column":0},"end":{"line":73,"column":9}},"73":{"start":{"line":74,"column":0},"end":{"line":74,"column":23}},"74":{"start":{"line":75,"column":0},"end":{"line":75,"column":28}},"75":{"start":{"line":76,"column":0},"end":{"line":76,"column":7}},"76":{"start":{"line":77,"column":0},"end":{"line":77,"column":7}},"77":{"start":{"line":78,"column":0},"end":{"line":78,"column":0}},"78":{"start":{"line":79,"column":0},"end":{"line":79,"column":42}},"79":{"start":{"line":80,"column":0},"end":{"line":80,"column":55}},"80":{"start":{"line":81,"column":0},"end":{"line":81,"column":83}},"81":{"start":{"line":82,"column":0},"end":{"line":82,"column":54}},"82":{"start":{"line":83,"column":0},"end":{"line":83,"column":5}},"83":{"start":{"line":84,"column":0},"end":{"line":84,"column":5}},"84":{"start":{"line":85,"column":0},"end":{"line":85,"column":1}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":61,"6":61,"7":61,"8":61,"9":1,"10":1,"11":65,"12":65,"13":65,"14":65,"15":65,"16":65,"17":52,"18":52,"19":65,"20":65,"21":16,"22":16,"23":16,"24":65,"25":65,"26":65,"27":65,"28":65,"29":65,"30":1,"31":1,"32":1,"33":1,"34":1,"35":2,"36":2,"37":2,"38":1,"39":1,"40":0,"41":0,"42":0,"43":1,"44":5,"45":5,"46":5,"47":5,"48":3,"49":1,"50":1,"51":2,"52":2,"53":2,"54":5,"55":1,"56":1,"57":3,"58":3,"59":1,"60":1,"61":1,"62":26,"63":26,"64":26,"65":26,"66":26,"67":26,"68":26,"69":25,"70":25,"71":25,"72":25,"73":26,"74":0,"75":0,"76":26,"77":26,"78":26,"79":26,"80":26,"81":0,"82":0,"83":26,"84":26},"branchMap":{"0":{"type":"branch","line":5,"loc":{"start":{"line":5,"column":7},"end":{"line":9,"column":1}},"locations":[{"start":{"line":5,"column":7},"end":{"line":9,"column":1}}]},"1":{"type":"branch","line":6,"loc":{"start":{"line":6,"column":21},"end":{"line":8,"column":3}},"locations":[{"start":{"line":6,"column":21},"end":{"line":8,"column":3}}]},"2":{"type":"branch","line":11,"loc":{"start":{"line":11,"column":7},"end":{"line":30,"column":1}},"locations":[{"start":{"line":11,"column":7},"end":{"line":30,"column":1}}]},"3":{"type":"branch","line":17,"loc":{"start":{"line":17,"column":6},"end":{"line":20,"column":7}},"locations":[{"start":{"line":17,"column":6},"end":{"line":20,"column":7}}]},"4":{"type":"branch","line":21,"loc":{"start":{"line":21,"column":6},"end":{"line":24,"column":7}},"locations":[{"start":{"line":21,"column":6},"end":{"line":24,"column":7}}]},"5":{"type":"branch","line":26,"loc":{"start":{"line":26,"column":23},"end":{"line":28,"column":5}},"locations":[{"start":{"line":26,"column":23},"end":{"line":28,"column":5}}]},"6":{"type":"branch","line":27,"loc":{"start":{"line":27,"column":27},"end":{"line":27,"column":44}},"locations":[{"start":{"line":27,"column":27},"end":{"line":27,"column":44}}]},"7":{"type":"branch","line":35,"loc":{"start":{"line":35,"column":2},"end":{"line":38,"column":3}},"locations":[{"start":{"line":35,"column":2},"end":{"line":38,"column":3}}]},"8":{"type":"branch","line":45,"loc":{"start":{"line":45,"column":0},"end":{"line":55,"column":1}},"locations":[{"start":{"line":45,"column":0},"end":{"line":55,"column":1}}]},"9":{"type":"branch","line":48,"loc":{"start":{"line":48,"column":4},"end":{"line":54,"column":3}},"locations":[{"start":{"line":48,"column":4},"end":{"line":54,"column":3}}]},"10":{"type":"branch","line":49,"loc":{"start":{"line":49,"column":44},"end":{"line":51,"column":5}},"locations":[{"start":{"line":49,"column":44},"end":{"line":51,"column":5}}]},"11":{"type":"branch","line":52,"loc":{"start":{"line":52,"column":-1},"end":{"line":54,"column":3}},"locations":[{"start":{"line":52,"column":-1},"end":{"line":54,"column":3}}]},"12":{"type":"branch","line":57,"loc":{"start":{"line":57,"column":7},"end":{"line":59,"column":1}},"locations":[{"start":{"line":57,"column":7},"end":{"line":59,"column":1}}]},"13":{"type":"branch","line":62,"loc":{"start":{"line":62,"column":7},"end":{"line":85,"column":1}},"locations":[{"start":{"line":62,"column":7},"end":{"line":85,"column":1}}]},"14":{"type":"branch","line":64,"loc":{"start":{"line":64,"column":21},"end":{"line":84,"column":3}},"locations":[{"start":{"line":64,"column":21},"end":{"line":84,"column":3}}]},"15":{"type":"branch","line":81,"loc":{"start":{"line":81,"column":-1},"end":{"line":81,"column":25}},"locations":[{"start":{"line":81,"column":-1},"end":{"line":81,"column":25}}]},"16":{"type":"branch","line":81,"loc":{"start":{"line":81,"column":21},"end":{"line":81,"column":80}},"locations":[{"start":{"line":81,"column":21},"end":{"line":81,"column":80}}]},"17":{"type":"branch","line":81,"loc":{"start":{"line":81,"column":82},"end":{"line":83,"column":5}},"locations":[{"start":{"line":81,"column":82},"end":{"line":83,"column":5}}]},"18":{"type":"branch","line":67,"loc":{"start":{"line":67,"column":21},"end":{"line":77,"column":5}},"locations":[{"start":{"line":67,"column":21},"end":{"line":77,"column":5}}]},"19":{"type":"branch","line":70,"loc":{"start":{"line":70,"column":-1},"end":{"line":73,"column":9}},"locations":[{"start":{"line":70,"column":-1},"end":{"line":73,"column":9}}]},"20":{"type":"branch","line":74,"loc":{"start":{"line":74,"column":8},"end":{"line":76,"column":7}},"locations":[{"start":{"line":74,"column":8},"end":{"line":76,"column":7}}]},"21":{"type":"branch","line":81,"loc":{"start":{"line":81,"column":39},"end":{"line":81,"column":79}},"locations":[{"start":{"line":81,"column":39},"end":{"line":81,"column":79}}]}},"b":{"0":[61],"1":[61],"2":[65],"3":[52],"4":[16],"5":[65],"6":[5],"7":[2],"8":[5],"9":[3],"10":[1],"11":[2],"12":[3],"13":[26],"14":[26],"15":[25],"16":[0],"17":[0],"18":[26],"19":[25],"20":[0],"21":[1]},"fnMap":{"0":{"name":"delay","decl":{"start":{"line":5,"column":7},"end":{"line":9,"column":1}},"loc":{"start":{"line":5,"column":7},"end":{"line":9,"column":1}},"line":5},"1":{"name":"timeout","decl":{"start":{"line":11,"column":7},"end":{"line":30,"column":1}},"loc":{"start":{"line":11,"column":7},"end":{"line":30,"column":1}},"line":11},"2":{"name":"BackoffError","decl":{"start":{"line":35,"column":2},"end":{"line":38,"column":3}},"loc":{"start":{"line":35,"column":2},"end":{"line":38,"column":3}},"line":35},"3":{"name":"isBackoffError","decl":{"start":{"line":41,"column":0},"end":{"line":43,"column":1}},"loc":{"start":{"line":41,"column":0},"end":{"line":43,"column":1}},"line":41},"4":{"name":"backoffRetryInternal","decl":{"start":{"line":45,"column":0},"end":{"line":55,"column":1}},"loc":{"start":{"line":45,"column":0},"end":{"line":55,"column":1}},"line":45},"5":{"name":"backoffRetry","decl":{"start":{"line":57,"column":7},"end":{"line":59,"column":1}},"loc":{"start":{"line":57,"column":7},"end":{"line":59,"column":1}},"line":57},"6":{"name":"raceFulfilled","decl":{"start":{"line":62,"column":7},"end":{"line":85,"column":1}},"loc":{"start":{"line":62,"column":7},"end":{"line":85,"column":1}},"line":62}},"f":{"0":61,"1":65,"2":2,"3":0,"4":5,"5":3,"6":26}},"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/utils/reindex.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/utils/reindex.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":53}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":45}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":52}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":115}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":36}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":49}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":0}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":36}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":0}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":3}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":84}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":55}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":86}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":119}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":93}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":48}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":48}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":21}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":89}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":29}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":22}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":33}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":26}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":19}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":31}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":20}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":27}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":3}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":30}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":22}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":28}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":30}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":29}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":58}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":42}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":23}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":66}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":26}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":39}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":18}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":72}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":16}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":131}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":6}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":11}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":3}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":0}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":70}},"51":{"start":{"line":52,"column":0},"end":{"line":52,"column":40}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":16}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":112}},"54":{"start":{"line":55,"column":0},"end":{"line":55,"column":6}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":29}},"56":{"start":{"line":57,"column":0},"end":{"line":57,"column":73}},"57":{"start":{"line":58,"column":0},"end":{"line":58,"column":22}},"58":{"start":{"line":59,"column":0},"end":{"line":59,"column":5}},"59":{"start":{"line":60,"column":0},"end":{"line":60,"column":47}},"60":{"start":{"line":61,"column":0},"end":{"line":61,"column":41}},"61":{"start":{"line":62,"column":0},"end":{"line":62,"column":10}},"62":{"start":{"line":63,"column":0},"end":{"line":63,"column":61}},"63":{"start":{"line":64,"column":0},"end":{"line":64,"column":58}},"64":{"start":{"line":65,"column":0},"end":{"line":65,"column":47}},"65":{"start":{"line":66,"column":0},"end":{"line":66,"column":54}},"66":{"start":{"line":67,"column":0},"end":{"line":67,"column":9}},"67":{"start":{"line":68,"column":0},"end":{"line":68,"column":8}},"68":{"start":{"line":69,"column":0},"end":{"line":69,"column":123}},"69":{"start":{"line":70,"column":0},"end":{"line":70,"column":59}},"70":{"start":{"line":71,"column":0},"end":{"line":71,"column":73}},"71":{"start":{"line":72,"column":0},"end":{"line":72,"column":114}},"72":{"start":{"line":73,"column":0},"end":{"line":73,"column":6}},"73":{"start":{"line":74,"column":0},"end":{"line":74,"column":108}},"74":{"start":{"line":75,"column":0},"end":{"line":75,"column":0}},"75":{"start":{"line":76,"column":0},"end":{"line":76,"column":25}},"76":{"start":{"line":77,"column":0},"end":{"line":77,"column":60}},"77":{"start":{"line":78,"column":0},"end":{"line":78,"column":105}},"78":{"start":{"line":79,"column":0},"end":{"line":79,"column":115}},"79":{"start":{"line":80,"column":0},"end":{"line":80,"column":67}},"80":{"start":{"line":81,"column":0},"end":{"line":81,"column":59}},"81":{"start":{"line":82,"column":0},"end":{"line":82,"column":9}},"82":{"start":{"line":83,"column":0},"end":{"line":83,"column":54}},"83":{"start":{"line":84,"column":0},"end":{"line":84,"column":64}},"84":{"start":{"line":85,"column":0},"end":{"line":85,"column":0}},"85":{"start":{"line":86,"column":0},"end":{"line":86,"column":33}},"86":{"start":{"line":87,"column":0},"end":{"line":87,"column":37}},"87":{"start":{"line":88,"column":0},"end":{"line":88,"column":24}},"88":{"start":{"line":89,"column":0},"end":{"line":89,"column":45}},"89":{"start":{"line":90,"column":0},"end":{"line":90,"column":35}},"90":{"start":{"line":91,"column":0},"end":{"line":91,"column":16}},"91":{"start":{"line":92,"column":0},"end":{"line":92,"column":5}},"92":{"start":{"line":93,"column":0},"end":{"line":93,"column":3}},"93":{"start":{"line":94,"column":0},"end":{"line":94,"column":1}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"59":0,"60":0,"61":0,"62":0,"63":0,"64":0,"65":0,"66":0,"67":0,"68":0,"69":0,"70":0,"71":0,"72":0,"73":0,"74":0,"75":0,"76":0,"77":0,"78":0,"79":0,"80":0,"81":0,"82":0,"83":0,"84":0,"85":0,"86":0,"87":0,"88":0,"89":0,"90":0,"91":0,"92":0,"93":0},"branchMap":{},"b":{},"fnMap":{"0":{"name":"reindex","decl":{"start":{"line":32,"column":7},"end":{"line":94,"column":1}},"loc":{"start":{"line":32,"column":7},"end":{"line":94,"column":1}},"line":32}},"f":{"0":0}},"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/yargs.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/node-core/src/yargs.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":26}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":38}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":36}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":0}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":110}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":5}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":33}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":7}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":26}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":5}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":37}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":7}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":29}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":5}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":33}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":7}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":46}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":5}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":46}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":7}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":22}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":5}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":59}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":7}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":20}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":2}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":0}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":77}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":77}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":29}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":70}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":68}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":39}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":10}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":32}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":24}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":16}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":24}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":57}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":20}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":28}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":118}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":39}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":10}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":8}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":16}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":31}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":17}},"51":{"start":{"line":52,"column":0},"end":{"line":52,"column":142}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":20}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":28}},"54":{"start":{"line":55,"column":0},"end":{"line":55,"column":118}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":0}},"56":{"start":{"line":57,"column":0},"end":{"line":57,"column":42}},"57":{"start":{"line":58,"column":0},"end":{"line":58,"column":10}},"58":{"start":{"line":59,"column":0},"end":{"line":59,"column":8}},"59":{"start":{"line":60,"column":0},"end":{"line":60,"column":16}},"60":{"start":{"line":61,"column":0},"end":{"line":61,"column":27}},"61":{"start":{"line":62,"column":0},"end":{"line":62,"column":17}},"62":{"start":{"line":63,"column":0},"end":{"line":63,"column":203}},"63":{"start":{"line":64,"column":0},"end":{"line":64,"column":27}},"64":{"start":{"line":65,"column":0},"end":{"line":65,"column":41}},"65":{"start":{"line":66,"column":0},"end":{"line":66,"column":27}},"66":{"start":{"line":67,"column":0},"end":{"line":67,"column":44}},"67":{"start":{"line":68,"column":0},"end":{"line":68,"column":26}},"68":{"start":{"line":69,"column":0},"end":{"line":69,"column":13}},"69":{"start":{"line":70,"column":0},"end":{"line":70,"column":28}},"70":{"start":{"line":71,"column":0},"end":{"line":71,"column":118}},"71":{"start":{"line":72,"column":0},"end":{"line":72,"column":56}},"72":{"start":{"line":73,"column":0},"end":{"line":73,"column":10}},"73":{"start":{"line":74,"column":0},"end":{"line":74,"column":8}},"74":{"start":{"line":75,"column":0},"end":{"line":75,"column":71}},"75":{"start":{"line":76,"column":0},"end":{"line":76,"column":16}},"76":{"start":{"line":77,"column":0},"end":{"line":77,"column":40}},"77":{"start":{"line":78,"column":0},"end":{"line":78,"column":49}},"78":{"start":{"line":79,"column":0},"end":{"line":79,"column":27}},"79":{"start":{"line":80,"column":0},"end":{"line":80,"column":15}},"80":{"start":{"line":81,"column":0},"end":{"line":81,"column":22}},"81":{"start":{"line":82,"column":0},"end":{"line":82,"column":36}},"82":{"start":{"line":83,"column":0},"end":{"line":83,"column":29}},"83":{"start":{"line":84,"column":0},"end":{"line":84,"column":36}},"84":{"start":{"line":85,"column":0},"end":{"line":85,"column":71}},"85":{"start":{"line":86,"column":0},"end":{"line":86,"column":31}},"86":{"start":{"line":87,"column":0},"end":{"line":87,"column":16}},"87":{"start":{"line":88,"column":0},"end":{"line":88,"column":37}},"88":{"start":{"line":89,"column":0},"end":{"line":89,"column":36}},"89":{"start":{"line":90,"column":0},"end":{"line":90,"column":61}},"90":{"start":{"line":91,"column":0},"end":{"line":91,"column":31}},"91":{"start":{"line":92,"column":0},"end":{"line":92,"column":16}},"92":{"start":{"line":93,"column":0},"end":{"line":93,"column":40}},"93":{"start":{"line":94,"column":0},"end":{"line":94,"column":36}},"94":{"start":{"line":95,"column":0},"end":{"line":95,"column":25}},"95":{"start":{"line":96,"column":0},"end":{"line":96,"column":113}},"96":{"start":{"line":97,"column":0},"end":{"line":97,"column":31}},"97":{"start":{"line":98,"column":0},"end":{"line":98,"column":16}},"98":{"start":{"line":99,"column":0},"end":{"line":99,"column":38}},"99":{"start":{"line":100,"column":0},"end":{"line":100,"column":36}},"100":{"start":{"line":101,"column":0},"end":{"line":101,"column":107}},"101":{"start":{"line":102,"column":0},"end":{"line":102,"column":31}},"102":{"start":{"line":103,"column":0},"end":{"line":103,"column":16}},"103":{"start":{"line":104,"column":0},"end":{"line":104,"column":37}},"104":{"start":{"line":105,"column":0},"end":{"line":105,"column":36}},"105":{"start":{"line":106,"column":0},"end":{"line":106,"column":70}},"106":{"start":{"line":107,"column":0},"end":{"line":107,"column":32}},"107":{"start":{"line":108,"column":0},"end":{"line":108,"column":134}},"108":{"start":{"line":109,"column":0},"end":{"line":109,"column":16}},"109":{"start":{"line":110,"column":0},"end":{"line":110,"column":28}},"110":{"start":{"line":111,"column":0},"end":{"line":111,"column":36}},"111":{"start":{"line":112,"column":0},"end":{"line":112,"column":85}},"112":{"start":{"line":113,"column":0},"end":{"line":113,"column":31}},"113":{"start":{"line":114,"column":0},"end":{"line":114,"column":88}},"114":{"start":{"line":115,"column":0},"end":{"line":115,"column":16}},"115":{"start":{"line":116,"column":0},"end":{"line":116,"column":30}},"116":{"start":{"line":117,"column":0},"end":{"line":117,"column":36}},"117":{"start":{"line":118,"column":0},"end":{"line":118,"column":31}},"118":{"start":{"line":119,"column":0},"end":{"line":119,"column":102}},"119":{"start":{"line":120,"column":0},"end":{"line":120,"column":32}},"120":{"start":{"line":121,"column":0},"end":{"line":121,"column":16}},"121":{"start":{"line":122,"column":0},"end":{"line":122,"column":37}},"122":{"start":{"line":123,"column":0},"end":{"line":123,"column":27}},"123":{"start":{"line":124,"column":0},"end":{"line":124,"column":36}},"124":{"start":{"line":125,"column":0},"end":{"line":125,"column":72}},"125":{"start":{"line":126,"column":0},"end":{"line":126,"column":31}},"126":{"start":{"line":127,"column":0},"end":{"line":127,"column":16}},"127":{"start":{"line":128,"column":0},"end":{"line":128,"column":35}},"128":{"start":{"line":129,"column":0},"end":{"line":129,"column":36}},"129":{"start":{"line":130,"column":0},"end":{"line":130,"column":31}},"130":{"start":{"line":131,"column":0},"end":{"line":131,"column":67}},"131":{"start":{"line":132,"column":0},"end":{"line":132,"column":16}},"132":{"start":{"line":133,"column":0},"end":{"line":133,"column":43}},"133":{"start":{"line":134,"column":0},"end":{"line":134,"column":36}},"134":{"start":{"line":135,"column":0},"end":{"line":135,"column":31}},"135":{"start":{"line":136,"column":0},"end":{"line":136,"column":99}},"136":{"start":{"line":137,"column":0},"end":{"line":137,"column":16}},"137":{"start":{"line":138,"column":0},"end":{"line":138,"column":29}},"138":{"start":{"line":139,"column":0},"end":{"line":139,"column":36}},"139":{"start":{"line":140,"column":0},"end":{"line":140,"column":60}},"140":{"start":{"line":141,"column":0},"end":{"line":141,"column":31}},"141":{"start":{"line":142,"column":0},"end":{"line":142,"column":45}},"142":{"start":{"line":143,"column":0},"end":{"line":143,"column":16}},"143":{"start":{"line":144,"column":0},"end":{"line":144,"column":30}},"144":{"start":{"line":145,"column":0},"end":{"line":145,"column":36}},"145":{"start":{"line":146,"column":0},"end":{"line":146,"column":97}},"146":{"start":{"line":147,"column":0},"end":{"line":147,"column":31}},"147":{"start":{"line":148,"column":0},"end":{"line":148,"column":29}},"148":{"start":{"line":149,"column":0},"end":{"line":149,"column":16}},"149":{"start":{"line":150,"column":0},"end":{"line":150,"column":40}},"150":{"start":{"line":151,"column":0},"end":{"line":151,"column":36}},"151":{"start":{"line":152,"column":0},"end":{"line":152,"column":117}},"152":{"start":{"line":153,"column":0},"end":{"line":153,"column":31}},"153":{"start":{"line":154,"column":0},"end":{"line":154,"column":16}},"154":{"start":{"line":155,"column":0},"end":{"line":155,"column":42}},"155":{"start":{"line":156,"column":0},"end":{"line":156,"column":36}},"156":{"start":{"line":157,"column":0},"end":{"line":157,"column":25}},"157":{"start":{"line":158,"column":0},"end":{"line":158,"column":162}},"158":{"start":{"line":159,"column":0},"end":{"line":159,"column":31}},"159":{"start":{"line":160,"column":0},"end":{"line":160,"column":16}},"160":{"start":{"line":161,"column":0},"end":{"line":161,"column":39}},"161":{"start":{"line":162,"column":0},"end":{"line":162,"column":36}},"162":{"start":{"line":163,"column":0},"end":{"line":163,"column":64}},"163":{"start":{"line":164,"column":0},"end":{"line":164,"column":31}},"164":{"start":{"line":165,"column":0},"end":{"line":165,"column":16}},"165":{"start":{"line":166,"column":0},"end":{"line":166,"column":36}},"166":{"start":{"line":167,"column":0},"end":{"line":167,"column":36}},"167":{"start":{"line":168,"column":0},"end":{"line":168,"column":112}},"168":{"start":{"line":169,"column":0},"end":{"line":169,"column":32}},"169":{"start":{"line":170,"column":0},"end":{"line":170,"column":16}},"170":{"start":{"line":171,"column":0},"end":{"line":171,"column":39}},"171":{"start":{"line":172,"column":0},"end":{"line":172,"column":36}},"172":{"start":{"line":173,"column":0},"end":{"line":173,"column":25}},"173":{"start":{"line":174,"column":0},"end":{"line":174,"column":89}},"174":{"start":{"line":175,"column":0},"end":{"line":175,"column":131}},"175":{"start":{"line":176,"column":0},"end":{"line":176,"column":31}},"176":{"start":{"line":177,"column":0},"end":{"line":177,"column":27}},"177":{"start":{"line":178,"column":0},"end":{"line":178,"column":16}},"178":{"start":{"line":179,"column":0},"end":{"line":179,"column":32}},"179":{"start":{"line":180,"column":0},"end":{"line":180,"column":33}},"180":{"start":{"line":181,"column":0},"end":{"line":181,"column":36}},"181":{"start":{"line":182,"column":0},"end":{"line":182,"column":57}},"182":{"start":{"line":183,"column":0},"end":{"line":183,"column":31}},"183":{"start":{"line":184,"column":0},"end":{"line":184,"column":16}},"184":{"start":{"line":185,"column":0},"end":{"line":185,"column":29}},"185":{"start":{"line":186,"column":0},"end":{"line":186,"column":36}},"186":{"start":{"line":187,"column":0},"end":{"line":187,"column":80}},"187":{"start":{"line":188,"column":0},"end":{"line":188,"column":32}},"188":{"start":{"line":189,"column":0},"end":{"line":189,"column":31}},"189":{"start":{"line":190,"column":0},"end":{"line":190,"column":16}},"190":{"start":{"line":191,"column":0},"end":{"line":191,"column":33}},"191":{"start":{"line":192,"column":0},"end":{"line":192,"column":36}},"192":{"start":{"line":193,"column":0},"end":{"line":193,"column":25}},"193":{"start":{"line":194,"column":0},"end":{"line":194,"column":291}},"194":{"start":{"line":195,"column":0},"end":{"line":195,"column":32}},"195":{"start":{"line":196,"column":0},"end":{"line":196,"column":134}},"196":{"start":{"line":197,"column":0},"end":{"line":197,"column":16}},"197":{"start":{"line":198,"column":0},"end":{"line":198,"column":24}},"198":{"start":{"line":199,"column":0},"end":{"line":199,"column":36}},"199":{"start":{"line":200,"column":0},"end":{"line":200,"column":89}},"200":{"start":{"line":201,"column":0},"end":{"line":201,"column":31}},"201":{"start":{"line":202,"column":0},"end":{"line":202,"column":16}},"202":{"start":{"line":203,"column":0},"end":{"line":203,"column":37}},"203":{"start":{"line":204,"column":0},"end":{"line":204,"column":36}},"204":{"start":{"line":205,"column":0},"end":{"line":205,"column":73}},"205":{"start":{"line":206,"column":0},"end":{"line":206,"column":32}},"206":{"start":{"line":207,"column":0},"end":{"line":207,"column":134}},"207":{"start":{"line":208,"column":0},"end":{"line":208,"column":16}},"208":{"start":{"line":209,"column":0},"end":{"line":209,"column":23}},"209":{"start":{"line":210,"column":0},"end":{"line":210,"column":32}},"210":{"start":{"line":211,"column":0},"end":{"line":211,"column":36}},"211":{"start":{"line":212,"column":0},"end":{"line":212,"column":83}},"212":{"start":{"line":213,"column":0},"end":{"line":213,"column":134}},"213":{"start":{"line":214,"column":0},"end":{"line":214,"column":16}},"214":{"start":{"line":215,"column":0},"end":{"line":215,"column":24}},"215":{"start":{"line":216,"column":0},"end":{"line":216,"column":27}},"216":{"start":{"line":217,"column":0},"end":{"line":217,"column":36}},"217":{"start":{"line":218,"column":0},"end":{"line":218,"column":117}},"218":{"start":{"line":219,"column":0},"end":{"line":219,"column":31}},"219":{"start":{"line":220,"column":0},"end":{"line":220,"column":16}},"220":{"start":{"line":221,"column":0},"end":{"line":221,"column":41}},"221":{"start":{"line":222,"column":0},"end":{"line":222,"column":36}},"222":{"start":{"line":223,"column":0},"end":{"line":223,"column":82}},"223":{"start":{"line":224,"column":0},"end":{"line":224,"column":32}},"224":{"start":{"line":225,"column":0},"end":{"line":225,"column":16}},"225":{"start":{"line":226,"column":0},"end":{"line":226,"column":21}},"226":{"start":{"line":227,"column":0},"end":{"line":227,"column":25}},"227":{"start":{"line":228,"column":0},"end":{"line":228,"column":187}},"228":{"start":{"line":229,"column":0},"end":{"line":229,"column":31}},"229":{"start":{"line":230,"column":0},"end":{"line":230,"column":16}},"230":{"start":{"line":231,"column":0},"end":{"line":231,"column":30}},"231":{"start":{"line":232,"column":0},"end":{"line":232,"column":25}},"232":{"start":{"line":233,"column":0},"end":{"line":233,"column":117}},"233":{"start":{"line":234,"column":0},"end":{"line":234,"column":31}},"234":{"start":{"line":235,"column":0},"end":{"line":235,"column":16}},"235":{"start":{"line":236,"column":0},"end":{"line":236,"column":14}},"236":{"start":{"line":237,"column":0},"end":{"line":237,"column":73}},"237":{"start":{"line":238,"column":0},"end":{"line":238,"column":24}},"238":{"start":{"line":239,"column":0},"end":{"line":239,"column":40}},"239":{"start":{"line":240,"column":0},"end":{"line":240,"column":10}},"240":{"start":{"line":241,"column":0},"end":{"line":241,"column":8}},"241":{"start":{"line":242,"column":0},"end":{"line":242,"column":49}},"242":{"start":{"line":243,"column":0},"end":{"line":243,"column":16}},"243":{"start":{"line":244,"column":0},"end":{"line":244,"column":31}},"244":{"start":{"line":245,"column":0},"end":{"line":245,"column":17}},"245":{"start":{"line":246,"column":0},"end":{"line":246,"column":21}},"246":{"start":{"line":247,"column":0},"end":{"line":247,"column":30}},"247":{"start":{"line":248,"column":0},"end":{"line":248,"column":49}},"248":{"start":{"line":249,"column":0},"end":{"line":249,"column":25}},"249":{"start":{"line":250,"column":0},"end":{"line":250,"column":10}},"250":{"start":{"line":251,"column":0},"end":{"line":251,"column":22}},"251":{"start":{"line":252,"column":0},"end":{"line":252,"column":30}},"252":{"start":{"line":253,"column":0},"end":{"line":253,"column":52}},"253":{"start":{"line":254,"column":0},"end":{"line":254,"column":25}},"254":{"start":{"line":255,"column":0},"end":{"line":255,"column":10}},"255":{"start":{"line":256,"column":0},"end":{"line":256,"column":16}},"256":{"start":{"line":257,"column":0},"end":{"line":257,"column":30}},"257":{"start":{"line":258,"column":0},"end":{"line":258,"column":270}},"258":{"start":{"line":259,"column":0},"end":{"line":259,"column":25}},"259":{"start":{"line":260,"column":0},"end":{"line":260,"column":10}},"260":{"start":{"line":261,"column":0},"end":{"line":261,"column":15}},"261":{"start":{"line":262,"column":0},"end":{"line":262,"column":30}},"262":{"start":{"line":263,"column":0},"end":{"line":263,"column":44}},"263":{"start":{"line":264,"column":0},"end":{"line":264,"column":25}},"264":{"start":{"line":265,"column":0},"end":{"line":265,"column":10}},"265":{"start":{"line":266,"column":0},"end":{"line":266,"column":15}},"266":{"start":{"line":267,"column":0},"end":{"line":267,"column":21}},"267":{"start":{"line":268,"column":0},"end":{"line":268,"column":30}},"268":{"start":{"line":269,"column":0},"end":{"line":269,"column":56}},"269":{"start":{"line":270,"column":0},"end":{"line":270,"column":25}},"270":{"start":{"line":271,"column":0},"end":{"line":271,"column":10}},"271":{"start":{"line":272,"column":0},"end":{"line":272,"column":19}},"272":{"start":{"line":273,"column":0},"end":{"line":273,"column":30}},"273":{"start":{"line":274,"column":0},"end":{"line":274,"column":66}},"274":{"start":{"line":275,"column":0},"end":{"line":275,"column":26}},"275":{"start":{"line":276,"column":0},"end":{"line":276,"column":25}},"276":{"start":{"line":277,"column":0},"end":{"line":277,"column":10}},"277":{"start":{"line":278,"column":0},"end":{"line":278,"column":27}},"278":{"start":{"line":279,"column":0},"end":{"line":279,"column":30}},"279":{"start":{"line":280,"column":0},"end":{"line":280,"column":52}},"280":{"start":{"line":281,"column":0},"end":{"line":281,"column":26}},"281":{"start":{"line":282,"column":0},"end":{"line":282,"column":25}},"282":{"start":{"line":283,"column":0},"end":{"line":283,"column":10}},"283":{"start":{"line":284,"column":0},"end":{"line":284,"column":18}},"284":{"start":{"line":285,"column":0},"end":{"line":285,"column":30}},"285":{"start":{"line":286,"column":0},"end":{"line":286,"column":19}},"286":{"start":{"line":287,"column":0},"end":{"line":287,"column":182}},"287":{"start":{"line":288,"column":0},"end":{"line":288,"column":25}},"288":{"start":{"line":289,"column":0},"end":{"line":289,"column":10}},"289":{"start":{"line":290,"column":0},"end":{"line":290,"column":19}},"290":{"start":{"line":291,"column":0},"end":{"line":291,"column":30}},"291":{"start":{"line":292,"column":0},"end":{"line":292,"column":100}},"292":{"start":{"line":293,"column":0},"end":{"line":293,"column":25}},"293":{"start":{"line":294,"column":0},"end":{"line":294,"column":10}},"294":{"start":{"line":295,"column":0},"end":{"line":295,"column":20}},"295":{"start":{"line":296,"column":0},"end":{"line":296,"column":30}},"296":{"start":{"line":297,"column":0},"end":{"line":297,"column":19}},"297":{"start":{"line":298,"column":0},"end":{"line":298,"column":119}},"298":{"start":{"line":299,"column":0},"end":{"line":299,"column":25}},"299":{"start":{"line":300,"column":0},"end":{"line":300,"column":10}},"300":{"start":{"line":301,"column":0},"end":{"line":301,"column":19}},"301":{"start":{"line":302,"column":0},"end":{"line":302,"column":21}},"302":{"start":{"line":303,"column":0},"end":{"line":303,"column":29}},"303":{"start":{"line":304,"column":0},"end":{"line":304,"column":33}},"304":{"start":{"line":305,"column":0},"end":{"line":305,"column":69}},"305":{"start":{"line":306,"column":0},"end":{"line":306,"column":25}},"306":{"start":{"line":307,"column":0},"end":{"line":307,"column":10}},"307":{"start":{"line":308,"column":0},"end":{"line":308,"column":8}},"308":{"start":{"line":309,"column":0},"end":{"line":309,"column":4}},"309":{"start":{"line":310,"column":0},"end":{"line":310,"column":1}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":2,"33":2,"34":2,"35":2,"36":2,"37":2,"38":2,"39":2,"40":2,"41":2,"42":2,"43":2,"44":0,"45":0,"46":2,"47":2,"48":2,"49":2,"50":2,"51":2,"52":2,"53":2,"54":0,"55":0,"56":0,"57":2,"58":2,"59":2,"60":2,"61":2,"62":2,"63":2,"64":0,"65":0,"66":0,"67":0,"68":2,"69":2,"70":0,"71":0,"72":2,"73":2,"74":2,"75":2,"76":2,"77":2,"78":2,"79":0,"80":0,"81":0,"82":0,"83":0,"84":0,"85":0,"86":0,"87":0,"88":0,"89":0,"90":0,"91":0,"92":0,"93":0,"94":0,"95":0,"96":0,"97":0,"98":0,"99":0,"100":0,"101":0,"102":0,"103":0,"104":0,"105":0,"106":0,"107":0,"108":0,"109":0,"110":0,"111":0,"112":0,"113":0,"114":0,"115":0,"116":0,"117":0,"118":0,"119":0,"120":0,"121":0,"122":0,"123":0,"124":0,"125":0,"126":0,"127":0,"128":0,"129":0,"130":0,"131":0,"132":0,"133":0,"134":0,"135":0,"136":0,"137":0,"138":0,"139":0,"140":0,"141":0,"142":0,"143":0,"144":0,"145":0,"146":0,"147":0,"148":0,"149":0,"150":0,"151":0,"152":0,"153":0,"154":0,"155":0,"156":0,"157":0,"158":0,"159":0,"160":0,"161":0,"162":0,"163":0,"164":0,"165":0,"166":0,"167":0,"168":0,"169":0,"170":0,"171":0,"172":0,"173":0,"174":0,"175":0,"176":0,"177":0,"178":0,"179":0,"180":0,"181":0,"182":0,"183":0,"184":0,"185":0,"186":0,"187":0,"188":0,"189":0,"190":0,"191":0,"192":0,"193":0,"194":0,"195":0,"196":0,"197":0,"198":0,"199":0,"200":0,"201":0,"202":0,"203":0,"204":0,"205":0,"206":0,"207":0,"208":0,"209":0,"210":0,"211":0,"212":0,"213":0,"214":0,"215":0,"216":0,"217":0,"218":0,"219":0,"220":0,"221":0,"222":0,"223":0,"224":0,"225":0,"226":0,"227":0,"228":0,"229":0,"230":0,"231":0,"232":0,"233":0,"234":0,"235":0,"236":2,"237":2,"238":0,"239":2,"240":2,"241":2,"242":2,"243":2,"244":2,"245":2,"246":2,"247":2,"248":2,"249":2,"250":2,"251":2,"252":2,"253":2,"254":2,"255":2,"256":2,"257":2,"258":2,"259":2,"260":2,"261":2,"262":2,"263":2,"264":2,"265":2,"266":2,"267":2,"268":2,"269":2,"270":2,"271":2,"272":2,"273":2,"274":2,"275":2,"276":2,"277":2,"278":2,"279":2,"280":2,"281":2,"282":2,"283":2,"284":2,"285":2,"286":2,"287":2,"288":2,"289":2,"290":2,"291":2,"292":2,"293":2,"294":2,"295":2,"296":2,"297":2,"298":2,"299":2,"300":2,"301":2,"302":2,"303":2,"304":2,"305":2,"306":2,"307":2,"308":2,"309":2},"branchMap":{"0":{"type":"branch","line":33,"loc":{"start":{"line":33,"column":0},"end":{"line":310,"column":1}},"locations":[{"start":{"line":33,"column":0},"end":{"line":310,"column":1}}]}},"b":{"0":[2]},"fnMap":{"0":{"name":"yargsBuilder","decl":{"start":{"line":33,"column":0},"end":{"line":310,"column":1}},"loc":{"start":{"line":33,"column":0},"end":{"line":310,"column":1}},"line":33},"1":{"name":"handler","decl":{"start":{"line":44,"column":17},"end":{"line":47,"column":9}},"loc":{"start":{"line":44,"column":17},"end":{"line":47,"column":9}},"line":44},"2":{"name":"handler","decl":{"start":{"line":54,"column":17},"end":{"line":58,"column":9}},"loc":{"start":{"line":54,"column":17},"end":{"line":58,"column":9}},"line":54},"3":{"name":"builder","decl":{"start":{"line":64,"column":17},"end":{"line":69,"column":12}},"loc":{"start":{"line":64,"column":17},"end":{"line":69,"column":12}},"line":64},"4":{"name":"handler","decl":{"start":{"line":70,"column":17},"end":{"line":73,"column":9}},"loc":{"start":{"line":70,"column":17},"end":{"line":73,"column":9}},"line":70},"5":{"name":"builder","decl":{"start":{"line":79,"column":17},"end":{"line":237,"column":25}},"loc":{"start":{"line":79,"column":17},"end":{"line":237,"column":25}},"line":79},"6":{"name":"handler","decl":{"start":{"line":238,"column":17},"end":{"line":240,"column":9}},"loc":{"start":{"line":238,"column":17},"end":{"line":240,"column":9}},"line":238}},"f":{"0":2,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0}},"/Users/scotttwiname/Projects/subql-main/packages/node/src/app.module.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/node/src/app.module.ts","all":true,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":40}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":59}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":50}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":44}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":63}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":53}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":48}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":0}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":9}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":12}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":23}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":33}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":31}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":29}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":16}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":15}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":4}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":18}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":2}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":25}}},"s":{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0},"branchMap":{"0":{"type":"branch","line":1,"loc":{"start":{"line":1,"column":0},"end":{"line":23,"column":25}},"locations":[{"start":{"line":1,"column":0},"end":{"line":23,"column":25}}]}},"b":{"0":[0]},"fnMap":{"0":{"name":"(empty-report)","decl":{"start":{"line":1,"column":0},"end":{"line":23,"column":25}},"loc":{"start":{"line":1,"column":0},"end":{"line":23,"column":25}},"line":1}},"f":{"0":0}},"/Users/scotttwiname/Projects/subql-main/packages/node/src/configure/NodeConfig.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/node/src/configure/NodeConfig.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":55}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":0}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":51}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":28}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":1}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":0}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":71}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":5}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":132}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":84}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":4}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":13}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":17}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":30}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":8}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":61}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":6}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":7}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":35}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":35}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":60}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":3}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":0}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":35}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":43}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":3}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":1}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":26,"23":26,"24":26,"25":1,"26":1,"27":118,"28":118,"29":1},"branchMap":{"0":{"type":"branch","line":22,"loc":{"start":{"line":22,"column":2},"end":{"line":25,"column":3}},"locations":[{"start":{"line":22,"column":2},"end":{"line":25,"column":3}}]},"1":{"type":"branch","line":27,"loc":{"start":{"line":27,"column":2},"end":{"line":29,"column":3}},"locations":[{"start":{"line":27,"column":2},"end":{"line":29,"column":3}}]}},"b":{"0":[26],"1":[118]},"fnMap":{"0":{"name":"SubstrateNodeConfig","decl":{"start":{"line":22,"column":2},"end":{"line":25,"column":3}},"loc":{"start":{"line":22,"column":2},"end":{"line":25,"column":3}},"line":22},"1":{"name":"get skipTransactions","decl":{"start":{"line":27,"column":2},"end":{"line":29,"column":3}},"loc":{"start":{"line":27,"column":2},"end":{"line":29,"column":3}},"line":27}},"f":{"0":26,"1":118}},"/Users/scotttwiname/Projects/subql-main/packages/node/src/configure/SubqueryProject.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/node/src/configure/SubqueryProject.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":28}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":44}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":56}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":47}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":8}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":32}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":28}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":23}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":14}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":23}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":13}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":33}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":8}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":34}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":23}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":26}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":19}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":26}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":8}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":22}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":28}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":27}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":25}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":22}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":71}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":53}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":0}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":34}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":40}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":49}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":0}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":66}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":0}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":53}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":36}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":29}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":29}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":0}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":62}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":18}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":26}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":17}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":4}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":2}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":0}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":39}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":67}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":2}},"51":{"start":{"line":52,"column":0},"end":{"line":52,"column":0}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":13}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":58}},"54":{"start":{"line":55,"column":0},"end":{"line":55,"column":37}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":0}},"56":{"start":{"line":57,"column":0},"end":{"line":57,"column":14}},"57":{"start":{"line":58,"column":0},"end":{"line":58,"column":24}},"58":{"start":{"line":59,"column":0},"end":{"line":59,"column":26}},"59":{"start":{"line":60,"column":0},"end":{"line":60,"column":45}},"60":{"start":{"line":61,"column":0},"end":{"line":61,"column":38}},"61":{"start":{"line":62,"column":0},"end":{"line":62,"column":35}},"62":{"start":{"line":63,"column":0},"end":{"line":63,"column":49}},"63":{"start":{"line":64,"column":0},"end":{"line":64,"column":42}},"64":{"start":{"line":65,"column":0},"end":{"line":65,"column":34}},"65":{"start":{"line":66,"column":0},"end":{"line":66,"column":36}},"66":{"start":{"line":67,"column":0},"end":{"line":67,"column":5}},"67":{"start":{"line":68,"column":0},"end":{"line":68,"column":36}},"68":{"start":{"line":69,"column":0},"end":{"line":69,"column":3}},"69":{"start":{"line":70,"column":0},"end":{"line":70,"column":0}},"70":{"start":{"line":71,"column":0},"end":{"line":71,"column":43}},"71":{"start":{"line":72,"column":0},"end":{"line":72,"column":29}},"72":{"start":{"line":73,"column":0},"end":{"line":73,"column":3}},"73":{"start":{"line":74,"column":0},"end":{"line":74,"column":0}},"74":{"start":{"line":75,"column":0},"end":{"line":75,"column":28}},"75":{"start":{"line":76,"column":0},"end":{"line":76,"column":52}},"76":{"start":{"line":77,"column":0},"end":{"line":77,"column":20}},"77":{"start":{"line":78,"column":0},"end":{"line":78,"column":62}},"78":{"start":{"line":79,"column":0},"end":{"line":79,"column":23}},"79":{"start":{"line":80,"column":0},"end":{"line":80,"column":19}},"80":{"start":{"line":81,"column":0},"end":{"line":81,"column":18}},"81":{"start":{"line":82,"column":0},"end":{"line":82,"column":33}},"82":{"start":{"line":83,"column":0},"end":{"line":83,"column":6}},"83":{"start":{"line":84,"column":0},"end":{"line":84,"column":3}},"84":{"start":{"line":85,"column":0},"end":{"line":85,"column":0}},"85":{"start":{"line":86,"column":0},"end":{"line":86,"column":22}},"86":{"start":{"line":87,"column":0},"end":{"line":87,"column":17}},"87":{"start":{"line":88,"column":0},"end":{"line":88,"column":25}},"88":{"start":{"line":89,"column":0},"end":{"line":89,"column":19}},"89":{"start":{"line":90,"column":0},"end":{"line":90,"column":77}},"90":{"start":{"line":91,"column":0},"end":{"line":91,"column":55}},"91":{"start":{"line":92,"column":0},"end":{"line":92,"column":31}},"92":{"start":{"line":93,"column":0},"end":{"line":93,"column":49}},"93":{"start":{"line":94,"column":0},"end":{"line":94,"column":84}},"94":{"start":{"line":95,"column":0},"end":{"line":95,"column":44}},"95":{"start":{"line":96,"column":0},"end":{"line":96,"column":0}},"96":{"start":{"line":97,"column":0},"end":{"line":97,"column":73}},"97":{"start":{"line":98,"column":0},"end":{"line":98,"column":73}},"98":{"start":{"line":99,"column":0},"end":{"line":99,"column":11}},"99":{"start":{"line":100,"column":0},"end":{"line":100,"column":32}},"100":{"start":{"line":101,"column":0},"end":{"line":101,"column":65}},"101":{"start":{"line":102,"column":0},"end":{"line":102,"column":6}},"102":{"start":{"line":103,"column":0},"end":{"line":103,"column":0}},"103":{"start":{"line":104,"column":0},"end":{"line":104,"column":64}},"104":{"start":{"line":105,"column":0},"end":{"line":105,"column":0}},"105":{"start":{"line":106,"column":0},"end":{"line":106,"column":29}},"106":{"start":{"line":107,"column":0},"end":{"line":107,"column":28}},"107":{"start":{"line":108,"column":0},"end":{"line":108,"column":5}},"108":{"start":{"line":109,"column":0},"end":{"line":109,"column":0}},"109":{"start":{"line":110,"column":0},"end":{"line":110,"column":39}},"110":{"start":{"line":111,"column":0},"end":{"line":111,"column":24}},"111":{"start":{"line":112,"column":0},"end":{"line":112,"column":13}},"112":{"start":{"line":113,"column":0},"end":{"line":113,"column":11}},"113":{"start":{"line":114,"column":0},"end":{"line":114,"column":11}},"114":{"start":{"line":115,"column":0},"end":{"line":115,"column":23}},"115":{"start":{"line":116,"column":0},"end":{"line":116,"column":6}},"116":{"start":{"line":117,"column":0},"end":{"line":117,"column":3}},"117":{"start":{"line":118,"column":0},"end":{"line":118,"column":1}},"118":{"start":{"line":119,"column":0},"end":{"line":119,"column":0}},"119":{"start":{"line":120,"column":0},"end":{"line":120,"column":63}},"120":{"start":{"line":121,"column":0},"end":{"line":121,"column":47}},"121":{"start":{"line":122,"column":0},"end":{"line":122,"column":74}},"122":{"start":{"line":123,"column":0},"end":{"line":123,"column":55}},"123":{"start":{"line":124,"column":0},"end":{"line":124,"column":42}},"124":{"start":{"line":125,"column":0},"end":{"line":125,"column":3}},"125":{"start":{"line":126,"column":0},"end":{"line":126,"column":29}},"126":{"start":{"line":127,"column":0},"end":{"line":127,"column":17}},"127":{"start":{"line":128,"column":0},"end":{"line":128,"column":1}},"128":{"start":{"line":129,"column":0},"end":{"line":129,"column":0}},"129":{"start":{"line":130,"column":0},"end":{"line":130,"column":50}},"130":{"start":{"line":131,"column":0},"end":{"line":131,"column":0}},"131":{"start":{"line":132,"column":0},"end":{"line":132,"column":43}},"132":{"start":{"line":133,"column":0},"end":{"line":133,"column":36}},"133":{"start":{"line":134,"column":0},"end":{"line":134,"column":17}},"134":{"start":{"line":135,"column":0},"end":{"line":135,"column":15}},"135":{"start":{"line":136,"column":0},"end":{"line":136,"column":15}},"136":{"start":{"line":137,"column":0},"end":{"line":137,"column":53}},"137":{"start":{"line":138,"column":0},"end":{"line":138,"column":29}},"138":{"start":{"line":139,"column":0},"end":{"line":139,"column":61}},"139":{"start":{"line":140,"column":0},"end":{"line":140,"column":74}},"140":{"start":{"line":141,"column":0},"end":{"line":141,"column":3}},"141":{"start":{"line":142,"column":0},"end":{"line":142,"column":0}},"142":{"start":{"line":143,"column":0},"end":{"line":143,"column":34}},"143":{"start":{"line":144,"column":0},"end":{"line":144,"column":31}},"144":{"start":{"line":145,"column":0},"end":{"line":145,"column":24}},"145":{"start":{"line":146,"column":0},"end":{"line":146,"column":5}},"146":{"start":{"line":147,"column":0},"end":{"line":147,"column":0}},"147":{"start":{"line":148,"column":0},"end":{"line":148,"column":9}},"148":{"start":{"line":149,"column":0},"end":{"line":149,"column":21}},"149":{"start":{"line":150,"column":0},"end":{"line":150,"column":14}},"150":{"start":{"line":151,"column":0},"end":{"line":151,"column":84}},"151":{"start":{"line":152,"column":0},"end":{"line":152,"column":6}},"152":{"start":{"line":153,"column":0},"end":{"line":153,"column":4}},"153":{"start":{"line":154,"column":0},"end":{"line":154,"column":0}},"154":{"start":{"line":155,"column":0},"end":{"line":155,"column":27}},"155":{"start":{"line":156,"column":0},"end":{"line":156,"column":7}},"156":{"start":{"line":157,"column":0},"end":{"line":157,"column":69}},"157":{"start":{"line":158,"column":0},"end":{"line":158,"column":15}},"158":{"start":{"line":159,"column":0},"end":{"line":159,"column":20}},"159":{"start":{"line":160,"column":0},"end":{"line":160,"column":71}},"160":{"start":{"line":161,"column":0},"end":{"line":161,"column":6}},"161":{"start":{"line":162,"column":0},"end":{"line":162,"column":3}},"162":{"start":{"line":163,"column":0},"end":{"line":163,"column":53}},"163":{"start":{"line":164,"column":0},"end":{"line":164,"column":0}},"164":{"start":{"line":165,"column":0},"end":{"line":165,"column":55}},"165":{"start":{"line":166,"column":0},"end":{"line":166,"column":80}},"166":{"start":{"line":167,"column":0},"end":{"line":167,"column":16}},"167":{"start":{"line":168,"column":0},"end":{"line":168,"column":0}},"168":{"start":{"line":169,"column":0},"end":{"line":169,"column":52}},"169":{"start":{"line":170,"column":0},"end":{"line":170,"column":32}},"170":{"start":{"line":171,"column":0},"end":{"line":171,"column":11}},"171":{"start":{"line":172,"column":0},"end":{"line":172,"column":9}},"172":{"start":{"line":173,"column":0},"end":{"line":173,"column":15}},"173":{"start":{"line":174,"column":0},"end":{"line":174,"column":4}},"174":{"start":{"line":175,"column":0},"end":{"line":175,"column":0}},"175":{"start":{"line":176,"column":0},"end":{"line":176,"column":47}},"176":{"start":{"line":177,"column":0},"end":{"line":177,"column":30}},"177":{"start":{"line":178,"column":0},"end":{"line":178,"column":9}},"178":{"start":{"line":179,"column":0},"end":{"line":179,"column":11}},"179":{"start":{"line":180,"column":0},"end":{"line":180,"column":15}},"180":{"start":{"line":181,"column":0},"end":{"line":181,"column":4}},"181":{"start":{"line":182,"column":0},"end":{"line":182,"column":40}},"182":{"start":{"line":183,"column":0},"end":{"line":183,"column":9}},"183":{"start":{"line":184,"column":0},"end":{"line":184,"column":56}},"184":{"start":{"line":185,"column":0},"end":{"line":185,"column":14}},"185":{"start":{"line":186,"column":0},"end":{"line":186,"column":91}},"186":{"start":{"line":187,"column":0},"end":{"line":187,"column":6}},"187":{"start":{"line":188,"column":0},"end":{"line":188,"column":4}},"188":{"start":{"line":189,"column":0},"end":{"line":189,"column":0}},"189":{"start":{"line":190,"column":0},"end":{"line":190,"column":29}},"190":{"start":{"line":191,"column":0},"end":{"line":191,"column":78}},"191":{"start":{"line":192,"column":0},"end":{"line":192,"column":9}},"192":{"start":{"line":193,"column":0},"end":{"line":193,"column":12}},"193":{"start":{"line":194,"column":0},"end":{"line":194,"column":16}},"194":{"start":{"line":195,"column":0},"end":{"line":195,"column":11}},"195":{"start":{"line":196,"column":0},"end":{"line":196,"column":14}},"196":{"start":{"line":197,"column":0},"end":{"line":197,"column":15}},"197":{"start":{"line":198,"column":0},"end":{"line":198,"column":11}},"198":{"start":{"line":199,"column":0},"end":{"line":199,"column":27}},"199":{"start":{"line":200,"column":0},"end":{"line":200,"column":4}},"200":{"start":{"line":201,"column":0},"end":{"line":201,"column":1}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"38":1,"39":1,"40":1,"41":1,"42":1,"43":1,"44":1,"45":1,"46":1,"47":1,"48":1,"49":0,"50":0,"51":1,"52":1,"53":1,"54":1,"55":1,"56":1,"57":14,"58":14,"59":14,"60":14,"61":14,"62":14,"63":14,"64":14,"65":14,"66":14,"67":14,"68":14,"69":1,"70":1,"71":69,"72":69,"73":1,"74":1,"75":35,"76":35,"77":35,"78":35,"79":35,"80":35,"81":35,"82":35,"83":35,"84":1,"85":1,"86":41,"87":41,"88":41,"89":41,"90":41,"91":41,"92":41,"93":41,"94":41,"95":41,"96":41,"97":41,"98":41,"99":41,"100":41,"101":41,"102":41,"103":41,"104":41,"105":41,"106":0,"107":0,"108":41,"109":41,"110":41,"111":41,"112":41,"113":41,"114":41,"115":41,"116":41,"117":1,"118":1,"119":41,"120":41,"121":0,"122":41,"123":1,"124":1,"125":41,"126":41,"127":41,"128":1,"129":1,"130":1,"131":41,"132":41,"133":41,"134":41,"135":41,"136":41,"137":41,"138":41,"139":4,"140":4,"141":41,"142":41,"143":41,"144":41,"145":41,"146":41,"147":41,"148":41,"149":41,"150":41,"151":41,"152":41,"153":41,"154":41,"155":41,"156":41,"157":41,"158":0,"159":0,"160":0,"161":0,"162":41,"163":41,"164":41,"165":41,"166":41,"167":41,"168":41,"169":41,"170":41,"171":41,"172":41,"173":41,"174":41,"175":41,"176":41,"177":41,"178":41,"179":41,"180":41,"181":41,"182":41,"183":41,"184":41,"185":41,"186":41,"187":41,"188":41,"189":41,"190":41,"191":41,"192":41,"193":41,"194":41,"195":41,"196":41,"197":41,"198":41,"199":41,"200":41},"branchMap":{"0":{"type":"branch","line":57,"loc":{"start":{"line":57,"column":2},"end":{"line":69,"column":3}},"locations":[{"start":{"line":57,"column":2},"end":{"line":69,"column":3}}]},"1":{"type":"branch","line":71,"loc":{"start":{"line":71,"column":2},"end":{"line":73,"column":3}},"locations":[{"start":{"line":71,"column":2},"end":{"line":73,"column":3}}]},"2":{"type":"branch","line":75,"loc":{"start":{"line":75,"column":2},"end":{"line":84,"column":3}},"locations":[{"start":{"line":75,"column":2},"end":{"line":84,"column":3}}]},"3":{"type":"branch","line":86,"loc":{"start":{"line":86,"column":9},"end":{"line":117,"column":3}},"locations":[{"start":{"line":86,"column":9},"end":{"line":117,"column":3}}]},"4":{"type":"branch","line":106,"loc":{"start":{"line":106,"column":28},"end":{"line":108,"column":5}},"locations":[{"start":{"line":106,"column":28},"end":{"line":108,"column":5}}]},"5":{"type":"branch","line":120,"loc":{"start":{"line":120,"column":0},"end":{"line":128,"column":1}},"locations":[{"start":{"line":120,"column":0},"end":{"line":128,"column":1}}]},"6":{"type":"branch","line":121,"loc":{"start":{"line":121,"column":21},"end":{"line":121,"column":44}},"locations":[{"start":{"line":121,"column":21},"end":{"line":121,"column":44}}]},"7":{"type":"branch","line":121,"loc":{"start":{"line":121,"column":46},"end":{"line":123,"column":9}},"locations":[{"start":{"line":121,"column":46},"end":{"line":123,"column":9}}]},"8":{"type":"branch","line":123,"loc":{"start":{"line":123,"column":32},"end":{"line":123,"column":52}},"locations":[{"start":{"line":123,"column":32},"end":{"line":123,"column":52}}]},"9":{"type":"branch","line":123,"loc":{"start":{"line":123,"column":54},"end":{"line":125,"column":3}},"locations":[{"start":{"line":123,"column":54},"end":{"line":125,"column":3}}]},"10":{"type":"branch","line":132,"loc":{"start":{"line":132,"column":0},"end":{"line":201,"column":1}},"locations":[{"start":{"line":132,"column":0},"end":{"line":201,"column":1}}]},"11":{"type":"branch","line":139,"loc":{"start":{"line":139,"column":60},"end":{"line":141,"column":3}},"locations":[{"start":{"line":139,"column":60},"end":{"line":141,"column":3}}]},"12":{"type":"branch","line":158,"loc":{"start":{"line":158,"column":4},"end":{"line":162,"column":3}},"locations":[{"start":{"line":158,"column":4},"end":{"line":162,"column":3}}]},"13":{"type":"branch","line":166,"loc":{"start":{"line":166,"column":4},"end":{"line":167,"column":5}},"locations":[{"start":{"line":166,"column":4},"end":{"line":167,"column":5}}]},"14":{"type":"branch","line":167,"loc":{"start":{"line":167,"column":4},"end":{"line":167,"column":15}},"locations":[{"start":{"line":167,"column":4},"end":{"line":167,"column":15}}]},"15":{"type":"branch","line":191,"loc":{"start":{"line":191,"column":16},"end":{"line":191,"column":29}},"locations":[{"start":{"line":191,"column":16},"end":{"line":191,"column":29}}]},"16":{"type":"branch","line":191,"loc":{"start":{"line":191,"column":30},"end":{"line":191,"column":36}},"locations":[{"start":{"line":191,"column":30},"end":{"line":191,"column":36}}]}},"b":{"0":[14],"1":[69],"2":[35],"3":[41],"4":[0],"5":[41],"6":[40],"7":[0],"8":[1],"9":[1],"10":[41],"11":[4],"12":[0],"13":[6],"14":[35],"15":[4],"16":[37]},"fnMap":{"0":{"name":"NOT_SUPPORT","decl":{"start":{"line":49,"column":20},"end":{"line":51,"column":2}},"loc":{"start":{"line":49,"column":20},"end":{"line":51,"column":2}},"line":49},"1":{"name":"SubqueryProject","decl":{"start":{"line":57,"column":2},"end":{"line":69,"column":3}},"loc":{"start":{"line":57,"column":2},"end":{"line":69,"column":3}},"line":57},"2":{"name":"get dataSources","decl":{"start":{"line":71,"column":2},"end":{"line":73,"column":3}},"loc":{"start":{"line":71,"column":2},"end":{"line":73,"column":3}},"line":71},"3":{"name":"applyCronTimestamps","decl":{"start":{"line":75,"column":2},"end":{"line":84,"column":3}},"loc":{"start":{"line":75,"column":2},"end":{"line":84,"column":3}},"line":75},"4":{"name":"create","decl":{"start":{"line":86,"column":9},"end":{"line":117,"column":3}},"loc":{"start":{"line":86,"column":9},"end":{"line":117,"column":3}},"line":86},"5":{"name":"processChainId","decl":{"start":{"line":120,"column":0},"end":{"line":128,"column":1}},"loc":{"start":{"line":120,"column":0},"end":{"line":128,"column":1}},"line":120},"6":{"name":"loadProjectFromManifestBase","decl":{"start":{"line":132,"column":0},"end":{"line":201,"column":1}},"loc":{"start":{"line":132,"column":0},"end":{"line":201,"column":1}},"line":132}},"f":{"0":0,"1":14,"2":69,"3":35,"4":41,"5":41,"6":41}},"/Users/scotttwiname/Projects/subql-main/packages/node/src/configure/configure.module.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/node/src/configure/configure.module.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":63}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":59}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":40}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":52}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":0}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":44}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":0}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":9}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":11}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":30}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":39}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":27}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":29}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":6}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":34}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":40}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":11}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":51}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":47}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":12}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":6}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":3}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":51}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":72}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":0}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":12}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":30}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":18}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":9}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":30}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":31}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":10}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":9}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":38}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":28}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":10}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":9}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":44}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":28}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":10}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":9}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":26}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":25}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":10}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":8}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":16}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":19}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":27}},"51":{"start":{"line":52,"column":0},"end":{"line":52,"column":33}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":15}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":8}},"54":{"start":{"line":55,"column":0},"end":{"line":55,"column":6}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":3}},"56":{"start":{"line":57,"column":0},"end":{"line":57,"column":1}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":1,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":1},"branchMap":{},"b":{},"fnMap":{"0":{"name":"getInstance","decl":{"start":{"line":14,"column":9},"end":{"line":25,"column":3}},"loc":{"start":{"line":14,"column":9},"end":{"line":25,"column":3}},"line":14},"1":{"name":"register","decl":{"start":{"line":26,"column":9},"end":{"line":56,"column":3}},"loc":{"start":{"line":26,"column":9},"end":{"line":56,"column":3}},"line":26}},"f":{"0":0,"1":0}},"/Users/scotttwiname/Projects/subql-main/packages/node/src/indexer/api.service.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/node/src/indexer/api.service.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":75}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":54}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":43}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":54}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":68}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":70}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":8}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":15}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":12}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":13}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":15}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":24}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":31}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":9}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":26}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":62}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":63}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":55}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":52}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":8}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":23}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":12}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":15}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":33}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":65}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":0}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":45}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":48}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":2}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":0}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":125}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":33}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":26}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":0}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":32}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":0}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":13}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":23}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":25}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":15}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":10}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":56}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":3}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":34}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":1}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":41}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":76}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":35}},"51":{"start":{"line":52,"column":0},"end":{"line":52,"column":37}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":0}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":42}},"54":{"start":{"line":55,"column":0},"end":{"line":55,"column":0}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":14}},"56":{"start":{"line":57,"column":0},"end":{"line":57,"column":65}},"57":{"start":{"line":58,"column":0},"end":{"line":58,"column":71}},"58":{"start":{"line":59,"column":0},"end":{"line":59,"column":32}},"59":{"start":{"line":60,"column":0},"end":{"line":60,"column":27}},"60":{"start":{"line":61,"column":0},"end":{"line":61,"column":5}},"61":{"start":{"line":62,"column":0},"end":{"line":62,"column":47}},"62":{"start":{"line":63,"column":0},"end":{"line":63,"column":58}},"63":{"start":{"line":64,"column":0},"end":{"line":64,"column":0}},"64":{"start":{"line":65,"column":0},"end":{"line":65,"column":31}},"65":{"start":{"line":66,"column":0},"end":{"line":66,"column":3}},"66":{"start":{"line":67,"column":0},"end":{"line":67,"column":0}},"67":{"start":{"line":68,"column":0},"end":{"line":68,"column":48}},"68":{"start":{"line":69,"column":0},"end":{"line":69,"column":61}},"69":{"start":{"line":70,"column":0},"end":{"line":70,"column":3}},"70":{"start":{"line":71,"column":0},"end":{"line":71,"column":0}},"71":{"start":{"line":72,"column":0},"end":{"line":72,"column":37}},"72":{"start":{"line":73,"column":0},"end":{"line":73,"column":28}},"73":{"start":{"line":74,"column":0},"end":{"line":74,"column":9}},"74":{"start":{"line":75,"column":0},"end":{"line":75,"column":43}},"75":{"start":{"line":76,"column":0},"end":{"line":76,"column":37}},"76":{"start":{"line":77,"column":0},"end":{"line":77,"column":0}},"77":{"start":{"line":78,"column":0},"end":{"line":78,"column":51}},"78":{"start":{"line":79,"column":0},"end":{"line":79,"column":70}},"79":{"start":{"line":80,"column":0},"end":{"line":80,"column":7}},"80":{"start":{"line":81,"column":0},"end":{"line":81,"column":17}},"81":{"start":{"line":82,"column":0},"end":{"line":82,"column":22}},"82":{"start":{"line":83,"column":0},"end":{"line":83,"column":22}},"83":{"start":{"line":84,"column":0},"end":{"line":84,"column":5}},"84":{"start":{"line":85,"column":0},"end":{"line":85,"column":0}},"85":{"start":{"line":86,"column":0},"end":{"line":86,"column":21}},"86":{"start":{"line":87,"column":0},"end":{"line":87,"column":48}},"87":{"start":{"line":88,"column":0},"end":{"line":88,"column":5}},"88":{"start":{"line":89,"column":0},"end":{"line":89,"column":0}},"89":{"start":{"line":90,"column":0},"end":{"line":90,"column":33}},"90":{"start":{"line":91,"column":0},"end":{"line":91,"column":14}},"91":{"start":{"line":92,"column":0},"end":{"line":92,"column":24}},"92":{"start":{"line":93,"column":0},"end":{"line":93,"column":19}},"93":{"start":{"line":94,"column":0},"end":{"line":94,"column":72}},"94":{"start":{"line":95,"column":0},"end":{"line":95,"column":21}},"95":{"start":{"line":96,"column":0},"end":{"line":96,"column":11}},"96":{"start":{"line":97,"column":0},"end":{"line":97,"column":18}},"97":{"start":{"line":98,"column":0},"end":{"line":98,"column":65}},"98":{"start":{"line":99,"column":0},"end":{"line":99,"column":51}},"99":{"start":{"line":100,"column":0},"end":{"line":100,"column":41}},"100":{"start":{"line":101,"column":0},"end":{"line":101,"column":42}},"101":{"start":{"line":102,"column":0},"end":{"line":102,"column":8}},"102":{"start":{"line":103,"column":0},"end":{"line":103,"column":25}},"103":{"start":{"line":104,"column":0},"end":{"line":104,"column":78}},"104":{"start":{"line":105,"column":0},"end":{"line":105,"column":41}},"105":{"start":{"line":106,"column":0},"end":{"line":106,"column":35}},"106":{"start":{"line":107,"column":0},"end":{"line":107,"column":61}},"107":{"start":{"line":108,"column":0},"end":{"line":108,"column":21}},"108":{"start":{"line":109,"column":0},"end":{"line":109,"column":28}},"109":{"start":{"line":110,"column":0},"end":{"line":110,"column":31}},"110":{"start":{"line":111,"column":0},"end":{"line":111,"column":13}},"111":{"start":{"line":112,"column":0},"end":{"line":112,"column":11}},"112":{"start":{"line":113,"column":0},"end":{"line":113,"column":38}},"113":{"start":{"line":114,"column":0},"end":{"line":114,"column":61}},"114":{"start":{"line":115,"column":0},"end":{"line":115,"column":21}},"115":{"start":{"line":116,"column":0},"end":{"line":116,"column":28}},"116":{"start":{"line":117,"column":0},"end":{"line":117,"column":31}},"117":{"start":{"line":118,"column":0},"end":{"line":118,"column":13}},"118":{"start":{"line":119,"column":0},"end":{"line":119,"column":11}},"119":{"start":{"line":120,"column":0},"end":{"line":120,"column":8}},"120":{"start":{"line":121,"column":0},"end":{"line":121,"column":6}},"121":{"start":{"line":122,"column":0},"end":{"line":122,"column":0}},"122":{"start":{"line":123,"column":0},"end":{"line":123,"column":16}},"123":{"start":{"line":124,"column":0},"end":{"line":124,"column":3}},"124":{"start":{"line":125,"column":0},"end":{"line":125,"column":0}},"125":{"start":{"line":126,"column":0},"end":{"line":126,"column":31}},"126":{"start":{"line":127,"column":0},"end":{"line":127,"column":64}},"127":{"start":{"line":128,"column":0},"end":{"line":128,"column":28}},"128":{"start":{"line":129,"column":0},"end":{"line":129,"column":60}},"129":{"start":{"line":130,"column":0},"end":{"line":130,"column":0}},"130":{"start":{"line":131,"column":0},"end":{"line":131,"column":43}},"131":{"start":{"line":132,"column":0},"end":{"line":132,"column":30}},"132":{"start":{"line":133,"column":0},"end":{"line":133,"column":20}},"133":{"start":{"line":134,"column":0},"end":{"line":134,"column":88}},"134":{"start":{"line":135,"column":0},"end":{"line":135,"column":10}},"135":{"start":{"line":136,"column":0},"end":{"line":136,"column":14}},"136":{"start":{"line":137,"column":0},"end":{"line":137,"column":20}},"137":{"start":{"line":138,"column":0},"end":{"line":138,"column":100}},"138":{"start":{"line":139,"column":0},"end":{"line":139,"column":10}},"139":{"start":{"line":140,"column":0},"end":{"line":140,"column":7}},"140":{"start":{"line":141,"column":0},"end":{"line":141,"column":12}},"141":{"start":{"line":142,"column":0},"end":{"line":142,"column":30}},"142":{"start":{"line":143,"column":0},"end":{"line":143,"column":20}},"143":{"start":{"line":144,"column":0},"end":{"line":144,"column":137}},"144":{"start":{"line":145,"column":0},"end":{"line":145,"column":10}},"145":{"start":{"line":146,"column":0},"end":{"line":146,"column":14}},"146":{"start":{"line":147,"column":0},"end":{"line":147,"column":53}},"147":{"start":{"line":148,"column":0},"end":{"line":148,"column":7}},"148":{"start":{"line":149,"column":0},"end":{"line":149,"column":5}},"149":{"start":{"line":150,"column":0},"end":{"line":150,"column":0}},"150":{"start":{"line":151,"column":0},"end":{"line":151,"column":38}},"151":{"start":{"line":152,"column":0},"end":{"line":152,"column":45}},"152":{"start":{"line":153,"column":0},"end":{"line":153,"column":41}},"153":{"start":{"line":154,"column":0},"end":{"line":154,"column":0}},"154":{"start":{"line":155,"column":0},"end":{"line":155,"column":36}},"155":{"start":{"line":156,"column":0},"end":{"line":156,"column":46}},"156":{"start":{"line":157,"column":0},"end":{"line":157,"column":18}},"157":{"start":{"line":158,"column":0},"end":{"line":158,"column":24}},"158":{"start":{"line":159,"column":0},"end":{"line":159,"column":29}},"159":{"start":{"line":160,"column":0},"end":{"line":160,"column":8}},"160":{"start":{"line":161,"column":0},"end":{"line":161,"column":12}},"161":{"start":{"line":162,"column":0},"end":{"line":162,"column":43}},"162":{"start":{"line":163,"column":0},"end":{"line":163,"column":5}},"163":{"start":{"line":164,"column":0},"end":{"line":164,"column":3}},"164":{"start":{"line":165,"column":0},"end":{"line":165,"column":0}},"165":{"start":{"line":166,"column":0},"end":{"line":166,"column":25}},"166":{"start":{"line":167,"column":0},"end":{"line":167,"column":26}},"167":{"start":{"line":168,"column":0},"end":{"line":168,"column":3}},"168":{"start":{"line":169,"column":0},"end":{"line":169,"column":0}},"169":{"start":{"line":170,"column":0},"end":{"line":170,"column":22}},"170":{"start":{"line":171,"column":0},"end":{"line":171,"column":19}},"171":{"start":{"line":172,"column":0},"end":{"line":172,"column":35}},"172":{"start":{"line":173,"column":0},"end":{"line":173,"column":21}},"173":{"start":{"line":174,"column":0},"end":{"line":174,"column":51}},"174":{"start":{"line":175,"column":0},"end":{"line":175,"column":55}},"175":{"start":{"line":176,"column":0},"end":{"line":176,"column":0}},"176":{"start":{"line":177,"column":0},"end":{"line":177,"column":25}},"177":{"start":{"line":178,"column":0},"end":{"line":178,"column":32}},"178":{"start":{"line":179,"column":0},"end":{"line":179,"column":28}},"179":{"start":{"line":180,"column":0},"end":{"line":180,"column":21}},"180":{"start":{"line":181,"column":0},"end":{"line":181,"column":16}},"181":{"start":{"line":182,"column":0},"end":{"line":182,"column":33}},"182":{"start":{"line":183,"column":0},"end":{"line":183,"column":17}},"183":{"start":{"line":184,"column":0},"end":{"line":184,"column":3}},"184":{"start":{"line":185,"column":0},"end":{"line":185,"column":0}},"185":{"start":{"line":186,"column":0},"end":{"line":186,"column":62}},"186":{"start":{"line":187,"column":0},"end":{"line":187,"column":46}},"187":{"start":{"line":188,"column":0},"end":{"line":188,"column":38}},"188":{"start":{"line":189,"column":0},"end":{"line":189,"column":57}},"189":{"start":{"line":190,"column":0},"end":{"line":190,"column":31}},"190":{"start":{"line":191,"column":0},"end":{"line":191,"column":55}},"191":{"start":{"line":192,"column":0},"end":{"line":192,"column":39}},"192":{"start":{"line":193,"column":0},"end":{"line":193,"column":8}},"193":{"start":{"line":194,"column":0},"end":{"line":194,"column":27}},"194":{"start":{"line":195,"column":0},"end":{"line":195,"column":29}},"195":{"start":{"line":196,"column":0},"end":{"line":196,"column":65}},"196":{"start":{"line":197,"column":0},"end":{"line":197,"column":0}},"197":{"start":{"line":198,"column":0},"end":{"line":198,"column":48}},"198":{"start":{"line":199,"column":0},"end":{"line":199,"column":38}},"199":{"start":{"line":200,"column":0},"end":{"line":200,"column":0}},"200":{"start":{"line":201,"column":0},"end":{"line":201,"column":30}},"201":{"start":{"line":202,"column":0},"end":{"line":202,"column":53}},"202":{"start":{"line":203,"column":0},"end":{"line":203,"column":61}},"203":{"start":{"line":204,"column":0},"end":{"line":204,"column":72}},"204":{"start":{"line":205,"column":0},"end":{"line":205,"column":30}},"205":{"start":{"line":206,"column":0},"end":{"line":206,"column":121}},"206":{"start":{"line":207,"column":0},"end":{"line":207,"column":16}},"207":{"start":{"line":208,"column":0},"end":{"line":208,"column":13}},"208":{"start":{"line":209,"column":0},"end":{"line":209,"column":11}},"209":{"start":{"line":210,"column":0},"end":{"line":210,"column":26}},"210":{"start":{"line":211,"column":0},"end":{"line":211,"column":16}},"211":{"start":{"line":212,"column":0},"end":{"line":212,"column":53}},"212":{"start":{"line":213,"column":0},"end":{"line":213,"column":59}},"213":{"start":{"line":214,"column":0},"end":{"line":214,"column":20}},"214":{"start":{"line":215,"column":0},"end":{"line":215,"column":64}},"215":{"start":{"line":216,"column":0},"end":{"line":216,"column":37}},"216":{"start":{"line":217,"column":0},"end":{"line":217,"column":16}},"217":{"start":{"line":218,"column":0},"end":{"line":218,"column":75}},"218":{"start":{"line":219,"column":0},"end":{"line":219,"column":60}},"219":{"start":{"line":220,"column":0},"end":{"line":220,"column":32}},"220":{"start":{"line":221,"column":0},"end":{"line":221,"column":128}},"221":{"start":{"line":222,"column":0},"end":{"line":222,"column":18}},"222":{"start":{"line":223,"column":0},"end":{"line":223,"column":15}},"223":{"start":{"line":224,"column":0},"end":{"line":224,"column":13}},"224":{"start":{"line":225,"column":0},"end":{"line":225,"column":11}},"225":{"start":{"line":226,"column":0},"end":{"line":226,"column":0}},"226":{"start":{"line":227,"column":0},"end":{"line":227,"column":40}},"227":{"start":{"line":228,"column":0},"end":{"line":228,"column":46}},"228":{"start":{"line":229,"column":0},"end":{"line":229,"column":51}},"229":{"start":{"line":230,"column":0},"end":{"line":230,"column":33}},"230":{"start":{"line":231,"column":0},"end":{"line":231,"column":19}},"231":{"start":{"line":232,"column":0},"end":{"line":232,"column":7}},"232":{"start":{"line":233,"column":0},"end":{"line":233,"column":5}},"233":{"start":{"line":234,"column":0},"end":{"line":234,"column":0}},"234":{"start":{"line":235,"column":0},"end":{"line":235,"column":70}},"235":{"start":{"line":236,"column":0},"end":{"line":236,"column":8}},"236":{"start":{"line":237,"column":0},"end":{"line":237,"column":17}},"237":{"start":{"line":238,"column":0},"end":{"line":238,"column":6}},"238":{"start":{"line":239,"column":0},"end":{"line":239,"column":47}},"239":{"start":{"line":240,"column":0},"end":{"line":240,"column":29}},"240":{"start":{"line":241,"column":0},"end":{"line":241,"column":15}},"241":{"start":{"line":242,"column":0},"end":{"line":242,"column":3}},"242":{"start":{"line":243,"column":0},"end":{"line":243,"column":0}},"243":{"start":{"line":244,"column":0},"end":{"line":244,"column":60}},"244":{"start":{"line":245,"column":0},"end":{"line":245,"column":79}},"245":{"start":{"line":246,"column":0},"end":{"line":246,"column":54}},"246":{"start":{"line":247,"column":0},"end":{"line":247,"column":49}},"247":{"start":{"line":248,"column":0},"end":{"line":248,"column":54}},"248":{"start":{"line":249,"column":0},"end":{"line":249,"column":66}},"249":{"start":{"line":250,"column":0},"end":{"line":250,"column":12}},"250":{"start":{"line":251,"column":0},"end":{"line":251,"column":26}},"251":{"start":{"line":252,"column":0},"end":{"line":252,"column":10}},"252":{"start":{"line":253,"column":0},"end":{"line":253,"column":11}},"253":{"start":{"line":254,"column":0},"end":{"line":254,"column":8}},"254":{"start":{"line":255,"column":0},"end":{"line":255,"column":17}},"255":{"start":{"line":256,"column":0},"end":{"line":256,"column":32}},"256":{"start":{"line":257,"column":0},"end":{"line":257,"column":3}},"257":{"start":{"line":258,"column":0},"end":{"line":258,"column":0}},"258":{"start":{"line":259,"column":0},"end":{"line":259,"column":59}},"259":{"start":{"line":260,"column":0},"end":{"line":260,"column":46}},"260":{"start":{"line":261,"column":0},"end":{"line":261,"column":13}},"261":{"start":{"line":262,"column":0},"end":{"line":262,"column":61}},"262":{"start":{"line":263,"column":0},"end":{"line":263,"column":0}},"263":{"start":{"line":264,"column":0},"end":{"line":264,"column":66}},"264":{"start":{"line":265,"column":0},"end":{"line":265,"column":3}},"265":{"start":{"line":266,"column":0},"end":{"line":266,"column":0}},"266":{"start":{"line":267,"column":0},"end":{"line":267,"column":56}},"267":{"start":{"line":268,"column":0},"end":{"line":268,"column":20}},"268":{"start":{"line":269,"column":0},"end":{"line":269,"column":22}},"269":{"start":{"line":270,"column":0},"end":{"line":270,"column":28}},"270":{"start":{"line":271,"column":0},"end":{"line":271,"column":41}},"271":{"start":{"line":272,"column":0},"end":{"line":272,"column":43}},"272":{"start":{"line":273,"column":0},"end":{"line":273,"column":40}},"273":{"start":{"line":274,"column":0},"end":{"line":274,"column":56}},"274":{"start":{"line":275,"column":0},"end":{"line":275,"column":57}},"275":{"start":{"line":276,"column":0},"end":{"line":276,"column":62}},"276":{"start":{"line":277,"column":0},"end":{"line":277,"column":20}},"277":{"start":{"line":278,"column":0},"end":{"line":278,"column":3}},"278":{"start":{"line":279,"column":0},"end":{"line":279,"column":1}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":0,"31":0,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"38":1,"39":1,"40":1,"41":1,"42":1,"43":1,"44":1,"45":1,"46":1,"47":1,"48":1,"49":1,"50":1,"51":1,"52":1,"53":1,"54":1,"55":1,"56":26,"57":26,"58":26,"59":26,"60":26,"61":26,"62":26,"63":26,"64":26,"65":26,"66":1,"67":1,"68":26,"69":26,"70":1,"71":1,"72":26,"73":26,"74":26,"75":26,"76":26,"77":26,"78":0,"79":0,"80":26,"81":0,"82":0,"83":0,"84":26,"85":26,"86":6,"87":6,"88":26,"89":26,"90":26,"91":26,"92":26,"93":26,"94":26,"95":26,"96":26,"97":26,"98":26,"99":25,"100":25,"101":26,"102":26,"103":26,"104":25,"105":25,"106":0,"107":0,"108":0,"109":0,"110":0,"111":25,"112":25,"113":23,"114":23,"115":23,"116":23,"117":23,"118":25,"119":26,"120":26,"121":25,"122":25,"123":25,"124":1,"125":1,"126":59,"127":59,"128":59,"129":59,"130":59,"131":0,"132":0,"133":0,"134":0,"135":0,"136":0,"137":0,"138":0,"139":0,"140":59,"141":59,"142":59,"143":59,"144":59,"145":59,"146":0,"147":0,"148":59,"149":59,"150":59,"151":59,"152":59,"153":59,"154":59,"155":0,"156":0,"157":0,"158":0,"159":0,"160":59,"161":59,"162":59,"163":59,"164":1,"165":1,"166":51,"167":51,"168":1,"169":1,"170":4,"171":4,"172":4,"173":4,"174":4,"175":4,"176":4,"177":4,"178":4,"179":4,"180":4,"181":4,"182":4,"183":4,"184":1,"185":1,"186":288,"187":288,"188":288,"189":288,"190":288,"191":288,"192":288,"193":288,"194":104,"195":104,"196":104,"197":104,"198":3,"199":3,"200":3,"201":0,"202":0,"203":0,"204":0,"205":0,"206":0,"207":0,"208":0,"209":3,"210":3,"211":3,"212":1,"213":3,"214":2,"215":2,"216":2,"217":2,"218":2,"219":1,"220":1,"221":1,"222":1,"223":2,"224":3,"225":2,"226":2,"227":104,"228":104,"229":104,"230":104,"231":104,"232":288,"233":184,"234":184,"235":184,"236":184,"237":184,"238":184,"239":184,"240":184,"241":184,"242":1,"243":1,"244":4,"245":76,"246":76,"247":288,"248":288,"249":288,"250":288,"251":76,"252":76,"253":76,"254":76,"255":4,"256":4,"257":1,"258":1,"259":288,"260":288,"261":288,"262":288,"263":288,"264":288,"265":1,"266":1,"267":1,"268":0,"269":0,"270":0,"271":0,"272":0,"273":0,"274":0,"275":0,"276":0,"277":0,"278":1},"branchMap":{"0":{"type":"branch","line":30,"loc":{"start":{"line":30,"column":20},"end":{"line":32,"column":2}},"locations":[{"start":{"line":30,"column":20},"end":{"line":32,"column":2}}]},"1":{"type":"branch","line":56,"loc":{"start":{"line":56,"column":2},"end":{"line":66,"column":3}},"locations":[{"start":{"line":56,"column":2},"end":{"line":66,"column":3}}]},"2":{"type":"branch","line":68,"loc":{"start":{"line":68,"column":2},"end":{"line":70,"column":3}},"locations":[{"start":{"line":68,"column":2},"end":{"line":70,"column":3}}]},"3":{"type":"branch","line":72,"loc":{"start":{"line":72,"column":2},"end":{"line":124,"column":3}},"locations":[{"start":{"line":72,"column":2},"end":{"line":124,"column":3}}]},"4":{"type":"branch","line":78,"loc":{"start":{"line":78,"column":50},"end":{"line":80,"column":7}},"locations":[{"start":{"line":78,"column":50},"end":{"line":80,"column":7}}]},"5":{"type":"branch","line":81,"loc":{"start":{"line":81,"column":6},"end":{"line":84,"column":5}},"locations":[{"start":{"line":81,"column":6},"end":{"line":84,"column":5}}]},"6":{"type":"branch","line":86,"loc":{"start":{"line":86,"column":20},"end":{"line":88,"column":5}},"locations":[{"start":{"line":86,"column":20},"end":{"line":88,"column":5}}]},"7":{"type":"branch","line":122,"loc":{"start":{"line":122,"column":-1},"end":{"line":124,"column":3}},"locations":[{"start":{"line":122,"column":-1},"end":{"line":124,"column":3}}]},"8":{"type":"branch","line":93,"loc":{"start":{"line":93,"column":6},"end":{"line":96,"column":10}},"locations":[{"start":{"line":93,"column":6},"end":{"line":96,"column":10}}]},"9":{"type":"branch","line":99,"loc":{"start":{"line":99,"column":6},"end":{"line":102,"column":7}},"locations":[{"start":{"line":99,"column":6},"end":{"line":102,"column":7}}]},"10":{"type":"branch","line":104,"loc":{"start":{"line":104,"column":6},"end":{"line":120,"column":7}},"locations":[{"start":{"line":104,"column":6},"end":{"line":120,"column":7}}]},"11":{"type":"branch","line":113,"loc":{"start":{"line":113,"column":31},"end":{"line":119,"column":9}},"locations":[{"start":{"line":113,"column":31},"end":{"line":119,"column":9}}]},"12":{"type":"branch","line":126,"loc":{"start":{"line":126,"column":2},"end":{"line":164,"column":3}},"locations":[{"start":{"line":126,"column":2},"end":{"line":164,"column":3}}]},"13":{"type":"branch","line":129,"loc":{"start":{"line":129,"column":38},"end":{"line":129,"column":59}},"locations":[{"start":{"line":129,"column":38},"end":{"line":129,"column":59}}]},"14":{"type":"branch","line":131,"loc":{"start":{"line":131,"column":42},"end":{"line":141,"column":11}},"locations":[{"start":{"line":131,"column":42},"end":{"line":141,"column":11}}]},"15":{"type":"branch","line":146,"loc":{"start":{"line":146,"column":7},"end":{"line":148,"column":7}},"locations":[{"start":{"line":146,"column":7},"end":{"line":148,"column":7}}]},"16":{"type":"branch","line":152,"loc":{"start":{"line":152,"column":6},"end":{"line":152,"column":45}},"locations":[{"start":{"line":152,"column":6},"end":{"line":152,"column":45}}]},"17":{"type":"branch","line":155,"loc":{"start":{"line":155,"column":35},"end":{"line":161,"column":11}},"locations":[{"start":{"line":155,"column":35},"end":{"line":161,"column":11}}]},"18":{"type":"branch","line":166,"loc":{"start":{"line":166,"column":2},"end":{"line":168,"column":3}},"locations":[{"start":{"line":166,"column":2},"end":{"line":168,"column":3}}]},"19":{"type":"branch","line":170,"loc":{"start":{"line":170,"column":2},"end":{"line":184,"column":3}},"locations":[{"start":{"line":170,"column":2},"end":{"line":184,"column":3}}]},"20":{"type":"branch","line":186,"loc":{"start":{"line":186,"column":10},"end":{"line":242,"column":3}},"locations":[{"start":{"line":186,"column":10},"end":{"line":242,"column":3}}]},"21":{"type":"branch","line":194,"loc":{"start":{"line":194,"column":26},"end":{"line":232,"column":7}},"locations":[{"start":{"line":194,"column":26},"end":{"line":232,"column":7}}]},"22":{"type":"branch","line":234,"loc":{"start":{"line":234,"column":-1},"end":{"line":242,"column":3}},"locations":[{"start":{"line":234,"column":-1},"end":{"line":242,"column":3}}]},"23":{"type":"branch","line":192,"loc":{"start":{"line":192,"column":8},"end":{"line":192,"column":38}},"locations":[{"start":{"line":192,"column":8},"end":{"line":192,"column":38}}]},"24":{"type":"branch","line":198,"loc":{"start":{"line":198,"column":21},"end":{"line":228,"column":9}},"locations":[{"start":{"line":198,"column":21},"end":{"line":228,"column":9}}]},"25":{"type":"branch","line":201,"loc":{"start":{"line":201,"column":29},"end":{"line":209,"column":11}},"locations":[{"start":{"line":201,"column":29},"end":{"line":209,"column":11}}]},"26":{"type":"branch","line":212,"loc":{"start":{"line":212,"column":52},"end":{"line":214,"column":19}},"locations":[{"start":{"line":212,"column":52},"end":{"line":214,"column":19}}]},"27":{"type":"branch","line":214,"loc":{"start":{"line":214,"column":13},"end":{"line":224,"column":13}},"locations":[{"start":{"line":214,"column":13},"end":{"line":224,"column":13}}]},"28":{"type":"branch","line":219,"loc":{"start":{"line":219,"column":59},"end":{"line":223,"column":15}},"locations":[{"start":{"line":219,"column":59},"end":{"line":223,"column":15}}]},"29":{"type":"branch","line":226,"loc":{"start":{"line":226,"column":-1},"end":{"line":228,"column":9}},"locations":[{"start":{"line":226,"column":-1},"end":{"line":228,"column":9}}]},"30":{"type":"branch","line":244,"loc":{"start":{"line":244,"column":10},"end":{"line":257,"column":3}},"locations":[{"start":{"line":244,"column":10},"end":{"line":257,"column":3}}]},"31":{"type":"branch","line":245,"loc":{"start":{"line":245,"column":47},"end":{"line":256,"column":5}},"locations":[{"start":{"line":245,"column":47},"end":{"line":256,"column":5}}]},"32":{"type":"branch","line":247,"loc":{"start":{"line":247,"column":8},"end":{"line":252,"column":9}},"locations":[{"start":{"line":247,"column":8},"end":{"line":252,"column":9}}]},"33":{"type":"branch","line":259,"loc":{"start":{"line":259,"column":10},"end":{"line":265,"column":3}},"locations":[{"start":{"line":259,"column":10},"end":{"line":265,"column":3}}]},"34":{"type":"branch","line":264,"loc":{"start":{"line":264,"column":34},"end":{"line":264,"column":41}},"locations":[{"start":{"line":264,"column":34},"end":{"line":264,"column":41}}]},"35":{"type":"branch","line":264,"loc":{"start":{"line":264,"column":56},"end":{"line":264,"column":63}},"locations":[{"start":{"line":264,"column":56},"end":{"line":264,"column":63}}]}},"b":{"0":[472],"1":[26],"2":[26],"3":[26],"4":[0],"5":[0],"6":[6],"7":[25],"8":[26],"9":[25],"10":[25],"11":[23],"12":[59],"13":[0],"14":[0],"15":[0],"16":[0],"17":[0],"18":[51],"19":[4],"20":[288],"21":[104],"22":[184],"23":[364],"24":[3],"25":[0],"26":[1],"27":[2],"28":[1],"29":[2],"30":[4],"31":[76],"32":[288],"33":[288],"34":[0],"35":[0]},"fnMap":{"0":{"name":"NOT_SUPPORT","decl":{"start":{"line":30,"column":20},"end":{"line":32,"column":2}},"loc":{"start":{"line":30,"column":20},"end":{"line":32,"column":2}},"line":30},"1":{"name":"ApiService","decl":{"start":{"line":56,"column":2},"end":{"line":66,"column":3}},"loc":{"start":{"line":56,"column":2},"end":{"line":66,"column":3}},"line":56},"2":{"name":"ApiService.fetchBlocksBatches","decl":{"start":{"line":50,"column":45},"end":{"line":50,"column":75}},"loc":{"start":{"line":50,"column":45},"end":{"line":50,"column":75}},"line":50},"3":{"name":"onApplicationShutdown","decl":{"start":{"line":68,"column":2},"end":{"line":70,"column":3}},"loc":{"start":{"line":68,"column":2},"end":{"line":70,"column":3}},"line":68},"4":{"name":"init","decl":{"start":{"line":72,"column":2},"end":{"line":124,"column":3}},"loc":{"start":{"line":72,"column":2},"end":{"line":124,"column":3}},"line":72},"5":{"name":"createConnections.api","decl":{"start":{"line":93,"column":6},"end":{"line":96,"column":10}},"loc":{"start":{"line":93,"column":6},"end":{"line":96,"column":10}},"line":93},"6":{"name":"createConnections.api","decl":{"start":{"line":99,"column":6},"end":{"line":102,"column":7}},"loc":{"start":{"line":99,"column":6},"end":{"line":102,"column":7}},"line":99},"7":{"name":"updateBlockFetching","decl":{"start":{"line":126,"column":2},"end":{"line":164,"column":3}},"loc":{"start":{"line":126,"column":2},"end":{"line":164,"column":3}},"line":126},"8":{"name":"get api","decl":{"start":{"line":166,"column":2},"end":{"line":168,"column":3}},"loc":{"start":{"line":166,"column":2},"end":{"line":168,"column":3}},"line":166},"9":{"name":"getPatchedApi","decl":{"start":{"line":170,"column":2},"end":{"line":184,"column":3}},"loc":{"start":{"line":170,"column":2},"end":{"line":184,"column":3}},"line":170},"10":{"name":"redecorateRpcFunction","decl":{"start":{"line":186,"column":10},"end":{"line":242,"column":3}},"loc":{"start":{"line":186,"column":10},"end":{"line":242,"column":3}},"line":186},"11":{"name":"ret","decl":{"start":{"line":198,"column":21},"end":{"line":228,"column":9}},"loc":{"start":{"line":198,"column":21},"end":{"line":228,"column":9}},"line":198},"12":{"name":"patchApiRpc","decl":{"start":{"line":244,"column":10},"end":{"line":257,"column":3}},"loc":{"start":{"line":244,"column":10},"end":{"line":257,"column":3}},"line":244},"13":{"name":"getRPCFunctionName","decl":{"start":{"line":259,"column":10},"end":{"line":265,"column":3}},"loc":{"start":{"line":259,"column":10},"end":{"line":265,"column":3}},"line":259},"14":{"name":"fetchBlocks","decl":{"start":{"line":268,"column":2},"end":{"line":278,"column":3}},"loc":{"start":{"line":268,"column":2},"end":{"line":278,"column":3}},"line":268}},"f":{"0":472,"1":26,"2":0,"3":26,"4":26,"5":26,"6":25,"7":59,"8":51,"9":4,"10":288,"11":3,"12":4,"13":288,"14":0}},"/Users/scotttwiname/Projects/subql-main/packages/node/src/indexer/apiPromise.connection.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/node/src/indexer/apiPromise.connection.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":55}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":49}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":65}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":56}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":8}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":21}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":15}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":21}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":21}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":25}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":17}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":15}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":25}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":9}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":26}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":52}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":65}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":67}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":49}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":0}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":62}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":66}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":0}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":26}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":0}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":23}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":43}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":49}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":0}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":110}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":43}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":0}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":33}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":12}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":27}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":17}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":12}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":58}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":5}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":1}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":47}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":0}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":14}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":33}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":35}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":29}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":45}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":5}},"51":{"start":{"line":52,"column":0},"end":{"line":52,"column":24}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":47}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":61}},"54":{"start":{"line":55,"column":0},"end":{"line":55,"column":52}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":6}},"56":{"start":{"line":57,"column":0},"end":{"line":57,"column":3}},"57":{"start":{"line":58,"column":0},"end":{"line":58,"column":0}},"58":{"start":{"line":59,"column":0},"end":{"line":59,"column":22}},"59":{"start":{"line":60,"column":0},"end":{"line":60,"column":21}},"60":{"start":{"line":61,"column":0},"end":{"line":61,"column":37}},"61":{"start":{"line":62,"column":0},"end":{"line":62,"column":42}},"62":{"start":{"line":63,"column":0},"end":{"line":63,"column":36}},"63":{"start":{"line":64,"column":0},"end":{"line":64,"column":36}},"64":{"start":{"line":65,"column":0},"end":{"line":65,"column":31}},"65":{"start":{"line":66,"column":0},"end":{"line":66,"column":0}},"66":{"start":{"line":67,"column":0},"end":{"line":67,"column":21}},"67":{"start":{"line":68,"column":0},"end":{"line":68,"column":54}},"68":{"start":{"line":69,"column":0},"end":{"line":69,"column":6}},"69":{"start":{"line":70,"column":0},"end":{"line":70,"column":0}},"70":{"start":{"line":71,"column":0},"end":{"line":71,"column":36}},"71":{"start":{"line":72,"column":0},"end":{"line":72,"column":38}},"72":{"start":{"line":73,"column":0},"end":{"line":73,"column":55}},"73":{"start":{"line":74,"column":0},"end":{"line":74,"column":8}},"74":{"start":{"line":75,"column":0},"end":{"line":75,"column":45}},"75":{"start":{"line":76,"column":0},"end":{"line":76,"column":75}},"76":{"start":{"line":77,"column":0},"end":{"line":77,"column":28}},"77":{"start":{"line":78,"column":0},"end":{"line":78,"column":5}},"78":{"start":{"line":79,"column":0},"end":{"line":79,"column":0}},"79":{"start":{"line":80,"column":0},"end":{"line":80,"column":23}},"80":{"start":{"line":81,"column":0},"end":{"line":81,"column":15}},"81":{"start":{"line":82,"column":0},"end":{"line":82,"column":21}},"82":{"start":{"line":83,"column":0},"end":{"line":83,"column":23}},"83":{"start":{"line":84,"column":0},"end":{"line":84,"column":25}},"84":{"start":{"line":85,"column":0},"end":{"line":85,"column":6}},"85":{"start":{"line":86,"column":0},"end":{"line":86,"column":51}},"86":{"start":{"line":87,"column":0},"end":{"line":87,"column":36}},"87":{"start":{"line":88,"column":0},"end":{"line":88,"column":10}},"88":{"start":{"line":89,"column":0},"end":{"line":89,"column":16}},"89":{"start":{"line":90,"column":0},"end":{"line":90,"column":15}},"90":{"start":{"line":91,"column":0},"end":{"line":91,"column":25}},"91":{"start":{"line":92,"column":0},"end":{"line":92,"column":6}},"92":{"start":{"line":93,"column":0},"end":{"line":93,"column":3}},"93":{"start":{"line":94,"column":0},"end":{"line":94,"column":0}},"94":{"start":{"line":95,"column":0},"end":{"line":95,"column":34}},"95":{"start":{"line":96,"column":0},"end":{"line":96,"column":39}},"96":{"start":{"line":97,"column":0},"end":{"line":97,"column":3}},"97":{"start":{"line":98,"column":0},"end":{"line":98,"column":0}},"98":{"start":{"line":99,"column":0},"end":{"line":99,"column":20}},"99":{"start":{"line":100,"column":0},"end":{"line":100,"column":22}},"100":{"start":{"line":101,"column":0},"end":{"line":101,"column":28}},"101":{"start":{"line":102,"column":0},"end":{"line":102,"column":68}},"102":{"start":{"line":103,"column":0},"end":{"line":103,"column":51}},"103":{"start":{"line":104,"column":0},"end":{"line":104,"column":21}},"104":{"start":{"line":105,"column":0},"end":{"line":105,"column":14}},"105":{"start":{"line":106,"column":0},"end":{"line":106,"column":21}},"106":{"start":{"line":107,"column":0},"end":{"line":107,"column":6}},"107":{"start":{"line":108,"column":0},"end":{"line":108,"column":18}},"108":{"start":{"line":109,"column":0},"end":{"line":109,"column":3}},"109":{"start":{"line":110,"column":0},"end":{"line":110,"column":0}},"110":{"start":{"line":111,"column":0},"end":{"line":111,"column":37}},"111":{"start":{"line":112,"column":0},"end":{"line":112,"column":43}},"112":{"start":{"line":113,"column":0},"end":{"line":113,"column":39}},"113":{"start":{"line":114,"column":0},"end":{"line":114,"column":18}},"114":{"start":{"line":115,"column":0},"end":{"line":115,"column":7}},"115":{"start":{"line":116,"column":0},"end":{"line":116,"column":0}},"116":{"start":{"line":117,"column":0},"end":{"line":117,"column":44}},"117":{"start":{"line":118,"column":0},"end":{"line":118,"column":18}},"118":{"start":{"line":119,"column":0},"end":{"line":119,"column":9}},"119":{"start":{"line":120,"column":0},"end":{"line":120,"column":0}},"120":{"start":{"line":121,"column":0},"end":{"line":121,"column":40}},"121":{"start":{"line":122,"column":0},"end":{"line":122,"column":33}},"122":{"start":{"line":123,"column":0},"end":{"line":123,"column":7}},"123":{"start":{"line":124,"column":0},"end":{"line":124,"column":7}},"124":{"start":{"line":125,"column":0},"end":{"line":125,"column":3}},"125":{"start":{"line":126,"column":0},"end":{"line":126,"column":0}},"126":{"start":{"line":127,"column":0},"end":{"line":127,"column":40}},"127":{"start":{"line":128,"column":0},"end":{"line":128,"column":38}},"128":{"start":{"line":129,"column":0},"end":{"line":129,"column":3}},"129":{"start":{"line":130,"column":0},"end":{"line":130,"column":0}},"130":{"start":{"line":131,"column":0},"end":{"line":131,"column":49}},"131":{"start":{"line":132,"column":0},"end":{"line":132,"column":0}},"132":{"start":{"line":133,"column":0},"end":{"line":133,"column":52}},"133":{"start":{"line":134,"column":0},"end":{"line":134,"column":44}},"134":{"start":{"line":135,"column":0},"end":{"line":135,"column":76}},"135":{"start":{"line":136,"column":0},"end":{"line":136,"column":44}},"136":{"start":{"line":137,"column":0},"end":{"line":137,"column":60}},"137":{"start":{"line":138,"column":0},"end":{"line":138,"column":50}},"138":{"start":{"line":139,"column":0},"end":{"line":139,"column":67}},"139":{"start":{"line":140,"column":0},"end":{"line":140,"column":46}},"140":{"start":{"line":141,"column":0},"end":{"line":141,"column":61}},"141":{"start":{"line":142,"column":0},"end":{"line":142,"column":50}},"142":{"start":{"line":143,"column":0},"end":{"line":143,"column":12}},"143":{"start":{"line":144,"column":0},"end":{"line":144,"column":47}},"144":{"start":{"line":145,"column":0},"end":{"line":145,"column":15}},"145":{"start":{"line":146,"column":0},"end":{"line":146,"column":18}},"146":{"start":{"line":147,"column":0},"end":{"line":147,"column":29}},"147":{"start":{"line":148,"column":0},"end":{"line":148,"column":8}},"148":{"start":{"line":149,"column":0},"end":{"line":149,"column":5}},"149":{"start":{"line":150,"column":0},"end":{"line":150,"column":27}},"150":{"start":{"line":151,"column":0},"end":{"line":151,"column":3}},"151":{"start":{"line":152,"column":0},"end":{"line":152,"column":1}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"38":1,"39":1,"40":1,"41":1,"42":1,"43":1,"44":1,"45":1,"46":25,"47":25,"48":25,"49":25,"50":25,"51":25,"52":25,"53":25,"54":25,"55":25,"56":25,"57":1,"58":1,"59":26,"60":26,"61":26,"62":26,"63":26,"64":26,"65":26,"66":26,"67":26,"68":26,"69":26,"70":26,"71":26,"72":26,"73":26,"74":26,"75":0,"76":0,"77":0,"78":26,"79":26,"80":26,"81":26,"82":26,"83":26,"84":26,"85":26,"86":25,"87":25,"88":25,"89":25,"90":25,"91":25,"92":25,"93":1,"94":1,"95":0,"96":0,"97":1,"98":1,"99":0,"100":0,"101":0,"102":0,"103":0,"104":0,"105":0,"106":0,"107":0,"108":0,"109":1,"110":1,"111":0,"112":0,"113":0,"114":0,"115":0,"116":0,"117":0,"118":0,"119":0,"120":0,"121":0,"122":0,"123":0,"124":0,"125":1,"126":1,"127":50,"128":50,"129":1,"130":1,"131":1,"132":1,"133":0,"134":0,"135":0,"136":0,"137":0,"138":0,"139":0,"140":0,"141":0,"142":0,"143":0,"144":0,"145":0,"146":0,"147":0,"148":0,"149":0,"150":0,"151":1},"branchMap":{"0":{"type":"branch","line":46,"loc":{"start":{"line":46,"column":2},"end":{"line":57,"column":3}},"locations":[{"start":{"line":46,"column":2},"end":{"line":57,"column":3}}]},"1":{"type":"branch","line":59,"loc":{"start":{"line":59,"column":9},"end":{"line":93,"column":3}},"locations":[{"start":{"line":59,"column":9},"end":{"line":93,"column":3}}]},"2":{"type":"branch","line":75,"loc":{"start":{"line":75,"column":5},"end":{"line":78,"column":5}},"locations":[{"start":{"line":75,"column":5},"end":{"line":78,"column":5}}]},"3":{"type":"branch","line":87,"loc":{"start":{"line":87,"column":-1},"end":{"line":93,"column":3}},"locations":[{"start":{"line":87,"column":-1},"end":{"line":93,"column":3}}]},"4":{"type":"branch","line":127,"loc":{"start":{"line":127,"column":2},"end":{"line":129,"column":3}},"locations":[{"start":{"line":127,"column":2},"end":{"line":129,"column":3}}]}},"b":{"0":[25],"1":[26],"2":[0],"3":[25],"4":[50]},"fnMap":{"0":{"name":"ApiPromiseConnection","decl":{"start":{"line":46,"column":2},"end":{"line":57,"column":3}},"loc":{"start":{"line":46,"column":2},"end":{"line":57,"column":3}},"line":46},"1":{"name":"create","decl":{"start":{"line":59,"column":9},"end":{"line":93,"column":3}},"loc":{"start":{"line":59,"column":9},"end":{"line":93,"column":3}},"line":59},"2":{"name":"safeApi","decl":{"start":{"line":95,"column":2},"end":{"line":97,"column":3}},"loc":{"start":{"line":95,"column":2},"end":{"line":97,"column":3}},"line":95},"3":{"name":"fetchBlocks","decl":{"start":{"line":99,"column":2},"end":{"line":109,"column":3}},"loc":{"start":{"line":99,"column":2},"end":{"line":109,"column":3}},"line":99},"4":{"name":"apiConnect","decl":{"start":{"line":111,"column":2},"end":{"line":125,"column":3}},"loc":{"start":{"line":111,"column":2},"end":{"line":125,"column":3}},"line":111},"5":{"name":"apiDisconnect","decl":{"start":{"line":127,"column":2},"end":{"line":129,"column":3}},"loc":{"start":{"line":127,"column":2},"end":{"line":129,"column":3}},"line":127},"6":{"name":"handleError","decl":{"start":{"line":133,"column":9},"end":{"line":151,"column":3}},"loc":{"start":{"line":133,"column":9},"end":{"line":151,"column":3}},"line":133}},"f":{"0":25,"1":26,"2":0,"3":0,"4":0,"5":50,"6":0}},"/Users/scotttwiname/Projects/subql-main/packages/node/src/indexer/blockDispatcher/block-dispatcher.service.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/node/src/indexer/blockDispatcher/block-dispatcher.service.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":75}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":54}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":8}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":13}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":20}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":20}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":15}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":18}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":18}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":23}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":25}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":17}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":9}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":26}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":51}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":66}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":44}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":57}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":52}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":59}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":72}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":0}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":3}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":133}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":3}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":13}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":35}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":80}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":34}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":1}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":41}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":0}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":14}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":35}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":27}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":43}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":32}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":30}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":57}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":37}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":50}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":41}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":31}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":41}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":35}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":57}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":39}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":5}},"51":{"start":{"line":52,"column":0},"end":{"line":52,"column":10}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":17}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":19}},"54":{"start":{"line":55,"column":0},"end":{"line":55,"column":21}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":28}},"56":{"start":{"line":57,"column":0},"end":{"line":57,"column":24}},"57":{"start":{"line":58,"column":0},"end":{"line":58,"column":19}},"58":{"start":{"line":59,"column":0},"end":{"line":59,"column":24}},"59":{"start":{"line":60,"column":0},"end":{"line":60,"column":21}},"60":{"start":{"line":61,"column":0},"end":{"line":61,"column":14}},"61":{"start":{"line":62,"column":0},"end":{"line":62,"column":23}},"62":{"start":{"line":63,"column":0},"end":{"line":63,"column":13}},"63":{"start":{"line":64,"column":0},"end":{"line":64,"column":28}},"64":{"start":{"line":65,"column":0},"end":{"line":65,"column":75}},"65":{"start":{"line":66,"column":0},"end":{"line":66,"column":66}},"66":{"start":{"line":67,"column":0},"end":{"line":67,"column":42}},"67":{"start":{"line":68,"column":0},"end":{"line":68,"column":10}},"68":{"start":{"line":69,"column":0},"end":{"line":69,"column":0}},"69":{"start":{"line":70,"column":0},"end":{"line":70,"column":77}},"70":{"start":{"line":71,"column":0},"end":{"line":71,"column":46}},"71":{"start":{"line":72,"column":0},"end":{"line":72,"column":43}},"72":{"start":{"line":73,"column":0},"end":{"line":73,"column":20}},"73":{"start":{"line":74,"column":0},"end":{"line":74,"column":74}},"74":{"start":{"line":75,"column":0},"end":{"line":75,"column":10}},"75":{"start":{"line":76,"column":0},"end":{"line":76,"column":8}},"76":{"start":{"line":77,"column":0},"end":{"line":77,"column":6}},"77":{"start":{"line":78,"column":0},"end":{"line":78,"column":3}},"78":{"start":{"line":79,"column":0},"end":{"line":79,"column":0}},"79":{"start":{"line":80,"column":0},"end":{"line":80,"column":13}},"80":{"start":{"line":81,"column":0},"end":{"line":81,"column":58}},"81":{"start":{"line":82,"column":0},"end":{"line":82,"column":36}},"82":{"start":{"line":83,"column":0},"end":{"line":83,"column":20}},"83":{"start":{"line":84,"column":0},"end":{"line":84,"column":41}},"84":{"start":{"line":85,"column":0},"end":{"line":85,"column":41}},"85":{"start":{"line":86,"column":0},"end":{"line":86,"column":3}},"86":{"start":{"line":87,"column":0},"end":{"line":87,"column":0}},"87":{"start":{"line":88,"column":0},"end":{"line":88,"column":77}},"88":{"start":{"line":89,"column":0},"end":{"line":89,"column":54}},"89":{"start":{"line":90,"column":0},"end":{"line":90,"column":3}},"90":{"start":{"line":91,"column":0},"end":{"line":91,"column":0}},"91":{"start":{"line":92,"column":0},"end":{"line":92,"column":29}},"92":{"start":{"line":93,"column":0},"end":{"line":93,"column":60}},"93":{"start":{"line":94,"column":0},"end":{"line":94,"column":36}},"94":{"start":{"line":95,"column":0},"end":{"line":95,"column":52}},"95":{"start":{"line":96,"column":0},"end":{"line":96,"column":17}},"96":{"start":{"line":97,"column":0},"end":{"line":97,"column":71}},"97":{"start":{"line":98,"column":0},"end":{"line":98,"column":42}},"98":{"start":{"line":99,"column":0},"end":{"line":99,"column":12}},"99":{"start":{"line":100,"column":0},"end":{"line":100,"column":47}},"100":{"start":{"line":101,"column":0},"end":{"line":101,"column":41}},"101":{"start":{"line":102,"column":0},"end":{"line":102,"column":8}},"102":{"start":{"line":103,"column":0},"end":{"line":103,"column":21}},"103":{"start":{"line":104,"column":0},"end":{"line":104,"column":6}},"104":{"start":{"line":105,"column":0},"end":{"line":105,"column":3}},"105":{"start":{"line":106,"column":0},"end":{"line":106,"column":1}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":20,"37":20,"38":20,"39":20,"40":20,"41":20,"42":20,"43":20,"44":20,"45":20,"46":20,"47":20,"48":20,"49":20,"50":20,"51":20,"52":20,"53":20,"54":20,"55":20,"56":20,"57":20,"58":20,"59":20,"60":20,"61":20,"62":20,"63":0,"64":0,"65":0,"66":0,"67":0,"68":0,"69":0,"70":0,"71":0,"72":0,"73":0,"74":0,"75":20,"76":20,"77":20,"78":1,"79":1,"80":0,"81":0,"82":0,"83":0,"84":0,"85":0,"86":1,"87":1,"88":0,"89":0,"90":1,"91":1,"92":0,"93":0,"94":0,"95":0,"96":0,"97":0,"98":0,"99":0,"100":0,"101":0,"102":0,"103":0,"104":0,"105":1},"branchMap":{"0":{"type":"branch","line":36,"loc":{"start":{"line":36,"column":2},"end":{"line":78,"column":3}},"locations":[{"start":{"line":36,"column":2},"end":{"line":78,"column":3}}]}},"b":{"0":[20]},"fnMap":{"0":{"name":"BlockDispatcherService","decl":{"start":{"line":36,"column":2},"end":{"line":78,"column":3}},"loc":{"start":{"line":36,"column":2},"end":{"line":78,"column":3}},"line":36},"1":{"name":"init","decl":{"start":{"line":80,"column":2},"end":{"line":86,"column":3}},"loc":{"start":{"line":80,"column":2},"end":{"line":86,"column":3}},"line":80},"2":{"name":"getBlockHeight","decl":{"start":{"line":88,"column":12},"end":{"line":90,"column":3}},"loc":{"start":{"line":88,"column":12},"end":{"line":90,"column":3}},"line":88},"3":{"name":"indexBlock","decl":{"start":{"line":92,"column":12},"end":{"line":105,"column":3}},"loc":{"start":{"line":92,"column":12},"end":{"line":105,"column":3}},"line":92}},"f":{"0":20,"1":0,"2":0,"3":0}},"/Users/scotttwiname/Projects/subql-main/packages/node/src/indexer/blockDispatcher/index.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/node/src/indexer/blockDispatcher/index.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":68}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":81}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":0}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":64}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1},"branchMap":{"0":{"type":"branch","line":7,"loc":{"start":{"line":7,"column":9},"end":{"line":7,"column":31}},"locations":[{"start":{"line":7,"column":9},"end":{"line":7,"column":31}}]}},"b":{"0":[20]},"fnMap":{"0":{"name":"get","decl":{"start":{"line":7,"column":9},"end":{"line":7,"column":31}},"loc":{"start":{"line":7,"column":9},"end":{"line":7,"column":31}},"line":7},"1":{"name":"get","decl":{"start":{"line":7,"column":33},"end":{"line":7,"column":61}},"loc":{"start":{"line":7,"column":33},"end":{"line":7,"column":61}},"line":7}},"f":{"0":20,"1":0}},"/Users/scotttwiname/Projects/subql-main/packages/node/src/indexer/blockDispatcher/substrate-block-dispatcher.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/node/src/indexer/blockDispatcher/substrate-block-dispatcher.ts","all":true,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":52}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":46}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":59}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":0}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":42}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":44}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":7}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":58}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":36}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":19}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":1}}},"s":{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0},"branchMap":{"0":{"type":"branch","line":1,"loc":{"start":{"line":1,"column":0},"end":{"line":14,"column":1}},"locations":[{"start":{"line":1,"column":0},"end":{"line":14,"column":1}}]}},"b":{"0":[0]},"fnMap":{"0":{"name":"(empty-report)","decl":{"start":{"line":1,"column":0},"end":{"line":14,"column":1}},"loc":{"start":{"line":1,"column":0},"end":{"line":14,"column":1}},"line":1}},"f":{"0":0}},"/Users/scotttwiname/Projects/subql-main/packages/node/src/indexer/blockDispatcher/worker-block-dispatcher.service.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/node/src/indexer/blockDispatcher/worker-block-dispatcher.service.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":24}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":75}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":54}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":8}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":13}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":20}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":15}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":20}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":18}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":24}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":29}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":25}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":17}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":23}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":49}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":26}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":67}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":66}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":64}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":57}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":59}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":40}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":72}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":50}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":0}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":39}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":35}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":2}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":0}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":13}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":41}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":32}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":24}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":18}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":18}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":3}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":34}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":1}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":41}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":0}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":14}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":27}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":32}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":30}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":57}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":37}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":49}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":41}},"51":{"start":{"line":52,"column":0},"end":{"line":52,"column":39}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":31}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":41}},"54":{"start":{"line":55,"column":0},"end":{"line":55,"column":35}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":57}},"56":{"start":{"line":57,"column":0},"end":{"line":57,"column":39}},"57":{"start":{"line":58,"column":0},"end":{"line":58,"column":55}},"58":{"start":{"line":59,"column":0},"end":{"line":59,"column":74}},"59":{"start":{"line":60,"column":0},"end":{"line":60,"column":5}},"60":{"start":{"line":61,"column":0},"end":{"line":61,"column":10}},"61":{"start":{"line":62,"column":0},"end":{"line":62,"column":17}},"62":{"start":{"line":63,"column":0},"end":{"line":63,"column":19}},"63":{"start":{"line":64,"column":0},"end":{"line":64,"column":21}},"64":{"start":{"line":65,"column":0},"end":{"line":65,"column":27}},"65":{"start":{"line":66,"column":0},"end":{"line":66,"column":24}},"66":{"start":{"line":67,"column":0},"end":{"line":67,"column":19}},"67":{"start":{"line":68,"column":0},"end":{"line":68,"column":24}},"68":{"start":{"line":69,"column":0},"end":{"line":69,"column":21}},"69":{"start":{"line":70,"column":0},"end":{"line":70,"column":14}},"70":{"start":{"line":71,"column":0},"end":{"line":71,"column":23}},"71":{"start":{"line":72,"column":0},"end":{"line":72,"column":11}},"72":{"start":{"line":73,"column":0},"end":{"line":73,"column":32}},"73":{"start":{"line":74,"column":0},"end":{"line":74,"column":25}},"74":{"start":{"line":75,"column":0},"end":{"line":75,"column":31}},"75":{"start":{"line":76,"column":0},"end":{"line":76,"column":23}},"76":{"start":{"line":77,"column":0},"end":{"line":77,"column":29}},"77":{"start":{"line":78,"column":0},"end":{"line":78,"column":10}},"78":{"start":{"line":79,"column":0},"end":{"line":79,"column":76}},"79":{"start":{"line":80,"column":0},"end":{"line":80,"column":51}},"80":{"start":{"line":81,"column":0},"end":{"line":81,"column":34}},"81":{"start":{"line":82,"column":0},"end":{"line":82,"column":34}},"82":{"start":{"line":83,"column":0},"end":{"line":83,"column":27}},"83":{"start":{"line":84,"column":0},"end":{"line":84,"column":35}},"84":{"start":{"line":85,"column":0},"end":{"line":85,"column":30}},"85":{"start":{"line":86,"column":0},"end":{"line":86,"column":23}},"86":{"start":{"line":87,"column":0},"end":{"line":87,"column":37}},"87":{"start":{"line":88,"column":0},"end":{"line":88,"column":10}},"88":{"start":{"line":89,"column":0},"end":{"line":89,"column":6}},"89":{"start":{"line":90,"column":0},"end":{"line":90,"column":3}},"90":{"start":{"line":91,"column":0},"end":{"line":91,"column":0}},"91":{"start":{"line":92,"column":0},"end":{"line":92,"column":13}},"92":{"start":{"line":93,"column":0},"end":{"line":93,"column":58}},"93":{"start":{"line":94,"column":0},"end":{"line":94,"column":36}},"94":{"start":{"line":95,"column":0},"end":{"line":95,"column":20}},"95":{"start":{"line":96,"column":0},"end":{"line":96,"column":41}},"96":{"start":{"line":97,"column":0},"end":{"line":97,"column":37}},"97":{"start":{"line":98,"column":0},"end":{"line":98,"column":41}},"98":{"start":{"line":99,"column":0},"end":{"line":99,"column":30}},"99":{"start":{"line":100,"column":0},"end":{"line":100,"column":3}},"100":{"start":{"line":101,"column":0},"end":{"line":101,"column":0}},"101":{"start":{"line":102,"column":0},"end":{"line":102,"column":30}},"102":{"start":{"line":103,"column":0},"end":{"line":103,"column":27}},"103":{"start":{"line":104,"column":0},"end":{"line":104,"column":27}},"104":{"start":{"line":105,"column":0},"end":{"line":105,"column":43}},"105":{"start":{"line":106,"column":0},"end":{"line":106,"column":50}},"106":{"start":{"line":107,"column":0},"end":{"line":107,"column":8}},"107":{"start":{"line":108,"column":0},"end":{"line":108,"column":6}},"108":{"start":{"line":109,"column":0},"end":{"line":109,"column":3}},"109":{"start":{"line":110,"column":0},"end":{"line":110,"column":0}},"110":{"start":{"line":111,"column":0},"end":{"line":111,"column":29}},"111":{"start":{"line":112,"column":0},"end":{"line":112,"column":26}},"112":{"start":{"line":113,"column":0},"end":{"line":113,"column":19}},"113":{"start":{"line":114,"column":0},"end":{"line":114,"column":20}},"114":{"start":{"line":115,"column":0},"end":{"line":115,"column":48}},"115":{"start":{"line":116,"column":0},"end":{"line":116,"column":50}},"116":{"start":{"line":117,"column":0},"end":{"line":117,"column":55}},"117":{"start":{"line":118,"column":0},"end":{"line":118,"column":119}},"118":{"start":{"line":119,"column":0},"end":{"line":119,"column":27}},"119":{"start":{"line":120,"column":0},"end":{"line":120,"column":32}},"120":{"start":{"line":121,"column":0},"end":{"line":121,"column":5}},"121":{"start":{"line":122,"column":0},"end":{"line":122,"column":0}},"122":{"start":{"line":123,"column":0},"end":{"line":123,"column":32}},"123":{"start":{"line":124,"column":0},"end":{"line":124,"column":54}},"124":{"start":{"line":125,"column":0},"end":{"line":125,"column":30}},"125":{"start":{"line":126,"column":0},"end":{"line":126,"column":0}},"126":{"start":{"line":127,"column":0},"end":{"line":127,"column":56}},"127":{"start":{"line":128,"column":0},"end":{"line":128,"column":29}},"128":{"start":{"line":129,"column":0},"end":{"line":129,"column":21}},"129":{"start":{"line":130,"column":0},"end":{"line":130,"column":77}},"130":{"start":{"line":131,"column":0},"end":{"line":131,"column":11}},"131":{"start":{"line":132,"column":0},"end":{"line":132,"column":35}},"132":{"start":{"line":133,"column":0},"end":{"line":133,"column":21}},"133":{"start":{"line":134,"column":0},"end":{"line":134,"column":80}},"134":{"start":{"line":135,"column":0},"end":{"line":135,"column":11}},"135":{"start":{"line":136,"column":0},"end":{"line":136,"column":8}},"136":{"start":{"line":137,"column":0},"end":{"line":137,"column":3}},"137":{"start":{"line":138,"column":0},"end":{"line":138,"column":1}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"38":1,"39":1,"40":1,"41":1,"42":1,"43":1,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"59":0,"60":0,"61":0,"62":0,"63":0,"64":0,"65":0,"66":0,"67":0,"68":0,"69":0,"70":0,"71":0,"72":0,"73":0,"74":0,"75":0,"76":0,"77":0,"78":0,"79":0,"80":0,"81":0,"82":0,"83":0,"84":0,"85":0,"86":0,"87":0,"88":0,"89":0,"90":1,"91":1,"92":0,"93":0,"94":0,"95":0,"96":0,"97":0,"98":0,"99":0,"100":1,"101":1,"102":0,"103":0,"104":0,"105":0,"106":0,"107":0,"108":0,"109":1,"110":1,"111":0,"112":0,"113":0,"114":0,"115":0,"116":0,"117":0,"118":0,"119":0,"120":0,"121":0,"122":0,"123":0,"124":0,"125":0,"126":0,"127":0,"128":0,"129":0,"130":0,"131":0,"132":0,"133":0,"134":0,"135":0,"136":0,"137":1},"branchMap":{},"b":{},"fnMap":{"0":{"name":"WorkerBlockDispatcherService","decl":{"start":{"line":44,"column":2},"end":{"line":90,"column":3}},"loc":{"start":{"line":44,"column":2},"end":{"line":90,"column":3}},"line":44},"1":{"name":"init","decl":{"start":{"line":92,"column":2},"end":{"line":100,"column":3}},"loc":{"start":{"line":92,"column":2},"end":{"line":100,"column":3}},"line":92},"2":{"name":"syncWorkerRuntimes","decl":{"start":{"line":102,"column":2},"end":{"line":109,"column":3}},"loc":{"start":{"line":102,"column":2},"end":{"line":109,"column":3}},"line":102},"3":{"name":"fetchBlock","decl":{"start":{"line":111,"column":12},"end":{"line":137,"column":3}},"loc":{"start":{"line":111,"column":12},"end":{"line":137,"column":3}},"line":111}},"f":{"0":0,"1":0,"2":0,"3":0}},"/Users/scotttwiname/Projects/subql-main/packages/node/src/indexer/dictionary/index.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/node/src/indexer/dictionary/index.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":24}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":46}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1},"branchMap":{},"b":{},"fnMap":{},"f":{}},"/Users/scotttwiname/Projects/subql-main/packages/node/src/indexer/dictionary/substrateDictionary.service.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/node/src/indexer/dictionary/substrateDictionary.service.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":28}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":52}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":54}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":47}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":76}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":67}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":66}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":61}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":61}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":45}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":45}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":0}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":48}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":0}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":13}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":66}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":22}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":16}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":3}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":28}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":55}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":55}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":0}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":24}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":72}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":5}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":62}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":31}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":35}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":41}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":6}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":0}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":75}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":0}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":43}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":53}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":42}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":14}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":45}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":41}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":35}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":0}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":49}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":11}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":64}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":19}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":26}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":28}},"51":{"start":{"line":52,"column":0},"end":{"line":52,"column":23}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":39}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":10}},"54":{"start":{"line":55,"column":0},"end":{"line":55,"column":42}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":19}},"56":{"start":{"line":57,"column":0},"end":{"line":57,"column":13}},"57":{"start":{"line":58,"column":0},"end":{"line":58,"column":66}},"58":{"start":{"line":59,"column":0},"end":{"line":59,"column":25}},"59":{"start":{"line":60,"column":0},"end":{"line":60,"column":28}},"60":{"start":{"line":61,"column":0},"end":{"line":61,"column":30}},"61":{"start":{"line":62,"column":0},"end":{"line":62,"column":62}},"62":{"start":{"line":63,"column":0},"end":{"line":63,"column":21}},"63":{"start":{"line":64,"column":0},"end":{"line":64,"column":12}},"64":{"start":{"line":65,"column":0},"end":{"line":65,"column":44}},"65":{"start":{"line":66,"column":0},"end":{"line":66,"column":21}},"66":{"start":{"line":67,"column":0},"end":{"line":67,"column":22}},"67":{"start":{"line":68,"column":0},"end":{"line":68,"column":74}},"68":{"start":{"line":69,"column":0},"end":{"line":69,"column":12}},"69":{"start":{"line":70,"column":0},"end":{"line":70,"column":9}},"70":{"start":{"line":71,"column":0},"end":{"line":71,"column":7}},"71":{"start":{"line":72,"column":0},"end":{"line":72,"column":5}},"72":{"start":{"line":73,"column":0},"end":{"line":73,"column":0}},"73":{"start":{"line":74,"column":0},"end":{"line":74,"column":31}},"74":{"start":{"line":75,"column":0},"end":{"line":75,"column":54}},"75":{"start":{"line":76,"column":0},"end":{"line":76,"column":3}},"76":{"start":{"line":77,"column":0},"end":{"line":77,"column":0}},"77":{"start":{"line":78,"column":0},"end":{"line":78,"column":14}},"78":{"start":{"line":79,"column":0},"end":{"line":79,"column":67}},"79":{"start":{"line":80,"column":0},"end":{"line":80,"column":27}},"80":{"start":{"line":81,"column":0},"end":{"line":81,"column":32}},"81":{"start":{"line":82,"column":0},"end":{"line":82,"column":53}},"82":{"start":{"line":83,"column":0},"end":{"line":83,"column":21}},"83":{"start":{"line":84,"column":0},"end":{"line":84,"column":5}},"84":{"start":{"line":85,"column":0},"end":{"line":85,"column":72}},"85":{"start":{"line":86,"column":0},"end":{"line":86,"column":3}},"86":{"start":{"line":87,"column":0},"end":{"line":87,"column":0}},"87":{"start":{"line":88,"column":0},"end":{"line":88,"column":64}},"88":{"start":{"line":89,"column":0},"end":{"line":89,"column":76}},"89":{"start":{"line":90,"column":0},"end":{"line":90,"column":30}},"90":{"start":{"line":91,"column":0},"end":{"line":91,"column":34}},"91":{"start":{"line":92,"column":0},"end":{"line":92,"column":31}},"92":{"start":{"line":93,"column":0},"end":{"line":93,"column":3}},"93":{"start":{"line":94,"column":0},"end":{"line":94,"column":0}},"94":{"start":{"line":95,"column":0},"end":{"line":95,"column":51}},"95":{"start":{"line":96,"column":0},"end":{"line":96,"column":40}},"96":{"start":{"line":97,"column":0},"end":{"line":97,"column":72}},"97":{"start":{"line":98,"column":0},"end":{"line":98,"column":34}},"98":{"start":{"line":99,"column":0},"end":{"line":99,"column":3}},"99":{"start":{"line":100,"column":0},"end":{"line":100,"column":0}},"100":{"start":{"line":101,"column":0},"end":{"line":101,"column":64}},"101":{"start":{"line":102,"column":0},"end":{"line":102,"column":40}},"102":{"start":{"line":103,"column":0},"end":{"line":103,"column":74}},"103":{"start":{"line":104,"column":0},"end":{"line":104,"column":39}},"104":{"start":{"line":105,"column":0},"end":{"line":105,"column":3}},"105":{"start":{"line":106,"column":0},"end":{"line":106,"column":1}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":3,"24":3,"25":3,"26":3,"27":0,"28":0,"29":3,"30":3,"31":3,"32":3,"33":3,"34":3,"35":3,"36":3,"37":3,"38":3,"39":3,"40":1,"41":1,"42":3,"43":3,"44":3,"45":3,"46":3,"47":3,"48":3,"49":3,"50":3,"51":3,"52":3,"53":3,"54":1,"55":2,"56":2,"57":2,"58":2,"59":2,"60":2,"61":2,"62":2,"63":2,"64":2,"65":2,"66":0,"67":0,"68":0,"69":0,"70":2,"71":3,"72":3,"73":3,"74":3,"75":3,"76":1,"77":1,"78":8,"79":8,"80":8,"81":8,"82":8,"83":8,"84":8,"85":8,"86":1,"87":1,"88":1,"89":1,"90":1,"91":1,"92":1,"93":1,"94":1,"95":1,"96":1,"97":1,"98":1,"99":1,"100":1,"101":0,"102":0,"103":0,"104":0,"105":1},"branchMap":{"0":{"type":"branch","line":23,"loc":{"start":{"line":23,"column":2},"end":{"line":76,"column":3}},"locations":[{"start":{"line":23,"column":2},"end":{"line":76,"column":3}}]},"1":{"type":"branch","line":27,"loc":{"start":{"line":27,"column":23},"end":{"line":29,"column":5}},"locations":[{"start":{"line":27,"column":23},"end":{"line":29,"column":5}}]},"2":{"type":"branch","line":40,"loc":{"start":{"line":40,"column":8},"end":{"line":42,"column":45}},"locations":[{"start":{"line":40,"column":8},"end":{"line":42,"column":45}}]},"3":{"type":"branch","line":42,"loc":{"start":{"line":42,"column":10},"end":{"line":42,"column":45}},"locations":[{"start":{"line":42,"column":10},"end":{"line":42,"column":45}}]},"4":{"type":"branch","line":43,"loc":{"start":{"line":43,"column":8},"end":{"line":43,"column":41}},"locations":[{"start":{"line":43,"column":8},"end":{"line":43,"column":41}}]},"5":{"type":"branch","line":55,"loc":{"start":{"line":55,"column":-1},"end":{"line":71,"column":7}},"locations":[{"start":{"line":55,"column":-1},"end":{"line":71,"column":7}}]},"6":{"type":"branch","line":55,"loc":{"start":{"line":55,"column":-1},"end":{"line":56,"column":15}},"locations":[{"start":{"line":55,"column":-1},"end":{"line":56,"column":15}}]},"7":{"type":"branch","line":66,"loc":{"start":{"line":66,"column":10},"end":{"line":70,"column":9}},"locations":[{"start":{"line":66,"column":10},"end":{"line":70,"column":9}}]},"8":{"type":"branch","line":78,"loc":{"start":{"line":78,"column":2},"end":{"line":86,"column":3}},"locations":[{"start":{"line":78,"column":2},"end":{"line":86,"column":3}}]},"9":{"type":"branch","line":88,"loc":{"start":{"line":88,"column":10},"end":{"line":93,"column":3}},"locations":[{"start":{"line":88,"column":10},"end":{"line":93,"column":3}}]},"10":{"type":"branch","line":95,"loc":{"start":{"line":95,"column":2},"end":{"line":99,"column":3}},"locations":[{"start":{"line":95,"column":2},"end":{"line":99,"column":3}}]}},"b":{"0":[3],"1":[0],"2":[1],"3":[0],"4":[2],"5":[2],"6":[1],"7":[0],"8":[8],"9":[1],"10":[1]},"fnMap":{"0":{"name":"initDictionaries","decl":{"start":{"line":23,"column":2},"end":{"line":76,"column":3}},"loc":{"start":{"line":23,"column":2},"end":{"line":76,"column":3}},"line":23},"1":{"name":"SubstrateDictionaryService","decl":{"start":{"line":78,"column":2},"end":{"line":86,"column":3}},"loc":{"start":{"line":78,"column":2},"end":{"line":86,"column":3}},"line":78},"2":{"name":"getV1Dictionary","decl":{"start":{"line":88,"column":10},"end":{"line":93,"column":3}},"loc":{"start":{"line":88,"column":10},"end":{"line":93,"column":3}},"line":88},"3":{"name":"getSpecVersions","decl":{"start":{"line":95,"column":2},"end":{"line":99,"column":3}},"loc":{"start":{"line":95,"column":2},"end":{"line":99,"column":3}},"line":95},"4":{"name":"parseSpecVersions","decl":{"start":{"line":101,"column":2},"end":{"line":105,"column":3}},"loc":{"start":{"line":101,"column":2},"end":{"line":105,"column":3}},"line":101}},"f":{"0":3,"1":8,"2":1,"3":1,"4":0}},"/Users/scotttwiname/Projects/subql-main/packages/node/src/indexer/dictionary/types.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/node/src/indexer/dictionary/types.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":40}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":0}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":27}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":13}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":40}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":14}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":2}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":0}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":37}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":22}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":30}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":2}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1},"branchMap":{},"b":{},"fnMap":{},"f":{}},"/Users/scotttwiname/Projects/subql-main/packages/node/src/indexer/dictionary/v1/index.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/node/src/indexer/dictionary/v1/index.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":40}}},"s":{"0":1,"1":1,"2":1,"3":1},"branchMap":{},"b":{},"fnMap":{},"f":{}},"/Users/scotttwiname/Projects/subql-main/packages/node/src/indexer/dictionary/v1/substrateDictionaryV1.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/node/src/indexer/dictionary/v1/substrateDictionaryV1.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":42}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":54}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":8}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":13}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":14}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":22}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":25}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":22}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":23}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":19}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":23}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":32}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":33}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":80}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":73}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":8}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":27}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":49}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":14}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":27}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":61}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":40}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":69}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":72}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":62}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":0}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":33}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":31}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":27}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":10}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":21}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":17}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":48}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":7}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":23}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":29}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":8}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":6}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":4}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":1}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":0}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":32}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":30}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":27}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":10}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":25}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":40}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":14}},"51":{"start":{"line":52,"column":0},"end":{"line":52,"column":10}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":49}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":29}},"54":{"start":{"line":55,"column":0},"end":{"line":55,"column":39}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":6}},"56":{"start":{"line":57,"column":0},"end":{"line":57,"column":4}},"57":{"start":{"line":58,"column":0},"end":{"line":58,"column":1}},"58":{"start":{"line":59,"column":0},"end":{"line":59,"column":0}},"59":{"start":{"line":60,"column":0},"end":{"line":60,"column":28}},"60":{"start":{"line":61,"column":0},"end":{"line":61,"column":80}},"61":{"start":{"line":62,"column":0},"end":{"line":62,"column":2}},"62":{"start":{"line":63,"column":0},"end":{"line":63,"column":26}},"63":{"start":{"line":64,"column":0},"end":{"line":64,"column":28}},"64":{"start":{"line":65,"column":0},"end":{"line":65,"column":49}},"65":{"start":{"line":66,"column":0},"end":{"line":66,"column":25}},"66":{"start":{"line":67,"column":0},"end":{"line":67,"column":50}},"67":{"start":{"line":68,"column":0},"end":{"line":68,"column":24}},"68":{"start":{"line":69,"column":0},"end":{"line":69,"column":58}},"69":{"start":{"line":70,"column":0},"end":{"line":70,"column":38}},"70":{"start":{"line":71,"column":0},"end":{"line":71,"column":80}},"71":{"start":{"line":72,"column":0},"end":{"line":72,"column":23}},"72":{"start":{"line":73,"column":0},"end":{"line":73,"column":22}},"73":{"start":{"line":74,"column":0},"end":{"line":74,"column":77}},"74":{"start":{"line":75,"column":0},"end":{"line":75,"column":8}},"75":{"start":{"line":76,"column":0},"end":{"line":76,"column":5}},"76":{"start":{"line":77,"column":0},"end":{"line":77,"column":23}},"77":{"start":{"line":78,"column":0},"end":{"line":78,"column":3}},"78":{"start":{"line":79,"column":0},"end":{"line":79,"column":1}},"79":{"start":{"line":80,"column":0},"end":{"line":80,"column":0}},"80":{"start":{"line":81,"column":0},"end":{"line":81,"column":31}},"81":{"start":{"line":82,"column":0},"end":{"line":82,"column":42}},"82":{"start":{"line":83,"column":0},"end":{"line":83,"column":80}},"83":{"start":{"line":84,"column":0},"end":{"line":84,"column":2}},"84":{"start":{"line":85,"column":0},"end":{"line":85,"column":26}},"85":{"start":{"line":86,"column":0},"end":{"line":86,"column":22}},"86":{"start":{"line":87,"column":0},"end":{"line":87,"column":49}},"87":{"start":{"line":88,"column":0},"end":{"line":88,"column":8}},"88":{"start":{"line":89,"column":0},"end":{"line":89,"column":23}},"89":{"start":{"line":90,"column":0},"end":{"line":90,"column":38}},"90":{"start":{"line":91,"column":0},"end":{"line":91,"column":60}},"91":{"start":{"line":92,"column":0},"end":{"line":92,"column":48}},"92":{"start":{"line":93,"column":0},"end":{"line":93,"column":37}},"93":{"start":{"line":94,"column":0},"end":{"line":94,"column":40}},"94":{"start":{"line":95,"column":0},"end":{"line":95,"column":10}},"95":{"start":{"line":96,"column":0},"end":{"line":96,"column":57}},"96":{"start":{"line":97,"column":0},"end":{"line":97,"column":3}},"97":{"start":{"line":98,"column":0},"end":{"line":98,"column":1}},"98":{"start":{"line":99,"column":0},"end":{"line":99,"column":0}},"99":{"start":{"line":100,"column":0},"end":{"line":100,"column":38}},"100":{"start":{"line":101,"column":0},"end":{"line":101,"column":46}},"101":{"start":{"line":102,"column":0},"end":{"line":102,"column":80}},"102":{"start":{"line":103,"column":0},"end":{"line":103,"column":2}},"103":{"start":{"line":104,"column":0},"end":{"line":104,"column":37}},"104":{"start":{"line":105,"column":0},"end":{"line":105,"column":49}},"105":{"start":{"line":106,"column":0},"end":{"line":106,"column":29}},"106":{"start":{"line":107,"column":0},"end":{"line":107,"column":52}},"107":{"start":{"line":108,"column":0},"end":{"line":108,"column":0}},"108":{"start":{"line":109,"column":0},"end":{"line":109,"column":33}},"109":{"start":{"line":110,"column":0},"end":{"line":110,"column":67}},"110":{"start":{"line":111,"column":0},"end":{"line":111,"column":48}},"111":{"start":{"line":112,"column":0},"end":{"line":112,"column":78}},"112":{"start":{"line":113,"column":0},"end":{"line":113,"column":54}},"113":{"start":{"line":114,"column":0},"end":{"line":114,"column":27}},"114":{"start":{"line":115,"column":0},"end":{"line":115,"column":65}},"115":{"start":{"line":116,"column":0},"end":{"line":116,"column":40}},"116":{"start":{"line":117,"column":0},"end":{"line":117,"column":55}},"117":{"start":{"line":118,"column":0},"end":{"line":118,"column":55}},"118":{"start":{"line":119,"column":0},"end":{"line":119,"column":15}},"119":{"start":{"line":120,"column":0},"end":{"line":120,"column":12}},"120":{"start":{"line":121,"column":0},"end":{"line":121,"column":27}},"121":{"start":{"line":122,"column":0},"end":{"line":122,"column":42}},"122":{"start":{"line":123,"column":0},"end":{"line":123,"column":21}},"123":{"start":{"line":124,"column":0},"end":{"line":124,"column":11}},"124":{"start":{"line":125,"column":0},"end":{"line":125,"column":9}},"125":{"start":{"line":126,"column":0},"end":{"line":126,"column":74}},"126":{"start":{"line":127,"column":0},"end":{"line":127,"column":13}},"127":{"start":{"line":128,"column":0},"end":{"line":128,"column":23}},"128":{"start":{"line":129,"column":0},"end":{"line":129,"column":25}},"129":{"start":{"line":130,"column":0},"end":{"line":130,"column":10}},"130":{"start":{"line":131,"column":0},"end":{"line":131,"column":14}},"131":{"start":{"line":132,"column":0},"end":{"line":132,"column":38}},"132":{"start":{"line":133,"column":0},"end":{"line":133,"column":7}},"133":{"start":{"line":134,"column":0},"end":{"line":134,"column":33}},"134":{"start":{"line":135,"column":0},"end":{"line":135,"column":46}},"135":{"start":{"line":136,"column":0},"end":{"line":136,"column":40}},"136":{"start":{"line":137,"column":0},"end":{"line":137,"column":32}},"137":{"start":{"line":138,"column":0},"end":{"line":138,"column":40}},"138":{"start":{"line":139,"column":0},"end":{"line":139,"column":70}},"139":{"start":{"line":140,"column":0},"end":{"line":140,"column":46}},"140":{"start":{"line":141,"column":0},"end":{"line":141,"column":24}},"141":{"start":{"line":142,"column":0},"end":{"line":142,"column":13}},"142":{"start":{"line":143,"column":0},"end":{"line":143,"column":11}},"143":{"start":{"line":144,"column":0},"end":{"line":144,"column":16}},"144":{"start":{"line":145,"column":0},"end":{"line":145,"column":41}},"145":{"start":{"line":146,"column":0},"end":{"line":146,"column":69}},"146":{"start":{"line":147,"column":0},"end":{"line":147,"column":16}},"147":{"start":{"line":148,"column":0},"end":{"line":148,"column":44}},"148":{"start":{"line":149,"column":0},"end":{"line":149,"column":44}},"149":{"start":{"line":150,"column":0},"end":{"line":150,"column":46}},"150":{"start":{"line":151,"column":0},"end":{"line":151,"column":42}},"151":{"start":{"line":152,"column":0},"end":{"line":152,"column":15}},"152":{"start":{"line":153,"column":0},"end":{"line":153,"column":64}},"153":{"start":{"line":154,"column":0},"end":{"line":154,"column":20}},"154":{"start":{"line":155,"column":0},"end":{"line":155,"column":24}},"155":{"start":{"line":156,"column":0},"end":{"line":156,"column":13}},"156":{"start":{"line":157,"column":0},"end":{"line":157,"column":11}},"157":{"start":{"line":158,"column":0},"end":{"line":158,"column":16}},"158":{"start":{"line":159,"column":0},"end":{"line":159,"column":9}},"159":{"start":{"line":160,"column":0},"end":{"line":160,"column":42}},"160":{"start":{"line":161,"column":0},"end":{"line":161,"column":70}},"161":{"start":{"line":162,"column":0},"end":{"line":162,"column":77}},"162":{"start":{"line":163,"column":0},"end":{"line":163,"column":65}},"163":{"start":{"line":164,"column":0},"end":{"line":164,"column":20}},"164":{"start":{"line":165,"column":0},"end":{"line":165,"column":24}},"165":{"start":{"line":166,"column":0},"end":{"line":166,"column":13}},"166":{"start":{"line":167,"column":0},"end":{"line":167,"column":11}},"167":{"start":{"line":168,"column":0},"end":{"line":168,"column":16}},"168":{"start":{"line":169,"column":0},"end":{"line":169,"column":9}},"169":{"start":{"line":170,"column":0},"end":{"line":170,"column":16}},"170":{"start":{"line":171,"column":0},"end":{"line":171,"column":7}},"171":{"start":{"line":172,"column":0},"end":{"line":172,"column":5}},"172":{"start":{"line":173,"column":0},"end":{"line":173,"column":3}},"173":{"start":{"line":174,"column":0},"end":{"line":174,"column":0}},"174":{"start":{"line":175,"column":0},"end":{"line":175,"column":16}},"175":{"start":{"line":176,"column":0},"end":{"line":176,"column":17}},"176":{"start":{"line":177,"column":0},"end":{"line":177,"column":13}},"177":{"start":{"line":178,"column":0},"end":{"line":178,"column":39}},"178":{"start":{"line":179,"column":0},"end":{"line":179,"column":48}},"179":{"start":{"line":180,"column":0},"end":{"line":180,"column":10}},"180":{"start":{"line":181,"column":0},"end":{"line":181,"column":4}},"181":{"start":{"line":182,"column":0},"end":{"line":182,"column":1}},"182":{"start":{"line":183,"column":0},"end":{"line":183,"column":0}},"183":{"start":{"line":184,"column":0},"end":{"line":184,"column":52}},"184":{"start":{"line":185,"column":0},"end":{"line":185,"column":0}},"185":{"start":{"line":186,"column":0},"end":{"line":186,"column":78}},"186":{"start":{"line":187,"column":0},"end":{"line":187,"column":14}},"187":{"start":{"line":188,"column":0},"end":{"line":188,"column":29}},"188":{"start":{"line":189,"column":0},"end":{"line":189,"column":27}},"189":{"start":{"line":190,"column":0},"end":{"line":190,"column":32}},"190":{"start":{"line":191,"column":0},"end":{"line":191,"column":31}},"191":{"start":{"line":192,"column":0},"end":{"line":192,"column":30}},"192":{"start":{"line":193,"column":0},"end":{"line":193,"column":42}},"193":{"start":{"line":194,"column":0},"end":{"line":194,"column":27}},"194":{"start":{"line":195,"column":0},"end":{"line":195,"column":21}},"195":{"start":{"line":196,"column":0},"end":{"line":196,"column":5}},"196":{"start":{"line":197,"column":0},"end":{"line":197,"column":10}},"197":{"start":{"line":198,"column":0},"end":{"line":198,"column":20}},"198":{"start":{"line":199,"column":0},"end":{"line":199,"column":41}},"199":{"start":{"line":200,"column":0},"end":{"line":200,"column":17}},"200":{"start":{"line":201,"column":0},"end":{"line":201,"column":19}},"201":{"start":{"line":202,"column":0},"end":{"line":202,"column":6}},"202":{"start":{"line":203,"column":0},"end":{"line":203,"column":3}},"203":{"start":{"line":204,"column":0},"end":{"line":204,"column":0}},"204":{"start":{"line":205,"column":0},"end":{"line":205,"column":22}},"205":{"start":{"line":206,"column":0},"end":{"line":206,"column":29}},"206":{"start":{"line":207,"column":0},"end":{"line":207,"column":27}},"207":{"start":{"line":208,"column":0},"end":{"line":208,"column":32}},"208":{"start":{"line":209,"column":0},"end":{"line":209,"column":21}},"209":{"start":{"line":210,"column":0},"end":{"line":210,"column":30}},"210":{"start":{"line":211,"column":0},"end":{"line":211,"column":42}},"211":{"start":{"line":212,"column":0},"end":{"line":212,"column":27}},"212":{"start":{"line":213,"column":0},"end":{"line":213,"column":21}},"213":{"start":{"line":214,"column":0},"end":{"line":214,"column":37}},"214":{"start":{"line":215,"column":0},"end":{"line":215,"column":49}},"215":{"start":{"line":216,"column":0},"end":{"line":216,"column":14}},"216":{"start":{"line":217,"column":0},"end":{"line":217,"column":17}},"217":{"start":{"line":218,"column":0},"end":{"line":218,"column":19}},"218":{"start":{"line":219,"column":0},"end":{"line":219,"column":21}},"219":{"start":{"line":220,"column":0},"end":{"line":220,"column":20}},"220":{"start":{"line":221,"column":0},"end":{"line":221,"column":14}},"221":{"start":{"line":222,"column":0},"end":{"line":222,"column":6}},"222":{"start":{"line":223,"column":0},"end":{"line":223,"column":28}},"223":{"start":{"line":224,"column":0},"end":{"line":224,"column":22}},"224":{"start":{"line":225,"column":0},"end":{"line":225,"column":3}},"225":{"start":{"line":226,"column":0},"end":{"line":226,"column":0}},"226":{"start":{"line":227,"column":0},"end":{"line":227,"column":30}},"227":{"start":{"line":228,"column":0},"end":{"line":228,"column":39}},"228":{"start":{"line":229,"column":0},"end":{"line":229,"column":31}},"229":{"start":{"line":230,"column":0},"end":{"line":230,"column":75}},"230":{"start":{"line":231,"column":0},"end":{"line":231,"column":3}},"231":{"start":{"line":232,"column":0},"end":{"line":232,"column":0}},"232":{"start":{"line":233,"column":0},"end":{"line":233,"column":64}},"233":{"start":{"line":234,"column":0},"end":{"line":234,"column":28}},"234":{"start":{"line":235,"column":0},"end":{"line":235,"column":16}},"235":{"start":{"line":236,"column":0},"end":{"line":236,"column":5}},"236":{"start":{"line":237,"column":0},"end":{"line":237,"column":61}},"237":{"start":{"line":238,"column":0},"end":{"line":238,"column":57}},"238":{"start":{"line":239,"column":0},"end":{"line":239,"column":36}},"239":{"start":{"line":240,"column":0},"end":{"line":240,"column":0}},"240":{"start":{"line":241,"column":0},"end":{"line":241,"column":36}},"241":{"start":{"line":242,"column":0},"end":{"line":242,"column":55}},"242":{"start":{"line":243,"column":0},"end":{"line":243,"column":37}},"243":{"start":{"line":244,"column":0},"end":{"line":244,"column":31}},"244":{"start":{"line":245,"column":0},"end":{"line":245,"column":51}},"245":{"start":{"line":246,"column":0},"end":{"line":246,"column":57}},"246":{"start":{"line":247,"column":0},"end":{"line":247,"column":9}},"247":{"start":{"line":248,"column":0},"end":{"line":248,"column":5}},"248":{"start":{"line":249,"column":0},"end":{"line":249,"column":51}},"249":{"start":{"line":250,"column":0},"end":{"line":250,"column":43}},"250":{"start":{"line":251,"column":0},"end":{"line":251,"column":42}},"251":{"start":{"line":252,"column":0},"end":{"line":252,"column":39}},"252":{"start":{"line":253,"column":0},"end":{"line":253,"column":55}},"253":{"start":{"line":254,"column":0},"end":{"line":254,"column":75}},"254":{"start":{"line":255,"column":0},"end":{"line":255,"column":53}},"255":{"start":{"line":256,"column":0},"end":{"line":256,"column":11}},"256":{"start":{"line":257,"column":0},"end":{"line":257,"column":7}},"257":{"start":{"line":258,"column":0},"end":{"line":258,"column":5}},"258":{"start":{"line":259,"column":0},"end":{"line":259,"column":49}},"259":{"start":{"line":260,"column":0},"end":{"line":260,"column":3}},"260":{"start":{"line":261,"column":0},"end":{"line":261,"column":0}},"261":{"start":{"line":262,"column":0},"end":{"line":262,"column":62}},"262":{"start":{"line":263,"column":0},"end":{"line":263,"column":46}},"263":{"start":{"line":264,"column":0},"end":{"line":264,"column":9}},"264":{"start":{"line":265,"column":0},"end":{"line":265,"column":33}},"265":{"start":{"line":266,"column":0},"end":{"line":266,"column":27}},"266":{"start":{"line":267,"column":0},"end":{"line":267,"column":28}},"267":{"start":{"line":268,"column":0},"end":{"line":268,"column":11}},"268":{"start":{"line":269,"column":0},"end":{"line":269,"column":42}},"269":{"start":{"line":270,"column":0},"end":{"line":270,"column":8}},"270":{"start":{"line":271,"column":0},"end":{"line":271,"column":0}},"271":{"start":{"line":272,"column":0},"end":{"line":272,"column":44}},"272":{"start":{"line":273,"column":0},"end":{"line":273,"column":50}},"273":{"start":{"line":274,"column":0},"end":{"line":274,"column":41}},"274":{"start":{"line":275,"column":0},"end":{"line":275,"column":19}},"275":{"start":{"line":276,"column":0},"end":{"line":276,"column":61}},"276":{"start":{"line":277,"column":0},"end":{"line":277,"column":23}},"277":{"start":{"line":278,"column":0},"end":{"line":278,"column":5}},"278":{"start":{"line":279,"column":0},"end":{"line":279,"column":3}},"279":{"start":{"line":280,"column":0},"end":{"line":280,"column":0}},"280":{"start":{"line":281,"column":0},"end":{"line":281,"column":51}},"281":{"start":{"line":282,"column":0},"end":{"line":282,"column":9}},"282":{"start":{"line":283,"column":0},"end":{"line":283,"column":69}},"283":{"start":{"line":284,"column":0},"end":{"line":284,"column":13}},"284":{"start":{"line":285,"column":0},"end":{"line":285,"column":23}},"285":{"start":{"line":286,"column":0},"end":{"line":286,"column":5}},"286":{"start":{"line":287,"column":0},"end":{"line":287,"column":3}},"287":{"start":{"line":288,"column":0},"end":{"line":288,"column":0}},"288":{"start":{"line":289,"column":0},"end":{"line":289,"column":40}},"289":{"start":{"line":290,"column":0},"end":{"line":290,"column":30}},"290":{"start":{"line":291,"column":0},"end":{"line":291,"column":7}},"291":{"start":{"line":292,"column":0},"end":{"line":292,"column":28}},"292":{"start":{"line":293,"column":0},"end":{"line":293,"column":56}},"293":{"start":{"line":294,"column":0},"end":{"line":294,"column":8}},"294":{"start":{"line":295,"column":0},"end":{"line":295,"column":7}},"295":{"start":{"line":296,"column":0},"end":{"line":296,"column":31}},"296":{"start":{"line":297,"column":0},"end":{"line":297,"column":18}},"297":{"start":{"line":298,"column":0},"end":{"line":298,"column":11}},"298":{"start":{"line":299,"column":0},"end":{"line":299,"column":28}},"299":{"start":{"line":300,"column":0},"end":{"line":300,"column":43}},"300":{"start":{"line":301,"column":0},"end":{"line":301,"column":12}},"301":{"start":{"line":302,"column":0},"end":{"line":302,"column":10}},"302":{"start":{"line":303,"column":0},"end":{"line":303,"column":15}},"303":{"start":{"line":304,"column":0},"end":{"line":304,"column":38}},"304":{"start":{"line":305,"column":0},"end":{"line":305,"column":10}},"305":{"start":{"line":306,"column":0},"end":{"line":306,"column":8}},"306":{"start":{"line":307,"column":0},"end":{"line":307,"column":6}},"307":{"start":{"line":308,"column":0},"end":{"line":308,"column":33}},"308":{"start":{"line":309,"column":0},"end":{"line":309,"column":3}},"309":{"start":{"line":310,"column":0},"end":{"line":310,"column":1}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"38":1,"39":1,"40":1,"41":1,"42":1,"43":1,"44":1,"45":1,"46":1,"47":1,"48":1,"49":1,"50":1,"51":2,"52":2,"53":2,"54":2,"55":1,"56":1,"57":1,"58":1,"59":9,"60":9,"61":9,"62":9,"63":9,"64":9,"65":9,"66":9,"67":8,"68":9,"69":1,"70":1,"71":1,"72":0,"73":0,"74":0,"75":0,"76":1,"77":1,"78":9,"79":1,"80":0,"81":0,"82":0,"83":0,"84":0,"85":0,"86":0,"87":0,"88":0,"89":0,"90":0,"91":0,"92":0,"93":0,"94":0,"95":0,"96":0,"97":0,"98":1,"99":1,"100":7,"101":7,"102":7,"103":7,"104":7,"105":7,"106":7,"107":7,"108":7,"109":7,"110":7,"111":9,"112":9,"113":9,"114":1,"115":1,"116":1,"117":1,"118":1,"119":1,"120":1,"121":1,"122":1,"123":1,"124":1,"125":0,"126":0,"127":0,"128":0,"129":0,"130":9,"131":8,"132":8,"133":8,"134":8,"135":9,"136":3,"137":9,"138":1,"139":1,"140":0,"141":0,"142":1,"143":1,"144":9,"145":1,"146":1,"147":1,"148":1,"149":1,"150":0,"151":1,"152":1,"153":1,"154":0,"155":0,"156":1,"157":1,"158":1,"159":9,"160":1,"161":1,"162":1,"163":1,"164":0,"165":0,"166":1,"167":1,"168":1,"169":9,"170":9,"171":9,"172":2,"173":2,"174":2,"175":2,"176":2,"177":3,"178":3,"179":2,"180":2,"181":2,"182":1,"183":1,"184":1,"185":1,"186":1,"187":2,"188":2,"189":2,"190":2,"191":2,"192":2,"193":2,"194":2,"195":2,"196":2,"197":2,"198":2,"199":2,"200":2,"201":2,"202":2,"203":1,"204":1,"205":2,"206":2,"207":2,"208":2,"209":2,"210":2,"211":2,"212":2,"213":2,"214":2,"215":2,"216":2,"217":2,"218":2,"219":2,"220":2,"221":2,"222":2,"223":2,"224":2,"225":1,"226":1,"227":0,"228":0,"229":0,"230":0,"231":1,"232":1,"233":1,"234":0,"235":0,"236":1,"237":1,"238":1,"239":1,"240":1,"241":1,"242":52,"243":52,"244":52,"245":52,"246":52,"247":52,"248":1,"249":1,"250":1,"251":1,"252":1,"253":1,"254":1,"255":1,"256":1,"257":1,"258":1,"259":1,"260":1,"261":1,"262":1,"263":1,"264":1,"265":1,"266":1,"267":1,"268":1,"269":1,"270":1,"271":1,"272":1,"273":1,"274":1,"275":0,"276":0,"277":0,"278":1,"279":1,"280":1,"281":1,"282":1,"283":1,"284":0,"285":0,"286":1,"287":1,"288":1,"289":1,"290":1,"291":1,"292":1,"293":1,"294":1,"295":1,"296":1,"297":1,"298":1,"299":1,"300":1,"301":1,"302":1,"303":1,"304":1,"305":1,"306":1,"307":1,"308":1,"309":1},"branchMap":{"0":{"type":"branch","line":30,"loc":{"start":{"line":30,"column":0},"end":{"line":43,"column":1}},"locations":[{"start":{"line":30,"column":0},"end":{"line":43,"column":1}}]},"1":{"type":"branch","line":45,"loc":{"start":{"line":45,"column":0},"end":{"line":58,"column":1}},"locations":[{"start":{"line":45,"column":0},"end":{"line":58,"column":1}}]},"2":{"type":"branch","line":51,"loc":{"start":{"line":51,"column":6},"end":{"line":55,"column":39}},"locations":[{"start":{"line":51,"column":6},"end":{"line":55,"column":39}}]},"3":{"type":"branch","line":53,"loc":{"start":{"line":53,"column":34},"end":{"line":53,"column":42}},"locations":[{"start":{"line":53,"column":34},"end":{"line":53,"column":42}}]},"4":{"type":"branch","line":53,"loc":{"start":{"line":53,"column":43},"end":{"line":53,"column":48}},"locations":[{"start":{"line":53,"column":43},"end":{"line":53,"column":48}}]},"5":{"type":"branch","line":60,"loc":{"start":{"line":60,"column":0},"end":{"line":79,"column":1}},"locations":[{"start":{"line":60,"column":0},"end":{"line":79,"column":1}}]},"6":{"type":"branch","line":67,"loc":{"start":{"line":67,"column":21},"end":{"line":67,"column":47}},"locations":[{"start":{"line":67,"column":21},"end":{"line":67,"column":47}}]},"7":{"type":"branch","line":67,"loc":{"start":{"line":67,"column":49},"end":{"line":69,"column":9}},"locations":[{"start":{"line":67,"column":49},"end":{"line":69,"column":9}}]},"8":{"type":"branch","line":69,"loc":{"start":{"line":69,"column":3},"end":{"line":78,"column":3}},"locations":[{"start":{"line":69,"column":3},"end":{"line":78,"column":3}}]},"9":{"type":"branch","line":72,"loc":{"start":{"line":72,"column":22},"end":{"line":76,"column":5}},"locations":[{"start":{"line":72,"column":22},"end":{"line":76,"column":5}}]},"10":{"type":"branch","line":101,"loc":{"start":{"line":101,"column":0},"end":{"line":182,"column":1}},"locations":[{"start":{"line":101,"column":0},"end":{"line":182,"column":1}}]},"11":{"type":"branch","line":110,"loc":{"start":{"line":110,"column":34},"end":{"line":110,"column":54}},"locations":[{"start":{"line":110,"column":34},"end":{"line":110,"column":54}}]},"12":{"type":"branch","line":110,"loc":{"start":{"line":110,"column":55},"end":{"line":110,"column":66}},"locations":[{"start":{"line":110,"column":55},"end":{"line":110,"column":66}}]},"13":{"type":"branch","line":111,"loc":{"start":{"line":111,"column":47},"end":{"line":172,"column":5}},"locations":[{"start":{"line":111,"column":47},"end":{"line":172,"column":5}}]},"14":{"type":"branch","line":114,"loc":{"start":{"line":114,"column":26},"end":{"line":131,"column":13}},"locations":[{"start":{"line":114,"column":26},"end":{"line":131,"column":13}}]},"15":{"type":"branch","line":126,"loc":{"start":{"line":126,"column":-1},"end":{"line":131,"column":13}},"locations":[{"start":{"line":126,"column":-1},"end":{"line":131,"column":13}}]},"16":{"type":"branch","line":131,"loc":{"start":{"line":131,"column":7},"end":{"line":136,"column":37}},"locations":[{"start":{"line":131,"column":7},"end":{"line":136,"column":37}}]},"17":{"type":"branch","line":136,"loc":{"start":{"line":136,"column":30},"end":{"line":136,"column":40}},"locations":[{"start":{"line":136,"column":30},"end":{"line":136,"column":40}}]},"18":{"type":"branch","line":137,"loc":{"start":{"line":137,"column":-1},"end":{"line":138,"column":13}},"locations":[{"start":{"line":137,"column":-1},"end":{"line":138,"column":13}}]},"19":{"type":"branch","line":138,"loc":{"start":{"line":138,"column":8},"end":{"line":144,"column":16}},"locations":[{"start":{"line":138,"column":8},"end":{"line":144,"column":16}}]},"20":{"type":"branch","line":140,"loc":{"start":{"line":140,"column":45},"end":{"line":142,"column":13}},"locations":[{"start":{"line":140,"column":45},"end":{"line":142,"column":13}}]},"21":{"type":"branch","line":145,"loc":{"start":{"line":145,"column":8},"end":{"line":159,"column":9}},"locations":[{"start":{"line":145,"column":8},"end":{"line":159,"column":9}}]},"22":{"type":"branch","line":148,"loc":{"start":{"line":148,"column":41},"end":{"line":149,"column":41}},"locations":[{"start":{"line":148,"column":41},"end":{"line":149,"column":41}}]},"23":{"type":"branch","line":149,"loc":{"start":{"line":149,"column":41},"end":{"line":150,"column":43}},"locations":[{"start":{"line":149,"column":41},"end":{"line":150,"column":43}}]},"24":{"type":"branch","line":150,"loc":{"start":{"line":150,"column":43},"end":{"line":151,"column":42}},"locations":[{"start":{"line":150,"column":43},"end":{"line":151,"column":42}}]},"25":{"type":"branch","line":154,"loc":{"start":{"line":154,"column":13},"end":{"line":156,"column":13}},"locations":[{"start":{"line":154,"column":13},"end":{"line":156,"column":13}}]},"26":{"type":"branch","line":160,"loc":{"start":{"line":160,"column":8},"end":{"line":169,"column":9}},"locations":[{"start":{"line":160,"column":8},"end":{"line":169,"column":9}}]},"27":{"type":"branch","line":162,"loc":{"start":{"line":162,"column":43},"end":{"line":162,"column":74}},"locations":[{"start":{"line":162,"column":43},"end":{"line":162,"column":74}}]},"28":{"type":"branch","line":164,"loc":{"start":{"line":164,"column":13},"end":{"line":166,"column":13}},"locations":[{"start":{"line":164,"column":13},"end":{"line":166,"column":13}}]},"29":{"type":"branch","line":170,"loc":{"start":{"line":170,"column":8},"end":{"line":170,"column":16}},"locations":[{"start":{"line":170,"column":8},"end":{"line":170,"column":16}}]},"30":{"type":"branch","line":173,"loc":{"start":{"line":173,"column":-1},"end":{"line":182,"column":1}},"locations":[{"start":{"line":173,"column":-1},"end":{"line":182,"column":1}}]},"31":{"type":"branch","line":177,"loc":{"start":{"line":177,"column":4},"end":{"line":180,"column":9}},"locations":[{"start":{"line":177,"column":4},"end":{"line":180,"column":9}}]},"32":{"type":"branch","line":179,"loc":{"start":{"line":179,"column":32},"end":{"line":179,"column":46}},"locations":[{"start":{"line":179,"column":32},"end":{"line":179,"column":46}}]},"33":{"type":"branch","line":187,"loc":{"start":{"line":187,"column":2},"end":{"line":203,"column":3}},"locations":[{"start":{"line":187,"column":2},"end":{"line":203,"column":3}}]},"34":{"type":"branch","line":205,"loc":{"start":{"line":205,"column":9},"end":{"line":225,"column":3}},"locations":[{"start":{"line":205,"column":9},"end":{"line":225,"column":3}}]},"35":{"type":"branch","line":233,"loc":{"start":{"line":233,"column":2},"end":{"line":260,"column":3}},"locations":[{"start":{"line":233,"column":2},"end":{"line":260,"column":3}}]},"36":{"type":"branch","line":234,"loc":{"start":{"line":234,"column":27},"end":{"line":236,"column":5}},"locations":[{"start":{"line":234,"column":27},"end":{"line":236,"column":5}}]},"37":{"type":"branch","line":242,"loc":{"start":{"line":242,"column":54},"end":{"line":248,"column":5}},"locations":[{"start":{"line":242,"column":54},"end":{"line":248,"column":5}}]},"38":{"type":"branch","line":262,"loc":{"start":{"line":262,"column":2},"end":{"line":279,"column":3}},"locations":[{"start":{"line":262,"column":2},"end":{"line":279,"column":3}}]},"39":{"type":"branch","line":275,"loc":{"start":{"line":275,"column":6},"end":{"line":278,"column":5}},"locations":[{"start":{"line":275,"column":6},"end":{"line":278,"column":5}}]},"40":{"type":"branch","line":281,"loc":{"start":{"line":281,"column":2},"end":{"line":287,"column":3}},"locations":[{"start":{"line":281,"column":2},"end":{"line":287,"column":3}}]},"41":{"type":"branch","line":284,"loc":{"start":{"line":284,"column":6},"end":{"line":286,"column":5}},"locations":[{"start":{"line":284,"column":6},"end":{"line":286,"column":5}}]},"42":{"type":"branch","line":289,"loc":{"start":{"line":289,"column":10},"end":{"line":309,"column":3}},"locations":[{"start":{"line":289,"column":10},"end":{"line":309,"column":3}}]}},"b":{"0":[1],"1":[1],"2":[2],"3":[1],"4":[1],"5":[9],"6":[8],"7":[8],"8":[1],"9":[0],"10":[7],"11":[1],"12":[6],"13":[9],"14":[1],"15":[0],"16":[8],"17":[5],"18":[3],"19":[1],"20":[0],"21":[1],"22":[0],"23":[0],"24":[0],"25":[0],"26":[1],"27":[0],"28":[0],"29":[0],"30":[2],"31":[3],"32":[6],"33":[2],"34":[2],"35":[1],"36":[0],"37":[52],"38":[1],"39":[0],"40":[1],"41":[0],"42":[1]},"fnMap":{"0":{"name":"eventFilterToQueryEntry","decl":{"start":{"line":30,"column":0},"end":{"line":43,"column":1}},"loc":{"start":{"line":30,"column":0},"end":{"line":43,"column":1}},"line":30},"1":{"name":"callFilterToQueryEntry","decl":{"start":{"line":45,"column":0},"end":{"line":58,"column":1}},"loc":{"start":{"line":45,"column":0},"end":{"line":58,"column":1}},"line":45},"2":{"name":"getBaseHandlerKind","decl":{"start":{"line":60,"column":0},"end":{"line":79,"column":1}},"loc":{"start":{"line":60,"column":0},"end":{"line":79,"column":1}},"line":60},"3":{"name":"getBaseHandlerFilters","decl":{"start":{"line":81,"column":0},"end":{"line":98,"column":1}},"loc":{"start":{"line":81,"column":0},"end":{"line":98,"column":1}},"line":81},"4":{"name":"buildDictionaryV1QueryEntries","decl":{"start":{"line":101,"column":0},"end":{"line":182,"column":1}},"loc":{"start":{"line":101,"column":0},"end":{"line":182,"column":1}},"line":101},"5":{"name":"SubstrateDictionaryV1","decl":{"start":{"line":187,"column":2},"end":{"line":203,"column":3}},"loc":{"start":{"line":187,"column":2},"end":{"line":203,"column":3}},"line":187},"6":{"name":"create","decl":{"start":{"line":205,"column":9},"end":{"line":225,"column":3}},"loc":{"start":{"line":205,"column":9},"end":{"line":225,"column":3}},"line":205},"7":{"name":"buildDictionaryQueryEntries","decl":{"start":{"line":227,"column":2},"end":{"line":231,"column":3}},"loc":{"start":{"line":227,"column":2},"end":{"line":231,"column":3}},"line":227},"8":{"name":"parseSpecVersions","decl":{"start":{"line":233,"column":2},"end":{"line":260,"column":3}},"loc":{"start":{"line":233,"column":2},"end":{"line":260,"column":3}},"line":233},"9":{"name":"getSpecVersionsRaw","decl":{"start":{"line":262,"column":2},"end":{"line":279,"column":3}},"loc":{"start":{"line":262,"column":2},"end":{"line":279,"column":3}},"line":262},"10":{"name":"getSpecVersions","decl":{"start":{"line":281,"column":2},"end":{"line":287,"column":3}},"loc":{"start":{"line":281,"column":2},"end":{"line":287,"column":3}},"line":281},"11":{"name":"specVersionQuery","decl":{"start":{"line":289,"column":10},"end":{"line":309,"column":3}},"loc":{"start":{"line":289,"column":10},"end":{"line":309,"column":3}},"line":289}},"f":{"0":1,"1":1,"2":9,"3":0,"4":7,"5":2,"6":2,"7":0,"8":1,"9":1,"10":1,"11":1}},"/Users/scotttwiname/Projects/subql-main/packages/node/src/indexer/dictionary/v2/index.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/node/src/indexer/dictionary/v2/index.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":40}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":24}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1},"branchMap":{},"b":{},"fnMap":{},"f":{}},"/Users/scotttwiname/Projects/subql-main/packages/node/src/indexer/dictionary/v2/substrateDictionaryV2.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/node/src/indexer/dictionary/v2/substrateDictionaryV2.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":54}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":62}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":8}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":13}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":15}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":21}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":12}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":25}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":28}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":9}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":26}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":67}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":69}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":58}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":0}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":28}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":0}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":44}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":37}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":36}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":65}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":13}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":21}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":4}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":8}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":30}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":1}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":0}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":56}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":17}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":22}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":33}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":3}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":40}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":39}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":29}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":52}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":3}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":0}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":14}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":21}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":27}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":32}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":29}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":21}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":5}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":10}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":15}},"51":{"start":{"line":52,"column":0},"end":{"line":52,"column":41}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":17}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":19}},"54":{"start":{"line":55,"column":0},"end":{"line":55,"column":6}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":3}},"56":{"start":{"line":57,"column":0},"end":{"line":57,"column":0}},"57":{"start":{"line":58,"column":0},"end":{"line":58,"column":22}},"58":{"start":{"line":59,"column":0},"end":{"line":59,"column":21}},"59":{"start":{"line":60,"column":0},"end":{"line":60,"column":27}},"60":{"start":{"line":61,"column":0},"end":{"line":61,"column":32}},"61":{"start":{"line":62,"column":0},"end":{"line":62,"column":29}},"62":{"start":{"line":63,"column":0},"end":{"line":63,"column":21}},"63":{"start":{"line":64,"column":0},"end":{"line":64,"column":37}},"64":{"start":{"line":65,"column":0},"end":{"line":65,"column":49}},"65":{"start":{"line":66,"column":0},"end":{"line":66,"column":15}},"66":{"start":{"line":67,"column":0},"end":{"line":67,"column":17}},"67":{"start":{"line":68,"column":0},"end":{"line":68,"column":19}},"68":{"start":{"line":69,"column":0},"end":{"line":69,"column":14}},"69":{"start":{"line":70,"column":0},"end":{"line":70,"column":14}},"70":{"start":{"line":71,"column":0},"end":{"line":71,"column":6}},"71":{"start":{"line":72,"column":0},"end":{"line":72,"column":28}},"72":{"start":{"line":73,"column":0},"end":{"line":73,"column":22}},"73":{"start":{"line":74,"column":0},"end":{"line":74,"column":3}},"74":{"start":{"line":75,"column":0},"end":{"line":75,"column":0}},"75":{"start":{"line":76,"column":0},"end":{"line":76,"column":5}},"76":{"start":{"line":77,"column":0},"end":{"line":77,"column":4}},"77":{"start":{"line":78,"column":0},"end":{"line":78,"column":22}},"78":{"start":{"line":79,"column":0},"end":{"line":79,"column":107}},"79":{"start":{"line":80,"column":0},"end":{"line":80,"column":21}},"80":{"start":{"line":81,"column":0},"end":{"line":81,"column":22}},"81":{"start":{"line":82,"column":0},"end":{"line":82,"column":5}},"82":{"start":{"line":83,"column":0},"end":{"line":83,"column":62}},"83":{"start":{"line":84,"column":0},"end":{"line":84,"column":16}},"84":{"start":{"line":85,"column":0},"end":{"line":85,"column":23}},"85":{"start":{"line":86,"column":0},"end":{"line":86,"column":26}},"86":{"start":{"line":87,"column":0},"end":{"line":87,"column":28}},"87":{"start":{"line":88,"column":0},"end":{"line":88,"column":79}},"88":{"start":{"line":89,"column":0},"end":{"line":89,"column":58}},"89":{"start":{"line":90,"column":0},"end":{"line":90,"column":3}},"90":{"start":{"line":91,"column":0},"end":{"line":91,"column":0}},"91":{"start":{"line":92,"column":0},"end":{"line":92,"column":50}},"92":{"start":{"line":93,"column":0},"end":{"line":93,"column":24}},"93":{"start":{"line":94,"column":0},"end":{"line":94,"column":43}},"94":{"start":{"line":95,"column":0},"end":{"line":95,"column":61}},"95":{"start":{"line":96,"column":0},"end":{"line":96,"column":21}},"96":{"start":{"line":97,"column":0},"end":{"line":97,"column":3}},"97":{"start":{"line":98,"column":0},"end":{"line":98,"column":1}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":0,"38":0,"39":0,"40":0,"41":1,"42":1,"43":3,"44":3,"45":3,"46":3,"47":3,"48":3,"49":3,"50":3,"51":3,"52":3,"53":3,"54":3,"55":3,"56":1,"57":1,"58":3,"59":3,"60":3,"61":3,"62":3,"63":3,"64":3,"65":3,"66":3,"67":3,"68":3,"69":3,"70":3,"71":3,"72":1,"73":1,"74":1,"75":1,"76":1,"77":1,"78":1,"79":1,"80":1,"81":1,"82":1,"83":1,"84":0,"85":0,"86":0,"87":0,"88":0,"89":0,"90":1,"91":1,"92":1,"93":0,"94":0,"95":0,"96":0,"97":1},"branchMap":{"0":{"type":"branch","line":43,"loc":{"start":{"line":43,"column":2},"end":{"line":56,"column":3}},"locations":[{"start":{"line":43,"column":2},"end":{"line":56,"column":3}}]},"1":{"type":"branch","line":52,"loc":{"start":{"line":52,"column":13},"end":{"line":52,"column":40}},"locations":[{"start":{"line":52,"column":13},"end":{"line":52,"column":40}}]},"2":{"type":"branch","line":58,"loc":{"start":{"line":58,"column":9},"end":{"line":74,"column":3}},"locations":[{"start":{"line":58,"column":9},"end":{"line":74,"column":3}}]},"3":{"type":"branch","line":73,"loc":{"start":{"line":73,"column":-1},"end":{"line":74,"column":3}},"locations":[{"start":{"line":73,"column":-1},"end":{"line":74,"column":3}}]}},"b":{"0":[3],"1":[0],"2":[3],"3":[1]},"fnMap":{"0":{"name":"buildDictionaryV2QueryEntry","decl":{"start":{"line":21,"column":0},"end":{"line":30,"column":1}},"loc":{"start":{"line":21,"column":0},"end":{"line":30,"column":1}},"line":21},"1":{"name":"buildDictionaryQueryEntries","decl":{"start":{"line":37,"column":12},"end":{"line":41,"column":3}},"loc":{"start":{"line":37,"column":12},"end":{"line":41,"column":3}},"line":37},"2":{"name":"SubstrateDictionaryV2","decl":{"start":{"line":43,"column":2},"end":{"line":56,"column":3}},"loc":{"start":{"line":43,"column":2},"end":{"line":56,"column":3}},"line":43},"3":{"name":"create","decl":{"start":{"line":58,"column":9},"end":{"line":74,"column":3}},"loc":{"start":{"line":58,"column":9},"end":{"line":74,"column":3}},"line":58},"4":{"name":"getData","decl":{"start":{"line":84,"column":2},"end":{"line":90,"column":3}},"loc":{"start":{"line":84,"column":2},"end":{"line":90,"column":3}},"line":84},"5":{"name":"convertResponseBlocks","decl":{"start":{"line":93,"column":2},"end":{"line":97,"column":3}},"loc":{"start":{"line":93,"column":2},"end":{"line":97,"column":3}},"line":93}},"f":{"0":0,"1":0,"2":3,"3":3,"4":0,"5":0}},"/Users/scotttwiname/Projects/subql-main/packages/node/src/indexer/dictionary/v2/types.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/node/src/indexer/dictionary/v2/types.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":58}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":0}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":3}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":57}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":3}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":69}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1},"branchMap":{},"b":{},"fnMap":{},"f":{}},"/Users/scotttwiname/Projects/subql-main/packages/node/src/indexer/ds-processor.service.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/node/src/indexer/ds-processor.service.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":44}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":55}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":8}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":13}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":31}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":33}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":58}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":8}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":36}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":36}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":28}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":25}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":22}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":23}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":19}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":22}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":0}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":52}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":33}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":36}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":4}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":33}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":67}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":2}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":12}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":56}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":57}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":68}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":110}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":45}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":1}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":0}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":52}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":33}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":36}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":4}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":33}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":67}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":2}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":12}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":56}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":57}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":68}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":43}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":1}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":0}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":52}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":33}},"51":{"start":{"line":52,"column":0},"end":{"line":52,"column":36}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":4}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":33}},"54":{"start":{"line":55,"column":0},"end":{"line":55,"column":67}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":2}},"56":{"start":{"line":57,"column":0},"end":{"line":57,"column":12}},"57":{"start":{"line":58,"column":0},"end":{"line":58,"column":56}},"58":{"start":{"line":59,"column":0},"end":{"line":59,"column":57}},"59":{"start":{"line":60,"column":0},"end":{"line":60,"column":55}},"60":{"start":{"line":61,"column":0},"end":{"line":61,"column":55}},"61":{"start":{"line":62,"column":0},"end":{"line":62,"column":21}},"62":{"start":{"line":63,"column":0},"end":{"line":63,"column":3}},"63":{"start":{"line":64,"column":0},"end":{"line":64,"column":0}},"64":{"start":{"line":65,"column":0},"end":{"line":65,"column":56}},"65":{"start":{"line":66,"column":0},"end":{"line":66,"column":56}},"66":{"start":{"line":67,"column":0},"end":{"line":67,"column":3}},"67":{"start":{"line":68,"column":0},"end":{"line":68,"column":0}},"68":{"start":{"line":69,"column":0},"end":{"line":69,"column":10}},"69":{"start":{"line":70,"column":0},"end":{"line":70,"column":17}},"70":{"start":{"line":71,"column":0},"end":{"line":71,"column":25}},"71":{"start":{"line":72,"column":0},"end":{"line":72,"column":32}},"72":{"start":{"line":73,"column":0},"end":{"line":73,"column":72}},"73":{"start":{"line":74,"column":0},"end":{"line":74,"column":28}},"74":{"start":{"line":75,"column":0},"end":{"line":75,"column":15}},"75":{"start":{"line":76,"column":0},"end":{"line":76,"column":72}},"76":{"start":{"line":77,"column":0},"end":{"line":77,"column":30}},"77":{"start":{"line":78,"column":0},"end":{"line":78,"column":4}},"78":{"start":{"line":79,"column":0},"end":{"line":79,"column":1}},"79":{"start":{"line":80,"column":0},"end":{"line":80,"column":0}},"80":{"start":{"line":81,"column":0},"end":{"line":81,"column":13}},"81":{"start":{"line":82,"column":0},"end":{"line":82,"column":63}},"82":{"start":{"line":83,"column":0},"end":{"line":83,"column":22}},"83":{"start":{"line":84,"column":0},"end":{"line":84,"column":78}},"84":{"start":{"line":85,"column":0},"end":{"line":85,"column":63}},"85":{"start":{"line":86,"column":0},"end":{"line":86,"column":3}},"86":{"start":{"line":87,"column":0},"end":{"line":87,"column":36}},"87":{"start":{"line":88,"column":0},"end":{"line":88,"column":1}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":1,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":1,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"59":0,"60":0,"61":0,"62":0,"63":0,"64":0,"65":0,"66":0,"67":0,"68":0,"69":0,"70":0,"71":0,"72":0,"73":0,"74":0,"75":0,"76":0,"77":0,"78":0,"79":1,"80":1,"81":1,"82":8,"83":8,"84":8,"85":8,"86":8,"87":8},"branchMap":{"0":{"type":"branch","line":82,"loc":{"start":{"line":82,"column":7},"end":{"line":88,"column":1}},"locations":[{"start":{"line":82,"column":7},"end":{"line":88,"column":1}}]}},"b":{"0":[8]},"fnMap":{"0":{"name":"isSecondLayerHandlerProcessor_0_0_0","decl":{"start":{"line":21,"column":0},"end":{"line":34,"column":1}},"loc":{"start":{"line":21,"column":0},"end":{"line":34,"column":1}},"line":21},"1":{"name":"isSecondLayerHandlerProcessor_1_0_0","decl":{"start":{"line":36,"column":0},"end":{"line":48,"column":1}},"loc":{"start":{"line":36,"column":0},"end":{"line":48,"column":1}},"line":36},"2":{"name":"asSecondLayerHandlerProcessor_1_0_0","decl":{"start":{"line":50,"column":0},"end":{"line":79,"column":1}},"loc":{"start":{"line":50,"column":0},"end":{"line":79,"column":1}},"line":50},"3":{"name":"DsProcessorService","decl":{"start":{"line":82,"column":7},"end":{"line":88,"column":1}},"loc":{"start":{"line":82,"column":7},"end":{"line":88,"column":1}},"line":82}},"f":{"0":0,"1":0,"2":0,"3":8}},"/Users/scotttwiname/Projects/subql-main/packages/node/src/indexer/dynamic-ds.service.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/node/src/indexer/dynamic-ds.service.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":52}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":66}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":8}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":19}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":43}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":26}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":35}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":8}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":18}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":21}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":38}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":60}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":0}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":13}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":80}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":14}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":60}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":74}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":5}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":12}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":3}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":0}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":32}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":29}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":34}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":42}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":44}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":6}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":13}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":22}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":89}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":8}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":5}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":47}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":0}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":19}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":18}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":36}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":28}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":9}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":30}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":35}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":37}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":25}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":10}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":64}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":38}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":51}},"51":{"start":{"line":52,"column":0},"end":{"line":52,"column":7}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":0}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":19}},"54":{"start":{"line":55,"column":0},"end":{"line":55,"column":17}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":77}},"56":{"start":{"line":57,"column":0},"end":{"line":57,"column":5}},"57":{"start":{"line":58,"column":0},"end":{"line":58,"column":3}},"58":{"start":{"line":59,"column":0},"end":{"line":59,"column":1}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":20,"20":20,"21":20,"22":20,"23":20,"24":1,"25":1,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":1},"branchMap":{"0":{"type":"branch","line":19,"loc":{"start":{"line":19,"column":2},"end":{"line":24,"column":3}},"locations":[{"start":{"line":19,"column":2},"end":{"line":24,"column":3}}]}},"b":{"0":[20]},"fnMap":{"0":{"name":"DynamicDsService","decl":{"start":{"line":19,"column":2},"end":{"line":24,"column":3}},"loc":{"start":{"line":19,"column":2},"end":{"line":24,"column":3}},"line":19},"1":{"name":"getDatasource","decl":{"start":{"line":26,"column":12},"end":{"line":58,"column":3}},"loc":{"start":{"line":26,"column":12},"end":{"line":58,"column":3}},"line":26}},"f":{"0":20,"1":0}},"/Users/scotttwiname/Projects/subql-main/packages/node/src/indexer/fetch.module.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/node/src/indexer/fetch.module.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":40}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":54}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":8}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":22}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":27}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":15}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":13}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":13}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":24}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":20}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":20}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":29}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":25}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":17}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":23}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":26}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":63}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":43}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":63}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":8}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":25}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":31}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":27}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":86}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":60}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":56}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":47}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":51}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":51}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":58}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":51}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":71}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":0}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":9}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":14}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":25}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":17}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":22}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":15}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":19}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":31}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":5}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":33}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":47}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":59}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":8}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":27}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":6}},"51":{"start":{"line":52,"column":0},"end":{"line":52,"column":5}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":34}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":19}},"54":{"start":{"line":55,"column":0},"end":{"line":55,"column":31}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":36}},"56":{"start":{"line":57,"column":0},"end":{"line":57,"column":39}},"57":{"start":{"line":58,"column":0},"end":{"line":58,"column":54}},"58":{"start":{"line":59,"column":0},"end":{"line":59,"column":31}},"59":{"start":{"line":60,"column":0},"end":{"line":60,"column":39}},"60":{"start":{"line":61,"column":0},"end":{"line":61,"column":45}},"61":{"start":{"line":62,"column":0},"end":{"line":62,"column":43}},"62":{"start":{"line":63,"column":0},"end":{"line":63,"column":35}},"63":{"start":{"line":64,"column":0},"end":{"line":64,"column":45}},"64":{"start":{"line":65,"column":0},"end":{"line":65,"column":39}},"65":{"start":{"line":66,"column":0},"end":{"line":66,"column":33}},"66":{"start":{"line":67,"column":0},"end":{"line":67,"column":43}},"67":{"start":{"line":68,"column":0},"end":{"line":68,"column":52}},"68":{"start":{"line":69,"column":0},"end":{"line":69,"column":78}},"69":{"start":{"line":70,"column":0},"end":{"line":70,"column":10}},"70":{"start":{"line":71,"column":0},"end":{"line":71,"column":40}},"71":{"start":{"line":72,"column":0},"end":{"line":72,"column":45}},"72":{"start":{"line":73,"column":0},"end":{"line":73,"column":25}},"73":{"start":{"line":74,"column":0},"end":{"line":74,"column":27}},"74":{"start":{"line":75,"column":0},"end":{"line":75,"column":29}},"75":{"start":{"line":76,"column":0},"end":{"line":76,"column":36}},"76":{"start":{"line":77,"column":0},"end":{"line":77,"column":32}},"77":{"start":{"line":78,"column":0},"end":{"line":78,"column":27}},"78":{"start":{"line":79,"column":0},"end":{"line":79,"column":27}},"79":{"start":{"line":80,"column":0},"end":{"line":80,"column":32}},"80":{"start":{"line":81,"column":0},"end":{"line":81,"column":29}},"81":{"start":{"line":82,"column":0},"end":{"line":82,"column":22}},"82":{"start":{"line":83,"column":0},"end":{"line":83,"column":31}},"83":{"start":{"line":84,"column":0},"end":{"line":84,"column":32}},"84":{"start":{"line":85,"column":0},"end":{"line":85,"column":34}},"85":{"start":{"line":86,"column":0},"end":{"line":86,"column":13}},"86":{"start":{"line":87,"column":0},"end":{"line":87,"column":39}},"87":{"start":{"line":88,"column":0},"end":{"line":88,"column":25}},"88":{"start":{"line":89,"column":0},"end":{"line":89,"column":25}},"89":{"start":{"line":90,"column":0},"end":{"line":90,"column":29}},"90":{"start":{"line":91,"column":0},"end":{"line":91,"column":27}},"91":{"start":{"line":92,"column":0},"end":{"line":92,"column":29}},"92":{"start":{"line":93,"column":0},"end":{"line":93,"column":36}},"93":{"start":{"line":94,"column":0},"end":{"line":94,"column":32}},"94":{"start":{"line":95,"column":0},"end":{"line":95,"column":27}},"95":{"start":{"line":96,"column":0},"end":{"line":96,"column":32}},"96":{"start":{"line":97,"column":0},"end":{"line":97,"column":29}},"97":{"start":{"line":98,"column":0},"end":{"line":98,"column":22}},"98":{"start":{"line":99,"column":0},"end":{"line":99,"column":31}},"99":{"start":{"line":100,"column":0},"end":{"line":100,"column":14}},"100":{"start":{"line":101,"column":0},"end":{"line":101,"column":15}},"101":{"start":{"line":102,"column":0},"end":{"line":102,"column":19}},"102":{"start":{"line":103,"column":0},"end":{"line":103,"column":22}},"103":{"start":{"line":104,"column":0},"end":{"line":104,"column":26}},"104":{"start":{"line":105,"column":0},"end":{"line":105,"column":33}},"105":{"start":{"line":106,"column":0},"end":{"line":106,"column":19}},"106":{"start":{"line":107,"column":0},"end":{"line":107,"column":23}},"107":{"start":{"line":108,"column":0},"end":{"line":108,"column":26}},"108":{"start":{"line":109,"column":0},"end":{"line":109,"column":29}},"109":{"start":{"line":110,"column":0},"end":{"line":110,"column":21}},"110":{"start":{"line":111,"column":0},"end":{"line":111,"column":26}},"111":{"start":{"line":112,"column":0},"end":{"line":112,"column":23}},"112":{"start":{"line":113,"column":0},"end":{"line":113,"column":27}},"113":{"start":{"line":114,"column":0},"end":{"line":114,"column":25}},"114":{"start":{"line":115,"column":0},"end":{"line":115,"column":33}},"115":{"start":{"line":116,"column":0},"end":{"line":116,"column":35}},"116":{"start":{"line":117,"column":0},"end":{"line":117,"column":8}},"117":{"start":{"line":118,"column":0},"end":{"line":118,"column":6}},"118":{"start":{"line":119,"column":0},"end":{"line":119,"column":17}},"119":{"start":{"line":120,"column":0},"end":{"line":120,"column":26}},"120":{"start":{"line":121,"column":0},"end":{"line":121,"column":29}},"121":{"start":{"line":122,"column":0},"end":{"line":122,"column":24}},"122":{"start":{"line":123,"column":0},"end":{"line":123,"column":5}},"123":{"start":{"line":124,"column":0},"end":{"line":124,"column":42}},"124":{"start":{"line":125,"column":0},"end":{"line":125,"column":25}},"125":{"start":{"line":126,"column":0},"end":{"line":126,"column":33}},"126":{"start":{"line":127,"column":0},"end":{"line":127,"column":31}},"127":{"start":{"line":128,"column":0},"end":{"line":128,"column":36}},"128":{"start":{"line":129,"column":0},"end":{"line":129,"column":47}},"129":{"start":{"line":130,"column":0},"end":{"line":130,"column":12}},"130":{"start":{"line":131,"column":0},"end":{"line":131,"column":65}},"131":{"start":{"line":132,"column":0},"end":{"line":132,"column":18}},"132":{"start":{"line":133,"column":0},"end":{"line":133,"column":21}},"133":{"start":{"line":134,"column":0},"end":{"line":134,"column":23}},"134":{"start":{"line":135,"column":0},"end":{"line":135,"column":29}},"135":{"start":{"line":136,"column":0},"end":{"line":136,"column":10}},"136":{"start":{"line":137,"column":0},"end":{"line":137,"column":33}},"137":{"start":{"line":138,"column":0},"end":{"line":138,"column":8}},"138":{"start":{"line":139,"column":0},"end":{"line":139,"column":15}},"139":{"start":{"line":140,"column":0},"end":{"line":140,"column":27}},"140":{"start":{"line":141,"column":0},"end":{"line":141,"column":19}},"141":{"start":{"line":142,"column":0},"end":{"line":142,"column":22}},"142":{"start":{"line":143,"column":0},"end":{"line":143,"column":27}},"143":{"start":{"line":144,"column":0},"end":{"line":144,"column":8}},"144":{"start":{"line":145,"column":0},"end":{"line":145,"column":6}},"145":{"start":{"line":146,"column":0},"end":{"line":146,"column":19}},"146":{"start":{"line":147,"column":0},"end":{"line":147,"column":23}},"147":{"start":{"line":148,"column":0},"end":{"line":148,"column":21}},"148":{"start":{"line":149,"column":0},"end":{"line":149,"column":15}},"149":{"start":{"line":150,"column":0},"end":{"line":150,"column":19}},"150":{"start":{"line":151,"column":0},"end":{"line":151,"column":5}},"151":{"start":{"line":152,"column":0},"end":{"line":152,"column":31}},"152":{"start":{"line":153,"column":0},"end":{"line":153,"column":33}},"153":{"start":{"line":154,"column":0},"end":{"line":154,"column":6}},"154":{"start":{"line":155,"column":0},"end":{"line":155,"column":29}},"155":{"start":{"line":156,"column":0},"end":{"line":156,"column":19}},"156":{"start":{"line":157,"column":0},"end":{"line":157,"column":4}},"157":{"start":{"line":158,"column":0},"end":{"line":158,"column":45}},"158":{"start":{"line":159,"column":0},"end":{"line":159,"column":2}},"159":{"start":{"line":160,"column":0},"end":{"line":160,"column":27}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"38":1,"39":1,"40":1,"41":1,"42":1,"43":1,"44":1,"45":1,"46":1,"47":20,"48":1,"49":1,"50":1,"51":1,"52":1,"53":1,"54":20,"55":20,"56":20,"57":20,"58":20,"59":20,"60":20,"61":20,"62":20,"63":20,"64":20,"65":20,"66":20,"67":20,"68":20,"69":20,"70":20,"71":20,"72":0,"73":0,"74":0,"75":0,"76":0,"77":0,"78":0,"79":0,"80":0,"81":0,"82":0,"83":0,"84":0,"85":20,"86":20,"87":20,"88":20,"89":20,"90":20,"91":20,"92":20,"93":20,"94":20,"95":20,"96":20,"97":20,"98":20,"99":1,"100":1,"101":1,"102":1,"103":1,"104":1,"105":1,"106":1,"107":1,"108":1,"109":1,"110":1,"111":1,"112":1,"113":1,"114":1,"115":1,"116":1,"117":1,"118":1,"119":1,"120":1,"121":1,"122":1,"123":1,"124":1,"125":20,"126":20,"127":20,"128":20,"129":20,"130":20,"131":20,"132":20,"133":20,"134":20,"135":20,"136":20,"137":1,"138":1,"139":1,"140":1,"141":1,"142":1,"143":1,"144":1,"145":1,"146":1,"147":1,"148":1,"149":1,"150":1,"151":1,"152":1,"153":1,"154":1,"155":1,"156":1,"157":1,"158":1,"159":1},"branchMap":{"0":{"type":"branch","line":47,"loc":{"start":{"line":47,"column":18},"end":{"line":49,"column":7}},"locations":[{"start":{"line":47,"column":18},"end":{"line":49,"column":7}}]},"1":{"type":"branch","line":54,"loc":{"start":{"line":54,"column":18},"end":{"line":99,"column":31}},"locations":[{"start":{"line":54,"column":18},"end":{"line":99,"column":31}}]},"2":{"type":"branch","line":72,"loc":{"start":{"line":72,"column":10},"end":{"line":85,"column":34}},"locations":[{"start":{"line":72,"column":10},"end":{"line":85,"column":34}}]},"3":{"type":"branch","line":125,"loc":{"start":{"line":125,"column":18},"end":{"line":138,"column":7}},"locations":[{"start":{"line":125,"column":18},"end":{"line":138,"column":7}}]}},"b":{"0":[20],"1":[20],"2":[0],"3":[20]},"fnMap":{"0":{"name":"useFactory","decl":{"start":{"line":47,"column":18},"end":{"line":49,"column":7}},"loc":{"start":{"line":47,"column":18},"end":{"line":49,"column":7}},"line":47},"1":{"name":"useFactory","decl":{"start":{"line":54,"column":18},"end":{"line":99,"column":31}},"loc":{"start":{"line":54,"column":18},"end":{"line":99,"column":31}},"line":54},"2":{"name":"useFactory","decl":{"start":{"line":125,"column":18},"end":{"line":138,"column":7}},"loc":{"start":{"line":125,"column":18},"end":{"line":138,"column":7}},"line":125}},"f":{"0":20,"1":20,"2":20}},"/Users/scotttwiname/Projects/subql-main/packages/node/src/indexer/fetch.service.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/node/src/indexer/fetch.service.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":52}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":54}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":53}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":43}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":0}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":75}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":76}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":67}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":63}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":75}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":43}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":89}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":86}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":56}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":51}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":58}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":71}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":0}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":38}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":29}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":0}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":13}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":51}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":22}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":28}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":16}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":3}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":14}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":35}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":27}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":62}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":57}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":31}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":47}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":50}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":39}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":63}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":32}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":41}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":43}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":5}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":10}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":17}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":21}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":22}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":22}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":24}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":23}},"51":{"start":{"line":52,"column":0},"end":{"line":52,"column":19}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":24}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":6}},"54":{"start":{"line":55,"column":0},"end":{"line":55,"column":3}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":0}},"56":{"start":{"line":57,"column":0},"end":{"line":57,"column":25}},"57":{"start":{"line":58,"column":0},"end":{"line":58,"column":37}},"58":{"start":{"line":59,"column":0},"end":{"line":59,"column":3}},"59":{"start":{"line":60,"column":0},"end":{"line":60,"column":0}},"60":{"start":{"line":61,"column":0},"end":{"line":61,"column":57}},"61":{"start":{"line":62,"column":0},"end":{"line":62,"column":70}},"62":{"start":{"line":63,"column":0},"end":{"line":63,"column":78}},"63":{"start":{"line":64,"column":0},"end":{"line":64,"column":0}},"64":{"start":{"line":65,"column":0},"end":{"line":65,"column":60}},"65":{"start":{"line":66,"column":0},"end":{"line":66,"column":0}},"66":{"start":{"line":67,"column":0},"end":{"line":67,"column":65}},"67":{"start":{"line":68,"column":0},"end":{"line":68,"column":30}},"68":{"start":{"line":69,"column":0},"end":{"line":69,"column":3}},"69":{"start":{"line":70,"column":0},"end":{"line":70,"column":0}},"70":{"start":{"line":71,"column":0},"end":{"line":71,"column":38}},"71":{"start":{"line":72,"column":0},"end":{"line":72,"column":51}},"72":{"start":{"line":73,"column":0},"end":{"line":73,"column":3}},"73":{"start":{"line":74,"column":0},"end":{"line":74,"column":0}},"74":{"start":{"line":75,"column":0},"end":{"line":75,"column":52}},"75":{"start":{"line":76,"column":0},"end":{"line":76,"column":60}},"76":{"start":{"line":77,"column":0},"end":{"line":77,"column":40}},"77":{"start":{"line":78,"column":0},"end":{"line":78,"column":3}},"78":{"start":{"line":79,"column":0},"end":{"line":79,"column":0}},"79":{"start":{"line":80,"column":0},"end":{"line":80,"column":62}},"80":{"start":{"line":81,"column":0},"end":{"line":81,"column":55}},"81":{"start":{"line":82,"column":0},"end":{"line":82,"column":48}},"82":{"start":{"line":83,"column":0},"end":{"line":83,"column":29}},"83":{"start":{"line":84,"column":0},"end":{"line":84,"column":18}},"84":{"start":{"line":85,"column":0},"end":{"line":85,"column":0}},"85":{"start":{"line":86,"column":0},"end":{"line":86,"column":56}},"86":{"start":{"line":87,"column":0},"end":{"line":87,"column":3}},"87":{"start":{"line":88,"column":0},"end":{"line":88,"column":0}},"88":{"start":{"line":89,"column":0},"end":{"line":89,"column":36}},"89":{"start":{"line":90,"column":0},"end":{"line":90,"column":22}},"90":{"start":{"line":91,"column":0},"end":{"line":91,"column":46}},"91":{"start":{"line":92,"column":0},"end":{"line":92,"column":17}},"92":{"start":{"line":93,"column":0},"end":{"line":93,"column":33}},"93":{"start":{"line":94,"column":0},"end":{"line":94,"column":6}},"94":{"start":{"line":95,"column":0},"end":{"line":95,"column":3}},"95":{"start":{"line":96,"column":0},"end":{"line":96,"column":0}},"96":{"start":{"line":97,"column":0},"end":{"line":97,"column":56}},"97":{"start":{"line":98,"column":0},"end":{"line":98,"column":36}},"98":{"start":{"line":99,"column":0},"end":{"line":99,"column":36}},"99":{"start":{"line":100,"column":0},"end":{"line":100,"column":26}},"100":{"start":{"line":101,"column":0},"end":{"line":101,"column":6}},"101":{"start":{"line":102,"column":0},"end":{"line":102,"column":3}},"102":{"start":{"line":103,"column":0},"end":{"line":103,"column":0}},"103":{"start":{"line":104,"column":0},"end":{"line":104,"column":63}},"104":{"start":{"line":105,"column":0},"end":{"line":105,"column":71}},"105":{"start":{"line":106,"column":0},"end":{"line":106,"column":0}},"106":{"start":{"line":107,"column":0},"end":{"line":107,"column":60}},"107":{"start":{"line":108,"column":0},"end":{"line":108,"column":72}},"108":{"start":{"line":109,"column":0},"end":{"line":109,"column":12}},"109":{"start":{"line":110,"column":0},"end":{"line":110,"column":55}},"110":{"start":{"line":111,"column":0},"end":{"line":111,"column":5}},"111":{"start":{"line":112,"column":0},"end":{"line":112,"column":0}},"112":{"start":{"line":113,"column":0},"end":{"line":113,"column":30}},"113":{"start":{"line":114,"column":0},"end":{"line":114,"column":55}},"114":{"start":{"line":115,"column":0},"end":{"line":115,"column":56}},"115":{"start":{"line":116,"column":0},"end":{"line":116,"column":3}},"116":{"start":{"line":117,"column":0},"end":{"line":117,"column":1}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":6,"32":6,"33":6,"34":6,"35":6,"36":6,"37":6,"38":6,"39":6,"40":6,"41":6,"42":6,"43":6,"44":6,"45":6,"46":6,"47":6,"48":6,"49":6,"50":6,"51":6,"52":6,"53":6,"54":6,"55":1,"56":1,"57":4,"58":4,"59":1,"60":1,"61":1,"62":1,"63":1,"64":1,"65":1,"66":1,"67":1,"68":1,"69":1,"70":1,"71":0,"72":0,"73":1,"74":1,"75":1,"76":1,"77":1,"78":1,"79":1,"80":1,"81":1,"82":1,"83":1,"84":1,"85":1,"86":1,"87":1,"88":1,"89":1,"90":1,"91":1,"92":1,"93":1,"94":1,"95":1,"96":1,"97":0,"98":0,"99":0,"100":0,"101":0,"102":1,"103":1,"104":0,"105":0,"106":0,"107":0,"108":0,"109":0,"110":0,"111":0,"112":0,"113":0,"114":0,"115":0,"116":1},"branchMap":{"0":{"type":"branch","line":31,"loc":{"start":{"line":31,"column":2},"end":{"line":55,"column":3}},"locations":[{"start":{"line":31,"column":2},"end":{"line":55,"column":3}}]},"1":{"type":"branch","line":57,"loc":{"start":{"line":57,"column":2},"end":{"line":59,"column":3}},"locations":[{"start":{"line":57,"column":2},"end":{"line":59,"column":3}}]},"2":{"type":"branch","line":61,"loc":{"start":{"line":61,"column":12},"end":{"line":69,"column":3}},"locations":[{"start":{"line":61,"column":12},"end":{"line":69,"column":3}}]},"3":{"type":"branch","line":75,"loc":{"start":{"line":75,"column":12},"end":{"line":78,"column":3}},"locations":[{"start":{"line":75,"column":12},"end":{"line":78,"column":3}}]},"4":{"type":"branch","line":81,"loc":{"start":{"line":81,"column":12},"end":{"line":87,"column":3}},"locations":[{"start":{"line":81,"column":12},"end":{"line":87,"column":3}}]},"5":{"type":"branch","line":89,"loc":{"start":{"line":89,"column":12},"end":{"line":95,"column":3}},"locations":[{"start":{"line":89,"column":12},"end":{"line":95,"column":3}}]}},"b":{"0":[6],"1":[4],"2":[1],"3":[1],"4":[1],"5":[1]},"fnMap":{"0":{"name":"FetchService","decl":{"start":{"line":31,"column":2},"end":{"line":55,"column":3}},"loc":{"start":{"line":31,"column":2},"end":{"line":55,"column":3}},"line":31},"1":{"name":"get api","decl":{"start":{"line":57,"column":2},"end":{"line":59,"column":3}},"loc":{"start":{"line":57,"column":2},"end":{"line":59,"column":3}},"line":57},"2":{"name":"getFinalizedHeight","decl":{"start":{"line":61,"column":12},"end":{"line":69,"column":3}},"loc":{"start":{"line":61,"column":12},"end":{"line":69,"column":3}},"line":61},"3":{"name":"getGenesisHash","decl":{"start":{"line":71,"column":12},"end":{"line":73,"column":3}},"loc":{"start":{"line":71,"column":12},"end":{"line":73,"column":3}},"line":71},"4":{"name":"getBestHeight","decl":{"start":{"line":75,"column":12},"end":{"line":78,"column":3}},"loc":{"start":{"line":75,"column":12},"end":{"line":78,"column":3}},"line":75},"5":{"name":"getChainInterval","decl":{"start":{"line":81,"column":12},"end":{"line":87,"column":3}},"loc":{"start":{"line":81,"column":12},"end":{"line":87,"column":3}},"line":81},"6":{"name":"getModulos","decl":{"start":{"line":89,"column":12},"end":{"line":95,"column":3}},"loc":{"start":{"line":89,"column":12},"end":{"line":95,"column":3}},"line":89},"7":{"name":"initBlockDispatcher","decl":{"start":{"line":97,"column":12},"end":{"line":102,"column":3}},"loc":{"start":{"line":97,"column":12},"end":{"line":102,"column":3}},"line":97},"8":{"name":"preLoopHook","decl":{"start":{"line":104,"column":12},"end":{"line":116,"column":3}},"loc":{"start":{"line":104,"column":12},"end":{"line":116,"column":3}},"line":104}},"f":{"0":6,"1":4,"2":1,"3":0,"4":1,"5":1,"6":1,"7":0,"8":0}},"/Users/scotttwiname/Projects/subql-main/packages/node/src/indexer/indexer.manager.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/node/src/indexer/indexer.manager.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":44}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":43}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":60}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":8}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":26}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":25}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":26}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":13}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":14}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":28}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":23}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":34}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":33}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":8}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":13}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":12}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":11}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":17}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":23}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":21}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":9}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":26}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":8}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":22}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":17}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":23}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":22}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":17}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":21}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":22}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":66}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":52}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":66}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":8}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":38}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":21}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":32}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":56}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":51}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":78}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":71}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":0}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":36}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":0}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":13}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":55}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":8}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":13}},"51":{"start":{"line":52,"column":0},"end":{"line":52,"column":35}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":22}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":22}},"54":{"start":{"line":55,"column":0},"end":{"line":55,"column":28}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":23}},"56":{"start":{"line":57,"column":0},"end":{"line":57,"column":26}},"57":{"start":{"line":58,"column":0},"end":{"line":58,"column":33}},"58":{"start":{"line":59,"column":0},"end":{"line":59,"column":3}},"59":{"start":{"line":60,"column":0},"end":{"line":60,"column":38}},"60":{"start":{"line":61,"column":0},"end":{"line":61,"column":36}},"61":{"start":{"line":62,"column":0},"end":{"line":62,"column":72}},"62":{"start":{"line":63,"column":0},"end":{"line":63,"column":0}},"63":{"start":{"line":64,"column":0},"end":{"line":64,"column":14}},"64":{"start":{"line":65,"column":0},"end":{"line":65,"column":36}},"65":{"start":{"line":66,"column":0},"end":{"line":66,"column":27}},"66":{"start":{"line":67,"column":0},"end":{"line":67,"column":42}},"67":{"start":{"line":68,"column":0},"end":{"line":68,"column":43}},"68":{"start":{"line":69,"column":0},"end":{"line":69,"column":39}},"69":{"start":{"line":70,"column":0},"end":{"line":70,"column":55}},"70":{"start":{"line":71,"column":0},"end":{"line":71,"column":5}},"71":{"start":{"line":72,"column":0},"end":{"line":72,"column":10}},"72":{"start":{"line":73,"column":0},"end":{"line":73,"column":17}},"73":{"start":{"line":74,"column":0},"end":{"line":74,"column":17}},"74":{"start":{"line":75,"column":0},"end":{"line":75,"column":21}},"75":{"start":{"line":76,"column":0},"end":{"line":76,"column":25}},"76":{"start":{"line":77,"column":0},"end":{"line":77,"column":23}},"77":{"start":{"line":78,"column":0},"end":{"line":78,"column":31}},"78":{"start":{"line":79,"column":0},"end":{"line":79,"column":20}},"79":{"start":{"line":80,"column":0},"end":{"line":80,"column":23}},"80":{"start":{"line":81,"column":0},"end":{"line":81,"column":6}},"81":{"start":{"line":82,"column":0},"end":{"line":82,"column":3}},"82":{"start":{"line":83,"column":0},"end":{"line":83,"column":0}},"83":{"start":{"line":84,"column":0},"end":{"line":84,"column":13}},"84":{"start":{"line":85,"column":0},"end":{"line":85,"column":19}},"85":{"start":{"line":86,"column":0},"end":{"line":86,"column":52}},"86":{"start":{"line":87,"column":0},"end":{"line":87,"column":39}},"87":{"start":{"line":88,"column":0},"end":{"line":88,"column":35}},"88":{"start":{"line":89,"column":0},"end":{"line":89,"column":36}},"89":{"start":{"line":90,"column":0},"end":{"line":90,"column":61}},"90":{"start":{"line":91,"column":0},"end":{"line":91,"column":47}},"91":{"start":{"line":92,"column":0},"end":{"line":92,"column":6}},"92":{"start":{"line":93,"column":0},"end":{"line":93,"column":3}},"93":{"start":{"line":94,"column":0},"end":{"line":94,"column":0}},"94":{"start":{"line":95,"column":0},"end":{"line":95,"column":67}},"95":{"start":{"line":96,"column":0},"end":{"line":96,"column":54}},"96":{"start":{"line":97,"column":0},"end":{"line":97,"column":3}},"97":{"start":{"line":98,"column":0},"end":{"line":98,"column":0}},"98":{"start":{"line":99,"column":0},"end":{"line":99,"column":65}},"99":{"start":{"line":100,"column":0},"end":{"line":100,"column":49}},"100":{"start":{"line":101,"column":0},"end":{"line":101,"column":3}},"101":{"start":{"line":102,"column":0},"end":{"line":102,"column":0}},"102":{"start":{"line":103,"column":0},"end":{"line":103,"column":62}},"103":{"start":{"line":104,"column":0},"end":{"line":104,"column":23}},"104":{"start":{"line":105,"column":0},"end":{"line":105,"column":44}},"105":{"start":{"line":106,"column":0},"end":{"line":106,"column":35}},"106":{"start":{"line":107,"column":0},"end":{"line":107,"column":21}},"107":{"start":{"line":108,"column":0},"end":{"line":108,"column":41}},"108":{"start":{"line":109,"column":0},"end":{"line":109,"column":31}},"109":{"start":{"line":110,"column":0},"end":{"line":110,"column":21}},"110":{"start":{"line":111,"column":0},"end":{"line":111,"column":6}},"111":{"start":{"line":112,"column":0},"end":{"line":112,"column":3}},"112":{"start":{"line":113,"column":0},"end":{"line":113,"column":0}},"113":{"start":{"line":114,"column":0},"end":{"line":114,"column":33}},"114":{"start":{"line":115,"column":0},"end":{"line":115,"column":51}},"115":{"start":{"line":116,"column":0},"end":{"line":116,"column":38}},"116":{"start":{"line":117,"column":0},"end":{"line":117,"column":62}},"117":{"start":{"line":118,"column":0},"end":{"line":118,"column":20}},"118":{"start":{"line":119,"column":0},"end":{"line":119,"column":36}},"119":{"start":{"line":120,"column":0},"end":{"line":120,"column":57}},"120":{"start":{"line":121,"column":0},"end":{"line":121,"column":62}},"121":{"start":{"line":122,"column":0},"end":{"line":122,"column":0}},"122":{"start":{"line":123,"column":0},"end":{"line":123,"column":34}},"123":{"start":{"line":124,"column":0},"end":{"line":124,"column":76}},"124":{"start":{"line":125,"column":0},"end":{"line":125,"column":39}},"125":{"start":{"line":126,"column":0},"end":{"line":126,"column":57}},"126":{"start":{"line":127,"column":0},"end":{"line":127,"column":7}},"127":{"start":{"line":128,"column":0},"end":{"line":128,"column":0}},"128":{"start":{"line":129,"column":0},"end":{"line":129,"column":43}},"129":{"start":{"line":130,"column":0},"end":{"line":130,"column":65}},"130":{"start":{"line":131,"column":0},"end":{"line":131,"column":0}},"131":{"start":{"line":132,"column":0},"end":{"line":132,"column":35}},"132":{"start":{"line":133,"column":0},"end":{"line":133,"column":38}},"133":{"start":{"line":134,"column":0},"end":{"line":134,"column":60}},"134":{"start":{"line":135,"column":0},"end":{"line":135,"column":41}},"135":{"start":{"line":136,"column":0},"end":{"line":136,"column":0}},"136":{"start":{"line":137,"column":0},"end":{"line":137,"column":46}},"137":{"start":{"line":138,"column":0},"end":{"line":138,"column":59}},"138":{"start":{"line":139,"column":0},"end":{"line":139,"column":9}},"139":{"start":{"line":140,"column":0},"end":{"line":140,"column":7}},"140":{"start":{"line":141,"column":0},"end":{"line":141,"column":0}},"141":{"start":{"line":142,"column":0},"end":{"line":142,"column":32}},"142":{"start":{"line":143,"column":0},"end":{"line":143,"column":78}},"143":{"start":{"line":144,"column":0},"end":{"line":144,"column":43}},"144":{"start":{"line":145,"column":0},"end":{"line":145,"column":57}},"145":{"start":{"line":146,"column":0},"end":{"line":146,"column":7}},"146":{"start":{"line":147,"column":0},"end":{"line":147,"column":12}},"147":{"start":{"line":148,"column":0},"end":{"line":148,"column":48}},"148":{"start":{"line":149,"column":0},"end":{"line":149,"column":57}},"149":{"start":{"line":150,"column":0},"end":{"line":150,"column":7}},"150":{"start":{"line":151,"column":0},"end":{"line":151,"column":5}},"151":{"start":{"line":152,"column":0},"end":{"line":152,"column":3}},"152":{"start":{"line":153,"column":0},"end":{"line":153,"column":0}},"153":{"start":{"line":154,"column":0},"end":{"line":154,"column":34}},"154":{"start":{"line":155,"column":0},"end":{"line":155,"column":26}},"155":{"start":{"line":156,"column":0},"end":{"line":156,"column":38}},"156":{"start":{"line":157,"column":0},"end":{"line":157,"column":62}},"157":{"start":{"line":158,"column":0},"end":{"line":158,"column":20}},"158":{"start":{"line":159,"column":0},"end":{"line":159,"column":35}},"159":{"start":{"line":160,"column":0},"end":{"line":160,"column":73}},"160":{"start":{"line":161,"column":0},"end":{"line":161,"column":5}},"161":{"start":{"line":162,"column":0},"end":{"line":162,"column":3}},"162":{"start":{"line":163,"column":0},"end":{"line":163,"column":0}},"163":{"start":{"line":164,"column":0},"end":{"line":164,"column":31}},"164":{"start":{"line":165,"column":0},"end":{"line":165,"column":34}},"165":{"start":{"line":166,"column":0},"end":{"line":166,"column":38}},"166":{"start":{"line":167,"column":0},"end":{"line":167,"column":62}},"167":{"start":{"line":168,"column":0},"end":{"line":168,"column":20}},"168":{"start":{"line":169,"column":0},"end":{"line":169,"column":35}},"169":{"start":{"line":170,"column":0},"end":{"line":170,"column":76}},"170":{"start":{"line":171,"column":0},"end":{"line":171,"column":5}},"171":{"start":{"line":172,"column":0},"end":{"line":172,"column":3}},"172":{"start":{"line":173,"column":0},"end":{"line":173,"column":0}},"173":{"start":{"line":174,"column":0},"end":{"line":174,"column":27}},"174":{"start":{"line":175,"column":0},"end":{"line":175,"column":48}},"175":{"start":{"line":176,"column":0},"end":{"line":176,"column":38}},"176":{"start":{"line":177,"column":0},"end":{"line":177,"column":62}},"177":{"start":{"line":178,"column":0},"end":{"line":178,"column":20}},"178":{"start":{"line":179,"column":0},"end":{"line":179,"column":35}},"179":{"start":{"line":180,"column":0},"end":{"line":180,"column":73}},"180":{"start":{"line":181,"column":0},"end":{"line":181,"column":5}},"181":{"start":{"line":182,"column":0},"end":{"line":182,"column":3}},"182":{"start":{"line":183,"column":0},"end":{"line":183,"column":0}},"183":{"start":{"line":184,"column":0},"end":{"line":184,"column":47}},"184":{"start":{"line":185,"column":0},"end":{"line":185,"column":31}},"185":{"start":{"line":186,"column":0},"end":{"line":186,"column":12}},"186":{"start":{"line":187,"column":0},"end":{"line":187,"column":17}},"187":{"start":{"line":188,"column":0},"end":{"line":188,"column":49}},"188":{"start":{"line":189,"column":0},"end":{"line":189,"column":33}},"189":{"start":{"line":190,"column":0},"end":{"line":190,"column":3}},"190":{"start":{"line":191,"column":0},"end":{"line":191,"column":1}},"191":{"start":{"line":192,"column":0},"end":{"line":192,"column":0}},"192":{"start":{"line":193,"column":0},"end":{"line":193,"column":25}},"193":{"start":{"line":194,"column":0},"end":{"line":194,"column":63}},"194":{"start":{"line":195,"column":0},"end":{"line":195,"column":63}},"195":{"start":{"line":196,"column":0},"end":{"line":196,"column":61}},"196":{"start":{"line":197,"column":0},"end":{"line":197,"column":2}},"197":{"start":{"line":198,"column":0},"end":{"line":198,"column":0}},"198":{"start":{"line":199,"column":0},"end":{"line":199,"column":26}},"199":{"start":{"line":200,"column":0},"end":{"line":200,"column":56}},"200":{"start":{"line":201,"column":0},"end":{"line":201,"column":56}},"201":{"start":{"line":202,"column":0},"end":{"line":202,"column":54}},"202":{"start":{"line":203,"column":0},"end":{"line":203,"column":2}},"203":{"start":{"line":204,"column":0},"end":{"line":204,"column":0}},"204":{"start":{"line":205,"column":0},"end":{"line":205,"column":23}},"205":{"start":{"line":206,"column":0},"end":{"line":206,"column":33}},"206":{"start":{"line":207,"column":0},"end":{"line":207,"column":26}},"207":{"start":{"line":208,"column":0},"end":{"line":208,"column":34}},"208":{"start":{"line":209,"column":0},"end":{"line":209,"column":50}},"209":{"start":{"line":210,"column":0},"end":{"line":210,"column":58}},"210":{"start":{"line":211,"column":0},"end":{"line":211,"column":61}},"211":{"start":{"line":212,"column":0},"end":{"line":212,"column":2}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"38":1,"39":1,"40":1,"41":1,"42":1,"43":1,"44":1,"45":1,"46":1,"47":1,"48":1,"49":1,"50":1,"51":1,"52":1,"53":1,"54":1,"55":1,"56":1,"57":1,"58":1,"59":1,"60":1,"61":1,"62":1,"63":1,"64":20,"65":20,"66":20,"67":20,"68":20,"69":20,"70":20,"71":20,"72":20,"73":20,"74":20,"75":20,"76":20,"77":20,"78":20,"79":20,"80":20,"81":20,"82":1,"83":1,"84":1,"85":0,"86":0,"87":0,"88":0,"89":0,"90":0,"91":0,"92":0,"93":1,"94":1,"95":0,"96":0,"97":1,"98":1,"99":0,"100":0,"101":1,"102":1,"103":1,"104":0,"105":0,"106":0,"107":0,"108":0,"109":0,"110":0,"111":0,"112":1,"113":1,"114":0,"115":0,"116":0,"117":0,"118":0,"119":0,"120":0,"121":0,"122":0,"123":0,"124":0,"125":0,"126":0,"127":0,"128":0,"129":0,"130":0,"131":0,"132":0,"133":0,"134":0,"135":0,"136":0,"137":0,"138":0,"139":0,"140":0,"141":0,"142":0,"143":0,"144":0,"145":0,"146":0,"147":0,"148":0,"149":0,"150":0,"151":0,"152":1,"153":1,"154":0,"155":0,"156":0,"157":0,"158":0,"159":0,"160":0,"161":0,"162":1,"163":1,"164":0,"165":0,"166":0,"167":0,"168":0,"169":0,"170":0,"171":0,"172":1,"173":1,"174":0,"175":0,"176":0,"177":0,"178":0,"179":0,"180":0,"181":0,"182":1,"183":1,"184":0,"185":0,"186":0,"187":0,"188":0,"189":0,"190":1,"191":1,"192":1,"193":1,"194":1,"195":1,"196":1,"197":1,"198":1,"199":1,"200":1,"201":1,"202":1,"203":1,"204":1,"205":1,"206":0,"207":0,"208":1,"209":1,"210":1,"211":1},"branchMap":{"0":{"type":"branch","line":64,"loc":{"start":{"line":64,"column":2},"end":{"line":82,"column":3}},"locations":[{"start":{"line":64,"column":2},"end":{"line":82,"column":3}}]}},"b":{"0":[20]},"fnMap":{"0":{"name":"IndexerManager","decl":{"start":{"line":64,"column":2},"end":{"line":82,"column":3}},"loc":{"start":{"line":64,"column":2},"end":{"line":82,"column":3}},"line":64},"1":{"name":"indexBlock","decl":{"start":{"line":85,"column":8},"end":{"line":93,"column":3}},"loc":{"start":{"line":85,"column":8},"end":{"line":93,"column":3}},"line":85},"2":{"name":"getBlockHeight","decl":{"start":{"line":95,"column":2},"end":{"line":97,"column":3}},"loc":{"start":{"line":95,"column":2},"end":{"line":97,"column":3}},"line":95},"3":{"name":"getBlockHash","decl":{"start":{"line":99,"column":2},"end":{"line":101,"column":3}},"loc":{"start":{"line":99,"column":2},"end":{"line":101,"column":3}},"line":99},"4":{"name":"getApi","decl":{"start":{"line":104,"column":10},"end":{"line":112,"column":3}},"loc":{"start":{"line":104,"column":10},"end":{"line":112,"column":3}},"line":104},"5":{"name":"indexBlockData","decl":{"start":{"line":114,"column":12},"end":{"line":152,"column":3}},"loc":{"start":{"line":114,"column":12},"end":{"line":152,"column":3}},"line":114},"6":{"name":"indexBlockContent","decl":{"start":{"line":154,"column":10},"end":{"line":162,"column":3}},"loc":{"start":{"line":154,"column":10},"end":{"line":162,"column":3}},"line":154},"7":{"name":"indexExtrinsic","decl":{"start":{"line":164,"column":10},"end":{"line":172,"column":3}},"loc":{"start":{"line":164,"column":10},"end":{"line":172,"column":3}},"line":164},"8":{"name":"indexEvent","decl":{"start":{"line":174,"column":10},"end":{"line":182,"column":3}},"loc":{"start":{"line":174,"column":10},"end":{"line":182,"column":3}},"line":174},"9":{"name":"prepareFilteredData","decl":{"start":{"line":184,"column":12},"end":{"line":190,"column":3}},"loc":{"start":{"line":184,"column":12},"end":{"line":190,"column":3}},"line":184},"10":{"name":"Object..FilterTypeMap","decl":{"start":{"line":206,"column":32},"end":{"line":209,"column":49}},"loc":{"start":{"line":206,"column":32},"end":{"line":209,"column":49}},"line":206}},"f":{"0":20,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0}},"/Users/scotttwiname/Projects/subql-main/packages/node/src/indexer/project.service.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/node/src/indexer/project.service.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":46}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":52}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":54}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":8}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":13}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":17}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":21}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":15}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":13}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":25}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":11}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":26}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":51}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":47}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":63}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":68}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":43}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":60}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":56}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":71}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":0}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":62}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":66}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":0}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":13}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":55}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":13}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":21}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":3}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":44}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":0}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":14}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":43}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":27}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":71}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":51}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":35}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":68}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":57}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":37}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":86}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":77}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":27}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":39}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":32}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":54}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":5}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":10}},"51":{"start":{"line":52,"column":0},"end":{"line":52,"column":25}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":17}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":17}},"54":{"start":{"line":55,"column":0},"end":{"line":55,"column":21}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":16}},"56":{"start":{"line":57,"column":0},"end":{"line":57,"column":14}},"57":{"start":{"line":58,"column":0},"end":{"line":58,"column":28}},"58":{"start":{"line":59,"column":0},"end":{"line":59,"column":19}},"59":{"start":{"line":60,"column":0},"end":{"line":60,"column":17}},"60":{"start":{"line":61,"column":0},"end":{"line":61,"column":23}},"61":{"start":{"line":62,"column":0},"end":{"line":62,"column":19}},"62":{"start":{"line":63,"column":0},"end":{"line":63,"column":30}},"63":{"start":{"line":64,"column":0},"end":{"line":64,"column":6}},"64":{"start":{"line":65,"column":0},"end":{"line":65,"column":3}},"65":{"start":{"line":66,"column":0},"end":{"line":66,"column":0}},"66":{"start":{"line":67,"column":0},"end":{"line":67,"column":13}},"67":{"start":{"line":68,"column":0},"end":{"line":68,"column":51}},"68":{"start":{"line":69,"column":0},"end":{"line":69,"column":35}},"69":{"start":{"line":70,"column":0},"end":{"line":70,"column":3}},"70":{"start":{"line":71,"column":0},"end":{"line":71,"column":0}},"71":{"start":{"line":72,"column":0},"end":{"line":72,"column":68}},"72":{"start":{"line":73,"column":0},"end":{"line":73,"column":70}},"73":{"start":{"line":74,"column":0},"end":{"line":74,"column":31}},"74":{"start":{"line":75,"column":0},"end":{"line":75,"column":3}},"75":{"start":{"line":76,"column":0},"end":{"line":76,"column":0}},"76":{"start":{"line":77,"column":0},"end":{"line":77,"column":77}},"77":{"start":{"line":78,"column":0},"end":{"line":78,"column":42}},"78":{"start":{"line":79,"column":0},"end":{"line":79,"column":3}},"79":{"start":{"line":80,"column":0},"end":{"line":80,"column":1}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"35":20,"36":20,"37":20,"38":20,"39":20,"40":20,"41":20,"42":20,"43":20,"44":20,"45":20,"46":20,"47":20,"48":20,"49":20,"50":20,"51":20,"52":20,"53":20,"54":20,"55":20,"56":20,"57":20,"58":20,"59":20,"60":20,"61":20,"62":20,"63":20,"64":20,"65":1,"66":1,"67":1,"68":20,"69":20,"70":1,"71":1,"72":0,"73":0,"74":0,"75":1,"76":1,"77":33,"78":33,"79":1},"branchMap":{"0":{"type":"branch","line":38,"loc":{"start":{"line":38,"column":38},"end":{"line":38,"column":46}},"locations":[{"start":{"line":38,"column":38},"end":{"line":38,"column":46}}]},"1":{"type":"branch","line":39,"loc":{"start":{"line":39,"column":42},"end":{"line":39,"column":50}},"locations":[{"start":{"line":39,"column":42},"end":{"line":39,"column":50}}]},"2":{"type":"branch","line":41,"loc":{"start":{"line":41,"column":37},"end":{"line":41,"column":45}},"locations":[{"start":{"line":41,"column":37},"end":{"line":41,"column":45}}]},"3":{"type":"branch","line":45,"loc":{"start":{"line":45,"column":40},"end":{"line":45,"column":48}},"locations":[{"start":{"line":45,"column":40},"end":{"line":45,"column":48}}]},"4":{"type":"branch","line":35,"loc":{"start":{"line":35,"column":2},"end":{"line":65,"column":3}},"locations":[{"start":{"line":35,"column":2},"end":{"line":65,"column":3}}]},"5":{"type":"branch","line":68,"loc":{"start":{"line":68,"column":8},"end":{"line":70,"column":3}},"locations":[{"start":{"line":68,"column":8},"end":{"line":70,"column":3}}]},"6":{"type":"branch","line":77,"loc":{"start":{"line":77,"column":12},"end":{"line":79,"column":3}},"locations":[{"start":{"line":77,"column":12},"end":{"line":79,"column":3}}]}},"b":{"0":[0],"1":[0],"2":[0],"3":[0],"4":[20],"5":[20],"6":[33]},"fnMap":{"0":{"name":"ProjectService","decl":{"start":{"line":35,"column":2},"end":{"line":65,"column":3}},"loc":{"start":{"line":35,"column":2},"end":{"line":65,"column":3}},"line":35},"1":{"name":"init","decl":{"start":{"line":68,"column":8},"end":{"line":70,"column":3}},"loc":{"start":{"line":68,"column":8},"end":{"line":70,"column":3}},"line":68},"2":{"name":"getBlockTimestamp","decl":{"start":{"line":72,"column":12},"end":{"line":75,"column":3}},"loc":{"start":{"line":72,"column":12},"end":{"line":75,"column":3}},"line":72},"3":{"name":"onProjectChange","decl":{"start":{"line":77,"column":12},"end":{"line":79,"column":3}},"loc":{"start":{"line":77,"column":12},"end":{"line":79,"column":3}},"line":77}},"f":{"0":20,"1":20,"2":0,"3":33}},"/Users/scotttwiname/Projects/subql-main/packages/node/src/indexer/runtime/base-runtime.service.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/node/src/indexer/runtime/base-runtime.service.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":44}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":43}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":60}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":44}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":46}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":55}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":44}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":44}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":42}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":45}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":0}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":13}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":42}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":28}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":32}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":50}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":32}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":0}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":50}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":0}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":76}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":49}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":59}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":43}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":38}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":78}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":52}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":49}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":5}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":17}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":3}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":0}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":26}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":24}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":70}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":0}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":66}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":60}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":3}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":0}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":25}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":31}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":3}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":0}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":17}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":24}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":32}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":25}},"51":{"start":{"line":52,"column":0},"end":{"line":52,"column":54}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":35}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":69}},"54":{"start":{"line":55,"column":0},"end":{"line":55,"column":6}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":46}},"56":{"start":{"line":57,"column":0},"end":{"line":57,"column":3}},"57":{"start":{"line":58,"column":0},"end":{"line":58,"column":0}},"58":{"start":{"line":59,"column":0},"end":{"line":59,"column":57}},"59":{"start":{"line":60,"column":0},"end":{"line":60,"column":66}},"60":{"start":{"line":61,"column":0},"end":{"line":61,"column":30}},"61":{"start":{"line":62,"column":0},"end":{"line":62,"column":6}},"62":{"start":{"line":63,"column":0},"end":{"line":63,"column":70}},"63":{"start":{"line":64,"column":0},"end":{"line":64,"column":22}},"64":{"start":{"line":65,"column":0},"end":{"line":65,"column":6}},"65":{"start":{"line":66,"column":0},"end":{"line":66,"column":62}},"66":{"start":{"line":67,"column":0},"end":{"line":67,"column":23}},"67":{"start":{"line":68,"column":0},"end":{"line":68,"column":3}},"68":{"start":{"line":69,"column":0},"end":{"line":69,"column":0}},"69":{"start":{"line":70,"column":0},"end":{"line":70,"column":13}},"70":{"start":{"line":71,"column":0},"end":{"line":71,"column":53}},"71":{"start":{"line":72,"column":0},"end":{"line":72,"column":68}},"72":{"start":{"line":73,"column":0},"end":{"line":73,"column":8}},"73":{"start":{"line":74,"column":0},"end":{"line":74,"column":45}},"74":{"start":{"line":75,"column":0},"end":{"line":75,"column":28}},"75":{"start":{"line":76,"column":0},"end":{"line":76,"column":38}},"76":{"start":{"line":77,"column":0},"end":{"line":77,"column":7}},"77":{"start":{"line":78,"column":0},"end":{"line":78,"column":57}},"78":{"start":{"line":79,"column":0},"end":{"line":79,"column":61}},"79":{"start":{"line":80,"column":0},"end":{"line":80,"column":8}},"80":{"start":{"line":81,"column":0},"end":{"line":81,"column":44}},"81":{"start":{"line":82,"column":0},"end":{"line":82,"column":66}},"82":{"start":{"line":83,"column":0},"end":{"line":83,"column":14}},"83":{"start":{"line":84,"column":0},"end":{"line":84,"column":56}},"84":{"start":{"line":85,"column":0},"end":{"line":85,"column":14}},"85":{"start":{"line":86,"column":0},"end":{"line":86,"column":56}},"86":{"start":{"line":87,"column":0},"end":{"line":87,"column":39}},"87":{"start":{"line":88,"column":0},"end":{"line":88,"column":13}},"88":{"start":{"line":89,"column":0},"end":{"line":89,"column":68}},"89":{"start":{"line":90,"column":0},"end":{"line":90,"column":32}},"90":{"start":{"line":91,"column":0},"end":{"line":91,"column":14}},"91":{"start":{"line":92,"column":0},"end":{"line":92,"column":70}},"92":{"start":{"line":93,"column":0},"end":{"line":93,"column":11}},"93":{"start":{"line":94,"column":0},"end":{"line":94,"column":9}},"94":{"start":{"line":95,"column":0},"end":{"line":95,"column":7}},"95":{"start":{"line":96,"column":0},"end":{"line":96,"column":12}},"96":{"start":{"line":97,"column":0},"end":{"line":97,"column":64}},"97":{"start":{"line":98,"column":0},"end":{"line":98,"column":5}},"98":{"start":{"line":99,"column":0},"end":{"line":99,"column":3}},"99":{"start":{"line":100,"column":0},"end":{"line":100,"column":0}},"100":{"start":{"line":101,"column":0},"end":{"line":101,"column":75}},"101":{"start":{"line":102,"column":0},"end":{"line":102,"column":8}},"102":{"start":{"line":103,"column":0},"end":{"line":103,"column":36}},"103":{"start":{"line":104,"column":0},"end":{"line":104,"column":77}},"104":{"start":{"line":105,"column":0},"end":{"line":105,"column":7}},"105":{"start":{"line":106,"column":0},"end":{"line":106,"column":78}},"106":{"start":{"line":107,"column":0},"end":{"line":107,"column":38}},"107":{"start":{"line":108,"column":0},"end":{"line":108,"column":8}},"108":{"start":{"line":109,"column":0},"end":{"line":109,"column":5}},"109":{"start":{"line":110,"column":0},"end":{"line":110,"column":38}},"110":{"start":{"line":111,"column":0},"end":{"line":111,"column":3}},"111":{"start":{"line":112,"column":0},"end":{"line":112,"column":1}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":7,"25":3,"26":3,"27":3,"28":3,"29":3,"30":3,"31":3,"32":4,"33":4,"34":1,"35":1,"36":1,"37":1,"38":1,"39":1,"40":0,"41":0,"42":1,"43":1,"44":22,"45":22,"46":1,"47":1,"48":1,"49":1,"50":1,"51":1,"52":1,"53":1,"54":1,"55":1,"56":1,"57":1,"58":1,"59":8,"60":8,"61":8,"62":8,"63":8,"64":8,"65":8,"66":8,"67":8,"68":1,"69":1,"70":1,"71":3,"72":3,"73":3,"74":3,"75":0,"76":3,"77":0,"78":0,"79":0,"80":0,"81":0,"82":0,"83":0,"84":0,"85":0,"86":0,"87":0,"88":0,"89":0,"90":0,"91":0,"92":0,"93":0,"94":0,"95":3,"96":3,"97":3,"98":3,"99":1,"100":1,"101":0,"102":0,"103":0,"104":0,"105":0,"106":0,"107":0,"108":0,"109":0,"110":0,"111":1},"branchMap":{"0":{"type":"branch","line":22,"loc":{"start":{"line":22,"column":2},"end":{"line":22,"column":50}},"locations":[{"start":{"line":22,"column":2},"end":{"line":22,"column":50}}]},"1":{"type":"branch","line":24,"loc":{"start":{"line":24,"column":2},"end":{"line":34,"column":3}},"locations":[{"start":{"line":24,"column":2},"end":{"line":34,"column":3}}]},"2":{"type":"branch","line":25,"loc":{"start":{"line":25,"column":48},"end":{"line":32,"column":5}},"locations":[{"start":{"line":25,"column":48},"end":{"line":32,"column":5}}]},"3":{"type":"branch","line":33,"loc":{"start":{"line":33,"column":-1},"end":{"line":34,"column":3}},"locations":[{"start":{"line":33,"column":-1},"end":{"line":34,"column":3}}]},"4":{"type":"branch","line":44,"loc":{"start":{"line":44,"column":2},"end":{"line":46,"column":3}},"locations":[{"start":{"line":44,"column":2},"end":{"line":46,"column":3}}]},"5":{"type":"branch","line":48,"loc":{"start":{"line":48,"column":2},"end":{"line":57,"column":3}},"locations":[{"start":{"line":48,"column":2},"end":{"line":57,"column":3}}]},"6":{"type":"branch","line":56,"loc":{"start":{"line":56,"column":34},"end":{"line":56,"column":45}},"locations":[{"start":{"line":56,"column":34},"end":{"line":56,"column":45}}]},"7":{"type":"branch","line":54,"loc":{"start":{"line":54,"column":6},"end":{"line":54,"column":68}},"locations":[{"start":{"line":54,"column":6},"end":{"line":54,"column":68}}]},"8":{"type":"branch","line":59,"loc":{"start":{"line":59,"column":2},"end":{"line":68,"column":3}},"locations":[{"start":{"line":59,"column":2},"end":{"line":68,"column":3}}]},"9":{"type":"branch","line":71,"loc":{"start":{"line":71,"column":8},"end":{"line":99,"column":3}},"locations":[{"start":{"line":71,"column":8},"end":{"line":99,"column":3}}]},"10":{"type":"branch","line":75,"loc":{"start":{"line":75,"column":25},"end":{"line":76,"column":38}},"locations":[{"start":{"line":75,"column":25},"end":{"line":76,"column":38}}]},"11":{"type":"branch","line":77,"loc":{"start":{"line":77,"column":6},"end":{"line":96,"column":11}},"locations":[{"start":{"line":77,"column":6},"end":{"line":96,"column":11}}]}},"b":{"0":[20],"1":[7],"2":[3],"3":[4],"4":[22],"5":[1],"6":[0],"7":[2],"8":[8],"9":[3],"10":[0],"11":[0]},"fnMap":{"0":{"name":"BaseRuntimeService","decl":{"start":{"line":22,"column":2},"end":{"line":22,"column":50}},"loc":{"start":{"line":22,"column":2},"end":{"line":22,"column":50}},"line":22},"1":{"name":"specChanged","decl":{"start":{"line":24,"column":2},"end":{"line":34,"column":3}},"loc":{"start":{"line":24,"column":2},"end":{"line":34,"column":3}},"line":24},"2":{"name":"init","decl":{"start":{"line":40,"column":2},"end":{"line":42,"column":3}},"loc":{"start":{"line":40,"column":2},"end":{"line":42,"column":3}},"line":40},"3":{"name":"get api","decl":{"start":{"line":44,"column":2},"end":{"line":46,"column":3}},"loc":{"start":{"line":44,"column":2},"end":{"line":46,"column":3}},"line":44},"4":{"name":"getSpecFromMap","decl":{"start":{"line":48,"column":2},"end":{"line":57,"column":3}},"loc":{"start":{"line":48,"column":2},"end":{"line":57,"column":3}},"line":48},"5":{"name":"getSpecFromApi","decl":{"start":{"line":59,"column":2},"end":{"line":68,"column":3}},"loc":{"start":{"line":59,"column":2},"end":{"line":68,"column":3}},"line":59},"6":{"name":"prefetchMeta","decl":{"start":{"line":71,"column":8},"end":{"line":99,"column":3}},"loc":{"start":{"line":71,"column":8},"end":{"line":99,"column":3}},"line":71},"7":{"name":"getRuntimeVersion","decl":{"start":{"line":101,"column":2},"end":{"line":111,"column":3}},"loc":{"start":{"line":101,"column":2},"end":{"line":111,"column":3}},"line":101}},"f":{"0":20,"1":7,"2":0,"3":22,"4":1,"5":8,"6":3,"7":0}},"/Users/scotttwiname/Projects/subql-main/packages/node/src/indexer/runtime/runtimeService.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/node/src/indexer/runtime/runtimeService.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":44}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":44}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":44}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":8}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":24}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":29}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":23}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":8}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":21}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":25}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":32}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":0}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":13}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":56}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":35}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":0}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":14}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":37}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":61}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":5}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":22}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":3}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":0}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":44}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":67}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":113}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":65}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":54}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":18}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":33}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":37}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":5}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":3}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":0}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":67}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":28}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":31}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":12}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":74}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":5}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":3}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":0}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":54}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":23}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":24}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":71}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":33}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":33}},"51":{"start":{"line":52,"column":0},"end":{"line":52,"column":96}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":83}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":66}},"54":{"start":{"line":55,"column":0},"end":{"line":55,"column":79}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":5}},"56":{"start":{"line":57,"column":0},"end":{"line":57,"column":41}},"57":{"start":{"line":58,"column":0},"end":{"line":58,"column":64}},"58":{"start":{"line":59,"column":0},"end":{"line":59,"column":78}},"59":{"start":{"line":60,"column":0},"end":{"line":60,"column":59}},"60":{"start":{"line":61,"column":0},"end":{"line":61,"column":59}},"61":{"start":{"line":62,"column":0},"end":{"line":62,"column":32}},"62":{"start":{"line":63,"column":0},"end":{"line":63,"column":7}},"63":{"start":{"line":64,"column":0},"end":{"line":64,"column":5}},"64":{"start":{"line":65,"column":0},"end":{"line":65,"column":50}},"65":{"start":{"line":66,"column":0},"end":{"line":66,"column":3}},"66":{"start":{"line":67,"column":0},"end":{"line":67,"column":0}},"67":{"start":{"line":68,"column":0},"end":{"line":68,"column":40}},"68":{"start":{"line":69,"column":0},"end":{"line":69,"column":13}},"69":{"start":{"line":70,"column":0},"end":{"line":70,"column":77}},"70":{"start":{"line":71,"column":0},"end":{"line":71,"column":36}},"71":{"start":{"line":72,"column":0},"end":{"line":72,"column":69}},"72":{"start":{"line":73,"column":0},"end":{"line":73,"column":37}},"73":{"start":{"line":74,"column":0},"end":{"line":74,"column":5}},"74":{"start":{"line":75,"column":0},"end":{"line":75,"column":50}},"75":{"start":{"line":76,"column":0},"end":{"line":76,"column":3}},"76":{"start":{"line":77,"column":0},"end":{"line":77,"column":1}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":20,"21":20,"22":20,"23":20,"24":20,"25":1,"26":1,"27":1,"28":2,"29":2,"30":2,"31":2,"32":2,"33":2,"34":2,"35":2,"36":1,"37":1,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":1,"45":1,"46":1,"47":9,"48":9,"49":9,"50":9,"51":9,"52":9,"53":9,"54":1,"55":1,"56":9,"57":8,"58":8,"59":1,"60":1,"61":1,"62":1,"63":8,"64":9,"65":9,"66":1,"67":1,"68":1,"69":1,"70":7,"71":7,"72":7,"73":7,"74":7,"75":7,"76":1},"branchMap":{"0":{"type":"branch","line":20,"loc":{"start":{"line":20,"column":2},"end":{"line":25,"column":3}},"locations":[{"start":{"line":20,"column":2},"end":{"line":25,"column":3}}]},"1":{"type":"branch","line":28,"loc":{"start":{"line":28,"column":2},"end":{"line":36,"column":3}},"locations":[{"start":{"line":28,"column":2},"end":{"line":36,"column":3}}]},"2":{"type":"branch","line":32,"loc":{"start":{"line":32,"column":6},"end":{"line":32,"column":17}},"locations":[{"start":{"line":32,"column":6},"end":{"line":32,"column":17}}]},"3":{"type":"branch","line":47,"loc":{"start":{"line":47,"column":2},"end":{"line":66,"column":3}},"locations":[{"start":{"line":47,"column":2},"end":{"line":66,"column":3}}]},"4":{"type":"branch","line":54,"loc":{"start":{"line":54,"column":27},"end":{"line":54,"column":63}},"locations":[{"start":{"line":54,"column":27},"end":{"line":54,"column":63}}]},"5":{"type":"branch","line":54,"loc":{"start":{"line":54,"column":65},"end":{"line":56,"column":5}},"locations":[{"start":{"line":54,"column":65},"end":{"line":56,"column":5}}]},"6":{"type":"branch","line":57,"loc":{"start":{"line":57,"column":40},"end":{"line":64,"column":5}},"locations":[{"start":{"line":57,"column":40},"end":{"line":64,"column":5}}]},"7":{"type":"branch","line":59,"loc":{"start":{"line":59,"column":77},"end":{"line":63,"column":7}},"locations":[{"start":{"line":59,"column":77},"end":{"line":63,"column":7}}]},"8":{"type":"branch","line":70,"loc":{"start":{"line":70,"column":8},"end":{"line":76,"column":3}},"locations":[{"start":{"line":70,"column":8},"end":{"line":76,"column":3}}]}},"b":{"0":[20],"1":[2],"2":[0],"3":[9],"4":[1],"5":[1],"6":[8],"7":[1],"8":[7]},"fnMap":{"0":{"name":"RuntimeService","decl":{"start":{"line":20,"column":2},"end":{"line":25,"column":3}},"loc":{"start":{"line":20,"column":2},"end":{"line":25,"column":3}},"line":20},"1":{"name":"syncDictionarySpecVersions","decl":{"start":{"line":28,"column":2},"end":{"line":36,"column":3}},"loc":{"start":{"line":28,"column":2},"end":{"line":36,"column":3}},"line":28},"2":{"name":"setSpecVersionMap","decl":{"start":{"line":38,"column":2},"end":{"line":44,"column":3}},"loc":{"start":{"line":38,"column":2},"end":{"line":44,"column":3}},"line":38},"3":{"name":"getSpecVersion","decl":{"start":{"line":47,"column":2},"end":{"line":66,"column":3}},"loc":{"start":{"line":47,"column":2},"end":{"line":66,"column":3}},"line":47},"4":{"name":"specChanged","decl":{"start":{"line":70,"column":8},"end":{"line":76,"column":3}},"loc":{"start":{"line":70,"column":8},"end":{"line":76,"column":3}},"line":70}},"f":{"0":20,"1":2,"2":0,"3":9,"4":7}},"/Users/scotttwiname/Projects/subql-main/packages/node/src/indexer/runtime/workerRuntimeService.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/node/src/indexer/runtime/workerRuntimeService.ts","all":true,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":44}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":44}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":60}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":0}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":13}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":62}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":46}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":21}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":34}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":35}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":11}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":41}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":8}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":44}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":56}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":7}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":57}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":5}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":3}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":0}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":55}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":43}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":23}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":24}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":71}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":33}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":96}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":83}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":66}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":79}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":5}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":41}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":64}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":5}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":57}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":3}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":1}}},"s":{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0},"branchMap":{"0":{"type":"branch","line":1,"loc":{"start":{"line":1,"column":0},"end":{"line":40,"column":1}},"locations":[{"start":{"line":1,"column":0},"end":{"line":40,"column":1}}]}},"b":{"0":[0]},"fnMap":{"0":{"name":"(empty-report)","decl":{"start":{"line":1,"column":0},"end":{"line":40,"column":1}},"loc":{"start":{"line":1,"column":0},"end":{"line":40,"column":1}},"line":1}},"f":{"0":0}},"/Users/scotttwiname/Projects/subql-main/packages/node/src/indexer/sandbox.service.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/node/src/indexer/sandbox.service.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":46}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":52}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":8}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":19}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":17}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":13}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":15}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":19}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":23}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":26}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":58}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":43}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":0}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":111}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":13}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":34}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":62}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":0}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":14}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":44}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":49}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":48}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":56}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":44}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":75}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":6}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":0}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":64}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":37}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":36}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":72}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":0}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":47}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":46}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":47}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":21}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":37}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":9}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":16}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":16}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":34}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":16}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":48}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":10}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":24}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":8}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":45}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":5}},"51":{"start":{"line":52,"column":0},"end":{"line":52,"column":33}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":33}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":57}},"54":{"start":{"line":55,"column":0},"end":{"line":55,"column":5}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":62}},"56":{"start":{"line":57,"column":0},"end":{"line":57,"column":21}},"57":{"start":{"line":58,"column":0},"end":{"line":58,"column":3}},"58":{"start":{"line":59,"column":0},"end":{"line":59,"column":0}},"59":{"start":{"line":60,"column":0},"end":{"line":60,"column":58}},"60":{"start":{"line":61,"column":0},"end":{"line":61,"column":27}},"61":{"start":{"line":62,"column":0},"end":{"line":62,"column":3}},"62":{"start":{"line":63,"column":0},"end":{"line":63,"column":1}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":20,"23":20,"24":20,"25":20,"26":20,"27":20,"28":20,"29":1,"30":1,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":1,"59":1,"60":0,"61":0,"62":1},"branchMap":{"0":{"type":"branch","line":24,"loc":{"start":{"line":24,"column":40},"end":{"line":24,"column":48}},"locations":[{"start":{"line":24,"column":40},"end":{"line":24,"column":48}}]},"1":{"type":"branch","line":22,"loc":{"start":{"line":22,"column":2},"end":{"line":29,"column":6}},"locations":[{"start":{"line":22,"column":2},"end":{"line":29,"column":6}}]}},"b":{"0":[0],"1":[20]},"fnMap":{"0":{"name":"SandboxService","decl":{"start":{"line":22,"column":2},"end":{"line":29,"column":6}},"loc":{"start":{"line":22,"column":2},"end":{"line":29,"column":6}},"line":22},"1":{"name":"getDsProcessor","decl":{"start":{"line":31,"column":2},"end":{"line":58,"column":3}},"loc":{"start":{"line":31,"column":2},"end":{"line":58,"column":3}},"line":31},"2":{"name":"getDataSourceEntry","decl":{"start":{"line":60,"column":10},"end":{"line":62,"column":3}},"loc":{"start":{"line":60,"column":10},"end":{"line":62,"column":3}},"line":60}},"f":{"0":20,"1":0,"2":0}},"/Users/scotttwiname/Projects/subql-main/packages/node/src/indexer/types.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/node/src/indexer/types.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":43}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":52}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":54}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":8}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":14}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":22}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":17}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":17}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":21}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":22}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":0}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":31}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":24}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":35}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":27}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":1}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":0}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":36}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":51}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":32}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":1}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":0}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":51}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":0}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":74}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":0}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":28}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":42}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":26}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":58}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":1}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":0,"30":0,"31":0,"32":0,"33":0},"branchMap":{},"b":{},"fnMap":{"0":{"name":"isFullBlock","decl":{"start":{"line":30,"column":0},"end":{"line":34,"column":1}},"loc":{"start":{"line":30,"column":0},"end":{"line":34,"column":1}},"line":30}},"f":{"0":0}},"/Users/scotttwiname/Projects/subql-main/packages/node/src/indexer/unfinalizedBlocks.service.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/node/src/indexer/unfinalizedBlocks.service.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":44}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":8}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":31}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":12}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":9}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":17}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":13}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":20}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":26}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":61}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":43}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":58}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":0}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":13}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":75}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":34}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":3}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":14}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":44}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":27}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":34}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":5}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":34}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":3}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":0}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":19}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":55}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":35}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":52}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":63}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":8}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":6}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":3}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":0}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":25}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":19}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":67}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":35}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":58}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":6}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":3}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":0}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":19}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":71}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":74}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":47}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":3}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":1}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":20,"22":20,"23":20,"24":20,"25":20,"26":20,"27":1,"28":1,"29":1,"30":20,"31":20,"32":20,"33":20,"34":20,"35":20,"36":1,"37":1,"38":1,"39":1,"40":0,"41":0,"42":0,"43":0,"44":1,"45":1,"46":1,"47":0,"48":0,"49":0,"50":1},"branchMap":{"0":{"type":"branch","line":21,"loc":{"start":{"line":21,"column":2},"end":{"line":27,"column":3}},"locations":[{"start":{"line":21,"column":2},"end":{"line":27,"column":3}}]},"1":{"type":"branch","line":30,"loc":{"start":{"line":30,"column":18},"end":{"line":36,"column":3}},"locations":[{"start":{"line":30,"column":18},"end":{"line":36,"column":3}}]}},"b":{"0":[20],"1":[20]},"fnMap":{"0":{"name":"UnfinalizedBlocksService","decl":{"start":{"line":21,"column":2},"end":{"line":27,"column":3}},"loc":{"start":{"line":21,"column":2},"end":{"line":27,"column":3}},"line":21},"1":{"name":"getFinalizedHead","decl":{"start":{"line":30,"column":18},"end":{"line":36,"column":3}},"loc":{"start":{"line":30,"column":18},"end":{"line":36,"column":3}},"line":30},"2":{"name":"getHeaderForHash","decl":{"start":{"line":40,"column":18},"end":{"line":44,"column":3}},"loc":{"start":{"line":40,"column":18},"end":{"line":44,"column":3}},"line":40},"3":{"name":"getHeaderForHeight","decl":{"start":{"line":47,"column":18},"end":{"line":50,"column":3}},"loc":{"start":{"line":47,"column":18},"end":{"line":50,"column":3}},"line":47}},"f":{"0":20,"1":20,"2":0,"3":0}},"/Users/scotttwiname/Projects/subql-main/packages/node/src/indexer/worker/worker-fetch.module.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/node/src/indexer/worker/worker-fetch.module.ts","all":true,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":40}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":54}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":8}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":24}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":25}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":35}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":29}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":13}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":23}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":29}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":26}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":66}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":44}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":64}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":61}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":57}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":52}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":52}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":71}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":52}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":72}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":49}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":84}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":0}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":3}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":52}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":3}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":0}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":9}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":14}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":19}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":5}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":42}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":23}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":67}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":6}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":26}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":5}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":26}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":25}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":33}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":75}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":36}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":31}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":12}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":42}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":18}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":32}},"51":{"start":{"line":52,"column":0},"end":{"line":52,"column":23}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":21}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":10}},"54":{"start":{"line":55,"column":0},"end":{"line":55,"column":32}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":26}},"56":{"start":{"line":57,"column":0},"end":{"line":57,"column":8}},"57":{"start":{"line":58,"column":0},"end":{"line":58,"column":15}},"58":{"start":{"line":59,"column":0},"end":{"line":59,"column":27}},"59":{"start":{"line":60,"column":0},"end":{"line":60,"column":30}},"60":{"start":{"line":61,"column":0},"end":{"line":61,"column":22}},"61":{"start":{"line":62,"column":0},"end":{"line":62,"column":19}},"62":{"start":{"line":63,"column":0},"end":{"line":63,"column":8}},"63":{"start":{"line":64,"column":0},"end":{"line":64,"column":6}},"64":{"start":{"line":65,"column":0},"end":{"line":65,"column":19}},"65":{"start":{"line":66,"column":0},"end":{"line":66,"column":23}},"66":{"start":{"line":67,"column":0},"end":{"line":67,"column":5}},"67":{"start":{"line":68,"column":0},"end":{"line":68,"column":32}},"68":{"start":{"line":69,"column":0},"end":{"line":69,"column":73}},"69":{"start":{"line":70,"column":0},"end":{"line":70,"column":6}},"70":{"start":{"line":71,"column":0},"end":{"line":71,"column":5}},"71":{"start":{"line":72,"column":0},"end":{"line":72,"column":33}},"72":{"start":{"line":73,"column":0},"end":{"line":73,"column":31}},"73":{"start":{"line":74,"column":0},"end":{"line":74,"column":6}},"74":{"start":{"line":75,"column":0},"end":{"line":75,"column":5}},"75":{"start":{"line":76,"column":0},"end":{"line":76,"column":40}},"76":{"start":{"line":77,"column":0},"end":{"line":77,"column":23}},"77":{"start":{"line":78,"column":0},"end":{"line":78,"column":65}},"78":{"start":{"line":79,"column":0},"end":{"line":79,"column":6}},"79":{"start":{"line":80,"column":0},"end":{"line":80,"column":18}},"80":{"start":{"line":81,"column":0},"end":{"line":81,"column":25}},"81":{"start":{"line":82,"column":0},"end":{"line":82,"column":5}},"82":{"start":{"line":83,"column":0},"end":{"line":83,"column":36}},"83":{"start":{"line":84,"column":0},"end":{"line":84,"column":77}},"84":{"start":{"line":85,"column":0},"end":{"line":85,"column":6}},"85":{"start":{"line":86,"column":0},"end":{"line":86,"column":4}},"86":{"start":{"line":87,"column":0},"end":{"line":87,"column":14}},"87":{"start":{"line":88,"column":0},"end":{"line":88,"column":2}},"88":{"start":{"line":89,"column":0},"end":{"line":89,"column":33}}},"s":{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"59":0,"60":0,"61":0,"62":0,"63":0,"64":0,"65":0,"66":0,"67":0,"68":0,"69":0,"70":0,"71":0,"72":0,"73":0,"74":0,"75":0,"76":0,"77":0,"78":0,"79":0,"80":0,"81":0,"82":0,"83":0,"84":0,"85":0,"86":0,"87":0,"88":0},"branchMap":{"0":{"type":"branch","line":1,"loc":{"start":{"line":1,"column":0},"end":{"line":89,"column":33}},"locations":[{"start":{"line":1,"column":0},"end":{"line":89,"column":33}}]}},"b":{"0":[0]},"fnMap":{"0":{"name":"(empty-report)","decl":{"start":{"line":1,"column":0},"end":{"line":89,"column":33}},"loc":{"start":{"line":1,"column":0},"end":{"line":89,"column":33}},"line":1}},"f":{"0":0}},"/Users/scotttwiname/Projects/subql-main/packages/node/src/indexer/worker/worker.module.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/node/src/indexer/worker/worker.module.ts","all":true,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":40}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":59}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":50}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":67}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":58}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":0}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":9}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":12}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":33}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":31}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":29}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":22}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":4}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":18}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":2}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":28}}},"s":{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0},"branchMap":{"0":{"type":"branch","line":1,"loc":{"start":{"line":1,"column":0},"end":{"line":19,"column":28}},"locations":[{"start":{"line":1,"column":0},"end":{"line":19,"column":28}}]}},"b":{"0":[0]},"fnMap":{"0":{"name":"(empty-report)","decl":{"start":{"line":1,"column":0},"end":{"line":19,"column":28}},"loc":{"start":{"line":1,"column":0},"end":{"line":19,"column":28}},"line":1}},"f":{"0":0}},"/Users/scotttwiname/Projects/subql-main/packages/node/src/indexer/worker/worker.service.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/node/src/indexer/worker/worker.service.ts","all":true,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":52}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":8}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":13}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":18}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":23}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":20}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":25}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":9}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":26}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":51}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":44}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":44}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":52}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":71}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":72}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":0}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":77}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":0}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":13}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":53}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":35}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":21}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":22}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":25}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":3}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":14}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":35}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":43}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":55}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":30}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":57}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":37}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":50}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":27}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":5}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":61}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":3}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":0}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":34}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":19}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":20}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":56}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":68}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":13}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":18}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":6}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":0}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":54}},"51":{"start":{"line":52,"column":0},"end":{"line":52,"column":15}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":76}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":6}},"54":{"start":{"line":55,"column":0},"end":{"line":55,"column":0}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":17}},"56":{"start":{"line":57,"column":0},"end":{"line":57,"column":3}},"57":{"start":{"line":58,"column":0},"end":{"line":58,"column":0}},"58":{"start":{"line":59,"column":0},"end":{"line":59,"column":70}},"59":{"start":{"line":60,"column":0},"end":{"line":60,"column":12}},"60":{"start":{"line":61,"column":0},"end":{"line":61,"column":43}},"61":{"start":{"line":62,"column":0},"end":{"line":62,"column":62}},"62":{"start":{"line":63,"column":0},"end":{"line":63,"column":6}},"63":{"start":{"line":64,"column":0},"end":{"line":64,"column":3}},"64":{"start":{"line":65,"column":0},"end":{"line":65,"column":0}},"65":{"start":{"line":66,"column":0},"end":{"line":66,"column":38}},"66":{"start":{"line":67,"column":0},"end":{"line":67,"column":52}},"67":{"start":{"line":68,"column":0},"end":{"line":68,"column":39}},"68":{"start":{"line":69,"column":0},"end":{"line":69,"column":36}},"69":{"start":{"line":70,"column":0},"end":{"line":70,"column":52}},"70":{"start":{"line":71,"column":0},"end":{"line":71,"column":17}},"71":{"start":{"line":72,"column":0},"end":{"line":72,"column":77}},"72":{"start":{"line":73,"column":0},"end":{"line":73,"column":0}},"73":{"start":{"line":74,"column":0},"end":{"line":74,"column":78}},"74":{"start":{"line":75,"column":0},"end":{"line":75,"column":3}},"75":{"start":{"line":76,"column":0},"end":{"line":76,"column":0}},"76":{"start":{"line":77,"column":0},"end":{"line":77,"column":54}},"77":{"start":{"line":78,"column":0},"end":{"line":78,"column":52}},"78":{"start":{"line":79,"column":0},"end":{"line":79,"column":13}},"79":{"start":{"line":80,"column":0},"end":{"line":80,"column":47}},"80":{"start":{"line":81,"column":0},"end":{"line":81,"column":6}},"81":{"start":{"line":82,"column":0},"end":{"line":82,"column":3}},"82":{"start":{"line":83,"column":0},"end":{"line":83,"column":0}},"83":{"start":{"line":84,"column":0},"end":{"line":84,"column":21}},"84":{"start":{"line":85,"column":0},"end":{"line":85,"column":32}},"85":{"start":{"line":86,"column":0},"end":{"line":86,"column":35}},"86":{"start":{"line":87,"column":0},"end":{"line":87,"column":11}},"87":{"start":{"line":88,"column":0},"end":{"line":88,"column":49}},"88":{"start":{"line":89,"column":0},"end":{"line":89,"column":19}},"89":{"start":{"line":90,"column":0},"end":{"line":90,"column":28}},"90":{"start":{"line":91,"column":0},"end":{"line":91,"column":6}},"91":{"start":{"line":92,"column":0},"end":{"line":92,"column":3}},"92":{"start":{"line":93,"column":0},"end":{"line":93,"column":1}}},"s":{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"59":0,"60":0,"61":0,"62":0,"63":0,"64":0,"65":0,"66":0,"67":0,"68":0,"69":0,"70":0,"71":0,"72":0,"73":0,"74":0,"75":0,"76":0,"77":0,"78":0,"79":0,"80":0,"81":0,"82":0,"83":0,"84":0,"85":0,"86":0,"87":0,"88":0,"89":0,"90":0,"91":0,"92":0},"branchMap":{"0":{"type":"branch","line":1,"loc":{"start":{"line":1,"column":0},"end":{"line":93,"column":1}},"locations":[{"start":{"line":1,"column":0},"end":{"line":93,"column":1}}]}},"b":{"0":[0]},"fnMap":{"0":{"name":"(empty-report)","decl":{"start":{"line":1,"column":0},"end":{"line":93,"column":1}},"loc":{"start":{"line":1,"column":0},"end":{"line":93,"column":1}},"line":1}},"f":{"0":0}},"/Users/scotttwiname/Projects/subql-main/packages/node/src/indexer/worker/worker.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/node/src/indexer/worker/worker.ts","all":true,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":65}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":50}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":40}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":53}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":40}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":43}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":0}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":30}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":0}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":11}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":13}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":39}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":38}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":2}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":0}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":47}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":43}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":8}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":12}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":13}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":19}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":21}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":19}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":21}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":26}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":44}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":52}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":47}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":49}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":0}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":48}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":0}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":63}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":7}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":56}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":118}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":7}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":0}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":21}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":0}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":70}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":107}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":43}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":0}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":49}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":0}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":43}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":15}},"51":{"start":{"line":52,"column":0},"end":{"line":52,"column":45}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":46}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":12}},"54":{"start":{"line":55,"column":0},"end":{"line":55,"column":3}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":1}},"56":{"start":{"line":57,"column":0},"end":{"line":57,"column":0}},"57":{"start":{"line":58,"column":0},"end":{"line":58,"column":61}},"58":{"start":{"line":59,"column":0},"end":{"line":59,"column":66}},"59":{"start":{"line":60,"column":0},"end":{"line":60,"column":1}},"60":{"start":{"line":61,"column":0},"end":{"line":61,"column":0}},"61":{"start":{"line":62,"column":0},"end":{"line":62,"column":28}},"62":{"start":{"line":63,"column":0},"end":{"line":63,"column":30}},"63":{"start":{"line":64,"column":0},"end":{"line":64,"column":33}},"64":{"start":{"line":65,"column":0},"end":{"line":65,"column":9}},"65":{"start":{"line":66,"column":0},"end":{"line":66,"column":55}},"66":{"start":{"line":67,"column":0},"end":{"line":67,"column":17}},"67":{"start":{"line":68,"column":0},"end":{"line":68,"column":26}},"68":{"start":{"line":69,"column":0},"end":{"line":69,"column":4}},"69":{"start":{"line":70,"column":0},"end":{"line":70,"column":1}},"70":{"start":{"line":71,"column":0},"end":{"line":71,"column":0}},"71":{"start":{"line":72,"column":0},"end":{"line":72,"column":51}},"72":{"start":{"line":73,"column":0},"end":{"line":73,"column":48}},"73":{"start":{"line":74,"column":0},"end":{"line":74,"column":40}},"74":{"start":{"line":75,"column":0},"end":{"line":75,"column":2}},"75":{"start":{"line":76,"column":0},"end":{"line":76,"column":0}},"76":{"start":{"line":77,"column":0},"end":{"line":77,"column":45}},"77":{"start":{"line":78,"column":0},"end":{"line":78,"column":21}},"78":{"start":{"line":79,"column":0},"end":{"line":79,"column":17}},"79":{"start":{"line":80,"column":0},"end":{"line":80,"column":13}},"80":{"start":{"line":81,"column":0},"end":{"line":81,"column":3}}},"s":{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"59":0,"60":0,"61":0,"62":0,"63":0,"64":0,"65":0,"66":0,"67":0,"68":0,"69":0,"70":0,"71":0,"72":0,"73":0,"74":0,"75":0,"76":0,"77":0,"78":0,"79":0,"80":0},"branchMap":{"0":{"type":"branch","line":1,"loc":{"start":{"line":1,"column":0},"end":{"line":81,"column":3}},"locations":[{"start":{"line":1,"column":0},"end":{"line":81,"column":3}}]}},"b":{"0":[0]},"fnMap":{"0":{"name":"(empty-report)","decl":{"start":{"line":1,"column":0},"end":{"line":81,"column":3}},"loc":{"start":{"line":1,"column":0},"end":{"line":81,"column":3}},"line":1}},"f":{"0":0}},"/Users/scotttwiname/Projects/subql-main/packages/node/src/indexer/worker/worker.unfinalizedBlocks.service.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/node/src/indexer/worker/worker.unfinalizedBlocks.service.ts","all":true,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":51}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":44}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":8}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":9}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":24}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":9}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":28}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":26}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":40}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":0}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":13}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":43}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":52}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":1}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":52}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":23}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":54}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":5}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":3}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":0}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":33}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":32}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":34}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":65}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":3}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":0}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":38}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":31}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":34}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":54}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":3}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":0}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":71}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":75}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":70}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":3}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":34}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":70}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":3}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":44}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":70}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":3}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":0}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":71}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":53}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":70}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":3}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":1}}},"s":{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0},"branchMap":{"0":{"type":"branch","line":1,"loc":{"start":{"line":1,"column":0},"end":{"line":51,"column":1}},"locations":[{"start":{"line":1,"column":0},"end":{"line":51,"column":1}}]}},"b":{"0":[0]},"fnMap":{"0":{"name":"(empty-report)","decl":{"start":{"line":1,"column":0},"end":{"line":51,"column":1}},"loc":{"start":{"line":1,"column":0},"end":{"line":51,"column":1}},"line":1}},"f":{"0":0}},"/Users/scotttwiname/Projects/subql-main/packages/node/src/indexer/x-provider/cachedProvider.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/node/src/indexer/x-provider/cachedProvider.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":65}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":37}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":0}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":27}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":28}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":0}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":39}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":37}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":30}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":22}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":55}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":24}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":19}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":5}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":0}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":31}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":19}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":22}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":11}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":9}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":8}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":83}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":25}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":51}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":5}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":0}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":46}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":33}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":36}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":5}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":0}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":78}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":42}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":25}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":4}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":0}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":30}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":44}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":28}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":25}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":25}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":28}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":31}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":32}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":11}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":63}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":52}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":80}},"51":{"start":{"line":52,"column":0},"end":{"line":52,"column":39}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":21}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":21}},"54":{"start":{"line":55,"column":0},"end":{"line":55,"column":39}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":24}},"56":{"start":{"line":57,"column":0},"end":{"line":57,"column":14}},"57":{"start":{"line":58,"column":0},"end":{"line":58,"column":11}},"58":{"start":{"line":59,"column":0},"end":{"line":59,"column":0}},"59":{"start":{"line":60,"column":0},"end":{"line":60,"column":77}},"60":{"start":{"line":61,"column":0},"end":{"line":61,"column":78}},"61":{"start":{"line":62,"column":0},"end":{"line":62,"column":10}},"62":{"start":{"line":63,"column":0},"end":{"line":63,"column":7}},"63":{"start":{"line":64,"column":0},"end":{"line":64,"column":0}},"64":{"start":{"line":65,"column":0},"end":{"line":65,"column":62}},"65":{"start":{"line":66,"column":0},"end":{"line":66,"column":49}},"66":{"start":{"line":67,"column":0},"end":{"line":67,"column":6}},"67":{"start":{"line":68,"column":0},"end":{"line":68,"column":5}},"68":{"start":{"line":69,"column":0},"end":{"line":69,"column":1}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":17,"11":17,"12":17,"13":17,"14":17,"15":17,"16":17,"17":17,"18":17,"19":59,"20":59,"21":59,"22":59,"23":59,"24":59,"25":59,"26":16,"27":16,"28":43,"29":43,"30":59,"31":11,"32":11,"33":32,"34":32,"35":32,"36":32,"37":17,"38":17,"39":17,"40":17,"41":476091,"42":177,"43":165,"44":165,"45":165,"46":165,"47":165,"48":165,"49":165,"50":165,"51":59,"52":59,"53":59,"54":59,"55":59,"56":59,"57":59,"58":106,"59":106,"60":106,"61":177,"62":177,"63":475914,"64":475914,"65":475914,"66":17,"67":17,"68":17},"branchMap":{"0":{"type":"branch","line":11,"loc":{"start":{"line":11,"column":0},"end":{"line":69,"column":1}},"locations":[{"start":{"line":11,"column":0},"end":{"line":69,"column":1}}]},"1":{"type":"branch","line":19,"loc":{"start":{"line":19,"column":30},"end":{"line":38,"column":3}},"locations":[{"start":{"line":19,"column":30},"end":{"line":38,"column":3}}]},"2":{"type":"branch","line":26,"loc":{"start":{"line":26,"column":24},"end":{"line":28,"column":5}},"locations":[{"start":{"line":26,"column":24},"end":{"line":28,"column":5}}]},"3":{"type":"branch","line":29,"loc":{"start":{"line":29,"column":-1},"end":{"line":31,"column":32}},"locations":[{"start":{"line":29,"column":-1},"end":{"line":31,"column":32}}]},"4":{"type":"branch","line":31,"loc":{"start":{"line":31,"column":32},"end":{"line":38,"column":3}},"locations":[{"start":{"line":31,"column":32},"end":{"line":38,"column":3}}]},"5":{"type":"branch","line":31,"loc":{"start":{"line":31,"column":32},"end":{"line":33,"column":5}},"locations":[{"start":{"line":31,"column":32},"end":{"line":33,"column":5}}]},"6":{"type":"branch","line":34,"loc":{"start":{"line":34,"column":-1},"end":{"line":38,"column":3}},"locations":[{"start":{"line":34,"column":-1},"end":{"line":38,"column":3}}]},"7":{"type":"branch","line":41,"loc":{"start":{"line":41,"column":9},"end":{"line":67,"column":5}},"locations":[{"start":{"line":41,"column":9},"end":{"line":67,"column":5}}]},"8":{"type":"branch","line":42,"loc":{"start":{"line":42,"column":27},"end":{"line":63,"column":7}},"locations":[{"start":{"line":42,"column":27},"end":{"line":63,"column":7}}]},"9":{"type":"branch","line":64,"loc":{"start":{"line":64,"column":-1},"end":{"line":67,"column":5}},"locations":[{"start":{"line":64,"column":-1},"end":{"line":67,"column":5}}]},"10":{"type":"branch","line":43,"loc":{"start":{"line":43,"column":15},"end":{"line":62,"column":9}},"locations":[{"start":{"line":43,"column":15},"end":{"line":62,"column":9}}]},"11":{"type":"branch","line":51,"loc":{"start":{"line":51,"column":79},"end":{"line":58,"column":11}},"locations":[{"start":{"line":51,"column":79},"end":{"line":58,"column":11}}]},"12":{"type":"branch","line":59,"loc":{"start":{"line":59,"column":-1},"end":{"line":62,"column":9}},"locations":[{"start":{"line":59,"column":-1},"end":{"line":62,"column":9}}]}},"b":{"0":[17],"1":[59],"2":[16],"3":[43],"4":[53],"5":[11],"6":[32],"7":[476091],"8":[177],"9":[475914],"10":[165],"11":[59],"12":[106]},"fnMap":{"0":{"name":"createCachedProvider","decl":{"start":{"line":11,"column":0},"end":{"line":69,"column":1}},"loc":{"start":{"line":11,"column":0},"end":{"line":69,"column":1}},"line":11},"1":{"name":"cachedMethodHandler","decl":{"start":{"line":19,"column":30},"end":{"line":38,"column":3}},"loc":{"start":{"line":19,"column":30},"end":{"line":38,"column":3}},"line":19},"2":{"name":"get","decl":{"start":{"line":41,"column":9},"end":{"line":67,"column":5}},"loc":{"start":{"line":41,"column":9},"end":{"line":67,"column":5}},"line":41}},"f":{"0":17,"1":59,"2":476091}},"/Users/scotttwiname/Projects/subql-main/packages/node/src/indexer/x-provider/http.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/node/src/indexer/x-provider/http.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":135}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":73}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":0}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":56}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":55}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":54}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":13}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":18}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":20}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":28}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":26}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":27}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":16}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":38}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":45}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":35}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":0}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":23}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":70}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":0}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":37}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":0}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":3}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":27}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":2}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":21}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":2}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":264}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":2}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":11}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":7}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":2}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":16}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":43}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":57}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":2}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":62}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":33}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":6}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":2}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":22}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":3}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":56}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":39}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":0}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":28}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":0}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":29}},"51":{"start":{"line":52,"column":0},"end":{"line":52,"column":0}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":44}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":0}},"54":{"start":{"line":55,"column":0},"end":{"line":55,"column":33}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":0}},"56":{"start":{"line":57,"column":0},"end":{"line":57,"column":44}},"57":{"start":{"line":58,"column":0},"end":{"line":58,"column":0}},"58":{"start":{"line":59,"column":0},"end":{"line":59,"column":5}},"59":{"start":{"line":60,"column":0},"end":{"line":60,"column":68}},"60":{"start":{"line":61,"column":0},"end":{"line":61,"column":5}},"61":{"start":{"line":62,"column":0},"end":{"line":62,"column":14}},"62":{"start":{"line":63,"column":0},"end":{"line":63,"column":41}},"63":{"start":{"line":64,"column":0},"end":{"line":64,"column":41}},"64":{"start":{"line":65,"column":0},"end":{"line":65,"column":5}},"65":{"start":{"line":66,"column":0},"end":{"line":66,"column":47}},"66":{"start":{"line":67,"column":0},"end":{"line":67,"column":22}},"67":{"start":{"line":68,"column":0},"end":{"line":68,"column":85}},"68":{"start":{"line":69,"column":0},"end":{"line":69,"column":8}},"69":{"start":{"line":70,"column":0},"end":{"line":70,"column":5}},"70":{"start":{"line":71,"column":0},"end":{"line":71,"column":0}},"71":{"start":{"line":72,"column":0},"end":{"line":72,"column":25}},"72":{"start":{"line":73,"column":0},"end":{"line":73,"column":14}},"73":{"start":{"line":74,"column":0},"end":{"line":74,"column":24}},"74":{"start":{"line":75,"column":0},"end":{"line":75,"column":23}},"75":{"start":{"line":76,"column":0},"end":{"line":76,"column":8}},"76":{"start":{"line":77,"column":0},"end":{"line":77,"column":7}},"77":{"start":{"line":78,"column":0},"end":{"line":78,"column":0}},"78":{"start":{"line":79,"column":0},"end":{"line":79,"column":33}},"79":{"start":{"line":80,"column":0},"end":{"line":80,"column":30}},"80":{"start":{"line":81,"column":0},"end":{"line":81,"column":28}},"81":{"start":{"line":82,"column":0},"end":{"line":82,"column":19}},"82":{"start":{"line":83,"column":0},"end":{"line":83,"column":48}},"83":{"start":{"line":84,"column":0},"end":{"line":84,"column":14}},"84":{"start":{"line":85,"column":0},"end":{"line":85,"column":21}},"85":{"start":{"line":86,"column":0},"end":{"line":86,"column":21}},"86":{"start":{"line":87,"column":0},"end":{"line":87,"column":18}},"87":{"start":{"line":88,"column":0},"end":{"line":88,"column":18}},"88":{"start":{"line":89,"column":0},"end":{"line":89,"column":20}},"89":{"start":{"line":90,"column":0},"end":{"line":90,"column":25}},"90":{"start":{"line":91,"column":0},"end":{"line":91,"column":19}},"91":{"start":{"line":92,"column":0},"end":{"line":92,"column":8}},"92":{"start":{"line":93,"column":0},"end":{"line":93,"column":6}},"93":{"start":{"line":94,"column":0},"end":{"line":94,"column":3}},"94":{"start":{"line":95,"column":0},"end":{"line":95,"column":0}},"95":{"start":{"line":96,"column":0},"end":{"line":96,"column":5}},"96":{"start":{"line":97,"column":0},"end":{"line":97,"column":62}},"97":{"start":{"line":98,"column":0},"end":{"line":98,"column":5}},"98":{"start":{"line":99,"column":0},"end":{"line":99,"column":35}},"99":{"start":{"line":100,"column":0},"end":{"line":100,"column":17}},"100":{"start":{"line":101,"column":0},"end":{"line":101,"column":3}},"101":{"start":{"line":102,"column":0},"end":{"line":102,"column":0}},"102":{"start":{"line":103,"column":0},"end":{"line":103,"column":5}},"103":{"start":{"line":104,"column":0},"end":{"line":104,"column":47}},"104":{"start":{"line":105,"column":0},"end":{"line":105,"column":5}},"105":{"start":{"line":106,"column":0},"end":{"line":106,"column":25}},"106":{"start":{"line":107,"column":0},"end":{"line":107,"column":59}},"107":{"start":{"line":108,"column":0},"end":{"line":108,"column":3}},"108":{"start":{"line":109,"column":0},"end":{"line":109,"column":0}},"109":{"start":{"line":110,"column":0},"end":{"line":110,"column":5}},"110":{"start":{"line":111,"column":0},"end":{"line":111,"column":54}},"111":{"start":{"line":112,"column":0},"end":{"line":112,"column":5}},"112":{"start":{"line":113,"column":0},"end":{"line":113,"column":34}},"113":{"start":{"line":114,"column":0},"end":{"line":114,"column":11}},"114":{"start":{"line":115,"column":0},"end":{"line":115,"column":3}},"115":{"start":{"line":116,"column":0},"end":{"line":116,"column":0}},"116":{"start":{"line":117,"column":0},"end":{"line":117,"column":5}},"117":{"start":{"line":118,"column":0},"end":{"line":118,"column":57}},"118":{"start":{"line":119,"column":0},"end":{"line":119,"column":5}},"119":{"start":{"line":120,"column":0},"end":{"line":120,"column":37}},"120":{"start":{"line":121,"column":0},"end":{"line":121,"column":11}},"121":{"start":{"line":122,"column":0},"end":{"line":122,"column":36}},"122":{"start":{"line":123,"column":0},"end":{"line":123,"column":3}},"123":{"start":{"line":124,"column":0},"end":{"line":124,"column":0}},"124":{"start":{"line":125,"column":0},"end":{"line":125,"column":5}},"125":{"start":{"line":126,"column":0},"end":{"line":126,"column":46}},"126":{"start":{"line":127,"column":0},"end":{"line":127,"column":5}},"127":{"start":{"line":128,"column":0},"end":{"line":128,"column":30}},"128":{"start":{"line":129,"column":0},"end":{"line":129,"column":23}},"129":{"start":{"line":130,"column":0},"end":{"line":130,"column":3}},"130":{"start":{"line":131,"column":0},"end":{"line":131,"column":0}},"131":{"start":{"line":132,"column":0},"end":{"line":132,"column":5}},"132":{"start":{"line":133,"column":0},"end":{"line":133,"column":56}},"133":{"start":{"line":134,"column":0},"end":{"line":134,"column":5}},"134":{"start":{"line":135,"column":0},"end":{"line":135,"column":29}},"135":{"start":{"line":136,"column":0},"end":{"line":136,"column":16}},"136":{"start":{"line":137,"column":0},"end":{"line":137,"column":3}},"137":{"start":{"line":138,"column":0},"end":{"line":138,"column":0}},"138":{"start":{"line":139,"column":0},"end":{"line":139,"column":5}},"139":{"start":{"line":140,"column":0},"end":{"line":140,"column":51}},"140":{"start":{"line":141,"column":0},"end":{"line":141,"column":40}},"141":{"start":{"line":142,"column":0},"end":{"line":142,"column":5}},"142":{"start":{"line":143,"column":0},"end":{"line":143,"column":30}},"143":{"start":{"line":144,"column":0},"end":{"line":144,"column":16}},"144":{"start":{"line":145,"column":0},"end":{"line":145,"column":3}},"145":{"start":{"line":146,"column":0},"end":{"line":146,"column":0}},"146":{"start":{"line":147,"column":0},"end":{"line":147,"column":5}},"147":{"start":{"line":148,"column":0},"end":{"line":148,"column":81}},"148":{"start":{"line":149,"column":0},"end":{"line":149,"column":95}},"149":{"start":{"line":150,"column":0},"end":{"line":150,"column":5}},"150":{"start":{"line":151,"column":0},"end":{"line":151,"column":63}},"151":{"start":{"line":152,"column":0},"end":{"line":152,"column":80}},"152":{"start":{"line":153,"column":0},"end":{"line":153,"column":12}},"153":{"start":{"line":154,"column":0},"end":{"line":154,"column":74}},"154":{"start":{"line":155,"column":0},"end":{"line":155,"column":6}},"155":{"start":{"line":156,"column":0},"end":{"line":156,"column":0}},"156":{"start":{"line":157,"column":0},"end":{"line":157,"column":24}},"157":{"start":{"line":158,"column":0},"end":{"line":158,"column":13}},"158":{"start":{"line":159,"column":0},"end":{"line":159,"column":6}},"159":{"start":{"line":160,"column":0},"end":{"line":160,"column":3}},"160":{"start":{"line":161,"column":0},"end":{"line":161,"column":0}},"161":{"start":{"line":162,"column":0},"end":{"line":162,"column":5}},"162":{"start":{"line":163,"column":0},"end":{"line":163,"column":75}},"163":{"start":{"line":164,"column":0},"end":{"line":164,"column":5}},"164":{"start":{"line":165,"column":0},"end":{"line":165,"column":16}},"165":{"start":{"line":166,"column":0},"end":{"line":166,"column":19}},"166":{"start":{"line":167,"column":0},"end":{"line":167,"column":22}},"167":{"start":{"line":168,"column":0},"end":{"line":168,"column":26}},"168":{"start":{"line":169,"column":0},"end":{"line":169,"column":17}},"169":{"start":{"line":170,"column":0},"end":{"line":170,"column":33}},"170":{"start":{"line":171,"column":0},"end":{"line":171,"column":0}},"171":{"start":{"line":172,"column":0},"end":{"line":172,"column":60}},"172":{"start":{"line":173,"column":0},"end":{"line":173,"column":54}},"173":{"start":{"line":174,"column":0},"end":{"line":174,"column":49}},"174":{"start":{"line":175,"column":0},"end":{"line":175,"column":13}},"175":{"start":{"line":176,"column":0},"end":{"line":176,"column":0}},"176":{"start":{"line":177,"column":0},"end":{"line":177,"column":70}},"177":{"start":{"line":178,"column":0},"end":{"line":178,"column":25}},"178":{"start":{"line":179,"column":0},"end":{"line":179,"column":39}},"179":{"start":{"line":180,"column":0},"end":{"line":180,"column":0}},"180":{"start":{"line":181,"column":0},"end":{"line":181,"column":24}},"181":{"start":{"line":182,"column":0},"end":{"line":182,"column":49}},"182":{"start":{"line":183,"column":0},"end":{"line":183,"column":7}},"183":{"start":{"line":184,"column":0},"end":{"line":184,"column":12}},"184":{"start":{"line":185,"column":0},"end":{"line":185,"column":33}},"185":{"start":{"line":186,"column":0},"end":{"line":186,"column":5}},"186":{"start":{"line":187,"column":0},"end":{"line":187,"column":0}},"187":{"start":{"line":188,"column":0},"end":{"line":188,"column":25}},"188":{"start":{"line":189,"column":0},"end":{"line":189,"column":3}},"189":{"start":{"line":190,"column":0},"end":{"line":190,"column":0}},"190":{"start":{"line":191,"column":0},"end":{"line":191,"column":44}},"191":{"start":{"line":192,"column":0},"end":{"line":192,"column":34}},"192":{"start":{"line":193,"column":0},"end":{"line":193,"column":47}},"193":{"start":{"line":194,"column":0},"end":{"line":194,"column":0}},"194":{"start":{"line":195,"column":0},"end":{"line":195,"column":9}},"195":{"start":{"line":196,"column":0},"end":{"line":196,"column":62}},"196":{"start":{"line":197,"column":0},"end":{"line":197,"column":13}},"197":{"start":{"line":198,"column":0},"end":{"line":198,"column":18}},"198":{"start":{"line":199,"column":0},"end":{"line":199,"column":37}},"199":{"start":{"line":200,"column":0},"end":{"line":200,"column":39}},"200":{"start":{"line":201,"column":0},"end":{"line":201,"column":48}},"201":{"start":{"line":202,"column":0},"end":{"line":202,"column":45}},"202":{"start":{"line":203,"column":0},"end":{"line":203,"column":27}},"203":{"start":{"line":204,"column":0},"end":{"line":204,"column":10}},"204":{"start":{"line":205,"column":0},"end":{"line":205,"column":23}},"205":{"start":{"line":206,"column":0},"end":{"line":206,"column":9}},"206":{"start":{"line":207,"column":0},"end":{"line":207,"column":0}},"207":{"start":{"line":208,"column":0},"end":{"line":208,"column":25}},"208":{"start":{"line":209,"column":0},"end":{"line":209,"column":72}},"209":{"start":{"line":210,"column":0},"end":{"line":210,"column":7}},"210":{"start":{"line":211,"column":0},"end":{"line":211,"column":0}},"211":{"start":{"line":212,"column":0},"end":{"line":212,"column":43}},"212":{"start":{"line":213,"column":0},"end":{"line":213,"column":0}},"213":{"start":{"line":214,"column":0},"end":{"line":214,"column":51}},"214":{"start":{"line":215,"column":0},"end":{"line":215,"column":0}},"215":{"start":{"line":216,"column":0},"end":{"line":216,"column":49}},"216":{"start":{"line":217,"column":0},"end":{"line":217,"column":49}},"217":{"start":{"line":218,"column":0},"end":{"line":218,"column":8}},"218":{"start":{"line":219,"column":0},"end":{"line":219,"column":0}},"219":{"start":{"line":220,"column":0},"end":{"line":220,"column":36}},"220":{"start":{"line":221,"column":0},"end":{"line":221,"column":0}},"221":{"start":{"line":222,"column":0},"end":{"line":222,"column":21}},"222":{"start":{"line":223,"column":0},"end":{"line":223,"column":17}},"223":{"start":{"line":224,"column":0},"end":{"line":224,"column":36}},"224":{"start":{"line":225,"column":0},"end":{"line":225,"column":33}},"225":{"start":{"line":226,"column":0},"end":{"line":226,"column":0}},"226":{"start":{"line":227,"column":0},"end":{"line":227,"column":14}},"227":{"start":{"line":228,"column":0},"end":{"line":228,"column":5}},"228":{"start":{"line":229,"column":0},"end":{"line":229,"column":3}},"229":{"start":{"line":230,"column":0},"end":{"line":230,"column":0}},"230":{"start":{"line":231,"column":0},"end":{"line":231,"column":5}},"231":{"start":{"line":232,"column":0},"end":{"line":232,"column":88}},"232":{"start":{"line":233,"column":0},"end":{"line":233,"column":5}},"233":{"start":{"line":234,"column":0},"end":{"line":234,"column":96}},"234":{"start":{"line":235,"column":0},"end":{"line":235,"column":18}},"235":{"start":{"line":236,"column":0},"end":{"line":236,"column":18}},"236":{"start":{"line":237,"column":0},"end":{"line":237,"column":19}},"237":{"start":{"line":238,"column":0},"end":{"line":238,"column":22}},"238":{"start":{"line":239,"column":0},"end":{"line":239,"column":34}},"239":{"start":{"line":240,"column":0},"end":{"line":240,"column":22}},"240":{"start":{"line":241,"column":0},"end":{"line":241,"column":29}},"241":{"start":{"line":242,"column":0},"end":{"line":242,"column":0}},"242":{"start":{"line":243,"column":0},"end":{"line":243,"column":37}},"243":{"start":{"line":244,"column":0},"end":{"line":244,"column":3}},"244":{"start":{"line":245,"column":0},"end":{"line":245,"column":0}},"245":{"start":{"line":246,"column":0},"end":{"line":246,"column":5}},"246":{"start":{"line":247,"column":0},"end":{"line":247,"column":88}},"247":{"start":{"line":248,"column":0},"end":{"line":248,"column":5}},"248":{"start":{"line":249,"column":0},"end":{"line":249,"column":96}},"249":{"start":{"line":250,"column":0},"end":{"line":250,"column":20}},"250":{"start":{"line":251,"column":0},"end":{"line":251,"column":17}},"251":{"start":{"line":252,"column":0},"end":{"line":252,"column":19}},"252":{"start":{"line":253,"column":0},"end":{"line":253,"column":15}},"253":{"start":{"line":254,"column":0},"end":{"line":254,"column":23}},"254":{"start":{"line":255,"column":0},"end":{"line":255,"column":29}},"255":{"start":{"line":256,"column":0},"end":{"line":256,"column":0}},"256":{"start":{"line":257,"column":0},"end":{"line":257,"column":37}},"257":{"start":{"line":258,"column":0},"end":{"line":258,"column":3}},"258":{"start":{"line":259,"column":0},"end":{"line":259,"column":1}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"38":1,"39":1,"40":1,"41":1,"42":1,"43":1,"44":1,"45":1,"46":1,"47":1,"48":1,"49":1,"50":1,"51":1,"52":1,"53":1,"54":1,"55":1,"56":1,"57":1,"58":1,"59":1,"60":1,"61":1,"62":5,"63":5,"64":5,"65":5,"66":0,"67":0,"68":0,"69":0,"70":5,"71":5,"72":5,"73":5,"74":5,"75":5,"76":5,"77":5,"78":5,"79":5,"80":5,"81":5,"82":5,"83":5,"84":5,"85":5,"86":5,"87":5,"88":5,"89":5,"90":5,"91":5,"92":5,"93":5,"94":1,"95":1,"96":1,"97":1,"98":1,"99":0,"100":0,"101":1,"102":1,"103":1,"104":1,"105":1,"106":0,"107":0,"108":1,"109":1,"110":1,"111":1,"112":1,"113":0,"114":0,"115":1,"116":1,"117":1,"118":1,"119":1,"120":5,"121":5,"122":5,"123":1,"124":1,"125":1,"126":1,"127":1,"128":0,"129":0,"130":1,"131":1,"132":1,"133":1,"134":1,"135":0,"136":0,"137":1,"138":1,"139":1,"140":1,"141":1,"142":1,"143":0,"144":0,"145":1,"146":1,"147":1,"148":1,"149":1,"150":1,"151":1,"152":0,"153":0,"154":0,"155":0,"156":0,"157":0,"158":0,"159":0,"160":1,"161":1,"162":1,"163":1,"164":1,"165":4,"166":4,"167":4,"168":4,"169":4,"170":4,"171":4,"172":4,"173":4,"174":4,"175":4,"176":4,"177":4,"178":4,"179":4,"180":4,"181":0,"182":0,"183":4,"184":0,"185":0,"186":4,"187":4,"188":4,"189":1,"190":1,"191":4,"192":4,"193":4,"194":4,"195":4,"196":4,"197":4,"198":4,"199":4,"200":4,"201":4,"202":4,"203":4,"204":4,"205":4,"206":4,"207":4,"208":0,"209":0,"210":4,"211":4,"212":4,"213":4,"214":4,"215":4,"216":4,"217":4,"218":4,"219":4,"220":4,"221":4,"222":4,"223":0,"224":0,"225":0,"226":0,"227":0,"228":4,"229":1,"230":1,"231":1,"232":1,"233":1,"234":1,"235":0,"236":0,"237":0,"238":0,"239":0,"240":0,"241":0,"242":0,"243":0,"244":1,"245":1,"246":1,"247":1,"248":1,"249":1,"250":0,"251":0,"252":0,"253":0,"254":0,"255":0,"256":0,"257":0,"258":1},"branchMap":{"0":{"type":"branch","line":62,"loc":{"start":{"line":62,"column":2},"end":{"line":94,"column":3}},"locations":[{"start":{"line":62,"column":2},"end":{"line":94,"column":3}}]},"1":{"type":"branch","line":66,"loc":{"start":{"line":66,"column":46},"end":{"line":70,"column":5}},"locations":[{"start":{"line":66,"column":46},"end":{"line":70,"column":5}}]},"2":{"type":"branch","line":120,"loc":{"start":{"line":120,"column":2},"end":{"line":123,"column":3}},"locations":[{"start":{"line":120,"column":2},"end":{"line":123,"column":3}}]},"3":{"type":"branch","line":165,"loc":{"start":{"line":165,"column":2},"end":{"line":189,"column":3}},"locations":[{"start":{"line":165,"column":2},"end":{"line":189,"column":3}}]},"4":{"type":"branch","line":174,"loc":{"start":{"line":174,"column":6},"end":{"line":174,"column":49}},"locations":[{"start":{"line":174,"column":6},"end":{"line":174,"column":49}}]},"5":{"type":"branch","line":181,"loc":{"start":{"line":181,"column":23},"end":{"line":183,"column":7}},"locations":[{"start":{"line":181,"column":23},"end":{"line":183,"column":7}}]},"6":{"type":"branch","line":184,"loc":{"start":{"line":184,"column":5},"end":{"line":186,"column":5}},"locations":[{"start":{"line":184,"column":5},"end":{"line":186,"column":5}}]},"7":{"type":"branch","line":191,"loc":{"start":{"line":191,"column":2},"end":{"line":229,"column":3}},"locations":[{"start":{"line":191,"column":2},"end":{"line":229,"column":3}}]},"8":{"type":"branch","line":208,"loc":{"start":{"line":208,"column":24},"end":{"line":210,"column":7}},"locations":[{"start":{"line":208,"column":24},"end":{"line":210,"column":7}}]},"9":{"type":"branch","line":223,"loc":{"start":{"line":223,"column":6},"end":{"line":228,"column":5}},"locations":[{"start":{"line":223,"column":6},"end":{"line":228,"column":5}}]}},"b":{"0":[5],"1":[0],"2":[5],"3":[4],"4":[0],"5":[0],"6":[0],"7":[4],"8":[0],"9":[0]},"fnMap":{"0":{"name":"HttpProvider","decl":{"start":{"line":62,"column":2},"end":{"line":94,"column":3}},"loc":{"start":{"line":62,"column":2},"end":{"line":94,"column":3}},"line":62},"1":{"name":"get hasSubscriptions","decl":{"start":{"line":99,"column":2},"end":{"line":101,"column":3}},"loc":{"start":{"line":99,"column":2},"end":{"line":101,"column":3}},"line":99},"2":{"name":"clone","decl":{"start":{"line":106,"column":2},"end":{"line":108,"column":3}},"loc":{"start":{"line":106,"column":2},"end":{"line":108,"column":3}},"line":106},"3":{"name":"connect","decl":{"start":{"line":113,"column":2},"end":{"line":115,"column":3}},"loc":{"start":{"line":113,"column":2},"end":{"line":115,"column":3}},"line":113},"4":{"name":"disconnect","decl":{"start":{"line":120,"column":2},"end":{"line":123,"column":3}},"loc":{"start":{"line":120,"column":2},"end":{"line":123,"column":3}},"line":120},"5":{"name":"get stats","decl":{"start":{"line":128,"column":2},"end":{"line":130,"column":3}},"loc":{"start":{"line":128,"column":2},"end":{"line":130,"column":3}},"line":128},"6":{"name":"get isClonable","decl":{"start":{"line":135,"column":2},"end":{"line":137,"column":3}},"loc":{"start":{"line":135,"column":2},"end":{"line":137,"column":3}},"line":135},"7":{"name":"get isConnected","decl":{"start":{"line":143,"column":2},"end":{"line":145,"column":3}},"loc":{"start":{"line":143,"column":2},"end":{"line":145,"column":3}},"line":143},"8":{"name":"on","decl":{"start":{"line":152,"column":2},"end":{"line":160,"column":3}},"loc":{"start":{"line":152,"column":2},"end":{"line":160,"column":3}},"line":152},"9":{"name":"send","decl":{"start":{"line":165,"column":2},"end":{"line":189,"column":3}},"loc":{"start":{"line":165,"column":2},"end":{"line":189,"column":3}},"line":165},"10":{"name":"_send","decl":{"start":{"line":191,"column":2},"end":{"line":229,"column":3}},"loc":{"start":{"line":191,"column":2},"end":{"line":229,"column":3}},"line":191},"11":{"name":"subscribe","decl":{"start":{"line":235,"column":2},"end":{"line":244,"column":3}},"loc":{"start":{"line":235,"column":2},"end":{"line":244,"column":3}},"line":235},"12":{"name":"unsubscribe","decl":{"start":{"line":250,"column":2},"end":{"line":258,"column":3}},"loc":{"start":{"line":250,"column":2},"end":{"line":258,"column":3}},"line":250}},"f":{"0":5,"1":0,"2":0,"3":0,"4":5,"5":0,"6":0,"7":0,"8":0,"9":4,"10":4,"11":0,"12":0}},"/Users/scotttwiname/Projects/subql-main/packages/node/src/init.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/node/src/init.ts","all":true,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":43}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":46}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":71}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":41}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":51}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":55}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":59}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":39}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":0}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":41}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":0}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":30}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":0}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":39}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":0}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":29}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":0}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":50}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":45}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":0}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":7}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":53}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":43}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":7}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":21}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":0}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":70}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":47}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":43}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":0}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":108}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":28}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":32}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":56}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":0}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":30}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":0}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":27}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":0}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":49}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":15}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":44}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":20}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":3}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":1}}},"s":{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0},"branchMap":{"0":{"type":"branch","line":1,"loc":{"start":{"line":1,"column":0},"end":{"line":48,"column":1}},"locations":[{"start":{"line":1,"column":0},"end":{"line":48,"column":1}}]}},"b":{"0":[0]},"fnMap":{"0":{"name":"(empty-report)","decl":{"start":{"line":1,"column":0},"end":{"line":48,"column":1}},"loc":{"start":{"line":1,"column":0},"end":{"line":48,"column":1}},"line":1}},"f":{"0":0}},"/Users/scotttwiname/Projects/subql-main/packages/node/src/main.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/node/src/main.ts","all":true,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":53}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":39}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":0}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":30}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":0}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":129}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":11}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":13}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":39}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":38}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":2}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":0}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":52}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":27}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":0}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":26}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":17}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":70}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":52}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":42}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":19}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":1}}},"s":{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0},"branchMap":{"0":{"type":"branch","line":1,"loc":{"start":{"line":1,"column":0},"end":{"line":25,"column":1}},"locations":[{"start":{"line":1,"column":0},"end":{"line":25,"column":1}}]}},"b":{"0":[0]},"fnMap":{"0":{"name":"(empty-report)","decl":{"start":{"line":1,"column":0},"end":{"line":25,"column":1}},"loc":{"start":{"line":1,"column":0},"end":{"line":25,"column":1}},"line":1}},"f":{"0":0}},"/Users/scotttwiname/Projects/subql-main/packages/node/src/meta/meta.controller.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/node/src/meta/meta.controller.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":49}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":45}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":0}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":19}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":29}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":50}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":0}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":8}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":13}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":38}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":3}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":1}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":0,"13":0,"14":1},"branchMap":{"0":{"type":"branch","line":9,"loc":{"start":{"line":9,"column":2},"end":{"line":9,"column":50}},"locations":[{"start":{"line":9,"column":2},"end":{"line":9,"column":50}}]}},"b":{"0":[20]},"fnMap":{"0":{"name":"MetaController","decl":{"start":{"line":9,"column":2},"end":{"line":9,"column":50}},"loc":{"start":{"line":9,"column":2},"end":{"line":9,"column":50}},"line":9},"1":{"name":"getMeta","decl":{"start":{"line":12,"column":2},"end":{"line":14,"column":3}},"loc":{"start":{"line":12,"column":2},"end":{"line":14,"column":3}},"line":12}},"f":{"0":20,"1":0}},"/Users/scotttwiname/Projects/subql-main/packages/node/src/meta/meta.module.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/node/src/meta/meta.module.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":40}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":65}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":63}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":54}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":51}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":45}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":0}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":9}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":54}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":52}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":44}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":2}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":26}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1},"branchMap":{},"b":{},"fnMap":{},"f":{}},"/Users/scotttwiname/Projects/subql-main/packages/node/src/meta/meta.service.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/node/src/meta/meta.service.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":44}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":8}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":18}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":13}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":20}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":26}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":0}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":62}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":78}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":62}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":66}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":0}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":13}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":50}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":44}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":61}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":71}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":3}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":73}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":37}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":3}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":1}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":0,"20":0,"21":1,"22":20,"23":20,"24":1},"branchMap":{"0":{"type":"branch","line":22,"loc":{"start":{"line":22,"column":2},"end":{"line":24,"column":3}},"locations":[{"start":{"line":22,"column":2},"end":{"line":24,"column":3}}]}},"b":{"0":[20]},"fnMap":{"0":{"name":"sdkVersion","decl":{"start":{"line":19,"column":12},"end":{"line":21,"column":3}},"loc":{"start":{"line":19,"column":12},"end":{"line":21,"column":3}},"line":19},"1":{"name":"MetaService","decl":{"start":{"line":22,"column":2},"end":{"line":24,"column":3}},"loc":{"start":{"line":22,"column":2},"end":{"line":24,"column":3}},"line":22}},"f":{"0":0,"1":20}},"/Users/scotttwiname/Projects/subql-main/packages/node/src/subcommands/forceClean.init.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/node/src/subcommands/forceClean.init.ts","all":true,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":43}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":64}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":55}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":0}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":32}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":55}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":7}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":59}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":21}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":57}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":41}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":15}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":53}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":20}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":3}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":0}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":18}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":1}}},"s":{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0},"branchMap":{"0":{"type":"branch","line":1,"loc":{"start":{"line":1,"column":0},"end":{"line":21,"column":1}},"locations":[{"start":{"line":1,"column":0},"end":{"line":21,"column":1}}]}},"b":{"0":[0]},"fnMap":{"0":{"name":"(empty-report)","decl":{"start":{"line":1,"column":0},"end":{"line":21,"column":1}},"loc":{"start":{"line":1,"column":0},"end":{"line":21,"column":1}},"line":1}},"f":{"0":0}},"/Users/scotttwiname/Projects/subql-main/packages/node/src/subcommands/forceClean.module.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/node/src/subcommands/forceClean.module.ts","all":true,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":40}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":69}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":64}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":0}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":9}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":12}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":23}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":31}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":28}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":4}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":18}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":2}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":32}}},"s":{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0},"branchMap":{"0":{"type":"branch","line":1,"loc":{"start":{"line":1,"column":0},"end":{"line":16,"column":32}},"locations":[{"start":{"line":1,"column":0},"end":{"line":16,"column":32}}]}},"b":{"0":[0]},"fnMap":{"0":{"name":"(empty-report)","decl":{"start":{"line":1,"column":0},"end":{"line":16,"column":32}},"loc":{"start":{"line":1,"column":0},"end":{"line":16,"column":32}},"line":1}},"f":{"0":0}},"/Users/scotttwiname/Projects/subql-main/packages/node/src/subcommands/reindex.init.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/node/src/subcommands/reindex.init.ts","all":true,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":43}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":61}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":49}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":0}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":40}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":72}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":7}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":56}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":0}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":21}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":51}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":0}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":32}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":31}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":78}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":47}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":18}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":146}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":8}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":5}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":54}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":15}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":49}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":20}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":3}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":18}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":1}}},"s":{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0},"branchMap":{"0":{"type":"branch","line":1,"loc":{"start":{"line":1,"column":0},"end":{"line":30,"column":1}},"locations":[{"start":{"line":1,"column":0},"end":{"line":30,"column":1}}]}},"b":{"0":[0]},"fnMap":{"0":{"name":"(empty-report)","decl":{"start":{"line":1,"column":0},"end":{"line":30,"column":1}},"loc":{"start":{"line":1,"column":0},"end":{"line":30,"column":1}},"line":1}},"f":{"0":0}},"/Users/scotttwiname/Projects/subql-main/packages/node/src/subcommands/reindex.module.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/node/src/subcommands/reindex.module.ts","all":true,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":40}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":59}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":53}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":8}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":11}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":20}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":20}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":17}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":15}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":13}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":26}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":64}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":52}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":69}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":65}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":80}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":0}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":9}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":14}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":22}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":17}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":19}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":15}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":22}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":5}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":42}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":41}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":6}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":5}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":34}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":33}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":6}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":23}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":5}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":84}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":26}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":34}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":6}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":22}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":4}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":18}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":2}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":36}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":0}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":9}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":12}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":23}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":31}},"51":{"start":{"line":52,"column":0},"end":{"line":52,"column":25}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":33}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":4}},"54":{"start":{"line":55,"column":0},"end":{"line":55,"column":18}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":2}},"56":{"start":{"line":57,"column":0},"end":{"line":57,"column":29}}},"s":{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0},"branchMap":{"0":{"type":"branch","line":1,"loc":{"start":{"line":1,"column":0},"end":{"line":57,"column":29}},"locations":[{"start":{"line":1,"column":0},"end":{"line":57,"column":29}}]}},"b":{"0":[0]},"fnMap":{"0":{"name":"(empty-report)","decl":{"start":{"line":1,"column":0},"end":{"line":57,"column":29}},"loc":{"start":{"line":1,"column":0},"end":{"line":57,"column":29}},"line":1}},"f":{"0":0}},"/Users/scotttwiname/Projects/subql-main/packages/node/src/subcommands/testing.init.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/node/src/subcommands/testing.init.ts","all":true,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":45}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":64}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":51}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":0}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":36}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":52}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":7}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":72}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":0}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":67}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":31}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":15}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":38}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":20}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":3}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":18}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":1}}},"s":{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0},"branchMap":{"0":{"type":"branch","line":1,"loc":{"start":{"line":1,"column":0},"end":{"line":20,"column":1}},"locations":[{"start":{"line":1,"column":0},"end":{"line":20,"column":1}}]}},"b":{"0":[0]},"fnMap":{"0":{"name":"(empty-report)","decl":{"start":{"line":1,"column":0},"end":{"line":20,"column":1}},"loc":{"start":{"line":1,"column":0},"end":{"line":20,"column":1}},"line":1}},"f":{"0":0}},"/Users/scotttwiname/Projects/subql-main/packages/node/src/subcommands/testing.module.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/node/src/subcommands/testing.module.ts","all":true,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":40}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":74}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":69}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":8}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":24}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":29}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":11}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":23}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":13}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":13}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":17}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":20}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":15}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":13}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":26}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":64}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":52}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":69}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":65}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":60}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":60}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":60}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":80}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":0}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":9}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":14}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":25}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":17}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":22}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":18}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":15}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":19}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":19}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":23}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":21}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":29}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":31}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":26}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":5}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":33}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":31}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":6}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":15}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":22}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":15}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":5}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":22}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":30}},"51":{"start":{"line":52,"column":0},"end":{"line":52,"column":6}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":5}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":33}},"54":{"start":{"line":55,"column":0},"end":{"line":55,"column":31}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":6}},"56":{"start":{"line":57,"column":0},"end":{"line":57,"column":4}},"57":{"start":{"line":58,"column":0},"end":{"line":58,"column":18}},"58":{"start":{"line":59,"column":0},"end":{"line":59,"column":24}},"59":{"start":{"line":60,"column":0},"end":{"line":60,"column":2}},"60":{"start":{"line":61,"column":0},"end":{"line":61,"column":36}},"61":{"start":{"line":62,"column":0},"end":{"line":62,"column":0}},"62":{"start":{"line":63,"column":0},"end":{"line":63,"column":9}},"63":{"start":{"line":64,"column":0},"end":{"line":64,"column":12}},"64":{"start":{"line":65,"column":0},"end":{"line":65,"column":23}},"65":{"start":{"line":66,"column":0},"end":{"line":66,"column":31}},"66":{"start":{"line":67,"column":0},"end":{"line":67,"column":33}},"67":{"start":{"line":68,"column":0},"end":{"line":68,"column":29}},"68":{"start":{"line":69,"column":0},"end":{"line":69,"column":25}},"69":{"start":{"line":70,"column":0},"end":{"line":70,"column":4}},"70":{"start":{"line":71,"column":0},"end":{"line":71,"column":18}},"71":{"start":{"line":72,"column":0},"end":{"line":72,"column":2}},"72":{"start":{"line":73,"column":0},"end":{"line":73,"column":29}}},"s":{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"59":0,"60":0,"61":0,"62":0,"63":0,"64":0,"65":0,"66":0,"67":0,"68":0,"69":0,"70":0,"71":0,"72":0},"branchMap":{"0":{"type":"branch","line":1,"loc":{"start":{"line":1,"column":0},"end":{"line":73,"column":29}},"locations":[{"start":{"line":1,"column":0},"end":{"line":73,"column":29}}]}},"b":{"0":[0]},"fnMap":{"0":{"name":"(empty-report)","decl":{"start":{"line":1,"column":0},"end":{"line":73,"column":29}},"loc":{"start":{"line":1,"column":0},"end":{"line":73,"column":29}},"line":1}},"f":{"0":0}},"/Users/scotttwiname/Projects/subql-main/packages/node/src/subcommands/testing.service.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/node/src/subcommands/testing.service.ts","all":true,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":52}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":43}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":43}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":8}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":13}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":39}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":13}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":13}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":17}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":9}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":26}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":51}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":63}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":52}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":60}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":60}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":74}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":49}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":0}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":13}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":55}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":13}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":8}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":35}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":21}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":3}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":14}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":27}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":57}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":5}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":31}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":3}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":0}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":33}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":5}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":33}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":79}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":5}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":5}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":67}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":20}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":7}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":56}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":8}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":6}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":0}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":29}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":0}},"51":{"start":{"line":52,"column":0},"end":{"line":52,"column":78}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":51}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":0}},"54":{"start":{"line":55,"column":0},"end":{"line":55,"column":108}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":28}},"56":{"start":{"line":57,"column":0},"end":{"line":57,"column":32}},"57":{"start":{"line":58,"column":0},"end":{"line":58,"column":0}},"58":{"start":{"line":59,"column":0},"end":{"line":59,"column":78}},"59":{"start":{"line":60,"column":0},"end":{"line":60,"column":3}},"60":{"start":{"line":61,"column":0},"end":{"line":61,"column":0}},"61":{"start":{"line":62,"column":0},"end":{"line":62,"column":19}},"62":{"start":{"line":63,"column":0},"end":{"line":63,"column":52}},"63":{"start":{"line":64,"column":0},"end":{"line":64,"column":20}},"64":{"start":{"line":65,"column":0},"end":{"line":65,"column":35}},"65":{"start":{"line":66,"column":0},"end":{"line":66,"column":27}},"66":{"start":{"line":67,"column":0},"end":{"line":67,"column":20}},"67":{"start":{"line":68,"column":0},"end":{"line":68,"column":26}},"68":{"start":{"line":69,"column":0},"end":{"line":69,"column":61}},"69":{"start":{"line":70,"column":0},"end":{"line":70,"column":36}},"70":{"start":{"line":71,"column":0},"end":{"line":71,"column":8}},"71":{"start":{"line":72,"column":0},"end":{"line":72,"column":0}},"72":{"start":{"line":73,"column":0},"end":{"line":73,"column":36}},"73":{"start":{"line":74,"column":0},"end":{"line":74,"column":12}},"74":{"start":{"line":75,"column":0},"end":{"line":75,"column":37}},"75":{"start":{"line":76,"column":0},"end":{"line":76,"column":21}},"76":{"start":{"line":77,"column":0},"end":{"line":77,"column":6}},"77":{"start":{"line":78,"column":0},"end":{"line":78,"column":3}},"78":{"start":{"line":79,"column":0},"end":{"line":79,"column":1}}},"s":{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"59":0,"60":0,"61":0,"62":0,"63":0,"64":0,"65":0,"66":0,"67":0,"68":0,"69":0,"70":0,"71":0,"72":0,"73":0,"74":0,"75":0,"76":0,"77":0,"78":0},"branchMap":{"0":{"type":"branch","line":1,"loc":{"start":{"line":1,"column":0},"end":{"line":79,"column":1}},"locations":[{"start":{"line":1,"column":0},"end":{"line":79,"column":1}}]}},"b":{"0":[0]},"fnMap":{"0":{"name":"(empty-report)","decl":{"start":{"line":1,"column":0},"end":{"line":79,"column":1}},"loc":{"start":{"line":1,"column":0},"end":{"line":79,"column":1}},"line":1}},"f":{"0":0}},"/Users/scotttwiname/Projects/subql-main/packages/node/src/utils/project.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/node/src/utils/project.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":20}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":24}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":64}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":8}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":13}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":18}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":26}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":25}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":19}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":23}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":14}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":13}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":33}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":44}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":43}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":27}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":39}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":8}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":25}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":18}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":21}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":38}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":0}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":30}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":28}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":39}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":76}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":1}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":0}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":32}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":28}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":38}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":33}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":1}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":0}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":36}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":17}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":15}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":15}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":24}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":64}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":38}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":38}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":10}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":104}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":94}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":94}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":97}},"51":{"start":{"line":52,"column":0},"end":{"line":52,"column":73}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":43}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":21}},"54":{"start":{"line":55,"column":0},"end":{"line":55,"column":9}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":27}},"56":{"start":{"line":57,"column":0},"end":{"line":57,"column":34}},"57":{"start":{"line":58,"column":0},"end":{"line":58,"column":17}},"58":{"start":{"line":59,"column":0},"end":{"line":59,"column":69}},"59":{"start":{"line":60,"column":0},"end":{"line":60,"column":101}},"60":{"start":{"line":61,"column":0},"end":{"line":61,"column":34}},"61":{"start":{"line":62,"column":0},"end":{"line":62,"column":5}},"62":{"start":{"line":63,"column":0},"end":{"line":63,"column":3}},"63":{"start":{"line":64,"column":0},"end":{"line":64,"column":1}},"64":{"start":{"line":65,"column":0},"end":{"line":65,"column":0}},"65":{"start":{"line":66,"column":0},"end":{"line":66,"column":76}},"66":{"start":{"line":67,"column":0},"end":{"line":67,"column":35}},"67":{"start":{"line":68,"column":0},"end":{"line":68,"column":51}},"68":{"start":{"line":69,"column":0},"end":{"line":69,"column":32}},"69":{"start":{"line":70,"column":0},"end":{"line":70,"column":42}},"70":{"start":{"line":71,"column":0},"end":{"line":71,"column":103}},"71":{"start":{"line":72,"column":0},"end":{"line":72,"column":57}},"72":{"start":{"line":73,"column":0},"end":{"line":73,"column":70}},"73":{"start":{"line":74,"column":0},"end":{"line":74,"column":42}},"74":{"start":{"line":75,"column":0},"end":{"line":75,"column":12}},"75":{"start":{"line":76,"column":0},"end":{"line":76,"column":56}},"76":{"start":{"line":77,"column":0},"end":{"line":77,"column":5}},"77":{"start":{"line":78,"column":0},"end":{"line":78,"column":10}},"78":{"start":{"line":79,"column":0},"end":{"line":79,"column":56}},"79":{"start":{"line":80,"column":0},"end":{"line":80,"column":3}},"80":{"start":{"line":81,"column":0},"end":{"line":81,"column":1}},"81":{"start":{"line":82,"column":0},"end":{"line":82,"column":0}},"82":{"start":{"line":83,"column":0},"end":{"line":83,"column":37}},"83":{"start":{"line":84,"column":0},"end":{"line":84,"column":19}},"84":{"start":{"line":85,"column":0},"end":{"line":85,"column":23}},"85":{"start":{"line":86,"column":0},"end":{"line":86,"column":12}},"86":{"start":{"line":87,"column":0},"end":{"line":87,"column":45}},"87":{"start":{"line":88,"column":0},"end":{"line":88,"column":53}},"88":{"start":{"line":89,"column":0},"end":{"line":89,"column":25}},"89":{"start":{"line":90,"column":0},"end":{"line":90,"column":24}},"90":{"start":{"line":91,"column":0},"end":{"line":91,"column":16}},"91":{"start":{"line":92,"column":0},"end":{"line":92,"column":16}},"92":{"start":{"line":93,"column":0},"end":{"line":93,"column":14}},"93":{"start":{"line":94,"column":0},"end":{"line":94,"column":25}},"94":{"start":{"line":95,"column":0},"end":{"line":95,"column":21}},"95":{"start":{"line":96,"column":0},"end":{"line":96,"column":24}},"96":{"start":{"line":97,"column":0},"end":{"line":97,"column":17}},"97":{"start":{"line":98,"column":0},"end":{"line":98,"column":40}},"98":{"start":{"line":99,"column":0},"end":{"line":99,"column":62}},"99":{"start":{"line":100,"column":0},"end":{"line":100,"column":8}},"100":{"start":{"line":101,"column":0},"end":{"line":101,"column":6}},"101":{"start":{"line":102,"column":0},"end":{"line":102,"column":24}},"102":{"start":{"line":103,"column":0},"end":{"line":103,"column":36}},"103":{"start":{"line":104,"column":0},"end":{"line":104,"column":5}},"104":{"start":{"line":105,"column":0},"end":{"line":105,"column":26}},"105":{"start":{"line":106,"column":0},"end":{"line":106,"column":7}},"106":{"start":{"line":107,"column":0},"end":{"line":107,"column":32}},"107":{"start":{"line":108,"column":0},"end":{"line":108,"column":57}},"108":{"start":{"line":109,"column":0},"end":{"line":109,"column":33}},"109":{"start":{"line":110,"column":0},"end":{"line":110,"column":16}},"110":{"start":{"line":111,"column":0},"end":{"line":111,"column":43}},"111":{"start":{"line":112,"column":0},"end":{"line":112,"column":17}},"112":{"start":{"line":113,"column":0},"end":{"line":113,"column":47}},"113":{"start":{"line":114,"column":0},"end":{"line":114,"column":3}},"114":{"start":{"line":115,"column":0},"end":{"line":115,"column":33}},"115":{"start":{"line":116,"column":0},"end":{"line":116,"column":20}},"116":{"start":{"line":117,"column":0},"end":{"line":117,"column":69}},"117":{"start":{"line":118,"column":0},"end":{"line":118,"column":6}},"118":{"start":{"line":119,"column":0},"end":{"line":119,"column":3}},"119":{"start":{"line":120,"column":0},"end":{"line":120,"column":20}},"120":{"start":{"line":121,"column":0},"end":{"line":121,"column":1}},"121":{"start":{"line":122,"column":0},"end":{"line":122,"column":0}},"122":{"start":{"line":123,"column":0},"end":{"line":123,"column":70}},"123":{"start":{"line":124,"column":0},"end":{"line":124,"column":24}},"124":{"start":{"line":125,"column":0},"end":{"line":125,"column":38}},"125":{"start":{"line":126,"column":0},"end":{"line":126,"column":63}},"126":{"start":{"line":127,"column":0},"end":{"line":127,"column":6}},"127":{"start":{"line":128,"column":0},"end":{"line":128,"column":30}},"128":{"start":{"line":129,"column":0},"end":{"line":129,"column":52}},"129":{"start":{"line":130,"column":0},"end":{"line":130,"column":16}},"130":{"start":{"line":131,"column":0},"end":{"line":131,"column":3}},"131":{"start":{"line":132,"column":0},"end":{"line":132,"column":14}},"132":{"start":{"line":133,"column":0},"end":{"line":133,"column":1}},"133":{"start":{"line":134,"column":0},"end":{"line":134,"column":0}},"134":{"start":{"line":135,"column":0},"end":{"line":135,"column":72}},"135":{"start":{"line":136,"column":0},"end":{"line":136,"column":63}},"136":{"start":{"line":137,"column":0},"end":{"line":137,"column":35}},"137":{"start":{"line":138,"column":0},"end":{"line":138,"column":4}},"138":{"start":{"line":139,"column":0},"end":{"line":139,"column":62}},"139":{"start":{"line":140,"column":0},"end":{"line":140,"column":57}},"140":{"start":{"line":141,"column":0},"end":{"line":141,"column":4}},"141":{"start":{"line":142,"column":0},"end":{"line":142,"column":0}},"142":{"start":{"line":143,"column":0},"end":{"line":143,"column":53}},"143":{"start":{"line":144,"column":0},"end":{"line":144,"column":1}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":9,"27":9,"28":9,"29":9,"30":9,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"38":1,"39":6,"40":6,"41":6,"42":6,"43":6,"44":6,"45":4,"46":6,"47":2,"48":2,"49":2,"50":2,"51":2,"52":2,"53":2,"54":2,"55":2,"56":2,"57":2,"58":2,"59":2,"60":2,"61":2,"62":2,"63":6,"64":1,"65":4,"66":4,"67":4,"68":4,"69":4,"70":3,"71":3,"72":4,"73":1,"74":1,"75":0,"76":0,"77":4,"78":0,"79":0,"80":4,"81":1,"82":5,"83":5,"84":5,"85":5,"86":5,"87":5,"88":5,"89":5,"90":5,"91":5,"92":5,"93":5,"94":5,"95":5,"96":5,"97":5,"98":0,"99":5,"100":5,"101":5,"102":5,"103":5,"104":5,"105":5,"106":5,"107":5,"108":5,"109":5,"110":5,"111":5,"112":0,"113":0,"114":5,"115":0,"116":0,"117":0,"118":0,"119":5,"120":5,"121":1,"122":53,"123":53,"124":53,"125":53,"126":53,"127":53,"128":0,"129":0,"130":0,"131":0,"132":0,"133":1,"134":59,"135":59,"136":59,"137":59,"138":59,"139":59,"140":59,"141":59,"142":59,"143":59},"branchMap":{"0":{"type":"branch","line":27,"loc":{"start":{"line":27,"column":0},"end":{"line":31,"column":1}},"locations":[{"start":{"line":27,"column":0},"end":{"line":31,"column":1}}]},"1":{"type":"branch","line":33,"loc":{"start":{"line":33,"column":0},"end":{"line":37,"column":1}},"locations":[{"start":{"line":33,"column":0},"end":{"line":37,"column":1}}]},"2":{"type":"branch","line":39,"loc":{"start":{"line":39,"column":7},"end":{"line":64,"column":1}},"locations":[{"start":{"line":39,"column":7},"end":{"line":64,"column":1}}]},"3":{"type":"branch","line":45,"loc":{"start":{"line":45,"column":37},"end":{"line":47,"column":9}},"locations":[{"start":{"line":45,"column":37},"end":{"line":47,"column":9}}]},"4":{"type":"branch","line":47,"loc":{"start":{"line":47,"column":3},"end":{"line":63,"column":3}},"locations":[{"start":{"line":47,"column":3},"end":{"line":63,"column":3}}]},"5":{"type":"branch","line":66,"loc":{"start":{"line":66,"column":0},"end":{"line":81,"column":1}},"locations":[{"start":{"line":66,"column":0},"end":{"line":81,"column":1}}]},"6":{"type":"branch","line":70,"loc":{"start":{"line":70,"column":21},"end":{"line":70,"column":39}},"locations":[{"start":{"line":70,"column":21},"end":{"line":70,"column":39}}]},"7":{"type":"branch","line":70,"loc":{"start":{"line":70,"column":41},"end":{"line":73,"column":11}},"locations":[{"start":{"line":70,"column":41},"end":{"line":73,"column":11}}]},"8":{"type":"branch","line":73,"loc":{"start":{"line":73,"column":5},"end":{"line":77,"column":5}},"locations":[{"start":{"line":73,"column":5},"end":{"line":77,"column":5}}]},"9":{"type":"branch","line":73,"loc":{"start":{"line":73,"column":30},"end":{"line":73,"column":48}},"locations":[{"start":{"line":73,"column":30},"end":{"line":73,"column":48}}]},"10":{"type":"branch","line":73,"loc":{"start":{"line":73,"column":48},"end":{"line":73,"column":67}},"locations":[{"start":{"line":73,"column":48},"end":{"line":73,"column":67}}]},"11":{"type":"branch","line":75,"loc":{"start":{"line":75,"column":5},"end":{"line":77,"column":5}},"locations":[{"start":{"line":75,"column":5},"end":{"line":77,"column":5}}]},"12":{"type":"branch","line":78,"loc":{"start":{"line":78,"column":3},"end":{"line":80,"column":3}},"locations":[{"start":{"line":78,"column":3},"end":{"line":80,"column":3}}]},"13":{"type":"branch","line":83,"loc":{"start":{"line":83,"column":0},"end":{"line":121,"column":1}},"locations":[{"start":{"line":83,"column":0},"end":{"line":121,"column":1}}]},"14":{"type":"branch","line":88,"loc":{"start":{"line":88,"column":26},"end":{"line":88,"column":52}},"locations":[{"start":{"line":88,"column":26},"end":{"line":88,"column":52}}]},"15":{"type":"branch","line":112,"loc":{"start":{"line":112,"column":4},"end":{"line":114,"column":3}},"locations":[{"start":{"line":112,"column":4},"end":{"line":114,"column":3}}]},"16":{"type":"branch","line":115,"loc":{"start":{"line":115,"column":32},"end":{"line":119,"column":3}},"locations":[{"start":{"line":115,"column":32},"end":{"line":119,"column":3}}]},"17":{"type":"branch","line":123,"loc":{"start":{"line":123,"column":0},"end":{"line":133,"column":1}},"locations":[{"start":{"line":123,"column":0},"end":{"line":133,"column":1}}]},"18":{"type":"branch","line":128,"loc":{"start":{"line":128,"column":3},"end":{"line":133,"column":1}},"locations":[{"start":{"line":128,"column":3},"end":{"line":133,"column":1}}]},"19":{"type":"branch","line":126,"loc":{"start":{"line":126,"column":6},"end":{"line":126,"column":62}},"locations":[{"start":{"line":126,"column":6},"end":{"line":126,"column":62}}]},"20":{"type":"branch","line":135,"loc":{"start":{"line":135,"column":0},"end":{"line":144,"column":1}},"locations":[{"start":{"line":135,"column":0},"end":{"line":144,"column":1}}]},"21":{"type":"branch","line":136,"loc":{"start":{"line":136,"column":56},"end":{"line":137,"column":34}},"locations":[{"start":{"line":136,"column":56},"end":{"line":137,"column":34}}]}},"b":{"0":[9],"1":[1],"2":[6],"3":[4],"4":[2],"5":[4],"6":[1],"7":[3],"8":[1],"9":[0],"10":[0],"11":[0],"12":[0],"13":[5],"14":[2],"15":[0],"16":[0],"17":[53],"18":[0],"19":[53],"20":[59],"21":[53]},"fnMap":{"0":{"name":"isBaseHandler","decl":{"start":{"line":27,"column":0},"end":{"line":31,"column":1}},"loc":{"start":{"line":27,"column":0},"end":{"line":31,"column":1}},"line":27},"1":{"name":"isCustomHandler","decl":{"start":{"line":33,"column":0},"end":{"line":37,"column":1}},"loc":{"start":{"line":33,"column":0},"end":{"line":37,"column":1}},"line":33},"2":{"name":"getChainTypes","decl":{"start":{"line":39,"column":7},"end":{"line":64,"column":1}},"loc":{"start":{"line":39,"column":7},"end":{"line":64,"column":1}},"line":39},"3":{"name":"loadChainTypes","decl":{"start":{"line":66,"column":0},"end":{"line":81,"column":1}},"loc":{"start":{"line":66,"column":0},"end":{"line":81,"column":1}},"line":66},"4":{"name":"loadChainTypesFromJs","decl":{"start":{"line":83,"column":0},"end":{"line":121,"column":1}},"loc":{"start":{"line":83,"column":0},"end":{"line":121,"column":1}},"line":83},"5":{"name":"resolve","decl":{"start":{"line":98,"column":15},"end":{"line":100,"column":7}},"loc":{"start":{"line":98,"column":15},"end":{"line":100,"column":7}},"line":98},"6":{"name":"dsContainsNonEventHandlers","decl":{"start":{"line":123,"column":0},"end":{"line":133,"column":1}},"loc":{"start":{"line":123,"column":0},"end":{"line":133,"column":1}},"line":123},"7":{"name":"isOnlyEventHandlers","decl":{"start":{"line":135,"column":0},"end":{"line":144,"column":1}},"loc":{"start":{"line":135,"column":0},"end":{"line":144,"column":1}},"line":135}},"f":{"0":9,"1":1,"2":6,"3":4,"4":5,"5":0,"6":53,"7":59}},"/Users/scotttwiname/Projects/subql-main/packages/node/src/utils/substrate.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/node/src/utils/substrate.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":43}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":38}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":41}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":8}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":12}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":14}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":17}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":14}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":28}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":36}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":64}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":61}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":8}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":19}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":23}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":22}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":23}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":17}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":17}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":21}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":14}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":22}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":44}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":71}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":72}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":67}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":34}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":51}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":35}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":42}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":0}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":74}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":10}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":42}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":35}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":42}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":4}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":1}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":0}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":26}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":27}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":24}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":23}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":19}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":29}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":41}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":29}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":11}},"51":{"start":{"line":52,"column":0},"end":{"line":52,"column":5}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":1}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":0}},"54":{"start":{"line":55,"column":0},"end":{"line":55,"column":76}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":31}},"56":{"start":{"line":57,"column":0},"end":{"line":57,"column":11}},"57":{"start":{"line":58,"column":0},"end":{"line":58,"column":34}},"58":{"start":{"line":59,"column":0},"end":{"line":59,"column":10}},"59":{"start":{"line":60,"column":0},"end":{"line":60,"column":54}},"60":{"start":{"line":61,"column":0},"end":{"line":61,"column":58}},"61":{"start":{"line":62,"column":0},"end":{"line":62,"column":34}},"62":{"start":{"line":63,"column":0},"end":{"line":63,"column":53}},"63":{"start":{"line":64,"column":0},"end":{"line":64,"column":7}},"64":{"start":{"line":65,"column":0},"end":{"line":65,"column":18}},"65":{"start":{"line":66,"column":0},"end":{"line":66,"column":5}},"66":{"start":{"line":67,"column":0},"end":{"line":67,"column":3}},"67":{"start":{"line":68,"column":0},"end":{"line":68,"column":1}},"68":{"start":{"line":69,"column":0},"end":{"line":69,"column":0}},"69":{"start":{"line":70,"column":0},"end":{"line":70,"column":31}},"70":{"start":{"line":71,"column":0},"end":{"line":71,"column":31}},"71":{"start":{"line":72,"column":0},"end":{"line":72,"column":27}},"72":{"start":{"line":73,"column":0},"end":{"line":73,"column":25}},"73":{"start":{"line":74,"column":0},"end":{"line":74,"column":64}},"74":{"start":{"line":75,"column":0},"end":{"line":75,"column":57}},"75":{"start":{"line":76,"column":0},"end":{"line":76,"column":12}},"76":{"start":{"line":77,"column":0},"end":{"line":77,"column":10}},"77":{"start":{"line":78,"column":0},"end":{"line":78,"column":16}},"78":{"start":{"line":79,"column":0},"end":{"line":79,"column":26}},"79":{"start":{"line":80,"column":0},"end":{"line":80,"column":13}},"80":{"start":{"line":81,"column":0},"end":{"line":81,"column":43}},"81":{"start":{"line":82,"column":0},"end":{"line":82,"column":6}},"82":{"start":{"line":83,"column":0},"end":{"line":83,"column":5}},"83":{"start":{"line":84,"column":0},"end":{"line":84,"column":1}},"84":{"start":{"line":85,"column":0},"end":{"line":85,"column":0}},"85":{"start":{"line":86,"column":0},"end":{"line":86,"column":62}},"86":{"start":{"line":87,"column":0},"end":{"line":87,"column":10}},"87":{"start":{"line":88,"column":0},"end":{"line":88,"column":75}},"88":{"start":{"line":89,"column":0},"end":{"line":89,"column":4}},"89":{"start":{"line":90,"column":0},"end":{"line":90,"column":1}},"90":{"start":{"line":91,"column":0},"end":{"line":91,"column":0}},"91":{"start":{"line":92,"column":0},"end":{"line":92,"column":31}},"92":{"start":{"line":93,"column":0},"end":{"line":93,"column":23}},"93":{"start":{"line":94,"column":0},"end":{"line":94,"column":24}},"94":{"start":{"line":95,"column":0},"end":{"line":95,"column":18}},"95":{"start":{"line":96,"column":0},"end":{"line":96,"column":23}},"96":{"start":{"line":97,"column":0},"end":{"line":97,"column":18}},"97":{"start":{"line":98,"column":0},"end":{"line":98,"column":73}},"98":{"start":{"line":99,"column":0},"end":{"line":99,"column":4}},"99":{"start":{"line":100,"column":0},"end":{"line":100,"column":1}},"100":{"start":{"line":101,"column":0},"end":{"line":101,"column":0}},"101":{"start":{"line":102,"column":0},"end":{"line":102,"column":27}},"102":{"start":{"line":103,"column":0},"end":{"line":103,"column":35}},"103":{"start":{"line":104,"column":0},"end":{"line":104,"column":24}},"104":{"start":{"line":105,"column":0},"end":{"line":105,"column":24}},"105":{"start":{"line":106,"column":0},"end":{"line":106,"column":21}},"106":{"start":{"line":107,"column":0},"end":{"line":107,"column":45}},"107":{"start":{"line":108,"column":0},"end":{"line":108,"column":28}},"108":{"start":{"line":109,"column":0},"end":{"line":109,"column":70}},"109":{"start":{"line":110,"column":0},"end":{"line":110,"column":33}},"110":{"start":{"line":111,"column":0},"end":{"line":111,"column":77}},"111":{"start":{"line":112,"column":0},"end":{"line":112,"column":5}},"112":{"start":{"line":113,"column":0},"end":{"line":113,"column":27}},"113":{"start":{"line":114,"column":0},"end":{"line":114,"column":15}},"114":{"start":{"line":115,"column":0},"end":{"line":115,"column":29}},"115":{"start":{"line":116,"column":0},"end":{"line":116,"column":1}},"116":{"start":{"line":117,"column":0},"end":{"line":117,"column":0}},"117":{"start":{"line":118,"column":0},"end":{"line":118,"column":24}},"118":{"start":{"line":119,"column":0},"end":{"line":119,"column":37}},"119":{"start":{"line":120,"column":0},"end":{"line":120,"column":22}},"120":{"start":{"line":121,"column":0},"end":{"line":121,"column":3}},"121":{"start":{"line":122,"column":0},"end":{"line":122,"column":50}},"122":{"start":{"line":123,"column":0},"end":{"line":123,"column":10}},"123":{"start":{"line":124,"column":0},"end":{"line":124,"column":31}},"124":{"start":{"line":125,"column":0},"end":{"line":125,"column":27}},"125":{"start":{"line":126,"column":0},"end":{"line":126,"column":34}},"126":{"start":{"line":127,"column":0},"end":{"line":127,"column":79}},"127":{"start":{"line":128,"column":0},"end":{"line":128,"column":4}},"128":{"start":{"line":129,"column":0},"end":{"line":129,"column":1}},"129":{"start":{"line":130,"column":0},"end":{"line":130,"column":0}},"130":{"start":{"line":131,"column":0},"end":{"line":131,"column":28}},"131":{"start":{"line":132,"column":0},"end":{"line":132,"column":24}},"132":{"start":{"line":133,"column":0},"end":{"line":133,"column":32}},"133":{"start":{"line":134,"column":0},"end":{"line":134,"column":31}},"134":{"start":{"line":135,"column":0},"end":{"line":135,"column":28}},"135":{"start":{"line":136,"column":0},"end":{"line":136,"column":48}},"136":{"start":{"line":137,"column":0},"end":{"line":137,"column":25}},"137":{"start":{"line":138,"column":0},"end":{"line":138,"column":74}},"138":{"start":{"line":139,"column":0},"end":{"line":139,"column":13}},"139":{"start":{"line":140,"column":0},"end":{"line":140,"column":5}},"140":{"start":{"line":141,"column":0},"end":{"line":141,"column":3}},"141":{"start":{"line":142,"column":0},"end":{"line":142,"column":44}},"142":{"start":{"line":143,"column":0},"end":{"line":143,"column":38}},"143":{"start":{"line":144,"column":0},"end":{"line":144,"column":57}},"144":{"start":{"line":145,"column":0},"end":{"line":145,"column":11}},"145":{"start":{"line":146,"column":0},"end":{"line":146,"column":16}},"146":{"start":{"line":147,"column":0},"end":{"line":147,"column":1}},"147":{"start":{"line":148,"column":0},"end":{"line":148,"column":0}},"148":{"start":{"line":149,"column":0},"end":{"line":149,"column":34}},"149":{"start":{"line":150,"column":0},"end":{"line":150,"column":24}},"150":{"start":{"line":151,"column":0},"end":{"line":151,"column":31}},"151":{"start":{"line":152,"column":0},"end":{"line":152,"column":12}},"152":{"start":{"line":153,"column":0},"end":{"line":153,"column":28}},"153":{"start":{"line":154,"column":0},"end":{"line":154,"column":27}},"154":{"start":{"line":155,"column":0},"end":{"line":155,"column":61}},"155":{"start":{"line":156,"column":0},"end":{"line":156,"column":1}},"156":{"start":{"line":157,"column":0},"end":{"line":157,"column":0}},"157":{"start":{"line":158,"column":0},"end":{"line":158,"column":37}},"158":{"start":{"line":159,"column":0},"end":{"line":159,"column":24}},"159":{"start":{"line":160,"column":0},"end":{"line":160,"column":34}},"160":{"start":{"line":161,"column":0},"end":{"line":161,"column":12}},"161":{"start":{"line":162,"column":0},"end":{"line":162,"column":50}},"162":{"start":{"line":163,"column":0},"end":{"line":163,"column":49}},"163":{"start":{"line":164,"column":0},"end":{"line":164,"column":16}},"164":{"start":{"line":165,"column":0},"end":{"line":165,"column":39}},"165":{"start":{"line":166,"column":0},"end":{"line":166,"column":22}},"166":{"start":{"line":167,"column":0},"end":{"line":167,"column":44}},"167":{"start":{"line":168,"column":0},"end":{"line":168,"column":6}},"168":{"start":{"line":169,"column":0},"end":{"line":169,"column":16}},"169":{"start":{"line":170,"column":0},"end":{"line":170,"column":48}},"170":{"start":{"line":171,"column":0},"end":{"line":171,"column":33}},"171":{"start":{"line":172,"column":0},"end":{"line":172,"column":21}},"172":{"start":{"line":173,"column":0},"end":{"line":173,"column":6}},"173":{"start":{"line":174,"column":0},"end":{"line":174,"column":40}},"174":{"start":{"line":175,"column":0},"end":{"line":175,"column":16}},"175":{"start":{"line":176,"column":0},"end":{"line":176,"column":10}},"176":{"start":{"line":177,"column":0},"end":{"line":177,"column":40}},"177":{"start":{"line":178,"column":0},"end":{"line":178,"column":17}},"178":{"start":{"line":179,"column":0},"end":{"line":179,"column":3}},"179":{"start":{"line":180,"column":0},"end":{"line":180,"column":1}},"180":{"start":{"line":181,"column":0},"end":{"line":181,"column":0}},"181":{"start":{"line":182,"column":0},"end":{"line":182,"column":32}},"182":{"start":{"line":183,"column":0},"end":{"line":183,"column":52}},"183":{"start":{"line":184,"column":0},"end":{"line":184,"column":31}},"184":{"start":{"line":185,"column":0},"end":{"line":185,"column":12}},"185":{"start":{"line":186,"column":0},"end":{"line":186,"column":27}},"186":{"start":{"line":187,"column":0},"end":{"line":187,"column":10}},"187":{"start":{"line":188,"column":0},"end":{"line":188,"column":40}},"188":{"start":{"line":189,"column":0},"end":{"line":189,"column":40}},"189":{"start":{"line":190,"column":0},"end":{"line":190,"column":63}},"190":{"start":{"line":191,"column":0},"end":{"line":191,"column":35}},"191":{"start":{"line":192,"column":0},"end":{"line":192,"column":52}},"192":{"start":{"line":193,"column":0},"end":{"line":193,"column":35}},"193":{"start":{"line":194,"column":0},"end":{"line":194,"column":51}},"194":{"start":{"line":195,"column":0},"end":{"line":195,"column":67}},"195":{"start":{"line":196,"column":0},"end":{"line":196,"column":77}},"196":{"start":{"line":197,"column":0},"end":{"line":197,"column":4}},"197":{"start":{"line":198,"column":0},"end":{"line":198,"column":1}},"198":{"start":{"line":199,"column":0},"end":{"line":199,"column":0}},"199":{"start":{"line":200,"column":0},"end":{"line":200,"column":33}},"200":{"start":{"line":201,"column":0},"end":{"line":201,"column":35}},"201":{"start":{"line":202,"column":0},"end":{"line":202,"column":75}},"202":{"start":{"line":203,"column":0},"end":{"line":203,"column":25}},"203":{"start":{"line":204,"column":0},"end":{"line":204,"column":6}},"204":{"start":{"line":205,"column":0},"end":{"line":205,"column":23}},"205":{"start":{"line":206,"column":0},"end":{"line":206,"column":70}},"206":{"start":{"line":207,"column":0},"end":{"line":207,"column":5}},"207":{"start":{"line":208,"column":0},"end":{"line":208,"column":22}},"208":{"start":{"line":209,"column":0},"end":{"line":209,"column":3}},"209":{"start":{"line":210,"column":0},"end":{"line":210,"column":17}},"210":{"start":{"line":211,"column":0},"end":{"line":211,"column":75}},"211":{"start":{"line":212,"column":0},"end":{"line":212,"column":41}},"212":{"start":{"line":213,"column":0},"end":{"line":213,"column":65}},"213":{"start":{"line":214,"column":0},"end":{"line":214,"column":4}},"214":{"start":{"line":215,"column":0},"end":{"line":215,"column":1}},"215":{"start":{"line":216,"column":0},"end":{"line":216,"column":0}},"216":{"start":{"line":217,"column":0},"end":{"line":217,"column":28}},"217":{"start":{"line":218,"column":0},"end":{"line":218,"column":35}},"218":{"start":{"line":219,"column":0},"end":{"line":219,"column":32}},"219":{"start":{"line":220,"column":0},"end":{"line":220,"column":12}},"220":{"start":{"line":221,"column":0},"end":{"line":221,"column":27}},"221":{"start":{"line":222,"column":0},"end":{"line":222,"column":10}},"222":{"start":{"line":223,"column":0},"end":{"line":223,"column":40}},"223":{"start":{"line":224,"column":0},"end":{"line":224,"column":40}},"224":{"start":{"line":225,"column":0},"end":{"line":225,"column":63}},"225":{"start":{"line":226,"column":0},"end":{"line":226,"column":63}},"226":{"start":{"line":227,"column":0},"end":{"line":227,"column":59}},"227":{"start":{"line":228,"column":0},"end":{"line":228,"column":4}},"228":{"start":{"line":229,"column":0},"end":{"line":229,"column":1}},"229":{"start":{"line":230,"column":0},"end":{"line":230,"column":0}},"230":{"start":{"line":231,"column":0},"end":{"line":231,"column":29}},"231":{"start":{"line":232,"column":0},"end":{"line":232,"column":27}},"232":{"start":{"line":233,"column":0},"end":{"line":233,"column":78}},"233":{"start":{"line":234,"column":0},"end":{"line":234,"column":21}},"234":{"start":{"line":235,"column":0},"end":{"line":235,"column":6}},"235":{"start":{"line":236,"column":0},"end":{"line":236,"column":23}},"236":{"start":{"line":237,"column":0},"end":{"line":237,"column":70}},"237":{"start":{"line":238,"column":0},"end":{"line":238,"column":5}},"238":{"start":{"line":239,"column":0},"end":{"line":239,"column":18}},"239":{"start":{"line":240,"column":0},"end":{"line":240,"column":3}},"240":{"start":{"line":241,"column":0},"end":{"line":241,"column":17}},"241":{"start":{"line":242,"column":0},"end":{"line":242,"column":75}},"242":{"start":{"line":243,"column":0},"end":{"line":243,"column":33}},"243":{"start":{"line":244,"column":0},"end":{"line":244,"column":57}},"244":{"start":{"line":245,"column":0},"end":{"line":245,"column":4}},"245":{"start":{"line":246,"column":0},"end":{"line":246,"column":1}},"246":{"start":{"line":247,"column":0},"end":{"line":247,"column":0}},"247":{"start":{"line":248,"column":0},"end":{"line":248,"column":52}},"248":{"start":{"line":249,"column":0},"end":{"line":249,"column":39}},"249":{"start":{"line":250,"column":0},"end":{"line":250,"column":18}},"250":{"start":{"line":251,"column":0},"end":{"line":251,"column":18}},"251":{"start":{"line":252,"column":0},"end":{"line":252,"column":18}},"252":{"start":{"line":253,"column":0},"end":{"line":253,"column":35}},"253":{"start":{"line":254,"column":0},"end":{"line":254,"column":1}},"254":{"start":{"line":255,"column":0},"end":{"line":255,"column":0}},"255":{"start":{"line":256,"column":0},"end":{"line":256,"column":3}},"256":{"start":{"line":257,"column":0},"end":{"line":257,"column":2}},"257":{"start":{"line":258,"column":0},"end":{"line":258,"column":13}},"258":{"start":{"line":259,"column":0},"end":{"line":259,"column":21}},"259":{"start":{"line":260,"column":0},"end":{"line":260,"column":19}},"260":{"start":{"line":261,"column":0},"end":{"line":261,"column":87}},"261":{"start":{"line":262,"column":0},"end":{"line":262,"column":3}},"262":{"start":{"line":263,"column":0},"end":{"line":263,"column":0}},"263":{"start":{"line":264,"column":0},"end":{"line":264,"column":39}},"264":{"start":{"line":265,"column":0},"end":{"line":265,"column":18}},"265":{"start":{"line":266,"column":0},"end":{"line":266,"column":17}},"266":{"start":{"line":267,"column":0},"end":{"line":267,"column":25}},"267":{"start":{"line":268,"column":0},"end":{"line":268,"column":75}},"268":{"start":{"line":269,"column":0},"end":{"line":269,"column":56}},"269":{"start":{"line":270,"column":0},"end":{"line":270,"column":46}},"270":{"start":{"line":271,"column":0},"end":{"line":271,"column":5}},"271":{"start":{"line":272,"column":0},"end":{"line":272,"column":0}},"272":{"start":{"line":273,"column":0},"end":{"line":273,"column":70}},"273":{"start":{"line":274,"column":0},"end":{"line":274,"column":17}},"274":{"start":{"line":275,"column":0},"end":{"line":275,"column":69}},"275":{"start":{"line":276,"column":0},"end":{"line":276,"column":6}},"276":{"start":{"line":277,"column":0},"end":{"line":277,"column":46}},"277":{"start":{"line":278,"column":0},"end":{"line":278,"column":5}},"278":{"start":{"line":279,"column":0},"end":{"line":279,"column":28}},"279":{"start":{"line":280,"column":0},"end":{"line":280,"column":62}},"280":{"start":{"line":281,"column":0},"end":{"line":281,"column":20}},"281":{"start":{"line":282,"column":0},"end":{"line":282,"column":186}},"282":{"start":{"line":283,"column":0},"end":{"line":283,"column":6}},"283":{"start":{"line":284,"column":0},"end":{"line":284,"column":3}},"284":{"start":{"line":285,"column":0},"end":{"line":285,"column":15}},"285":{"start":{"line":286,"column":0},"end":{"line":286,"column":1}},"286":{"start":{"line":287,"column":0},"end":{"line":287,"column":0}},"287":{"start":{"line":288,"column":0},"end":{"line":288,"column":40}},"288":{"start":{"line":289,"column":0},"end":{"line":289,"column":18}},"289":{"start":{"line":290,"column":0},"end":{"line":290,"column":17}},"290":{"start":{"line":291,"column":0},"end":{"line":291,"column":29}},"291":{"start":{"line":292,"column":0},"end":{"line":292,"column":75}},"292":{"start":{"line":293,"column":0},"end":{"line":293,"column":56}},"293":{"start":{"line":294,"column":0},"end":{"line":294,"column":46}},"294":{"start":{"line":295,"column":0},"end":{"line":295,"column":5}},"295":{"start":{"line":296,"column":0},"end":{"line":296,"column":0}},"296":{"start":{"line":297,"column":0},"end":{"line":297,"column":72}},"297":{"start":{"line":298,"column":0},"end":{"line":298,"column":17}},"298":{"start":{"line":299,"column":0},"end":{"line":299,"column":76}},"299":{"start":{"line":300,"column":0},"end":{"line":300,"column":6}},"300":{"start":{"line":301,"column":0},"end":{"line":301,"column":46}},"301":{"start":{"line":302,"column":0},"end":{"line":302,"column":5}},"302":{"start":{"line":303,"column":0},"end":{"line":303,"column":28}},"303":{"start":{"line":304,"column":0},"end":{"line":304,"column":50}},"304":{"start":{"line":305,"column":0},"end":{"line":305,"column":20}},"305":{"start":{"line":306,"column":0},"end":{"line":306,"column":174}},"306":{"start":{"line":307,"column":0},"end":{"line":307,"column":6}},"307":{"start":{"line":308,"column":0},"end":{"line":308,"column":3}},"308":{"start":{"line":309,"column":0},"end":{"line":309,"column":16}},"309":{"start":{"line":310,"column":0},"end":{"line":310,"column":1}},"310":{"start":{"line":311,"column":0},"end":{"line":311,"column":0}},"311":{"start":{"line":312,"column":0},"end":{"line":312,"column":39}},"312":{"start":{"line":313,"column":0},"end":{"line":313,"column":18}},"313":{"start":{"line":314,"column":0},"end":{"line":314,"column":22}},"314":{"start":{"line":315,"column":0},"end":{"line":315,"column":20}},"315":{"start":{"line":316,"column":0},"end":{"line":316,"column":27}},"316":{"start":{"line":317,"column":0},"end":{"line":317,"column":21}},"317":{"start":{"line":318,"column":0},"end":{"line":318,"column":59}},"318":{"start":{"line":319,"column":0},"end":{"line":319,"column":36}},"319":{"start":{"line":320,"column":0},"end":{"line":320,"column":6}},"320":{"start":{"line":321,"column":0},"end":{"line":321,"column":4}},"321":{"start":{"line":322,"column":0},"end":{"line":322,"column":1}},"322":{"start":{"line":323,"column":0},"end":{"line":323,"column":0}},"323":{"start":{"line":324,"column":0},"end":{"line":324,"column":39}},"324":{"start":{"line":325,"column":0},"end":{"line":325,"column":18}},"325":{"start":{"line":326,"column":0},"end":{"line":326,"column":23}},"326":{"start":{"line":327,"column":0},"end":{"line":327,"column":27}},"327":{"start":{"line":328,"column":0},"end":{"line":328,"column":21}},"328":{"start":{"line":329,"column":0},"end":{"line":329,"column":68}},"329":{"start":{"line":330,"column":0},"end":{"line":330,"column":4}},"330":{"start":{"line":331,"column":0},"end":{"line":331,"column":1}},"331":{"start":{"line":332,"column":0},"end":{"line":332,"column":0}},"332":{"start":{"line":333,"column":0},"end":{"line":333,"column":39}},"333":{"start":{"line":334,"column":0},"end":{"line":334,"column":18}},"334":{"start":{"line":335,"column":0},"end":{"line":335,"column":23}},"335":{"start":{"line":336,"column":0},"end":{"line":336,"column":31}},"336":{"start":{"line":337,"column":0},"end":{"line":337,"column":21}},"337":{"start":{"line":338,"column":0},"end":{"line":338,"column":69}},"338":{"start":{"line":339,"column":0},"end":{"line":339,"column":4}},"339":{"start":{"line":340,"column":0},"end":{"line":340,"column":1}},"340":{"start":{"line":341,"column":0},"end":{"line":341,"column":0}},"341":{"start":{"line":342,"column":0},"end":{"line":342,"column":39}},"342":{"start":{"line":343,"column":0},"end":{"line":343,"column":18}},"343":{"start":{"line":344,"column":0},"end":{"line":344,"column":21}},"344":{"start":{"line":345,"column":0},"end":{"line":345,"column":32}},"345":{"start":{"line":346,"column":0},"end":{"line":346,"column":21}},"346":{"start":{"line":347,"column":0},"end":{"line":347,"column":23}},"347":{"start":{"line":348,"column":0},"end":{"line":348,"column":53}},"348":{"start":{"line":349,"column":0},"end":{"line":349,"column":64}},"349":{"start":{"line":350,"column":0},"end":{"line":350,"column":50}},"350":{"start":{"line":351,"column":0},"end":{"line":351,"column":9}},"351":{"start":{"line":352,"column":0},"end":{"line":352,"column":6}},"352":{"start":{"line":353,"column":0},"end":{"line":353,"column":4}},"353":{"start":{"line":354,"column":0},"end":{"line":354,"column":1}},"354":{"start":{"line":355,"column":0},"end":{"line":355,"column":0}},"355":{"start":{"line":356,"column":0},"end":{"line":356,"column":47}},"356":{"start":{"line":357,"column":0},"end":{"line":357,"column":18}},"357":{"start":{"line":358,"column":0},"end":{"line":358,"column":21}},"358":{"start":{"line":359,"column":0},"end":{"line":359,"column":30}},"359":{"start":{"line":360,"column":0},"end":{"line":360,"column":21}},"360":{"start":{"line":361,"column":0},"end":{"line":361,"column":23}},"361":{"start":{"line":362,"column":0},"end":{"line":362,"column":58}},"362":{"start":{"line":363,"column":0},"end":{"line":363,"column":72}},"363":{"start":{"line":364,"column":0},"end":{"line":364,"column":50}},"364":{"start":{"line":365,"column":0},"end":{"line":365,"column":9}},"365":{"start":{"line":366,"column":0},"end":{"line":366,"column":6}},"366":{"start":{"line":367,"column":0},"end":{"line":367,"column":4}},"367":{"start":{"line":368,"column":0},"end":{"line":368,"column":1}},"368":{"start":{"line":369,"column":0},"end":{"line":369,"column":0}},"369":{"start":{"line":370,"column":0},"end":{"line":370,"column":41}},"370":{"start":{"line":371,"column":0},"end":{"line":371,"column":18}},"371":{"start":{"line":372,"column":0},"end":{"line":372,"column":23}},"372":{"start":{"line":373,"column":0},"end":{"line":373,"column":26}},"373":{"start":{"line":374,"column":0},"end":{"line":374,"column":36}},"374":{"start":{"line":375,"column":0},"end":{"line":375,"column":57}},"375":{"start":{"line":376,"column":0},"end":{"line":376,"column":60}},"376":{"start":{"line":377,"column":0},"end":{"line":377,"column":72}},"377":{"start":{"line":378,"column":0},"end":{"line":378,"column":82}},"378":{"start":{"line":379,"column":0},"end":{"line":379,"column":32}},"379":{"start":{"line":380,"column":0},"end":{"line":380,"column":92}},"380":{"start":{"line":381,"column":0},"end":{"line":381,"column":57}},"381":{"start":{"line":382,"column":0},"end":{"line":382,"column":60}},"382":{"start":{"line":383,"column":0},"end":{"line":383,"column":38}},"383":{"start":{"line":384,"column":0},"end":{"line":384,"column":84}},"384":{"start":{"line":385,"column":0},"end":{"line":385,"column":17}},"385":{"start":{"line":386,"column":0},"end":{"line":386,"column":56}},"386":{"start":{"line":387,"column":0},"end":{"line":387,"column":5}},"387":{"start":{"line":388,"column":0},"end":{"line":388,"column":37}},"388":{"start":{"line":389,"column":0},"end":{"line":389,"column":36}},"389":{"start":{"line":390,"column":0},"end":{"line":390,"column":29}},"390":{"start":{"line":391,"column":0},"end":{"line":391,"column":34}},"391":{"start":{"line":392,"column":0},"end":{"line":392,"column":24}},"392":{"start":{"line":393,"column":0},"end":{"line":393,"column":54}},"393":{"start":{"line":394,"column":0},"end":{"line":394,"column":79}},"394":{"start":{"line":395,"column":0},"end":{"line":395,"column":67}},"395":{"start":{"line":396,"column":0},"end":{"line":396,"column":78}},"396":{"start":{"line":397,"column":0},"end":{"line":397,"column":0}},"397":{"start":{"line":398,"column":0},"end":{"line":398,"column":12}},"398":{"start":{"line":399,"column":0},"end":{"line":399,"column":74}},"399":{"start":{"line":400,"column":0},"end":{"line":400,"column":14}},"400":{"start":{"line":401,"column":0},"end":{"line":401,"column":28}},"401":{"start":{"line":402,"column":0},"end":{"line":402,"column":38}},"402":{"start":{"line":403,"column":0},"end":{"line":403,"column":30}},"403":{"start":{"line":404,"column":0},"end":{"line":404,"column":8}},"404":{"start":{"line":405,"column":0},"end":{"line":405,"column":6}},"405":{"start":{"line":406,"column":0},"end":{"line":406,"column":5}},"406":{"start":{"line":407,"column":0},"end":{"line":407,"column":1}},"407":{"start":{"line":408,"column":0},"end":{"line":408,"column":0}},"408":{"start":{"line":409,"column":0},"end":{"line":409,"column":77}},"409":{"start":{"line":410,"column":0},"end":{"line":410,"column":38}},"410":{"start":{"line":411,"column":0},"end":{"line":411,"column":18}},"411":{"start":{"line":412,"column":0},"end":{"line":412,"column":17}},"412":{"start":{"line":413,"column":0},"end":{"line":413,"column":39}},"413":{"start":{"line":414,"column":0},"end":{"line":414,"column":75}},"414":{"start":{"line":415,"column":0},"end":{"line":415,"column":56}},"415":{"start":{"line":416,"column":0},"end":{"line":416,"column":46}},"416":{"start":{"line":417,"column":0},"end":{"line":417,"column":5}},"417":{"start":{"line":418,"column":0},"end":{"line":418,"column":0}},"418":{"start":{"line":419,"column":0},"end":{"line":419,"column":46}},"419":{"start":{"line":420,"column":0},"end":{"line":420,"column":53}},"420":{"start":{"line":421,"column":0},"end":{"line":421,"column":19}},"421":{"start":{"line":422,"column":0},"end":{"line":422,"column":78}},"422":{"start":{"line":423,"column":0},"end":{"line":423,"column":8}},"423":{"start":{"line":424,"column":0},"end":{"line":424,"column":48}},"424":{"start":{"line":425,"column":0},"end":{"line":425,"column":7}},"425":{"start":{"line":426,"column":0},"end":{"line":426,"column":56}},"426":{"start":{"line":427,"column":0},"end":{"line":427,"column":67}},"427":{"start":{"line":428,"column":0},"end":{"line":428,"column":48}},"428":{"start":{"line":429,"column":0},"end":{"line":429,"column":7}},"429":{"start":{"line":430,"column":0},"end":{"line":430,"column":5}},"430":{"start":{"line":431,"column":0},"end":{"line":431,"column":0}},"431":{"start":{"line":432,"column":0},"end":{"line":432,"column":36}},"432":{"start":{"line":433,"column":0},"end":{"line":433,"column":22}},"433":{"start":{"line":434,"column":0},"end":{"line":434,"column":29}},"434":{"start":{"line":435,"column":0},"end":{"line":435,"column":4}},"435":{"start":{"line":436,"column":0},"end":{"line":436,"column":10}},"436":{"start":{"line":437,"column":0},"end":{"line":437,"column":12}},"437":{"start":{"line":438,"column":0},"end":{"line":438,"column":25}},"438":{"start":{"line":439,"column":0},"end":{"line":439,"column":80}},"439":{"start":{"line":440,"column":0},"end":{"line":440,"column":6}},"440":{"start":{"line":441,"column":0},"end":{"line":441,"column":22}},"441":{"start":{"line":442,"column":0},"end":{"line":442,"column":63}},"442":{"start":{"line":443,"column":0},"end":{"line":443,"column":6}},"443":{"start":{"line":444,"column":0},"end":{"line":444,"column":4}},"444":{"start":{"line":445,"column":0},"end":{"line":445,"column":1}},"445":{"start":{"line":446,"column":0},"end":{"line":446,"column":0}},"446":{"start":{"line":447,"column":0},"end":{"line":447,"column":46}},"447":{"start":{"line":448,"column":0},"end":{"line":448,"column":18}},"448":{"start":{"line":449,"column":0},"end":{"line":449,"column":23}},"449":{"start":{"line":450,"column":0},"end":{"line":450,"column":41}},"450":{"start":{"line":451,"column":0},"end":{"line":451,"column":79}},"451":{"start":{"line":452,"column":0},"end":{"line":452,"column":1}},"452":{"start":{"line":453,"column":0},"end":{"line":453,"column":0}},"453":{"start":{"line":454,"column":0},"end":{"line":454,"column":51}},"454":{"start":{"line":455,"column":0},"end":{"line":455,"column":15}},"455":{"start":{"line":456,"column":0},"end":{"line":456,"column":10}},"456":{"start":{"line":457,"column":0},"end":{"line":457,"column":41}},"457":{"start":{"line":458,"column":0},"end":{"line":458,"column":56}},"458":{"start":{"line":459,"column":0},"end":{"line":459,"column":47}},"459":{"start":{"line":460,"column":0},"end":{"line":460,"column":66}},"460":{"start":{"line":461,"column":0},"end":{"line":461,"column":56}},"461":{"start":{"line":462,"column":0},"end":{"line":462,"column":35}},"462":{"start":{"line":463,"column":0},"end":{"line":463,"column":34}},"463":{"start":{"line":464,"column":0},"end":{"line":464,"column":24}},"464":{"start":{"line":465,"column":0},"end":{"line":465,"column":4}},"465":{"start":{"line":466,"column":0},"end":{"line":466,"column":1}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":6,"35":6,"36":6,"37":6,"38":6,"39":6,"40":6,"41":1,"42":5,"43":5,"44":5,"45":5,"46":5,"47":5,"48":5,"49":5,"50":5,"51":5,"52":5,"53":1,"54":5,"55":5,"56":5,"57":5,"58":5,"59":5,"60":5,"61":5,"62":0,"63":0,"64":5,"65":5,"66":5,"67":0,"68":1,"69":1,"70":1,"71":1,"72":1,"73":1,"74":6,"75":6,"76":6,"77":6,"78":6,"79":6,"80":6,"81":6,"82":1,"83":1,"84":1,"85":6,"86":6,"87":6,"88":6,"89":6,"90":1,"91":6,"92":6,"93":6,"94":6,"95":6,"96":6,"97":6,"98":6,"99":6,"100":1,"101":1,"102":1,"103":1,"104":1,"105":1,"106":1,"107":65,"108":65,"109":65,"110":65,"111":65,"112":65,"113":65,"114":1,"115":1,"116":1,"117":0,"118":0,"119":0,"120":0,"121":0,"122":0,"123":0,"124":0,"125":0,"126":0,"127":0,"128":0,"129":1,"130":0,"131":0,"132":0,"133":0,"134":0,"135":0,"136":0,"137":0,"138":0,"139":0,"140":0,"141":0,"142":0,"143":0,"144":0,"145":0,"146":0,"147":1,"148":0,"149":0,"150":0,"151":0,"152":0,"153":0,"154":0,"155":0,"156":1,"157":0,"158":0,"159":0,"160":0,"161":0,"162":0,"163":0,"164":0,"165":0,"166":0,"167":0,"168":0,"169":0,"170":0,"171":0,"172":0,"173":0,"174":0,"175":0,"176":0,"177":0,"178":0,"179":0,"180":1,"181":4,"182":4,"183":4,"184":4,"185":4,"186":4,"187":4,"188":4,"189":4,"190":4,"191":4,"192":4,"193":4,"194":4,"195":4,"196":4,"197":4,"198":1,"199":0,"200":0,"201":0,"202":0,"203":0,"204":0,"205":0,"206":0,"207":0,"208":0,"209":0,"210":0,"211":0,"212":0,"213":0,"214":0,"215":1,"216":0,"217":0,"218":0,"219":0,"220":0,"221":0,"222":0,"223":0,"224":0,"225":0,"226":0,"227":0,"228":0,"229":1,"230":0,"231":0,"232":0,"233":0,"234":0,"235":0,"236":0,"237":0,"238":0,"239":0,"240":0,"241":0,"242":0,"243":0,"244":0,"245":0,"246":1,"247":1,"248":1,"249":3,"250":3,"251":3,"252":3,"253":3,"254":1,"255":1,"256":1,"257":1,"258":1,"259":1,"260":1,"261":1,"262":1,"263":1,"264":1,"265":1,"266":1,"267":1,"268":0,"269":0,"270":1,"271":1,"272":1,"273":0,"274":0,"275":0,"276":0,"277":1,"278":1,"279":1,"280":0,"281":0,"282":0,"283":0,"284":1,"285":1,"286":1,"287":1,"288":0,"289":0,"290":0,"291":0,"292":0,"293":0,"294":0,"295":0,"296":0,"297":0,"298":0,"299":0,"300":0,"301":0,"302":0,"303":0,"304":0,"305":0,"306":0,"307":0,"308":0,"309":0,"310":1,"311":1,"312":0,"313":0,"314":0,"315":0,"316":0,"317":0,"318":0,"319":0,"320":0,"321":0,"322":1,"323":1,"324":1,"325":1,"326":1,"327":1,"328":1,"329":1,"330":1,"331":1,"332":1,"333":0,"334":0,"335":0,"336":0,"337":0,"338":0,"339":0,"340":1,"341":1,"342":1,"343":1,"344":1,"345":1,"346":1,"347":1,"348":0,"349":0,"350":1,"351":1,"352":1,"353":1,"354":1,"355":1,"356":1,"357":1,"358":1,"359":1,"360":1,"361":1,"362":0,"363":0,"364":1,"365":1,"366":1,"367":1,"368":1,"369":1,"370":1,"371":1,"372":1,"373":1,"374":1,"375":1,"376":1,"377":1,"378":1,"379":1,"380":1,"381":1,"382":1,"383":1,"384":1,"385":1,"386":1,"387":1,"388":1,"389":1,"390":1,"391":1,"392":1,"393":1,"394":1,"395":1,"396":1,"397":1,"398":1,"399":1,"400":1,"401":1,"402":1,"403":1,"404":1,"405":1,"406":1,"407":1,"408":1,"409":1,"410":0,"411":0,"412":0,"413":0,"414":0,"415":0,"416":0,"417":0,"418":0,"419":0,"420":0,"421":0,"422":0,"423":0,"424":0,"425":0,"426":0,"427":0,"428":0,"429":0,"430":0,"431":0,"432":0,"433":0,"434":0,"435":0,"436":0,"437":0,"438":0,"439":0,"440":0,"441":0,"442":0,"443":0,"444":0,"445":1,"446":1,"447":0,"448":0,"449":0,"450":0,"451":0,"452":1,"453":1,"454":1,"455":1,"456":1,"457":1,"458":1,"459":0,"460":0,"461":0,"462":0,"463":1,"464":1,"465":1},"branchMap":{"0":{"type":"branch","line":35,"loc":{"start":{"line":35,"column":0},"end":{"line":41,"column":1}},"locations":[{"start":{"line":35,"column":0},"end":{"line":41,"column":1}}]},"1":{"type":"branch","line":43,"loc":{"start":{"line":43,"column":0},"end":{"line":53,"column":1}},"locations":[{"start":{"line":43,"column":0},"end":{"line":53,"column":1}}]},"2":{"type":"branch","line":55,"loc":{"start":{"line":55,"column":0},"end":{"line":68,"column":1}},"locations":[{"start":{"line":55,"column":0},"end":{"line":68,"column":1}}]},"3":{"type":"branch","line":62,"loc":{"start":{"line":62,"column":33},"end":{"line":64,"column":7}},"locations":[{"start":{"line":62,"column":33},"end":{"line":64,"column":7}}]},"4":{"type":"branch","line":68,"loc":{"start":{"line":68,"column":-1},"end":{"line":68,"column":1}},"locations":[{"start":{"line":68,"column":-1},"end":{"line":68,"column":1}}]},"5":{"type":"branch","line":70,"loc":{"start":{"line":70,"column":0},"end":{"line":84,"column":1}},"locations":[{"start":{"line":70,"column":0},"end":{"line":84,"column":1}}]},"6":{"type":"branch","line":74,"loc":{"start":{"line":74,"column":43},"end":{"line":83,"column":3}},"locations":[{"start":{"line":74,"column":43},"end":{"line":83,"column":3}}]},"7":{"type":"branch","line":86,"loc":{"start":{"line":86,"column":0},"end":{"line":90,"column":1}},"locations":[{"start":{"line":86,"column":0},"end":{"line":90,"column":1}}]},"8":{"type":"branch","line":88,"loc":{"start":{"line":88,"column":21},"end":{"line":88,"column":69}},"locations":[{"start":{"line":88,"column":21},"end":{"line":88,"column":69}}]},"9":{"type":"branch","line":92,"loc":{"start":{"line":92,"column":0},"end":{"line":100,"column":1}},"locations":[{"start":{"line":92,"column":0},"end":{"line":100,"column":1}}]},"10":{"type":"branch","line":97,"loc":{"start":{"line":97,"column":4},"end":{"line":98,"column":72}},"locations":[{"start":{"line":97,"column":4},"end":{"line":98,"column":72}}]},"11":{"type":"branch","line":102,"loc":{"start":{"line":102,"column":0},"end":{"line":116,"column":1}},"locations":[{"start":{"line":102,"column":0},"end":{"line":116,"column":1}}]},"12":{"type":"branch","line":107,"loc":{"start":{"line":107,"column":23},"end":{"line":115,"column":3}},"locations":[{"start":{"line":107,"column":23},"end":{"line":115,"column":3}}]},"13":{"type":"branch","line":182,"loc":{"start":{"line":182,"column":0},"end":{"line":198,"column":1}},"locations":[{"start":{"line":182,"column":0},"end":{"line":198,"column":1}}]},"14":{"type":"branch","line":186,"loc":{"start":{"line":186,"column":15},"end":{"line":186,"column":27}},"locations":[{"start":{"line":186,"column":15},"end":{"line":186,"column":27}}]},"15":{"type":"branch","line":188,"loc":{"start":{"line":188,"column":37},"end":{"line":189,"column":37}},"locations":[{"start":{"line":188,"column":37},"end":{"line":189,"column":37}}]},"16":{"type":"branch","line":189,"loc":{"start":{"line":189,"column":37},"end":{"line":190,"column":59}},"locations":[{"start":{"line":189,"column":37},"end":{"line":190,"column":59}}]},"17":{"type":"branch","line":191,"loc":{"start":{"line":191,"column":32},"end":{"line":192,"column":48}},"locations":[{"start":{"line":191,"column":32},"end":{"line":192,"column":48}}]},"18":{"type":"branch","line":193,"loc":{"start":{"line":193,"column":32},"end":{"line":194,"column":47}},"locations":[{"start":{"line":193,"column":32},"end":{"line":194,"column":47}}]},"19":{"type":"branch","line":195,"loc":{"start":{"line":195,"column":33},"end":{"line":195,"column":63}},"locations":[{"start":{"line":195,"column":33},"end":{"line":195,"column":63}}]},"20":{"type":"branch","line":249,"loc":{"start":{"line":249,"column":7},"end":{"line":254,"column":1}},"locations":[{"start":{"line":249,"column":7},"end":{"line":254,"column":1}}]},"21":{"type":"branch","line":264,"loc":{"start":{"line":264,"column":7},"end":{"line":286,"column":1}},"locations":[{"start":{"line":264,"column":7},"end":{"line":286,"column":1}}]},"22":{"type":"branch","line":280,"loc":{"start":{"line":280,"column":61},"end":{"line":284,"column":3}},"locations":[{"start":{"line":280,"column":61},"end":{"line":284,"column":3}}]},"23":{"type":"branch","line":324,"loc":{"start":{"line":324,"column":7},"end":{"line":331,"column":1}},"locations":[{"start":{"line":324,"column":7},"end":{"line":331,"column":1}}]},"24":{"type":"branch","line":329,"loc":{"start":{"line":329,"column":19},"end":{"line":329,"column":66}},"locations":[{"start":{"line":329,"column":19},"end":{"line":329,"column":66}}]},"25":{"type":"branch","line":342,"loc":{"start":{"line":342,"column":7},"end":{"line":354,"column":1}},"locations":[{"start":{"line":342,"column":7},"end":{"line":354,"column":1}}]},"26":{"type":"branch","line":347,"loc":{"start":{"line":347,"column":14},"end":{"line":351,"column":8}},"locations":[{"start":{"line":347,"column":14},"end":{"line":351,"column":8}}]},"27":{"type":"branch","line":356,"loc":{"start":{"line":356,"column":7},"end":{"line":368,"column":1}},"locations":[{"start":{"line":356,"column":7},"end":{"line":368,"column":1}}]},"28":{"type":"branch","line":361,"loc":{"start":{"line":361,"column":14},"end":{"line":365,"column":8}},"locations":[{"start":{"line":361,"column":14},"end":{"line":365,"column":8}}]},"29":{"type":"branch","line":370,"loc":{"start":{"line":370,"column":7},"end":{"line":407,"column":1}},"locations":[{"start":{"line":370,"column":7},"end":{"line":407,"column":1}}]},"30":{"type":"branch","line":385,"loc":{"start":{"line":385,"column":6},"end":{"line":385,"column":17}},"locations":[{"start":{"line":385,"column":6},"end":{"line":385,"column":17}}]},"31":{"type":"branch","line":376,"loc":{"start":{"line":376,"column":32},"end":{"line":376,"column":58}},"locations":[{"start":{"line":376,"column":32},"end":{"line":376,"column":58}}]},"32":{"type":"branch","line":377,"loc":{"start":{"line":377,"column":38},"end":{"line":377,"column":70}},"locations":[{"start":{"line":377,"column":38},"end":{"line":377,"column":70}}]},"33":{"type":"branch","line":388,"loc":{"start":{"line":388,"column":20},"end":{"line":406,"column":3}},"locations":[{"start":{"line":388,"column":20},"end":{"line":406,"column":3}}]},"34":{"type":"branch","line":392,"loc":{"start":{"line":392,"column":8},"end":{"line":392,"column":24}},"locations":[{"start":{"line":392,"column":8},"end":{"line":392,"column":24}}]},"35":{"type":"branch","line":454,"loc":{"start":{"line":454,"column":0},"end":{"line":466,"column":1}},"locations":[{"start":{"line":454,"column":0},"end":{"line":466,"column":1}}]},"36":{"type":"branch","line":457,"loc":{"start":{"line":457,"column":38},"end":{"line":458,"column":53}},"locations":[{"start":{"line":457,"column":38},"end":{"line":458,"column":53}}]},"37":{"type":"branch","line":458,"loc":{"start":{"line":458,"column":53},"end":{"line":459,"column":44}},"locations":[{"start":{"line":458,"column":53},"end":{"line":459,"column":44}}]},"38":{"type":"branch","line":459,"loc":{"start":{"line":459,"column":44},"end":{"line":464,"column":23}},"locations":[{"start":{"line":459,"column":44},"end":{"line":464,"column":23}}]}},"b":{"0":[6],"1":[5],"2":[5],"3":[0],"4":[0],"5":[1],"6":[6],"7":[6],"8":[65],"9":[6],"10":[390],"11":[1],"12":[65],"13":[4],"14":[0],"15":[0],"16":[0],"17":[0],"18":[0],"19":[0],"20":[3],"21":[1],"22":[0],"23":[1],"24":[1],"25":[1],"26":[1],"27":[1],"28":[1],"29":[1],"30":[0],"31":[1],"32":[1],"33":[1],"34":[0],"35":[1],"36":[0],"37":[0],"38":[0]},"fnMap":{"0":{"name":"substrateHeaderToHeader","decl":{"start":{"line":35,"column":0},"end":{"line":41,"column":1}},"loc":{"start":{"line":35,"column":0},"end":{"line":41,"column":1}},"line":35},"1":{"name":"wrapBlock","decl":{"start":{"line":43,"column":0},"end":{"line":53,"column":1}},"loc":{"start":{"line":43,"column":0},"end":{"line":53,"column":1}},"line":43},"2":{"name":"getTimestamp","decl":{"start":{"line":55,"column":0},"end":{"line":68,"column":1}},"loc":{"start":{"line":55,"column":0},"end":{"line":68,"column":1}},"line":55},"3":{"name":"wrapExtrinsics","decl":{"start":{"line":70,"column":0},"end":{"line":84,"column":1}},"loc":{"start":{"line":70,"column":0},"end":{"line":84,"column":1}},"line":70},"4":{"name":"getExtrinsicSuccess","decl":{"start":{"line":86,"column":0},"end":{"line":90,"column":1}},"loc":{"start":{"line":86,"column":0},"end":{"line":90,"column":1}},"line":86},"5":{"name":"filterExtrinsicEvents","decl":{"start":{"line":92,"column":0},"end":{"line":100,"column":1}},"loc":{"start":{"line":92,"column":0},"end":{"line":100,"column":1}},"line":92},"6":{"name":"wrapEvents","decl":{"start":{"line":102,"column":0},"end":{"line":116,"column":1}},"loc":{"start":{"line":102,"column":0},"end":{"line":116,"column":1}},"line":102},"7":{"name":"checkSpecRange","decl":{"start":{"line":118,"column":0},"end":{"line":129,"column":1}},"loc":{"start":{"line":118,"column":0},"end":{"line":129,"column":1}},"line":118},"8":{"name":"filterBlock","decl":{"start":{"line":131,"column":0},"end":{"line":147,"column":1}},"loc":{"start":{"line":131,"column":0},"end":{"line":147,"column":1}},"line":131},"9":{"name":"filterBlockModulo","decl":{"start":{"line":149,"column":0},"end":{"line":156,"column":1}},"loc":{"start":{"line":149,"column":0},"end":{"line":156,"column":1}},"line":149},"10":{"name":"filterBlockTimestamp","decl":{"start":{"line":158,"column":0},"end":{"line":180,"column":1}},"loc":{"start":{"line":158,"column":0},"end":{"line":180,"column":1}},"line":158},"11":{"name":"filterExtrinsic","decl":{"start":{"line":182,"column":0},"end":{"line":198,"column":1}},"loc":{"start":{"line":182,"column":0},"end":{"line":198,"column":1}},"line":182},"12":{"name":"filterExtrinsics","decl":{"start":{"line":200,"column":0},"end":{"line":215,"column":1}},"loc":{"start":{"line":200,"column":0},"end":{"line":215,"column":1}},"line":200},"13":{"name":"filterEvent","decl":{"start":{"line":217,"column":0},"end":{"line":229,"column":1}},"loc":{"start":{"line":217,"column":0},"end":{"line":229,"column":1}},"line":217},"14":{"name":"filterEvents","decl":{"start":{"line":231,"column":0},"end":{"line":246,"column":1}},"loc":{"start":{"line":231,"column":0},"end":{"line":246,"column":1}},"line":231},"15":{"name":"prefetchMetadata","decl":{"start":{"line":249,"column":7},"end":{"line":254,"column":1}},"loc":{"start":{"line":249,"column":7},"end":{"line":254,"column":1}},"line":249},"16":{"name":"getBlockByHeight","decl":{"start":{"line":264,"column":7},"end":{"line":286,"column":1}},"loc":{"start":{"line":264,"column":7},"end":{"line":286,"column":1}},"line":264},"17":{"name":"getHeaderByHeight","decl":{"start":{"line":288,"column":7},"end":{"line":310,"column":1}},"loc":{"start":{"line":288,"column":7},"end":{"line":310,"column":1}},"line":288},"18":{"name":"fetchBlocksRange","decl":{"start":{"line":312,"column":7},"end":{"line":322,"column":1}},"loc":{"start":{"line":312,"column":7},"end":{"line":322,"column":1}},"line":312},"19":{"name":"fetchBlocksArray","decl":{"start":{"line":324,"column":7},"end":{"line":331,"column":1}},"loc":{"start":{"line":324,"column":7},"end":{"line":331,"column":1}},"line":324},"20":{"name":"fetchHeaderArray","decl":{"start":{"line":333,"column":7},"end":{"line":340,"column":1}},"loc":{"start":{"line":333,"column":7},"end":{"line":340,"column":1}},"line":333},"21":{"name":"fetchEventsRange","decl":{"start":{"line":342,"column":7},"end":{"line":354,"column":1}},"loc":{"start":{"line":342,"column":7},"end":{"line":354,"column":1}},"line":342},"22":{"name":"fetchRuntimeVersionRange","decl":{"start":{"line":356,"column":7},"end":{"line":368,"column":1}},"loc":{"start":{"line":356,"column":7},"end":{"line":368,"column":1}},"line":356},"23":{"name":"fetchBlocksBatches","decl":{"start":{"line":370,"column":7},"end":{"line":407,"column":1}},"loc":{"start":{"line":370,"column":7},"end":{"line":407,"column":1}},"line":370},"24":{"name":"getHeader","decl":{"start":{"line":399,"column":17},"end":{"line":399,"column":73}},"loc":{"start":{"line":399,"column":17},"end":{"line":399,"column":73}},"line":399},"25":{"name":"fetchLightBlock","decl":{"start":{"line":410,"column":7},"end":{"line":445,"column":1}},"loc":{"start":{"line":410,"column":7},"end":{"line":445,"column":1}},"line":410},"26":{"name":"fetchBlocksBatchesLight","decl":{"start":{"line":447,"column":7},"end":{"line":452,"column":1}},"loc":{"start":{"line":447,"column":7},"end":{"line":452,"column":1}},"line":447},"27":{"name":"calcInterval","decl":{"start":{"line":454,"column":0},"end":{"line":466,"column":1}},"loc":{"start":{"line":454,"column":0},"end":{"line":466,"column":1}},"line":454}},"f":{"0":6,"1":5,"2":5,"3":1,"4":6,"5":6,"6":1,"7":0,"8":0,"9":0,"10":0,"11":4,"12":0,"13":0,"14":0,"15":3,"16":1,"17":0,"18":0,"19":1,"20":0,"21":1,"22":1,"23":1,"24":0,"25":0,"26":0,"27":1}},"/Users/scotttwiname/Projects/subql-main/packages/node/src/utils/test.utils.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/node/src/utils/test.utils.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":30}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":0}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":65}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":59}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":50}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":39}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":69}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":64}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":63}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":54}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":49}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":0}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":28}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":14}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":21}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":29}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":27}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":26}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":6}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":37}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":10}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":22}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":30}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":25}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":31}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":60}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":55}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":19}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":34}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":4}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":38}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":9}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":49}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":14}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":7}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":4}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":2}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":0}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":28}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":14}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":21}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":29}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":27}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":26}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":27}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":53}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":8}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":15}},"51":{"start":{"line":52,"column":0},"end":{"line":52,"column":22}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":20}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":19}},"54":{"start":{"line":55,"column":0},"end":{"line":55,"column":4}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":0}},"56":{"start":{"line":57,"column":0},"end":{"line":57,"column":10}},"57":{"start":{"line":58,"column":0},"end":{"line":58,"column":28}},"58":{"start":{"line":59,"column":0},"end":{"line":59,"column":16}},"59":{"start":{"line":60,"column":0},"end":{"line":60,"column":7}},"60":{"start":{"line":61,"column":0},"end":{"line":61,"column":28}},"61":{"start":{"line":62,"column":0},"end":{"line":62,"column":29}},"62":{"start":{"line":63,"column":0},"end":{"line":63,"column":8}},"63":{"start":{"line":64,"column":0},"end":{"line":64,"column":7}},"64":{"start":{"line":65,"column":0},"end":{"line":65,"column":36}},"65":{"start":{"line":66,"column":0},"end":{"line":66,"column":26}},"66":{"start":{"line":67,"column":0},"end":{"line":67,"column":8}},"67":{"start":{"line":68,"column":0},"end":{"line":68,"column":7}},"68":{"start":{"line":69,"column":0},"end":{"line":69,"column":42}},"69":{"start":{"line":70,"column":0},"end":{"line":70,"column":26}},"70":{"start":{"line":71,"column":0},"end":{"line":71,"column":8}},"71":{"start":{"line":72,"column":0},"end":{"line":72,"column":7}},"72":{"start":{"line":73,"column":0},"end":{"line":73,"column":24}},"73":{"start":{"line":74,"column":0},"end":{"line":74,"column":23}},"74":{"start":{"line":75,"column":0},"end":{"line":75,"column":8}},"75":{"start":{"line":76,"column":0},"end":{"line":76,"column":6}},"76":{"start":{"line":77,"column":0},"end":{"line":77,"column":80}},"77":{"start":{"line":78,"column":0},"end":{"line":78,"column":4}},"78":{"start":{"line":79,"column":0},"end":{"line":79,"column":1}},"79":{"start":{"line":80,"column":0},"end":{"line":80,"column":0}},"80":{"start":{"line":81,"column":0},"end":{"line":81,"column":33}},"81":{"start":{"line":82,"column":0},"end":{"line":82,"column":21}},"82":{"start":{"line":83,"column":0},"end":{"line":83,"column":14}},"83":{"start":{"line":84,"column":0},"end":{"line":84,"column":28}},"84":{"start":{"line":85,"column":0},"end":{"line":85,"column":26}},"85":{"start":{"line":86,"column":0},"end":{"line":86,"column":25}},"86":{"start":{"line":87,"column":0},"end":{"line":87,"column":30}},"87":{"start":{"line":88,"column":0},"end":{"line":88,"column":44}},"88":{"start":{"line":89,"column":0},"end":{"line":89,"column":14}},"89":{"start":{"line":90,"column":0},"end":{"line":90,"column":25}},"90":{"start":{"line":91,"column":0},"end":{"line":91,"column":35}},"91":{"start":{"line":92,"column":0},"end":{"line":92,"column":19}},"92":{"start":{"line":93,"column":0},"end":{"line":93,"column":12}},"93":{"start":{"line":94,"column":0},"end":{"line":94,"column":19}},"94":{"start":{"line":95,"column":0},"end":{"line":95,"column":26}},"95":{"start":{"line":96,"column":0},"end":{"line":96,"column":24}},"96":{"start":{"line":97,"column":0},"end":{"line":97,"column":23}},"97":{"start":{"line":98,"column":0},"end":{"line":98,"column":8}},"98":{"start":{"line":99,"column":0},"end":{"line":99,"column":31}},"99":{"start":{"line":100,"column":0},"end":{"line":100,"column":18}},"100":{"start":{"line":101,"column":0},"end":{"line":101,"column":17}},"101":{"start":{"line":102,"column":0},"end":{"line":102,"column":6}},"102":{"start":{"line":103,"column":0},"end":{"line":103,"column":20}},"103":{"start":{"line":104,"column":0},"end":{"line":104,"column":15}},"104":{"start":{"line":105,"column":0},"end":{"line":105,"column":0}},"105":{"start":{"line":106,"column":0},"end":{"line":106,"column":40}},"106":{"start":{"line":107,"column":0},"end":{"line":107,"column":19}},"107":{"start":{"line":108,"column":0},"end":{"line":108,"column":13}},"108":{"start":{"line":109,"column":0},"end":{"line":109,"column":1}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":20,"17":20,"18":20,"19":20,"20":20,"21":20,"22":20,"23":20,"24":20,"25":20,"26":20,"27":20,"28":20,"29":20,"30":20,"31":20,"32":20,"33":20,"34":20,"35":20,"36":20,"37":20,"38":20,"39":20,"40":1,"41":20,"42":20,"43":20,"44":20,"45":20,"46":20,"47":20,"48":20,"49":20,"50":20,"51":20,"52":20,"53":20,"54":20,"55":20,"56":20,"57":20,"58":20,"59":20,"60":20,"61":20,"62":20,"63":20,"64":20,"65":20,"66":20,"67":20,"68":20,"69":20,"70":20,"71":20,"72":20,"73":20,"74":20,"75":20,"76":20,"77":20,"78":20,"79":1,"80":1,"81":20,"82":20,"83":20,"84":20,"85":20,"86":20,"87":20,"88":20,"89":20,"90":20,"91":20,"92":20,"93":20,"94":20,"95":20,"96":20,"97":20,"98":20,"99":20,"100":20,"101":20,"102":20,"103":20,"104":20,"105":20,"106":20,"107":20,"108":20},"branchMap":{"0":{"type":"branch","line":16,"loc":{"start":{"line":16,"column":21},"end":{"line":40,"column":2}},"locations":[{"start":{"line":16,"column":21},"end":{"line":40,"column":2}}]},"1":{"type":"branch","line":42,"loc":{"start":{"line":42,"column":0},"end":{"line":79,"column":1}},"locations":[{"start":{"line":42,"column":0},"end":{"line":79,"column":1}}]},"2":{"type":"branch","line":81,"loc":{"start":{"line":81,"column":7},"end":{"line":109,"column":1}},"locations":[{"start":{"line":81,"column":7},"end":{"line":109,"column":1}}]}},"b":{"0":[20],"1":[20],"2":[20]},"fnMap":{"0":{"name":"mockInstance","decl":{"start":{"line":16,"column":21},"end":{"line":40,"column":2}},"loc":{"start":{"line":16,"column":21},"end":{"line":40,"column":2}},"line":16},"1":{"name":"mockRegister","decl":{"start":{"line":42,"column":0},"end":{"line":79,"column":1}},"loc":{"start":{"line":42,"column":0},"end":{"line":79,"column":1}},"line":42},"2":{"name":"prepareApp","decl":{"start":{"line":81,"column":7},"end":{"line":109,"column":1}},"loc":{"start":{"line":81,"column":7},"end":{"line":109,"column":1}},"line":81}},"f":{"0":20,"1":20,"2":20}},"/Users/scotttwiname/Projects/subql-main/packages/node/src/yargs.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/node/src/yargs.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":54}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":0}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":42}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":22}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":80}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":66}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":66}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":25}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":4}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":25}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":80}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":66}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":72}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":28}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":4}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":42}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":80}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":66}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":66}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":37}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":4}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":3}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":0,"8":0,"9":0,"10":0,"11":1,"12":1,"13":0,"14":0,"15":0,"16":0,"17":1,"18":1,"19":0,"20":0,"21":0,"22":0,"23":1,"24":1},"branchMap":{},"b":{},"fnMap":{"0":{"name":"initTesting","decl":{"start":{"line":7,"column":15},"end":{"line":12,"column":3}},"loc":{"start":{"line":7,"column":15},"end":{"line":12,"column":3}},"line":7},"1":{"name":"initForceClean","decl":{"start":{"line":13,"column":18},"end":{"line":18,"column":3}},"loc":{"start":{"line":13,"column":18},"end":{"line":18,"column":3}},"line":13},"2":{"name":"initReindex","decl":{"start":{"line":19,"column":15},"end":{"line":24,"column":3}},"loc":{"start":{"line":19,"column":15},"end":{"line":24,"column":3}},"line":19}},"f":{"0":0,"1":0,"2":0}},"/Users/scotttwiname/Projects/subql-main/packages/types-core/src/global.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/types-core/src/global.ts","all":true,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":24}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":61}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":30}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":0}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":14}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":16}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":28}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":21}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":21}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":24}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":58}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":1}}},"s":{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0},"branchMap":{"0":{"type":"branch","line":1,"loc":{"start":{"line":1,"column":0},"end":{"line":15,"column":1}},"locations":[{"start":{"line":1,"column":0},"end":{"line":15,"column":1}}]}},"b":{"0":[0]},"fnMap":{"0":{"name":"(empty-report)","decl":{"start":{"line":1,"column":0},"end":{"line":15,"column":1}},"loc":{"start":{"line":1,"column":0},"end":{"line":15,"column":1}},"line":1}},"f":{"0":0}},"/Users/scotttwiname/Projects/subql-main/packages/types-core/src/index.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/types-core/src/index.ts","all":true,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":29}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":26}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":24}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":29}}},"s":{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0},"branchMap":{"0":{"type":"branch","line":1,"loc":{"start":{"line":1,"column":0},"end":{"line":7,"column":29}},"locations":[{"start":{"line":1,"column":0},"end":{"line":7,"column":29}}]}},"b":{"0":[0]},"fnMap":{"0":{"name":"(empty-report)","decl":{"start":{"line":1,"column":0},"end":{"line":7,"column":29}},"loc":{"start":{"line":1,"column":0},"end":{"line":7,"column":29}},"line":1}},"f":{"0":0}},"/Users/scotttwiname/Projects/subql-main/packages/types-core/src/interfaces.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/types-core/src/interfaces.ts","all":true,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":102}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":0}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":77}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":54}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":53}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":1}}},"s":{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0},"branchMap":{"0":{"type":"branch","line":1,"loc":{"start":{"line":1,"column":0},"end":{"line":9,"column":1}},"locations":[{"start":{"line":1,"column":0},"end":{"line":9,"column":1}}]}},"b":{"0":[0]},"fnMap":{"0":{"name":"(empty-report)","decl":{"start":{"line":1,"column":0},"end":{"line":9,"column":1}},"loc":{"start":{"line":1,"column":0},"end":{"line":9,"column":1}},"line":1}},"f":{"0":0}},"/Users/scotttwiname/Projects/subql-main/packages/types-core/src/multichain/index.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/types-core/src/multichain/index.ts","all":true,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":24}}},"s":{"0":0,"1":0,"2":0,"3":0},"branchMap":{"0":{"type":"branch","line":1,"loc":{"start":{"line":1,"column":0},"end":{"line":4,"column":24}},"locations":[{"start":{"line":1,"column":0},"end":{"line":4,"column":24}}]}},"b":{"0":[0]},"fnMap":{"0":{"name":"(empty-report)","decl":{"start":{"line":1,"column":0},"end":{"line":4,"column":24}},"loc":{"start":{"line":1,"column":0},"end":{"line":4,"column":24}},"line":1}},"f":{"0":0}},"/Users/scotttwiname/Projects/subql-main/packages/types-core/src/multichain/types.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/types-core/src/multichain/types.ts","all":true,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":37}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":0}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":44}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":22}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":21}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":19}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":1}}},"s":{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0},"branchMap":{"0":{"type":"branch","line":1,"loc":{"start":{"line":1,"column":0},"end":{"line":10,"column":1}},"locations":[{"start":{"line":1,"column":0},"end":{"line":10,"column":1}}]}},"b":{"0":[0]},"fnMap":{"0":{"name":"(empty-report)","decl":{"start":{"line":1,"column":0},"end":{"line":10,"column":1}},"loc":{"start":{"line":1,"column":0},"end":{"line":10,"column":1}},"line":1}},"f":{"0":0}},"/Users/scotttwiname/Projects/subql-main/packages/types-core/src/project/index.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/types-core/src/project/index.ts","all":true,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":24}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":28}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":26}}},"s":{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0},"branchMap":{"0":{"type":"branch","line":1,"loc":{"start":{"line":1,"column":0},"end":{"line":6,"column":26}},"locations":[{"start":{"line":1,"column":0},"end":{"line":6,"column":26}}]}},"b":{"0":[0]},"fnMap":{"0":{"name":"(empty-report)","decl":{"start":{"line":1,"column":0},"end":{"line":6,"column":26}},"loc":{"start":{"line":1,"column":0},"end":{"line":6,"column":26}},"line":1}},"f":{"0":0}},"/Users/scotttwiname/Projects/subql-main/packages/types-core/src/project/readers/index.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/types-core/src/project/readers/index.ts","all":true,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":25}}},"s":{"0":0,"1":0,"2":0,"3":0},"branchMap":{"0":{"type":"branch","line":1,"loc":{"start":{"line":1,"column":0},"end":{"line":4,"column":25}},"locations":[{"start":{"line":1,"column":0},"end":{"line":4,"column":25}}]}},"b":{"0":[0]},"fnMap":{"0":{"name":"(empty-report)","decl":{"start":{"line":1,"column":0},"end":{"line":4,"column":25}},"loc":{"start":{"line":1,"column":0},"end":{"line":4,"column":25}},"line":1}},"f":{"0":0}},"/Users/scotttwiname/Projects/subql-main/packages/types-core/src/project/readers/reader.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/types-core/src/project/readers/reader.ts","all":true,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":47}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":0}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":29}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":16}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":2}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":0}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":25}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":51}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":46}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":53}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":27}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":1}}},"s":{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0},"branchMap":{"0":{"type":"branch","line":1,"loc":{"start":{"line":1,"column":0},"end":{"line":15,"column":1}},"locations":[{"start":{"line":1,"column":0},"end":{"line":15,"column":1}}]}},"b":{"0":[0]},"fnMap":{"0":{"name":"(empty-report)","decl":{"start":{"line":1,"column":0},"end":{"line":15,"column":1}},"loc":{"start":{"line":1,"column":0},"end":{"line":15,"column":1}},"line":1}},"f":{"0":0}},"/Users/scotttwiname/Projects/subql-main/packages/types-core/src/project/types.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/types-core/src/project/types.ts","all":true,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":95}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":0}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":3}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":54}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":94}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":77}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":58}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":3}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":39}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":58}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":45}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":67}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":3}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":5}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":45}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":19}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":5}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":22}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":5}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":49}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":19}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":21}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":5}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":19}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":5}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":39}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":19}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":5}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":16}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":5}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":93}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":19}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":21}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":5}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":22}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":5}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":44}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":19}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":5}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":23}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":5}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":46}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":26}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":5}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":24}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":5}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":63}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":14}},"51":{"start":{"line":52,"column":0},"end":{"line":52,"column":24}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":5}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":32}},"54":{"start":{"line":55,"column":0},"end":{"line":55,"column":5}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":44}},"56":{"start":{"line":57,"column":0},"end":{"line":57,"column":14}},"57":{"start":{"line":58,"column":0},"end":{"line":58,"column":26}},"58":{"start":{"line":59,"column":0},"end":{"line":59,"column":5}},"59":{"start":{"line":60,"column":0},"end":{"line":60,"column":34}},"60":{"start":{"line":61,"column":0},"end":{"line":61,"column":5}},"61":{"start":{"line":62,"column":0},"end":{"line":62,"column":56}},"62":{"start":{"line":63,"column":0},"end":{"line":63,"column":4}},"63":{"start":{"line":64,"column":0},"end":{"line":64,"column":102}},"64":{"start":{"line":65,"column":0},"end":{"line":65,"column":14}},"65":{"start":{"line":66,"column":0},"end":{"line":66,"column":14}},"66":{"start":{"line":67,"column":0},"end":{"line":67,"column":5}},"67":{"start":{"line":68,"column":0},"end":{"line":68,"column":22}},"68":{"start":{"line":69,"column":0},"end":{"line":69,"column":5}},"69":{"start":{"line":70,"column":0},"end":{"line":70,"column":67}},"70":{"start":{"line":71,"column":0},"end":{"line":71,"column":4}},"71":{"start":{"line":72,"column":0},"end":{"line":72,"column":149}},"72":{"start":{"line":73,"column":0},"end":{"line":73,"column":14}},"73":{"start":{"line":74,"column":0},"end":{"line":74,"column":17}},"74":{"start":{"line":75,"column":0},"end":{"line":75,"column":5}},"75":{"start":{"line":76,"column":0},"end":{"line":76,"column":29}},"76":{"start":{"line":77,"column":0},"end":{"line":77,"column":5}},"77":{"start":{"line":78,"column":0},"end":{"line":78,"column":63}},"78":{"start":{"line":79,"column":0},"end":{"line":79,"column":4}},"79":{"start":{"line":80,"column":0},"end":{"line":80,"column":98}},"80":{"start":{"line":81,"column":0},"end":{"line":81,"column":107}},"81":{"start":{"line":82,"column":0},"end":{"line":82,"column":134}},"82":{"start":{"line":83,"column":0},"end":{"line":83,"column":14}},"83":{"start":{"line":84,"column":0},"end":{"line":84,"column":16}},"84":{"start":{"line":85,"column":0},"end":{"line":85,"column":5}},"85":{"start":{"line":86,"column":0},"end":{"line":86,"column":27}},"86":{"start":{"line":87,"column":0},"end":{"line":87,"column":1}},"87":{"start":{"line":88,"column":0},"end":{"line":88,"column":0}},"88":{"start":{"line":89,"column":0},"end":{"line":89,"column":3}},"89":{"start":{"line":90,"column":0},"end":{"line":90,"column":70}},"90":{"start":{"line":91,"column":0},"end":{"line":91,"column":13}},"91":{"start":{"line":92,"column":0},"end":{"line":92,"column":34}},"92":{"start":{"line":93,"column":0},"end":{"line":93,"column":3}},"93":{"start":{"line":94,"column":0},"end":{"line":94,"column":69}},"94":{"start":{"line":95,"column":0},"end":{"line":95,"column":5}},"95":{"start":{"line":96,"column":0},"end":{"line":96,"column":38}},"96":{"start":{"line":97,"column":0},"end":{"line":97,"column":4}},"97":{"start":{"line":98,"column":0},"end":{"line":98,"column":88}},"98":{"start":{"line":99,"column":0},"end":{"line":99,"column":19}},"99":{"start":{"line":100,"column":0},"end":{"line":100,"column":13}},"100":{"start":{"line":101,"column":0},"end":{"line":101,"column":29}},"101":{"start":{"line":102,"column":0},"end":{"line":102,"column":13}},"102":{"start":{"line":103,"column":0},"end":{"line":103,"column":94}},"103":{"start":{"line":104,"column":0},"end":{"line":104,"column":13}},"104":{"start":{"line":105,"column":0},"end":{"line":105,"column":37}},"105":{"start":{"line":106,"column":0},"end":{"line":106,"column":7}},"106":{"start":{"line":107,"column":0},"end":{"line":107,"column":18}},"107":{"start":{"line":108,"column":0},"end":{"line":108,"column":1}},"108":{"start":{"line":109,"column":0},"end":{"line":109,"column":0}},"109":{"start":{"line":110,"column":0},"end":{"line":110,"column":31}},"110":{"start":{"line":111,"column":0},"end":{"line":111,"column":15}},"111":{"start":{"line":112,"column":0},"end":{"line":112,"column":61}},"112":{"start":{"line":113,"column":0},"end":{"line":113,"column":51}},"113":{"start":{"line":114,"column":0},"end":{"line":114,"column":41}},"114":{"start":{"line":115,"column":0},"end":{"line":115,"column":2}},"115":{"start":{"line":116,"column":0},"end":{"line":116,"column":0}},"116":{"start":{"line":117,"column":0},"end":{"line":117,"column":41}},"117":{"start":{"line":118,"column":0},"end":{"line":118,"column":15}},"118":{"start":{"line":119,"column":0},"end":{"line":119,"column":22}},"119":{"start":{"line":120,"column":0},"end":{"line":120,"column":1}},"120":{"start":{"line":121,"column":0},"end":{"line":121,"column":0}},"121":{"start":{"line":122,"column":0},"end":{"line":122,"column":38}},"122":{"start":{"line":123,"column":0},"end":{"line":123,"column":22}},"123":{"start":{"line":124,"column":0},"end":{"line":124,"column":23}},"124":{"start":{"line":125,"column":0},"end":{"line":125,"column":22}},"125":{"start":{"line":126,"column":0},"end":{"line":126,"column":19}},"126":{"start":{"line":127,"column":0},"end":{"line":127,"column":25}},"127":{"start":{"line":128,"column":0},"end":{"line":128,"column":19}},"128":{"start":{"line":129,"column":0},"end":{"line":129,"column":1}},"129":{"start":{"line":130,"column":0},"end":{"line":130,"column":0}},"130":{"start":{"line":131,"column":0},"end":{"line":131,"column":3}},"131":{"start":{"line":132,"column":0},"end":{"line":132,"column":54}},"132":{"start":{"line":133,"column":0},"end":{"line":133,"column":13}},"133":{"start":{"line":134,"column":0},"end":{"line":134,"column":3}},"134":{"start":{"line":135,"column":0},"end":{"line":135,"column":39}},"135":{"start":{"line":136,"column":0},"end":{"line":136,"column":5}},"136":{"start":{"line":137,"column":0},"end":{"line":137,"column":101}},"137":{"start":{"line":138,"column":0},"end":{"line":138,"column":4}},"138":{"start":{"line":139,"column":0},"end":{"line":139,"column":102}},"139":{"start":{"line":140,"column":0},"end":{"line":140,"column":101}},"140":{"start":{"line":141,"column":0},"end":{"line":141,"column":70}},"141":{"start":{"line":142,"column":0},"end":{"line":142,"column":69}},"142":{"start":{"line":143,"column":0},"end":{"line":143,"column":4}},"143":{"start":{"line":144,"column":0},"end":{"line":144,"column":30}},"144":{"start":{"line":145,"column":0},"end":{"line":145,"column":5}},"145":{"start":{"line":146,"column":0},"end":{"line":146,"column":30}},"146":{"start":{"line":147,"column":0},"end":{"line":147,"column":0}},"147":{"start":{"line":148,"column":0},"end":{"line":148,"column":5}},"148":{"start":{"line":149,"column":0},"end":{"line":149,"column":57}},"149":{"start":{"line":150,"column":0},"end":{"line":150,"column":59}},"150":{"start":{"line":151,"column":0},"end":{"line":151,"column":4}},"151":{"start":{"line":152,"column":0},"end":{"line":152,"column":19}},"152":{"start":{"line":153,"column":0},"end":{"line":153,"column":5}},"153":{"start":{"line":154,"column":0},"end":{"line":154,"column":33}},"154":{"start":{"line":155,"column":0},"end":{"line":155,"column":0}},"155":{"start":{"line":156,"column":0},"end":{"line":156,"column":5}},"156":{"start":{"line":157,"column":0},"end":{"line":157,"column":68}},"157":{"start":{"line":158,"column":0},"end":{"line":158,"column":32}},"158":{"start":{"line":159,"column":0},"end":{"line":159,"column":13}},"159":{"start":{"line":160,"column":0},"end":{"line":160,"column":22}},"160":{"start":{"line":161,"column":0},"end":{"line":161,"column":5}},"161":{"start":{"line":162,"column":0},"end":{"line":162,"column":52}},"162":{"start":{"line":163,"column":0},"end":{"line":163,"column":1}},"163":{"start":{"line":164,"column":0},"end":{"line":164,"column":0}},"164":{"start":{"line":165,"column":0},"end":{"line":165,"column":3}},"165":{"start":{"line":166,"column":0},"end":{"line":166,"column":36}},"166":{"start":{"line":167,"column":0},"end":{"line":167,"column":13}},"167":{"start":{"line":168,"column":0},"end":{"line":168,"column":3}},"168":{"start":{"line":169,"column":0},"end":{"line":169,"column":32}},"169":{"start":{"line":170,"column":0},"end":{"line":170,"column":5}},"170":{"start":{"line":171,"column":0},"end":{"line":171,"column":75}},"171":{"start":{"line":172,"column":0},"end":{"line":172,"column":19}},"172":{"start":{"line":173,"column":0},"end":{"line":173,"column":5}},"173":{"start":{"line":174,"column":0},"end":{"line":174,"column":15}},"174":{"start":{"line":175,"column":0},"end":{"line":175,"column":1}},"175":{"start":{"line":176,"column":0},"end":{"line":176,"column":63}},"176":{"start":{"line":177,"column":0},"end":{"line":177,"column":0}},"177":{"start":{"line":178,"column":0},"end":{"line":178,"column":43}},"178":{"start":{"line":179,"column":0},"end":{"line":179,"column":16}},"179":{"start":{"line":180,"column":0},"end":{"line":180,"column":37}},"180":{"start":{"line":181,"column":0},"end":{"line":181,"column":69}},"181":{"start":{"line":182,"column":0},"end":{"line":182,"column":1}},"182":{"start":{"line":183,"column":0},"end":{"line":183,"column":0}},"183":{"start":{"line":184,"column":0},"end":{"line":184,"column":39}},"184":{"start":{"line":185,"column":0},"end":{"line":185,"column":17}},"185":{"start":{"line":186,"column":0},"end":{"line":186,"column":41}},"186":{"start":{"line":187,"column":0},"end":{"line":187,"column":1}}},"s":{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"59":0,"60":0,"61":0,"62":0,"63":0,"64":0,"65":0,"66":0,"67":0,"68":0,"69":0,"70":0,"71":0,"72":0,"73":0,"74":0,"75":0,"76":0,"77":0,"78":0,"79":0,"80":0,"81":0,"82":0,"83":0,"84":0,"85":0,"86":0,"87":0,"88":0,"89":0,"90":0,"91":0,"92":0,"93":0,"94":0,"95":0,"96":0,"97":0,"98":0,"99":0,"100":0,"101":0,"102":0,"103":0,"104":0,"105":0,"106":0,"107":0,"108":0,"109":0,"110":0,"111":0,"112":0,"113":0,"114":0,"115":0,"116":0,"117":0,"118":0,"119":0,"120":0,"121":0,"122":0,"123":0,"124":0,"125":0,"126":0,"127":0,"128":0,"129":0,"130":0,"131":0,"132":0,"133":0,"134":0,"135":0,"136":0,"137":0,"138":0,"139":0,"140":0,"141":0,"142":0,"143":0,"144":0,"145":0,"146":0,"147":0,"148":0,"149":0,"150":0,"151":0,"152":0,"153":0,"154":0,"155":0,"156":0,"157":0,"158":0,"159":0,"160":0,"161":0,"162":0,"163":0,"164":0,"165":0,"166":0,"167":0,"168":0,"169":0,"170":0,"171":0,"172":0,"173":0,"174":0,"175":0,"176":0,"177":0,"178":0,"179":0,"180":0,"181":0,"182":0,"183":0,"184":0,"185":0,"186":0},"branchMap":{"0":{"type":"branch","line":1,"loc":{"start":{"line":1,"column":0},"end":{"line":187,"column":1}},"locations":[{"start":{"line":1,"column":0},"end":{"line":187,"column":1}}]}},"b":{"0":[0]},"fnMap":{"0":{"name":"(empty-report)","decl":{"start":{"line":1,"column":0},"end":{"line":187,"column":1}},"loc":{"start":{"line":1,"column":0},"end":{"line":187,"column":1}},"line":1}},"f":{"0":0}},"/Users/scotttwiname/Projects/subql-main/packages/types-core/src/project/versioned/base.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/types-core/src/project/versioned/base.ts","all":true,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":50}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":0}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":113}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":5}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":32}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":19}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":5}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":15}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":5}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":95}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":19}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":15}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":5}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":22}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":5}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":59}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":19}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":5}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":20}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":5}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":48}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":32}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":14}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":5}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":13}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":1}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":0}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":117}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":31}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":26}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":5}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":50}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":25}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":5}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":23}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":1}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":0}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":39}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":5}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":104}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":39}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":13}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":54}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":5}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":37}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":1}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":0}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":75}},"51":{"start":{"line":52,"column":0},"end":{"line":52,"column":5}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":54}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":16}},"54":{"start":{"line":55,"column":0},"end":{"line":55,"column":5}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":16}},"56":{"start":{"line":57,"column":0},"end":{"line":57,"column":1}},"57":{"start":{"line":58,"column":0},"end":{"line":58,"column":0}},"58":{"start":{"line":59,"column":0},"end":{"line":59,"column":66}},"59":{"start":{"line":60,"column":0},"end":{"line":60,"column":10}},"60":{"start":{"line":61,"column":0},"end":{"line":61,"column":5}},"61":{"start":{"line":62,"column":0},"end":{"line":62,"column":89}},"62":{"start":{"line":63,"column":0},"end":{"line":63,"column":19}},"63":{"start":{"line":64,"column":0},"end":{"line":64,"column":13}},"64":{"start":{"line":65,"column":0},"end":{"line":65,"column":27}},"65":{"start":{"line":66,"column":0},"end":{"line":66,"column":5}},"66":{"start":{"line":67,"column":0},"end":{"line":67,"column":18}},"67":{"start":{"line":68,"column":0},"end":{"line":68,"column":5}},"68":{"start":{"line":69,"column":0},"end":{"line":69,"column":97}},"69":{"start":{"line":70,"column":0},"end":{"line":70,"column":5}},"70":{"start":{"line":71,"column":0},"end":{"line":71,"column":13}},"71":{"start":{"line":72,"column":0},"end":{"line":72,"column":1}},"72":{"start":{"line":73,"column":0},"end":{"line":73,"column":0}},"73":{"start":{"line":74,"column":0},"end":{"line":74,"column":31}},"74":{"start":{"line":75,"column":0},"end":{"line":75,"column":5}},"75":{"start":{"line":76,"column":0},"end":{"line":76,"column":51}},"76":{"start":{"line":77,"column":0},"end":{"line":77,"column":7}},"77":{"start":{"line":78,"column":0},"end":{"line":78,"column":15}},"78":{"start":{"line":79,"column":0},"end":{"line":79,"column":1}},"79":{"start":{"line":80,"column":0},"end":{"line":80,"column":0}},"80":{"start":{"line":81,"column":0},"end":{"line":81,"column":118}},"81":{"start":{"line":82,"column":0},"end":{"line":82,"column":15}}},"s":{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"59":0,"60":0,"61":0,"62":0,"63":0,"64":0,"65":0,"66":0,"67":0,"68":0,"69":0,"70":0,"71":0,"72":0,"73":0,"74":0,"75":0,"76":0,"77":0,"78":0,"79":0,"80":0,"81":0},"branchMap":{"0":{"type":"branch","line":1,"loc":{"start":{"line":1,"column":0},"end":{"line":82,"column":15}},"locations":[{"start":{"line":1,"column":0},"end":{"line":82,"column":15}}]}},"b":{"0":[0]},"fnMap":{"0":{"name":"(empty-report)","decl":{"start":{"line":1,"column":0},"end":{"line":82,"column":15}},"loc":{"start":{"line":1,"column":0},"end":{"line":82,"column":15}},"line":1}},"f":{"0":0}},"/Users/scotttwiname/Projects/subql-main/packages/types-core/src/project/versioned/index.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/types-core/src/project/versioned/index.ts","all":true,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":23}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":25}}},"s":{"0":0,"1":0,"2":0,"3":0,"4":0},"branchMap":{"0":{"type":"branch","line":1,"loc":{"start":{"line":1,"column":0},"end":{"line":5,"column":25}},"locations":[{"start":{"line":1,"column":0},"end":{"line":5,"column":25}}]}},"b":{"0":[0]},"fnMap":{"0":{"name":"(empty-report)","decl":{"start":{"line":1,"column":0},"end":{"line":5,"column":25}},"loc":{"start":{"line":1,"column":0},"end":{"line":5,"column":25}},"line":1}},"f":{"0":0}},"/Users/scotttwiname/Projects/subql-main/packages/types-core/src/project/versioned/v1_0_0/index.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/types-core/src/project/versioned/v1_0_0/index.ts","all":true,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":24}}},"s":{"0":0,"1":0,"2":0,"3":0},"branchMap":{"0":{"type":"branch","line":1,"loc":{"start":{"line":1,"column":0},"end":{"line":4,"column":24}},"locations":[{"start":{"line":1,"column":0},"end":{"line":4,"column":24}}]}},"b":{"0":[0]},"fnMap":{"0":{"name":"(empty-report)","decl":{"start":{"line":1,"column":0},"end":{"line":4,"column":24}},"loc":{"start":{"line":1,"column":0},"end":{"line":4,"column":24}},"line":1}},"f":{"0":0}},"/Users/scotttwiname/Projects/subql-main/packages/types-core/src/project/versioned/v1_0_0/types.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/types-core/src/project/versioned/v1_0_0/types.ts","all":true,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":50}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":63}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":0}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":3}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":51}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":13}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":3}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":30}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":5}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":35}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":21}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":5}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":17}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":0}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":5}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":36}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":22}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":5}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":19}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":1}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":0}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":3}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":40}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":13}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":11}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":43}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":21}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":24}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":23}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":15}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":23}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":6}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":4}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":3}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":27}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":5}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":34}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":19}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":5}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":15}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":0}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":5}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":44}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":19}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":17}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":5}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":18}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":0}},"51":{"start":{"line":52,"column":0},"end":{"line":52,"column":5}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":48}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":24}},"54":{"start":{"line":55,"column":0},"end":{"line":55,"column":5}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":24}},"56":{"start":{"line":57,"column":0},"end":{"line":57,"column":1}},"57":{"start":{"line":58,"column":0},"end":{"line":58,"column":0}},"58":{"start":{"line":59,"column":0},"end":{"line":59,"column":3}},"59":{"start":{"line":60,"column":0},"end":{"line":60,"column":41}},"60":{"start":{"line":61,"column":0},"end":{"line":61,"column":13}},"61":{"start":{"line":62,"column":0},"end":{"line":62,"column":3}},"62":{"start":{"line":63,"column":0},"end":{"line":63,"column":28}},"63":{"start":{"line":64,"column":0},"end":{"line":64,"column":5}},"64":{"start":{"line":65,"column":0},"end":{"line":65,"column":35}},"65":{"start":{"line":66,"column":0},"end":{"line":66,"column":19}},"66":{"start":{"line":67,"column":0},"end":{"line":67,"column":28}},"67":{"start":{"line":68,"column":0},"end":{"line":68,"column":5}},"68":{"start":{"line":69,"column":0},"end":{"line":69,"column":15}},"69":{"start":{"line":70,"column":0},"end":{"line":70,"column":5}},"70":{"start":{"line":71,"column":0},"end":{"line":71,"column":45}},"71":{"start":{"line":72,"column":0},"end":{"line":72,"column":19}},"72":{"start":{"line":73,"column":0},"end":{"line":73,"column":17}},"73":{"start":{"line":74,"column":0},"end":{"line":74,"column":5}},"74":{"start":{"line":75,"column":0},"end":{"line":75,"column":18}},"75":{"start":{"line":76,"column":0},"end":{"line":76,"column":1}},"76":{"start":{"line":77,"column":0},"end":{"line":77,"column":0}},"77":{"start":{"line":78,"column":0},"end":{"line":78,"column":3}},"78":{"start":{"line":79,"column":0},"end":{"line":79,"column":56}},"79":{"start":{"line":80,"column":0},"end":{"line":80,"column":13}},"80":{"start":{"line":81,"column":0},"end":{"line":81,"column":3}},"81":{"start":{"line":82,"column":0},"end":{"line":82,"column":30}},"82":{"start":{"line":83,"column":0},"end":{"line":83,"column":5}},"83":{"start":{"line":84,"column":0},"end":{"line":84,"column":87}},"84":{"start":{"line":85,"column":0},"end":{"line":85,"column":20}},"85":{"start":{"line":86,"column":0},"end":{"line":86,"column":20}},"86":{"start":{"line":87,"column":0},"end":{"line":87,"column":5}},"87":{"start":{"line":88,"column":0},"end":{"line":88,"column":23}},"88":{"start":{"line":89,"column":0},"end":{"line":89,"column":0}},"89":{"start":{"line":90,"column":0},"end":{"line":90,"column":5}},"90":{"start":{"line":91,"column":0},"end":{"line":91,"column":74}},"91":{"start":{"line":92,"column":0},"end":{"line":92,"column":4}},"92":{"start":{"line":93,"column":0},"end":{"line":93,"column":96}},"93":{"start":{"line":94,"column":0},"end":{"line":94,"column":108}},"94":{"start":{"line":95,"column":0},"end":{"line":95,"column":20}},"95":{"start":{"line":96,"column":0},"end":{"line":96,"column":21}},"96":{"start":{"line":97,"column":0},"end":{"line":97,"column":5}},"97":{"start":{"line":98,"column":0},"end":{"line":98,"column":19}},"98":{"start":{"line":99,"column":0},"end":{"line":99,"column":0}},"99":{"start":{"line":100,"column":0},"end":{"line":100,"column":5}},"100":{"start":{"line":101,"column":0},"end":{"line":101,"column":82}},"101":{"start":{"line":102,"column":0},"end":{"line":102,"column":4}},"102":{"start":{"line":103,"column":0},"end":{"line":103,"column":66}},"103":{"start":{"line":104,"column":0},"end":{"line":104,"column":73}},"104":{"start":{"line":105,"column":0},"end":{"line":105,"column":80}},"105":{"start":{"line":106,"column":0},"end":{"line":106,"column":20}},"106":{"start":{"line":107,"column":0},"end":{"line":107,"column":21}},"107":{"start":{"line":108,"column":0},"end":{"line":108,"column":5}},"108":{"start":{"line":109,"column":0},"end":{"line":109,"column":30}},"109":{"start":{"line":110,"column":0},"end":{"line":110,"column":0}},"110":{"start":{"line":111,"column":0},"end":{"line":111,"column":5}},"111":{"start":{"line":112,"column":0},"end":{"line":112,"column":83}},"112":{"start":{"line":113,"column":0},"end":{"line":113,"column":178}},"113":{"start":{"line":114,"column":0},"end":{"line":114,"column":20}},"114":{"start":{"line":115,"column":0},"end":{"line":115,"column":5}},"115":{"start":{"line":116,"column":0},"end":{"line":116,"column":29}},"116":{"start":{"line":117,"column":0},"end":{"line":117,"column":1}},"117":{"start":{"line":118,"column":0},"end":{"line":118,"column":0}},"118":{"start":{"line":119,"column":0},"end":{"line":119,"column":3}},"119":{"start":{"line":120,"column":0},"end":{"line":120,"column":45}},"120":{"start":{"line":121,"column":0},"end":{"line":121,"column":13}},"121":{"start":{"line":122,"column":0},"end":{"line":122,"column":3}},"122":{"start":{"line":123,"column":0},"end":{"line":123,"column":32}},"123":{"start":{"line":124,"column":0},"end":{"line":124,"column":5}},"124":{"start":{"line":125,"column":0},"end":{"line":125,"column":81}},"125":{"start":{"line":126,"column":0},"end":{"line":126,"column":48}},"126":{"start":{"line":127,"column":0},"end":{"line":127,"column":19}},"127":{"start":{"line":128,"column":0},"end":{"line":128,"column":85}},"128":{"start":{"line":129,"column":0},"end":{"line":129,"column":5}},"129":{"start":{"line":130,"column":0},"end":{"line":130,"column":16}},"130":{"start":{"line":131,"column":0},"end":{"line":131,"column":0}},"131":{"start":{"line":132,"column":0},"end":{"line":132,"column":5}},"132":{"start":{"line":133,"column":0},"end":{"line":133,"column":81}},"133":{"start":{"line":134,"column":0},"end":{"line":134,"column":19}},"134":{"start":{"line":135,"column":0},"end":{"line":135,"column":85}},"135":{"start":{"line":136,"column":0},"end":{"line":136,"column":5}},"136":{"start":{"line":137,"column":0},"end":{"line":137,"column":21}},"137":{"start":{"line":138,"column":0},"end":{"line":138,"column":0}},"138":{"start":{"line":139,"column":0},"end":{"line":139,"column":5}},"139":{"start":{"line":140,"column":0},"end":{"line":140,"column":70}},"140":{"start":{"line":141,"column":0},"end":{"line":141,"column":19}},"141":{"start":{"line":142,"column":0},"end":{"line":142,"column":53}},"142":{"start":{"line":143,"column":0},"end":{"line":143,"column":5}},"143":{"start":{"line":144,"column":0},"end":{"line":144,"column":20}},"144":{"start":{"line":145,"column":0},"end":{"line":145,"column":1}},"145":{"start":{"line":146,"column":0},"end":{"line":146,"column":0}},"146":{"start":{"line":147,"column":0},"end":{"line":147,"column":39}},"147":{"start":{"line":148,"column":0},"end":{"line":148,"column":44}},"148":{"start":{"line":149,"column":0},"end":{"line":149,"column":66}},"149":{"start":{"line":150,"column":0},"end":{"line":150,"column":57}},"150":{"start":{"line":151,"column":0},"end":{"line":151,"column":3}},"151":{"start":{"line":152,"column":0},"end":{"line":152,"column":16}},"152":{"start":{"line":153,"column":0},"end":{"line":153,"column":18}},"153":{"start":{"line":154,"column":0},"end":{"line":154,"column":11}},"154":{"start":{"line":155,"column":0},"end":{"line":155,"column":17}},"155":{"start":{"line":156,"column":0},"end":{"line":156,"column":4}},"156":{"start":{"line":157,"column":0},"end":{"line":157,"column":22}},"157":{"start":{"line":158,"column":0},"end":{"line":158,"column":22}},"158":{"start":{"line":159,"column":0},"end":{"line":159,"column":23}},"159":{"start":{"line":160,"column":0},"end":{"line":160,"column":18}},"160":{"start":{"line":161,"column":0},"end":{"line":161,"column":19}},"161":{"start":{"line":162,"column":0},"end":{"line":162,"column":22}},"162":{"start":{"line":163,"column":0},"end":{"line":163,"column":13}},"163":{"start":{"line":164,"column":0},"end":{"line":164,"column":25}},"164":{"start":{"line":165,"column":0},"end":{"line":165,"column":1}},"165":{"start":{"line":166,"column":0},"end":{"line":166,"column":0}},"166":{"start":{"line":167,"column":0},"end":{"line":167,"column":30}},"167":{"start":{"line":168,"column":0},"end":{"line":168,"column":5}},"168":{"start":{"line":169,"column":0},"end":{"line":169,"column":54}},"169":{"start":{"line":170,"column":0},"end":{"line":170,"column":19}},"170":{"start":{"line":171,"column":0},"end":{"line":171,"column":13}},"171":{"start":{"line":172,"column":0},"end":{"line":172,"column":49}},"172":{"start":{"line":173,"column":0},"end":{"line":173,"column":5}},"173":{"start":{"line":174,"column":0},"end":{"line":174,"column":18}},"174":{"start":{"line":175,"column":0},"end":{"line":175,"column":0}},"175":{"start":{"line":176,"column":0},"end":{"line":176,"column":5}},"176":{"start":{"line":177,"column":0},"end":{"line":177,"column":67}},"177":{"start":{"line":178,"column":0},"end":{"line":178,"column":19}},"178":{"start":{"line":179,"column":0},"end":{"line":179,"column":13}},"179":{"start":{"line":180,"column":0},"end":{"line":180,"column":31}},"180":{"start":{"line":181,"column":0},"end":{"line":181,"column":5}},"181":{"start":{"line":182,"column":0},"end":{"line":182,"column":21}},"182":{"start":{"line":183,"column":0},"end":{"line":183,"column":1}}},"s":{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"59":0,"60":0,"61":0,"62":0,"63":0,"64":0,"65":0,"66":0,"67":0,"68":0,"69":0,"70":0,"71":0,"72":0,"73":0,"74":0,"75":0,"76":0,"77":0,"78":0,"79":0,"80":0,"81":0,"82":0,"83":0,"84":0,"85":0,"86":0,"87":0,"88":0,"89":0,"90":0,"91":0,"92":0,"93":0,"94":0,"95":0,"96":0,"97":0,"98":0,"99":0,"100":0,"101":0,"102":0,"103":0,"104":0,"105":0,"106":0,"107":0,"108":0,"109":0,"110":0,"111":0,"112":0,"113":0,"114":0,"115":0,"116":0,"117":0,"118":0,"119":0,"120":0,"121":0,"122":0,"123":0,"124":0,"125":0,"126":0,"127":0,"128":0,"129":0,"130":0,"131":0,"132":0,"133":0,"134":0,"135":0,"136":0,"137":0,"138":0,"139":0,"140":0,"141":0,"142":0,"143":0,"144":0,"145":0,"146":0,"147":0,"148":0,"149":0,"150":0,"151":0,"152":0,"153":0,"154":0,"155":0,"156":0,"157":0,"158":0,"159":0,"160":0,"161":0,"162":0,"163":0,"164":0,"165":0,"166":0,"167":0,"168":0,"169":0,"170":0,"171":0,"172":0,"173":0,"174":0,"175":0,"176":0,"177":0,"178":0,"179":0,"180":0,"181":0,"182":0},"branchMap":{"0":{"type":"branch","line":1,"loc":{"start":{"line":1,"column":0},"end":{"line":183,"column":1}},"locations":[{"start":{"line":1,"column":0},"end":{"line":183,"column":1}}]}},"b":{"0":[0]},"fnMap":{"0":{"name":"(empty-report)","decl":{"start":{"line":1,"column":0},"end":{"line":183,"column":1}},"loc":{"start":{"line":1,"column":0},"end":{"line":183,"column":1}},"line":1}},"f":{"0":0}},"/Users/scotttwiname/Projects/subql-main/packages/types-core/src/store.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/types-core/src/store.ts","all":true,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":40}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":52}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":11}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":0}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":34}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":35}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":62}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":0}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":33}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":66}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":73}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":0}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":25}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":13}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":17}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":29}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":1}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":0}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":24}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":63}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":32}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":19}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":34}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":47}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":18}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":120}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":88}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":63}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":60}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":62}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":79}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":52}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":59}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":1}}},"s":{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0},"branchMap":{"0":{"type":"branch","line":1,"loc":{"start":{"line":1,"column":0},"end":{"line":37,"column":1}},"locations":[{"start":{"line":1,"column":0},"end":{"line":37,"column":1}}]}},"b":{"0":[0]},"fnMap":{"0":{"name":"(empty-report)","decl":{"start":{"line":1,"column":0},"end":{"line":37,"column":1}},"loc":{"start":{"line":1,"column":0},"end":{"line":37,"column":1}},"line":1}},"f":{"0":0}},"/Users/scotttwiname/Projects/subql-main/packages/utils/src/array/array.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/utils/src/array/array.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":41}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":0}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":40}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":49}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":74}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":64}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":28}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":49}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":94}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":37}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":5}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":3}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":43}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":1}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":3,"8":3,"9":3,"10":3,"11":3,"12":0,"13":0,"14":3,"15":3,"16":3},"branchMap":{"0":{"type":"branch","line":8,"loc":{"start":{"line":8,"column":0},"end":{"line":17,"column":1}},"locations":[{"start":{"line":8,"column":0},"end":{"line":17,"column":1}}]},"1":{"type":"branch","line":12,"loc":{"start":{"line":12,"column":93},"end":{"line":14,"column":5}},"locations":[{"start":{"line":12,"column":93},"end":{"line":14,"column":5}}]},"2":{"type":"branch","line":9,"loc":{"start":{"line":9,"column":34},"end":{"line":9,"column":62}},"locations":[{"start":{"line":9,"column":34},"end":{"line":9,"column":62}}]}},"b":{"0":[3],"1":[0],"2":[3]},"fnMap":{"0":{"name":"findDuplicateStringArray","decl":{"start":{"line":8,"column":0},"end":{"line":17,"column":1}},"loc":{"start":{"line":8,"column":0},"end":{"line":17,"column":1}},"line":8}},"f":{"0":3}},"/Users/scotttwiname/Projects/subql-main/packages/utils/src/array/index.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/utils/src/array/index.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":24}}},"s":{"0":1,"1":1,"2":1,"3":1},"branchMap":{},"b":{},"fnMap":{},"f":{}},"/Users/scotttwiname/Projects/subql-main/packages/utils/src/buffer/buffer.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/utils/src/buffer/buffer.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":8}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":8}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":11}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":14}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":14}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":14}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":11}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":12}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":14}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":8}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":8}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":11}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":11}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":9}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":24}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":0}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":111}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1},"branchMap":{"0":{"type":"branch","line":5,"loc":{"start":{"line":5,"column":2},"end":{"line":5,"column":8}},"locations":[{"start":{"line":5,"column":2},"end":{"line":5,"column":8}}]},"1":{"type":"branch","line":6,"loc":{"start":{"line":6,"column":2},"end":{"line":6,"column":11}},"locations":[{"start":{"line":6,"column":2},"end":{"line":6,"column":11}}]},"2":{"type":"branch","line":8,"loc":{"start":{"line":8,"column":2},"end":{"line":8,"column":14}},"locations":[{"start":{"line":8,"column":2},"end":{"line":8,"column":14}}]},"3":{"type":"branch","line":9,"loc":{"start":{"line":9,"column":2},"end":{"line":9,"column":14}},"locations":[{"start":{"line":9,"column":2},"end":{"line":9,"column":14}}]},"4":{"type":"branch","line":10,"loc":{"start":{"line":10,"column":2},"end":{"line":10,"column":11}},"locations":[{"start":{"line":10,"column":2},"end":{"line":10,"column":11}}]},"5":{"type":"branch","line":11,"loc":{"start":{"line":11,"column":2},"end":{"line":11,"column":12}},"locations":[{"start":{"line":11,"column":2},"end":{"line":11,"column":12}}]},"6":{"type":"branch","line":12,"loc":{"start":{"line":12,"column":2},"end":{"line":12,"column":14}},"locations":[{"start":{"line":12,"column":2},"end":{"line":12,"column":14}}]},"7":{"type":"branch","line":13,"loc":{"start":{"line":13,"column":2},"end":{"line":13,"column":8}},"locations":[{"start":{"line":13,"column":2},"end":{"line":13,"column":8}}]},"8":{"type":"branch","line":14,"loc":{"start":{"line":14,"column":2},"end":{"line":14,"column":8}},"locations":[{"start":{"line":14,"column":2},"end":{"line":14,"column":8}}]},"9":{"type":"branch","line":15,"loc":{"start":{"line":15,"column":2},"end":{"line":15,"column":11}},"locations":[{"start":{"line":15,"column":2},"end":{"line":15,"column":11}}]},"10":{"type":"branch","line":20,"loc":{"start":{"line":20,"column":8},"end":{"line":20,"column":21}},"locations":[{"start":{"line":20,"column":8},"end":{"line":20,"column":21}}]},"11":{"type":"branch","line":20,"loc":{"start":{"line":20,"column":21},"end":{"line":20,"column":34}},"locations":[{"start":{"line":20,"column":21},"end":{"line":20,"column":34}}]},"12":{"type":"branch","line":20,"loc":{"start":{"line":20,"column":34},"end":{"line":20,"column":44}},"locations":[{"start":{"line":20,"column":34},"end":{"line":20,"column":44}}]},"13":{"type":"branch","line":20,"loc":{"start":{"line":20,"column":44},"end":{"line":20,"column":54}},"locations":[{"start":{"line":20,"column":44},"end":{"line":20,"column":54}}]},"14":{"type":"branch","line":20,"loc":{"start":{"line":20,"column":54},"end":{"line":20,"column":68}},"locations":[{"start":{"line":20,"column":54},"end":{"line":20,"column":68}}]},"15":{"type":"branch","line":20,"loc":{"start":{"line":20,"column":68},"end":{"line":20,"column":111}},"locations":[{"start":{"line":20,"column":68},"end":{"line":20,"column":111}}]}},"b":{"0":[2],"1":[25],"2":[37],"3":[28],"4":[2],"5":[42],"6":[43],"7":[35],"8":[38],"9":[2],"10":[295],"11":[35],"12":[13],"13":[12],"14":[1],"15":[3]},"fnMap":{"0":{"name":"get","decl":{"start":{"line":5,"column":2},"end":{"line":5,"column":8}},"loc":{"start":{"line":5,"column":2},"end":{"line":5,"column":8}},"line":5},"1":{"name":"get","decl":{"start":{"line":6,"column":2},"end":{"line":6,"column":11}},"loc":{"start":{"line":6,"column":2},"end":{"line":6,"column":11}},"line":6},"2":{"name":"get","decl":{"start":{"line":7,"column":2},"end":{"line":7,"column":14}},"loc":{"start":{"line":7,"column":2},"end":{"line":7,"column":14}},"line":7},"3":{"name":"get","decl":{"start":{"line":8,"column":2},"end":{"line":8,"column":14}},"loc":{"start":{"line":8,"column":2},"end":{"line":8,"column":14}},"line":8},"4":{"name":"get","decl":{"start":{"line":9,"column":2},"end":{"line":9,"column":14}},"loc":{"start":{"line":9,"column":2},"end":{"line":9,"column":14}},"line":9},"5":{"name":"get","decl":{"start":{"line":10,"column":2},"end":{"line":10,"column":11}},"loc":{"start":{"line":10,"column":2},"end":{"line":10,"column":11}},"line":10},"6":{"name":"get","decl":{"start":{"line":11,"column":2},"end":{"line":11,"column":12}},"loc":{"start":{"line":11,"column":2},"end":{"line":11,"column":12}},"line":11},"7":{"name":"get","decl":{"start":{"line":12,"column":2},"end":{"line":12,"column":14}},"loc":{"start":{"line":12,"column":2},"end":{"line":12,"column":14}},"line":12},"8":{"name":"get","decl":{"start":{"line":13,"column":2},"end":{"line":13,"column":8}},"loc":{"start":{"line":13,"column":2},"end":{"line":13,"column":8}},"line":13},"9":{"name":"get","decl":{"start":{"line":14,"column":2},"end":{"line":14,"column":8}},"loc":{"start":{"line":14,"column":2},"end":{"line":14,"column":8}},"line":14},"10":{"name":"get","decl":{"start":{"line":15,"column":2},"end":{"line":15,"column":11}},"loc":{"start":{"line":15,"column":2},"end":{"line":15,"column":11}},"line":15},"11":{"name":"get","decl":{"start":{"line":16,"column":2},"end":{"line":16,"column":11}},"loc":{"start":{"line":16,"column":2},"end":{"line":16,"column":11}},"line":16},"12":{"name":"get","decl":{"start":{"line":17,"column":2},"end":{"line":17,"column":9}},"loc":{"start":{"line":17,"column":2},"end":{"line":17,"column":9}},"line":17},"13":{"name":"get","decl":{"start":{"line":20,"column":8},"end":{"line":20,"column":21}},"loc":{"start":{"line":20,"column":8},"end":{"line":20,"column":21}},"line":20},"14":{"name":"get","decl":{"start":{"line":20,"column":21},"end":{"line":20,"column":34}},"loc":{"start":{"line":20,"column":21},"end":{"line":20,"column":34}},"line":20},"15":{"name":"get","decl":{"start":{"line":20,"column":34},"end":{"line":20,"column":44}},"loc":{"start":{"line":20,"column":34},"end":{"line":20,"column":44}},"line":20},"16":{"name":"get","decl":{"start":{"line":20,"column":44},"end":{"line":20,"column":54}},"loc":{"start":{"line":20,"column":44},"end":{"line":20,"column":54}},"line":20},"17":{"name":"get","decl":{"start":{"line":20,"column":54},"end":{"line":20,"column":68}},"loc":{"start":{"line":20,"column":54},"end":{"line":20,"column":68}},"line":20},"18":{"name":"get","decl":{"start":{"line":20,"column":68},"end":{"line":20,"column":111}},"loc":{"start":{"line":20,"column":68},"end":{"line":20,"column":111}},"line":20}},"f":{"0":2,"1":25,"2":0,"3":37,"4":28,"5":2,"6":42,"7":43,"8":35,"9":38,"10":2,"11":0,"12":0,"13":295,"14":35,"15":13,"16":12,"17":1,"18":3}},"/Users/scotttwiname/Projects/subql-main/packages/utils/src/buffer/index.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/utils/src/buffer/index.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":25}}},"s":{"0":1,"1":1,"2":1,"3":1},"branchMap":{},"b":{},"fnMap":{},"f":{}},"/Users/scotttwiname/Projects/subql-main/packages/utils/src/graphql/builder.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/utils/src/graphql/builder.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":25}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":15}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":18}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":17}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":1}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":0}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":26}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":34}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":17}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":36}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":33}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":1}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":0}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":27}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":16}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":37}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":1}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":0}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":59}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":26}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":22}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":36}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":41}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":39}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":45}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":37}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":28}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":45}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":28}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":49}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":47}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":52}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":46}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":13}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":45}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":12}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":24}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":48}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":79}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":14}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":54}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":7}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":6}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":15}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":1}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":0}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":52}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":74}},"51":{"start":{"line":52,"column":0},"end":{"line":52,"column":16}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":24}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":42}},"54":{"start":{"line":55,"column":0},"end":{"line":55,"column":41}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":30}},"56":{"start":{"line":57,"column":0},"end":{"line":57,"column":13}},"57":{"start":{"line":58,"column":0},"end":{"line":58,"column":45}},"58":{"start":{"line":59,"column":0},"end":{"line":59,"column":12}},"59":{"start":{"line":60,"column":0},"end":{"line":60,"column":23}},"60":{"start":{"line":61,"column":0},"end":{"line":61,"column":10}},"61":{"start":{"line":62,"column":0},"end":{"line":62,"column":5}},"62":{"start":{"line":63,"column":0},"end":{"line":63,"column":2}},"63":{"start":{"line":64,"column":0},"end":{"line":64,"column":0}},"64":{"start":{"line":65,"column":0},"end":{"line":65,"column":47}},"65":{"start":{"line":66,"column":0},"end":{"line":66,"column":95}},"66":{"start":{"line":67,"column":0},"end":{"line":67,"column":2}},"67":{"start":{"line":68,"column":0},"end":{"line":68,"column":0}},"68":{"start":{"line":69,"column":0},"end":{"line":69,"column":39}},"69":{"start":{"line":70,"column":0},"end":{"line":70,"column":27}},"70":{"start":{"line":71,"column":0},"end":{"line":71,"column":22}},"71":{"start":{"line":72,"column":0},"end":{"line":72,"column":64}},"72":{"start":{"line":73,"column":0},"end":{"line":73,"column":5}},"73":{"start":{"line":74,"column":0},"end":{"line":74,"column":26}},"74":{"start":{"line":75,"column":0},"end":{"line":75,"column":15}},"75":{"start":{"line":76,"column":0},"end":{"line":76,"column":36}},"76":{"start":{"line":77,"column":0},"end":{"line":77,"column":0}},"77":{"start":{"line":78,"column":0},"end":{"line":78,"column":72}},"78":{"start":{"line":79,"column":0},"end":{"line":79,"column":10}},"79":{"start":{"line":80,"column":0},"end":{"line":80,"column":94}},"80":{"start":{"line":81,"column":0},"end":{"line":81,"column":33}},"81":{"start":{"line":82,"column":0},"end":{"line":82,"column":4}},"82":{"start":{"line":83,"column":0},"end":{"line":83,"column":1}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":516,"22":516,"23":516,"24":721,"25":721,"26":322,"27":713,"28":159,"29":159,"30":274,"31":40,"32":274,"33":0,"34":234,"35":234,"36":234,"37":0,"38":159,"39":159,"40":399,"41":240,"42":240,"43":0,"44":0,"45":516,"46":516,"47":516,"48":1,"49":1,"50":167,"51":167,"52":167,"53":167,"54":311,"55":269,"56":269,"57":42,"58":167,"59":167,"60":167,"61":167,"62":167,"63":1,"64":1,"65":84,"66":84,"67":1,"68":1,"69":84,"70":155,"71":0,"72":0,"73":155,"74":155,"75":1,"76":1,"77":84,"78":84,"79":84,"80":84,"81":84,"82":84},"branchMap":{"0":{"type":"branch","line":22,"loc":{"start":{"line":22,"column":0},"end":{"line":48,"column":1}},"locations":[{"start":{"line":22,"column":0},"end":{"line":48,"column":1}}]},"1":{"type":"branch","line":24,"loc":{"start":{"line":24,"column":9},"end":{"line":46,"column":5}},"locations":[{"start":{"line":24,"column":9},"end":{"line":46,"column":5}}]},"2":{"type":"branch","line":26,"loc":{"start":{"line":26,"column":40},"end":{"line":45,"column":7}},"locations":[{"start":{"line":26,"column":40},"end":{"line":45,"column":7}}]},"3":{"type":"branch","line":26,"loc":{"start":{"line":26,"column":40},"end":{"line":28,"column":13}},"locations":[{"start":{"line":26,"column":40},"end":{"line":28,"column":13}}]},"4":{"type":"branch","line":28,"loc":{"start":{"line":28,"column":7},"end":{"line":45,"column":7}},"locations":[{"start":{"line":28,"column":7},"end":{"line":45,"column":7}}]},"5":{"type":"branch","line":28,"loc":{"start":{"line":28,"column":44},"end":{"line":41,"column":13}},"locations":[{"start":{"line":28,"column":44},"end":{"line":41,"column":13}}]},"6":{"type":"branch","line":41,"loc":{"start":{"line":41,"column":7},"end":{"line":45,"column":7}},"locations":[{"start":{"line":41,"column":7},"end":{"line":45,"column":7}}]},"7":{"type":"branch","line":43,"loc":{"start":{"line":43,"column":7},"end":{"line":45,"column":7}},"locations":[{"start":{"line":43,"column":7},"end":{"line":45,"column":7}}]},"8":{"type":"branch","line":30,"loc":{"start":{"line":30,"column":15},"end":{"line":39,"column":11}},"locations":[{"start":{"line":30,"column":15},"end":{"line":39,"column":11}}]},"9":{"type":"branch","line":31,"loc":{"start":{"line":31,"column":44},"end":{"line":33,"column":19}},"locations":[{"start":{"line":31,"column":44},"end":{"line":33,"column":19}}]},"10":{"type":"branch","line":33,"loc":{"start":{"line":33,"column":13},"end":{"line":37,"column":13}},"locations":[{"start":{"line":33,"column":13},"end":{"line":37,"column":13}}]},"11":{"type":"branch","line":33,"loc":{"start":{"line":33,"column":48},"end":{"line":35,"column":19}},"locations":[{"start":{"line":33,"column":48},"end":{"line":35,"column":19}}]},"12":{"type":"branch","line":38,"loc":{"start":{"line":38,"column":-1},"end":{"line":39,"column":11}},"locations":[{"start":{"line":38,"column":-1},"end":{"line":39,"column":11}}]},"13":{"type":"branch","line":50,"loc":{"start":{"line":50,"column":24},"end":{"line":63,"column":2}},"locations":[{"start":{"line":50,"column":24},"end":{"line":63,"column":2}}]},"14":{"type":"branch","line":51,"loc":{"start":{"line":51,"column":37},"end":{"line":51,"column":66}},"locations":[{"start":{"line":51,"column":37},"end":{"line":51,"column":66}}]},"15":{"type":"branch","line":51,"loc":{"start":{"line":51,"column":67},"end":{"line":51,"column":71}},"locations":[{"start":{"line":51,"column":67},"end":{"line":51,"column":71}}]},"16":{"type":"branch","line":61,"loc":{"start":{"line":61,"column":6},"end":{"line":61,"column":10}},"locations":[{"start":{"line":61,"column":6},"end":{"line":61,"column":10}}]},"17":{"type":"branch","line":54,"loc":{"start":{"line":54,"column":15},"end":{"line":59,"column":11}},"locations":[{"start":{"line":54,"column":15},"end":{"line":59,"column":11}}]},"18":{"type":"branch","line":55,"loc":{"start":{"line":55,"column":40},"end":{"line":57,"column":13}},"locations":[{"start":{"line":55,"column":40},"end":{"line":57,"column":13}}]},"19":{"type":"branch","line":58,"loc":{"start":{"line":58,"column":-1},"end":{"line":59,"column":11}},"locations":[{"start":{"line":58,"column":-1},"end":{"line":59,"column":11}}]},"20":{"type":"branch","line":65,"loc":{"start":{"line":65,"column":18},"end":{"line":67,"column":2}},"locations":[{"start":{"line":65,"column":18},"end":{"line":67,"column":2}}]},"21":{"type":"branch","line":66,"loc":{"start":{"line":66,"column":29},"end":{"line":66,"column":89}},"locations":[{"start":{"line":66,"column":29},"end":{"line":66,"column":89}}]},"22":{"type":"branch","line":66,"loc":{"start":{"line":66,"column":90},"end":{"line":66,"column":94}},"locations":[{"start":{"line":66,"column":90},"end":{"line":66,"column":94}}]},"23":{"type":"branch","line":66,"loc":{"start":{"line":66,"column":44},"end":{"line":66,"column":85}},"locations":[{"start":{"line":66,"column":44},"end":{"line":66,"column":85}}]},"24":{"type":"branch","line":69,"loc":{"start":{"line":69,"column":20},"end":{"line":76,"column":35}},"locations":[{"start":{"line":69,"column":20},"end":{"line":76,"column":35}}]},"25":{"type":"branch","line":70,"loc":{"start":{"line":70,"column":14},"end":{"line":76,"column":5}},"locations":[{"start":{"line":70,"column":14},"end":{"line":76,"column":5}}]},"26":{"type":"branch","line":71,"loc":{"start":{"line":71,"column":21},"end":{"line":73,"column":5}},"locations":[{"start":{"line":71,"column":21},"end":{"line":73,"column":5}}]},"27":{"type":"branch","line":78,"loc":{"start":{"line":78,"column":0},"end":{"line":83,"column":1}},"locations":[{"start":{"line":78,"column":0},"end":{"line":83,"column":1}}]},"28":{"type":"branch","line":80,"loc":{"start":{"line":80,"column":48},"end":{"line":80,"column":79}},"locations":[{"start":{"line":80,"column":48},"end":{"line":80,"column":79}}]}},"b":{"0":[516],"1":[721],"2":[713],"3":[322],"4":[399],"5":[159],"6":[240],"7":[0],"8":[274],"9":[40],"10":[234],"11":[0],"12":[0],"13":[167],"14":[42],"15":[125],"16":[0],"17":[311],"18":[269],"19":[42],"20":[84],"21":[24],"22":[60],"23":[155],"24":[84],"25":[155],"26":[0],"27":[84],"28":[125]},"fnMap":{"0":{"name":"buildArgs","decl":{"start":{"line":22,"column":0},"end":{"line":48,"column":1}},"loc":{"start":{"line":22,"column":0},"end":{"line":48,"column":1}},"line":22},"1":{"name":"bindProjections","decl":{"start":{"line":50,"column":24},"end":{"line":63,"column":2}},"loc":{"start":{"line":50,"column":24},"end":{"line":63,"column":2}},"line":50},"2":{"name":"toVarDefs","decl":{"start":{"line":65,"column":18},"end":{"line":67,"column":2}},"loc":{"start":{"line":65,"column":18},"end":{"line":67,"column":2}},"line":65},"3":{"name":"toVariables","decl":{"start":{"line":69,"column":20},"end":{"line":76,"column":35}},"loc":{"start":{"line":69,"column":20},"end":{"line":76,"column":35}},"line":69},"4":{"name":"buildQuery","decl":{"start":{"line":78,"column":0},"end":{"line":83,"column":1}},"loc":{"start":{"line":78,"column":0},"end":{"line":83,"column":1}},"line":78}},"f":{"0":516,"1":167,"2":84,"3":84,"4":84}},"/Users/scotttwiname/Projects/subql-main/packages/utils/src/graphql/constant.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/utils/src/graphql/constant.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":27}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":30}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":20}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":26}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":24}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":1}}},"s":{"0":1,"1":1,"2":1,"3":7,"4":7,"5":7,"6":7,"7":7,"8":7},"branchMap":{"0":{"type":"branch","line":4,"loc":{"start":{"line":4,"column":0},"end":{"line":9,"column":1}},"locations":[{"start":{"line":4,"column":0},"end":{"line":9,"column":1}}]}},"b":{"0":[7]},"fnMap":{},"f":{}},"/Users/scotttwiname/Projects/subql-main/packages/utils/src/graphql/entities.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/utils/src/graphql/entities.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":28}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":8}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":17}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":21}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":18}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":18}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":15}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":19}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":20}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":20}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":16}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":13}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":18}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":13}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":16}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":15}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":14}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":12}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":19}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":17}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":50}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":33}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":45}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":41}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":45}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":8}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":14}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":21}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":22}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":23}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":24}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":30}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":20}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":23}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":12}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":17}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":0}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":96}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":0}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":89}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":55}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":109}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":24}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":26}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":1}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":0}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":81}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":48}},"51":{"start":{"line":52,"column":0},"end":{"line":52,"column":1}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":0}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":38}},"54":{"start":{"line":55,"column":0},"end":{"line":55,"column":110}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":25}},"56":{"start":{"line":57,"column":0},"end":{"line":57,"column":12}},"57":{"start":{"line":58,"column":0},"end":{"line":58,"column":17}},"58":{"start":{"line":59,"column":0},"end":{"line":59,"column":20}},"59":{"start":{"line":60,"column":0},"end":{"line":60,"column":16}},"60":{"start":{"line":61,"column":0},"end":{"line":61,"column":6}},"61":{"start":{"line":62,"column":0},"end":{"line":62,"column":3}},"62":{"start":{"line":63,"column":0},"end":{"line":63,"column":0}},"63":{"start":{"line":64,"column":0},"end":{"line":64,"column":36}},"64":{"start":{"line":65,"column":0},"end":{"line":65,"column":53}},"65":{"start":{"line":66,"column":0},"end":{"line":66,"column":106}},"66":{"start":{"line":67,"column":0},"end":{"line":67,"column":26}},"67":{"start":{"line":68,"column":0},"end":{"line":68,"column":0}},"68":{"start":{"line":69,"column":0},"end":{"line":69,"column":48}},"69":{"start":{"line":70,"column":0},"end":{"line":70,"column":0}},"70":{"start":{"line":71,"column":0},"end":{"line":71,"column":62}},"71":{"start":{"line":72,"column":0},"end":{"line":72,"column":0}},"72":{"start":{"line":73,"column":0},"end":{"line":73,"column":24}},"73":{"start":{"line":74,"column":0},"end":{"line":74,"column":46}},"74":{"start":{"line":75,"column":0},"end":{"line":75,"column":16}},"75":{"start":{"line":76,"column":0},"end":{"line":76,"column":101}},"76":{"start":{"line":77,"column":0},"end":{"line":77,"column":6}},"77":{"start":{"line":78,"column":0},"end":{"line":78,"column":4}},"78":{"start":{"line":79,"column":0},"end":{"line":79,"column":0}},"79":{"start":{"line":80,"column":0},"end":{"line":80,"column":112}},"80":{"start":{"line":81,"column":0},"end":{"line":81,"column":57}},"81":{"start":{"line":82,"column":0},"end":{"line":82,"column":54}},"82":{"start":{"line":83,"column":0},"end":{"line":83,"column":34}},"83":{"start":{"line":84,"column":0},"end":{"line":84,"column":41}},"84":{"start":{"line":85,"column":0},"end":{"line":85,"column":24}},"85":{"start":{"line":86,"column":0},"end":{"line":86,"column":38}},"86":{"start":{"line":87,"column":0},"end":{"line":87,"column":17}},"87":{"start":{"line":88,"column":0},"end":{"line":88,"column":18}},"88":{"start":{"line":89,"column":0},"end":{"line":89,"column":6}},"89":{"start":{"line":90,"column":0},"end":{"line":90,"column":59}},"90":{"start":{"line":91,"column":0},"end":{"line":91,"column":0}},"91":{"start":{"line":92,"column":0},"end":{"line":92,"column":35}},"92":{"start":{"line":93,"column":0},"end":{"line":93,"column":39}},"93":{"start":{"line":94,"column":0},"end":{"line":94,"column":49}},"94":{"start":{"line":95,"column":0},"end":{"line":95,"column":85}},"95":{"start":{"line":96,"column":0},"end":{"line":96,"column":82}},"96":{"start":{"line":97,"column":0},"end":{"line":97,"column":0}},"97":{"start":{"line":98,"column":0},"end":{"line":98,"column":33}},"98":{"start":{"line":99,"column":0},"end":{"line":99,"column":56}},"99":{"start":{"line":100,"column":0},"end":{"line":100,"column":35}},"100":{"start":{"line":101,"column":0},"end":{"line":101,"column":72}},"101":{"start":{"line":102,"column":0},"end":{"line":102,"column":7}},"102":{"start":{"line":103,"column":0},"end":{"line":103,"column":22}},"103":{"start":{"line":104,"column":0},"end":{"line":104,"column":39}},"104":{"start":{"line":105,"column":0},"end":{"line":105,"column":30}},"105":{"start":{"line":106,"column":0},"end":{"line":106,"column":27}},"106":{"start":{"line":107,"column":0},"end":{"line":107,"column":41}},"107":{"start":{"line":108,"column":0},"end":{"line":108,"column":23}},"108":{"start":{"line":109,"column":0},"end":{"line":109,"column":100}},"109":{"start":{"line":110,"column":0},"end":{"line":110,"column":47}},"110":{"start":{"line":111,"column":0},"end":{"line":111,"column":27}},"111":{"start":{"line":112,"column":0},"end":{"line":112,"column":11}},"112":{"start":{"line":113,"column":0},"end":{"line":113,"column":7}},"113":{"start":{"line":114,"column":0},"end":{"line":114,"column":28}},"114":{"start":{"line":115,"column":0},"end":{"line":115,"column":80}},"115":{"start":{"line":116,"column":0},"end":{"line":116,"column":71}},"116":{"start":{"line":117,"column":0},"end":{"line":117,"column":39}},"117":{"start":{"line":118,"column":0},"end":{"line":118,"column":28}},"118":{"start":{"line":119,"column":0},"end":{"line":119,"column":28}},"119":{"start":{"line":120,"column":0},"end":{"line":120,"column":25}},"120":{"start":{"line":121,"column":0},"end":{"line":121,"column":40}},"121":{"start":{"line":122,"column":0},"end":{"line":122,"column":35}},"122":{"start":{"line":123,"column":0},"end":{"line":123,"column":31}},"123":{"start":{"line":124,"column":0},"end":{"line":124,"column":24}},"124":{"start":{"line":125,"column":0},"end":{"line":125,"column":38}},"125":{"start":{"line":126,"column":0},"end":{"line":126,"column":32}},"126":{"start":{"line":127,"column":0},"end":{"line":127,"column":11}},"127":{"start":{"line":128,"column":0},"end":{"line":128,"column":35}},"128":{"start":{"line":129,"column":0},"end":{"line":129,"column":7}},"129":{"start":{"line":130,"column":0},"end":{"line":130,"column":26}},"130":{"start":{"line":131,"column":0},"end":{"line":131,"column":79}},"131":{"start":{"line":132,"column":0},"end":{"line":132,"column":39}},"132":{"start":{"line":133,"column":0},"end":{"line":133,"column":28}},"133":{"start":{"line":134,"column":0},"end":{"line":134,"column":120}},"134":{"start":{"line":135,"column":0},"end":{"line":135,"column":25}},"135":{"start":{"line":136,"column":0},"end":{"line":136,"column":59}},"136":{"start":{"line":137,"column":0},"end":{"line":137,"column":32}},"137":{"start":{"line":138,"column":0},"end":{"line":138,"column":35}},"138":{"start":{"line":139,"column":0},"end":{"line":139,"column":7}},"139":{"start":{"line":140,"column":0},"end":{"line":140,"column":24}},"140":{"start":{"line":141,"column":0},"end":{"line":141,"column":75}},"141":{"start":{"line":142,"column":0},"end":{"line":142,"column":84}},"142":{"start":{"line":143,"column":0},"end":{"line":143,"column":74}},"143":{"start":{"line":144,"column":0},"end":{"line":144,"column":79}},"144":{"start":{"line":145,"column":0},"end":{"line":145,"column":0}},"145":{"start":{"line":146,"column":0},"end":{"line":146,"column":117}},"146":{"start":{"line":147,"column":0},"end":{"line":147,"column":98}},"147":{"start":{"line":148,"column":0},"end":{"line":148,"column":98}},"148":{"start":{"line":149,"column":0},"end":{"line":149,"column":86}},"149":{"start":{"line":150,"column":0},"end":{"line":150,"column":33}},"150":{"start":{"line":151,"column":0},"end":{"line":151,"column":26}},"151":{"start":{"line":152,"column":0},"end":{"line":152,"column":33}},"152":{"start":{"line":153,"column":0},"end":{"line":153,"column":33}},"153":{"start":{"line":154,"column":0},"end":{"line":154,"column":13}},"154":{"start":{"line":155,"column":0},"end":{"line":155,"column":9}},"155":{"start":{"line":156,"column":0},"end":{"line":156,"column":14}},"156":{"start":{"line":157,"column":0},"end":{"line":157,"column":62}},"157":{"start":{"line":158,"column":0},"end":{"line":158,"column":7}},"158":{"start":{"line":159,"column":0},"end":{"line":159,"column":23}},"159":{"start":{"line":160,"column":0},"end":{"line":160,"column":30}},"160":{"start":{"line":161,"column":0},"end":{"line":161,"column":47}},"161":{"start":{"line":162,"column":0},"end":{"line":162,"column":33}},"162":{"start":{"line":163,"column":0},"end":{"line":163,"column":45}},"163":{"start":{"line":164,"column":0},"end":{"line":164,"column":33}},"164":{"start":{"line":165,"column":0},"end":{"line":165,"column":13}},"165":{"start":{"line":166,"column":0},"end":{"line":166,"column":79}},"166":{"start":{"line":167,"column":0},"end":{"line":167,"column":41}},"167":{"start":{"line":168,"column":0},"end":{"line":168,"column":50}},"168":{"start":{"line":169,"column":0},"end":{"line":169,"column":85}},"169":{"start":{"line":170,"column":0},"end":{"line":170,"column":14}},"170":{"start":{"line":171,"column":0},"end":{"line":171,"column":26}},"171":{"start":{"line":172,"column":0},"end":{"line":172,"column":36}},"172":{"start":{"line":173,"column":0},"end":{"line":173,"column":13}},"173":{"start":{"line":174,"column":0},"end":{"line":174,"column":11}},"174":{"start":{"line":175,"column":0},"end":{"line":175,"column":16}},"175":{"start":{"line":176,"column":0},"end":{"line":176,"column":75}},"176":{"start":{"line":177,"column":0},"end":{"line":177,"column":9}},"177":{"start":{"line":178,"column":0},"end":{"line":178,"column":7}},"178":{"start":{"line":179,"column":0},"end":{"line":179,"column":5}},"179":{"start":{"line":180,"column":0},"end":{"line":180,"column":0}},"180":{"start":{"line":181,"column":0},"end":{"line":181,"column":24}},"181":{"start":{"line":182,"column":0},"end":{"line":182,"column":76}},"182":{"start":{"line":183,"column":0},"end":{"line":183,"column":103}},"183":{"start":{"line":184,"column":0},"end":{"line":184,"column":26}},"184":{"start":{"line":185,"column":0},"end":{"line":185,"column":6}},"185":{"start":{"line":186,"column":0},"end":{"line":186,"column":52}},"186":{"start":{"line":187,"column":0},"end":{"line":187,"column":91}},"187":{"start":{"line":188,"column":0},"end":{"line":188,"column":36}},"188":{"start":{"line":189,"column":0},"end":{"line":189,"column":24}},"189":{"start":{"line":190,"column":0},"end":{"line":190,"column":106}},"190":{"start":{"line":191,"column":0},"end":{"line":191,"column":10}},"191":{"start":{"line":192,"column":0},"end":{"line":192,"column":7}},"192":{"start":{"line":193,"column":0},"end":{"line":193,"column":66}},"193":{"start":{"line":194,"column":0},"end":{"line":194,"column":92}},"194":{"start":{"line":195,"column":0},"end":{"line":195,"column":31}},"195":{"start":{"line":196,"column":0},"end":{"line":196,"column":29}},"196":{"start":{"line":197,"column":0},"end":{"line":197,"column":11}},"197":{"start":{"line":198,"column":0},"end":{"line":198,"column":9}},"198":{"start":{"line":199,"column":0},"end":{"line":199,"column":5}},"199":{"start":{"line":200,"column":0},"end":{"line":200,"column":0}},"200":{"start":{"line":201,"column":0},"end":{"line":201,"column":22}},"201":{"start":{"line":202,"column":0},"end":{"line":202,"column":62}},"202":{"start":{"line":203,"column":0},"end":{"line":203,"column":110}},"203":{"start":{"line":204,"column":0},"end":{"line":204,"column":0}},"204":{"start":{"line":205,"column":0},"end":{"line":205,"column":31}},"205":{"start":{"line":206,"column":0},"end":{"line":206,"column":48}},"206":{"start":{"line":207,"column":0},"end":{"line":207,"column":107}},"207":{"start":{"line":208,"column":0},"end":{"line":208,"column":7}},"208":{"start":{"line":209,"column":0},"end":{"line":209,"column":0}},"209":{"start":{"line":210,"column":0},"end":{"line":210,"column":27}},"210":{"start":{"line":211,"column":0},"end":{"line":211,"column":78}},"211":{"start":{"line":212,"column":0},"end":{"line":212,"column":0}},"212":{"start":{"line":213,"column":0},"end":{"line":213,"column":67}},"213":{"start":{"line":214,"column":0},"end":{"line":214,"column":102}},"214":{"start":{"line":215,"column":0},"end":{"line":215,"column":21}},"215":{"start":{"line":216,"column":0},"end":{"line":216,"column":115}},"216":{"start":{"line":217,"column":0},"end":{"line":217,"column":9}},"217":{"start":{"line":218,"column":0},"end":{"line":218,"column":0}},"218":{"start":{"line":219,"column":0},"end":{"line":219,"column":53}},"219":{"start":{"line":220,"column":0},"end":{"line":220,"column":82}},"220":{"start":{"line":221,"column":0},"end":{"line":221,"column":9}},"221":{"start":{"line":222,"column":0},"end":{"line":222,"column":0}},"222":{"start":{"line":223,"column":0},"end":{"line":223,"column":74}},"223":{"start":{"line":224,"column":0},"end":{"line":224,"column":48}},"224":{"start":{"line":225,"column":0},"end":{"line":225,"column":67}},"225":{"start":{"line":226,"column":0},"end":{"line":226,"column":9}},"226":{"start":{"line":227,"column":0},"end":{"line":227,"column":9}},"227":{"start":{"line":228,"column":0},"end":{"line":228,"column":0}},"228":{"start":{"line":229,"column":0},"end":{"line":229,"column":47}},"229":{"start":{"line":230,"column":0},"end":{"line":230,"column":5}},"230":{"start":{"line":231,"column":0},"end":{"line":231,"column":0}},"231":{"start":{"line":232,"column":0},"end":{"line":232,"column":41}},"232":{"start":{"line":233,"column":0},"end":{"line":233,"column":3}},"233":{"start":{"line":234,"column":0},"end":{"line":234,"column":36}},"234":{"start":{"line":235,"column":0},"end":{"line":235,"column":24}},"235":{"start":{"line":236,"column":0},"end":{"line":236,"column":1}},"236":{"start":{"line":237,"column":0},"end":{"line":237,"column":0}},"237":{"start":{"line":238,"column":0},"end":{"line":238,"column":28}},"238":{"start":{"line":239,"column":0},"end":{"line":239,"column":38}},"239":{"start":{"line":240,"column":0},"end":{"line":240,"column":61}},"240":{"start":{"line":241,"column":0},"end":{"line":241,"column":22}},"241":{"start":{"line":242,"column":0},"end":{"line":242,"column":26}},"242":{"start":{"line":243,"column":0},"end":{"line":243,"column":13}},"243":{"start":{"line":244,"column":0},"end":{"line":244,"column":36}},"244":{"start":{"line":245,"column":0},"end":{"line":245,"column":107}},"245":{"start":{"line":246,"column":0},"end":{"line":246,"column":3}},"246":{"start":{"line":247,"column":0},"end":{"line":247,"column":34}},"247":{"start":{"line":248,"column":0},"end":{"line":248,"column":20}},"248":{"start":{"line":249,"column":0},"end":{"line":249,"column":138}},"249":{"start":{"line":250,"column":0},"end":{"line":250,"column":6}},"250":{"start":{"line":251,"column":0},"end":{"line":251,"column":3}},"251":{"start":{"line":252,"column":0},"end":{"line":252,"column":27}},"252":{"start":{"line":253,"column":0},"end":{"line":253,"column":99}},"253":{"start":{"line":254,"column":0},"end":{"line":254,"column":31}},"254":{"start":{"line":255,"column":0},"end":{"line":255,"column":109}},"255":{"start":{"line":256,"column":0},"end":{"line":256,"column":3}},"256":{"start":{"line":257,"column":0},"end":{"line":257,"column":36}},"257":{"start":{"line":258,"column":0},"end":{"line":258,"column":65}},"258":{"start":{"line":259,"column":0},"end":{"line":259,"column":57}},"259":{"start":{"line":260,"column":0},"end":{"line":260,"column":38}},"260":{"start":{"line":261,"column":0},"end":{"line":261,"column":108}},"261":{"start":{"line":262,"column":0},"end":{"line":262,"column":5}},"262":{"start":{"line":263,"column":0},"end":{"line":263,"column":18}},"263":{"start":{"line":264,"column":0},"end":{"line":264,"column":49}},"264":{"start":{"line":265,"column":0},"end":{"line":265,"column":22}},"265":{"start":{"line":266,"column":0},"end":{"line":266,"column":5}},"266":{"start":{"line":267,"column":0},"end":{"line":267,"column":13}},"267":{"start":{"line":268,"column":0},"end":{"line":268,"column":5}},"268":{"start":{"line":269,"column":0},"end":{"line":269,"column":1}},"269":{"start":{"line":270,"column":0},"end":{"line":270,"column":0}},"270":{"start":{"line":271,"column":0},"end":{"line":271,"column":25}},"271":{"start":{"line":272,"column":0},"end":{"line":272,"column":35}},"272":{"start":{"line":273,"column":0},"end":{"line":273,"column":40}},"273":{"start":{"line":274,"column":0},"end":{"line":274,"column":23}},"274":{"start":{"line":275,"column":0},"end":{"line":275,"column":23}},"275":{"start":{"line":276,"column":0},"end":{"line":276,"column":10}},"276":{"start":{"line":277,"column":0},"end":{"line":277,"column":56}},"277":{"start":{"line":278,"column":0},"end":{"line":278,"column":57}},"278":{"start":{"line":279,"column":0},"end":{"line":279,"column":35}},"279":{"start":{"line":280,"column":0},"end":{"line":280,"column":94}},"280":{"start":{"line":281,"column":0},"end":{"line":281,"column":41}},"281":{"start":{"line":282,"column":0},"end":{"line":282,"column":18}},"282":{"start":{"line":283,"column":0},"end":{"line":283,"column":4}},"283":{"start":{"line":284,"column":0},"end":{"line":284,"column":1}},"284":{"start":{"line":285,"column":0},"end":{"line":285,"column":0}},"285":{"start":{"line":286,"column":0},"end":{"line":286,"column":23}},"286":{"start":{"line":287,"column":0},"end":{"line":287,"column":21}},"287":{"start":{"line":288,"column":0},"end":{"line":288,"column":40}},"288":{"start":{"line":289,"column":0},"end":{"line":289,"column":35}},"289":{"start":{"line":290,"column":0},"end":{"line":290,"column":23}},"290":{"start":{"line":291,"column":0},"end":{"line":291,"column":10}},"291":{"start":{"line":292,"column":0},"end":{"line":292,"column":21}},"292":{"start":{"line":293,"column":0},"end":{"line":293,"column":17}},"293":{"start":{"line":294,"column":0},"end":{"line":294,"column":35}},"294":{"start":{"line":295,"column":0},"end":{"line":295,"column":30}},"295":{"start":{"line":296,"column":0},"end":{"line":296,"column":94}},"296":{"start":{"line":297,"column":0},"end":{"line":297,"column":41}},"297":{"start":{"line":298,"column":0},"end":{"line":298,"column":18}},"298":{"start":{"line":299,"column":0},"end":{"line":299,"column":4}},"299":{"start":{"line":300,"column":0},"end":{"line":300,"column":1}},"300":{"start":{"line":301,"column":0},"end":{"line":301,"column":0}},"301":{"start":{"line":302,"column":0},"end":{"line":302,"column":34}},"302":{"start":{"line":303,"column":0},"end":{"line":303,"column":50}},"303":{"start":{"line":304,"column":0},"end":{"line":304,"column":52}},"304":{"start":{"line":305,"column":0},"end":{"line":305,"column":26}},"305":{"start":{"line":306,"column":0},"end":{"line":306,"column":52}},"306":{"start":{"line":307,"column":0},"end":{"line":307,"column":26}},"307":{"start":{"line":308,"column":0},"end":{"line":308,"column":15}},"308":{"start":{"line":309,"column":0},"end":{"line":309,"column":4}},"309":{"start":{"line":310,"column":0},"end":{"line":310,"column":62}},"310":{"start":{"line":311,"column":0},"end":{"line":311,"column":33}},"311":{"start":{"line":312,"column":0},"end":{"line":312,"column":47}},"312":{"start":{"line":313,"column":0},"end":{"line":313,"column":81}},"313":{"start":{"line":314,"column":0},"end":{"line":314,"column":35}},"314":{"start":{"line":315,"column":0},"end":{"line":315,"column":23}},"315":{"start":{"line":316,"column":0},"end":{"line":316,"column":58}},"316":{"start":{"line":317,"column":0},"end":{"line":317,"column":31}},"317":{"start":{"line":318,"column":0},"end":{"line":318,"column":28}},"318":{"start":{"line":319,"column":0},"end":{"line":319,"column":69}},"319":{"start":{"line":320,"column":0},"end":{"line":320,"column":23}},"320":{"start":{"line":321,"column":0},"end":{"line":321,"column":11}},"321":{"start":{"line":322,"column":0},"end":{"line":322,"column":20}},"322":{"start":{"line":323,"column":0},"end":{"line":323,"column":43}},"323":{"start":{"line":324,"column":0},"end":{"line":324,"column":96}},"324":{"start":{"line":325,"column":0},"end":{"line":325,"column":31}},"325":{"start":{"line":326,"column":0},"end":{"line":326,"column":3}},"326":{"start":{"line":327,"column":0},"end":{"line":327,"column":27}},"327":{"start":{"line":328,"column":0},"end":{"line":328,"column":1}},"328":{"start":{"line":329,"column":0},"end":{"line":329,"column":0}},"329":{"start":{"line":330,"column":0},"end":{"line":330,"column":68}},"330":{"start":{"line":331,"column":0},"end":{"line":331,"column":78}},"331":{"start":{"line":332,"column":0},"end":{"line":332,"column":1}},"332":{"start":{"line":333,"column":0},"end":{"line":333,"column":0}},"333":{"start":{"line":334,"column":0},"end":{"line":334,"column":71}},"334":{"start":{"line":335,"column":0},"end":{"line":335,"column":43}},"335":{"start":{"line":336,"column":0},"end":{"line":336,"column":43}},"336":{"start":{"line":337,"column":0},"end":{"line":337,"column":24}},"337":{"start":{"line":338,"column":0},"end":{"line":338,"column":1}},"338":{"start":{"line":339,"column":0},"end":{"line":339,"column":0}},"339":{"start":{"line":340,"column":0},"end":{"line":340,"column":45}},"340":{"start":{"line":341,"column":0},"end":{"line":341,"column":55}},"341":{"start":{"line":342,"column":0},"end":{"line":342,"column":26}},"342":{"start":{"line":343,"column":0},"end":{"line":343,"column":46}},"343":{"start":{"line":344,"column":0},"end":{"line":344,"column":3}},"344":{"start":{"line":345,"column":0},"end":{"line":345,"column":30}},"345":{"start":{"line":346,"column":0},"end":{"line":346,"column":50}},"346":{"start":{"line":347,"column":0},"end":{"line":347,"column":3}},"347":{"start":{"line":348,"column":0},"end":{"line":348,"column":73}},"348":{"start":{"line":349,"column":0},"end":{"line":349,"column":90}},"349":{"start":{"line":350,"column":0},"end":{"line":350,"column":35}},"350":{"start":{"line":351,"column":0},"end":{"line":351,"column":72}},"351":{"start":{"line":352,"column":0},"end":{"line":352,"column":23}},"352":{"start":{"line":353,"column":0},"end":{"line":353,"column":1}},"353":{"start":{"line":354,"column":0},"end":{"line":354,"column":0}},"354":{"start":{"line":355,"column":0},"end":{"line":355,"column":79}},"355":{"start":{"line":356,"column":0},"end":{"line":356,"column":116}},"356":{"start":{"line":357,"column":0},"end":{"line":357,"column":11}},"357":{"start":{"line":358,"column":0},"end":{"line":358,"column":33}},"358":{"start":{"line":359,"column":0},"end":{"line":359,"column":99}},"359":{"start":{"line":360,"column":0},"end":{"line":360,"column":8}},"360":{"start":{"line":361,"column":0},"end":{"line":361,"column":104}},"361":{"start":{"line":362,"column":0},"end":{"line":362,"column":6}},"362":{"start":{"line":363,"column":0},"end":{"line":363,"column":3}},"363":{"start":{"line":364,"column":0},"end":{"line":364,"column":1}},"364":{"start":{"line":365,"column":0},"end":{"line":365,"column":0}},"365":{"start":{"line":366,"column":0},"end":{"line":366,"column":83}},"366":{"start":{"line":367,"column":0},"end":{"line":367,"column":44}},"367":{"start":{"line":368,"column":0},"end":{"line":368,"column":1}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"38":1,"39":1,"40":1,"41":1,"42":74,"43":74,"44":74,"45":74,"46":74,"47":74,"48":1,"49":22,"50":22,"51":22,"52":1,"53":1,"54":55,"55":55,"56":5,"57":5,"58":5,"59":5,"60":5,"61":5,"62":50,"63":50,"64":50,"65":50,"66":50,"67":50,"68":50,"69":50,"70":50,"71":50,"72":50,"73":50,"74":25,"75":25,"76":25,"77":50,"78":50,"79":50,"80":50,"81":50,"82":55,"83":249,"84":249,"85":249,"86":249,"87":249,"88":249,"89":249,"90":249,"91":249,"92":249,"93":2840,"94":2840,"95":2840,"96":2840,"97":2840,"98":2840,"99":2840,"100":2297,"101":2297,"102":543,"103":543,"104":22,"105":22,"106":22,"107":22,"108":22,"109":22,"110":22,"111":22,"112":22,"113":521,"114":521,"115":365,"116":365,"117":365,"118":365,"119":365,"120":365,"121":365,"122":365,"123":365,"124":365,"125":365,"126":365,"127":365,"128":365,"129":156,"130":156,"131":149,"132":149,"133":149,"134":149,"135":149,"136":149,"137":149,"138":149,"139":7,"140":7,"141":6,"142":6,"143":6,"144":6,"145":6,"146":6,"147":6,"148":6,"149":6,"150":6,"151":6,"152":6,"153":6,"154":6,"155":7,"156":1,"157":1,"158":2839,"159":2840,"160":11,"161":3,"162":3,"163":3,"164":3,"165":11,"166":8,"167":0,"168":0,"169":0,"170":0,"171":0,"172":0,"173":0,"174":8,"175":0,"176":0,"177":11,"178":2840,"179":248,"180":248,"181":248,"182":248,"183":248,"184":248,"185":249,"186":3,"187":3,"188":0,"189":0,"190":0,"191":0,"192":3,"193":3,"194":3,"195":3,"196":3,"197":3,"198":3,"199":248,"200":248,"201":248,"202":248,"203":248,"204":249,"205":0,"206":0,"207":0,"208":0,"209":0,"210":0,"211":0,"212":0,"213":5,"214":5,"215":1,"216":1,"217":4,"218":5,"219":1,"220":1,"221":3,"222":3,"223":5,"224":0,"225":0,"226":0,"227":0,"228":0,"229":0,"230":248,"231":248,"232":248,"233":49,"234":49,"235":49,"236":1,"237":3,"238":3,"239":3,"240":3,"241":3,"242":3,"243":3,"244":0,"245":0,"246":3,"247":0,"248":0,"249":0,"250":0,"251":3,"252":3,"253":3,"254":0,"255":0,"256":3,"257":6,"258":6,"259":6,"260":0,"261":0,"262":6,"263":6,"264":0,"265":0,"266":6,"267":3,"268":3,"269":1,"270":2662,"271":2662,"272":2662,"273":2662,"274":2662,"275":2662,"276":2662,"277":2662,"278":2662,"279":2662,"280":2662,"281":2662,"282":2662,"283":2662,"284":1,"285":6,"286":6,"287":6,"288":6,"289":6,"290":6,"291":6,"292":6,"293":6,"294":6,"295":6,"296":6,"297":6,"298":6,"299":6,"300":1,"301":12,"302":12,"303":12,"304":12,"305":12,"306":12,"307":12,"308":12,"309":12,"310":24,"311":24,"312":24,"313":24,"314":24,"315":24,"316":24,"317":24,"318":6,"319":6,"320":24,"321":24,"322":24,"323":24,"324":24,"325":24,"326":12,"327":12,"328":1,"329":146,"330":146,"331":146,"332":1,"333":72,"334":72,"335":72,"336":72,"337":72,"338":1,"339":1,"340":2882,"341":2882,"342":0,"343":0,"344":2882,"345":0,"346":0,"347":2882,"348":2882,"349":2882,"350":2882,"351":2882,"352":2882,"353":1,"354":49,"355":49,"356":149,"357":149,"358":149,"359":149,"360":149,"361":149,"362":149,"363":49,"364":1,"365":2,"366":2,"367":2},"branchMap":{"0":{"type":"branch","line":43,"loc":{"start":{"line":43,"column":0},"end":{"line":48,"column":1}},"locations":[{"start":{"line":43,"column":0},"end":{"line":48,"column":1}}]},"1":{"type":"branch","line":45,"loc":{"start":{"line":45,"column":12},"end":{"line":45,"column":108}},"locations":[{"start":{"line":45,"column":12},"end":{"line":45,"column":108}}]},"2":{"type":"branch","line":45,"loc":{"start":{"line":45,"column":34},"end":{"line":45,"column":52}},"locations":[{"start":{"line":45,"column":34},"end":{"line":45,"column":52}}]},"3":{"type":"branch","line":45,"loc":{"start":{"line":45,"column":53},"end":{"line":45,"column":107}},"locations":[{"start":{"line":45,"column":53},"end":{"line":45,"column":107}}]},"4":{"type":"branch","line":46,"loc":{"start":{"line":46,"column":9},"end":{"line":46,"column":23}},"locations":[{"start":{"line":46,"column":9},"end":{"line":46,"column":23}}]},"5":{"type":"branch","line":50,"loc":{"start":{"line":50,"column":0},"end":{"line":52,"column":1}},"locations":[{"start":{"line":50,"column":0},"end":{"line":52,"column":1}}]},"6":{"type":"branch","line":55,"loc":{"start":{"line":55,"column":0},"end":{"line":236,"column":1}},"locations":[{"start":{"line":55,"column":0},"end":{"line":236,"column":1}}]},"7":{"type":"branch","line":56,"loc":{"start":{"line":56,"column":24},"end":{"line":62,"column":3}},"locations":[{"start":{"line":56,"column":24},"end":{"line":62,"column":3}}]},"8":{"type":"branch","line":63,"loc":{"start":{"line":63,"column":-1},"end":{"line":83,"column":33}},"locations":[{"start":{"line":63,"column":-1},"end":{"line":83,"column":33}}]},"9":{"type":"branch","line":83,"loc":{"start":{"line":83,"column":33},"end":{"line":233,"column":3}},"locations":[{"start":{"line":83,"column":33},"end":{"line":233,"column":3}}]},"10":{"type":"branch","line":93,"loc":{"start":{"line":93,"column":38},"end":{"line":179,"column":5}},"locations":[{"start":{"line":93,"column":38},"end":{"line":179,"column":5}}]},"11":{"type":"branch","line":100,"loc":{"start":{"line":100,"column":19},"end":{"line":100,"column":32}},"locations":[{"start":{"line":100,"column":19},"end":{"line":100,"column":32}}]},"12":{"type":"branch","line":100,"loc":{"start":{"line":100,"column":34},"end":{"line":102,"column":7}},"locations":[{"start":{"line":100,"column":34},"end":{"line":102,"column":7}}]},"13":{"type":"branch","line":103,"loc":{"start":{"line":103,"column":-1},"end":{"line":158,"column":7}},"locations":[{"start":{"line":103,"column":-1},"end":{"line":158,"column":7}}]},"14":{"type":"branch","line":104,"loc":{"start":{"line":104,"column":38},"end":{"line":113,"column":7}},"locations":[{"start":{"line":104,"column":38},"end":{"line":113,"column":7}}]},"15":{"type":"branch","line":109,"loc":{"start":{"line":109,"column":56},"end":{"line":109,"column":85}},"locations":[{"start":{"line":109,"column":56},"end":{"line":109,"column":85}}]},"16":{"type":"branch","line":109,"loc":{"start":{"line":109,"column":86},"end":{"line":109,"column":98}},"locations":[{"start":{"line":109,"column":86},"end":{"line":109,"column":98}}]},"17":{"type":"branch","line":114,"loc":{"start":{"line":114,"column":-1},"end":{"line":158,"column":7}},"locations":[{"start":{"line":114,"column":-1},"end":{"line":158,"column":7}}]},"18":{"type":"branch","line":115,"loc":{"start":{"line":115,"column":49},"end":{"line":115,"column":77}},"locations":[{"start":{"line":115,"column":49},"end":{"line":115,"column":77}}]},"19":{"type":"branch","line":115,"loc":{"start":{"line":115,"column":79},"end":{"line":158,"column":7}},"locations":[{"start":{"line":115,"column":79},"end":{"line":158,"column":7}}]},"20":{"type":"branch","line":115,"loc":{"start":{"line":115,"column":79},"end":{"line":129,"column":7}},"locations":[{"start":{"line":115,"column":79},"end":{"line":129,"column":7}}]},"21":{"type":"branch","line":130,"loc":{"start":{"line":130,"column":-1},"end":{"line":158,"column":7}},"locations":[{"start":{"line":130,"column":-1},"end":{"line":158,"column":7}}]},"22":{"type":"branch","line":131,"loc":{"start":{"line":131,"column":49},"end":{"line":131,"column":76}},"locations":[{"start":{"line":131,"column":49},"end":{"line":131,"column":76}}]},"23":{"type":"branch","line":131,"loc":{"start":{"line":131,"column":78},"end":{"line":139,"column":7}},"locations":[{"start":{"line":131,"column":78},"end":{"line":139,"column":7}}]},"24":{"type":"branch","line":134,"loc":{"start":{"line":134,"column":53},"end":{"line":134,"column":82}},"locations":[{"start":{"line":134,"column":53},"end":{"line":134,"column":82}}]},"25":{"type":"branch","line":134,"loc":{"start":{"line":134,"column":83},"end":{"line":134,"column":95}},"locations":[{"start":{"line":134,"column":83},"end":{"line":134,"column":95}}]},"26":{"type":"branch","line":134,"loc":{"start":{"line":134,"column":109},"end":{"line":134,"column":119}},"locations":[{"start":{"line":134,"column":109},"end":{"line":134,"column":119}}]},"27":{"type":"branch","line":140,"loc":{"start":{"line":140,"column":-1},"end":{"line":158,"column":7}},"locations":[{"start":{"line":140,"column":-1},"end":{"line":158,"column":7}}]},"28":{"type":"branch","line":141,"loc":{"start":{"line":141,"column":74},"end":{"line":156,"column":13}},"locations":[{"start":{"line":141,"column":74},"end":{"line":156,"column":13}}]},"29":{"type":"branch","line":147,"loc":{"start":{"line":147,"column":90},"end":{"line":147,"column":97}},"locations":[{"start":{"line":147,"column":90},"end":{"line":147,"column":97}}]},"30":{"type":"branch","line":149,"loc":{"start":{"line":149,"column":21},"end":{"line":149,"column":83}},"locations":[{"start":{"line":149,"column":21},"end":{"line":149,"column":83}}]},"31":{"type":"branch","line":156,"loc":{"start":{"line":156,"column":7},"end":{"line":158,"column":7}},"locations":[{"start":{"line":156,"column":7},"end":{"line":158,"column":7}}]},"32":{"type":"branch","line":159,"loc":{"start":{"line":159,"column":-1},"end":{"line":160,"column":29}},"locations":[{"start":{"line":159,"column":-1},"end":{"line":160,"column":29}}]},"33":{"type":"branch","line":160,"loc":{"start":{"line":160,"column":29},"end":{"line":178,"column":7}},"locations":[{"start":{"line":160,"column":29},"end":{"line":178,"column":7}}]},"34":{"type":"branch","line":161,"loc":{"start":{"line":161,"column":46},"end":{"line":166,"column":15}},"locations":[{"start":{"line":161,"column":46},"end":{"line":166,"column":15}}]},"35":{"type":"branch","line":166,"loc":{"start":{"line":166,"column":9},"end":{"line":177,"column":9}},"locations":[{"start":{"line":166,"column":9},"end":{"line":177,"column":9}}]},"36":{"type":"branch","line":167,"loc":{"start":{"line":167,"column":40},"end":{"line":174,"column":11}},"locations":[{"start":{"line":167,"column":40},"end":{"line":174,"column":11}}]},"37":{"type":"branch","line":175,"loc":{"start":{"line":175,"column":9},"end":{"line":177,"column":9}},"locations":[{"start":{"line":175,"column":9},"end":{"line":177,"column":9}}]},"38":{"type":"branch","line":180,"loc":{"start":{"line":180,"column":-1},"end":{"line":186,"column":34}},"locations":[{"start":{"line":180,"column":-1},"end":{"line":186,"column":34}}]},"39":{"type":"branch","line":186,"loc":{"start":{"line":186,"column":34},"end":{"line":186,"column":42}},"locations":[{"start":{"line":186,"column":34},"end":{"line":186,"column":42}}]},"40":{"type":"branch","line":186,"loc":{"start":{"line":186,"column":51},"end":{"line":199,"column":5}},"locations":[{"start":{"line":186,"column":51},"end":{"line":199,"column":5}}]},"41":{"type":"branch","line":188,"loc":{"start":{"line":188,"column":35},"end":{"line":192,"column":7}},"locations":[{"start":{"line":188,"column":35},"end":{"line":192,"column":7}}]},"42":{"type":"branch","line":200,"loc":{"start":{"line":200,"column":-1},"end":{"line":205,"column":30}},"locations":[{"start":{"line":200,"column":-1},"end":{"line":205,"column":30}}]},"43":{"type":"branch","line":205,"loc":{"start":{"line":205,"column":30},"end":{"line":230,"column":5}},"locations":[{"start":{"line":205,"column":30},"end":{"line":230,"column":5}}]},"44":{"type":"branch","line":231,"loc":{"start":{"line":231,"column":-1},"end":{"line":233,"column":3}},"locations":[{"start":{"line":231,"column":-1},"end":{"line":233,"column":3}}]},"45":{"type":"branch","line":234,"loc":{"start":{"line":234,"column":-1},"end":{"line":236,"column":1}},"locations":[{"start":{"line":234,"column":-1},"end":{"line":236,"column":1}}]},"46":{"type":"branch","line":66,"loc":{"start":{"line":66,"column":12},"end":{"line":66,"column":105}},"locations":[{"start":{"line":66,"column":12},"end":{"line":66,"column":105}}]},"47":{"type":"branch","line":66,"loc":{"start":{"line":66,"column":34},"end":{"line":66,"column":52}},"locations":[{"start":{"line":66,"column":34},"end":{"line":66,"column":52}}]},"48":{"type":"branch","line":66,"loc":{"start":{"line":66,"column":53},"end":{"line":66,"column":104}},"locations":[{"start":{"line":66,"column":53},"end":{"line":66,"column":104}}]},"49":{"type":"branch","line":71,"loc":{"start":{"line":71,"column":37},"end":{"line":71,"column":60}},"locations":[{"start":{"line":71,"column":37},"end":{"line":71,"column":60}}]},"50":{"type":"branch","line":74,"loc":{"start":{"line":74,"column":35},"end":{"line":77,"column":6}},"locations":[{"start":{"line":74,"column":35},"end":{"line":77,"column":6}}]},"51":{"type":"branch","line":76,"loc":{"start":{"line":76,"column":84},"end":{"line":76,"column":98}},"locations":[{"start":{"line":76,"column":84},"end":{"line":76,"column":98}}]},"52":{"type":"branch","line":141,"loc":{"start":{"line":141,"column":31},"end":{"line":141,"column":50}},"locations":[{"start":{"line":141,"column":31},"end":{"line":141,"column":50}}]},"53":{"type":"branch","line":142,"loc":{"start":{"line":142,"column":44},"end":{"line":142,"column":82}},"locations":[{"start":{"line":142,"column":44},"end":{"line":142,"column":82}}]},"54":{"type":"branch","line":146,"loc":{"start":{"line":146,"column":61},"end":{"line":146,"column":115}},"locations":[{"start":{"line":146,"column":61},"end":{"line":146,"column":115}}]},"55":{"type":"branch","line":147,"loc":{"start":{"line":147,"column":52},"end":{"line":147,"column":89}},"locations":[{"start":{"line":147,"column":52},"end":{"line":147,"column":89}}]},"56":{"type":"branch","line":169,"loc":{"start":{"line":169,"column":14},"end":{"line":169,"column":85}},"locations":[{"start":{"line":169,"column":14},"end":{"line":169,"column":85}}]},"57":{"type":"branch","line":193,"loc":{"start":{"line":193,"column":48},"end":{"line":198,"column":7}},"locations":[{"start":{"line":193,"column":48},"end":{"line":198,"column":7}}]},"58":{"type":"branch","line":213,"loc":{"start":{"line":213,"column":42},"end":{"line":227,"column":7}},"locations":[{"start":{"line":213,"column":42},"end":{"line":227,"column":7}}]},"59":{"type":"branch","line":215,"loc":{"start":{"line":215,"column":20},"end":{"line":217,"column":9}},"locations":[{"start":{"line":215,"column":20},"end":{"line":217,"column":9}}]},"60":{"type":"branch","line":218,"loc":{"start":{"line":218,"column":-1},"end":{"line":219,"column":52}},"locations":[{"start":{"line":218,"column":-1},"end":{"line":219,"column":52}}]},"61":{"type":"branch","line":219,"loc":{"start":{"line":219,"column":52},"end":{"line":221,"column":9}},"locations":[{"start":{"line":219,"column":52},"end":{"line":221,"column":9}}]},"62":{"type":"branch","line":222,"loc":{"start":{"line":222,"column":-1},"end":{"line":224,"column":47}},"locations":[{"start":{"line":222,"column":-1},"end":{"line":224,"column":47}}]},"63":{"type":"branch","line":224,"loc":{"start":{"line":224,"column":47},"end":{"line":226,"column":9}},"locations":[{"start":{"line":224,"column":47},"end":{"line":226,"column":9}}]},"64":{"type":"branch","line":214,"loc":{"start":{"line":214,"column":43},"end":{"line":214,"column":100}},"locations":[{"start":{"line":214,"column":43},"end":{"line":214,"column":100}}]},"65":{"type":"branch","line":238,"loc":{"start":{"line":238,"column":0},"end":{"line":269,"column":1}},"locations":[{"start":{"line":238,"column":0},"end":{"line":269,"column":1}}]},"66":{"type":"branch","line":244,"loc":{"start":{"line":244,"column":35},"end":{"line":246,"column":3}},"locations":[{"start":{"line":244,"column":35},"end":{"line":246,"column":3}}]},"67":{"type":"branch","line":247,"loc":{"start":{"line":247,"column":33},"end":{"line":251,"column":3}},"locations":[{"start":{"line":247,"column":33},"end":{"line":251,"column":3}}]},"68":{"type":"branch","line":254,"loc":{"start":{"line":254,"column":30},"end":{"line":256,"column":3}},"locations":[{"start":{"line":254,"column":30},"end":{"line":256,"column":3}}]},"69":{"type":"branch","line":253,"loc":{"start":{"line":253,"column":48},"end":{"line":253,"column":97}},"locations":[{"start":{"line":253,"column":48},"end":{"line":253,"column":97}}]},"70":{"type":"branch","line":257,"loc":{"start":{"line":257,"column":28},"end":{"line":268,"column":3}},"locations":[{"start":{"line":257,"column":28},"end":{"line":268,"column":3}}]},"71":{"type":"branch","line":260,"loc":{"start":{"line":260,"column":37},"end":{"line":262,"column":5}},"locations":[{"start":{"line":260,"column":37},"end":{"line":262,"column":5}}]},"72":{"type":"branch","line":264,"loc":{"start":{"line":264,"column":48},"end":{"line":266,"column":5}},"locations":[{"start":{"line":264,"column":48},"end":{"line":266,"column":5}}]},"73":{"type":"branch","line":258,"loc":{"start":{"line":258,"column":44},"end":{"line":258,"column":63}},"locations":[{"start":{"line":258,"column":44},"end":{"line":258,"column":63}}]},"74":{"type":"branch","line":271,"loc":{"start":{"line":271,"column":0},"end":{"line":284,"column":1}},"locations":[{"start":{"line":271,"column":0},"end":{"line":284,"column":1}}]},"75":{"type":"branch","line":277,"loc":{"start":{"line":277,"column":23},"end":{"line":277,"column":42}},"locations":[{"start":{"line":277,"column":23},"end":{"line":277,"column":42}}]},"76":{"type":"branch","line":277,"loc":{"start":{"line":277,"column":43},"end":{"line":277,"column":55}},"locations":[{"start":{"line":277,"column":43},"end":{"line":277,"column":55}}]},"77":{"type":"branch","line":278,"loc":{"start":{"line":278,"column":23},"end":{"line":278,"column":43}},"locations":[{"start":{"line":278,"column":23},"end":{"line":278,"column":43}}]},"78":{"type":"branch","line":278,"loc":{"start":{"line":278,"column":44},"end":{"line":278,"column":56}},"locations":[{"start":{"line":278,"column":44},"end":{"line":278,"column":56}}]},"79":{"type":"branch","line":280,"loc":{"start":{"line":280,"column":50},"end":{"line":280,"column":79}},"locations":[{"start":{"line":280,"column":50},"end":{"line":280,"column":79}}]},"80":{"type":"branch","line":280,"loc":{"start":{"line":280,"column":80},"end":{"line":280,"column":92}},"locations":[{"start":{"line":280,"column":80},"end":{"line":280,"column":92}}]},"81":{"type":"branch","line":286,"loc":{"start":{"line":286,"column":0},"end":{"line":300,"column":1}},"locations":[{"start":{"line":286,"column":0},"end":{"line":300,"column":1}}]},"82":{"type":"branch","line":296,"loc":{"start":{"line":296,"column":50},"end":{"line":296,"column":79}},"locations":[{"start":{"line":296,"column":50},"end":{"line":296,"column":79}}]},"83":{"type":"branch","line":302,"loc":{"start":{"line":302,"column":0},"end":{"line":328,"column":1}},"locations":[{"start":{"line":302,"column":0},"end":{"line":328,"column":1}}]},"84":{"type":"branch","line":310,"loc":{"start":{"line":310,"column":61},"end":{"line":326,"column":3}},"locations":[{"start":{"line":310,"column":61},"end":{"line":326,"column":3}}]},"85":{"type":"branch","line":316,"loc":{"start":{"line":316,"column":23},"end":{"line":316,"column":31}},"locations":[{"start":{"line":316,"column":23},"end":{"line":316,"column":31}}]},"86":{"type":"branch","line":316,"loc":{"start":{"line":316,"column":32},"end":{"line":316,"column":57}},"locations":[{"start":{"line":316,"column":32},"end":{"line":316,"column":57}}]},"87":{"type":"branch","line":318,"loc":{"start":{"line":318,"column":8},"end":{"line":320,"column":23}},"locations":[{"start":{"line":318,"column":8},"end":{"line":320,"column":23}}]},"88":{"type":"branch","line":322,"loc":{"start":{"line":322,"column":8},"end":{"line":322,"column":19}},"locations":[{"start":{"line":322,"column":8},"end":{"line":322,"column":19}}]},"89":{"type":"branch","line":324,"loc":{"start":{"line":324,"column":52},"end":{"line":324,"column":81}},"locations":[{"start":{"line":324,"column":52},"end":{"line":324,"column":81}}]},"90":{"type":"branch","line":324,"loc":{"start":{"line":324,"column":82},"end":{"line":324,"column":94}},"locations":[{"start":{"line":324,"column":82},"end":{"line":324,"column":94}}]},"91":{"type":"branch","line":313,"loc":{"start":{"line":313,"column":39},"end":{"line":313,"column":58}},"locations":[{"start":{"line":313,"column":39},"end":{"line":313,"column":58}}]},"92":{"type":"branch","line":319,"loc":{"start":{"line":319,"column":29},"end":{"line":319,"column":67}},"locations":[{"start":{"line":319,"column":29},"end":{"line":319,"column":67}}]},"93":{"type":"branch","line":330,"loc":{"start":{"line":330,"column":0},"end":{"line":332,"column":1}},"locations":[{"start":{"line":330,"column":0},"end":{"line":332,"column":1}}]},"94":{"type":"branch","line":331,"loc":{"start":{"line":331,"column":37},"end":{"line":331,"column":67}},"locations":[{"start":{"line":331,"column":37},"end":{"line":331,"column":67}}]},"95":{"type":"branch","line":331,"loc":{"start":{"line":331,"column":68},"end":{"line":331,"column":77}},"locations":[{"start":{"line":331,"column":68},"end":{"line":331,"column":77}}]},"96":{"type":"branch","line":334,"loc":{"start":{"line":334,"column":0},"end":{"line":338,"column":1}},"locations":[{"start":{"line":334,"column":0},"end":{"line":338,"column":1}}]},"97":{"type":"branch","line":336,"loc":{"start":{"line":336,"column":12},"end":{"line":336,"column":42}},"locations":[{"start":{"line":336,"column":12},"end":{"line":336,"column":42}}]},"98":{"type":"branch","line":341,"loc":{"start":{"line":341,"column":0},"end":{"line":353,"column":1}},"locations":[{"start":{"line":341,"column":0},"end":{"line":353,"column":1}}]},"99":{"type":"branch","line":342,"loc":{"start":{"line":342,"column":25},"end":{"line":344,"column":3}},"locations":[{"start":{"line":342,"column":25},"end":{"line":344,"column":3}}]},"100":{"type":"branch","line":345,"loc":{"start":{"line":345,"column":29},"end":{"line":347,"column":3}},"locations":[{"start":{"line":345,"column":29},"end":{"line":347,"column":3}}]},"101":{"type":"branch","line":348,"loc":{"start":{"line":348,"column":42},"end":{"line":348,"column":65}},"locations":[{"start":{"line":348,"column":42},"end":{"line":348,"column":65}}]},"102":{"type":"branch","line":348,"loc":{"start":{"line":348,"column":66},"end":{"line":348,"column":72}},"locations":[{"start":{"line":348,"column":66},"end":{"line":348,"column":72}}]},"103":{"type":"branch","line":349,"loc":{"start":{"line":349,"column":46},"end":{"line":349,"column":82}},"locations":[{"start":{"line":349,"column":46},"end":{"line":349,"column":82}}]},"104":{"type":"branch","line":349,"loc":{"start":{"line":349,"column":83},"end":{"line":349,"column":89}},"locations":[{"start":{"line":349,"column":83},"end":{"line":349,"column":89}}]},"105":{"type":"branch","line":351,"loc":{"start":{"line":351,"column":4},"end":{"line":351,"column":72}},"locations":[{"start":{"line":351,"column":4},"end":{"line":351,"column":72}}]},"106":{"type":"branch","line":352,"loc":{"start":{"line":352,"column":4},"end":{"line":352,"column":22}},"locations":[{"start":{"line":352,"column":4},"end":{"line":352,"column":22}}]},"107":{"type":"branch","line":355,"loc":{"start":{"line":355,"column":0},"end":{"line":364,"column":1}},"locations":[{"start":{"line":355,"column":0},"end":{"line":364,"column":1}}]},"108":{"type":"branch","line":356,"loc":{"start":{"line":356,"column":115},"end":{"line":363,"column":3}},"locations":[{"start":{"line":356,"column":115},"end":{"line":363,"column":3}}]},"109":{"type":"branch","line":356,"loc":{"start":{"line":356,"column":50},"end":{"line":356,"column":112}},"locations":[{"start":{"line":356,"column":50},"end":{"line":356,"column":112}}]},"110":{"type":"branch","line":356,"loc":{"start":{"line":356,"column":85},"end":{"line":356,"column":112}},"locations":[{"start":{"line":356,"column":85},"end":{"line":356,"column":112}}]},"111":{"type":"branch","line":359,"loc":{"start":{"line":359,"column":8},"end":{"line":359,"column":99}},"locations":[{"start":{"line":359,"column":8},"end":{"line":359,"column":99}}]},"112":{"type":"branch","line":359,"loc":{"start":{"line":359,"column":38},"end":{"line":359,"column":99}},"locations":[{"start":{"line":359,"column":38},"end":{"line":359,"column":99}}]},"113":{"type":"branch","line":359,"loc":{"start":{"line":359,"column":60},"end":{"line":359,"column":98}},"locations":[{"start":{"line":359,"column":60},"end":{"line":359,"column":98}}]},"114":{"type":"branch","line":366,"loc":{"start":{"line":366,"column":0},"end":{"line":368,"column":1}},"locations":[{"start":{"line":366,"column":0},"end":{"line":368,"column":1}}]}},"b":{"0":[74],"1":[1588],"2":[630],"3":[303],"4":[12],"5":[22],"6":[55],"7":[5],"8":[50],"9":[249],"10":[2840],"11":[2297],"12":[2297],"13":[543],"14":[22],"15":[10],"16":[12],"17":[521],"18":[514],"19":[486],"20":[365],"21":[156],"22":[149],"23":[149],"24":[104],"25":[45],"26":[0],"27":[7],"28":[6],"29":[0],"30":[0],"31":[1],"32":[2839],"33":[11],"34":[3],"35":[8],"36":[0],"37":[0],"38":[248],"39":[3],"40":[3],"41":[0],"42":[248],"43":[0],"44":[248],"45":[49],"46":[1134],"47":[486],"48":[261],"49":[249],"50":[25],"51":[57],"52":[12],"53":[12],"54":[6],"55":[2],"56":[2],"57":[3],"58":[5],"59":[1],"60":[4],"61":[1],"62":[3],"63":[0],"64":[16],"65":[3],"66":[0],"67":[0],"68":[0],"69":[6],"70":[6],"71":[0],"72":[0],"73":[15],"74":[2662],"75":[365],"76":[2297],"77":[365],"78":[2297],"79":[2425],"80":[237],"81":[6],"82":[0],"83":[12],"84":[24],"85":[6],"86":[18],"87":[6],"88":[18],"89":[21],"90":[3],"91":[48],"92":[6],"93":[146],"94":[70],"95":[76],"96":[72],"97":[1552],"98":[2882],"99":[0],"100":[0],"101":[2578],"102":[304],"103":[155],"104":[2727],"105":[2538],"106":[344],"107":[49],"108":[149],"109":[514],"110":[365],"111":[1368],"112":[149],"113":[547],"114":[2]},"fnMap":{"0":{"name":"getAllJsonObjects","decl":{"start":{"line":43,"column":0},"end":{"line":48,"column":1}},"loc":{"start":{"line":43,"column":0},"end":{"line":48,"column":1}},"line":43},"1":{"name":"getAllEnums","decl":{"start":{"line":50,"column":0},"end":{"line":52,"column":1}},"loc":{"start":{"line":50,"column":0},"end":{"line":52,"column":1}},"line":50},"2":{"name":"getAllEntitiesRelations","decl":{"start":{"line":55,"column":0},"end":{"line":236,"column":1}},"loc":{"start":{"line":55,"column":0},"end":{"line":236,"column":1}},"line":55},"3":{"name":"getJoinIndexFields","decl":{"start":{"line":238,"column":0},"end":{"line":269,"column":1}},"loc":{"start":{"line":238,"column":0},"end":{"line":269,"column":1}},"line":238},"4":{"name":"packEntityField","decl":{"start":{"line":271,"column":0},"end":{"line":284,"column":1}},"loc":{"start":{"line":271,"column":0},"end":{"line":284,"column":1}},"line":271},"5":{"name":"packJSONField","decl":{"start":{"line":286,"column":0},"end":{"line":300,"column":1}},"loc":{"start":{"line":286,"column":0},"end":{"line":300,"column":1}},"line":286},"6":{"name":"setJsonObjectType","decl":{"start":{"line":302,"column":0},"end":{"line":328,"column":1}},"loc":{"start":{"line":302,"column":0},"end":{"line":328,"column":1}},"line":302},"7":{"name":"getSchema","decl":{"start":{"line":330,"column":0},"end":{"line":332,"column":1}},"loc":{"start":{"line":330,"column":0},"end":{"line":332,"column":1}},"line":330},"8":{"name":"getEnumsFromSchema","decl":{"start":{"line":334,"column":0},"end":{"line":338,"column":1}},"loc":{"start":{"line":334,"column":0},"end":{"line":338,"column":1}},"line":334},"9":{"name":"extractType","decl":{"start":{"line":341,"column":0},"end":{"line":353,"column":1}},"loc":{"start":{"line":341,"column":0},"end":{"line":353,"column":1}},"line":341},"10":{"name":"validateRelations","decl":{"start":{"line":355,"column":0},"end":{"line":364,"column":1}},"loc":{"start":{"line":355,"column":0},"end":{"line":364,"column":1}},"line":355},"11":{"name":"isBooleanValueNode","decl":{"start":{"line":366,"column":0},"end":{"line":368,"column":1}},"loc":{"start":{"line":366,"column":0},"end":{"line":368,"column":1}},"line":366}},"f":{"0":74,"1":22,"2":55,"3":3,"4":2662,"5":6,"6":12,"7":146,"8":72,"9":2882,"10":49,"11":2}},"/Users/scotttwiname/Projects/subql-main/packages/utils/src/graphql/index.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/utils/src/graphql/index.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":27}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":25}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":24}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":26}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1},"branchMap":{},"b":{},"fnMap":{},"f":{}},"/Users/scotttwiname/Projects/subql-main/packages/utils/src/graphql/schema.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/utils/src/graphql/schema.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":20}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":97}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":47}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":39}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":0}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":42}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":40}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":42}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":1}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":0}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":66}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":65}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":1}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":0}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":67}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":30}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":25}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":42}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":1}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":0}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":79}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":45}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":1}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":56,"9":56,"10":56,"11":56,"12":1,"13":76,"14":76,"15":76,"16":1,"17":56,"18":56,"19":56,"20":56,"21":56,"22":1,"23":56,"24":56,"25":56},"branchMap":{"0":{"type":"branch","line":9,"loc":{"start":{"line":9,"column":0},"end":{"line":12,"column":1}},"locations":[{"start":{"line":9,"column":0},"end":{"line":12,"column":1}}]},"1":{"type":"branch","line":14,"loc":{"start":{"line":14,"column":0},"end":{"line":16,"column":1}},"locations":[{"start":{"line":14,"column":0},"end":{"line":16,"column":1}}]},"2":{"type":"branch","line":18,"loc":{"start":{"line":18,"column":0},"end":{"line":22,"column":1}},"locations":[{"start":{"line":18,"column":0},"end":{"line":22,"column":1}}]},"3":{"type":"branch","line":24,"loc":{"start":{"line":24,"column":0},"end":{"line":26,"column":1}},"locations":[{"start":{"line":24,"column":0},"end":{"line":26,"column":1}}]}},"b":{"0":[56],"1":[76],"2":[56],"3":[56]},"fnMap":{"0":{"name":"loadBaseSchema","decl":{"start":{"line":9,"column":0},"end":{"line":12,"column":1}},"loc":{"start":{"line":9,"column":0},"end":{"line":12,"column":1}},"line":9},"1":{"name":"buildSchemaFromFile","decl":{"start":{"line":14,"column":0},"end":{"line":16,"column":1}},"loc":{"start":{"line":14,"column":0},"end":{"line":16,"column":1}},"line":14},"2":{"name":"buildSchemaFromString","decl":{"start":{"line":18,"column":0},"end":{"line":22,"column":1}},"loc":{"start":{"line":18,"column":0},"end":{"line":22,"column":1}},"line":18},"3":{"name":"buildSchemaFromDocumentNode","decl":{"start":{"line":24,"column":0},"end":{"line":26,"column":1}},"loc":{"start":{"line":24,"column":0},"end":{"line":26,"column":1}},"line":24}},"f":{"0":56,"1":76,"2":56,"3":56}},"/Users/scotttwiname/Projects/subql-main/packages/utils/src/graphql/schema/directives.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/utils/src/graphql/schema/directives.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":30}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":0}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":30}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":60}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":29}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":50}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":55}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":60}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":68}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":2}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1},"branchMap":{},"b":{},"fnMap":{},"f":{}},"/Users/scotttwiname/Projects/subql-main/packages/utils/src/graphql/schema/scalas.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/utils/src/graphql/schema/scalas.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":30}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":0}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":26}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":15}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":19}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":13}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":14}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":14}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":2}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1},"branchMap":{},"b":{},"fnMap":{},"f":{}},"/Users/scotttwiname/Projects/subql-main/packages/utils/src/graphql/types.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/utils/src/graphql/types.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":40}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":15}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":33}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":1}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":0}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":39}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":15}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":57}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":40}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":20}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":19}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":1}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":0}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":46}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":30}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":0}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":36}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":0}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":28}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":1}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":0}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":35}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":15}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":0}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":19}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":0}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":23}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":1}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":0}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":36}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":15}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":0}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":31}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":0}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":32}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":0}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":33}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":0}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":23}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":1}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":0}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":37}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":15}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":0}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":15}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":0}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":40}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":0}},"51":{"start":{"line":52,"column":0},"end":{"line":52,"column":19}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":0}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":20}},"54":{"start":{"line":55,"column":0},"end":{"line":55,"column":0}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":18}},"56":{"start":{"line":57,"column":0},"end":{"line":57,"column":0}},"57":{"start":{"line":58,"column":0},"end":{"line":58,"column":23}},"58":{"start":{"line":59,"column":0},"end":{"line":59,"column":1}},"59":{"start":{"line":60,"column":0},"end":{"line":60,"column":0}},"60":{"start":{"line":61,"column":0},"end":{"line":61,"column":23}},"61":{"start":{"line":62,"column":0},"end":{"line":62,"column":18}},"62":{"start":{"line":63,"column":0},"end":{"line":63,"column":16}},"63":{"start":{"line":64,"column":0},"end":{"line":64,"column":16}},"64":{"start":{"line":65,"column":0},"end":{"line":65,"column":20}},"65":{"start":{"line":66,"column":0},"end":{"line":66,"column":14}},"66":{"start":{"line":67,"column":0},"end":{"line":67,"column":16}},"67":{"start":{"line":68,"column":0},"end":{"line":68,"column":1}},"68":{"start":{"line":69,"column":0},"end":{"line":69,"column":0}},"69":{"start":{"line":70,"column":0},"end":{"line":70,"column":37}},"70":{"start":{"line":71,"column":0},"end":{"line":71,"column":19}},"71":{"start":{"line":72,"column":0},"end":{"line":72,"column":0}},"72":{"start":{"line":73,"column":0},"end":{"line":73,"column":19}},"73":{"start":{"line":74,"column":0},"end":{"line":74,"column":0}},"74":{"start":{"line":75,"column":0},"end":{"line":75,"column":20}},"75":{"start":{"line":76,"column":0},"end":{"line":76,"column":1}},"76":{"start":{"line":77,"column":0},"end":{"line":77,"column":0}},"77":{"start":{"line":78,"column":0},"end":{"line":78,"column":38}},"78":{"start":{"line":79,"column":0},"end":{"line":79,"column":19}},"79":{"start":{"line":80,"column":0},"end":{"line":80,"column":0}},"80":{"start":{"line":81,"column":0},"end":{"line":81,"column":20}},"81":{"start":{"line":82,"column":0},"end":{"line":82,"column":1}},"82":{"start":{"line":83,"column":0},"end":{"line":83,"column":0}},"83":{"start":{"line":84,"column":0},"end":{"line":84,"column":39}},"84":{"start":{"line":85,"column":0},"end":{"line":85,"column":15}},"85":{"start":{"line":86,"column":0},"end":{"line":86,"column":0}},"86":{"start":{"line":87,"column":0},"end":{"line":87,"column":43}},"87":{"start":{"line":88,"column":0},"end":{"line":88,"column":0}},"88":{"start":{"line":89,"column":0},"end":{"line":89,"column":13}},"89":{"start":{"line":90,"column":0},"end":{"line":90,"column":0}},"90":{"start":{"line":91,"column":0},"end":{"line":91,"column":21}},"91":{"start":{"line":92,"column":0},"end":{"line":92,"column":0}},"92":{"start":{"line":93,"column":0},"end":{"line":93,"column":21}},"93":{"start":{"line":94,"column":0},"end":{"line":94,"column":1}},"94":{"start":{"line":95,"column":0},"end":{"line":95,"column":0}},"95":{"start":{"line":96,"column":0},"end":{"line":96,"column":25}},"96":{"start":{"line":97,"column":0},"end":{"line":97,"column":12}},"97":{"start":{"line":98,"column":0},"end":{"line":98,"column":14}},"98":{"start":{"line":99,"column":0},"end":{"line":99,"column":20}},"99":{"start":{"line":100,"column":0},"end":{"line":100,"column":20}},"100":{"start":{"line":101,"column":0},"end":{"line":101,"column":16}},"101":{"start":{"line":102,"column":0},"end":{"line":102,"column":22}},"102":{"start":{"line":103,"column":0},"end":{"line":103,"column":18}},"103":{"start":{"line":104,"column":0},"end":{"line":104,"column":18}},"104":{"start":{"line":105,"column":0},"end":{"line":105,"column":1}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"38":1,"39":1,"40":1,"41":1,"42":1,"43":1,"44":1,"45":1,"46":1,"47":1,"48":1,"49":1,"50":1,"51":1,"52":1,"53":1,"54":1,"55":1,"56":1,"57":1,"58":1,"59":1,"60":7,"61":7,"62":7,"63":7,"64":7,"65":7,"66":7,"67":7,"68":1,"69":1,"70":1,"71":1,"72":1,"73":1,"74":1,"75":1,"76":1,"77":1,"78":1,"79":1,"80":1,"81":1,"82":1,"83":1,"84":1,"85":1,"86":1,"87":1,"88":1,"89":1,"90":1,"91":1,"92":1,"93":1,"94":1,"95":7,"96":7,"97":7,"98":7,"99":7,"100":7,"101":7,"102":7,"103":7,"104":7},"branchMap":{"0":{"type":"branch","line":61,"loc":{"start":{"line":61,"column":0},"end":{"line":68,"column":1}},"locations":[{"start":{"line":61,"column":0},"end":{"line":68,"column":1}}]},"1":{"type":"branch","line":96,"loc":{"start":{"line":96,"column":0},"end":{"line":105,"column":1}},"locations":[{"start":{"line":96,"column":0},"end":{"line":105,"column":1}}]}},"b":{"0":[7],"1":[7]},"fnMap":{},"f":{}},"/Users/scotttwiname/Projects/subql-main/packages/utils/src/index.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/utils/src/index.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":26}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":59}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":24}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":24}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":25}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1},"branchMap":{"0":{"type":"branch","line":5,"loc":{"start":{"line":5,"column":21},"end":{"line":5,"column":59}},"locations":[{"start":{"line":5,"column":21},"end":{"line":5,"column":59}}]}},"b":{"0":[5]},"fnMap":{"0":{"name":"get","decl":{"start":{"line":5,"column":8},"end":{"line":5,"column":21}},"loc":{"start":{"line":5,"column":8},"end":{"line":5,"column":21}},"line":5},"1":{"name":"get","decl":{"start":{"line":5,"column":21},"end":{"line":5,"column":59}},"loc":{"start":{"line":5,"column":21},"end":{"line":5,"column":59}},"line":5}},"f":{"0":0,"1":5}},"/Users/scotttwiname/Projects/subql-main/packages/utils/src/logger/colors.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/utils/src/logger/colors.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":26}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":35}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":0}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":50}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":71}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":21}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":16}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":14}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":17}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":16}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":15}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":15}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":20}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":2}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":0}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":80}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":54}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":1}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":0}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":54}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":86}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":41}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":3}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":41}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":1}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":90,"19":90,"20":90,"21":1,"22":90,"23":90,"24":90,"25":90,"26":0,"27":0},"branchMap":{"0":{"type":"branch","line":19,"loc":{"start":{"line":19,"column":0},"end":{"line":21,"column":1}},"locations":[{"start":{"line":19,"column":0},"end":{"line":21,"column":1}}]},"1":{"type":"branch","line":23,"loc":{"start":{"line":23,"column":0},"end":{"line":28,"column":1}},"locations":[{"start":{"line":23,"column":0},"end":{"line":28,"column":1}}]},"2":{"type":"branch","line":27,"loc":{"start":{"line":27,"column":-1},"end":{"line":28,"column":1}},"locations":[{"start":{"line":27,"column":-1},"end":{"line":28,"column":1}}]}},"b":{"0":[90],"1":[90],"2":[0]},"fnMap":{"0":{"name":"isColouredValue","decl":{"start":{"line":19,"column":0},"end":{"line":21,"column":1}},"loc":{"start":{"line":19,"column":0},"end":{"line":21,"column":1}},"line":19},"1":{"name":"colorizeLevel","decl":{"start":{"line":23,"column":0},"end":{"line":28,"column":1}},"loc":{"start":{"line":23,"column":0},"end":{"line":28,"column":1}},"line":23}},"f":{"0":90,"1":90}},"/Users/scotttwiname/Projects/subql-main/packages/utils/src/logger/constants.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/utils/src/logger/constants.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":23}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":21}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":14}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":14}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":13}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":13}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":14}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":14}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":2}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":0}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":27}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":12}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":12}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":11}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":11}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":12}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":12}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":14}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":2}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1},"branchMap":{},"b":{},"fnMap":{},"f":{}},"/Users/scotttwiname/Projects/subql-main/packages/utils/src/logger/index.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/utils/src/logger/index.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":25}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":23}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1},"branchMap":{},"b":{},"fnMap":{},"f":{}},"/Users/scotttwiname/Projects/subql-main/packages/utils/src/logger/logger.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/utils/src/logger/logger.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":24}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":34}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":43}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":50}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":44}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":47}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":31}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":17}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":20}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":19}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":21}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":36}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":5}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":51}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":7}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":25}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":1}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":0}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":21}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":28}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":63}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":33}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":0}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":118}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":36}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":0}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":21}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":28}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":68}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":16}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":22}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":19}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":30}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":32}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":10}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":8}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":18}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":31}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":13}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":35}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":45}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":26}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":34}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":37}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":43}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":39}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":20}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":24}},"51":{"start":{"line":52,"column":0},"end":{"line":52,"column":42}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":17}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":16}},"54":{"start":{"line":55,"column":0},"end":{"line":55,"column":13}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":15}},"56":{"start":{"line":57,"column":0},"end":{"line":57,"column":43}},"57":{"start":{"line":58,"column":0},"end":{"line":58,"column":47}},"58":{"start":{"line":59,"column":0},"end":{"line":59,"column":47}},"59":{"start":{"line":60,"column":0},"end":{"line":60,"column":51}},"60":{"start":{"line":61,"column":0},"end":{"line":61,"column":64}},"61":{"start":{"line":62,"column":0},"end":{"line":62,"column":24}},"62":{"start":{"line":63,"column":0},"end":{"line":63,"column":46}},"63":{"start":{"line":64,"column":0},"end":{"line":64,"column":46}},"64":{"start":{"line":65,"column":0},"end":{"line":65,"column":43}},"65":{"start":{"line":66,"column":0},"end":{"line":66,"column":34}},"66":{"start":{"line":67,"column":0},"end":{"line":67,"column":11}},"67":{"start":{"line":68,"column":0},"end":{"line":68,"column":43}},"68":{"start":{"line":69,"column":0},"end":{"line":69,"column":37}},"69":{"start":{"line":70,"column":0},"end":{"line":70,"column":70}},"70":{"start":{"line":71,"column":0},"end":{"line":71,"column":25}},"71":{"start":{"line":72,"column":0},"end":{"line":72,"column":41}},"72":{"start":{"line":73,"column":0},"end":{"line":73,"column":56}},"73":{"start":{"line":74,"column":0},"end":{"line":74,"column":43}},"74":{"start":{"line":75,"column":0},"end":{"line":75,"column":20}},"75":{"start":{"line":76,"column":0},"end":{"line":76,"column":60}},"76":{"start":{"line":77,"column":0},"end":{"line":77,"column":13}},"77":{"start":{"line":78,"column":0},"end":{"line":78,"column":11}},"78":{"start":{"line":79,"column":0},"end":{"line":79,"column":106}},"79":{"start":{"line":80,"column":0},"end":{"line":80,"column":10}},"80":{"start":{"line":81,"column":0},"end":{"line":81,"column":0}},"81":{"start":{"line":82,"column":0},"end":{"line":82,"column":52}},"82":{"start":{"line":83,"column":0},"end":{"line":83,"column":78}},"83":{"start":{"line":84,"column":0},"end":{"line":84,"column":9}},"84":{"start":{"line":85,"column":0},"end":{"line":85,"column":8}},"85":{"start":{"line":86,"column":0},"end":{"line":86,"column":28}},"86":{"start":{"line":87,"column":0},"end":{"line":87,"column":0}},"87":{"start":{"line":88,"column":0},"end":{"line":88,"column":19}},"88":{"start":{"line":89,"column":0},"end":{"line":89,"column":47}},"89":{"start":{"line":90,"column":0},"end":{"line":90,"column":59}},"90":{"start":{"line":91,"column":0},"end":{"line":91,"column":0}},"91":{"start":{"line":92,"column":0},"end":{"line":92,"column":29}},"92":{"start":{"line":93,"column":0},"end":{"line":93,"column":23}},"93":{"start":{"line":94,"column":0},"end":{"line":94,"column":20}},"94":{"start":{"line":95,"column":0},"end":{"line":95,"column":22}},"95":{"start":{"line":96,"column":0},"end":{"line":96,"column":8}},"96":{"start":{"line":97,"column":0},"end":{"line":97,"column":0}},"97":{"start":{"line":98,"column":0},"end":{"line":98,"column":19}},"98":{"start":{"line":99,"column":0},"end":{"line":99,"column":93}},"99":{"start":{"line":100,"column":0},"end":{"line":100,"column":14}},"100":{"start":{"line":101,"column":0},"end":{"line":101,"column":75}},"101":{"start":{"line":102,"column":0},"end":{"line":102,"column":7}},"102":{"start":{"line":103,"column":0},"end":{"line":103,"column":12}},"103":{"start":{"line":104,"column":0},"end":{"line":104,"column":32}},"104":{"start":{"line":105,"column":0},"end":{"line":105,"column":5}},"105":{"start":{"line":106,"column":0},"end":{"line":106,"column":3}},"106":{"start":{"line":107,"column":0},"end":{"line":107,"column":0}},"107":{"start":{"line":108,"column":0},"end":{"line":108,"column":44}},"108":{"start":{"line":109,"column":0},"end":{"line":109,"column":39}},"109":{"start":{"line":110,"column":0},"end":{"line":110,"column":64}},"110":{"start":{"line":111,"column":0},"end":{"line":111,"column":0}},"111":{"start":{"line":112,"column":0},"end":{"line":112,"column":37}},"112":{"start":{"line":113,"column":0},"end":{"line":113,"column":5}},"113":{"start":{"line":114,"column":0},"end":{"line":114,"column":39}},"114":{"start":{"line":115,"column":0},"end":{"line":115,"column":3}},"115":{"start":{"line":116,"column":0},"end":{"line":116,"column":0}},"116":{"start":{"line":117,"column":0},"end":{"line":117,"column":42}},"117":{"start":{"line":118,"column":0},"end":{"line":118,"column":28}},"118":{"start":{"line":119,"column":0},"end":{"line":119,"column":0}},"119":{"start":{"line":120,"column":0},"end":{"line":120,"column":75}},"120":{"start":{"line":121,"column":0},"end":{"line":121,"column":3}},"121":{"start":{"line":122,"column":0},"end":{"line":122,"column":0}},"122":{"start":{"line":123,"column":0},"end":{"line":123,"column":47}},"123":{"start":{"line":124,"column":0},"end":{"line":124,"column":36}},"124":{"start":{"line":125,"column":0},"end":{"line":125,"column":75}},"125":{"start":{"line":126,"column":0},"end":{"line":126,"column":3}},"126":{"start":{"line":127,"column":0},"end":{"line":127,"column":0}},"127":{"start":{"line":128,"column":0},"end":{"line":128,"column":39}},"128":{"start":{"line":129,"column":0},"end":{"line":129,"column":50}},"129":{"start":{"line":130,"column":0},"end":{"line":130,"column":3}},"130":{"start":{"line":131,"column":0},"end":{"line":131,"column":0}},"131":{"start":{"line":132,"column":0},"end":{"line":132,"column":45}},"132":{"start":{"line":133,"column":0},"end":{"line":133,"column":51}},"133":{"start":{"line":134,"column":0},"end":{"line":134,"column":0}},"134":{"start":{"line":135,"column":0},"end":{"line":135,"column":52}},"135":{"start":{"line":136,"column":0},"end":{"line":136,"column":66}},"136":{"start":{"line":137,"column":0},"end":{"line":137,"column":71}},"137":{"start":{"line":138,"column":0},"end":{"line":138,"column":95}},"138":{"start":{"line":139,"column":0},"end":{"line":139,"column":96}},"139":{"start":{"line":140,"column":0},"end":{"line":140,"column":53}},"140":{"start":{"line":141,"column":0},"end":{"line":141,"column":65}},"141":{"start":{"line":142,"column":0},"end":{"line":142,"column":50}},"142":{"start":{"line":143,"column":0},"end":{"line":143,"column":48}},"143":{"start":{"line":144,"column":0},"end":{"line":144,"column":49}},"144":{"start":{"line":145,"column":0},"end":{"line":145,"column":50}},"145":{"start":{"line":146,"column":0},"end":{"line":146,"column":5}},"146":{"start":{"line":147,"column":0},"end":{"line":147,"column":3}},"147":{"start":{"line":148,"column":0},"end":{"line":148,"column":1}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":10,"28":10,"29":10,"30":10,"31":10,"32":10,"33":10,"34":10,"35":10,"36":60,"37":10,"38":10,"39":10,"40":10,"41":10,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":10,"56":10,"57":10,"58":10,"59":10,"60":10,"61":90,"62":90,"63":0,"64":90,"65":90,"66":90,"67":90,"68":90,"69":90,"70":90,"71":90,"72":13,"73":0,"74":13,"75":13,"76":13,"77":13,"78":90,"79":10,"80":10,"81":10,"82":90,"83":90,"84":10,"85":10,"86":10,"87":10,"88":0,"89":0,"90":0,"91":0,"92":0,"93":0,"94":0,"95":0,"96":0,"97":0,"98":0,"99":0,"100":0,"101":0,"102":10,"103":10,"104":10,"105":10,"106":1,"107":1,"108":139,"109":129,"110":129,"111":129,"112":129,"113":139,"114":139,"115":1,"116":1,"117":0,"118":0,"119":0,"120":0,"121":1,"122":1,"123":0,"124":0,"125":0,"126":1,"127":1,"128":387,"129":387,"130":1,"131":1,"132":129,"133":129,"134":129,"135":0,"136":0,"137":0,"138":0,"139":129,"140":0,"141":0,"142":129,"143":0,"144":0,"145":0,"146":129,"147":1},"branchMap":{"0":{"type":"branch","line":27,"loc":{"start":{"line":27,"column":2},"end":{"line":106,"column":3}},"locations":[{"start":{"line":27,"column":2},"end":{"line":106,"column":3}}]},"1":{"type":"branch","line":42,"loc":{"start":{"line":42,"column":10},"end":{"line":55,"column":13}},"locations":[{"start":{"line":42,"column":10},"end":{"line":55,"column":13}}]},"2":{"type":"branch","line":88,"loc":{"start":{"line":88,"column":18},"end":{"line":103,"column":11}},"locations":[{"start":{"line":88,"column":18},"end":{"line":103,"column":11}}]},"3":{"type":"branch","line":32,"loc":{"start":{"line":32,"column":17},"end":{"line":32,"column":67}},"locations":[{"start":{"line":32,"column":17},"end":{"line":32,"column":67}}]},"4":{"type":"branch","line":36,"loc":{"start":{"line":36,"column":8},"end":{"line":38,"column":9}},"locations":[{"start":{"line":36,"column":8},"end":{"line":38,"column":9}}]},"5":{"type":"branch","line":58,"loc":{"start":{"line":58,"column":18},"end":{"line":85,"column":7}},"locations":[{"start":{"line":58,"column":18},"end":{"line":85,"column":7}}]},"6":{"type":"branch","line":61,"loc":{"start":{"line":61,"column":15},"end":{"line":80,"column":9}},"locations":[{"start":{"line":61,"column":15},"end":{"line":80,"column":9}}]},"7":{"type":"branch","line":63,"loc":{"start":{"line":63,"column":45},"end":{"line":65,"column":17}},"locations":[{"start":{"line":63,"column":45},"end":{"line":65,"column":17}}]},"8":{"type":"branch","line":68,"loc":{"start":{"line":68,"column":26},"end":{"line":68,"column":43}},"locations":[{"start":{"line":68,"column":26},"end":{"line":68,"column":43}}]},"9":{"type":"branch","line":72,"loc":{"start":{"line":72,"column":40},"end":{"line":78,"column":11}},"locations":[{"start":{"line":72,"column":40},"end":{"line":78,"column":11}}]},"10":{"type":"branch","line":73,"loc":{"start":{"line":73,"column":55},"end":{"line":75,"column":19}},"locations":[{"start":{"line":73,"column":55},"end":{"line":75,"column":19}}]},"11":{"type":"branch","line":82,"loc":{"start":{"line":82,"column":8},"end":{"line":84,"column":9}},"locations":[{"start":{"line":82,"column":8},"end":{"line":84,"column":9}}]},"12":{"type":"branch","line":108,"loc":{"start":{"line":108,"column":2},"end":{"line":115,"column":3}},"locations":[{"start":{"line":108,"column":2},"end":{"line":115,"column":3}}]},"13":{"type":"branch","line":109,"loc":{"start":{"line":109,"column":38},"end":{"line":113,"column":5}},"locations":[{"start":{"line":109,"column":38},"end":{"line":113,"column":5}}]},"14":{"type":"branch","line":128,"loc":{"start":{"line":128,"column":2},"end":{"line":130,"column":3}},"locations":[{"start":{"line":128,"column":2},"end":{"line":130,"column":3}}]},"15":{"type":"branch","line":132,"loc":{"start":{"line":132,"column":10},"end":{"line":147,"column":3}},"locations":[{"start":{"line":132,"column":10},"end":{"line":147,"column":3}}]},"16":{"type":"branch","line":133,"loc":{"start":{"line":133,"column":44},"end":{"line":133,"column":51}},"locations":[{"start":{"line":133,"column":44},"end":{"line":133,"column":51}}]},"17":{"type":"branch","line":135,"loc":{"start":{"line":135,"column":51},"end":{"line":140,"column":11}},"locations":[{"start":{"line":135,"column":51},"end":{"line":140,"column":11}}]},"18":{"type":"branch","line":140,"loc":{"start":{"line":140,"column":52},"end":{"line":143,"column":11}},"locations":[{"start":{"line":140,"column":52},"end":{"line":143,"column":11}}]},"19":{"type":"branch","line":143,"loc":{"start":{"line":143,"column":47},"end":{"line":146,"column":5}},"locations":[{"start":{"line":143,"column":47},"end":{"line":146,"column":5}}]}},"b":{"0":[10],"1":[0],"2":[0],"3":[33],"4":[60],"5":[10],"6":[90],"7":[0],"8":[0],"9":[13],"10":[0],"11":[90],"12":[139],"13":[129],"14":[387],"15":[129],"16":[0],"17":[0],"18":[0],"19":[0]},"fnMap":{"0":{"name":"Logger","decl":{"start":{"line":27,"column":2},"end":{"line":106,"column":3}},"loc":{"start":{"line":27,"column":2},"end":{"line":106,"column":3}},"line":27},"1":{"name":"timestamp","decl":{"start":{"line":32,"column":17},"end":{"line":32,"column":67}},"loc":{"start":{"line":32,"column":17},"end":{"line":32,"column":67}},"line":32},"2":{"name":"level","decl":{"start":{"line":36,"column":8},"end":{"line":38,"column":9}},"loc":{"start":{"line":36,"column":8},"end":{"line":38,"column":9}},"line":36},"3":{"name":"payload","decl":{"start":{"line":43,"column":23},"end":{"line":54,"column":15}},"loc":{"start":{"line":43,"column":23},"end":{"line":54,"column":15}},"line":43},"4":{"name":"prettifier","decl":{"start":{"line":58,"column":18},"end":{"line":85,"column":7}},"loc":{"start":{"line":58,"column":18},"end":{"line":85,"column":7}},"line":58},"5":{"name":"prettifier","decl":{"start":{"line":61,"column":15},"end":{"line":80,"column":9}},"loc":{"start":{"line":61,"column":15},"end":{"line":80,"column":9}},"line":61},"6":{"name":"isObject","decl":{"start":{"line":82,"column":8},"end":{"line":84,"column":9}},"loc":{"start":{"line":82,"column":8},"end":{"line":84,"column":9}},"line":82},"7":{"name":"getLogger","decl":{"start":{"line":108,"column":2},"end":{"line":115,"column":3}},"loc":{"start":{"line":108,"column":2},"end":{"line":115,"column":3}},"line":108},"8":{"name":"setLevel","decl":{"start":{"line":117,"column":2},"end":{"line":121,"column":3}},"loc":{"start":{"line":117,"column":2},"end":{"line":121,"column":3}},"line":117},"9":{"name":"setDebugFilter","decl":{"start":{"line":123,"column":2},"end":{"line":126,"column":3}},"loc":{"start":{"line":123,"column":2},"end":{"line":126,"column":3}},"line":123},"10":{"name":"get debugFilter","decl":{"start":{"line":128,"column":2},"end":{"line":130,"column":3}},"loc":{"start":{"line":128,"column":2},"end":{"line":130,"column":3}},"line":128},"11":{"name":"applyChildDebug","decl":{"start":{"line":132,"column":10},"end":{"line":147,"column":3}},"loc":{"start":{"line":132,"column":10},"end":{"line":147,"column":3}},"line":132}},"f":{"0":10,"1":33,"2":60,"3":0,"4":10,"5":90,"6":90,"7":139,"8":0,"9":0,"10":387,"11":129}},"/Users/scotttwiname/Projects/subql-main/packages/utils/src/logger/util.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/utils/src/logger/util.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":37}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":39}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":0}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":86}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":111}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":1}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":0,"7":0,"8":0},"branchMap":{},"b":{},"fnMap":{"0":{"name":"levelFilter","decl":{"start":{"line":7,"column":0},"end":{"line":9,"column":1}},"loc":{"start":{"line":7,"column":0},"end":{"line":9,"column":1}},"line":7}},"f":{"0":0}},"/Users/scotttwiname/Projects/subql-main/packages/utils/src/query/index.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/utils/src/query/index.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":24}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":27}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1},"branchMap":{},"b":{},"fnMap":{},"f":{}},"/Users/scotttwiname/Projects/subql-main/packages/utils/src/query/metadata.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/utils/src/query/metadata.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":50}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":0}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":44}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":0}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":64}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":0}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":63}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":40}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":105}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":1}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":0}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":94}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":83}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":50}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":76}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":1}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":0,"10":0,"11":0,"12":0,"13":1,"14":1,"15":180,"16":180,"17":180,"18":180},"branchMap":{"0":{"type":"branch","line":16,"loc":{"start":{"line":16,"column":0},"end":{"line":19,"column":1}},"locations":[{"start":{"line":16,"column":0},"end":{"line":19,"column":1}}]}},"b":{"0":[180]},"fnMap":{"0":{"name":"getMetadataTableName","decl":{"start":{"line":10,"column":0},"end":{"line":13,"column":1}},"loc":{"start":{"line":10,"column":0},"end":{"line":13,"column":1}},"line":10},"1":{"name":"hashName","decl":{"start":{"line":16,"column":0},"end":{"line":19,"column":1}},"loc":{"start":{"line":16,"column":0},"end":{"line":19,"column":1}},"line":16}},"f":{"0":0,"1":180}},"/Users/scotttwiname/Projects/subql-main/packages/utils/src/query/types.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/utils/src/query/types.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":29}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":16}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":19}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":2}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":0}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":24}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":30}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":33}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":23}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":16}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":19}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":22}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":26}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":29}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":27}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":23}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":36}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":38}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":2}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1},"branchMap":{},"b":{},"fnMap":{},"f":{}},"/Users/scotttwiname/Projects/subql-main/packages/utils/src/types/TypeClass.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/utils/src/types/TypeClass.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":28}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":45}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":29}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":64}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":0}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":24}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":14}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":24}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":53}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":29}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":34}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":43}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":6}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":36}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":24}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":3}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":41}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":29}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":3}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":39}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":110}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":31}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":3}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":35}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":39}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":47}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":5}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":32}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":3}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":1}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":63,"11":63,"12":63,"13":63,"14":63,"15":63,"16":1,"17":187,"18":187,"19":1,"20":2297,"21":2297,"22":1,"23":984,"24":984,"25":984,"26":1,"27":21,"28":0,"29":0,"30":21,"31":21,"32":1},"branchMap":{"0":{"type":"branch","line":10,"loc":{"start":{"line":10,"column":2},"end":{"line":16,"column":6}},"locations":[{"start":{"line":10,"column":2},"end":{"line":16,"column":6}}]},"1":{"type":"branch","line":17,"loc":{"start":{"line":17,"column":2},"end":{"line":19,"column":3}},"locations":[{"start":{"line":17,"column":2},"end":{"line":19,"column":3}}]},"2":{"type":"branch","line":20,"loc":{"start":{"line":20,"column":2},"end":{"line":22,"column":3}},"locations":[{"start":{"line":20,"column":2},"end":{"line":22,"column":3}}]},"3":{"type":"branch","line":23,"loc":{"start":{"line":23,"column":2},"end":{"line":26,"column":3}},"locations":[{"start":{"line":23,"column":2},"end":{"line":26,"column":3}}]},"4":{"type":"branch","line":27,"loc":{"start":{"line":27,"column":2},"end":{"line":32,"column":3}},"locations":[{"start":{"line":27,"column":2},"end":{"line":32,"column":3}}]},"5":{"type":"branch","line":28,"loc":{"start":{"line":28,"column":38},"end":{"line":30,"column":5}},"locations":[{"start":{"line":28,"column":38},"end":{"line":30,"column":5}}]}},"b":{"0":[63],"1":[187],"2":[2297],"3":[984],"4":[21],"5":[0]},"fnMap":{"0":{"name":"TypeClass","decl":{"start":{"line":10,"column":2},"end":{"line":16,"column":6}},"loc":{"start":{"line":10,"column":2},"end":{"line":16,"column":6}},"line":10},"1":{"name":"get tsType","decl":{"start":{"line":17,"column":2},"end":{"line":19,"column":3}},"loc":{"start":{"line":17,"column":2},"end":{"line":19,"column":3}},"line":17},"2":{"name":"get fieldScalar","decl":{"start":{"line":20,"column":2},"end":{"line":22,"column":3}},"loc":{"start":{"line":20,"column":2},"end":{"line":22,"column":3}},"line":20},"3":{"name":"get sequelizeType","decl":{"start":{"line":23,"column":2},"end":{"line":26,"column":3}},"loc":{"start":{"line":23,"column":2},"end":{"line":26,"column":3}},"line":23},"4":{"name":"hashCode","decl":{"start":{"line":27,"column":2},"end":{"line":32,"column":3}},"loc":{"start":{"line":27,"column":2},"end":{"line":32,"column":3}},"line":27}},"f":{"0":63,"1":187,"2":2297,"3":984,"4":21}},"/Users/scotttwiname/Projects/subql-main/packages/utils/src/types/generalTypes.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/utils/src/types/generalTypes.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":46}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":38}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":0}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":74}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":71}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":1}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":3633,"7":3633,"8":3633},"branchMap":{"0":{"type":"branch","line":7,"loc":{"start":{"line":7,"column":0},"end":{"line":9,"column":1}},"locations":[{"start":{"line":7,"column":0},"end":{"line":9,"column":1}}]},"1":{"type":"branch","line":8,"loc":{"start":{"line":8,"column":44},"end":{"line":8,"column":69}},"locations":[{"start":{"line":8,"column":44},"end":{"line":8,"column":69}}]}},"b":{"0":[3633],"1":[18795]},"fnMap":{"0":{"name":"getTypeByScalarName","decl":{"start":{"line":7,"column":0},"end":{"line":9,"column":1}},"loc":{"start":{"line":7,"column":0},"end":{"line":9,"column":1}},"line":7}},"f":{"0":3633}},"/Users/scotttwiname/Projects/subql-main/packages/utils/src/types/index.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/utils/src/types/index.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":31}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":0}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":28}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":0}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":28}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1},"branchMap":{},"b":{},"fnMap":{},"f":{}},"/Users/scotttwiname/Projects/subql-main/packages/utils/src/types/supported/BigInt.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/utils/src/types/supported/BigInt.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":23}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":39}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":0}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":36}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":11}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":42}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":46}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":4}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":11}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":11}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":11}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":2}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":0,"10":0,"11":1,"12":1,"13":1,"14":1},"branchMap":{},"b":{},"fnMap":{},"f":{}},"/Users/scotttwiname/Projects/subql-main/packages/utils/src/types/supported/Boolean.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/utils/src/types/supported/Boolean.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":43}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":39}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":0}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":37}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":12}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":34}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":37}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":4}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":12}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":12}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":11}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":2}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":3,"10":3,"11":1,"12":1,"13":1,"14":1},"branchMap":{"0":{"type":"branch","line":9,"loc":{"start":{"line":9,"column":2},"end":{"line":11,"column":4}},"locations":[{"start":{"line":9,"column":2},"end":{"line":11,"column":4}}]},"1":{"type":"branch","line":10,"loc":{"start":{"line":10,"column":32},"end":{"line":10,"column":35}},"locations":[{"start":{"line":10,"column":32},"end":{"line":10,"column":35}}]}},"b":{"0":[3],"1":[0]},"fnMap":{},"f":{}},"/Users/scotttwiname/Projects/subql-main/packages/utils/src/types/supported/Bytes.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/utils/src/types/supported/Bytes.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":47}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":45}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":39}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":0}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":35}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":10}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":46}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":48}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":22}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":28}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":5}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":44}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":4}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":11}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":10}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":16}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":2}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":1,"17":1,"18":1,"19":1},"branchMap":{},"b":{},"fnMap":{},"f":{}},"/Users/scotttwiname/Projects/subql-main/packages/utils/src/types/supported/Date.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/utils/src/types/supported/Date.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":28}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":43}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":39}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":0}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":37}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":9}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":31}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":82}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":39}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":4}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":9}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":9}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":13}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":2}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":3,"11":3,"12":3,"13":1,"14":1,"15":1,"16":1},"branchMap":{"0":{"type":"branch","line":10,"loc":{"start":{"line":10,"column":2},"end":{"line":13,"column":4}},"locations":[{"start":{"line":10,"column":2},"end":{"line":13,"column":4}}]}},"b":{"0":[3]},"fnMap":{},"f":{}},"/Users/scotttwiname/Projects/subql-main/packages/utils/src/types/supported/Float.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/utils/src/types/supported/Float.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":45}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":39}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":0}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":35}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":10}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":33}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":55}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":40}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":4}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":11}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":10}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":17}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":2}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1},"branchMap":{"0":{"type":"branch","line":9,"loc":{"start":{"line":9,"column":2},"end":{"line":12,"column":4}},"locations":[{"start":{"line":9,"column":2},"end":{"line":12,"column":4}}]}},"b":{"0":[1]},"fnMap":{},"f":{}},"/Users/scotttwiname/Projects/subql-main/packages/utils/src/types/supported/ID.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/utils/src/types/supported/ID.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":39}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":0}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":32}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":7}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":30}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":29}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":4}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":11}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":7}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":8}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":2}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":6,"9":6,"10":1,"11":1,"12":1,"13":1},"branchMap":{"0":{"type":"branch","line":8,"loc":{"start":{"line":8,"column":2},"end":{"line":10,"column":4}},"locations":[{"start":{"line":8,"column":2},"end":{"line":10,"column":4}}]}},"b":{"0":[6]},"fnMap":{},"f":{}},"/Users/scotttwiname/Projects/subql-main/packages/utils/src/types/supported/Int.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/utils/src/types/supported/Int.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":43}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":39}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":44}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":0}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":33}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":8}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":33}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":33}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":4}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":11}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":8}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":11}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":2}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":6,"11":6,"12":1,"13":1,"14":1,"15":1},"branchMap":{"0":{"type":"branch","line":10,"loc":{"start":{"line":10,"column":2},"end":{"line":12,"column":4}},"locations":[{"start":{"line":10,"column":2},"end":{"line":12,"column":4}}]}},"b":{"0":[6]},"fnMap":{},"f":{}},"/Users/scotttwiname/Projects/subql-main/packages/utils/src/types/supported/Json.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/utils/src/types/supported/Json.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":45}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":39}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":0}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":34}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":9}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":34}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":45}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":4}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":12}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":12}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":17}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":2}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1},"branchMap":{"0":{"type":"branch","line":9,"loc":{"start":{"line":9,"column":2},"end":{"line":11,"column":4}},"locations":[{"start":{"line":9,"column":2},"end":{"line":11,"column":4}}]}},"b":{"0":[1]},"fnMap":{},"f":{}},"/Users/scotttwiname/Projects/subql-main/packages/utils/src/types/supported/String.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/utils/src/types/supported/String.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":39}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":0}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":36}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":11}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":33}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":29}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":4}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":11}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":11}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":8}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":2}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1},"branchMap":{"0":{"type":"branch","line":8,"loc":{"start":{"line":8,"column":2},"end":{"line":10,"column":4}},"locations":[{"start":{"line":8,"column":2},"end":{"line":10,"column":4}}]}},"b":{"0":[1]},"fnMap":{},"f":{}},"/Users/scotttwiname/Projects/subql-main/packages/utils/src/types/supported/index.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/utils/src/types/supported/index.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":25}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":26}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":24}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":23}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":24}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":21}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":22}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":25}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":23}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1},"branchMap":{},"b":{},"fnMap":{},"f":{}},"/Users/scotttwiname/Projects/subql-main/packages/utils/src/types/u8aUtils.ts":{"path":"/Users/scotttwiname/Projects/subql-main/packages/utils/src/types/u8aUtils.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":35}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":0}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":54}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":0}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":3}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":71}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":61}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":2}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":19}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":3}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":0}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":46}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":17}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":28}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":3}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":68}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":1}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":13,"13":13,"14":8,"15":8,"16":5,"17":5},"branchMap":{"0":{"type":"branch","line":13,"loc":{"start":{"line":13,"column":0},"end":{"line":18,"column":1}},"locations":[{"start":{"line":13,"column":0},"end":{"line":18,"column":1}}]},"1":{"type":"branch","line":14,"loc":{"start":{"line":14,"column":16},"end":{"line":16,"column":3}},"locations":[{"start":{"line":14,"column":16},"end":{"line":16,"column":3}}]},"2":{"type":"branch","line":17,"loc":{"start":{"line":17,"column":-1},"end":{"line":18,"column":1}},"locations":[{"start":{"line":17,"column":-1},"end":{"line":18,"column":1}}]}},"b":{"0":[13],"1":[8],"2":[5]},"fnMap":{"0":{"name":"wrappedNumToU8a","decl":{"start":{"line":13,"column":0},"end":{"line":18,"column":1}},"loc":{"start":{"line":13,"column":0},"end":{"line":18,"column":1}},"line":13}},"f":{"0":13}}}} ================================================ FILE: scripts/build.sh ================================================ #!/bin/sh set -e apk add --no-cache jq npm install -g --force yarn@latest cd "$1" # Modifies the package.json to replace "workspace:~" versions with actual versions jq -r '.dependencies | to_entries[] | select(.value == "workspace:~") | .key' package.json | while read -r dep; do directory=$(jq --arg dep "$dep" -r '.compilerOptions.paths[$dep][0]' ../../tsconfig.json | cut -d'/' -f 2) version=$(jq --arg directory "$directory" -r '.version' ../"$directory"/package.json) if [ "$version" != null ]; then jq --arg dep "$dep" --arg version "$version" -r '.dependencies[$dep] = $version' package.json > package.tmp.json && mv package.tmp.json package.json fi done yarn pack --filename app.tgz rm -rf /root/.npm /root/.cache ================================================ FILE: scripts/update_versions.sh ================================================ #!/bin/sh set -e LIGHT_BLUE='\033[1;34m' YELLOW='\033[1;33m' NC='\033[0m' # Function to echo unreleased changes from CHANGELOG.md echo_unreleased_changes() { local changelog_file="$1" # Check if the provided argument is a valid file if [ ! -f "$changelog_file" ]; then echo "Changelog doesn't exist" return 1 fi # Use sed to extract the line number of the start and end of the unreleased changes local start_line=$(sed -n '/## \[Unreleased\]/=' "$changelog_file") local end_line=$(sed -n '/## \[/=' "$changelog_file" | sed -n 2p) # Use awk to extract the unreleased changes local changes=$(awk "NR > $start_line && NR < $end_line" "$changelog_file") # Check if there are any changes if [ -z "$changes" ]; then echo "No unreleased changes found. Please include some changes and try again" exit 1 else echo "Unreleased Changes:\n${LIGHT_BLUE}$changes${NC}\n" fi } prepare_package_release() { local dir="$1" # Check if the provided argument is a valid file if [ ! -d "$dir" ]; then echo "Expected $dir to be a directory" exit 1 fi # Move into the directory in the path cd "$dir" # Get the version from package.json VERSION=$(jq -r '.version' package.json) NAME=$(jq -r '.name' package.json) # Check if the version is a prerelease (ends with a hyphen and one or more digits) if [[ $VERSION =~ -[0-9]+$ ]]; then # Prompt the user for the version bump echo "Please select the version bump for ${YELLOW}$NAME${NC}" echo_unreleased_changes "./CHANGELOG.md" read -p "Version bump (major, minor or patch): " BUMP # Update the package.json version yarn version $BUMP # Run the changelog:release command yarn changelog:release fi # Back to previous dir cd - } ## Warning this will not automatically update packages that just have dependency changes ## E.g. when @subql/common is updated, @subql/common-substrate should also be updated ## It also doesn't do things in order of dependencies for dir in packages/*; do # Check the path is a directory and is tracked by git if [ -d "$dir" ] && [[ $(git ls-files "$dir") ]]; then prepare_package_release "$dir" fi git add .yarn/versions done # prepare_package_release "$1" ================================================ FILE: test/Dockerfile ================================================ FROM node:lts-bullseye WORKDIR /workdir # Fix timezone to UTC ENV TZ=utc COPY . . RUN yarn ================================================ FILE: test/docker-compose.yaml ================================================ version: "3" services: postgres: image: postgres:16-alpine build: context: . dockerfile: pg-Dockerfile ports: - 5432:5432 environment: POSTGRES_PASSWORD: postgres test: build: context: .. dockerfile: test/Dockerfile volumes: - ../coverage:/workdir/coverage depends_on: - "postgres" environment: DB_USER: postgres DB_PASS: postgres DB_DATABASE: postgres DB_HOST: postgres DB_POST: 5432 SUBQL_ACCESS_TOKEN: ${SUBQL_ACCESS_TOKEN} SUBQL_ACCESS_TOKEN_TEST: ${SUBQL_ACCESS_TOKEN_TEST} SUBQL_ORG_TEST: ${SUBQL_ORG_TEST} command: - yarn - test:all ================================================ FILE: test/jest-setup.ts ================================================ import 'reflect-metadata'; // Causes the logger to be init (global as any).__TEST__ = true; ================================================ FILE: test/load-extensions.sh ================================================ #!/bin/sh psql -v ON_ERROR_STOP=1 --username "$POSTGRES_USER" <